- Java IO 与 NIO:从阻塞模型到零拷贝的演进同一个"读文件"的需求,用 FileInputStream 和 FileChannel 写出来的代码差别不大,但在高并发场景下吞吐可能差一个数量级。原因不在 API 本身,而在背后的线程模型与数据拷贝次数。本文从字节流与字符流的分层讲起,逐步过渡到 NIO 的三大组件、Selector 多路复用,最后落到 mmap 与 sendfile ... Java IO 与 NIO:从阻塞模型到零拷贝的演进同一个"读文件"的需求,用 FileInputStream 和 FileChannel 写出来的代码差别不大,但在高并发场景下吞吐可能差一个数量级。原因不在 API 本身,而在背后的线程模型与数据拷贝次数。本文从字节流与字符流的分层讲起,逐步过渡到 NIO 的三大组件、Selector 多路复用,最后落到 mmap 与 sendfile ...
- Java 内存模型定义了多线程间的可见性规则。涵盖主内存与工作内存的交互协议(read、load、use、assign、store、write),重点分析 happens-before 规则的八种场景,说明 volatile、锁、线程启动与终止、传递性等规则的内存语义,以及对并发编程的指导意义。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原因和演进脉络。通过对比不同版本的特性变化... Java 内存模型定义了多线程间的可见性规则。涵盖主内存与工作内存的交互协议(read、load、use、assign、store、write),重点分析 happens-before 规则的八种场景,说明 volatile、锁、线程启动与终止、传递性等规则的内存语义,以及对并发编程的指导意义。 文章从技术背景和发展历程入手,帮助读者理解该技术的产生原因和演进脉络。通过对比不同版本的特性变化...
- 一直觉得ThreadLocal内存泄漏是面试题,直到上季度GC日志里老年代出现规律的锯齿,才知道它离生产事故并不远。先说结构:每个Thread内部有一个ThreadLocalMap,Entry的key是弱引用指向ThreadLocal对象,value是强引用。当外部不再持有ThreadLocal时,key会被GC回收变成null,但value还被Entry强引用着,只要线程活着就释放不掉。业... 一直觉得ThreadLocal内存泄漏是面试题,直到上季度GC日志里老年代出现规律的锯齿,才知道它离生产事故并不远。先说结构:每个Thread内部有一个ThreadLocalMap,Entry的key是弱引用指向ThreadLocal对象,value是强引用。当外部不再持有ThreadLocal时,key会被GC回收变成null,但value还被Entry强引用着,只要线程活着就释放不掉。业...
- 死锁是并发程序的噩梦。涵盖死锁产生的四个必要条件(互斥、持有等待、不可剥夺、循环等待),演示用 jstack 命令分析线程转储定位死锁的方法,介绍 Arthas 的 thread -b 命令、jconsole 图形化检测手段,以及预防死锁的加锁顺序约定与锁超时方案。 死锁是并发程序的噩梦。涵盖死锁产生的四个必要条件(互斥、持有等待、不可剥夺、循环等待),演示用 jstack 命令分析线程转储定位死锁的方法,介绍 Arthas 的 thread -b 命令、jconsole 图形化检测手段,以及预防死锁的加锁顺序约定与锁超时方案。
- 前端 HTML 语义化与文档结构HTML 不只是让页面“看起来正确”的标记语言,也描述了内容之间的关系和控件的用途。语义清楚的文档更容易被浏览器、搜索引擎、辅助技术和后续维护者理解。页面结构越复杂,语义带来的价值越明显。 一、用元素表达内容角色标题、导航、主要内容、侧栏和页脚应使用对应的结构元素。页面主内容通常使用一个 main,独立文章可以用 article,相关分组可以用 sectio... 前端 HTML 语义化与文档结构HTML 不只是让页面“看起来正确”的标记语言,也描述了内容之间的关系和控件的用途。语义清楚的文档更容易被浏览器、搜索引擎、辅助技术和后续维护者理解。页面结构越复杂,语义带来的价值越明显。 一、用元素表达内容角色标题、导航、主要内容、侧栏和页脚应使用对应的结构元素。页面主内容通常使用一个 main,独立文章可以用 article,相关分组可以用 sectio...
- 前端 HTML 语义化与文档结构HTML 不只是让页面“看起来正确”的标记语言,也描述了内容之间的关系和控件的用途。语义清楚的文档更容易被浏览器、搜索引擎、辅助技术和后续维护者理解。页面结构越复杂,语义带来的价值越明显。 一、用元素表达内容角色标题、导航、主要内容、侧栏和页脚应使用对应的结构元素。页面主内容通常使用一个 main,独立文章可以用 article,相关分组可以用 sectio... 前端 HTML 语义化与文档结构HTML 不只是让页面“看起来正确”的标记语言,也描述了内容之间的关系和控件的用途。语义清楚的文档更容易被浏览器、搜索引擎、辅助技术和后续维护者理解。页面结构越复杂,语义带来的价值越明显。 一、用元素表达内容角色标题、导航、主要内容、侧栏和页脚应使用对应的结构元素。页面主内容通常使用一个 main,独立文章可以用 article,相关分组可以用 sectio...
- Stream API 实战:惰性求值、短路与并行流的正确用法Stream 把"做什么"和"怎么做"分开,写出来的代码更接近业务描述。但它的执行模型是惰性的,很多看似直观的写法会带来隐藏的遍历次数或装箱开销,并行流更不是"加上 parallel 就变快"。本文从流水线的三个阶段讲起,配合可运行的例子说明求值时机、短路行为、收集器选择,以及并行流真正适用的条件。 流水线的三个阶段一个 Stre... Stream API 实战:惰性求值、短路与并行流的正确用法Stream 把"做什么"和"怎么做"分开,写出来的代码更接近业务描述。但它的执行模型是惰性的,很多看似直观的写法会带来隐藏的遍历次数或装箱开销,并行流更不是"加上 parallel 就变快"。本文从流水线的三个阶段讲起,配合可运行的例子说明求值时机、短路行为、收集器选择,以及并行流真正适用的条件。 流水线的三个阶段一个 Stre...
- Java 8 引入的 Stream API 是处理集合数据的利器,用好了能让代码简洁优雅,用不好反而让人看不懂。本文带你从零开始掌握 Stream 流的核心用法,涵盖常用操作、实战案例和避坑指南,适合日常开发查阅。 一、什么是 Stream?Stream 是对集合(Collection)的增强,它允许你以声明式的方式处理数据。简单说,以前遍历集合要写 for 循环,现在可以用链式调用一步到位... Java 8 引入的 Stream API 是处理集合数据的利器,用好了能让代码简洁优雅,用不好反而让人看不懂。本文带你从零开始掌握 Stream 流的核心用法,涵盖常用操作、实战案例和避坑指南,适合日常开发查阅。 一、什么是 Stream?Stream 是对集合(Collection)的增强,它允许你以声明式的方式处理数据。简单说,以前遍历集合要写 for 循环,现在可以用链式调用一步到位...
- 注解实现数据脱敏 注解实现数据脱敏
- 过去十年,B2B 企业的数字化大多从订货平台起步:把电话、传真、业务员跑单变成线上订单,解决了交易在线化的问题。但当行业进入存量竞争,单一订货平台越来越力不从心 —— 订单能上线,上下游却连不起来;交易有数据,决策却依然靠经验。越来越多的企业意识到,B2B 电商的下半场,不是把订单系统做得更大,而是从订货平台走向产业链协同平台。行业 QAQ1:订货平台和产业链协同平台,本质区别是什么?A1:... 过去十年,B2B 企业的数字化大多从订货平台起步:把电话、传真、业务员跑单变成线上订单,解决了交易在线化的问题。但当行业进入存量竞争,单一订货平台越来越力不从心 —— 订单能上线,上下游却连不起来;交易有数据,决策却依然靠经验。越来越多的企业意识到,B2B 电商的下半场,不是把订单系统做得更大,而是从订货平台走向产业链协同平台。行业 QAQ1:订货平台和产业链协同平台,本质区别是什么?A1:...
- Java 25 来了:这个 LTS 版本值得你升级的 8 个理由2025 年 9 月 16 日,Java 迎来了最新的长期支持版本(LTS)——JDK 25。这也是自 JDK 21 之后时隔两年的又一个里程碑版本,包含 18 项 JEP 增强。社区里那句老话"你发任你发,我用 Java 8",是时候改改了。 前言:为什么是 Java 25?Java 从 JDK 17 开始确立"每两年一个 L... Java 25 来了:这个 LTS 版本值得你升级的 8 个理由2025 年 9 月 16 日,Java 迎来了最新的长期支持版本(LTS)——JDK 25。这也是自 JDK 21 之后时隔两年的又一个里程碑版本,包含 18 项 JEP 增强。社区里那句老话"你发任你发,我用 Java 8",是时候改改了。 前言:为什么是 Java 25?Java 从 JDK 17 开始确立"每两年一个 L...
- 前言长期以来,Java 开发者面对高并发场景时,一直被一个难题困扰:线程太贵了。传统 Java 线程是操作系统线程(Platform Thread)的直接封装,一个线程默认占用 1MB 左右的栈内存。当你需要处理 10 万个并发请求时,创建 10 万个 OS 线程不仅内存扛不住,上下文切换的开销也会让 CPU 苦不堪言。这就是为什么过去几年响应式编程(WebFlux、RxJava)和异步框... 前言长期以来,Java 开发者面对高并发场景时,一直被一个难题困扰:线程太贵了。传统 Java 线程是操作系统线程(Platform Thread)的直接封装,一个线程默认占用 1MB 左右的栈内存。当你需要处理 10 万个并发请求时,创建 10 万个 OS 线程不仅内存扛不住,上下文切换的开销也会让 CPU 苦不堪言。这就是为什么过去几年响应式编程(WebFlux、RxJava)和异步框...
- 摘要:现在 Agent 框架百花齐放,AutoGen、LlamaIndex、LangChain 各有侧重。AgentScope 是阿里通义实验室推出的开源多智能体框架,主打工程化、分布式、可观测、原生人机协同,从原型 Demo 到企业级多智能体服务一套打通。本文从定位、核心架构、关键特性、上手示例、选型对比、落地踩坑几个维度展开,适合想做 Multi-Agent 业务落地的开发者阅读。 前言... 摘要:现在 Agent 框架百花齐放,AutoGen、LlamaIndex、LangChain 各有侧重。AgentScope 是阿里通义实验室推出的开源多智能体框架,主打工程化、分布式、可观测、原生人机协同,从原型 Demo 到企业级多智能体服务一套打通。本文从定位、核心架构、关键特性、上手示例、选型对比、落地踩坑几个维度展开,适合想做 Multi-Agent 业务落地的开发者阅读。 前言...
- 线程池几乎是大厂面试的必考点,也是线上问题的高发地。这篇文章不讲 API 怎么调,只讲原理、坑和排查手段。 一、为什么需要线程池每来一个任务就 new Thread() 有三个致命问题:创建销毁开销大:线程栈默认 1MB,频繁创建会加剧 GC 与上下文切换;无法控制并发量:流量突增时线程数可能被打到几千个,直接拖垮机器;缺少统一管理:没有队列、没有拒绝策略、没有监控指标。线程池本质是一个生产... 线程池几乎是大厂面试的必考点,也是线上问题的高发地。这篇文章不讲 API 怎么调,只讲原理、坑和排查手段。 一、为什么需要线程池每来一个任务就 new Thread() 有三个致命问题:创建销毁开销大:线程栈默认 1MB,频繁创建会加剧 GC 与上下文切换;无法控制并发量:流量突增时线程数可能被打到几千个,直接拖垮机器;缺少统一管理:没有队列、没有拒绝策略、没有监控指标。线程池本质是一个生产...
- 写给刚接触 Java 的你 —— 一篇简单但完整的入门博客。 一、Java 是什么?Java 是一门面向对象的编程语言,最大的特点是"一次编写,到处运行"(Write Once, Run Anywhere)。它的运行原理很简单:你写的 .java 文件会被编译成 .class 字节码,然后由 JVM(Java 虚拟机) 在任意操作系统上执行。这就是为什么 Java 二十多年了还经久不衰 ——... 写给刚接触 Java 的你 —— 一篇简单但完整的入门博客。 一、Java 是什么?Java 是一门面向对象的编程语言,最大的特点是"一次编写,到处运行"(Write Once, Run Anywhere)。它的运行原理很简单:你写的 .java 文件会被编译成 .class 字节码,然后由 JVM(Java 虚拟机) 在任意操作系统上执行。这就是为什么 Java 二十多年了还经久不衰 ——...
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签