各类资讯汇总
写在前面(声明)
声明:这里的各个内容基本都是平时看到的一些觉得有用的文章资讯的链接汇总,里面的内容都不是我的创作!
做个快乐的搬运工!
Java基础
概念
- Java抽象类与接口的区别
- 深入理解Java的接口和抽象类
- 一文带你认识Java8中接口的默认方法
- JDK8开始引入默认方法,接口也能有自己的方法实现了
- Java 泛型 T,E,K,V,?,傻傻分不清?
关键字
- 终于明白 Java 为什么要加 final 关键字了!
- Java transient关键字
- final关键字的这8个小细节,你get到几个?
反射
- 反射 — Java 高级开发必须懂的
- 一篇文章了解 Java 反射和应用
- 如果大量使用反射,则可以考虑缓存反射来提升性能,约能提升2倍左右性能。使用反射获取某些属性或者方法的时候,某些场景可能需要考虑循环其父类额外获取父类部分的属性和方法来补充完整。
引用
- 走进java_符号引用与直接引用
- 是时候捋一捋Java的深浅拷贝了
- Java中的深浅拷贝问题你清楚吗?
二进制、编码、位运算
- java二进制相关基础
- 二进制实战技巧
- 一篇文章彻底弄懂Base64编码原理
- Base64 的原理、实现及应用
- 为什么源码里经常出现这种骚操作?(位运算)
- 文字与编码的奥妙(上篇)
- 文字与编码的奥秘(下)
- ## 常用类
字符串
- Java基础(字符串篇)
时间
- Java SimpleDateFormat 没那么简单
- SimpleDateFormat 为什么不是线程安全的?
- LocalDateTime用法
- 为什么建议使用你 LocalDateTime ,而不是 Date?
- MySQL 由于 Java 日期 LocalDateTime 数据精度引发的线上问题
集合
- Java基础(集合篇)
队列
- 图解 | 不就是队列吗
- 10图彻底掌握阻塞队列
Json
- 深度对比Jackson和Fastjson,最终我还是选择了...
- 废弃fastjson!大型项目迁移Gson保姆级实战
数字相关
- 商业计算怎样才能保证精度不丢
- BigDecimal精度与相等比较的坑
- 还在用 Random生成随机数了?试试 ThreadLocalRandom,太叼了!
* 小数计算使用BigDecimal来防止丢失精度,例如 小数保留4位小数,且使用银行家舍入模式 bd.setScale(4, RoundingMode.HALF_EVEN) * BigDecimal.ROUND_HALF_EVEN / RoundingMode.HALF_EVEN 银行家算法(舍入): 四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一 * 小数初始化成BigDecimal时,使用字符串模式初始化,否则可能丢失精度;如果是double/float转换而成,则设置下保留位数和舍入模式 * 小数相除如果写成bd1.divide(bd2),可能会遇到不能整除的情况,就会抛出异常java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. * 小数相除正确写法是bd1.divide(bd2, 保留位数, 舍入模式)
- 为什么阿里巴巴禁止使用BigDecimal的equals方法做等值比较?
- 如何更快地将string转换成int/long
IO相关
- Java基础(IO篇)
线程&锁&线程池
- Java基础(线程篇)
JVM
- Java基础(JVM篇)
正则表达式
- 如何优化正则表达式性能?
数据结构
- 镜像二叉树
- 逆转单向链表
算法
- Java 常用的八种排序算法与代码实现
- 面试时写不出排序算法?看这篇就够了
- 雪花算法的原理和 Java 实现
- 理解Raft算法,轻松应对分布式容错和一致性
- 女朋友都能看懂的哈希表总结!
- 磁盘多路归并排序
加解密
- 浅谈常见的加密算法及实现
- 关于加解密、加签验签的那些事
- 拒绝接口裸奔!开放API接口签名验证!
- 开放 API 接口签名验证,让你的接口从此不再裸奔 !
- Java 环境下使用 AES 加密的特殊问题处理
数据库连接
- 深入理解Spring Boot数据源与连接池原理 备注:因为druid连接池bug比较多,可以直接使用spring‐boot‐starter‐jdbc默认的连接池
- 升级JDK版本后连接Mysql时报javax.net.ssl.SSLHandshakeException No appropriate protocol
Druid
- 数据库链接池终于搞对了,这次直接从100ms优化到3ms!
- 使用druid连接池遇到的坑
- 使用druid连接池带来的坑testOnBorrow=false
- 阿里Druid连接池的坑。。
HikariCP
- Springboot 2.0默认连接池HikariCP详解(效率最高) 备注:之前SpringBoot默认用的tomcat-jdbc
- HikariCP数据库连接池,太快了!
工具组件
Commons Pool 2
- 工作10年,你居然还没用过Java中的池化技术?
JDK
- 目前还在维护的LTS(Long Term Support)版JDK有:
JDK 8 (延长维护到2030年)、JDK 11(延长维护到2026年)、JDK 17(延长维护到2029年)、JDK21 (延长维护到2031年) - 2022年推出Spring6和 SpringBoot3最低依赖JDK为JDK17;所以JDK17将是继 JDK8以来最重要的LTS版本;
- 目前还在维护的LTS(Long Term Support)版JDK有:
- 从JDK8飞升到JDK17,再到未来的JDK21
JDK 7
- 使用try-with-resources优雅关闭资源 jdk1.7语法糖
- 不要再满屏写 try...catch 了!这个更香!
JDK 8
- Java基础(JDK8篇)
其他版本
- OpenJDK-11的新特征
代码规范质量
- 工作四年,分享50个让你代码更好的小建议
- 我司为什么禁止使用阿里巴巴 Java 规范?
一些应用案例
- JAVA实现图片等比缩放,图片截取功能--封装类
- 一致性哈希
- Event Sourcing的落地与意义
- 如何优雅处理重复请求/并发请求?
- 10w行级别数据的Excel导入优化记录
- 跳表(skip list)怎么实现的?
- Java 性能优化的 50 个细节
其他
- YAML快速入门
- 万字Java知识地图助你成为Offer收割机
- 14个Java并发容器,你用过几个?
- 用了10多年的 Tomcat 居然有bug,这能忍?(400错误)
- 如何排查系统的性能瓶颈点?