- 博客(46)
- 收藏
- 关注
原创 Java - SpringBoot打包部署
Spring Boot 部署和运行方式Spring Boot 打包为 warSpring Boot 打包为 jar
2023-12-17 17:49:09
586
原创 Redis - 分布式锁、Redisson
分布式锁Redisson 可重入锁 - 单机Redis下分布式锁Redisson - 红锁 - 集群Redis下分布式锁分段锁Redisson 详解
2023-12-13 20:58:14
1446
原创 Java - Spring中BeanFactory和FactoryBean的区别
BeanFactoryFactoryBeanBean的实例化方式 通过构造方法实例化 通过简单工厂模式实例化 通过factory-bean实例化 通过FactoryBean接口实例化
2023-12-12 17:17:47
882
原创 Java - Mybatis借助PageHelper实现分页,集成SpringBoot
Java - Mybatis借助PageHelper实现分页,集成SpringBoot
2023-12-12 00:29:19
832
原创 Java - Mybatis的缓存机制、集成SpringBoot后缓存相关问题
mybaits提供一级缓存,和二级缓存一级缓存(默认开启)二级缓存开启二级缓存mybatis整合ehcache集成SpringBoot缓存相关问题
2023-12-11 23:55:04
1640
原创 MySQL - 事务隔离级别
MySQL 事务概念说明事务隔离级别实例 读未提交 读提交 可重复读MySQL 中是如何实现事务隔离的 MVVC - 实现可重复读 行锁 - 并发写问题 行锁和间隙锁合并(Next-Key锁) - 解决幻读
2023-12-11 14:25:40
1069
原创 MySQL - 聚簇索引和非聚簇索引,回表查询,索引覆盖,索引下推,最左匹配原则
聚簇索引和非聚簇索引什么是回表查询例子什么是索引覆盖索引下推什么是最左匹配原则
2023-12-10 23:16:06
1708
原创 Java - JUC(java.util.concurrent)包详解,其下的锁、安全集合类、线程池相关、线程创建相关和线程辅助类、阻塞队列
JUC是什么?Java中线程有六个状态JUC的结构synchronized和JUC的Lock reentrantLock Condition JUC下的读写锁ReentrantReadWriteLock不安全的集合类和JUC的collections list 不安全-CpoyOnWriteArrayList set 不安全-CopyOnWriteArraySet HashMap不安全-ConcurrentHashMapJUC的Callab
2023-12-09 23:44:29
2101
1
原创 Java - CAS在Java中的应用、CAS的三大问题
什么是CAS什么是 CASCAS 的原理CAS 如何实现原子操作CAS 的三大问题ABA 问题长时间自旋多个共享变量的原子操作
2023-12-09 21:24:14
931
原创 SpringBoot - 四种常见定时器
常见实现方案@Scheduled注解实现定时器Timer().schedule实现定时器线程实现定时器
2023-12-09 11:47:18
5930
原创 Java - HashMap
该文章主要介绍了数组、链表和HashMap的区别以及HashMap的数据结构和工作原理。数组和链表是两种基本的数据结构,它们各有优缺点。数组的优点是随机读取效率高,缺点是插入和删除数据效率低;链表的优点是插入删除速度快,内存利用率高,缺点是不能随机查找。HashMap是一种键值对的集合,它的数据结构为数组+链表或红黑树,这种结构使得查询和插入、删除的效率都很高。在HashMap中,元素的存储位置是通过计算键的哈希码值和数组长度取模得到的。如果该位置没有元素,则直接将元素存储进去;如果该位置已有元素,则比较两
2023-12-08 21:36:14
773
原创 Java - 对象克隆、Cloneable接口、浅克隆和深克隆
本文总结了Java中的Cloneable接口的作用及其使用方式,以及Java创建对象的四种方式。Cloneable接口是一个标记接口,实现它并重写Object中的clone方法才能成功克隆对象。Object的clone方法是浅拷贝,如果要执行深拷贝,需要按需重写clone方法。Java创建对象的方式包括new、clone、输入输出流和反射构造对象等。此外,本文还介绍了浅克隆和深克隆的概念和示例代码,并解释了为什么需要实现Cloneable接口才能实现深克隆。
2023-12-08 15:59:28
1248
原创 Java - java.util.Date和java.sql.Date的区别
本文介绍了java.sql.Date和java.util.Date之间的关系和异同。java.sql.Date是java.util.Date的子类,两者都有getTime方法,可以相互转换。java.sql.Date的时间格式是年-月-日,没有时间部分,强制获取时分秒会抛异常。两个对象都能使用SimpleDateFormat进行格式化,但tostring()显示不同。java.sql.Date对其进行了重写。
2023-12-08 00:07:46
458
原创 Java - 获取方法的参数名
本文主要介绍了如何在Java中获取方法参数名。首先介绍了Java编译器在编译时默认会抹去方法参数名,使得在运行期无法直接从.class字节码中获取参数名。然后通过实例说明了在使用Spring MVC和MyBatis框架时,即使不使用注解,只要参数名和请求参数的key对应上了,就能自动完成数值的封装。最后介绍了两种获取方法参数名的途径:使用-parameters选项或者借助ASM框架分析字节码信息中的本地变量表。文章还提到了Spring MVC借助ParameterNameDiscoverer完成了方法参数名
2023-11-30 21:46:27
1780
原创 Java - 内部类
在Java中,内部类是定义在另一个类或者方法内部的类。根据访问修饰符和定义位置的不同,内部类可以分为四种:静态内部类、成员内部类、局部内部类和匿名内部类。成员内部类可以访问外部类的所有成员属性和方法,包括private成员和静态成员。静态内部类不能使用任何外部类的非static成员变量和方法。局部内部类仅限于方法或作用域内访问。匿名内部类没有构造器,使用范围有限,通常用于继承其他类或实现接口。在匿名内部类中,访问外部局部变量是不被允许的。如果需要修改外部局部变量,需要将其改为final。访问外部成员变量是可
2023-11-30 21:30:21
859
原创 Java - 为什么 ThreadLocal 会导致内存泄漏
如果 ThreadLocal 没有被直接引用(外部强引用),那么在垃圾回收的时候,由于 ThreadLocalMap 中的 key 是弱引用,所以 key 一定会被回收,因此 ThreadLocalMap 中就会出现 key 为 null 的 Entry,并且没有办法访问这些数据,那么强引用链 Thread -> ThreadLocalMap -> Entry -> value 就会一直存在,导致 value 无法被 GC 回收,从而导致内存泄漏。为什么是一直持有 value?
2023-11-09 13:38:26
175
原创 Junit5单元测试
创建 runSuite 测试套件类, 添加@Suite注解, @SelectClasses 注解, 指定类运行类下的加了 @Test 注解, 或者参数化的测试用例.该注解是修饰方法的, 当一个测试方法加上 @BeforeEach 注解之后, 就表示当前方法需要。该注解是修饰方法的, 当一个测试方法加上 @BeforeAll 注解之后, 就表示当前方法需要。@CsvSource({"第一组数据", "第二组数据", "第三组数据", ....}). 并且被该注解修饰的方法必须为静态方法.
2023-11-08 20:25:12
57
原创 selenium - web自动化测试
解压,找到msedgedriver.exe,将其放到 Java 系统环境变量下,例如 : 将其放到 JDK 的 bin 目录下启动发现edge浏览器webdriver请求地址是127.0.0.1 : 9515。
2023-11-08 17:16:03
93
原创 Java - session和ConcurrentHashMap
Map集合中保存的对象是Tomcat中一个会话对应一个session,其实现类是StandardSession,查看源码,可以找到一个attributes成员属性,即存储session的数据结构,为ConcurrentHashMap,支持高并发的HashMap实现;那么,tomcat中多个会话对应的session是由谁来维护的呢?
2023-11-06 09:49:55
153
原创 Java - Spring的事务
2. NESTED (嵌套事务) : 如果当前有事务, 创建一个事务作为当前的嵌套事务来执行, 相当于在当前事务这里有一个保存点, 如果执行过程中嵌套事务抛出异常, 就回滚到保存点, 只回滚嵌套事务(局部回滚), 不会影响上一个方法中执行的结果.当进入方法的时候, 它就会自动开启事务, 当方法结束后, 它就会自动提交事务. 说白了它就是 AOP 的一个环绕通知. 只要加了 @Transactional 注解的方法, 都有一个事务的 AOP , 这都是 Spring 帮我们封装好的.通过代码手动回滚事务.
2023-11-05 14:03:02
67
原创 Java - Spring一些细节
当类名首字母和第二个字母都是大写的情况, bean 的命名规则为 "原类名"查看源码的方法注意这里所以,在程序中的id为原类名,并非是uController。
2023-11-05 09:33:42
99
1
原创 Java - 网络编程
/ 构造词汇dict.put("hello","你好");dict.put("monkey","孙悟空");dict.put("fuck","卧槽");dict.put("dog sun","狗日");// 重写 process@Overridereturn dict.getOrDefault(request,"这个问题俺也不会!");3.UdpEchoClient 代码(客户端)// 客户端的端口号,一般都是由操作系统自由分配的。
2023-11-04 17:21:53
56
1
原创 Java - 线程池
Executors提供四种线程池newCachedThreadPool:newFixedThreadPool:newScheduledThreadPool:newSingleThreadExecutor:线程池执行流程线程池监控
2023-11-04 13:56:55
109
1
原创 Java - 阻塞队列BlockingQueue
什么是阻塞队列?BlockingQueue的核心方法阻塞队列的成员两个核心方法:put和take
2023-11-04 11:31:36
125
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人