自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 零基础如何制作一个简单的个人网页

准备工作:只需要一个文本编辑器,首推VS Code(功能强大,并且免费)

2025-09-09 09:25:43 1250

原创 Java数组复制:浅拷贝与深拷贝

在java中,如果要复制数组有多种方法,但简单可归为两类:浅拷贝和深拷贝。

2025-08-10 19:45:00 718

原创 深入解析进程与线程的区别

进程是一个正在运行的程序的实例,是操作系统进行资源分配的基本单位。

2025-07-28 00:22:32 1155

原创 代码中哪些你以为不是很重要的细节之 运算符与逻辑控制

左移运算(<<左移操作可能会导致数据溢出。当左移后的结果超出数据类型所能表示的范围时,高位会被丢弃。例如在 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关注的人

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