个人技术文章系列汇总(csdn原创)
Java基础
- Effective Java读书笔记
- java 几种加载驱动的方法
- 《重构改善既有代码的设计》代码的坏味道
- 《重构改善既有代码的设计》第一个重构案例
- 深克隆:使用序列化进行克隆
- HashMap的实现原理
- JAVA中3种将byte转换为String的方法
- TreeSet部分源码解析
- Java多维数组的内存分配
JVM
- CMS、G1、ZGC的堆内存实现区别
- 关于安全点和安全区域
- 浅谈CMS垃圾收集器
- 深入理解G1垃圾收集器
- 浅谈JVM OOP-Klass二分模型
- 关于JVM的卡表和写屏障
- Java的即时编译
- JVM性能调优-小测试
- 深入Java虚拟机笔记(五):剖析HotSpot的Launcher
- 深入Java虚拟机笔记(二):垃圾收集器与内存分配策略
- 深入Java虚拟机笔记(三):类文件结构
- 深入Java虚拟机笔记(一):Java内存区域与内存溢出异常
- Java的内存回收
多线程
- 并发编程——详解 CLH 锁
- 阻塞队列BlockingQueue源码分析
- 锁的内存语义
- volatile的内存语义
- 简单死锁例子
- Java并发编程 | 第八篇:java synchronized关键字的用法以及锁的等级:对象锁、类锁
- Java并发编程 | 第七篇:ThreadLocal
- Java并发编程 | 第六篇:Fork/Join框架
- Java并发编程 | 第五篇:Java并行模式之并行流水线
- Java并发编程 | 第四篇:Future模式
- Java并发编程 | 第三篇:数据共享通道之BlockingQueue
- Java并发编程 | 第二篇:ReentrantLock重入锁
- Java并发编程 | 第一篇: Java线程池
- 面试题:用 wait-notify 写一段代码来解决生产者-消费者问题
网络
数据库
- B+树和LSM树比较
- InnoDB关键特性-插入缓存,两次写,自适应hash索引,异步IO
- Mysql查询本月和上个月
- MySQL读书笔记
- 数据库面试题
- 事务处理及锁定
- 表的维护和改造
- MySQL之join语句
- MySQL入门基本知识
- 常用SQL语言的类型
Spring
- Spring源码深度解析(三)---创建AOP代理
- Spring源码深度解析(二)---循环依赖问题
- spring的自定义配置
- Spring源码深度解析(一)---事务管理
- spring项目启动完成后,自动执行一次指定方法
- SpringBoot配置发送Email
- Spring实战教程 | 第十三篇:Spring高级功能
- SpringMVC实战教程 | 第八篇:SpringMVC下载文件
- SpringMVC实战教程 | 第七篇:SpringMVC转换器和格式化
- SpringMVC实战教程 | 第六篇:SpringMVC表单处理(重定向)
- SpringMVC实战教程 | 第五篇:SpringMVC表单处理(注解和非注解)
- @Autowired与@Resource的区别
- SpringMVC实战教程 | 第四篇:SpringMVC上传文件
- Spring实战教程 | 第八篇:Spring缓存---创建第一个缓存应用程序
- SpringMVC实战教程 | 第三篇:SpringMVC处理器映射
- SpringMVC实战教程 | 第二篇:SpringMVC之在DispatcherServlet中指定处理异常的页面
- SpringMVC实战教程 | 第一篇:一个在JSP页面输出“HelloWorld”的Spring MVC实例
- Spring的JdbcTemplate
- Spring的声明式事务处理
- Spring 中的TransactionTemplate
- Spring实战教程 | 第七篇:Spring事务处理概述
- Spring实战教程 | 第十二篇:用Spring AOP实现异常处理和记录程序执行时间
- Spring实战教程 | 第十一篇:SrpringAOP之Spring中的自动代理
- Spring实战教程 | 第九篇:SpringAOP之入门
- Spring实战教程 | 第六篇:Spring通过工厂方法配置Bean
- Spring实战教程 | 第五篇:Spring自动装配及bean的生命周期
- Spring实战教程 | 第四篇:Spring表达式语言:SpEL
- Spring实战教程 | 第三篇:Spring使用外部属性文件
- Spring实战教程 | 第二篇:Spring属性配置细节
- Spring实战教程 | 第一篇: Spring中的Bean配置
MyBatis
- MyBatis源码解析(六) --- 连接池
- MyBatis源码解析(五) --- SQL执行流程
- mydatis入门教程(二)| Mybatis与Spring集成使用
- mydatis入门教程(一)| Mybatis实现关联数据的查询
- 使用IntelliJ IDEA的第一个MyBatis Demo
中间件
- 关于zookeeper核心的8个问题
- Nginx学习笔记
- 浅谈Buffer I/O 和 Direct I/O
- RabbitMQ入门
- netty绑定端口启动服务源码分析
- dubbo源码学习笔记
- 方便实用的MongoDB工具类
- Solr定时全量更新索引(不使用solr配置方式)
- solr如何快速创建core(不需要部署tomcat)
- Spring与ActiveMQ整合及用JmsTemplate发送消息
- Redis缓存同步
- Spring中集成Redis缓存
- ActiveMQ入门实例
- solr单机版安装
- 配置nginx遇到的问题
- Netty入门
- JMS API
微服务和分布式
数据结构与算法
- LeetCode题型总结(Java)
- 反转单向链表的几种方法
- 二分查找的变种
- 360笔试题-粉笔组合
- Java如何输入不确定长度的数组
- 笔试题-动态规划系列
- leetcode-wordbreak
- 分治算法之大数相乘
- 美团点评笔试-拼凑钱币
- 剑指offer-请写程序找出这两个只出现一次的数字
- 剑指offer-判断该二叉树是否是平衡二叉树
- 剑指Offer-删除链表中重复的结点
- 剑指offer-将字符串转化为数字
- 牛客网校招模拟-好多鱼
- 二叉树最大深度和最小深度
- 二叉树的非递归遍历
- leetcode-candy
- 连续子数组的最大和 java
- 钓鱼比赛
- 裁剪网格纸
- 判断数组是否某二叉搜索树的后序遍历
- 按层打印二叉树
- 动态规划入门
- Java求最大公约数和最小公倍数
- 冒泡排序、快速排序、选择排序
- 堆排序与归并排序
- 美团点评研发笔试题
- 剑指offer