java

带你了解Java数据结构和算法之二叉树

2022-01-19
目录 1.树 2.二叉树 3.查找节点 4.插入节点 5.遍历树 6.查找最大值和最小值 7.删除节点 ①.删除没有子节点的节点 ②.删除有一个子节点的节点 ③.删除有两个子节点的节点 ④.删除有必要吗? 8.二叉树的效率 9.用数组表示树 10.完整的BinaryTree代码 11.哈夫曼(Huffman)编码 ①.哈夫曼编码 ②.哈夫曼解码 12.总结 1.树 树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点通过连接它们的边组成一个

Spring Security认证的完整流程记录

2022-01-19
目录 前言 认证上下文的持久化 认证信息的封装 查找处理认证的 Provider 类 认证逻辑 总结 前言 本文以用户名/密码验证方式为例,讲解 Spring Security 的认证流程,在此之前,需要你了解 Spring Security 用户名/密码认证的基本配置. Spring Security 是基于过滤器的,通过一层一层的过滤器,处理认证的流程,拦截非法请求. 认证上下文的持久化 处于最前面的过滤器叫做 SecurityContextPersistenceFilter,Spring

深入聊一聊springboot项目全局异常处理那些事儿

2022-01-19
目录 前言 问题一:全局异常抽离出来后,业务错误码如何定义? 问题二:全局异常因引入了和业务相同的依赖jar,但jar存在版本差异 问题三:引入maven optional标签后,因业务没引入全局异常需要的jar,导致项目启动报错 总结 demo链接 前言 之前我们业务团队在处理全局异常时,在每个业务微服务中都加入了@RestControllerAdvice+@ExceptionHandler来进行全局异常捕获.某次领导在走查代码的时候,就提出了一个问题,为什么要每个微服务项目都要自己在写一套全

SpringBoot利用限速器RateLimiter实现单机限流的示例代码

2022-01-19
目录 一. 概述 二. SpringBootDemo 2.1 依赖 2.2 application.yml 2.3 启动类 2.4 定义一个限流注解 RateLimiter.java 2.5 代理: RateLimiterAspect.java 2.6 使用 一. 概述 参考开源项目https://github.com/xkcoding/spring-boot-demo 在系统运维中, 有时候为了避免用户的恶意刷接口, 会加入一定规则的限流, 本Demo使用速率限制器com.xkcoding.r

基于SSM 集成 Freemarker模板引擎的方法

2022-01-19
FreeMarker简介 FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP.它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等.可以彻底的分离表现层和业务逻辑.曾经在使用JSP 开发过程中发现在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难 FreeMarker的原理就是:模板+数据模型=输出,模板只

JavaWEB中Servlet的生命周期详解

2022-01-19
目录 一.什么是Servlet 生命周期? 二.Servlet 是由谁来维护的? 三.Servlet 对象 是什么时候创建的? 四.测试 Tomcat 什么时候被销毁? 总结 一.什么是Servlet 生命周期? Servlet 对象什么时候被创建? Servlet对象什么时候被销毁? Servlet 对象创建了几个? Servlet 对象的声明周期表示:Servlet 对象从出生到销毁的过程是怎样的 二.Servlet 是由谁来维护的? Servlet 是由 Tomcat 服务器全权负责的,程

Java实现图片切割功能

2022-01-19
本文实例为大家分享了Java实现图片切割功能的具体代码,供大家参考,具体内容如下 工具类 package com.xudaolong.Utils; import javax.imageio.IIOImage; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageInputStream; i

带你了解Java数据结构和算法之哈希表

2022-01-19
目录 1.哈希函数的引入 ①.把数字相加 ②.幂的连乘 2.冲突 3.开放地址法 ①.线性探测 ②.装填因子 ③.二次探测 ④.再哈希法 4.链地址法 5.桶 6.总结 1.哈希函数的引入 大家都用过字典,字典的优点是我们可以通过前面的目录快速定位到所要查找的单词.如果我们想把一本英文字典的每个单词,从 a 到 zyzzyva(这是牛津字典的最后一个单词),都写入计算机内存,以便快速读写,那么哈希表是个不错的选择. 这里我们将范围缩小点,比如想在内存中存储5000个英文单词.我们可能想到每个单词

MyBatis 的 XML 配置文件和缓存使用步骤

2022-01-19
目录 MyBatis缓存介绍 MyBatis的XML整体介绍 一.整体配置文件介绍 二.Mybatis拦截器[不做要求] 参考案例 三.缓存 使用步骤 MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1.一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空.2. 二级缓存与一级缓存其机制相同

Java实现无头双向链表操作

2022-01-19
本文实例为大家分享了Java实现无头双向链表的具体代码,供大家参考,具体内容如下 无头双向链表的结构: 代码分析 节点结构 class Node {     private int data;     private Node next;     private Node prev;     public Node(int data) {         this.data = data;         this.prev = null;         this.next = null;  

关于Mybatis实体别名支持通配符扫描问题小结

2022-01-19
目录 Mybatis简介 问题 Mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录 问题 Spring集成Mybatis的项目中,可以为指定包下的实体取别名,这样在Mapp

一篇文章带你了解Spring AOP 的注解

2022-01-19
目录 1.xml 的方式实现 AOP ①.接口 UserService ②.实现类 UserServiceImpl ③.切面类,也就是通知类 MyAspect ④.AOP配置文件 applicationContext.xml ⑤.测试 ⑥.控制台打印结果 2.注解实现 AOP ①.导入相应的 jar 包,以及在 applicationContext.xml 文件中导入相应的命名空间. ②.注解配置 bean xml配置: 注解配置: ③.配置扫描注解识别 ④.注解配置 AOP 一.我们用xml配

Java实现单链表的操作

2022-01-19
本文实例为大家分享了Java实现单链表的基本操作,供大家参考,具体内容如下 顺序表:物理上逻辑上都连续:链表:物理上不一定连续,逻辑上一定连续的. 链表的概念及结构 概念:连表示一种物理存储结构上非连续.非顺序的存储结构,数据元素的逻辑顺序是用过链表中的引用链接次序实现的. 8种链表结构: 单项.双向带头.不带头循环.非循环 主要的三种链表: 无头单项非循环链表.带头循环单链表.不带头双向循环链表 代码实现 1. 接口定义 package com.github.linked.Impl; publ

MyBatis查询数据,赋值给List集合时,数据缺少的问题及解决

2022-01-19
目录 MyBatis查询数据赋值给List集合数据缺少 解决办法 Mybatis查询时数据丢失的问题 经过排查得出结论 解决办法 MyBatis查询数据赋值给List集合数据缺少 今天在使用MyBatis查询数据时,发现查出来的数据和List集合的大小不一致,如下图所示,Total为3,但是list集合size为2.   List<ArticleCommentToShow> commentsByArticleId = articleCommentService.getCommentsByArt

SSM Mapper文件查询出返回数据查不到个别字段的问题

2022-01-19
目录 SSM Mapper查询出返回数据查不到个别字段 原因 SSM查询不到数据库数据 终于找到原因 SSM Mapper查询出返回数据查不到个别字段 原因 开启了驼峰命名法则,Bean里的字段不识别_ 注释掉或者把实体类里的字段_去掉换位大写 SSM查询不到数据库数据 这两天搭了个ssm的环境,想先测试下,结果测试就出问题,同样的sql在navicate就能正常执行,在mapper就不行,查出来永远是null. 终于找到原因 我的数据库表的列名都带有下划线,需要在mybatis-config.

autoMapping和autoMappingBehavior的区别及说明

2022-01-19
目录 autoMapping和autoMappingBehavior的区别 autoMappingBehavior autoMapping 例子 小结一下 mybaits collection使用autoMapping注意点 autoMapping和autoMappingBehavior的区别 autoMappingBehavior mybatis核心配置文件中settings中配置,指定 MyBatis 应如何自动映射列到字段或属性. NONE 表示取消自动映射:PARTIAL 只会自动映射没

springboot 无法自动装配的问题

2022-01-19
目录 springboot 无法自动装配 @Autowired 报错:无法自动装配 基本上是因为 放到org.example下,问题解决 原因 无法自动装配.未找到“xxxMapper”类型的bean 说明Spring框架没有识别到你的xxxMapper中的类 如果你得类不需要管理或者继承或实现一些规则 springboot 无法自动装配 @Autowired 报错:无法自动装配 基本上是因为 1.项目里有类似mybatis @Mapper这种第三方映射类,需要用到springboot auto

Mapper层继承BaseMapper&lt;T&gt;需要引入的pom依赖方式

2022-01-19
目录 Mapper层继承BaseMapper<T>引入pom依赖 Mybatis-Plus的BaseMapper用法 BaseMapper 用法 用法举例 Mapper层继承BaseMapper<T>引入pom依赖 <!-- mp依赖 mybatisPlus 会自动的维护Mybatis 以及MyBatis-spring相关的依赖 --> <dependency> <groupId>com.baomidou</groupId> <

Mybatis 如何传入字符串参数,分割并遍历

2022-01-19
目录 如何传入字符串参数,分割并遍历 如前台传入字符串参数 正确写为如下 Mybatis 传入分割字符串做参数 解决 如何传入字符串参数,分割并遍历 如前台传入字符串参数 String str = "a,b,c,d,e,f": 现需将此参数作为查询语句的参数, Select * from news where id in (${id}) 使用该语句查询正常返回结果,但势必产生sql注入漏洞. 如修改为: Select * from news where id in (#{id}) 程序

MyBatis resultMap id标签的错误使用方式

2022-01-19
目录 MyBatis resultMap id标签的错误使用 本节的问题主要是我对mybatis id标签的错误使用 resultMap标签的使用规则 自定义结果映射规则 association联合查询 使用association进行分布查询 collection分步查询 MyBatis resultMap id标签的错误使用 我们在编写VO对象,如果业务场景稍微复杂一点,就会用到集合属性.例如用户查看个人订单列表,每个订单又包含多种或者多个规格的商品. 本节的问题主要是我对mybatis id