java
文章平均质量分 88
java学习、总结
Jack_abu
搬砖这么多年,开始沉淀点东西吧
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
详解java中的ConcurrentSkipListMap
ConcurrentSkipListMap是Java并发包中的线程安全有序映射实现,基于跳表数据结构。它支持自然排序或自定义比较器,提供高效的并发访问能力。核心特性包括:采用多层链表结构实现快速查找;使用CAS操作保证并发安全;查找、插入、删除操作均为O(logn)时间复杂度。适用于需要高并发有序访问的场景,如实时排行榜、范围查询等。相比TreeMap具有更好的并发性能,相比ConcurrentHashMap则提供有序性支持。使用时需注意禁止null键值、内存开销较大等限制。原创 2025-12-24 17:03:34 · 67 阅读 · 0 评论 -
详解java中的线程间协作工具:CountDownLatch,Semaphore,CyclicBarrier(二)
Java并发编程中的三大同步工具类各有特点:CountDownLatch用于一次性线程同步,通过计数器实现主线程等待多个子线程完成;Semaphore通过许可证机制控制资源并发访问,支持动态调整许可证数量;CyclicBarrier则实现多线程循环同步,屏障触发后可重置复用。此外,Exchanger支持线程间数据交换,Phaser提供更灵活的多阶段同步能力。这些工具基于AQS实现,适用于不同并发场景,开发者可根据任务特性选择合适的同步机制。原创 2025-12-19 20:08:25 · 772 阅读 · 0 评论 -
详解java中的BlockingQueue阻塞队列
Java的BlockingQueue是并发编程中实现生产者-消费者模式的核心工具,提供线程安全的阻塞操作。主要实现类包括基于数组的ArrayBlockingQueue、链表的LinkedBlockingQueue、优先级的PriorityBlockingQueue等,各有适用场景。通过锁机制和条件变量保证线程安全,支持阻塞/非阻塞操作及超时控制。典型应用于线程池任务队列、消息传递和流量控制。使用时需注意死锁风险、无界队列的内存问题及性能优化。原创 2025-12-18 20:25:40 · 894 阅读 · 0 评论 -
Java中的Thread、ThreadLocalMap、ThreadLocal三者之间的关系,ThreadLocalMap.Entry的弱引用设计
ThreadLocal通过ThreadLocalMap实现线程隔离存储,每个线程持有独立的ThreadLocalMap,通过ThreadLocal的set/get方法存取数据。弱引用设计允许ThreadLocal实例被GC回收,但需配合remove()清理残留值,尤其在线程池场景中。相比同步锁,ThreadLocal以空间换时间实现无锁线程安全,适用于数据库连接、会话管理等场景。最佳实践包括及时清理和避免存储大对象,平衡线程安全与内存管理原创 2025-11-03 19:38:28 · 723 阅读 · 0 评论 -
SpringBoot web项目中使用@ExceptionHandler处理全局异常?或是使用HandlerExceptionResolver?哪种更合适
SpringBoot项目中处理全局异常时,@ExceptionHandler+@ControllerAdvice更适合RESTful API场景,配置简单且与SpringMVC深度集成;HandlerExceptionResolver适用于全局拦截和复杂处理逻辑,但配置复杂。最佳实践是混合使用,优先采用@ControllerAdvice处理Controller层异常,再通过HandlerExceptionResolver捕获未处理的全局异常。建议大多数项目优先选择@ExceptionHandler方式原创 2025-10-29 19:08:51 · 862 阅读 · 0 评论 -
<? extends T>是什么,<? super T>又是什么,PECS是指什么
Java泛型通配符<? extends T>和<? super T>分别用于生产者(只读)和消费者(只写)场景。<? extends T>表示元素类型为T或其子类,确保安全读取但禁止写入;<? super T>表示元素类型为T或其父类,允许安全写入但读取时类型信息丢失。PECS法则(Producer Extends, Consumer Super)指导这两种通配符的应用,如集合拷贝和栈操作,通过编译期类型检查保证安全性,避免运行时类型错误。原创 2025-10-27 14:43:24 · 629 阅读 · 0 评论 -
Spring生态HTTP客户端技术演进:RestTemplate、RestClient与WebClient深度解析
Spring框架的HTTP客户端经历了三代技术演进:RestTemplate(同步阻塞)、WebClient(异步非阻塞)和RestClient(过渡方案)。RestTemplate适合低并发场景但存在线程资源消耗问题;WebClient基于响应式编程,在高并发下性能优异;RestClient则在保持兼容性的同时提供异步能力。测试显示WebClient吞吐量达12,000req/s,远优于RestTemplate的2,800req/s。建议传统系统采用渐进式迁移策略,新项目首选WebClient。原创 2025-10-17 11:19:06 · 1078 阅读 · 0 评论 -
从MyBatis3.4.5中的PropertyNamer看属性名称定义
文章分析了MyBatis中PropertyNamer类对属性命名的处理机制,指出当使用Lombok自动生成getter/setter方法时,若属性名第二个字母大写(如uType),会导致MyBatis无法正确映射字段。原因在于PropertyNamer.methodToProperty()方法会保留第二个字母大写状态,而Lombok生成的getUType()方法与之不匹配。解决方案包括:1)修改属性名前两个字母为小写;2)手动生成符合MyBatis命名规范的getter/setter方法原创 2025-10-10 12:14:59 · 547 阅读 · 0 评论 -
详解web.xml中的listener与filter
本文系统介绍了Java Web中Listener和Filter两大核心组件。Listener用于监听Servlet容器事件(如应用启动/关闭、Session创建销毁),通过事件驱动模型实现回调;Filter采用责任链模式拦截请求/响应,实现权限控制、日志记录等功能。文章详细对比了两者的配置方式(web.xml/注解)、执行顺序、典型应用场景及注意事项,强调Listener适合全局资源管理,Filter侧重请求处理拦截,并指出在微服务架构中部分功能可迁移至网关层。最后总结了实现规范、线程安全和性能优化等最佳实原创 2025-06-18 17:12:16 · 952 阅读 · 0 评论 -
算法学习之——LRU最近最少使用
LRU缓存淘汰算法通过双向链表维护访问顺序,哈希表提供快速查找,实现O(1)时间复杂度的关键操作。当缓存满时,算法自动淘汰链表尾部最久未使用的数据,保持高效缓存管理。原创 2025-06-06 16:37:51 · 939 阅读 · 0 评论 -
使用javaagent实现springboot工程中密码相关配置的统一化配置,避免密钥泄漏
项目中一般都会将密码等信息写在配置文件中,或者写在pom中,但是这种方式容易造成密码泄漏。本文主要是通过javaagent的方式,在项目启动时通过与密钥管理系统ssm交互实现了密钥数据的统一配置管理,从而避免了密钥泄漏的问题。原创 2025-01-20 17:01:28 · 1155 阅读 · 0 评论 -
聊一聊java中的main方法、premain方法、Instrumentation接口
java中的premain方法是做什么的,它和main有什么区别或联系,Instrumentaion API又是什么,和-javaagent有什么关系,如何在jvm启动应用程序之前插入自定义代码原创 2025-01-17 20:42:15 · 1388 阅读 · 0 评论 -
记我的Springboot2.6.4从集成swagger到springdoc的坎坷路~
在springboot2.6.4中集成swagger报错,项目无法正常启动,通过各种方法解决,但最后还是选择了springdoc~原创 2024-12-25 17:42:10 · 1339 阅读 · 0 评论 -
设计模式学习之——适配器模式
设计模式学习,适配器模式、变压器模式,工作原理、适用场景、优缺点、代码示例等原创 2024-12-11 14:46:01 · 1157 阅读 · 0 评论 -
设计模式学习之——工厂模式
设计模式学习,简单工厂模式、工厂方法模式、抽象工厂模式,工厂模式在spring框架中的应用,spring框架中的BeanFactory和FactoryBean原创 2024-12-10 14:52:31 · 1696 阅读 · 0 评论 -
Springboot项目集成Mybatis-Plus,多数据源配置,写主读从
springboot项目集成mybatis-plus,mybatis-plus多数据源,读写分离,写主读从,mybatis-plus中执行自定义sql原创 2024-11-29 17:25:49 · 1620 阅读 · 0 评论 -
设计模式学习之——观察者模式
设计模式学习-观察者模式,观察者模式的定义、实现原理、优缺点,应用场景,代码示例,以及观察者模式与发布订阅模式之前的区别与联系原创 2024-11-29 11:38:02 · 1102 阅读 · 0 评论 -
设计模式学习之——模板方法模式
设计模式学习之——模板方法模式,行为型设计模式,算法骨架固定,但实现步骤可以延迟在子类中实现原创 2024-11-28 18:46:15 · 1313 阅读 · 0 评论 -
设计模式学习之——策略模式
设计模式学习,策略模式,策略模式常见应用场景,java代码示例原创 2024-11-28 11:51:43 · 1805 阅读 · 0 评论 -
责任链模式在spring security过滤器链中的应用
责任链模式在spring security过滤器链中的应用,自定义过滤器的实现原创 2024-11-26 18:05:41 · 1398 阅读 · 1 评论 -
设计模式学习之——责任链模式
设计模式学习,责任链设计模式,责任链设计模式使用场景、优缺点,代码示例原创 2024-11-26 15:54:57 · 1832 阅读 · 0 评论 -
浅聊java中的枚举以及关于枚举的常见面试问题
枚举是通过关键字enum来定义的。枚举的每一个实例都是该枚举类型的一个对象,这些对象在编译时就已经被创建,并且不能被实例化。枚举类默认继承自类,但不能显式继承其他类也不能被继承,因为当枚举被编译为类时会被final修饰,但它可以实现接口)。原创 2024-08-28 17:38:52 · 1388 阅读 · 0 评论 -
MapStruct与BeanUtils处理对象属性复制场景对比
使用MapStruct进行类型转换或对象间属性复制,与BeanUtils.copyProperties进行简单对比原创 2024-05-28 19:13:33 · 1301 阅读 · 0 评论 -
JDK8:用java.nio.file.Files.lines方法读取大型文件
使用jdk8中java.nio.file.Files.lines方法读取大型文件内容原创 2024-05-23 17:54:58 · 1581 阅读 · 0 评论 -
聊一聊java中的ThreadLocal
java中的ThreadLocal是什么,它的实现原理,使用场景,以及需要注意的地方有哪些原创 2024-04-12 19:22:07 · 690 阅读 · 0 评论 -
聊一聊java中的SortedMap,TreeMap,以及SortedSet和TreeSet
聊一聊java框架中的SortedMap,TreeMap,SortedSet和TreeSet原创 2024-04-10 17:32:24 · 1556 阅读 · 0 评论 -
浅聊java集合框架中的java.util.LinkedList
聊一聊java集合框架中的java.util.LinkedList原创 2024-04-10 17:04:47 · 1216 阅读 · 0 评论 -
聊一聊java.util包中的Queue、Deque以及Stack分别是什么
聊一聊队列、栈,以及java中的Queue,Deque,stack分别是什么原创 2024-04-09 18:07:25 · 1952 阅读 · 0 评论 -
java中使用雪花算法(Snowflake)为分布式系统生成全局唯一ID
使用雪花算法(Snowflake)为分布式系统中生成全局唯一ID,使用java语言实现原创 2024-04-02 16:50:54 · 6415 阅读 · 0 评论 -
聊一聊java中的HashMap,ConcurrentHashMap以及Collections.SynchronizedMap
聊一聊java中的HashMap,ConcurrentHashMap,以及Collections.SynchronizedMap,它们的数据结构、实现原理原创 2024-04-01 19:04:54 · 868 阅读 · 0 评论 -
聊聊java中的CountDownLatch,CyclicBarrier,Semaphore
了解一下java中的CountDownLatch,CyclicBarrier,Semephore都是什么,以及它们的实现原理原创 2024-03-29 19:31:10 · 708 阅读 · 0 评论 -
聊一聊java中synchronized的实现原理
java中的synchronized实现同步的原理是什么原创 2024-03-29 18:36:44 · 1087 阅读 · 0 评论 -
聊一聊java中的volatile关键字是如何保障变量的可见性的
聊一聊java中的volatile关键词是如何保障变量在线程间的可见性的,它的实现原理是什么原创 2024-03-28 15:04:39 · 894 阅读 · 0 评论 -
分享一个关于java中查看一个对象内存布局和占用空间大小的工具
使用JOL,Java Object Layout工具来查看java中一个对象的内存布局及大小原创 2024-03-26 18:57:00 · 2217 阅读 · 0 评论 -
详解Java8中新引入的异步编程API之CompletableFuture
java8中引入了不少新的特性,使用最多的还是要数lambda、Stream API和CompletableFuture了吧?这里重点对CompletableFutre做一个比较深入、全面的了解。原创 2024-03-24 16:50:27 · 1040 阅读 · 0 评论 -
Java踩坑笔记——long型数据减去一个整数,数字后面加l和不加l结果出现了完全不同的情况
java中用一个long型整数,去减去一个数字,数字默认不加“l”则表示为int类型,加“l”则表示为long类型,但不加"l"时结果不符合预期,为什么?原来是发生了边界溢出问题,原创 2024-03-22 19:32:20 · 477 阅读 · 0 评论 -
浅谈一下java中的多线程(虽近万字,但还需多学习、多总结,看一篇远远不够系列~~~)
java多线程,多细程详解,java多线程面试知识点原创 2024-03-22 17:23:02 · 2192 阅读 · 0 评论 -
关于Java中ForkJoinPool.commonPool()详解
jdk8中的并行流parallelStream,CompletableFuture异步编程中有没有用到线程池?ForkJoinPool.commonPool()是什么?它的参数是固定的?还是程序可干预的?原创 2024-03-19 18:21:44 · 5054 阅读 · 0 评论 -
java中的fork、join是什么?这个fork和我们常见到的如“fork一个进程去执行xxx”是一回事么?
操作系统中的fork和java中的fork是不是一回事?java中的fork/join框架是什么?怎么用?工作窃取算法(work-stealing)是什么?原创 2024-03-18 18:07:15 · 1569 阅读 · 0 评论 -
java中用对象的引用去调用类的静态方法,会对引用做是否为空的校验么?
在Java中,静态方法(也称为类方法)属于类本身,而不是类的实例。因此,您不需要创建类的实例就可以调用静态方法。在提供的代码中,尽管变量 a 被设置为 null,但您尝试调用的方法 doSth() 是一个静态方法,所以...原创 2024-03-18 16:06:57 · 462 阅读 · 0 评论
分享