
Java
文章平均质量分 79
「已注销」
这个作者很懒,什么都没留下…
展开
-
Java - SpringBoot打包部署
Spring Boot 部署和运行方式Spring Boot 打包为 warSpring Boot 打包为 jar原创 2023-12-17 17:49:09 · 590 阅读 · 0 评论 -
Java - CAP定理
Java - CAP定理原创 2023-12-13 17:14:46 · 1009 阅读 · 0 评论 -
Java - Spring中Bean的循环依赖问题
Java - Spring中Bean的循环依赖问题原创 2023-12-12 21:52:55 · 572 阅读 · 0 评论 -
Java - Bean的生命周期
Bean的生命周期之5步Bean生命周期之7步Bean生命周期之10步原创 2023-12-12 17:32:56 · 476 阅读 · 0 评论 -
Java - Spring中BeanFactory和FactoryBean的区别
BeanFactoryFactoryBeanBean的实例化方式 通过构造方法实例化 通过简单工厂模式实例化 通过factory-bean实例化 通过FactoryBean接口实例化原创 2023-12-12 17:17:47 · 889 阅读 · 0 评论 -
Java - SpringBoot借助Java Mail Sender(基于javax/jakarta.mail)发邮件
邮件基础邮箱设置引入依赖配置文件发送简单邮件发送带附件的邮件发送HTML邮件使用 Thymeleaf 作邮件模板发送HTML邮件原创 2023-11-02 21:25:31 · 2163 阅读 · 0 评论 -
SpringBoot - 四种常见定时器
常见实现方案@Scheduled注解实现定时器Timer().schedule实现定时器线程实现定时器原创 2023-12-09 11:47:18 · 6015 阅读 · 0 评论 -
Java - Mybatis借助PageHelper实现分页,集成SpringBoot
Java - Mybatis借助PageHelper实现分页,集成SpringBoot原创 2023-12-12 00:29:19 · 834 阅读 · 0 评论 -
Java - Mybatis的缓存机制、集成SpringBoot后缓存相关问题
mybaits提供一级缓存,和二级缓存一级缓存(默认开启)二级缓存开启二级缓存mybatis整合ehcache集成SpringBoot缓存相关问题原创 2023-12-11 23:55:04 · 1652 阅读 · 0 评论 -
Java - Spring项目的统一功能处理
目标用户登录权限效验统⼀异常处理统一数据返回格式原创 2023-12-10 16:20:41 · 887 阅读 · 0 评论 -
Java - JVM内存模型及GC(垃圾回收)机制
JVM内存模型垃圾回收机制如何判断一个对象是否为 "垃圾"几种垃圾回收算法原创 2023-12-10 15:16:34 · 1521 阅读 · 0 评论 -
Java - JVM内存区域的划分
Java - JVM内存区域的划分原创 2023-12-10 14:30:18 · 1024 阅读 · 0 评论 -
Java - Lombok介绍、使用、工作原理、优缺点
介绍Lombok的使用示例Lombok工作原理常用注解注解使用有风险原创 2023-12-10 13:38:47 · 1360 阅读 · 0 评论 -
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 · 2127 阅读 · 1 评论 -
Java - CAS在Java中的应用、CAS的三大问题
什么是CAS什么是 CASCAS 的原理CAS 如何实现原子操作CAS 的三大问题ABA 问题长时间自旋多个共享变量的原子操作原创 2023-12-09 21:24:14 · 936 阅读 · 0 评论 -
Java - Synchronized的锁升级之路
Synchronized锁锁的升级偏向锁轻量级锁重量级锁原创 2023-12-09 20:24:22 · 999 阅读 · 0 评论 -
Java - HashMap
该文章主要介绍了数组、链表和HashMap的区别以及HashMap的数据结构和工作原理。数组和链表是两种基本的数据结构,它们各有优缺点。数组的优点是随机读取效率高,缺点是插入和删除数据效率低;链表的优点是插入删除速度快,内存利用率高,缺点是不能随机查找。HashMap是一种键值对的集合,它的数据结构为数组+链表或红黑树,这种结构使得查询和插入、删除的效率都很高。在HashMap中,元素的存储位置是通过计算键的哈希码值和数组长度取模得到的。如果该位置没有元素,则直接将元素存储进去;如果该位置已有元素,则比较两原创 2023-12-08 21:36:14 · 774 阅读 · 0 评论 -
Java - 对象克隆、Cloneable接口、浅克隆和深克隆
本文总结了Java中的Cloneable接口的作用及其使用方式,以及Java创建对象的四种方式。Cloneable接口是一个标记接口,实现它并重写Object中的clone方法才能成功克隆对象。Object的clone方法是浅拷贝,如果要执行深拷贝,需要按需重写clone方法。Java创建对象的方式包括new、clone、输入输出流和反射构造对象等。此外,本文还介绍了浅克隆和深克隆的概念和示例代码,并解释了为什么需要实现Cloneable接口才能实现深克隆。原创 2023-12-08 15:59:28 · 1256 阅读 · 0 评论 -
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 · 460 阅读 · 0 评论 -
Java - 获取方法的参数名
本文主要介绍了如何在Java中获取方法参数名。首先介绍了Java编译器在编译时默认会抹去方法参数名,使得在运行期无法直接从.class字节码中获取参数名。然后通过实例说明了在使用Spring MVC和MyBatis框架时,即使不使用注解,只要参数名和请求参数的key对应上了,就能自动完成数值的封装。最后介绍了两种获取方法参数名的途径:使用-parameters选项或者借助ASM框架分析字节码信息中的本地变量表。文章还提到了Spring MVC借助ParameterNameDiscoverer完成了方法参数名原创 2023-11-30 21:46:27 · 1808 阅读 · 0 评论 -
Java - 内部类
在Java中,内部类是定义在另一个类或者方法内部的类。根据访问修饰符和定义位置的不同,内部类可以分为四种:静态内部类、成员内部类、局部内部类和匿名内部类。成员内部类可以访问外部类的所有成员属性和方法,包括private成员和静态成员。静态内部类不能使用任何外部类的非static成员变量和方法。局部内部类仅限于方法或作用域内访问。匿名内部类没有构造器,使用范围有限,通常用于继承其他类或实现接口。在匿名内部类中,访问外部局部变量是不被允许的。如果需要修改外部局部变量,需要将其改为final。访问外部成员变量是可原创 2023-11-30 21:30:21 · 861 阅读 · 0 评论 -
Java - 多线程下ThreadLocalRandom
在多线程下使用产生随机数时,直接使用。原创 2023-11-21 23:29:11 · 142 阅读 · 0 评论 -
Java - 为什么 ThreadLocal 会导致内存泄漏
如果 ThreadLocal 没有被直接引用(外部强引用),那么在垃圾回收的时候,由于 ThreadLocalMap 中的 key 是弱引用,所以 key 一定会被回收,因此 ThreadLocalMap 中就会出现 key 为 null 的 Entry,并且没有办法访问这些数据,那么强引用链 Thread -> ThreadLocalMap -> Entry -> value 就会一直存在,导致 value 无法被 GC 回收,从而导致内存泄漏。为什么是一直持有 value?原创 2023-11-09 13:38:26 · 180 阅读 · 0 评论 -
Java - session和ConcurrentHashMap
Map集合中保存的对象是Tomcat中一个会话对应一个session,其实现类是StandardSession,查看源码,可以找到一个attributes成员属性,即存储session的数据结构,为ConcurrentHashMap,支持高并发的HashMap实现;那么,tomcat中多个会话对应的session是由谁来维护的呢?原创 2023-11-06 09:49:55 · 156 阅读 · 0 评论 -
Java - Spring的事务
2. NESTED (嵌套事务) : 如果当前有事务, 创建一个事务作为当前的嵌套事务来执行, 相当于在当前事务这里有一个保存点, 如果执行过程中嵌套事务抛出异常, 就回滚到保存点, 只回滚嵌套事务(局部回滚), 不会影响上一个方法中执行的结果.当进入方法的时候, 它就会自动开启事务, 当方法结束后, 它就会自动提交事务. 说白了它就是 AOP 的一个环绕通知. 只要加了 @Transactional 注解的方法, 都有一个事务的 AOP , 这都是 Spring 帮我们封装好的.通过代码手动回滚事务.原创 2023-11-05 14:03:02 · 68 阅读 · 0 评论 -
Java - Spring一些细节
当类名首字母和第二个字母都是大写的情况, bean 的命名规则为 "原类名"查看源码的方法注意这里所以,在程序中的id为原类名,并非是uController。原创 2023-11-05 09:33:42 · 105 阅读 · 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 · 57 阅读 · 1 评论 -
Java - 线程池
Executors提供四种线程池newCachedThreadPool:newFixedThreadPool:newScheduledThreadPool:newSingleThreadExecutor:线程池执行流程线程池监控原创 2023-11-04 13:56:55 · 121 阅读 · 1 评论 -
Java - 阻塞队列BlockingQueue
什么是阻塞队列?BlockingQueue的核心方法阻塞队列的成员两个核心方法:put和take原创 2023-11-04 11:31:36 · 129 阅读 · 1 评论 -
Java - 线程安全问题
一、引入二、线程不安全五大原因三、内存可见性四、指令重排序五、volatile 关键字六、多线程下单例模式,双重检测锁原创 2023-11-04 11:03:55 · 120 阅读 · 1 评论 -
Java - 优先级队列(PriorityQueue)
在Java中,PriorityQueue是一种常用的优先级队列实现。它提供了插入、获取优先级最高元素、移除优先级最高元素等操作。PriorityQueue的底层使用了堆数据结构。默认情况下,PriorityQueue是小堆,即每次获取到的元素都是最小的元素。如果要转换成大堆,需要用户提供比较器。PriorityQueue的构造方法包括默认构造方法、指定初始容量的构造方法、指定集合构造方法、指定比较器构造方法等。它的操作方法包括offer、peek、poll、size、clean、isEmpty等。在扩容原创 2023-11-03 20:40:06 · 97 阅读 · 0 评论 -
Java - ArrayList的三种遍历方式
如果迭代器还有更多的元素,则返回 true。换句话说,如果 next 可以返回一个元素,而不是抛出异常,则返回 true。通过iterator()方法获得迭代器遍历。返回迭代的下一个元素。原创 2023-11-03 11:21:39 · 1370 阅读 · 0 评论 -
Java - 泛型的通配符
泛型是Java 5中引入的一个新特性,它提供了类型安全检测机制,使得开发者可以在编译时检测到非法类型。泛型的本质是参数化类型,它允许你在编译时指定一个类型参数,而不是在运行时强制转换类型。泛型的好处在于它可以在编译时检查类型安全,并且可以自动进行类型转换。通配符是泛型的一个重要组成部分,它们允许你在定义泛型类、泛型方法和泛型接口时使用不确定的类型。通配符可以表示任意类型,但是它们通常用 T、E、K、V 等字母来表示。上界通配符和下界通配符分别表示参数化的类型必须是所指定的类型的子类或父类。它们分别使原创 2023-11-03 10:38:38 · 57 阅读 · 0 评论 -
Java - Comparable接口和Comparator接口的区别
本文总结了Java中的Comparable和Comparator接口,它们用于实现集合中元素的比较和排序。Comparable接口需要对象本身实现compareTo方法,适合内部比较器。Comparator接口需要实现compare方法,适合作为外部比较器对没有比较规则的类进行排序。使用Comparable简单,但需要修改源代码,而使用Comparator不需要修改源代码,可以实现复杂的通用逻辑。原创 2023-11-02 23:15:33 · 66 阅读 · 0 评论