吴俊笔记本
ABOUT
UidGenerator
01 数据结构与算法
Long.bitCount() 解析
数据结构
01 数据结构
0 概述
1 线性表(List)
2 栈与队列
3 数组和广义表
4 串(string)
5 树与二叉树
6 图
7 红黑树
8 堆
02 高级数据结构
4 跳跃表(Skip List)
5 划分树
03 查找
0 查找的基本概念
1 顺序表查找
2 有序表查找
3 线性索引查找
4 多路查找树(B 树)
5 散列(Hash)表
04 排序
0 排序的基本概念与分类
1 插入排序
2 交换排序
3 选择排序
4 归并排序
5 分配排序
6 外部排序
动态存储管理
文件管理
算法题
回溯搜索
排列
字符串
把字符串转换成整数
替换空格
数组
二维数组中的查找
数组中重复的数字
树
二叉树的遍历
链表
从尾到头打印链表
单向链表反转
单链表加法
归并链表
02 计算机组成原理
1 计算机系统概述
2 数据的表示和运算
03 操作系统
01 操作系统引论
01 操作系统引论
04 计算机网络
1 计算机网络体系结构
1 计算机网络概述
2 计算机网络的性能
3 计算机网络体系结构与参考模型
计算机网络体系结构的重要概念
2 物理层
1 物理层的基本概念
物理层的重要概念
3 数据链路层
1 使用点对点信道的数据链路层
2 点对点协议 PPP
3 使用广播信道的数据链路层
4 扩展的以太网
5 高速以太网
数据链路层的重要概念
4 网络层
1 网络层提供的两种服务
2 网际协议 IP
3 划分子网和构造超网
4 网际控制报文协议 ICMP
5 互联网的路由选择协议
6 IPv6
7 IP 多播
8 虚拟专用网 VPN 和网络地址转换 NAT
9 多协议标记交换 MPLS
网络层的重要概念
5 传输层
1 运输层协议概述
2 UDP 用户数据报协议
3 TCP 概述
4 TCP 可靠传输
5 TCP 流量控制
6 TCP 拥塞控制
7 TCP 连接管理
6 应用层
1 域名系统 DNS
2 文件传送协议 FTP
3 远程终端协议 TELNET
4 万维网 WWW
5 电子邮件
6 动态主机配置协议 DHCP
7 简单网络管理协议 SNMP
8 应用进程跨越网络的通信
9 P2P 应用
应用层概述
7 网络安全
1 网络安全问题概述
2 两类密码体制
3 数字签名
4 鉴别
5 密钥分配
6 互联网使用的安全协议
7 系统安全:防火墙与入侵检测
05 Java
00 Java 基础
01 基本设计
1 数据类型
2 字符串
3 数组
4 运算符
5 输入输出
6 控制流程
02 对象与类
1 面向对象
2 修饰符
3 类
4 反射
5 文档注释
03 接口、lambda、内部类、代理
1 接口
2 lambda
3 内部类
4 代理
04 异常、断言、日志
1 异常
2 断言
3 日志
05 泛型、事件
1 泛型
2 事件
06 集合
1 集合接口
2.0 具体的集合
2.1 ArrayList、Vector
2.2 LinkedList
2.3 ArrayDeque
2.4 TreeMap、TreeSet
2.5 HashMap、HashSet、Hashtable
2.6 LinkedHashMap、LinkedHashSet
2.7 PriorityQueue
2.8 ConcurrentHashMap
3 映射
4 视图与包装器
5 算法
6 遗留的集合
7 线程安全的集合
07 并发
1 线程
2 线程池
3 锁
4 同步器
5 非阻塞同步
08 Java SE 8 的流库
1 Stream
2 Optional
09 IO
1 输入输出流
2 操作字符
3 操作字节
4 序列化
5 操作文件
6 NIO(内存映射文件)
7 正则表达式
10 XML
1 XML 概述
2 XML 解析
3 验证 XML 文档
4 生成 XML 文档
5 XSL 转换
11 网络
1 Socket 连接
2 获取 URL 数据
3 发送 E-mail
12 JDBC
1 JDBC 简介
2 java.sql 包简介
3 javax.sql 包简介
13 日期和时间
1 绝对时间
2 人类时间
3 格式化和解析
4 与遗留代码的互操作
14 国际化
1 Locale 对象
2 格式化和解析
3 排序和范化
4 消息格式化
5 文本文件和字符集
6 资源包
15 脚本、编译、注解
1 Java 平台的脚本
2 编译器 API
3 使用注解
4 注解语法
5 标准注解
6 源码级注解处理
7 字节码工程
16 安全
1 类加载器
2 安全管理器与访问权限
3 用户认证
4 数据签名
5 加密
17 本地方法
1 调用 C 函数
2 参数与返回
3 todo
01 Java 虚拟机
01 走进 Java
02 JVM 内存
03 GC 与内存分配
04 性能监控 + 故障处理
05 调优案例
06 类文件结构
07 类加载机制
08 字节码执行引擎
09 类加载案例与实战
10 早期(编译期)优化
11 晚期(运行期)优化
12 Java 内存模型
02 Effective Java
01 创建和销毁对象(1-9)
02 对于所有对象都通用的方法(10-14)
03 类和接口(15-25)
04 泛型(26-33)
05 枚举和注解(34-41)
06 Lambdas 与 Streams(42-48)
07 方法(49-56)
08 通用程序设计(57-68)
09 异常(69-77)
10 并发(78-84)
11 序列化(85-90)
06 Spring
01 Core
1 Spring 基本概念
2 IoC 容器与 Bean
3 SpringBoot 启动流程
02 IoC
1 依赖注入
2 高级装配
3 动态注册 Bean
03 AOP
1 AOP 简介
2 切点
3 切面
04 Web
1 Spring MVC
2 Spring MVC 进阶
3 Spring RestTemplate
4 跨域
05 Data.md
1 JdbcTemplate
10 Ehcache 3.8 简单持久化
2 Spring Data JPA
3 Spring Data MongoDB
4 Spring Data Neo4j
5 Spring Data Redis
6 Spring Cache
7 Dynamic DataSource
8 Transaction
9 Spring Cache + Caffeine
06 Security
1 Spring Security
07 Async
1 Scheduled
2 Async
08 Log
1 默认日志
2 slf4j 和 log4j、logback 关系
3 输出 sout 到日志文件
10 Retry
01 Spring Retry
07 数据库
01 MySQL
01 关系数据库
02 锁
03 事务
04 多版本并发控制
05 存储引擎
06 数据类型
07 SQL
08 索引
09 查询性能优化
10 分库分表
11 复制
02 MyBatis
01 MyBatis+Spring Boot
02 MyBatis Generator
03 CDDATA块
04 注解使用
08 系统设计
1 通用设计
01 分布式统一 id 设计
02 跨库分页
03 短链接
04 相似图片调研
05 海明距离计算
06 秒杀、红包系统
07 使用 Java 进行爬虫
08 文章相似度 - simhash 计算
2 业务设计
01 即刻-链接解析-分析
02 消息系统设计
03 关注流调研
04 关注流设计
3 设计模式
1 创建型模式
2 结构型模式
3 行为型模式
4 J2EE 模式
09 DevOps
1 Git
0 搭建Git服务器
1 创建版本库
2 版本管理
3 远程仓库
4 分支管理
5 标签管理
6 其他
2 SVN
1 基础介绍
2 基本操作
3 版本管理
4 冲突及解决
5 开发周期
3 IDEA
1 IDEA 快捷键
4 Maven
1 Maven 笔记
2 Maven 冲突解决
5 Gradle
1 Gradle 概述
2 maven迁移到gradle
6 Linux
1 Centos 7 配置 LAMP
2 Linux 常用命令
3 Shell 脚本
7 Zabbix
1 Zabbix简介
2 zabbix中文乱码
3 zabbix主动模式、被动模式
4 Zabbix迁移
8 ELK
1 ElasticStack
9 Docker
1 Docker 笔记
10 微服务
0 服务注册与发现
01 Spring Cloud Eureka
02 Spring Cloud Consul
1 服务调用
01 Spring Cloud Ribbon
02 Spring Cloud Hystrix
03 Spring Cloud Feign
04 Resilience4j
05 Apache Thrift
1 Apache Thrift 初识 (1) - 简介
2 Apache Thrift 初识 (2) - 数据类型与基本语法
3 Apache Thrift 初识 (3) - 实战Demo
2 配置中心
01 Spring Cloud Config
02 Apollo 项目解析
开源配置中心对比选型
3 API网关
01 Spring Cloud Zuul
02 Spring Cloud Gateway
4 消息组件
01 Spring Cloud Bus
02 Spring Cloud Stream
5 链路追踪
01 Spring Cloud Sleuth
Dubbo
00 官方文档
Service Mesh
00 相关资料
11 分布式
01 分布式资源协调
4 YARN
02 分布式计算
3 MapReduce
03 分布式存储
03 Redis
1 Redis 简介
2 分布式锁
3 自定义序列化
4 执行脚本
04 Memcached
01 Memcached笔记
05 MongoDB
01 MongoDB 概念
02 MongoDB 操作
03 MongoDB 管理
04 Java中使用
06 Cassandra
1 Cassandra 简介
2 Cassandra 架构
3 Cassandra 数据模型
4 迁移案例示例
5 Gossip 协议
6 Cassandra vs. HBase
2 HDFS
5 HBase
NoSQL
04 分布式数据处理
6 Hive
7 Sqoop源码 - 从 MySQL 导入到 Hive
05 分布式事务
分布式事务
分布式会话
06 分布式锁
分布式锁
08 负载均衡
01 一致性哈希
Paxos
Raft
负载均衡
1 Hadoop
8 Hadoop 数据仓库 - 《离线和实时大数据开发实战》
12 测试
1 EasyMock
1 EasyMock - 模拟对象测试
2 http_load
1 http_load - 压力测试
3 JMeter
1 JMeter - 性能测试
4 JUnit
1 JUnit 5 简介
5 MockMvc
1 MockMvc
13 重构
1 重构-改善既有代码的设计
01 重构,第一个案例
02 重构的原则
03 代码的坏味道
04 构筑测试体系
05 重构列表
06 重新组织函数
07 在对象之间搬移特性
08 重新组织数据
09 简化条件表达式
10 简化函数调用
11 处理概括关系
12 大型重构
14 前端
4 FIS
1 FIS 3接口速查
15 服务器
4 Nginx
1 Nginx 笔记
16 辅助工具类
1 Apache Commons
1 Apache Commons - 总览
2 Apache Commons BeanUtils
3 Apache Commons Codec
4 Apache Commons Collections
5 Apache Commons Lang
6 Apache Commons Pool
7 Apache Commons Text
3 日常小工具
1 使用 Java 自带 MessageDigest 实现加密(MD5 和 SHA)
2 一次性读取 GZIP 压缩的 CSV 文件
3 HttpUtil
4 数据格式
1 Json
Jackson 常用记录
1 Lombok消除Java冗长
2 MapStruct实体间转换
3 YAML 基础语法
20 笔记梳理
01 Java
02 JVM
03 MySQL
04 NoSQL
21 其他
2019 年工作总结
2020.2 Java 社招面试整理
01 创建和销毁对象(1-9)
第 1 条:考虑用静态工厂方法代替构造器 工厂方法优势: 有名称,更易读 可选,不必每次创建新对象 可以返回子类型 创建参数化类型实例时,更简洁 可以返回非公有类 工厂方法缺点: 类如果不含有他的公有或者受保护的构造器,就不能被子类化。 与其他静态方法没区别,不易识别 常用的静态工厂名称:v ...
2020-01-02
05 Java
>
02 Effective Java
03 类和接口(15-25)
第 15 条:使类和成员的可访问性最小化 公有静态 final 域暴露常量,要么包含基本类型值,要么包含指向不可变对象的引用 第 16 条:在公有类中使用访问方法而非公有域 公有类不应该暴露可变域,因为其客户端代码遍布各处,将来极难改变内部表示法 公有类暴露不可变域危害较小,事实上也不应该 包级私 ...
2020-01-02
05 Java
>
02 Effective Java
07 方法(49-56)
第 49 条:检查参数的有效性 不仅需要检查参数的有效性,还需要在函数的文档中给予明确的说明,如在参数非法的情况下,会抛出哪些异常,或导致函数返回哪些错误值等 第 50 条:必要时进行保护性拷贝 如果不能够容忍对象进入数据结构之后发生变,就必须对该对象进行保护性拷贝,并且让拷贝之后的对象而不是原始对 ...
2020-01-02
05 Java
>
02 Effective Java
09 异常(69-77)
第 69 条:只针对异常的情况才使用异常 如果在 try、catch、finally 块中都抛出了异常,只是只有一个异常可被传播到外界。 请不要在 try 块中发出对 return、break 或 continue 的调用,万一无法避免,一定要确保 finally 的存在不会改变函数的返回值(比如说 ...
2020-01-02
05 Java
>
02 Effective Java
11 序列化(85-90)
第 85 条: 首选 Java 序列化的替代品 序列化是危险的,反序列化有漏洞,应该避免。 使用跨平台的结构化数据替代,例如 JSON 或 protobuf。 或者不反序列化不受信任的数据。 如果必须反序列化,使用对象反序列化过滤,并避免编写可序列化的类。 第 86 条:谨慎地实现 Serializ ...
2020-01-02
05 Java
>
02 Effective Java
02 对于所有对象都通用的方法(10-14)
第 10 条:覆盖 equals 时请遵守通用约定 自反性 - 对象必须等于其自身 对称性 - 任何两个对象对于它们是否相等的问题都必须保持一致,Timestamp 违反了,不值得效仿 传递性 - 如果对象 A 等于B,B 等于 C,那么 A 一定等于 C 一致性 - 相等的对象永远相等,不相等的 ...
2020-01-02
05 Java
>
02 Effective Java
04 泛型(26-33)
第 26 条:请不要在新代码中使用原生态类型 原生态类型只为了与引入泛型之前的遗留代码进行兼容和互用而提供的。 第 27 条:消除非受检警告 如果无法消除警告,同时可以证明引起警告的代码是类型安全的,只有在这种情况下才可以用一个 @SuppressWarnings(“unchecked”) 注解来禁 ...
2020-01-02
05 Java
>
02 Effective Java
05 枚举和注解(34-41)
第 34 条:用 enum 代替 int 常量 当需要一组固定常量的时候,应该使用 enum 代替 int 常量。 第 35 条:用实例域代替序数 应该给 enum 添加 int 域,而不是使用 ordinal() 方法来导出与枚举关联的序数值。(几乎不应使用 ordinal() 方法,除非在编写像 ...
2020-01-02
05 Java
>
02 Effective Java
06 Lambdas 与 Streams(42-48)
第 42 条:lambdas 优于匿名类 从 Java 8 开始,lambda 是迄今为止表示小函数对象的最佳方式。 除非必须创建非函数式接口类型的实例,否则不要使用匿名类作为函数对象。 lambda 没有名称和文档,如果超过三行,不要使用 lambda 表达式。 第 43 条: 方法引用优于 la ...
2020-01-02
05 Java
>
02 Effective Java
08 通用程序设计(57-68)
第 57 条:将局部变量的作用域最小化 第 58 条:for-each 循环优先于传统的 for 循环 第 59 条:了解和使用标准类库 第 60 条:如果需要精确的答案,请避免使用 float 和 double float 和 double 类型尤其不适合用于货币计算 可以使用 bigDecim ...
2020-01-02
05 Java
>
02 Effective Java
1
2
>