- 博客(15)
- 收藏
- 关注
原创 理解 AQS:Java 并发同步的基石
AQS是java并发编程的基石,其设计思路的核心是:1.用模版方法模式分离通用与定制逻辑,降低自定义同步工具的开发成本。2.用保证同步状态下的线程安全,这是并发编程的基础技巧。3.用CLH队列实现高效的线程等待,优化并发性能。那些你熬夜努力的时光,那些你觉得太累再也站不起来,却依然支撑自己起身的夜晚,那才是梦想的力量。
2025-12-18 11:15:08
949
2
原创 原子类操作核心:CAS算法的优缺点解析
在编程中,原子操作指的是不可被中断的最小的操作单元,要么完整执行完毕,要么完全不执行,就像物理中的 “原子” 一样不可分割。而原子类操作,在编程语言中是为了方便开发者实现原子操作 而提供的工具类(比如java中concurrent.atomic包下的AtomicInteger,AtomicLong等等),这些类的核心就是基于我们的CAS算法实现线程安全的操作,无需使用synchronized等重量级锁。用一个例子来说明:普通变量和原子类变量。
2025-12-14 22:12:41
981
1
原创 Java 反射:让程序拥有 “看透“ 类的能力
反射是java中一种强大的而且灵活的机制,它让程序拥有了在运行时”洞察“类结构并动态操作的能力。理解反射不仅能帮助我们更好地使用各种框架,也能在需要编写通用工具类时候提供强大支持。但记住,反射是一把”双刃剑“,在带来灵活性地同时也会付出性能和安全性地代价。所以,我们应该在合适地场景使用它,而不是滥用。
2025-11-16 20:00:00
649
1
原创 为什么说单例模式是 Java 开发里的 “全局独苗”?一篇讲透它的核心逻辑
如果用一句话来总结单例模式,就是:“按需创建一个全局唯一的实例,用它来管理统一的资源或者状态”。它不复杂,核心是抓住“唯一”和“全局访问”这两个点;选择实现方式,不用纠结——简单场景用饿汉模式,需要懒加载用静态内部类,就能满足大部分开发需求。
2025-11-15 17:59:02
748
1
原创 深入浅出线程池:解析线程池
线程池是一种多线程处理形式,它维护着一个线程集合,可以重复利用线程来执行多个任务,从而减少线程创建和销毁的开销,提高程序性能。在 Java 中,线程池(Thread Pool)是一种管理和复用线程的机制,它预先创建一定数量的线程,将任务提交到线程池后,线程池会分配空闲线程执行任务,任务完成后线程不会被销毁,而是回到线程池等待新任务,从而避免频繁创建和销毁线程的开销。线程池是并发编程的 "瑞士军刀",它通过复用线程、控制并发、缓冲任务,解决了线程频繁创建销毁的性能问题。
2025-10-20 11:21:30
910
原创 什么是阻塞队列?一篇文章带你搞懂
阻塞队列是一种支持“阻塞式插入”和“阻塞式移除”的队列:阻塞式插入:当队列已经满的时候,尝试往队列中添加元素的线程会被“阻塞”,直到队列有空闲空间(其他线程移除了元素),才会被唤醒继续执行插入。阻塞式移除:当队列为空的时候,尝试从队列中获取元素的线程会被“阻塞”,直到队列中有新元素(其他线程插入了元素),才会被唤醒继续执行移除。举个例子:快递柜就是一个很典型的“阻塞队列”:假如所有格子都满了(队列满了),快递员(插入线程)无法放入快递,只能等待有人取走快递(队列空闲);
2025-10-11 22:35:38
615
原创 线程安全:多线程编程
线程安全指的是当多个线程同时访问和操作某个程序、函数、变量或数据结构时,不会出现竞态条件、数据不一致、死锁等导致程序运行错误或产生不可预期结果的情况,程序依然能够正确地执行,得到符合预期的结果。简单来说就是多个线程处理同一份数据的时候,没有“排队”和“有序”,处理数据的时候各自处理自己的,导致数据错乱。
2025-09-25 22:52:38
900
原创 代码中哪些你以为不是很重要的细节之 运算符与逻辑控制
左移运算(<<左移操作可能会导致数据溢出。当左移后的结果超出数据类型所能表示的范围时,高位会被丢弃。例如在 Java 中,int类型是 32 位,若不断左移可能会使结果变为 0。左移一位相当于乘以 2,但这种优化仅适用于整数运算,对于浮点数不适用。算术右移(>>算术右移保持符号位不变,负数右移时左边补 1,这可能会影响对结果的预期。例如-8 >> 2结果是-2,而非简单的截断。逻辑右移(>>>Java 中>>>是无符号右移,仅用于int和long类型。
2025-03-16 13:11:54
969
原创 一篇文章带你搞懂java的历史和java环境
2011年,Java 7发布,增加了一些新特性。2014年,Java 8发布,引入Lambda表达式等,是Java 5.0以来最大的一次更新,提高了Java的函数式编程能力。java 命令会启动Java虚拟机(JVM),JVM加载字节码文件到内存中,并将字节码解释或编译成机器码,在不同的操作系统上执行,最终输出程序的运行结果。- 持续发展与新特性(2010年代 - 至今):Java在后续版本中不断改进,如Java 9引入模块化系统,Java 11成为长期支持版本,Java 17也带来了一些重要更新。
2025-03-05 16:06:53
696
1
原创 互联网大厂实习所需技术能力概括
负责AIGC大模型(文本、多模态等方向)在到家IM渠道落地(C端和B端落地);负责跟踪和探索LLM(如LLama2等开源模型)、视觉理解等前沿技术,包括并不限大模型微调对齐、大模型领域知识增强、大模型策略优化、RLHF模型优化、Agent;
2025-03-03 21:57:15
1604
原创 java中构造方法解析
所以我们在创建对象的时候,可以使用不同的构造方法:我们在编程中创建对象一般会用到这种方法来创建对象,而这个括号的作用就是来传参,传参就是传递参数。但是要先写一个确定传入参数类型和名称的构造方法。
2024-12-04 21:11:58
404
1
原创 java类与对象
对象可以包含方法,方法是对象能够执行的操作。例如:在学生对象中,学生会学习课程以及考试获得学分,在这个过程中,我们发现学生对象有学习的动作还有考试的行为。当调用学生这个类时候,学分就会相应的增加。方法:相当于类的行为,也就是类可以执行的操作。方法中可以包含语句块,用来实现具体的功能,并且可以接收参数以及返回相应的值(也可以无返回值,用。用于描述类所具有的各种特征。它们可以有不同的数据类型。变量可以在类中进行初始化,也可以通过对象创建后再赋值。例如:在学生对象里面,属性可能包括姓名、年龄、学号、、成绩等等。
2024-12-01 16:20:22
358
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅