自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 快速排序(Java实现)

快速排序,Java

2023-03-22 17:02:30 134

原创 基于方法的权限管理实现

@hasRole @PreAuthorize

2023-03-18 18:30:17 354 1

原创 使用pojo封装多个get请求参数,接收失败问题

requestparam

2023-03-10 11:56:09 224

原创 spring security 测试自定义logout,发生重定向

spring security自定义logout,NONE_PROVIDED(String),重定向

2023-02-24 18:26:16 569

原创 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 403

原创 Mybatis学习笔记(三)

文章目录resultTyperesultMapresultTyperesultType:表示sql语句的执行结果,转换为的java对象模型,该属性值一般填写的是返回值类型的全限定名称,例如,返回值类型为Student时,resultType的值为com.example.entity.Student。示例项目的目录结构如下图所示:除此之外,我们还可以使用别名(给Student类起别名);若使用别名,需要在mybatis主配置文件中定义别名,定义别名有两种方式(两种方式的根标签均为typeAliase

2021-11-15 21:14:59 1020

原创 Mybatis学习笔记(二)

文章目录一、动态代理二、接口方法参数问题三、# 和 $的区别一、动态代理  本次测试用例使用StudentDao接口中的方法,所以需要该接口对应的实现类,在该实现类中实现具体的方法,接口中的方法如下:实现该方法需要如下步骤://1.获取SqlSession对象(省略)//2.获取唯一标识,即dao接口对应的mapper文件中的命名空间+对应该方法的id组合的字符串String sqlId = "com.example.dao.StudentDao.selectStudents";//3.

2021-11-13 18:43:10 660

原创 dependencyManagement & dependencies的区别

dependencies:即使在子项目的pom文件中没有声明该依赖,子项目依然会从父项目中继承该依赖。dependencyManagement:如果不在子项目中声明该依赖,则不会从父项目中继承;当在子项目中写了该依赖项,且没有指定具体版本,才会从父项目中继承该依赖(version和scope都读取自父项目);如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。...

2021-11-06 16:54:17 90

原创 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 710

原创 mybatis的mapper.xml文件没有被编译

关于使用MyBatis时,映射文件未被编译到target目录下的解决方式如下:  在pom文件中的build添加如下内容:<build> <resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes><!--包括目录下的.properties,

2021-11-04 18:52:42 1188 1

原创 Mybatis学习笔记(一)

文章目录一、MyBatis是什么?二、框架初体验一、MyBatis是什么?  mybatis是一个开源、轻量级的数据持久化框架。在前面的学习过程中,使用的是jdbc来操作数据库,但是使用jdbc的过程中,发现操作繁琐,存在大部分重复代码,而mybatis内部封装了jdbc,简化了加载驱动、创建连接、创建statement等繁杂的步骤,开发时只需关注sql语句本身。二、框架初体验创建一个maven项目(src目录结构如下图),导入项目所需要的jar包<dependencies>

2021-11-04 18:45:03 234

原创 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 1253

原创 相交链表(简单)

相交链表(简单)题目思路  本题要求找出两个单链表的相交节点,只需要找出A链表和B链表第一个相同的节点,即相交节点,所以可以先使用set集合存储任意一条单链表的所有节点,再遍历另外一条单链表,如果集合中存在相同的节点,则找出了相交节点(集合中存储的是节点的地址,所以不用考虑重复问题)。进阶  要使空间复杂度为O(1),则不能使用上述方法,这时考虑使用同时遍历两条单链表,比较节点地址的方法,如下图:假设单链表A、B的长度分别为a、b,相交节点为c1,分别创建指针nodeA,nodeB从A、

2021-10-01 20:44:40 170

原创 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 448 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 411

原创 反转链表(简单)

反转链表(简单)题目代码实现/** * 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 63

原创 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 648

原创 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 77

原创 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 2801

原创 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 2455

原创 转发和重定向

文章目录一、转发二、重定向三、转发和重定向的区别一、转发  请求转发是一种服务器行为,当客户端的请求到达服务器端时,服务器会将请求对象保存并进行转发,地址栏中的URL不会改变,得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。实现方式如下:request.getRequestDispatcher(url).forword(request, response);HttpServletRequest(以下简写request)作用域:  request域对象中的数据在一次请求中有

2021-09-20 16:49:51 923

原创 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 1451

原创 Servlet生命周期

Servlet生命周期Servlet生命周期:从创建到销毁的整个过程,主要有以下三个过程:当请求到达web容器时,容器先判断该servlet对象是否存在,如果不存在,则会创建实例并初始化。对象存在,则容器根据请求调用对应的servlet对象处理请求。容器关闭,容器中所有的servlet对象都将被销毁。以上三个过程分别对应init(),service,destroy三个方法,举例如下:import javax.servlet.*;import javax.servlet.annotation

2021-09-20 14:23:21 155

原创 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文件:&lt

2021-09-16 13:50:34 152

原创 二叉搜索子树的最大键值和

二叉搜索子树的最大键值和(困难)题目:思路分析题目要求返回任意二叉搜索子树的最大键值和,显然,这题的思路就是围绕子树是否是BST和树的遍历方式展开,提到树,不可避免的想到了递归。首先,判断以node节点为根的树是否是二叉搜索树主要有以下步骤:以node节点的左右子节点为根的树是否是BST。左子树的最大值小于node.val && 右子树的最小值大于node.val。其次,要获取最大键值和,那么最好选择后序遍历,这样就能够获得左右子节点遍历后返回的结果集。实现

2021-09-15 21:57:29 126

原创 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 62

原创 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 138

原创 最小覆盖子串——滑动窗口

最小覆盖子串(困难)题目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 108

原创 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 190

原创 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 203

原创 环形链表——返回环开始的节点

环形链表Ⅱ解法一:使用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 171

原创 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 139

原创 爱吃香蕉的珂珂

爱吃香蕉的珂珂(中等)题目思路本题给定了时间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 103

原创 xml中的特殊字符

xml中存在5个特殊字符,某些情况下使用这些字符可能会产生错误,例如:<user>s<s</user>这时应该使用该字符对应的转义字符:特殊字符转义字符&&amp;<&lt;>&gt;"&quot;’&apos;注:“>”可以直接使用。...

2021-09-07 17:56:39 2855

原创 二分搜索(有序数组)

文章目录一、二分查找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 78

原创 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 571

原创 java注解(Annotation)

java注解是JDK1.5引入的一种机制,可以使用在类、方法、变量、参数或者包上,通过结合反射,aop技术,可以自己写出一个小框架。一、常见的注解@Override:检查该方法是否是重写方法。Deprecated:标记过时方法。SuppressWarnings:指示编译器去忽略注解中声明的警告。二、元注解1.什么是元注解简单明了的说,元注解就是注解的注解。2.五种元注解@Target:表示注解的使用范围,范围参数如下(枚举)ElementType.TYPE:作用于类、接口(包.

2021-08-16 12:56:23 399

原创 使用反射获取类的字段、方法和类的实例化

文章目录一、实例化对象步骤示例二、字段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 477

原创 获取类对象的三种方法

方法一通过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 1489

原创 多线程一定比单线程快吗

多线程一定比单线程快吗?我们知道,使用多线程,可以同时执行多个任务,从表面上看,多线程明显是要快于单线程的。但是,多线程的创建,上下文的切换也是需要开销的,所以多线程不一定比单线程快,接下来我们来看一个简单的测试用例。该测试用例分别使用单线程和多线程进行 a 的递增,b 的递减操作,我们通过控制循环次数,来比较相同次数下,串行和并行所花时间。public class TimeTest { public final int count = 1000000; public stati

2021-08-14 09:54:01 1955

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除