自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一米九的博客

非知名码农的简单分享

  • 博客(69)
  • 收藏
  • 关注

原创 Spring boot如何执行单元测试?

Spring Boot 提供了一个一站式启动器,如以下依赖配置所示。测试启动器依赖不仅包含以上两个 Spring Boot模块,还包含 Spring Test 测试模块,以及其他第三方测试类库,如下所示。更多测试相关的依赖可见具体的依赖关系树,如下图所示。以上这些都是 Spring Boot 提供的常用的测试类库,如果上面的测试类库还不能满足你的需要,也可以任意添加以上没有的类库。

2024-04-03 11:09:13 1341 1

原创 Lambda 表达式到底会不会造成内存泄漏?

匿名内部类会持有外部类的引用,因此有造成内存泄漏的风险;

2024-04-03 10:54:00 385

原创 如何遍历HashMap以及为什么不推荐使用 keySet() 遍历HashMap?

使用keySet遍历,其实内部是使用了对应的iterator()方法。iterator()方法是创建了一个对象。对象对象。对象的构造方法中,会遍历找到第一个不为空的entry。

2024-04-01 11:11:52 654

原创 老生常谈:如何保障 MySQL 和 Redis 的数据一致性?

对于这种方案,看看就行,反正我是不会用,太 Low 了,风险也不可控。

2024-03-29 10:17:25 696

原创 两年测开经历分享的测试开发学习路线

适用于想转行做功能测试与测试开发的同学给出目标、学习建议、关键知识点、最优资源以及各类资源推荐(视频、书籍、文档、项目、工具等)完整的测试开发学习路线,划分阶段并给出持续学习的方向我自己在从事 测试开发工作 近2年,有自己的从业经历和思考。

2024-03-28 15:49:44 1809

原创 Spring Boot 防护 XSS + SQL 注入攻击

不管输入什么参数,打印出的sql都是这样的。这是因为mybatis启用了预编译功能,在sql执行前,会先将上面的sql发送给数据库进行编译,执行时,直接使用编译好的sql,替换占位符“?存储型XSS: 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种“准备好”的方式不仅能提高安全性,而且在多次执行一个sql时,能够提高效率,原因是sql已编译好,再次执行时无需再编译。

2024-03-28 14:47:45 1898

原创 详解常用的设计模式——单例模式、工厂模式、代理模式

详解几种常用的设计模式

2022-03-16 13:18:23 2629

原创 JVM调优-从垃圾回收角度来看

性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。

2022-03-15 14:40:54 580

原创 线程的同步和synchronized关键字

线程同步1、关于多线程并发环境下,数据的安全问题是重点。在实际开发中,项目都是运行在服务器当中,而服务器已经将线程的定义,线程对象的创建,线程的启动等,都已经实现。这些代码我们都不需要编写。最重要的是:程序需要放到一个多线程的环境下运行,更需要关注的是这些数据在多线程并发的环境下是否是安全的。2、满足以下3个条件,就会存在线程安全问题。条件1:多线程并发。条件2:有共享数据。条件3:共享数据有修改的行为。用排队执行解决线程安全问题。这种机制被称为:线程同步机制。实际上就是线程不能并

2022-03-10 19:13:31 293

原创 Spring Boot 整合Shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

2022-03-02 19:39:13 317

原创 Java中常见的垃圾收集器

串行垃圾回收器(Serial 收集器)单线程的垃圾回收器,在垃圾回收时,需要其它线程暂停,等待垃圾回收完毕。开启串行垃圾回收器的参数:-XX:+UseSerialGC = serial + serialOldserial是工作在新生代,采用的是复制算法;serialOld是工作在老年代,采用的是标记整理算法。缺点:STW时间较长优点:简单又高效,没有线程交互的消耗,收集效率高。吞吐量优先垃圾回收器多线程的垃圾回收器,注重的是单位时间内垃圾回收的STW时间最短。需要多核CPU支持

2022-02-27 21:13:42 2481

原创 认识JVM垃圾回收算法

标记清除算法标记阶段:标记出没有引用,满足回收条件的对象清除阶段:并不是把垃圾对象的内存清零。而是把垃圾对象所占用的内存的起始地址和结束地址记录下来,放在一个空闲地址列表中。等到下次分配新对象的时候就去空闲地址列表中找一份足够的空间容纳这个新对象。**优点:**速度快(只需要把垃圾对象的内存起始和结束位置做记录就完成了,不需要做额外处理)**缺点:**容易产生内存碎片标记复制算法将幸存区分为from和to两块区域,to区域保证一直是空的,将幸存对象都复制到from区标记:标记出没有引

2022-02-27 21:10:00 168

原创 Java并发知识点回顾整理

基础篇什么是进程和线程?**进程:**进程是程序的一次执行过程,是系统程序运行的基本单位。进程是动态的,程序运行的过程就是这个进程从创建、运行到消亡的过程。**线程:**线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。​ 与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。Java 程序天生就是

2022-02-26 23:03:42 517

原创 个人博客项目:使用Threadlocal保存登录用户信息

问题描述:在用户成功登录后,我们在后端某些其它功能模块中需要获取到当前登录用户的信息。并且需要保证用户信息的安全,除去当前线程外,其它线程无法获取到用户的信息。解决方法 :使用threadlocal保存用户信息,就可以在其它的功能模块中获取到已登录的用户信息。实现了线程隔离,保证了用户信息安全。threadlocal存在问题:threadlocal是存在内存泄漏的问题的,因为每一个Thread维护一个ThreadLocalMap,key为弱引用的Threadlocal实例,value为线程变量

2022-02-25 18:20:23 3012

原创 Java集合知识点回顾整理

List, Set, Queue, Map 四者的区别List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素是无序的、不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。Map(用 key 来搜索的专家): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x” 代表 key,“y” 代表 value,key 是无序的、不可重复的,value 是无序.

2022-02-24 13:46:42 331

原创 Java基础知识回顾整理

基本知识1、JVM、JDK和JRE​ JVM:是运行Java字节码的虚拟机,字节码和不同系统的虚拟机是实现Java语言跨平台特性的关键所在。我们常用的是HotSpotVM仅仅是JVM的一种实现而已,只要符合JVM规范,各种机构组织都可以构建自己的JVM。​ JDK:它拥有JRE拥有的一切,还有编译器(javac)和工具(javadoc、jdb),能够创建和编译程序。​ JRE:是Java行时环境,包括:JVM,Java类库、Java命令;但它不能构建新的程序。2、字节码文件​ 字节码:是JVM可

2022-02-22 15:33:12 298

原创 个人博客项目:查看文章详情后阅读数+1的处理

需求描述:点击查看文章后,进入文章详情页面,阅读数需要+1,如果在数据库表中添加一个字段更新+1,存在问题:(1)更新操作会在数据库表中加写锁,很影响性能;在多人访问时候,会导致文章无法查看的问题;(2)而且如果将查看文章和阅读数+1作为一整套事务的话,当查询完文章详情后执行阅读数+1的操作时如果出现了问题,会导致整个流程中断,无法正常查看文章;解决方法:使用线程池技术,将更新阅读数这一操作放到线程池中执行,不会影响主线程的查看文章详情的工作具体实现:编写线程池配置类ThreadPoolC

2022-02-14 21:28:42 1357

原创 Redis 学习笔记(自己整理供自己复习)

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

2022-02-11 22:14:45 374

原创 报错:org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested except

错误背景连接远程阿里云服务器使用redis存储数据,没有序列化对象,直接存储完整报错信息:org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object usi

2022-02-11 15:05:52 970

原创 Linux 学习笔记(自己整理仅供自己复习)

LINUX操作系统是一种免费使用和自由传播的类UNIX操作系统。其内核由林纳斯·托瓦兹于1991年10月5日首次发布,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议,是一个性能稳定的多用户网络操作系统。

2022-02-08 19:48:06 1970

原创 Git 学习笔记(自己整理仅供自己复习)

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

2022-02-06 20:13:32 335

原创 Mybatis-plus 学习笔记

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2022-02-04 18:46:19 589

原创 报错:org.springframework.dao.TransientDataAccessResourceException:Zero date value prohibited;

错误背景使用mybatis-plus查询数据,当时间类字段上插入的是默认值0000-00-00 00:00:00,发生查询异常数据库表:完整报错信息:org.springframework.dao.TransientDataAccessResourceException: Error attempting to get column 'create_time' from result set. Cause: java.sql.SQLException: Zero date value proh

2022-02-03 21:46:45 1788

原创 leetCode 142-环形链表II【Java】

力扣第421题,此题难度中等,需要用到数学思维解决

2022-02-03 17:24:13 180

原创 leetCode面试题 02.07-链表相交【Java】

链表相交题目

2022-02-03 16:24:21 112

原创 leetCode19-删除链表的倒数第N个节点【Java】

力扣第19题,使用双指针法解题

2022-02-03 14:52:22 753

原创 Spring Cloud 学习笔记

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

2022-02-02 21:41:52 536

原创 leetCode24-两两交换链表中的节点【Java】

本题也可以使用递归实现,但虚拟头结点法更易理解些

2022-02-02 19:12:56 495

原创 leetCode206-翻转链表【Java】

本题可以使用双指针法和递归法来实现

2022-02-02 18:24:03 377

原创 leetCode707-设计链表,包含定义单向链表和定义双向链表【Java】

第707题,考察对链表的基础操作,为中等题目

2022-02-02 16:07:49 94

原创 SpringSecurity学习笔记+练习代码

Spring Security是一个能够为基于Spring的企业应用系统提供描述性安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IOC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

2022-01-30 23:59:53 718

原创 JDBC连接Mysql数据库一实现登录注册功能

目录前言1、需求2、业务描述3、数据准备4、编程步骤5、实现源码6、程序存在bug(1)导致这种现象的原因是什么?(2)解决SQL注入(3)总结:7、对比一下statement和preparestatement:前言JDBC是SUN公司制定的一套接口(interface)1、需求模拟用户登录功能的实现2、业务描述程序运行时,提供一个输入的入口,可以让用户输入用户名和密码。用户输入用户名和密码之后,提交信息,java程序收集到用户信息后,连接数据库验证用户名和密码是否合法。合法:提示登陆.

2022-01-26 23:22:42 2912 1

原创 springboot项目报错:Mail server connection failed;

使用springboot2.2.0集成mail功能出现错误 报错信息:org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could

2022-01-26 23:11:45 4453 1

原创 使用Swagger报错- ‘documentationPluginsBootstrapper‘; nested exception is java.lang.NullPointerException

SpringBoot的2.6.0以上版本,使用Swagger2引发的报错报错信息:org.springframework.context.ApplicationContextException:Failed to start bean 'documentationPluginsBootstrapper'; nested exception is

2022-01-26 23:07:26 754

原创 JDBC——连接MySQL数据库

JDBC是SUN公司制定的一套接口(interface)

2022-01-07 01:18:09 1103

原创 leetCode209-长度最小的子数组【Java】

给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。相关题目:904水果成篮、76最小覆盖子串public class LC209_MinSizeSubArray { public static void main(String[] args) { int[] array = {5, 9, 15, 15, 30, 15, 32, 32}; Sy..

2022-01-06 01:22:45 251

原创 LeetCode69-X的平方根【Java】

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留整数部分 ,小数部分将被舍去。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。public class LC69_SqrtX { public static void main(String[] args) { int i = getSqrtX(2147395599); System.out.println(i); ..

2022-01-06 01:21:16 358

原创 Leet Code59-螺旋矩阵(二)【Java】

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。相关题目:54.螺旋矩阵、剑指offer29.顺时针打印矩阵public class SpiralMatrix { public static void main(String[] args) { int[][] spiralMatrix = getSpiralMatrix(5); for (int[] matrix : spiralMatrix) ..

2022-01-05 12:18:02 160

原创 LeetCode54-螺旋矩阵(一)【Java】

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素例:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]public class LC54 { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, ..

2022-01-05 12:13:44 262

原创 Leet Code35-搜索插入位置【Java】

在一个有序数组中寻找目标元素(target),如果找到,返回下标。如果没找到,则返回该元素按顺序插入后的下标public class LC35_binarySearch { public static void main(String[] args) { int[] array = {5, 9, 15, 36, 84, 96, 125, 456, 535}; System.out.println(binary_SearchPlus(array,85)); .

2022-01-05 12:10:45 145

空空如也

空空如也

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

TA关注的人

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