- 博客(49)
- 收藏
- 关注
原创 spring security 测试自定义logout,发生重定向
spring security自定义logout,NONE_PROVIDED(String),重定向
2023-02-24 18:26:16
745
原创 Mybatis学习笔记(四)——动态sql
文章目录动态sqlifchoose(when、otherwise)trim(where、set)foreachsql片段动态sql动态SQL是MyBatis的强大特性之一,利用动态SQL,我们能根据不同条件灵活的拼接SQL语句。常用的动态SQL标签有如下几种:ifchoose(when、otherwise)trim(where、set)foreachif使用<if>sql</if>时,如果满足条件,则会将sql和前面的sql片段拼接起来,示例如下:<se
2021-11-19 09:15:00
464
原创 Mybatis学习笔记(三)
文章目录resultTyperesultMapresultTyperesultType:表示sql语句的执行结果,转换为的java对象模型,该属性值一般填写的是返回值类型的全限定名称,例如,返回值类型为Student时,resultType的值为com.example.entity.Student。示例项目的目录结构如下图所示:除此之外,我们还可以使用别名(给Student类起别名);若使用别名,需要在mybatis主配置文件中定义别名,定义别名有两种方式(两种方式的根标签均为typeAliase
2021-11-15 21:14:59
1123
原创 Mybatis学习笔记(二)
文章目录一、动态代理二、接口方法参数问题三、# 和 $的区别一、动态代理 本次测试用例使用StudentDao接口中的方法,所以需要该接口对应的实现类,在该实现类中实现具体的方法,接口中的方法如下:实现该方法需要如下步骤://1.获取SqlSession对象(省略)//2.获取唯一标识,即dao接口对应的mapper文件中的命名空间+对应该方法的id组合的字符串String sqlId = "com.example.dao.StudentDao.selectStudents";//3.
2021-11-13 18:43:10
698
原创 dependencyManagement & dependencies的区别
dependencies:即使在子项目的pom文件中没有声明该依赖,子项目依然会从父项目中继承该依赖。dependencyManagement:如果不在子项目中声明该依赖,则不会从父项目中继承;当在子项目中写了该依赖项,且没有指定具体版本,才会从父项目中继承该依赖(version和scope都读取自父项目);如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。...
2021-11-06 16:54:17
123
原创 mybatis配置文件注释
映射文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.dao.StudentDao"> <!-- s
2021-11-04 19:02:12
887
原创 mybatis的mapper.xml文件没有被编译
关于使用MyBatis时,映射文件未被编译到target目录下的解决方式如下: 在pom文件中的build添加如下内容:<build> <resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes><!--包括目录下的.properties,
2021-11-04 18:52:42
1329
1
原创 Mybatis学习笔记(一)
文章目录一、MyBatis是什么?二、框架初体验一、MyBatis是什么? mybatis是一个开源、轻量级的数据持久化框架。在前面的学习过程中,使用的是jdbc来操作数据库,但是使用jdbc的过程中,发现操作繁琐,存在大部分重复代码,而mybatis内部封装了jdbc,简化了加载驱动、创建连接、创建statement等繁杂的步骤,开发时只需关注sql语句本身。二、框架初体验创建一个maven项目(src目录结构如下图),导入项目所需要的jar包<dependencies>
2021-11-04 18:45:03
276
原创 redis的三种启动方式
redis的三种启动方式使用默认配置启动:redis-server动态参数启动:redis-server -port xxxx(端口号)配置文件启动:redis-server configPath(配置文件路径)使用守护进程启动时的关闭方法使用 ps -ef | grep redis-server | grep -v grep 命令查看PID使用 kill -9 PID 命令关闭该进程客户端启动方法redis-cli -h 127.0.0.1 -p 6379(使用默认配置时可以用
2021-10-05 15:36:50
1338
原创 相交链表(简单)
相交链表(简单)题目思路 本题要求找出两个单链表的相交节点,只需要找出A链表和B链表第一个相同的节点,即相交节点,所以可以先使用set集合存储任意一条单链表的所有节点,再遍历另外一条单链表,如果集合中存在相同的节点,则找出了相交节点(集合中存储的是节点的地址,所以不用考虑重复问题)。进阶 要使空间复杂度为O(1),则不能使用上述方法,这时考虑使用同时遍历两条单链表,比较节点地址的方法,如下图:假设单链表A、B的长度分别为a、b,相交节点为c1,分别创建指针nodeA,nodeB从A、
2021-10-01 20:44:40
308
原创 Servlet过滤器实现请求乱码处理
Filter1. 过滤器实现步骤创建类,实现javax.servlet.Filter接口在类上使用@WebFilter("/xxx")配置拦截路径实现Filter接口的init、doFilter、destroy方法示例如下:@WebFilter("/s01") //"/*"拦截所有资源public class Filter01 implements Filter { @Override public void init(FilterConfig filterConfig)
2021-09-30 16:44:33
481
1
原创 UDP、TCP简单使用
UDP发送数据步骤创建发送端的Socket对象(DatagramSocket)创建数据,并把数据打包调用DatagramSocket对象的方法发送数据关闭发送端示例如下:public class UDP_Send { public static void main(String[] args) throws IOException { //DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口 DatagramS
2021-09-30 15:49:40
522
原创 反转链表(简单)
反转链表(简单)题目代码实现/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.n
2021-09-27 20:29:22
88
原创 ServletContext
1.获取ServletContext的四种方法通过request对象获取ServletContext servletContext = req.getServletContext();通过session对象获取ServletContext servletContext = req.getSession().getServletContext();通过ServletConfig对象获取ServletContext servletContext = this.getServletCo
2021-09-23 13:01:33
763
原创 Session
1.获取session对象HttpSession session = request.getSession();注:当获取session对象时,会先判断session对象是否存在,如果存在,则获取session对象;如果不存在,则会创建session对象。2.session的常用方法方法作用session.getId()获取session的会话标识符session.getCreationTime()获取session的创建时间session.getLastAcc
2021-09-22 21:03:24
120
原创 Cookie的常见方法
1.Cookie的创建与发送 通过new Cookie("key", "value")来创建一个Cookie对象,发送时使用response.addCookie(cookie)方法,此时该cookie对象就会跟随着响应发送到客户端,存储在浏览器内存中,示例如下:@WebServlet("/cookie_set")public class Cookie_set extends HttpServlet { @Override protected void doGet(HttpServle
2021-09-22 20:18:27
3063
原创 Servlet乱码问题
一、请求乱码问题 乱码原因:由于在解析过程中默认使用的编码方式为 ISO-8859-1(此编码不支持中文),所以解析时会出现乱码。GET请求Tomcat8.0及以上版本不会乱码Tomcat7及以下版本会乱码,解决方式:new String(request.getParameter(“name”).getBytes(“ISO-8859-1”), “UTF-8”);POST请求会乱码,通过设置服务器解析编码格式解决:request.setCharacterEncoding(“UTF-
2021-09-20 17:54:39
2543
原创 转发和重定向
文章目录一、转发二、重定向三、转发和重定向的区别一、转发 请求转发是一种服务器行为,当客户端的请求到达服务器端时,服务器会将请求对象保存并进行转发,地址栏中的URL不会改变,得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。实现方式如下:request.getRequestDispatcher(url).forword(request, response);HttpServletRequest(以下简写request)作用域: request域对象中的数据在一次请求中有
2021-09-20 16:49:51
962
原创 servlet的两种配置方式
servlet的两种配置方式在web.xml中配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
2021-09-20 15:31:12
1555
原创 Servlet生命周期
Servlet生命周期Servlet生命周期:从创建到销毁的整个过程,主要有以下三个过程:当请求到达web容器时,容器先判断该servlet对象是否存在,如果不存在,则会创建实例并初始化。对象存在,则容器根据请求调用对应的servlet对象处理请求。容器关闭,容器中所有的servlet对象都将被销毁。以上三个过程分别对应init(),service,destroy三个方法,举例如下:import javax.servlet.*;import javax.servlet.annotation
2021-09-20 14:23:21
204
原创 xml学习总结(六)——XPath的简单使用
文章目录一、XPath格式及含义二、示例一、XPath格式及含义格式含义/AAA/DDD/BBB表示逐层查找,AAA下的DDD下的BBB//BBB查找并返回一个标签名为“BBB”的集合/*查找并返回所有元素/AAA/BBB[1](或者BBB[last()])表示AAA下的第一个BBB元素(最后一个元素)//BBB[@id]表示带有id属性的BBB标签//BBB[@id=‘a’]表示id属性为a的BBB标签二、示例xml文件:<
2021-09-16 13:50:34
241
原创 二叉搜索子树的最大键值和
二叉搜索子树的最大键值和(困难)题目:思路分析题目要求返回任意二叉搜索子树的最大键值和,显然,这题的思路就是围绕子树是否是BST和树的遍历方式展开,提到树,不可避免的想到了递归。首先,判断以node节点为根的树是否是二叉搜索树主要有以下步骤:以node节点的左右子节点为根的树是否是BST。左子树的最大值小于node.val && 右子树的最小值大于node.val。其次,要获取最大键值和,那么最好选择后序遍历,这样就能够获得左右子节点遍历后返回的结果集。实现
2021-09-15 21:57:29
158
原创 xml学习总结(五)——dom4j的简单使用
persons.xml:<?xml version="1.0" encoding="UTF-8"?><persons> <person id="a"> <name>zhangsan</name> <sex>男</sex> </person> <person> <name>lisi</name> <age>
2021-09-15 20:44:13
94
原创 xml学习总结(四)——schema、sax
文章目录一、schema二、在xml文件中引入约束文件三、实例四、sax解析一、schema1.语法<?xml version="1.0" encoding="UTF-8" ?><schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.cn/123" elementFormDefault="qualified"> <!-
2021-09-13 21:11:20
169
原创 最小覆盖子串——滑动窗口
最小覆盖子串(困难)题目java实现class Solution { public String minWindow(String s, String t) { HashMap<Character, Integer> needs = new HashMap<>(); HashMap<Character, Integer> window = new HashMap<>(); for (int i
2021-09-11 14:56:27
136
原创 Integer判断是否相等的坑
在写算法题时,提交的代码有个案例没通过,通过返回结果,锁定问题出现在了两个Integer类型的值判断是否相等上,令人百思不得其解,直到看了下Integer的源码,如下:public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)];
2021-09-11 14:55:05
228
原创 xml学习总结(三)——JAXP使用
文章目录一、xml的解析方式二、使用JAXP解析xml文件1.xml源文件2.JAXP示例一、xml的解析方式xml的两种解析方式:dom解析,sax解析。dom解析:一次性加载xml文档,把xml的标签,属性,文本封装成对象,构造树形结构优点:能实现增删改操作缺点:如果文件过大,会造成内存溢出sax解析:一边读取一边解析,从上至下,一行一行解析优点:对内存要求较低,方便实现查询操作缺点:不能实现增删改操作二、使用JAXP解析xml文件1.xml源文件<?xml ver
2021-09-11 14:08:15
270
原创 环形链表——返回环开始的节点
环形链表Ⅱ解法一:使用HashSet存储每个节点:public class Solution { public ListNode detectCycle(ListNode head) { ListNode node = head; HashSet<ListNode> set = new HashSet<ListNode>(); while (node != null) { if (set.cont
2021-09-09 21:04:17
209
原创 xml学习总结(二)——dtd
文章目录一、简单的dtd文件1.代码2.内容说明二、定义标签三、定义标签属性1.语法2.属性类型3.属性约束四、实体一、简单的dtd文件1.代码dtd文件:<!ELEMENT person (name, age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)>xml文件:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE person S
2021-09-08 20:51:00
166
原创 爱吃香蕉的珂珂
爱吃香蕉的珂珂(中等)题目思路本题给定了时间h,要求速度k的最小值,那么首先要知道的是速度和所需时间的函数关系。假设速度为x,所需时间为hours,则 - piles[i] <= x,则hours++; - piles[i] > x - piles[i] % x == 0,则hours = hours + piles[i] / x; - piles[i] % x != 0,则hours = hours + piles[i] / x + 1;确定了hours(x)
2021-09-08 10:42:21
136
原创 xml中的特殊字符
xml中存在5个特殊字符,某些情况下使用这些字符可能会产生错误,例如:<user>s<s</user>这时应该使用该字符对应的转义字符:特殊字符转义字符&&<<>>""’'注:“>”可以直接使用。...
2021-09-07 17:56:39
3056
原创 二分搜索(有序数组)
文章目录一、二分查找1.例题2.实现3.解析二、寻找左右边界的二分查找1.例题2.实现3.解析一、二分查找1.例题二分查找(简单)2.实现class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; while(left <= right) { int mid =
2021-09-07 11:40:22
107
原创 xml学习总结(一)——xml介绍
文章目录一、xml简介二、xml的简单使用1.xml的语法2.示例如下:2.注释一、xml简介可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。(百度百科)xml的性质特点xml是可扩展标记语言(Extensible Markup Language)xml设计宗旨是传输数据xml类似于html,但是xml标签需要自定义二、xml的简单使用1.xml的语法xml的文档声明定义标签定义属性2.示例如下:<?xml v
2021-09-06 19:29:39
622
原创 java注解(Annotation)
java注解是JDK1.5引入的一种机制,可以使用在类、方法、变量、参数或者包上,通过结合反射,aop技术,可以自己写出一个小框架。一、常见的注解@Override:检查该方法是否是重写方法。Deprecated:标记过时方法。SuppressWarnings:指示编译器去忽略注解中声明的警告。二、元注解1.什么是元注解简单明了的说,元注解就是注解的注解。2.五种元注解@Target:表示注解的使用范围,范围参数如下(枚举)ElementType.TYPE:作用于类、接口(包.
2021-08-16 12:56:23
498
原创 使用反射获取类的字段、方法和类的实例化
文章目录一、实例化对象步骤示例二、字段1.api2.示例3.给字段赋值步骤:三、方法1.api2.使用3.调用获取的方法以下测试使用Student类,属性和方法如下所示:import lombok.Data;@Datapublic class Student { private Integer id; private String name; public Student() { System.out.println("无参构造方法"); }
2021-08-15 17:44:46
624
原创 获取类对象的三种方法
方法一通过Class类的静态方法Class.forName("全类名")示例如下:public class CNameTest { public static void main(String[] args) throws ClassNotFoundException { Class<?> aClass = Class.forName("com.example.study.reflection.Student"); System.out.prin.
2021-08-15 13:50:13
1559
原创 多线程一定比单线程快吗
多线程一定比单线程快吗?我们知道,使用多线程,可以同时执行多个任务,从表面上看,多线程明显是要快于单线程的。但是,多线程的创建,上下文的切换也是需要开销的,所以多线程不一定比单线程快,接下来我们来看一个简单的测试用例。该测试用例分别使用单线程和多线程进行 a 的递增,b 的递减操作,我们通过控制循环次数,来比较相同次数下,串行和并行所花时间。public class TimeTest { public final int count = 1000000; public stati
2021-08-14 09:54:01
2083
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人