- 博客(449)
- 资源 (29)
- 收藏
- 关注
原创 【GitHub 开源:一份系统化的 Java 架构师技术 CookBook,从数据结构到分布式系统的完整学习路线图】
本文介绍了一个持续维护的Java技术知识仓库项目,采用"CookBook"理念系统化整理技术内容,涵盖数据结构与算法、Java核心、Spring生态、分布式系统等全栈知识。项目包含60+篇技术文档和可运行示例代码,亮点包括:28篇数据结构与算法详解(基础+工程实践)、12周渐进式学习路线、面试高频考点整理、可运行代码示例。适合各阶段开发者学习使用,支持作为学习路线图、面试复习资料或技术速查手册。项目开源并欢迎贡献,旨在帮助Java开发者高效成长。
2026-05-02 14:21:27
667
原创 CompletableFuture深度解析:异步编程范式与源码实现
CompletableFuture深度解析 本文系统剖析Java 8引入的CompletableFuture异步编程框架。首先从理论层面分析同步阻塞模型的性能瓶颈,阐述异步编程的必要性,并对比传统Future的局限性。随后梳理Java异步编程演进历程,从早期回调地狱到ExecutorService+Future,再到CompletableFuture的诞生。重点解析其核心设计:通过CompletionStage接口实现计算图的声明式编排,采用Treiber Stack实现无锁依赖管理,结合函数式编程范
2026-05-10 15:28:32
268
原创 Java内存模型深度解析:Happens-Before规则与内存屏障实现原理
Java内存模型(JMM)是定义多线程环境下共享变量访问规则的并发理论基础,核心是建立happens-before关系。现代CPU的多级缓存架构(如L1/L2/L3)和MESI协议虽然保证缓存一致性,但Store Buffer和Invalidate Queue会导致可见性延迟。编译器优化通过指令重排序提升性能,但可能破坏多线程语义。JMM作为程序员与硬件/编译器间的契约,通过内存屏障等技术确保正确的内存可见性。理解JMM需要掌握底层硬件原理(如缓存一致性)、编译器行为(指令重排序)以及happens
2026-05-10 15:08:46
363
原创 AQS深度解析:并发编程基石的设计哲学与源码实现
AQS(AbstractQueuedSynchronizer)是Java并发编程的核心框架,采用模板方法模式封装同步器的通用逻辑(队列管理、线程阻塞/唤醒),子类通过实现tryAcquire等方法定制同步行为。其核心设计包括CLH变体队列、volatile状态变量及CAS原子操作,支撑了ReentrantLock、Semaphore等JUC组件。AQS通过分离框架层与实现层,提供高效灵活的同步机制,是深入理解Java并发的关键。
2026-05-10 11:07:20
304
原创 【AI热点资讯】5月10日AI热点:Cloudflare裁员1100人、Musk庭审第二周回顾、OpenAI发布Codex Chrome插件
5月9-10日,海外AI圈出现多起重大事件:Cloudflare裁减1,100名员工,与此同时AI使用量暴增600%——这是AI替代人工的又一个上市公司级别案例;Musk诉Altman案第二周遭The Verge回顾总结,Mira Murati证词披露Altman解雇细节、Helen Toner/Tasha McCauley视频作证;OpenAI发布Codex Chrome扩展,让AI直接"操控"浏览器中已登录的网站和应用。
2026-05-10 11:04:48
331
原创 线程池深度解析:从生产者-消费者模型到工业级调优实践
本文深入解析Java线程池的核心原理与工业级实践。从线程池的本质认知出发,剖析其作为生产者-消费者模型和资源复用机制的双重角色。重点解读ThreadPoolExecutor源码设计,包括ctl字段的位运算艺术、任务调度流程和状态转换机制。通过JVM内存模型分析线程池数据结构分布,对比不同队列策略的性能差异。提供线程池参数计算公式和监控方案,总结常见陷阱与最佳实践。最后附上面试题解析,帮助开发者掌握线程池调优技巧,构建高并发系统。
2026-05-09 23:07:24
361
原创 动态代理深度解析:JDK与CGLIB底层实现与实战
动态代理(Dynamic Proxy)不是简单的"设计模式应用",而是**Java运行时字节码工程**的核心技术。它是Spring AOP、MyBatis Mapper接口、Dubbo RPC、Hibernate延迟加载等主流框架的**底层基础设施**。
2026-05-08 20:19:59
361
原创 Java反射深度解析:运行时探查的艺术、代价与工程实践
Java反射机制是Java动态性的核心体现,它允许程序在运行时探查和操作类结构。本文从理论基础、实现原理到工程实践全面剖析反射机制。 核心要点: 反射本质是绕过编译期检查,实现运行时动态调用 通过java.lang.reflect包提供的Class、Method等类实现 性能开销主要来自类型检查、访问控制等额外操作 与MethodHandle相比,反射更灵活但性能较低 现代Java框架广泛使用反射实现动态代理和依赖注入 应用场景: 框架开发(Spring、Hibernate等)
2026-05-07 22:49:08
399
原创 Java注解深度解析:从元数据机制到框架开发基石
Java注解机制,涵盖JVM层面的元数据存储、编译期与运行期协作原理。注解在class文件中通过属性表存储,运行时以动态代理对象形式存在。文章详解注解的生命周期(SOURCE/CLASS/RUNTIME)及对应消费方(编译器/字节码工具/JVM),分析@Inherited的继承规则限制,并通过Spring等框架案例展示注解如何支撑声明式编程。最后探讨注解与XML配置的演进关系,揭示注解作为现代Java框架基石的技术本质。
2026-05-06 21:33:59
190
原创 Java枚举深度解析:从类型安全到JVM级单例模式
Java枚举(Enum)是类型安全与单例模式的完美结合,远非简单的常量集合。其核心价值体现在:1) 编译期类型检查,杜绝非法值;2) JVM级单例保证,反射和序列化无法破坏;3) 策略模式载体,通过抽象方法实现多态行为。从JVM角度看,枚举编译为final类,包含静态常量字段和私有构造器,类加载时初始化实例,确保线程安全。字节码分析显示,枚举通过values()克隆数组、valueOf()委托Enum实现,而静态代码块负责初始化常量。最佳实践建议将业务逻辑封装在枚举内部,而非外部switch-cas
2026-05-06 21:30:55
411
原创 【AI热点】5月6日AI热点:政府安全评估新机制、OpenAI模型升级与价格战开启
5月6日,AI圈迎来三大关键动态:美国政府与五大AI公司建立模型提前评估机制、OpenAI发布GPT-5.5 Instant提升ChatGPT体验、DeepSeek V4和Kimi K2.6以8倍价格优势冲击闭源模型市场。核心主线:AI安全治理从自愿合作向制度化迈进,同时性能溢价空间被开源模型快速侵蚀。
2026-05-06 21:03:37
379
原创 DeepSeek V4 出来了,我一个 Java 老炮第一时间接进 Spring Boot——附 V3 vs V4 实测对比
DeepSeek V4 在 Java 开发场景中表现优于 V3,尤其在代码生成、长上下文处理及 Java 生态适配方面。V4 支持 1M token 上下文窗口(V3 仅 128K),减少幻觉,提升代码质量。V4-Flash 与 V3 同价但性能更强,V4-Pro 提供接近 GPT-4o 的能力但价格更低。通过 Spring AI 可快速集成 V4 到 Spring Boot,API 兼容 OpenAI 格式,接入成本低。实测显示,V4 生成的代码更完善,如自动添加校验、封装响应体、优化 SQL 查询等。
2026-05-06 00:51:04
367
原创 【大模型提示词工程深度解析:从原理到工业级实践、实践案例】
提示词工程:从理论到实践的AI控制艺术 提示词工程是一门通过精心设计输入文本来引导AI模型输出的技术,其核心在于利用语言模型的概率分布特性。文章系统梳理了提示词工程的发展历程,从早期的模板填充到现代的动态多模态交互,揭示了不同阶段的技术特点: 理论基础:深入解析Transformer架构的注意力机制和上下文学习原理,阐明提示词如何影响模型的输出分布 发展脉络: 前提示词时代(2018-2020):基于BERT的模式匹配 GPT-3革命(2020-2022):涌现上下文学习能力 指令微调时代(2021-202
2026-05-05 11:07:05
428
原创 Docker部署whisper转写模型
本文详细介绍了如何部署whisper-asr-webservice项目,该服务将Whisper语音识别模型封装为HTTP API。提供三种部署方式:1)直接使用预构建Docker镜像;2)通过Docker Compose编排部署;3)从源码自定义构建。部署完成后可通过POST /asr等端点进行语音识别,支持环境变量配置模型大小、默认语言等参数。文章包含具体命令示例、API调用方法和高级配置建议,特别提醒中文识别推荐使用medium或large模型,首次运行需下载模型文件。最后给出了生产环境部署建议和扩展方
2025-08-09 18:57:14
1454
原创 Docker镜像地址
本文提供了多个可用的Docker镜像加速地址(registry-mirrors),包括中国科技大学、网易、DaoCloud等国内镜像源,以及部分国际镜像站点。这些镜像地址可用于加速Docker镜像的下载和更新,用户可根据网络环境选择合适的镜像源配置。完整的JSON格式列表可直接复制使用,适用于Docker配置文件的修改。
2025-08-09 18:08:59
448
原创 冒泡排序、选择排序、计数排序、插入排序、快速排序、堆排序、归并排序JAVA实现
冒泡排序、选择排序、计数排序、插入排序、快速排序、堆排序、归并排序JAVA实现。
2024-11-04 15:37:16
2035
原创 Mqtt协议快速入门Demo
消息队列遥测传输协议MQTT.和HTTP协议不一样,MQTT采用的是二进制数据包。 由3各部分组成:固定头 可变头 消息体。一个入门的java示例demo
2024-10-28 13:46:31
635
原创 ubuntu开机问题解决:/dev/sda3 : clean , ***files , ***blocks
ubuntu开机问题解决:/dev/sda3 : clean , ***files , ***blocks。解决办法:如果是虚拟机可以删除重新弄一个大一点的。还可以进行扩容处理。使用 df -h 或者 fdisk -l 命令可以查看当前磁盘空间。在VMWARE对应虚拟机中磁盘空间选择扩展,空间分配大一点。然后连续按两下回车键Enter即可。
2024-10-21 10:06:12
5208
1
原创 Docker极速入门一文通
Docker自定义文件默认名为 Dockerfile, 也可以使用命令指定目标文件。关键字(大写)描述示例FROM一般是第一条指令。用于指定使用的基础镜像。指定镜像的维护者信息。zs@qq.comRUN镜像构建过程中需要执行的指令。比如在构建过程中需要安装net-tools包:WORKDIR指定镜像的工作目录,默认交互式进入容器时会进入到该命令指定的目录。COPY拷贝文件到镜像中。可以使用容器绝对路径,也可以使用相对于WORKDIR的相对路径ADD拷贝文件到镜像中。
2024-10-10 15:41:47
1840
原创 简易入门:使用Docke 部署一个tomcat服务
启动docker容器后,此时浏览器访问8080端口,访问tomcat显示404,其实服务已经部署好了。只是官方镜像一般是精简版的,所以webapps目录下没有内容。
2024-10-09 17:36:36
577
原创 腾讯云上传pushdocker镜像到镜像仓库
本文以 DockerHub 官方的 Nginx 最新镜像为例,在命令行工具中依次执行以下指令,即可推送该镜像。请将 project-a 及 nginx 依次替换为您实际创建的命名空间名称及镜像仓库名。本文以已成功推送的 Nginx 镜像为例,在命令行中执行以下命令,即可拉取该镜像。您可在本地构建新的容器镜像或从 DockerHub 上获取一个公开镜像用于测试。
2024-10-08 11:38:43
877
原创 微服务服务间调用组件Feign使用介绍、原理、优化技巧
Feign是一个声明式的Web Service客户端。它让微服务之间的调用变得更简单。Feign具有可插拔式的注解支持,包括Feign 注解和JAX-RS注解。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注解的支持,并且也支持Spring WebFlux。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign的基本概念、原理与使用。Feign采用声明式的接口,自动拼接URL、添加参数等工作,简化HTTP客户端的开发。
2023-05-20 15:51:28
1960
1
原创 微服务负载均衡器Ribbon介绍、使用以及原理和源码理解
Ribbon是Netflix开源的客户端负载均衡器,它可以很好的控制HTTP和TCP客户端的行为。Ribbon支持配置客户端添加重试和超时等功能,旨在使客户端更加强健。负载均衡故障检测暂时性错误重试客户端配置化等轮询(RoundRobinRule):轮流选择服务器随机(RandomRule):随机选择服务器重试(RetryRule):在一个配置时间内当选择服务器不成功,则一直尝试该服务器,超过配置时间才尝试其他服务器。
2023-05-17 23:23:16
2032
原创 微服务注册中心Eureka原理到源码
Eureka是Netflix开源的一款用于提供服务注册和发现的产品,它提供了完整的服务注册和发现功能,具有容错性,可伸缩性等特性。Eureka包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务注册服务。各个微服务启动时,会通过Eureka Client向Eureka Server注册自己的信息(例如服务名称、IP地址、端口等)。
2023-05-15 18:31:03
1389
原创 JVM问题排查和垃圾回收机制
JVM的主要内存区有方法区、堆、栈、程序计数器等,堆和方法区是所有线程共享的,其中堆主要用于存储对象实例,是一个显著的可回收内存来源。垃圾回收器的主要工作就是规律的遍历堆区,释放那些不再被使用的对象所占用的内存,使其成为可用内存。其中,[标记-清除]算法会产生内存碎片较严重,而[标记-复制]算法需要双倍的内存空间,所以目前主流的商业虚拟机一般采用[标记-整理]算法。Java垃圾回收主要是利用垃圾回收器对堆内存进行回收,回收那些不再被使用的对象所占用的内存,以实现内存的再利用。
2023-05-12 19:44:15
1302
原创 线程池的介绍、原理、监控运维、框架使用场景案例
JDK 提供的线程池功能较基础,开源框架 Executors 在此基础上做了许多封装,更加易用。主要有:- newCachedThreadPool:创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。- newFixedThreadPool: 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。- newScheduledThreadPool: 创建一个定长线程池,支持定时及周期性任务执行。- newSingleThreadExecuto
2023-05-03 20:19:47
1552
原创 synchronized的偏向、轻量、重量级锁
Synchronized实现同步的方式有三种:偏向锁、轻量级锁、重量级锁。本文会从理论和代码实践两方面阐述三种锁的实现细节和原理。
2023-05-02 22:47:16
1333
1
原创 JAVA并发万字长文从ReentrantLock到juc框架
ReentrantLock 是通过一个volatile 的变量和一个 FIFO 的队列来实现的。该 volatile 变量表示当前获得锁的线程,FIFO 队列用来存储等待锁的线程。具体实现方式是:当一个线程获取锁时,将当前线程设置为 volatile 变量的值。如果其他线程试图获取该锁,则会加入 FIFO 队列的尾部,并标记为等待状态。当持有锁的线程释放锁时,它会唤醒 FIFO 队列头部的线程,这个线程继续执行并获取锁。ReentrantLock 是可重入锁,意味着同一个线程可以多次获取这把锁。这是
2023-05-02 20:53:28
1325
原创 volatile关键字原理的使用介绍和底层原理解析和使用实例
volatile 关键字的主要作用是保证可见性和有序性,禁止编译器优化。保证可见性:当一个变量被声明为 volatile 之后,每次读取这个变量的值都会从主内存中读取,而不是从缓存中读取,这就保证了不同线程对这个变量操作的可见性。有序性:volatile 关键字保证了不同线程对一个 volatile 变量的读写操作的有序性。禁止编译器优化:编译器会对代码进行各种优化来提高性能,但是这些优化也可能让同步代码失效。volatile 关键字告诉编译器不要对这段代码做优化,从而避免一些不正确的优化。
2023-05-02 17:11:46
1777
原创 ThreadLocal的使用介绍和底层原理解析和开源框架的使用实例
ThreadLocal是一个线程内部的数据存储类,它可以为每个线程提供独立的变量副本,不同线程间的变量无法相互访问和修改。这避免了每个线程都要维护一套独立变量的麻烦,并且也减少了线程之间不必要的数据争用。ThreadLocal适用于这样的场景:每个线程需要有自己单独的实例,而不是共享实例。例如,在 web 应用中,每个请求被一个新的线程处理,每个线程需要有自己的变量实例。
2023-05-02 15:07:43
2251
原创 ConcurrentHashMap的使用介绍和底层原理解析和开源框架的使用实例
ConcurrentHashMap是JDK1.5提供的线程安全的HashMap,它允许多个线程并发访问哈希表,并发修改map中的数据而不会产生死锁。ConcurrentHashMap适用于高并发的环境下,可以替代synchronized实现的同步HashMap。ConcurrentHashMap的并发度很高,吞吐量也很高。ConcurrentHashMap通过锁分段技术,实现高度的并发访问,大大提高了HashMap的吞吐量,是高并发环境下一个很好的选择。
2023-05-01 23:01:50
1758
原创 【面试长文】HashMap的数据结构和底层原理以及在JDK1.6、1.7和JDK8中的演变差异
JDK1.8引入了红黑树,降低了链表过长的可能性,提高了效率。JDK1.8使用synchronized+CAS控制并发扩容,避免锁定整个table,提高了并发度。JDK1.8对null key做了优化,null键值对存储在table[0]位置。三个版本的HashMap都采用链表散列结构,通过key的hashCode映射到table,如果hash冲突就采用链表存储。扩容的阈值loadFactor在三个版本都是0.75,阈值size和table大小的乘积超过loadFactor时触发扩容。
2023-04-30 13:51:09
1526
原创 CopyOnWriteArrayList 的底层原理与多线程注意事项
CopyOnWriteArrayList 是 Java 集合框架中非常实用的线程安全 List 集合,通过读写分离的思想,保证了在高并发读多写少的情况下的数据安全和性能。但是,由于每次写操作需要复制整个数组,所以对内存的消耗较大,同时在迭代过程中也可能会存在一些数据不一致的问题。因此,在使用 CopyOnWriteArrayList 时,需要根据实际业务需求选择合适的集合类型,避免出现不必要的问题。
2023-04-30 11:46:23
2941
2
原创 Java集合框架与ArrayList、LinkedList的区别
在集合框架中,ArrayList和LinkedList是两个最基本的数据结构。LinkedList是一个双向链表,表示一个有序的集合,可以包含重复的元素。ArrayList是一个动态数组,表示一个有序的集合,可以包含重复的元素。Java集合框架是Java平台的一部分,它包含了一组接口、实现类和算法,可以用于存储和处理数据。下面给出一个使用 ArrayList 和 LinkedList 的示例代码,包括元素的插入、删除和访问操作。Java集合框架提供了丰富的算法和数据结构,可以满足各种不同的需求。
2023-04-30 11:29:21
2140
原创 Java中的String、StringBuffer和StringBuilder
String、StringBuffer 和 StringBuilder 都是处理字符串的类型,但是它们之间有很大的不同。String 是不可变的,而 StringBuffer 和 StringBuilder 是可变的。StringBuffer 和 StringBuilder 类似,但是 StringBuffer 是线程安全的,而 StringBuilder 不是。如果你需要对字符串进行频繁的修改操作,并且在多线程环境中使用,那么就应该使用 StringBuffer;
2023-04-30 11:16:45
1360
原创 消息队列如何保证消息可靠性传输
在本文中,我们主要介绍了持久化存储、消息确认机制、重试机制和幂等性处理等机制,以及使用 JAVA 语言和 Apache Kafka、RabbitMQ 进行代码实践的示例。通过上述机制的支持和实践,可以保证消息队列系统的可靠性和稳定性,为各大互联网公司提供高效、稳定的消息传输服务。
2023-04-30 11:07:56
3593
原创 RocketMQ 底层实现原理
在 RocketMQ 中,消息的发送过程可以分为三个步骤:1. 生产者发送消息到 Broker;2. Broker 将消息存储到磁盘,并将消息持久化到 CommitLog 和 IndexFile 中;3. 消费者从 Broker 拉取消息并进行消费。
2023-04-30 10:59:16
2874
原创 kafka的push、pull分别有什么优缺点
在 Kafka 中,生产者使用 push 模式将消息推送给 Kafka 集群,而消费者则使用 pull 模式从 Kafka 集群中拉取消息。本文对 Kafka 的 push 和 pull 两种模式进行比较,分析其优缺点。Pull 模式是 Kafka 新增的方式,使用该模式时,消费者可以自主选择从哪个分区开始拉取消息,并可以自主控制拉取消息的速度。Kafka 中为消费者维护着一个 offset,表示消费者已经消费的消息序号,当消费者拉取消息时,Kafka 会返回该消费者还没有消费的消息。
2023-04-29 15:58:33
3744
1
原创 InnoDB如何实现事务、undo log、redo log、binlog
当一个事务开始后,会在内存中为其分配一块undo log,并在该事务执行修改数据表之前将相关数据先拷贝到undo log中。同时,InnoDB还利用了多版本并发控制(MVCC)来实现数据的隔离性。主从复制时,从库会读取主库的binlog事件来重放数据的更改,实现数据一致性。redo log是指数据库系统执行修改操作时所记录的日志,它的主要作用是确保当数据库崩溃时不会丢失数据更新操作。InnoDB是MySQL的默认存储引擎,它使用多版本并发控制(MVCC)和锁机制来实现事务。
2023-04-26 15:31:43
967
mysql读写锁演示案例
2019-10-23
支付宝账户体系架构支付宝账户体系、支付宝整体架构、资金流和信息流(业务流)的详细介绍
2018-06-11
java8帮助文档中文版API
2018-05-15
maven构建多模块项目源码实例
2016-11-21
springMVC4-rest-jackson-jsonview-annotation.zip
2016-11-19
Zookeeper数据节点可视化查看工具
2018-11-29
Extjs中文API(脚本娃娃 (Ext4.1.0 Doc中文版 V1.0.0 Beta))
2014-07-12
JAVA面试八股文.pptx
2021-09-22
个推Demo-APP
2016-07-15
开发API帮助文档集结(.chm)
2013-12-11
W3SCHOOL离线api.chm
2014-07-08
自动生成mybatis映射文件工具
2018-09-14
spring-batch教程.pdf
2017-09-21
Git 64 bit
2017-10-11
常用正则表达式
2013-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅