• 欢迎访问 winrains 的个人网站!
  • 本网站主要从互联网整理和收集了与Java、网络安全、Linux等技术相关的文章,供学习和研究使用。如有侵权,请留言告知,谢谢!

1 基础

1.1 源码

JDK源码分析

1.2 String

String hashCode 方法为什么选择数字31作为乘子 String直接赋值与通过new创建的区别 Java中String类型是否有长度限制

1.3 枚举

深入理解 Java 枚举 深入理解Java枚举类型 Java 枚举知识点
用好 Java 枚举不简单

1.4 注解

深入理解Java注解类型 Java Annotation(注解)

1.5 集合

详解并发下的HashMap以及JDK8的优化 HashMap 实现原理及源码分析 深入理解HashMap(1):从源头说起
深入理解HashMap(2):关键源码逐行分析之hash算法 深入理解HashMap(3):关键源码逐行分析之构造函数 深入理解HashMap(4):关键源码逐行分析之resize扩容
深入理解HashMap(5):关键源码逐行分析之put 谈谈集合:Stream Api 谈谈集合:Queue
谈谈集合:Map HashMap 源码中这些常量的设计目的

1.6 Servlet

Servlet 工作原理详解 Servlet 工作原理解析 JavaWeb Servlet基础

1.7 JavaBean与POJO

什么是POJO,JavaBean java对象 POJO和JavaBean的区别 什么是JavaBean

1.8 EJB

理解EJB 为什么要使用EJB 图解EJB的体系结构
J2EE基础之EJB全面了解 JavaEE完整体系架构 Java魔法类:Unsafe应用解析

1.9 其它

理解Java RMI Java语法糖 别再if/else走天下
聊一聊 JAR 文件和 MANIFEST.MF Java 异常的十个关键知识点

2 内部类

搞懂 Java 内部类 深入理解 Java 内部类 彻底了解 Java 内部类
Java 内部类的作用 Java 内部类解析

3 泛型

Java 泛型之类型擦除 Java 泛型全解 Java泛型中的通配符
深入理解Java泛型 深入探索Java泛型的本质 聊一聊 JAVA 泛型中的通配符 T,E,K,V,?
Java 泛型解析

4 序列化

Java序列化与反序列化 Java中的关键字transient Java transient关键字使用示例
深入理解 Java 序列化 Java序列化

5 I/O与流

Java I/O模型从BIO到NIO和Reactor模式 Java NIO入门 深入分析 Java I/O 的工作机制
由浅入深体验 Stream 流 基于 Java NIO 实现简单的 HTTP 服务器 Java NIO(1):缓冲区
JAVA NIO(2):文件通道 Java NIO(3):套接字通道 Java NIO(4):选择器
超强的 Stream 流操作

6 反射

Java反射的作用 深入理解Java类型信息(Class对象)与反射机制 深入理解 Java 反射和动态代理
Java 反射原理

7 动态代理

Java 中的代理模式及动态代理 Java 动态代理小结 Java动态代理模式介绍
Java代理模式:静态代理与动态代理 Java动态代理模式的奥秘 Java JDK 动态代理(AOP)使用及实现原理分析
深入理解 Java 反射和动态代理 Java 动态代理

8 深拷贝与浅拷贝

Java深浅拷贝 Java的深拷贝和浅拷贝

9 线程池

Java 线程池原理分析 深度解读 java 线程池设计思想及源码实现 深入学习Java线程池
Java线程池Executor框架详解 Java线程池的使用和原理 Java 线程池原理与源码分析
newFixedThreadPool线程池导致的内存飙升问题 Java 线程池解析 线程池原理分析

10 并发

10.1 线程

10.1.1 多线程

深入理解多线程(一):Synchronized的实现原理 深入理解多线程(二):Java的对象模型 深入理解多线程(三):Java的对象头
深入理解多线程(四):Monitor的实现原理 深入理解多线程(五):Java虚拟机的锁优化技术 Java 多线程开发关键技术
Thread类源码解读(1):如何创建和启动线程 Thread类源码解读(2):线程状态及常用方法 Thread类源码解读(3):线程中断interrupt
FutureTask源码解析(1):预备知识 FutureTask源码解析(2):深入理解FutureTask 多线程基础

10.1.2 线程同步

Java 线程同步组件 CountDownLatch 与 CyclicBarrier 原理分析 StringBuilder为什么线程不安全

10.1.3 线程安全

Java 线程安全介绍 双重检查锁定与延迟初始化 SimpleDateFormat安全的时间格式化
同步容器Vector并不是所有操作都线程安全

10.1.4 线程通信

Java 线程间通信剖析 线程间的同步与通信(1):同步代码块Synchronized 线程间的同步与通信(2):wait, notify, notifyAll
线程间的同步与通信(3):浅析synchronized的实现原理 线程间的同步与通信(4):Lock 和 Condtion 线程间的同步与通信(5):ReentrantLock源码分析
线程间的同步与通信(6):CountDownLatch源码分析 线程间的同步与通信(7):CyclicBarrier源码分析 线程间的同步与通信(8):Semaphore源码分析
多线程之间通讯

10.2 同步

10.2.1 锁

Java 重入锁 ReentrantLock 原理分析 不可不说的Java“锁”事 Java中的锁:原理、锁优化、CAS、AQS
Java Concurrency Lock Java中的各种锁详细介绍 深入分析 java 8 编程语言规范:Threads and Locks
从ReentrantLock的实现看AQS的原理及应用 Java 锁之乐观锁和悲观锁 Java 自旋锁
Java 锁的状态 一文看懂 Java 锁机制 一文带你彻底理解同步和锁的本质
Java 各种锁介绍 AQS与并发包中锁的实现 ReentrantReadWriteLock 介绍与使用
ReentrantLock 介绍与使用 ReentrantLock 的 Condition 原理解析 Java 锁的深入理解
图解并发包中锁的通用实现 从ReentrantLock的实现看AQS的原理及应用

10.2.2 synchronized

Synchronized及其实现原理 从CPU Cache出发彻底弄懂volatile/synchronized/cas机制 深入理解synchronized底层实现原理
synchronized和volatile原理解析 深入理解Java并发之synchronized实现原理 synchronized原理及其应用

10.2.3 volatile

深入理解volatile关键字 synchronized和volatile原理解析

10.2.4 CAS

Java CAS 原理分析 Java CAS原理剖析 从CPU Cache出发彻底弄懂volatile/synchronized/cas机制

10.2.5 AbstractQueuedSynchronizer(AQS)

AbstractQueuedSynchronizer 原理分析(1):独占/共享模式 AbstractQueuedSynchronizer 原理分析(2):Condition 实现原理 一文看懂JUC之AQS机制
从ReentrantLock的实现看AQS的原理及应用 AbstractQueuedSynchronizer 超详细原理解析 逐行分析AQS源码(1):独占锁的获取
逐行分析AQS源码(2):独占锁的释放 逐行分析AQS源码(3):共享锁的获取与释放 逐行分析AQS源码(4):Condition接口实现
AQS与并发包中锁的实现 AQS 解析与实战

10.2.6 ThreadLocal

正确理解Thread Local的原理与适用场景 ThreadLocal 源码分析及设计原理

10.3 并发

Java并发指南(1):并发基础与Java多线程 Java并发指南(2):深入理解Java内存模型JMM Java并发指南(3):并发三大问题与volatile关键字,CAS操作
Java并发指南(4):Java中的锁 Lock和synchronized Java并发指南(5):JMM中的final关键字解析 Java并发指南(6):Java内存模型JMM总结
Java并发指南(7):JUC的核心类AQS详解 Java并发指南(8):AQS中的公平锁与非公平锁,Condtion Java并发指南(9):AQS共享模式与并发工具类的实现
Java并发指南(10):Java 读写锁 ReentrantReadWriteLock 源码分析 Java并发指南(11):解读 Java 阻塞队列 BlockingQueue Java并发指南(12):深度解读 java 线程池设计思想及源码实现
Java并发指南(13):Java 中的 HashMap 和 ConcurrentHashMap 全解析 Java 并发 图解并发包中锁的通用实现
日常开发中并发与一致性的一些坑 图解并发辅助工具类 Java 并发基础常见面试题总结
Java 并发进阶常见面试题总结

10.4 集合

10.4.1 Map

从ConcurrentHashMap的演进看Java多线程核心技术 ConcurrentHashMap 原理浅析

10.4.2 Queue

BlockingQueue 与 Condition 原理解析 LinkedBlockingQueue 阻塞队列解析 并发队列
图解BlockingQueue阻塞队列

11 Lambda

Lambda表达式介绍 感受lambda之美

12 版本特性

Java 12 新特性概述 Java 11 新特性介绍 Java 10 新特性介绍
Java 9 新特性概述 Java 8 习惯用语(0):函数纯度 Java 8 习惯用语(1):函数式编程
Java 8 习惯用语(2):函数组合与集合管道模式 Java 8 习惯用语(3):传统 for 循环的函数式替代方案 Java 8 习惯用语(4):提倡使用有帮助的编码
Java 8 习惯用语(5):传递表达式的替代方案 Java 8 习惯用语(6):完美的 lambda 表达式 Java 8 习惯用语(7):函数接口
Java 8 习惯用语(8):类型推断 Java 8 习惯用语(9):级联 lambda 表达式 Java 8 习惯用语(10):使用闭包捕获状态
技术精讲:Java 8 Stream API Java 7 语法特性

13 会话

JWT 基础教程 详解 Cookie,Session,Token Java Web 开发必须掌握的三个技术:Token,Cookie,Session
关于token认证 基于token的后台身份验证 企业API接口设计(token、timestamp、sign)之具体实现
Session攻击手段及其安全防御措施 浅谈SAML, OAuth, OpenID和SSO, JWT和Session JSON Web Token绝非银弹
Spring Security 实现 API Token 权限认证 Spring Cloud OAuth2 单点登录使用教程 聊一聊 session和cookie
SpringSession系列:sessionId解析和Cookie读写策略

14 Websocket

Java实现websocket的两种方法 WebSocket协议八问 WebSocket实现Web端即时通信

15 乱码

Java Web乱码问题终极解决方案 常见乱码问题分析和总结 透彻分析Java Web项目乱码问题

16 测试

JUnit 5 简介:Jupiter API JUnit 5 简介:Vintage 和 JUnit Jupiter 扩展模型

17 编码规范

解读阿里巴巴 Java 代码规范之命名风格 解读阿里巴巴 Java 代码规范之代码处理 开发人员必须了解的开发安全规范
Java开发技术规范 Java 编码规范

18 单点登录

单点登录原理与简单实现

19 Tomcat

Tomcat源码分析 Tomcat在Spring Boot中是如何启动的 tomcat架构分析:Session管理
Tomcat 连接数与线程池详解 Tomact8部署在linux下启动很慢详解 Tomcat 系统架构与设计模式工作原理
Tomcat 系统架构与设计模式分析 Tomcat系统架构 初探Tomcat的架构设计
Tomcat 调优 SpringBoot 系列:内嵌 Tomcat 的实现原理解析

20 Mybatis

MyBatis 源码分析 Mybatis数据源和连接池 Mybatis初始化机制解析
Mybatis架构与原理 MyBatis 中 # 与 $ 的区别 SpringBoot 集成MBG「代码生成器」
SpringBoot 集成 MybatisPlus 关于 Mybatis 中 SQL 语句的整理 mybatis-plus/mybatis 自定义 sql 语句、动态 sql
纯手写 Mybatis 框架

21 Redis

了解 Redis 的数据结构和对象系统 Redis HyperLogLog 详解 Redis RDB 持久化详解
Redis AOF 持久化详解 Redis 事件机制详解 Redis 复制过程详解
了解 Redis 内存监控和内存消耗 详解 Redis 内存管理机制和实现 Redis使用教程(1):准备
Redis使用教程(2):入门 Redis使用教程(3):进阶 Redis使用教程(4):Jedis
Redis使用教程(5):高可用 Redis使用教程(6):管理 高可用Redis服务架构分析与搭建
深入学习Redis(1):Redis内存模型 深入学习Redis(2):持久化 深入学习Redis(3):主从复制
深入学习Redis(4):哨兵 深入学习Redis(5):集群 高性能的Redis缓存实践之路
Redis使用方法 Memcached与Redis各自特点 Redis数据结构
快速了解缓存穿透与缓存雪崩 为什么 Redis 选择单线程模型 Redis 发生高延迟的原因分析
Redis Cluster 的数据分片机制 Redis 命令执行过程(上) Redis 命令执行过程(下)
为什么 Redis 快照使用子进程 Redis 面试全攻略 SpringSession系列:存储机制之Redis&Map
Redis 性能优化的 13 条军规

22 Shiro

Shiro 实现 Tomcat 集群的 Session 共享 Shiro 基础教程 Shiro 架构解析
SpringBoot整合Shiro安全框架 SSM整合Shiro实现认证、加密和授权 小而美的Shiro安全框架
SpringBoot2.0 整合 Shiro 框架实现用户权限管理

23 面试

Java面试题全集(上) Java面试题全集(中) Java面试题全集(下)
Java 并发基础常见面试题总结 Java 并发进阶常见面试题总结 Java 集合框架常见面试题总结

24 监测

Java应用监测(1):应用监测技术介绍 Java应用监测(2):Java 命令的秘密 Java应用监测(3):JDK 命令行工具
Java应用监测(4):线上问题排查套路 Java应用监测(5):可视化监测工具 Java应用监测(6):第三方内存分析工具MAT
Java应用监测(7):在线动态诊断神器BTrace Java应用监测(8):阿里诊断工具arthas

25 JSON

fastjson使用详解 Java的最佳JSON解析器:FasterXML/jackson Jackson 快速入门
Jackson 的注解

26 其它

Java内存溢出(OOM)异常完全指南 Java 实现加密数据库连接 精选16个最常用的Java 工具类
Java对象的创建和初始化 使用JNA访问Java外部功能接口 Java后端目前最常用的工具和框架
Arthas – Java 线上问题定位处理的终极利器 开发中遇到的安全性问题解决方法 正确甄别API & REST API & RESTful API & Web Service之间的差异与联系
Java诊断利器Arthas优雅排查生产环境 Java 通过 SSL 连接 MySQL Java神器–JMH & Arthas
了解自带火焰图的 Java 性能分析工具 Async-profiler 为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接 Java 数据持久化系列之池化技术
Java 远程调试的那些事 TestNG 使用详解 validator 自动化校验
项目构建基础:统一结果、统一异常、统一日志 配置 logback Java 常见OOM异常分析
触发类加载的六大时机 手写数据库连接池