- 博客(20)
- 收藏
- 关注
原创 JAVA并发编程——共享模型之工具
本文介绍了线程池的核心概念及Java中的实现方式。首先阐述了线程池的必要性:减少内存占用和线程数量,通过重用线程提高效率。随后详细解析了ThreadPoolExecutor的构造参数、工作流程和四种拒绝策略,并对比了三种常见线程池(FixedThreadPool、CachedThreadPool、SingleThreadExecutor)的特点及适用场景。文章还涵盖了任务提交、线程池关闭方法,以及任务调度线程池的使用技巧,包括scheduleAtFixedRate和scheduleWithFixedDela
2025-08-24 21:42:31
794
原创 JAVA并发编程——共享模型之无锁
本文介绍了Java并发编程中的无锁实现方法,重点讲解了CAS(Compare-And-Swap)机制及其应用。文章首先通过取款示例展示了线程安全问题,对比了加锁和CAS两种解决方案。详细解析了CAS的工作原理,强调其必须配合volatile保证可见性。随后介绍了原子整数、原子引用的使用方式,并通过ABA问题引出AtomicStampedReference和AtomicMarkableReference的版本控制机制。最后简要提及原子数组的使用场景。全文着重阐述了无锁并发在高性能场景下的优势,以及如何通过CA
2025-08-24 16:40:45
965
原创 JAVA并发编程——共享模型之内存
本文深入解析Java内存模型(JMM)的三大特性:原子性、可见性与有序性。通过案例分析展示多线程环境下可见性问题(如循环无法终止现象),提出使用volatile关键字解决。详细讲解指令重排原理及volatile底层实现机制(内存屏障),并分析经典双检锁单例模式的问题及volatile解决方案。最后介绍happens-before规则,阐明其对线程间共享变量操作的约束作用。全文结合代码示例与图示,系统性地阐述JMM核心概念及其在多线程编程中的应用。
2025-08-24 15:42:50
683
原创 JAVA并发编程——共享模型之管程
Java多线程同步基础 本文介绍了多线程共享资源带来的线程安全问题,重点分析了synchronized关键字的实现原理和使用方式。主要内容包括: 共享问题:多线程访问共享变量时,指令交错导致竞态条件,造成数据不一致。 synchronized解决方案:通过对象锁实现临界区互斥访问,保证原子性,类比房间和钥匙机制。 方法级同步:区分实例锁和类锁,通过"线程八锁"案例说明不同锁对象的并发效果。 本文是Java线程同步的基础篇,后续将深入交互、安全等高级主题。
2025-08-24 14:31:41
810
原创 JAVA并发编程——Java线程
本文是Java多线程编程的基础篇,系统讲解了进程与线程的核心概念及实际应用。主要内容包括:进程与线程的区别与联系、并行与并发的本质区别、多线程在异步调用和效率提升中的应用场景。详细介绍了三种创建线程的方法(Thread、Runnable、FutureTask),并对比了它们的优缺点。文章还提供了查看进程线程的实用命令,解析了线程运行的底层原理(栈帧、上下文切换)。最后对常用线程方法(run/start/sleep/yield等)进行了深入讲解,帮助读者掌握多线程编程的基础知识。(14
2025-08-24 12:51:13
779
原创 深入理解 JVM——内存模型与并发
本文主要介绍了Java内存模型(JMM)及其关键特性。首先分析了硬件层面高速缓存带来的效率提升与一致性问题,引出内存模型的概念。随后详细阐述了JMM的核心结构:主内存与工作内存的交互机制,包括8种原子操作及操作规则。重点讲解了volatile变量的两大特性——可见性与禁止指令重排序,并分析了其对long/double类型的特殊处理。最后从原子性、可见性和有序性三个维度,结合synchronized和final等关键字,系统性地总结了JMM如何保证并发编程的安全性。文章通过对比硬件架构与JVM实现,深入剖析了
2025-08-24 10:39:08
614
原创 深入理解 JVM——类与字节码执行
本文深入解析了Java虚拟机的类文件结构与类加载机制。主要内容包括: 类文件结构、类加载机制、字节码执行引擎。本文系统阐述了JVM处理类文件的核心机制,为理解Java平台无关性提供了理论基础。
2025-08-24 10:20:18
586
原创 深入理解 JVM——垃圾收集器
程序计数器、虚拟机栈、本地方法栈3个区域随线程而生/灭,每一栈帧中分配多少内存基本是在类结构确定下来时就已知的,这几个区域的内存分配和回收都具备确定性,方法或线程结束后内存自然就随着回收了。而Java堆和方法区显然是不确定的,只有运行期间,才能知道程序创建哪些对象,这部分内存的分配和回收是动态的。
2025-08-24 09:53:07
668
原创 深入理解JVM——Java内存区域
虚拟机具有自动内存管理机制。本章围绕Java虚拟机内存的各个区域展开,了解这些区域的作用、服务对象以及其中可能产生的问题,是了解该机制的第一步。
2025-08-24 09:24:34
962
原创 MySQL精进之路——查询性能优化
MySQL查询性能优化精要 本文系统讲解了MySQL查询性能优化的核心方法。首先指出查询优化的本质是减少子任务执行时间和次数,重点关注数据访问优化。通过分析响应时间、扫描行数和返回行数等指标,识别慢查询根源。主要优化策略包括: 减少不必要的数据访问(避免SELECT*、使用LIMIT等) 合理使用索引(覆盖索引、优化访问类型) 重构查询方式(分解复杂查询、切分大查询、应用层关联) 理解查询执行流程(解析→优化→执行) 文章还详细介绍了MySQL查询优化器的局限性和优化提示(hint)的使用技巧,为DBA和开
2025-08-23 19:13:24
1035
原创 MySQL精进之路——创建高性能的索引
本文介绍了MySQL索引的基础知识、类型及高性能索引策略。主要内容包括: 索引基础:索引是帮助存储引擎快速查找记录的数据结构,B-Tree是最常见索引类型,支持全键值、范围查询等,但需遵循最左前缀原则。 索引类型: B-Tree索引:适用于大多数查询场景,但有限制条件 哈希索引:仅支持精确匹配,Memory引擎默认使用 全文索引:用于文本关键词搜索 空间索引:支持地理数据 高性能索引策略: 避免在索引列上使用函数或表达式 合理使用前缀索引优化长字段 多列索引要考虑列顺序和选择性 聚簇索引影响数据存储方式,需
2025-08-23 18:42:59
938
原创 MySQL精进之路——Schema与数据类型优化
本文介绍了MySQL数据库设计中的数据类型选择和schema设计优化。主要内容包括: 数据类型选择原则:更小的更好、简单为佳、避免NULL,并详细比较了整数、实数、字符串、日期时间等类型的适用场景。 schema设计陷阱:避免过多列和关联、谨慎使用ENUM和NULL,注意MyISAM与InnoDB的行结构转换开销。 范式与反范式的权衡:范式化减少冗余但增加关联,反范式化提升查询性能但增加维护成本,建议根据查询模式混合使用。 特别强调了标识符类型选择、时间类型存储差异以及大文本字段处理的注意事项。
2025-08-23 18:05:34
719
原创 MySQL精进之路——MySQL架构
本文介绍了MySQL的核心架构与并发控制机制,重点解析了事务特性和存储引擎。主要内容包括: MySQL逻辑架构:分为连接处理层、服务器层(查询解析/优化)和存储引擎层,各层职责明确; 并发控制:通过读写锁和锁粒度(表锁/行锁)实现数据安全与性能平衡; 事务ACID特性:详述隔离级别(含默认的REPEATABLE READ)、死锁处理及事务日志优化; MVCC机制:InnoDB通过版本号控制实现非阻塞读,解决幻读问题; 存储引擎对比:强调InnoDB作为默认引擎的事务支持特性,并说明其聚簇索引结构。
2025-08-23 17:50:57
660
原创 Netty核心指南——架构与应用
本文介绍了Netty的高性能网络框架设计,重点分析了其架构特点、多线程编程实践和性能优化策略。Netty采用Reactor模式实现异步非阻塞IO,通过内存池、无锁化编程等技术提升性能。文章详细探讨了Netty的可靠性设计(如心跳检测、优雅停机)和可扩展性,并深入讲解了Java多线程在Netty中的应用,包括同步机制、volatile使用、CAS指令等。最后分析了RPC性能瓶颈,指出传统同步IO和序列化问题是主要性能瓶颈,为构建高性能网络应用提供了实践指导。
2025-08-23 00:01:50
1068
原创 Netty核心指南——协议与通信框架
本文介绍了基于Netty的私有协议栈设计与实现,主要内容包括: 私有协议特点:内部使用、基于TCP/IP、灵活定制,包含消息编解码、链路管理等控制指令。 协议设计: 采用长连接全双工通信,支持双向交互 定义消息头(校验码、长度、会话ID等)和消息体结构 提供心跳机制、重连、重复登录保护等可靠性设计 基于IP白名单实现安全认证 关键实现: 消息编解码器处理序列化/反序列化 握手认证流程(客户端发起请求,服务端校验) 心跳检测机制(定时发送Ping,超时重连) 支持业务扩展和拦截器机制 该协议栈适用于分布式系统
2025-08-22 23:25:06
1091
原创 Netty核心指南——TCP通信与数据处理
本文介绍了Netty中TCP粘包/拆包问题的解决方案及编解码技术应用。首先分析了TCP粘包/拆包的原因及四种解决策略,重点讲解了使用LineBasedFrameDecoder、DelimiterBasedFrameDecoder和FixedLengthFrameDecoder三种解码器解决半包问题的方法。随后对比了Java序列化的三大缺陷,并介绍了Protobuf、Thrift和JBoss Marshalling三种主流编解码框架的特点。文章通过具体示例展示了如何在Netty中实现高效的网络通信。
2025-08-22 22:50:24
691
原创 Netty核心指南——Java IO 与 NIO基础
本文介绍了Linux网络I/O模型和Java网络编程的几种实现方式。主要内容包括: Linux的五种I/O模型、传统BIO编程模型、伪异步I/O模型、NIO编程。文章通过对比不同I/O模型的特点,为网络编程提供了技术选型参考。后续还将介绍AIO编程和Netty框架的选择理由。
2025-08-22 22:03:26
992
原创 TCP/IP 系列讲解——TCP 深入机制
TCP协议是传输层核心协议,提供可靠、面向连接的传输服务。其可靠性通过分段传输、超时重传、确认机制、校验和、流量控制、有序重排和去重机制实现。针对交互数据流(如Telnet)和成块数据流(如FTP),TCP分别采用捎带ACK/Nagle算法和滑动窗口机制进行优化。流量控制通过接收窗口动态调整发送速率,同时设有四大定时器(重传、坚持、保活、2MSL)保障连接可靠性。拥塞控制采用慢开始、拥塞避免、快重传和快恢复算法,通过拥塞窗口动态调整发送速率,平衡网络负载。这些机制共同确保TCP在复杂网络环境下的高效稳定传输
2025-08-22 09:36:44
956
原创 TCP/IP 系列讲解——协议栈分层详解
MSS(最大报文段长度):TCP 层可发送的最大数据长度,TCP协议在建立连接的时候通常要协商双方的MSS值,一般情况下,MSS = MTU - IP头(20) - TCP头(20),为 1460 字节。的运输层协议:进程的每个输出操作都会产生一个UDP数据报,并组装成一份待发送的IP数据报,这与面向字节流的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。局域网中的ARP攻击是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量,使网络阻塞。
2025-08-21 21:46:59
1014
原创 TCP/IP 系列讲解——互联网协议入门
本文概述了互联网协议的五层模型及其工作原理。五层模型从底层到高层依次为:实体层(物理连接)、链接层(数据帧与MAC地址)、网络层(IP地址与子网划分)、传输层(端口通信)和应用层(数据格式)。关键协议包括以太网(MAC地址与广播)、IP(网络地址与路由)、ARP(IP转MAC)、UDP/TCP(端口通信)。文章通过实例说明数据包如何跨子网传输,并介绍了用户上网所需的静态IP配置参数。该分层架构实现了从硬件到应用的完整通信流程。
2025-08-21 21:16:36
720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅