# blog **Repository Path**: kidmid/blog ## Basic Information - **Project Name**: blog - **Description**: :dart: 十年技术经验汇总,化繁为简 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: https://turnon.gitee.io/blog/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 115 - **Created**: 2021-12-09 - **Last Updated**: 2024-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

license build

BLOG

## 1. 编程语言 > 作为程序员,职业生涯的第一步,当然是掌握并精通至少一门编程语言。 > > 本人是一名 Java 后端程序员,刚毕业时做过两年 C/C++ 程序员,此外,还略懂几门其他编程语言。 ### 1.1. Java > Java 领域的知识点非常庞杂,我整理成了多个教程项目,每个项目都包含大量文档和代码。 - [Java 教程](https://dunwu.github.io/java-tutorial/) 📚 - 本人作为一名 Java 程序员,十年的技术积累,汇总与此。 - [JavaCore 教程](https://dunwu.github.io/javacore/) 📚 - Java 核心技术教程。内容包含:Java 语法基础特性、Java 语法高级特性、Java 并发、JVM、Java IO/NIO 、Java 容器等。 - [JavaWeb 教程](https://dunwu.github.io/javaweb/) 📚 - 内容包含:JavaEE(Servlet、Jsp 等)、JavaWeb 主流技术及框架(Mybatis、Ehcache、Shiro、Quartz 等)。 - [Spring 教程](https://dunwu.github.io/spring-tutorial/) 📚 - Spring 框架实战教程。 - [Spring Boot 教程](https://dunwu.github.io/spring-boot-tutorial/) 📚 - Spring Boot 框架实战教程。 - Spring Cloud 教程 [TODO] ### 1.2. 其他语言 - [如何学习编程语言](https://github.com/dunwu/blog/blob/master/source/_posts/coding/programming-guide.md) - [Python Cheat Sheet](https://github.com/dunwu/blog/blob/master/source/_posts/coding/python.md) - [Shell Cheat Sheet](https://github.com/dunwu/blog/blob/master/source/_posts/coding/shell.md) - [Scala Cheat Sheet](https://github.com/dunwu/blog/blob/master/source/_posts/coding/shell.md) ## 2. 数据结构和算法 > 如果说编程语言好比是武功招式,那么数据结构和算法就相当于是内功。要想成为编程高手,必须具备一定的数据结构和算法功底。 > > 要想学好数据结构和算法,在我看来,就是多刷题。 [数据结构和算法教程](https://dunwu.github.io/algorithm-tutorial/) 📚 - 包含基本数据结构和算法的讲解和示例,以及平时在 leetcode 上刷题的代码。 ## 3. 数据库 > 数据库大体上可以分为关系型数据库和 Nosql 数据库。 > > 关系型数据库的特性和原理,基本上大同小异。 > > Nosql 数据库就真的是各有各的不同了。 [数据库教程](https://dunwu.github.io/db-tutorial/) 📚 - 本人接触的最多的数据库就是 Mysql、Redis,本教程内对于这两种数据库的特性和原理讲解比较细致,其他数据库内容没那么细致。 ## 4. 操作系统 - 教程 - [Linux 教程 📚](https://dunwu.github.io/linux-tutorial/) - 文章 - [Windows 常用技巧总结](https://github.com/dunwu/blog/blob/master/source/_posts/os/windows.md) - [Mac 常用技巧总结](https://github.com/dunwu/blog/blob/master/source/_posts/os/mac.md) ## 5. 分布式系统 > 大型软件为了应对海量数据、高并发,一般都会被设计为分布式系统。 > > 分布式系统需要解决很多不同领域的问题。 - [系统原理面试题](https://github.com/dunwu/blog/blob/master/source/_posts/theory/system-theory-interview.md) - [分布式基础理论](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-base-theory.md) - 关键词:拜占庭将军问题、CAP、BASE - [分布式事务](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-transaction.md) - 关键词:2PC、3PC、TCC、本地消息表、MQ 消息、SAGA - [负载均衡](https://github.com/dunwu/blog/blob/master/source/_posts/theory/load-balance.md) - 关键词:轮询、随机、最少连接、源地址哈希、一致性哈希 - [缓存](https://github.com/dunwu/blog/blob/master/source/_posts/theory/cache.md) - 关键词:进程内缓存、分布式缓存、缓存雪崩、缓存穿透、缓存击穿、缓存更新、缓存预热、缓存降级 - [消息队列](https://github.com/dunwu/blog/blob/master/source/_posts/theory/mq.md) - 关键词:重复消费、消息丢失、消息顺序性、消息积压 - [分布式锁](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-lock.md) - [分布式会话](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-session.md) - 关键词:粘性 Session、Session 复制共享、基于缓存的 session 共享 - [分布式存储](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-storage.md) - [分布式 ID](https://github.com/dunwu/blog/blob/master/source/_posts/theory/distributed-id.md) - 关键词:UUID、自增序列、雪花算法、Leaf - [分库分表](https://github.com/dunwu/blog/blob/master/source/_posts/theory/sharding-theory.md) - RPC ## 6. 计算机网络 > 如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。 > > 本人做 C 程序员时,从事过两年通信领域的开发,整理了一些基本的计算机网络知识点,汇总于此。 [计算机网络面试题](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-interview.md) 💯 ### 6.1. 网络分层 > 理解计算机网络,首先需要从宏观层面了解计算机网络通信的分层结构。最有代表性的是 OSI 七层结构模型,但现实中更流行的是五层结构模型(本人也比较倾向于这种模型)。 > > 了解网络分层结构,需要了解每个网络层级在网络通信中的定位,以及这个层级主要的通信设备、通信协议。 - [计算机网络指南](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-guide.md) - 关键词:核心概念、拓扑结构、作用范围、性能指标、体系结构 - [物理层](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-physical.md) - 关键词:调制、解调、数字信号、模拟信号、通信媒介、信道复用 - [链路层](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-data-link.md) - 关键词:点对点信道、广播信道、`PPP`、`CSMA/CD`、局域网、以太网、`MAC`、适配器、集线器、网桥、交换机 - [网络层](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-network.md) - 关键词:`IP`、`ICMP`、`ARP`、路由 - [传输层](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-transport.md) - 关键词:`UDP`、`TCP`、滑动窗口、拥塞控制、三次握手 - [应用层](https://github.com/dunwu/blog/blob/master/source/_posts/network/network-application.md) - 关键词:`HTTP`、`DNS`、`FTP`、`TELNET`、`DHCP` ### 6.2. 重要技术 > 对计算机网络分层有了基本的认知后,可以根据个人的工作、学习需要,针对性的会接触到的协议或技术加深理解。 - [HTTP](https://github.com/dunwu/blog/blob/master/source/_posts/network/http.md) - [DNS](https://github.com/dunwu/blog/blob/master/source/_posts/network/dns.md) - [TCP](https://github.com/dunwu/blog/blob/master/source/_posts/network/tcp.md) - [UDP](https://github.com/dunwu/blog/blob/master/source/_posts/network/udp.md) - [ICMP](https://github.com/dunwu/blog/blob/master/source/_posts/network/icmp.md) - [WebSocket](https://github.com/dunwu/blog/blob/master/source/_posts/network/websocket.md) - [CDN](https://github.com/dunwu/blog/blob/master/source/_posts/network/cdn.md) - [VPN](https://github.com/dunwu/blog/blob/master/source/_posts/network/vpn.md) ## 7. 大数据 > [大数据教程](https://github.com/dunwu/bigdata-tutorial) 📚 - [Hive 教程](https://dunwu.github.io/bigdata-tutorial/hive/) 📚 - [Hdfs 教程](https://dunwu.github.io/bigdata-tutorial/hdfs/) 📚 - [Hbase 教程](https://dunwu.github.io/bigdata-tutorial/hbase/) 📚 - [Zookeeper 教程](https://dunwu.github.io/bigdata-tutorial/zookeeper/) 📚 - [Kafka 教程](https://dunwu.github.io/bigdata-tutorial/kafka/) 📚 ## 8. 计算机安全和密码学 > TODO:有待完善,不断补充。。。 ## 9. 计算机体系结构 > TODO:有待完善,不断补充。。。 ## 10. 架构设计 > 🔰 知识储备: > > 不想做架构师的程序员不是好程序员,也写不出好代码。 > > 体现架构师水平的,就是其架构设计功力。架构设计当然需要一定的方式方法,但是更重要的前提是:需要对系统涉及到的计算机科学的各个知识领域有宏观、微观的认知。**只有理解才会运用**,这就像战士不熟悉手里的武器,怎么能充分发挥战斗力呢? > > 所以,架构师需要不断拓展知识储备,厚积薄发。如果是一个通信系统,需要学习[计算机网络](https://github.com/dunwu/blog#计算机网络);如果是一个分布式系统,需要了解[分布式系统](https://github.com/dunwu/blog#分布式系统);如果要应对海量数据,需要学习[大数据](https://github.com/dunwu/blog#大数据);如果使用了数据库,需要学习[数据库](https://github.com/dunwu/blog#数据库)。。。 > > 简言之:_路漫漫兮其修远,吾将上下而求索_。 > > 🔰 工具: > > - UML - 架构设计,不画些 UML,实在说不过去。 > - [UML Cheat Sheet](https://github.com/dunwu/blog/blob/master/source/_posts/design/uml.md) - 全面介绍 UML 各种图,也适合作为速查手册。 ### 10.1. 系统架构 > 如果把软件开发工作比作是一场战争,那么系统架构无疑是战略层面的工作。众所周知,万丈高楼平地起,系统架构就像是软件的地基,如果一开始就歪了,那么代码写得再漂亮,软件也难以成功。 > > 软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。重点是分而治之,先将大型系统抽象为各个组件或模块;然后逐一解决各组件、各模块的功能、性能问题;最后将这些组件、模块整合成对外服务的一个整体。 - [系统架构面试题](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/system-architecture-interview.md) - [系统架构概述](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/system-architecture-overview.md) - [高性能架构](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/high-performance-architecture.md) - [高可用架构](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/high-availability-architecture.md) - [伸缩性架构](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/scalable-architecture.md) - [扩展性架构](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/extensible-architecture.md) - [安全性架构](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/security-architecture.md) - [大型系统核心技术](https://github.com/dunwu/blog/blob/master/source/_posts/design/architecture/system-core-technologies.md) ### 10.2. 设计模式 > [设计模式教程](https://dunwu.github.io/design/pattern/) 📚 - 软件设计中常见问题的典型解决方案。 - **创建型模式**:创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。 - [单例模式 (Singleton)](https://dunwu.github.io/design/pattern/单例模式.html) - [简单工厂模式 (Simple Factory)](https://dunwu.github.io/design/pattern/简单工厂模式.html) - [工厂方法模式 (Factory Method)](https://dunwu.github.io/design/pattern/工厂方法模式.html) - [抽象工厂模式 (Abstract Factory)](https://dunwu.github.io/design/pattern/抽象工厂模式.html) - [建造者模式 (Builder)](https://dunwu.github.io/design/pattern/建造者模式.html) - [原型模式 (Prototype)](https://dunwu.github.io/design/pattern/原型模式.html) - **结构型模式**:结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。 - [适配器模式 (Adapter)](https://dunwu.github.io/design/pattern/适配器模式.html) - [桥接模式 (Bridge)](https://dunwu.github.io/design/pattern/桥接模式.html) - [组合模式 (Composite)](https://dunwu.github.io/design/pattern/组合模式.html) - [装饰模式 (Decorator)](https://dunwu.github.io/design/pattern/装饰模式.html) - [外观模式 (Facade)](https://dunwu.github.io/design/pattern/外观模式.html) - [享元模式 (Flyweight)](https://dunwu.github.io/design/pattern/享元模式.html) - [代理模式 (Proxy)](https://dunwu.github.io/design/pattern/代理模式.html) - **行为型模式**:行为模式负责对象间的高效沟通和职责委派。 - [模板方法模式 (Template Method)](https://dunwu.github.io/design/pattern/模板方法模式.html) - [命令模式 (Command)](https://dunwu.github.io/design/pattern/命令模式.html) - [迭代器模式 (Iterator)](https://dunwu.github.io/design/pattern/迭代器模式.html) - [观察者模式 (Observer)](https://dunwu.github.io/design/pattern/观察者模式.html) - [解释器模式 (Interpreter)](https://dunwu.github.io/design/pattern/解释器模式.html) - [中介者模式 (Mediator)](https://dunwu.github.io/design/pattern/中介者模式.html) - [职责链模式 (Chain of Responsibility)](https://dunwu.github.io/design/pattern/职责链模式.html) - [备忘录模式 (Memento)](https://dunwu.github.io/design/pattern/备忘录模式.html) - [策略模式 (Strategy)](https://dunwu.github.io/design/pattern/策略模式.html) - [访问者模式 (Visitor)](https://dunwu.github.io/design/pattern/访问者模式.html) - [状态模式 (State)](https://dunwu.github.io/design/pattern/状态模式.html) ### 10.3. 重构 > [重构教程](https://dunwu.github.io/design/refactor/) 📚 - **改善既有代码的设计**。 > > **重构是不改变软件系统外部行为的前提下,改善它的内部结构**。 - [代码的坏味道和重构](https://dunwu.github.io/design/refactor/代码的坏味道和重构.html) - [代码坏味道之代码臃肿](https://dunwu.github.io/design/refactor/代码坏味道之代码臃肿.html) - [代码坏味道之滥用面向对象](https://dunwu.github.io/design/refactor/代码坏味道之滥用面向对象.html) - [代码坏味道之变革的障碍](https://dunwu.github.io/design/refactor/代码坏味道之变革的障碍.html) - [代码坏味道之非必要的](https://dunwu.github.io/design/refactor/代码坏味道之非必要的.html) - [代码坏味道之耦合](https://dunwu.github.io/design/refactor/代码坏味道之耦合.html) ## 11. 前端技术 > [前端编程教程](https://dunwu.github.io/frontend-tutorial/) 📚 - 不会前端的后端不是好后端,这里是二手前端技术的总结。 ## 12. 工具 > 工欲善其事,必先利其器 - [Git](https://github.com/dunwu/dunwu.github.io/blob/master/tools/git/README.md) - [如何优雅的玩转 Git](https://github.com/dunwu/dunwu.github.io/blob/master/tools/git/如何优雅的玩转Git.md) - [Git 帮助手册](https://github.com/dunwu/dunwu.github.io/blob/master/tools/git/Git帮助手册.md) - [正则表达式极简教程](https://github.com/dunwu/dunwu.github.io/blob/master/tools/正则表达式极简教程.md) - 全面介绍正则表达式,也适合作为速查手册。 - [Markdown 极简教程](https://github.com/dunwu/dunwu.github.io/blob/master/tools/Markdown极简教程.md) - 全面介绍 Markdown 语义。 - [Travis CI 极简教程](https://github.com/dunwu/dunwu.github.io/blob/master/tools/travis-ci极简教程.md) - 电子书生成器 - [Gitbook 教程](https://github.com/dunwu/gitbook-templates) 📚 - Gitbook 可以根据 Markdown 生成电子书。我整理了一个教程,并包含了几个常用模板。 - [Docsify](https://github.com/docsifyjs/docsify) - 类似 Gitbook,可以根据 Markdown 生成电子书。比 Gitbook 更方便,官方手册很详尽。 ## 13. 效率提升 > 方法论,是人们认识世界、改造世界的方法的理论。同样,项目管理、编程、写文档都应该有一定的方式方法,帮助我们合理、高效、快速的达成目标。 - [软件工程与项目管理](https://github.com/dunwu/blog/blob/master/source/_posts/efficiency/software-engineering.md) - [合理规划项目](https://github.com/dunwu/blog/blob/master/source/_posts/efficiency/style/project-style.md) - [合理对文档进行归类](https://github.com/dunwu/blog/blob/master/source/_posts/efficiency/style/dir-style.md) - [合理编排技术文档](https://github.com/dunwu/blog/blob/master/source/_posts/efficiency/style/doc-style.md) - [Markdown Cheat Sheet](https://github.com/dunwu/blog/blob/master/source/_posts/efficiency/style/markdown-cheatsheet.md) ## 14. License 本博客所有文章除特别声明外,均采用 [![License: CC BY-NC-SA 4.0](https://camo.githubusercontent.com/68b1d40ecc7a83ac2c1e691be14ce4be95cec195/68747470733a2f2f6c6963656e7365627574746f6e732e6e65742f6c2f62792d6e632d73612f342e302f38307831352e706e67)](https://creativecommons.org/licenses/by-nc-sa/4.0/) 许可协议。