GithubHelp home page GithubHelp logo

programmer-s-guide's Introduction

ⅩⅠ
算法✏️ 操作系统💻 网络☁️ 面向对象👫 数据库💾 Java 系统设计💡 工具🔨 编码实践🙊 成长指南📝 后记📝

✏️ 算法

  • 剑指 Offer 题解

    目录根据原书第二版进行编排,代码和原书有所不同,尽量比原书更简洁。

  • Leetcode 题解

    对题目做了一个大致分类,并对每种题型的解题思路做了总结。

  • 算法

    排序、并查集、栈和队列、红黑树、散列表。

💻 操作系统

☁️ 网络

  • 计算机网络

    物理层、链路层、网络层、运输层、应用层。

  • HTTP

    方法、状态码、Cookie、缓存、连接管理、HTTPs、HTTP 2.0。

  • Socket

    I/O 模型、I/O 多路复用。

👫 面向对象

  • 设计模式

    实现了 Gof 的 23 种设计模式。

  • 面向对象**

    三大原则(继承、封装、多态)、类图、设计原则。

💾 数据库与缓存

  • 数据库系统原理

    事务、锁、隔离级别、MVCC、间隙锁、范式。

  • SQL

    SQL 基本语法。

  • Leetcode-Database 题解

    Leetcode 上数据库题目的解题记录。

  • MySQL

    存储引擎、索引、查询优化、切分、复制。

  • Redis

    五种数据类型、字典和跳跃表数据结构、使用场景、和 Memcache 的比较、淘汰策略、持久化、文件事件的 Reactor 模式、复制。

☕ Java

  • Java 基础

    不会涉及很多基本语法介绍,主要是一些实现原理以及关键特性。

  • Java 容器

    源码分析:ArrayList、Vector、CopyOnWriteArrayList、LinkedList、HashMap、ConcurrentHashMap、LinkedHashMap、WeekHashMap。

  • Java 并发

    线程使用方式、两种互斥同步方法、线程协作、JUC、线程安全、内存模型、锁优化。

  • Java 虚拟机

    运行时数据区域、垃圾收集、类加载。

  • Java I/O

    NIO 的原理以及实例。

💡 系统设计

  • 系统设计基础

    性能、伸缩性、扩展性、可用性、安全性

  • 分布式

    分布式锁、分布式事务、CAP、BASE、Paxos、Raft

  • 集群

    负载均衡、Session 管理

  • 攻击技术

    XSS、CSRF、SQL 注入、DDoS

  • 缓存

    缓存特征、缓存位置、缓存问题、数据分布、一致性哈希、LRU、CDN

  • 缓存:深入分布式缓存

    image

    对于缓存知识从原理、开源项目解析到实战案例进行解析:

  • Aerospike原理及广告业务应用

  • 社交场景的缓存应用实践

  • 缓存在社交网络Feed系统中的架构实践

  • 电商架构应用场景

  • 同程凤凰缓存系统基于Redis的设计与实践

  • 消息队列

    消息处理模型、使用场景、可靠性

🔨 工具

  • Git

    一些 Git 的使用和概念。

  • Docker

    Docker 基本原理。

  • 正则表达式

    正则表达式基本语法。

  • 构建工具

    构建工具的基本概念、主流构建工具介绍。

🙊 编码实践

📝 成长指南

职业发展,年龄按23-28,28-33,33-38分段的话。我的个人观点如下:

第一阶段打好基础,在广度基础上形成一定的领域,对于代码极致追求,多学习优秀开源项目。能胜任一般复杂度的项目系分和独立实现。具备随时切换技术栈的能力。对 于第一阶段,还是争取进入有挑战的大平台。

第二阶段:形成领域专家积累,比如对于中间件方向,要具备实现一个大规模MQ的能力。比如笨神之于JVM方向。特别提示是大部分人是做业务系统的,你的竞争力可能是 业务理解业务架构和技术方案的能力,不注意总结和识别,可能沦为熟练工。

第三个阶段:尝试确定发展方向,代码极客还是研发TL还是架构师。在很多公司后两者都是兼而有之,不能安排人的架构师可能沦为ppt架构师。在第二、第三阶段要特别 关注技术以外的内容,比如选育用留、工程文化。在第三阶段要关注商业,技术只是实现的工具。

关于广度:

广度以做互联网为例,如果你做交易做库存做营销,我一般期望掌握

  • 对于基础中间件在使用基础上形成基本原理了解,队列、缓存、rpc、监控、日志、网络通讯等,不求全至少某一块经得起5个问题追问
  • 业务流程,领域建模清晰
  • 了解你的用户,业务规模,性能压测和业务监控
  • 所做产品和项目的难点 痛点 发展点
  • 对于语言和框架的掌握
  • 加分:开源项目
  • 加分:系统化输出doc ...

专和精是互相协调的,而且要根据自己的情况,广也最好和当下结合。

📝 后记

建设本仓库的初衷是对于java程序员掌握的技能能进行较为系统的梳理。

About

本仓库主要是根据计算机经典书籍以及官方技术文档进行总结的学习笔记,希望对大家有所帮助。 本仓库fork自CyC2018/CS-Notes,会遵循之前的开源协议,在您引用本仓库内容或者对内容进行修改演绎时,请遵循文末的开源协议,谢谢。

BookList

本仓库参考的书目:BOOKLIST

How To Contribute

笔记内容是笔者一个字一个字打上去的,难免会有一些笔误,如果发现笔误可直接对相应文档进行编辑修改。

如果想要提交一个仓库现在还没有的全新内容,可以先将相应的文档放到 other 目录下。

欢迎在 Issue 中提交对本仓库的改进建议~

Typesetting

笔记内容按照 中文文案排版指北 进行排版,以保证内容的可读性。

笔者将自己实现的文档排版功能提取出来,放在 Github Page 中,无需下载安装即可免费使用:Text-Typesetting

Statement

本仓库不参与商业行为,不向读者收取任何费用。(This repository is not engaging in business activities, and does not charge readers any fee.)

Logo

Power by logomakr.

Acknowledgements

感谢以下人员对本仓库做出的贡献,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与笔者联系。

License

在对本作品进行演绎时,请署名并以相同方式共享。

知识共享许可协议

programmer-s-guide's People

Contributors

cyc2018 avatar youjunyu avatar kwongtailau avatar crossoverjie avatar 0xkookoo avatar xiangmingzhe0928 avatar xiangflight avatar linkcoder avatar xbhoneybee avatar hustcoderhu avatar onefansofworld avatar ziyitony avatar moqimoqidea avatar luocaodan avatar linw7 avatar jiahaochang avatar fighterhit avatar zhangxuelong10 avatar mfzzz avatar g10guang avatar gouden-den avatar peiel avatar dawnmarch avatar cmderq avatar newbieof410 avatar weizengreal avatar wangxujian-laixuzhui avatar smallyard avatar sixzeroo avatar jesonzhuang avatar

Watchers

Mitol avatar

Forkers

huddlesklar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.