Java从基础到架构总结

一、数据结构和算法
  1. 常用数据结构
    • 数组:大小固定的数据结构。顺序存储,随机访问。
    • 链表:链表存储,顺序访问。主要有循环单链表,双向链表,循环双向链表。
    • 堆:二叉堆。
    • 栈:又叫LIFO表,后进先出。限制插入和删除只能在栈顶进行操作。
    • 队列:又叫FIFO表,先进先出。限制删除只能在对头进行操作,插入只能在队尾进行操作。
    • 二叉树
  2. 算法思想
    • 算法分析:按照时间复杂度和空间复杂度。
    • 算法思想:递推、递归、穷举、贪心、分治、动态规划、迭代、分枝界限。
  3. 经典算法
    • 经典排序:插入排序、冒泡排序、快排(分划交换排序)、直接选择排序、堆排序、合并排序。
    • 经典查找:顺序查找、二分查找、二叉排序树查找。
  4. 高级数据结构
    • B+/B-数
    • 红黑树
  5. 高级算法
    图的深度优先搜索、图的广度优先搜索、拓扑排序、Dijkstra算法(单源最短路径)、霍夫曼编码、辗转相除法、最小生成树等。
二、Java语言
  1. String:String源码解析
  2. 集合:
  3. 并发包
  4. JVM内存模型、垃圾回收:java虚拟机JVM总结
  5. 异常捕获的设计原则:Java异常的设计原则
  6. 多线程:
  7. 基础结构的原子性:int等不大于32位的基本类型的操作都是原子操作,但是某些jvm对long和double类型的操作并不是原子操作,原因是把它们作为2个原子性的32位值来对待,而不是一个原子性的64位值。但是java内存模型保证声明为volatile的long和double变量的get和set操作是原子的。
  8. IO流:netty原理总结
  9. TCP/IP网络分层模型:
    • TCP/IP模型分为5层:应用层(应用层、表示层、会话层)(第5层,里面又可以分为3层)、传输层(第4层)、网络层(第3层)、数据链路层(第2层)、物理层(第1层)。
    • 应用层:主要是面向用户的交互,有常用的http协议、ftp协议等。
    • 传输层:将应用层的数据进行传输转运。常用的有tcp(可靠的传输控制协议)、udp(用户数据报协议)。
    • 网络层:处理网络中流动的数据包。常用的有ip协议、icmp协议、arp协议。通过分析ip地址得出物理mac地址。
    • 数据链路层:用来处理连接硬件的部分,包括控制网卡、硬件相关的设备驱动等。
    • 物理层:负责数据传输的硬件,常用的有双绞线电缆、无线、光纤等。
    • 数据传递流程:首先应用层将数据报文按照协议封装格式压缩然后传递给传输层,传输层通过协议将数据报封装为数据报段然后传递给网络层,网络层将数据报段封装成数据包并传递给数据链路层,数据链路层收到数据包后封装为数据帧,然后将数据帧转成比特传递给物理层,物理层将比特通过光或电信号发送给目标。
  10. 防止SQL注入:
    • 用jdbc提供的PreparedStatement预编译语句集,它内置了处理SQL注入的能力。因为sql注入一般发生在编辑解析阶段。
    • 用正则表达式对传入的变量进行过滤。
  11. 重写equals和hashCode的注意事项:
    • jdk规则:重写equals,则必须重写hashCode,并且equals里面用于比较的属性都必须也用在hashCode的重写中。即equals相同,则hashCode一定相同;equals不相同,hashCode可能相同,也可能不相同。
    • 若equals相同,hashCode不相同带来的问题:会导致相等的两个对象,经过计算hashCode不同,被放在hashMap和set集合的两个不同位置,没办法起到去重的作用。
三:数据库相关
  1. 设计原则:关系型数据库设计总结
  2. 优化:mysql优化总结
    • 索引原理及适用
    • 大表查询优化:冗余字段,尽量单表查询。
    • 多表连接查询优化:关联字段加索引、小表驱动大表
    • 子查询优化:尽量转换成关联查询
  3. 分库、分表
  4. 备份:备份MySQL数据库
三、主流框架及工具
  1. Spring:spring原理总结
  2. 消息队列:消息队列原理总结
  3. 负载均衡:nginx原理总结
  4. 服务框架:Dubbo原理总结
  5. 分布式缓存:redis原理总结
四、设计
  1. 设计模式:
  2. 类的设计原则
    • 单一职责原则:一个类只应该做和一个职责相关的事情,不要把过多的业务放在一个类中完成。
    • 开闭原则:软件实体应该对扩展开放,对修改关闭。开闭原则是设计原则的核心原则,其他的设计原则都是开闭原则表现和补充。实现开闭原则的方法就是抽象。
    • 迪米特法则:软件实体之间应该做到最少的交互。不要和陌生人说话。调用方只关心他需要使用的方法。
    • 接口隔离原则:使用专门的接口,比用统一的接口要好。便于分工,在实现接口时,不应该看到自己不用关心的方法。
    • 聚合/组合复用原则:多使用聚合/组合达到代码的重用,少使用继承复用。
    • 依赖倒置原则:面向抽象编程,不要面向具体编程。
五、高并发大流量应对手段
  1. 大流量和高并发应对手段总结
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值