Skip to content

ichunhui/ichunhui.github.io

Repository files navigation

logo

license build

BLOG

1. 编程语言

作为程序员,职业生涯的第一步,当然是掌握并精通至少一门编程语言。

本人是一名 Java 后端程序员,刚毕业时做过两年 C/C++ 程序员,此外,还略懂几门其他编程语言。

1.1. Java

Java 领域的知识点非常庞杂,我整理成了多个教程项目,每个项目都包含大量文档和代码。

  • Java 教程 📚 - 本人作为一名 Java 程序员,十年的技术积累,汇总与此。
  • JavaCore 教程 📚 - Java 核心技术教程。内容包含:Java 语法基础特性、Java 语法高级特性、Java 并发、JVM、Java IO/NIO 、Java 容器等。
  • JavaWeb 教程 📚 - 内容包含:JavaEE(Servlet、Jsp 等)、JavaWeb 主流技术及框架(Mybatis、Ehcache、Shiro、Quartz 等)。
  • Spring 教程 📚 - Spring 框架实战教程。
  • Spring Boot 教程 📚 - Spring Boot 框架实战教程。
  • Spring Cloud 教程 [TODO]

1.2. 其他语言

2. 数据结构和算法

如果说编程语言好比是武功招式,那么数据结构和算法就相当于是内功。要想成为编程高手,必须具备一定的数据结构和算法功底。

要想学好数据结构和算法,在我看来,就是多刷题。

数据结构和算法教程 📚 - 包含基本数据结构和算法的讲解和示例,以及平时在 leetcode 上刷题的代码。

3. 数据库

数据库大体上可以分为关系型数据库和 Nosql 数据库。

关系型数据库的特性和原理,基本上大同小异。

Nosql 数据库就真的是各有各的不同了。

数据库教程 📚 - 本人接触的最多的数据库就是 Mysql、Redis,本教程内对于这两种数据库的特性和原理讲解比较细致,其他数据库内容没那么细致。

4. 操作系统

5. 分布式

分布式综合

分布式理论

分布式关键技术

  • 集群
  • 复制
  • 分区
  • 选主

流量调度

  • 负载均衡 - 关键词:轮询随机最少连接源地址哈希一致性哈希虚拟 hash 槽
  • 流量控制 - 关键词:限流熔断降级计数器法时间窗口法令牌桶法漏桶法
  • 网关
  • 分布式会话 - 关键词:粘性 SessionSession 复制共享基于缓存的 session 共享

数据调度

  • 数据缓存 - 关键词:进程内缓存分布式缓存缓存雪崩缓存穿透缓存击穿缓存更新缓存预热缓存降级
  • 读写分离
  • 分库分表 - 关键词:分片路由迁移扩容双写聚合
  • 分布式 ID - 关键词:UUID自增序列雪花算法Leaf
  • 分布式事务 - 关键词:2PC3PCTCC本地消息表MQ 消息SAGA
  • 分布式锁 - 关键词:数据库RedisZooKeeper互斥可重入死锁容错自旋尝试

资源调度

  • 弹性伸缩

通信

  • 消息队列 - 关键词:重复消费消息丢失消息顺序性消息积压

服务治理

  • 注册中心
  • 服务发现
  • 服务调用
  • 服务调用链
  • 服务依赖
  • 服务编排
  • 服务版本管理

6. 计算机网络

如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。

如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。

网络分层

理解计算机网络,首先需要从宏观层面了解计算机网络通信的分层结构。最有代表性的是 OSI 七层结构模型,但现实中更流行的是五层结构模型。

了解网络分层结构,需要了解每个网络层级在网络通信中的定位,以及这个层级主要的通信设备、通信协议。

网络协议

网络技术

7. 大数据

大数据教程 📚

8. 计算机安全和密码学

TODO:有待完善,不断补充。。。

9. 计算机体系结构

TODO:有待完善,不断补充。。。

10. 架构

如果把软件开发工作比作是一场战争,那么系统架构无疑是战略层面的工作。众所周知,万丈高楼平地起,系统架构就像是软件的地基,如果一开始就歪了,那么代码写得再漂亮,软件也难以成功。

软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。重点是分而治之,先将大型系统抽象为各个组件或模块;然后逐一解决各组件、各模块的功能、性能问题;最后将这些组件、模块整合成对外服务的一个整体。

11. 设计

11.1. UML

统一建模语言(英语 - Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML 是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML 展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

11.2.1. 创建型模式

11.2.2. 结构型模式

11.2.3. 行为型模式

11.3. 重构

改善既有代码的设计

关键词:过长函数、过大的类、基本类型偏执、过长参数列、数据泥团、switch 声明、临时字段、被拒绝的馈赠、异曲同工的类、发散式变化、霰弹式修改、平行继承体系、过多的注释、重复代码、冗余类、纯稚的数据类、夸夸其谈未来性、依恋情结、狎昵关系、过度耦合的消息链、中间人、不完美的库类

12. 前端技术

前端编程教程 📚 - 不会前端的后端不是好后端,这里是二手前端技术的总结。

13. 工具

工欲善其事,必先利其器

14. 效率提升

方法论,是人们认识世界、改造世界的方法的理论。同样,项目管理、编程、写文档都应该有一定的方式方法,帮助我们合理、高效、快速的达成目标。

15. License

本博客所有文章除特别声明外,均采用 License: CC BY-NC-SA 4.0 许可协议。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published