Skip to content

linlingfan/studyday

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RememberMe

glinlf-2019-03-27


java基础


Java并发编程

推荐去看 Java并发编程的艺术(虽然感觉讲的不是非常深入 不过很适合入门,基本够用!)

  • Volatile 相关

    • 内存可见性 和 防止指令重排
  • Synchronized相关 done

    • 1.6后对Synchronized的优化 偏向锁 轻量锁 重量锁。
  • ReenTrantLock使用 done

    • ReenTranLock 源码分析
    • AQS同步器原理(实现各种同步器)模板方法模式,继承并冲重写AQS方法 主要是加锁和解锁
  • java 创建线程池相关 done

    • 不推荐使用Excutors工具类去创建默认的几种线程池。会有OOM风险...要么核心线程树可能过多要么 工作队列没有限制。 推荐使用ThreadPoolExecutor构造方法自己定制创建。设置适合的核心数,选择合适的阻塞队列类型以及大小。
    • 线程池的工作原理
    • 拒绝策略
  • Java Thread状态切换 done

  • 原子类相关笔记 done

  • 多线程安全

    需要保证 1 原子性 2 可见性 3 顺序性 三大特性。


JVM

  • Java JVM内存划分

    • 线程私有的:
    1. 程序计数器
    2. 虚拟机栈
    3. 本地方法栈
    • 线程共享
    1. 方法区 (1.8之前,1.8之后 在直接内存中分配一块 元空间)
    2. 直接内存(非运行时数据区的一部分)
  • 运行时数据区域

    1. 程序计数器
    2. java虚拟机栈
    3. 本地方法栈
    4. 方法区(1.7)
    5. 运行时常量池(是方法区的一部分...)
    6. 直接内存
  • 垃圾收集 TODO

    • 判断一个对象是否可以被回收

      1. 引用计数法算法
      2. 可达性分析算法
      3. 方法区的回收
      4. finalize()
    • 引用类型

      1. 强引用
      2. 软引用
      3. 弱引用
      4. 虚引用
    • 垃圾收集算法

      1. 标记-清楚
      2. 标记-整理
      3. 复制
      4. 分代收集
    • 垃圾收集器

      • HotSpot 7个收集器
        • 单线程与多线程:单线程指的是垃圾收集器只使用一个线程,而多线程使用多个线程;
        • 串行与并行:串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指的是垃圾收集器和用户程序同时执行。除了 CMS 和 G1 之外,其它垃圾收集器都是以串行的方式执行。
      1. Serial 收集器
      2. ParNew收集器
      3. Parallel Scavenge 收集器
      4. Serial Old 收集器
      5. Parallel Old 收集器
      6. CMS 收集器
      7. G1 收集器
  • 内存分配与回收策略

    • 内存分配策略

    • 回收策略:

    • 触发Full GC的条件

  • 类加载机制

    • 类的生命周期

    • 包括以下 7 个阶段:

      1. 加载(Loading)
      2. 验证(Verification)
      3. 准备(Preparation)
      4. 解析(Resolution)
      5. 初始化(Initialization)
      6. 使用(Using)
      7. 卸载(Unloading)
    • 类加载过程

  • 类加载器的分类

  • 双亲委派模型

    • 工作过程:
    • 好处:

java IO


MYSQL

  • 索引

    • 什么是索引
    • 如何创建索引
    • 创建索引的原则
    • 索引使用的注意点(具体优化)
    • 索引的优点
    • 创建索引的条件
  • 索引优化

  • 查询优化

  • 事务相关

    • 事务遵循的规则
    • 事务隔离级别
    • 事务的传播级别
  • 锁机制(MYISAM存储引擎和InnoDB存储引擎的锁)

    (细粒度分类)

    • 表锁
    • 行锁 (是否可写分类)
    • 共享锁(读锁)
    • 排它锁(写锁)
    • 死锁和避免死锁
  • mysql底层的数据结构

    • B树
    • B+树 MYISAM 非聚集索引 叶节点data域存放数据记录的地址,辅助索引和主索引的区别是辅助索引可以有重复的key InnoDB 聚集索引 叶节点data域存放完整的数据记录,数据文件本身要按主键聚集(必须要主键),辅助索引都引用主键作为data域(所以使用辅助索引查寻,理论要查询两次)。
  • 大表优化

    • 限定数据范围
    • 读写分离
    • 垂直分表
    • 水平分区(分片的常见方案)
      1. 客户端代理(Sharding-JDBC)
      2. 中间件代理(mycat)
  • 分布式事务

参考https://www.cnblogs.com/jiangyu666/p/8522547.html

解决方案: 1. 基于XA协议的两阶段提交方案。 2. TCC方案 3. 基于消息的最终一致性方案 4. GTS--分布式事务解决方案

  • 存储引擎

    • InnoDB
    • MyISAM
  • 数据类型

  • mysql集群相关??

  • MyCat 使用。用于分布式数据库 读写分离等。代理...


Redis

  • 数据类型

  • 数据结构 有点多emmm...

  • 使用场景

  • Redis 与 Memcached

  • Redis过期时间 过期策略

  • 数据淘汰策略

  • 持久化

    • 快照RDB
    • AOF存储
  • 事务、分布式事务 SetNX / RedLock(不好用)

  • 事件 (具体说明)

    • 单线程两个串行化执行

    • 文件事件

    • 时间事件

  • redis的主从复制

  • Sentinel哨兵模式

  • redis分片??? 一致性hash算法。

  • 为啥线程安全?

    • 单线程 IO多路复用模型!
  • 缓存问题

    • 缓存穿透
    • 缓存击穿
    • 缓存雪崩
    • 缓存预热

网络

  • 五层协议

    • 在计算机网络中中和OSI和TCP/IP的优点,采用一种只有五层协议的体系结构。
    1. OSI:应用层 表示层 回话层 运输层 网络层 数据链路层 物理层
    2. TCP/IP:应用层 运输层 网际层IP 网络接口层
    3. 五层协议:应用层 运输层 网络层 数据链路层 物理层
  • 5层分层说明:

  • TCP 三次握手和四次挥手

    • 三次握手:
    • 四次挥手(断开TCP连接)
    • 为什么要四次挥手(双方完全关闭连接)
    • 为什么建立连接是三次握手,关闭连接确是四次挥手呢?

    参考链接

  • TCP和UDP的区别

  • 浏览器输入url->显示主页的过程

- 注意 Https和Http的区别;Http在三次握手后还需要一次 SSL握手操作。
  • 为什么TCP连接是可靠的连接?


数据结构

数组
链表
队列
hash
二叉树
红黑树 TreeSet HashMap-J1.8+
B+树  Mysql
LMS树 HBase

算法相关

- 排序算法
    1. 冒泡排序
    2. 选择排序
    3. 插入排序
    4. 快速排序
    5. 归并排序
    6. 快速排序
    
- 查询算法 --TODO
    
    二分查找法

设计模式

- 设计模式六大原则
  • 工厂模式
  • 抽象工厂模式
  • 单例模式
  • 模仿方法模式
  • 策略模式
  • 适配器模式
  • 代理模式
  • 装饰者模式

面试期间相关题mark


LOG相关

- 日志为什么是线程安全的
https://juejin.im/entry/5707d6f11ea4930055a894ca
https://www.jianshu.com/p/7850fad8b61d
https://www.cnblogs.com/dongfuye/p/3888128.html
https://www.oschina.net/question/124592_136609
http://developer.51cto.com/art/200803/67666.htm

Spring相关

  • springboot 相关
    1. 初始化过程
    2. springboot 相关注解
    3. 什么是springboot 有什么好处?
  • Spring
    1. bean注入的方式
    2. IOC AOP等理论
    3. MVC 工作原理
    4. bean的生命周期
    5. 事务注解失效原因

ORM框架相关

1. mybatis
   1. 实现原理 -对JDBC的封装...
   2. 相关知识
2.  Spring-data-Jpa 和 Hibernate相关

补充 TODO

  • Java current包下相关锁

  • springboot 相关

  • mybatis相关

  • Spring-data-Jpa 和 Hibernate相关

  • SpringCloud相关

  • Vue相关

  • 算法相关 LeetCode...

  • Go预言学习 GoWeb相关框架学习!

  • Docker和K8s升入理解

web服务器相关

- tomcat
- nginx
- netty
- jboss

About

remember me

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages