# cs-study
**Repository Path**: LZ_OTZ/cs-study
## Basic Information
- **Project Name**: cs-study
- **Description**: 记录自己的计算机系统的学习过程
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-09-16
- **Last Updated**: 2022-02-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 学习记录
> 将一些学习到的知识进行编码记录 - [仓库](https://gitee.com/LZ_OTZ/study-notes.git)迁移
## 代码
📂cs-study\code\Java\src
### 刷题
> 记录在网络上进行的编码练习
📂newcoder~牛客网题目~
📂leetcode~题目~
#### solution目录
存放了一些在牛客网上做过的编程题目, 命名方式优先为 牛客网提供的方法名, 题目编号, 含义。
每一个都书写详细的JavaDoc文档, 可以快速定位到牛客网的题目网址, 部分也可以直接根据题意进行自我测试。
##### 工具类
> 存放牛客网用的数据结构, 以及添加一些辅助方法帮助调试
### Java学习记录
> 记录学习过程中遇到的有趣的知识
📂basics
#### 基础知识
+ BIO, NIO, NIO
+ 四种文件拷贝方式比较
1. 一个个字节
2. 带缓冲区
3. 使用通道缓存
4. 使用通道直接拷贝
+ NIO 多人聊天室的简单实现 - redis底层基础
+ 泛型, 序列化
+ 泛型研究, 向Integer 的动态数组中 添加其他元素
+ 借助序列化进行深拷贝 - 有趣的编码码点研究
+ 使用 javac 与 javap 指令, 观察JVM使用StringBuilder进行优化的现象
+ 单例模式 及其 最佳实践
- 反射 & 序列化 如何破坏单例的测试, 以及少许预防办法
- 懒汉式 饿汉式
- 双重检测, 静态内部类, 枚举 等实现方式
##### JVM学习
1. 爪洼 - 线程de六种状态的代码展示
2. 指令重排导致的影响
3. 属性可见性导致的影响
4. Java字符串常量池的有趣问题
5. 有关 线程中断、wait()使用不当导致死锁 - (同样在 test 测试目录下)
#### 数据结构与算法
📂data-structure
##### 数据结构
+ 平衡二叉树、红黑树(仅插入)
+ 并查集
+ 图的邻接矩阵、邻接表
##### 算法
###### 排序算法
+ 选择排序、插入排序、希尔排序
+ 堆排序 - (空间复杂度: O(1))
+ 快速排序 - (常数速度最优)
+ 归并排序 - (外部排序, 稳定)
###### 查找算法
+ 存放查找算法: 目前仅二分查找, 大部分查找算法在 牛客网 编程题中实践
##### 工具类
#### 多线程并发
📂basics. i concurrent
- 初探AQS, 实现一次性门闩
一些JVM并发问题研究:
1. 非公平锁可减少的唤醒开销, 与公平锁在运行时的区别
2. 读写锁的非公平体现?
- 使用两个线程交替打印奇偶数
- 如何正确感知子线程中未处理的异常
## 文档
📂cs-study\document
### 文档翻译
> 一些官方文档的翻译
#### spring
主要是 Spring 框架中一些用到的文档
#### 其他
JDL入门教程: ` jhipster ` 所使用的数据库建模语言 ` JDL ` 的官方文档
OpenAPI 规范: 同 ` swagger ` 有关, 可以帮助快捷地完成 web接口设计巩固走
> > 学习笔记: 还有一些很乱的[Java](https://onedrive.live.com/view.aspx?resid=ED46498053F1004C%211585&id=documents)笔记, 还有些记得很棒的[高数笔记](https://onedrive.live.com/view.aspx?resid=ED46498053F1004C%211409&id=documents)(在OneNote客户端打开会好看得多), 有兴趣也可以了解一下. ↩