You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
文中有一处错误:
对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高; select * from table1 where col1=A AND col2=B AND col3=D 如果使用 where col2=B AND col1=A 或者 where col2=B 将不会使用索引
原文中提到索引是按照“col1,col2,col3”的顺序创建的,而mysql在按照最左前缀的索引匹配原则,且会自动优化 where 条件的顺序,当条件中只有 col2=B AND col1=A 时,会自动转化为 col1=A AND col2=B,所以依然会使用索引。
https://goldstine.github.io/architect-awesome/
《后端架构师技术图谱》
👍 👍 👍 推荐一个在线搜课程的神器,“课程搜”:https://www.kcsou.com/s_架构师/
推荐: 《Java技术书籍大全》 - awesome-java-books
从初级开发者到资深架构师,看这些书就够了
数据结构
常用算法
并发
操作系统
设计模式
运维 & 统计 & 技术支持
中间件
网络
数据库
搜索引擎
性能
大数据
安全
常用开源框架
分布式设计
设计思想 & 开发模式
项目管理
通用业务术语
技术趋势
政策、法规
架构师素质
团队管理
资讯
技术资源
(Toc generated by simple-php-github-toc )
数据结构
队列
《java队列——queue详细分析》
《LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析》
集合
《Java Set集合的详解》
链表、数组
《Java集合详解–什么是List》
字典、关联数组
《Java map 详解 - 用法、遍历、排序、常用API等》
栈
《java数据结构与算法之栈(Stack)设计与实现》
《Java Stack 类》
《java stack的详细实现分析》
树
二叉树
每个节点最多有两个叶子节点。
《二叉树》
完全二叉树
《完全二叉树》
平衡二叉树
左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
《浅谈数据结构-平衡二叉树》
《浅谈算法和数据结构: 八 平衡查找树之2-3树》
二叉查找树(BST)
二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree)。
《浅谈算法和数据结构: 七 二叉查找树》
红黑树
《最容易懂得红黑树》
《浅谈算法和数据结构: 九 平衡查找树之红黑树》
B,B+,B*树
MySQL是基于B+树聚集索引组织表
《B-树,B+树,B树详解》
《B-树,B+树与B树的优缺点比较》
LSM(Log-Structured Merge-Trees)和 B+ 树相比,是牺牲了部分读的性能来换取写的性能(通过批量写入),实现读写之间的平衡。
Hbase、LevelDB、Tair(Long DB)、nessDB 采用 LSM 树的结构。LSM可以快速建立索引。
《LSM树 VS B+树》
《LSM树(Log-Structured Merge Tree)存储引擎》
BitSet
经常用于大规模数据的排重检查。
《Java Bitset类》
《Java BitSet(位集)》
常用算法
《常见排序算法及对应的时间复杂度和空间复杂度》
排序、查找算法
《常见排序算法及对应的时间复杂度和空间复杂度》
选择排序
《Java中的经典算法之选择排序(SelectionSort)》
冒泡排序
《冒泡排序的2种写法》
插入排序
《排序算法总结之插入排序》
快速排序
《坐在马桶上看算法:快速排序》
《图解排序算法(四)之归并排序》
希尔排序
TODO
堆排序
《图解排序算法(三)之堆排序》
计数排序
《计数排序和桶排序》
桶排序
《【啊哈!算法】最快最简单的排序——桶排序》
《排序算法(三):计数排序与桶排序》
基数排序
按照个位、十位、百位、…依次来排。
《排序算法系列:基数排序》
《基数排序》
二分查找
《二分查找(java实现)》
《java实现二分查找-两种方式》
《Arrays.sort和Collections.sort实现原理解析》
布隆过滤器
常用于大数据的排重,比如email,url 等。
核心原理:将每条数据通过计算产生一个指纹(一个字节或多个字节,但一定比原始数据要少很多),其中每一位都是通过随机计算获得,在将指纹映射到一个大的按位存储的空间中。注意:会有一定的错误率。
优点:空间和时间效率都很高。
缺点:随着存入的元素数量增加,误算率随之增加。
《布隆过滤器 – 空间效率很高的数据结构》
《大量数据去重:Bitmap和布隆过滤器(Bloom Filter)》
《基于Redis的布隆过滤器的实现》
《网络爬虫:URL去重策略之布隆过滤器(BloomFilter)的使用》
字符串比较
KMP 算法
KMP:Knuth-Morris-Pratt算法(简称KMP)
核心原理是利用一个“部分匹配表”,跳过已经匹配过的元素。
《字符串匹配的KMP算法》
深度优先、广度优先
《广度优先搜索BFS和深度优先搜索DFS》
贪心算法
《算法:贪婪算法基础》
《常见算法及问题场景——贪心算法》
回溯算法
《 五大常用算法之四:回溯法》
剪枝算法
《α-β剪枝算法》
动态规划
《详解动态规划——邹博讲动态规划》
《动态规划算法的个人理解》
朴素贝叶斯
《带你搞懂朴素贝叶斯分类算法》
《贝叶斯推断及其互联网应用1》
《贝叶斯推断及其互联网应用2》
推荐算法
《推荐算法综述》
《TOP 10 开源的推荐系统简介》
最小生成树算法
《算法导论–最小生成树(Kruskal和Prim算法)》
最短路径算法
《Dijkstra算法详解》
并发
Java 并发
Java 并发知识合集
JAVA并发知识图谱
多线程
《40个Java多线程问题总结》
线程安全
《Java并发编程——线程安全及解决机制简介》
一致性、事务
事务 ACID 特性
《数据库事务ACID特性》
事务的隔离级别
未提交读:一个事务可以读取另一个未提交的数据,容易出现脏读的情况。
读提交:一个事务等另外一个事务提交之后才可以读取数据,但会出现不可重复读的情况(多次读取的数据不一致),读取过程中出现UPDATE操作,会多。(大多数数据库默认级别是RC,比如SQL Server,Oracle),读取的时候不可以修改。
可重复读: 同一个事务里确保每次读取的时候,获得的是同样的数据,但不保障原始数据被其他事务更新(幻读),Mysql InnoDB 就是这个级别。
《理解事务的4种隔离级别》
《MySQL的InnoDB的幻读问题 》
《一篇文章带你读懂MySQL和InnoDB》
MVCC
《【mysql】关于innodb中MVCC的一些理解》
锁
Java中的锁和同步类
《Java中的锁分类》
《Java中信号量 Semaphore》
《java开发中的Mutex vs Semaphore》
公平锁 & 非公平锁
公平锁的作用就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的;而非公平锁是允许插队的。
《公平锁与非公平锁》
悲观锁
悲观锁如果使用不当(锁的条数过多),会引起服务大面积等待。推荐优先使用乐观锁+重试。
《【MySQL】悲观锁&乐观锁》
《Mysql查询语句使用select.. for update导致的数据库死锁分析》
《Mysql并发时经典常见的死锁原因及解决方法》
乐观锁 & CAS
《乐观锁的一种实现方式——CAS》
ABA 问题
由于高并发,在CAS下,更新后可能此A非彼A。通过版本号可以解决,类似于上文Mysql 中提到的的乐观锁。
《Java CAS 和ABA问题》
《Java 中 ABA问题及避免》
CopyOnWrite容器
可以对CopyOnWrite容器进行并发的读,而不需要加锁。CopyOnWrite并发容器用于读多写少的并发场景。比如白名单,黑名单,商品类目的访问和更新场景,不适合需要数据强一致性的场景。
《JAVA中写时复制(Copy-On-Write)Map实现》
《聊聊并发-Java中的Copy-On-Write容器》
RingBuffer
《线程安全的无锁RingBuffer的实现【一个读线程,一个写线程】》
可重入锁 & 不可重入锁
《可重入锁和不可重入锁》
《ReenTrantLock可重入锁(和synchronized的区别)总结》
互斥锁 & 共享锁
互斥锁:同时只能有一个线程获得锁。比如,ReentrantLock 是互斥锁,ReadWriteLock 中的写锁是互斥锁。
共享锁:可以有多个线程同时或的锁。比如,Semaphore、CountDownLatch 是共享锁,ReadWriteLock 中的读锁是共享锁。
《ReadWriteLock场景应用》
死锁
《“死锁”四个必要条件的合理解释》
Java如何查看死锁?
java多线程系列:死锁及检测
操作系统
计算机原理
《操作系统基础知识——操作系统的原理,类型和结构》
CPU
多级缓存
典型的 CPU 有三级缓存,距离核心越近,速度越快,空间越小。L1 一般 32k,L2 一般 256k,L3 一般12M。内存速度需要200个 CPU 周期,CPU 缓存需要1个CPU周期。
《从Java视角理解CPU缓存和伪共享》
进程
TODO
线程
《线程的生命周期及状态转换详解》
协程
《终结python协程—-从yield到actor模型的实现》
Linux
《Linux 命令大全》
设计模式
设计模式的六大原则
《设计模式的六大原则》
23种常见设计模式
《设计模式》
《23种设计模式全解析》
《设计模式类图与示例》
应用场景
《细数JDK里的设计模式》
《Spring-涉及到的设计模式汇总》
《Mybatis使用的设计模式》
单例模式
《单例模式的三种实现 以及各自的优缺点》
《单例模式--反射--防止序列化破坏单例模式》
责任链模式
TODO
MVC
《MVC 模式》
IOC
《理解 IOC》
《IOC 的理解与解释》
AOP
《轻松理解AOP(面向切面编程)》
《Spring AOP详解》
《Spring AOP的实现原理》
《Spring AOP 实现原理与 CGLIB 应用》
UML
《UML教程》
微服务思想
《微服务架构设计》
《微服务架构技术栈选型手册》
康威定律
《微服务架构的理论基础 - 康威定律》
《微服务架构核⼼20讲》
运维 & 统计 & 技术支持
常规监控
《腾讯业务系统监控的修炼之路》
监控、用户端监控
监控的目标:全、块、准
核心指标:请求量、成功率、耗时
《开源还是商用?十大云运维监控工具横评》
《监控报警系统搭建及二次开发经验》
命令行监控工具
《常用命令行监控工具》
《JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解》
APM
APM — Application Performance Management
主要开源软件,按字母排序
《开源APM技术选型与实战》
统计分析
《流量统计的基础:埋点》
《APP埋点常用的统计工具、埋点目标和埋点内容》
《美团点评前端无痕埋点实践》
持续集成(CI/CD)
《持续集成是什么?》
《8个流行的持续集成工具》
Jenkins
《使用Jenkins进行持续集成》
环境分离
开发、测试、生成环境分离。
《开发环境、生产环境、测试环境的基本理解和区》
自动化运维
Ansible
《Ansible中文权威指南》
《Ansible基础配置和企业级项目实用案例》
puppet
《自动化运维工具——puppet详解》
chef
《Chef 的安装与使用》
测试
TDD 理论
《深度解读 - TDD(测试驱动开发)》
单元测试
《Java单元测试之JUnit篇》
《JUnit 4 与 TestNG 对比》
《单元测试主要的测试功能点》
压力测试
《Apache ab 测试使用指南》
《大型网站压力测试及优化方案》
《10大主流压力/负载/性能测试工具推荐》
《真实流量压测工具 tcpcopy应用浅析》
《nGrinder 简易使用教程》
全链路压测
《京东618:升级全链路压测方案,打造军演机器人ForceBot》
《饿了么全链路压测的探索与实践》
《四大语言,八大框架|滴滴全链路压测解决之道》
《全链路压测经验》
A/B 、灰度、蓝绿测试
《蓝绿部署、A/B 测试以及灰度发布》
虚拟化
《VPS的三种虚拟技术OpenVZ、Xen、KVM优缺点比较》
KVM
《KVM详解,太详细太深入了,经典》
《【图文】KVM 虚拟机安装详解》
Xen
《Xen虚拟化基本原理详解》
OpenVZ
《开源Linux容器 OpenVZ 快速上手指南》
容器技术
Docker
《几张图帮你理解 docker 基本原理及快速入门》
《Docker 核心技术与实现原理》
《Docker 教程》
云技术
OpenStack
《OpenStack构架知识梳理》
DevOps
《一分钟告诉你究竟DevOps是什么鬼?》
《DevOps详解》
文档管理
Confluence-收费文档管理系统
GitLab?
Wiki
中间件
Web Server
Nginx
《Ngnix的基本学习-多进程和Apache的比较》
《nginx与Apache的对比以及优缺点》
OpenResty
官方网站
《浅谈 OpenResty》
agentzh 的 Nginx 教程
Tengine
官方网站
Apache Httpd
官方网站
Tomcat
架构原理
《TOMCAT原理详解及请求过程》
《Tomcat服务器原理详解》
《JBoss vs. Tomcat: Choosing A Java Application Server》
调优方案
《Tomcat 调优方案》
《tomcat http协议与ajp协议》
《AJP与HTTP比较和分析》
Jetty
《Jetty 的工作原理以及与 Tomcat 的比较》
《jetty和tomcat优势比较》
缓存
《缓存失效策略(FIFO 、LRU、LFU三种算法的区别)》
本地缓存
《EhCache本地缓存》
《Guava Cache》
《Pagespeed—懒人工具,服务器端加速》
客户端缓存
《浏览器端缓存》
《H5 和移动端 WebView 缓存机制解析与实战》
服务端缓存
Web缓存
nuster - nuster cache
varnish - varnish cache
squid - squid cache
Memcached
《Memcached 教程》
《深入理解Memcached原理》
《Memcached软件工作原理》
《memcache 中 add 、 set 、replace 的区别》
《memcached全面剖析》
Redis
《Redis 教程》
《redis底层原理》
《Redis持久化方式》
《分布式缓存–序列3–原子操作与CAS乐观锁》
架构
《Redis单线程架构》
回收策略
《redis的回收策略》
Tair
官方网站
《Tair和Redis的对比》
特点:可以配置备份节点数目,通过异步同步到备份节点
一致性Hash算法。
架构:和Hadoop 的设计思想类似,有Configserver,DataServer,Configserver 通过心跳来检测,Configserver也有主备关系。
几种存储引擎:
MDB,完全内存性,可以用来存储Session等数据。
Rdb(类似于Redis),轻量化,去除了aof之类的操作,支持Restfull操作
LDB(LevelDB存储引擎),持久化存储,LDB 作为rdb的持久化,google实现,比较高效,理论基础是LSM(Log-Structured-Merge Tree)算法,现在内存中修改数据,达到一定量时(和内存汇总的旧数据一同写入磁盘)再写入磁盘,存储更加高效,县比喻Hash算法。
Tair采用共享内存来存储数据,如果服务挂掉(非服务器),重启服务之后,数据亦然还在。
消息队列
《消息队列-推/拉模式学习 & ActiveMQ及JMS学习》
《Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别》
消息总线
消息总线相当于在消息队列之上做了一层封装,统一入口,统一管控、简化接入成本。
《消息总线VS消息队列》
消息的顺序
《如何保证消费者接收消息的顺序》
RabbitMQ
支持事务,推拉模式都是支持、适合需要可靠性消息传输的场景。
《RabbitMQ的应用场景以及基本原理介绍》
《消息队列之 RabbitMQ》
《RabbitMQ之消息确认机制(事务+Confirm)》
RocketMQ
Java实现,推拉模式都是支持,吞吐量逊于Kafka。可以保证消息顺序。
《RocketMQ 实战之快速入门》
《RocketMQ 源码解析》
ActiveMQ
纯Java实现,兼容JMS,可以内嵌于Java应用中。
《ActiveMQ消息队列介绍》
Kafka
高吞吐量、采用拉模式。适合高IO场景,比如日志同步。
官方网站
《各消息队列对比,Kafka深度解析,众人推荐,精彩好文!》
《Kafka分区机制介绍与示例》
Redis 消息推送
生产者、消费者模式完全是客户端行为,list 和 拉模式实现,阻塞等待采用 blpop 指令。
《Redis学习笔记之十:Redis用作消息队列》
ZeroMQ
TODO
定时调度
单机定时调度
《Linux cron运行原理》
《Quartz使用总结》
《Quartz源码解析 —- 触发器按时启动原理》
《quartz原理揭秘和源码解读》
分布式定时调度
《这些优秀的国产分布式任务调度系统,你用过几个?》
《Quartz任务调度的基本实现原理》
《Elastic-Job-Lite 源码解析》
《Elastic-Job-Cloud 源码解析》
RPC
《从零开始实现RPC框架 - RPC原理及实现》
《分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较》
Dubbo
官方网站
dubbo实现原理简单介绍
** SPI **
TODO
Thrift
官方网站
《Thrift RPC详解》
gRPC
服务端可以认证加密,在外网环境下,可以保证数据安全。
官方网站
《你应该知道的RPC原理》
数据库中间件
Sharding Jdbc
官网
源码解析
日志系统
日志搜集
《从零开始搭建一个ELKB日志收集系统》
《用ELK搭建简单的日志收集分析系统》
《日志收集系统-探究》
配置中心
Apollo - 携程开源的配置中心应用
《 Spring Cloud Config 分布式配置中心使用教程》
servlet 3.0 异步特性可用于配置中心的客户端
《servlet3.0 新特性——异步处理》
API 网关
主要职责:请求转发、安全认证、协议转换、容灾。
《API网关那些儿》
《使用Zuul构建API Gateway》
《Spring Cloud Gateway 源码解析》
《HTTP API网关选择之一Kong介绍》
网络
协议
OSI 七层协议
《OSI七层协议模型、TCP/IP四层模型学习笔记》
TCP/IP
《深入浅出 TCP/IP 协议》
《TCP协议中的三次握手和四次挥手》
HTTP
《http协议详解(超详细)》
HTTP2.0
《HTTP 2.0 原理详细分析》
《HTTP2.0的基本单位为二进制帧》
HTTPS
《https原理通俗了解》
《八大免费SSL证书-给你的网站免费添加Https安全加密》
网络模型
《web优化必须了解的原理之I/o的五种模型和web的三种工作模式》
《select、poll、epoll之间的区别总结》
《select,poll,epoll比较 》
《深入理解Java NIO》
《两种高效的服务器设计模型:Reactor和Proactor模型》
Epoll
《epoll使用详解(精髓)》
Java NIO
《深入理解Java NIO》
《Java NIO编写Socket服务器的一个例子》
kqueue
《kqueue用法简介》
连接和短连接
《TCP/IP系列——长连接与短连接的区别》
框架
《Netty原理剖析》
零拷贝(Zero-copy)
《对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解》
序列化(二进制协议)
Hessian
《Hessian原理分析》
Binary-RPC;不仅仅是序列化
Protobuf
《Protobuf协议的Java应用例子》
Goolge出品、占用空间和效率完胜其他序列化类库,如Hessian;需要编写 .proto 文件。
《简单的使用 protobuf 和 protostuff》
数据库
基础理论
关系数据库设计的三大范式
《数据库的三大范式以及五大约束》
MySQL
原理
《MySQL存储引擎--MyISAM与InnoDB区别》
《myisam和innodb索引实现的不同》
InnoDB
《一篇文章带你读懂Mysql和InnoDB》
优化
《MYSQL性能优化的最佳20+条经验》
《SQL优化之道》
《mysql数据库死锁的产生原因及解决办法》
《导致索引失效的可能情况》
《 MYSQL分页limit速度太慢优化方法》
索引
聚集索引, 非聚集索引
《MySQL 聚集索引/非聚集索引简述》
《MyISAM和InnoDB的索引实现》
MyISAM 是非聚集,InnoDB 是聚集
复合索引
《复合索引的优点和注意事项》
《MySQL查询where条件的顺序对查询效率的影响》
自适应哈希索引(AHI)
《InnoDB存储引擎——自适应哈希索引》
explain
《MySQL 性能优化神器 Explain 使用分析》
NoSQL
MongoDB
MongoDB 教程
《Mongodb相对于关系型数据库的优缺点》
Hbase
《简明 HBase 入门教程(开篇)》
《深入学习HBase架构原理》
《Hbase与传统数据库的区别》
《HBase Rowkey设计》
搜索引擎
搜索引擎原理
《倒排索引–搜索引擎入门》
Lucene
《Lucene入门简介》
Elasticsearch
《Elasticsearch学习,请先看这一篇!》
《Elasticsearch索引原理》
Solr
《 Apache Solr入门教程》
《elasticsearch与solr比较》
sphinx
《Sphinx 的介绍和原理探索》
性能
性能优化方法论
《15天的性能优化工作,5方面的调优经验》
《系统性能优化的几个方面》
容量评估
《联网性能与容量评估的方法论和典型案例》
《互联网架构,如何进行容量设计?》
CDN 网络
《CDN加速原理》
《国内有哪些比较好的 CDN?》
连接池
《主流Java数据库连接池比较与开发配置实战》
性能调优
《九大Java性能调试工具,必备至少一款》
大数据
流式计算
Storm
官方网站
《最详细的Storm入门教程》
Flink
《Flink之一 Flink基本原理介绍》
Kafka Stream
《Kafka Stream调研:一种轻量级流计算模式》
应用场景
例如:
广告相关实时统计;
推荐系统用户画像标签实时更新;
线上服务健康状况实时监测;
实时榜单;
实时数据统计。
Hadoop
《用通俗易懂的话说下hadoop是什么,能做什么》
《史上最详细的Hadoop环境搭建》
HDFS
《【Hadoop学习】HDFS基本原理》
MapReduce
《用通俗易懂的大白话讲解Map/Reduce原理》
《 简单的map-reduce的java例子》
Yarn
《初步掌握Yarn的架构及原理》
Spark
《Spark(一): 基本架构及原理》
《子雨大数据之Spark入门教程(Python版)》
安全
web 安全
XSS
《xss攻击原理与解决方法》
CSRF
《CSRF原理及防范》
SQL 注入
《SQL注入》
Hash Dos
《邪恶的JAVA HASH DOS攻击》
《一种高级的DoS攻击-Hash碰撞攻击》
《关于Hash Collision DoS漏洞:解析与解决方案》
脚本注入
《上传文件漏洞原理及防范》
漏洞扫描工具
《DVWA》
W3af
OpenVAS详解
验证码
《详解滑动验证码的实现原理》
《淘宝滑动验证码研究》
DDoS 防范
《学习手册:DDoS的攻击方式及防御手段》
《免费DDoS攻击测试工具大合集》
用户隐私信息保护
用户密码非明文保存,加动态salt。
身份证号,手机号如果要显示,用 “*” 替代部分字符。
联系方式在的显示与否由用户自己控制。
TODO
《个人隐私包括哪些》
《用户密码保存》
序列化漏洞
《Lib之过?Java反序列化漏洞通用利用分析》
加密解密
对称加密
《常见对称加密算法》
哈希算法
《常用的哈希算法》
《基于Hash摘要签名的公网URL签名验证设计方案》
非对称加密
《常见非对称加密算法》
服务器安全
《Linux强化论:15步打造一个安全的Linux服务器》
数据安全
数据备份
TODO
网络隔离
内外网分离
TODO
登录跳板机
在内外环境中通过跳板机登录到线上主机。
《搭建简易堡垒机》
授权、认证
授权认证知识库
RBAC
《基于组织角色的权限设计》
《权限系统与RBAC模型概述》
《Spring整合Shiro做权限控制模块详细案例分析》
OAuth2.0
《理解OAuth 2.0》
《一张图搞定OAuth2.0》
OIDC
理解 OIDC
SAML
理解 SAML
双因素认证(2FA)
2FA - Two-factor authentication,用于加强登录验证
常用做法是 登录密码 + 手机验证码(或者令牌Key,类似于与网银的 USB key)
【《双因素认证(2FA)教程》】(http://www.ruanyifeng.com/blog/2017/11/2fa-tutorial.html)
单点登录(SSO)
《单点登录原理与简单实现》
CAS单点登录框架
使用 Authing 实现单点登录
常用开源框架
开源协议
日志框架
Log4j、Log4j2
《log4j 详细讲解》
《log4j2 实际使用详解》
《Log4j1,Logback以及Log4j2性能测试对比》
Logback
《最全LogBack 详解、含java案例和配置说明》
ORM
《ORM框架使用优缺点》
MyBatis:
《mybatis缓存机制详解》
《MyBatis学习之代码生成器Generator》
网络框架
TODO
Web 框架
Spring 家族
Spring
Spring 简明教程
Spring Boot
官方网站
《Spring Boot基础教程》
Spring Cloud
Spring Boot 中文索引站
Spring Cloud 中文文档
《Spring Cloud基础教程》
工具框架
《Apache Commons 工具类介绍及简单使用》
《Google guava 中文教程》
分布式设计
扩展性设计
《架构师不可不知的十大可扩展架构》
《可扩展性设计之数据切分》
《说说如何实现可扩展性的大型网站架构》
《大型网站技术架构(七)–网站的可扩展性架构》
稳定性 & 高可用
《系统设计:关于高可用系统的一些技术方案》
《关于高可用的系统》
硬件负载均衡
《转!!负载均衡器技术Nginx和F5的优缺点对比》
《软/硬件负载均衡产品 你知多少?》
软件负载均衡
《几种负载均衡算法》
轮寻、权重、负载、最少连接、QoS
《DNS负载均衡》
《Nginx负载均衡》
《借助LVS+Keepalived实现负载均衡 》
《HAProxy用法详解 全网最详细中文文档》
《Haproxy+Keepalived+MySQL实现读均衡负载》
《rabbitmq+haproxy+keepalived实现高可用集群搭建》
限流
《谈谈高并发系统的限流》
应用层容灾
《防雪崩利器:熔断器 Hystrix 的原理与使用》
《缓存穿透,缓存击穿,缓存雪崩解决方案分析》
《缓存击穿、失效以及热点key问题》
跨机房容灾
《“异地多活”多机房部署经验谈》
《异地多活(异地双活)实践经验》
容灾技术及建设经验介绍
容灾演练流程
《依赖治理、灰度发布、故障演练,阿里电商故障演练系统的设计与实战经验》
平滑启动
1.端流量(如vip层)、2. flush 数据(如果有)、3, 重启应用
《JVM安全退出(如何优雅的关闭java服务)》
推荐推出方式:System.exit,Kill SIGTERM;不推荐 kill-9;用 Runtime.addShutdownHook 注册钩子。
《常见Java应用如何优雅关闭》
Java、Spring、Dubbo 优雅关闭方式。
数据库扩展
读写分离模式
《Mysql主从方案的实现》
《搭建MySQL主从复制经典架构》
《DRBD+Heartbeat+Mysql高可用读写分离架构》
《MySQL Cluster 方式》
分片模式
《分库分表需要考虑的问题及方案》
《MySql分表和表分区详解》
服务治理
服务注册与发现
《永不失联!如何实现微服务架构中的服务发现?》
《SpringCloud服务注册中心比较:Consul vs Zookeeper vs Etcd vs Eureka》
《基于Zookeeper的服务注册与发现》
服务路由控制
《分布式服务框架学习笔记4 服务路由》
分布式一致
CAP 与 BASE 理论
《从分布式一致性谈到CAP理论、BASE理论》
分布式锁
《分布式锁的几种实现方式》
《基于Zookeeper的分布式锁》
《jedisLock—redis分布式锁实现》
《Memcached 和 Redis 分布式锁方案》
分布式一致性算法
PAXOS
《分布式系列文章——Paxos算法原理与推导》
《Paxos–>Fast Paxos–>Zookeeper分析》
《【分布式】Zookeeper与Paxos》
Zab
《Zab:Zookeeper 中的分布式一致性协议介绍》
Raft
《Raft 为什么是更易理解的分布式一致性算法》
Gossip
《Gossip算法》
两阶段提交、多阶段提交
《关于分布式事务、两阶段提交协议、三阶提交协议》
幂等
《分布式系统—幂等性设计》
分布式一致方案
《分布式系统事务一致性解决方案》
《保证分布式系统数据一致性的6种方案》
分布式 Leader 节点选举
《利用zookeeper实现分布式leader节点选举》
TCC(Try/Confirm/Cancel) 柔性事务
《传统事务与柔性事务》
分布式文件系统
说说分布式文件存储系统-基本架构 ?
《各种分布式文件系统的比较》 ?
唯一ID 生成
全局唯一ID
《高并发分布式系统中生成全局唯一Id汇总》
《TDDL 在分布式下的SEQUENCE原理》
一致性Hash算法
《一致性哈希算法》
设计思想 & 开发模式
DDD(Domain-driven Design - 领域驱动设计)
《浅谈我对DDD领域驱动设计的理解》
《领域驱动设计的基础知识总结》
《领域驱动设计(DDD)实现之路》
《领域驱动设计系列(2)浅析VO、DTO、DO、PO的概念、区别和用处》
命令查询职责分离(CQRS)
CQRS — Command Query Responsibility Seperation
《领域驱动设计系列 (六):CQRS》
《DDD CQRS架构和传统架构的优缺点比较》
《CQRS架构简介》
《深度长文:我对CQRS/EventSourcing架构的思考》
贫血,充血模型
《贫血,充血模型的解释以及一些经验》
Actor 模式
TODO
响应式编程
Reactor
TODO
RxJava
TODO
Vert.x
TODO
DODAF2.0
《DODAF2.0方法论》
《DODAF2.0之能力视角如何落地》
Serverless
无需过多关系服务器的服务架构理念。
《什么是Serverless无服务器架构?》
《如何理解Serverless?》
Service Mesh
《什么是Service Mesh?》
《初识 Service Mesh》
项目管理
架构评审
《架构设计之如何评审架构设计说明书》
《人人都是架构师:非功能性需求》
重构
《架构之重构的12条军规》
代码规范
《阿里巴巴Java开发手册》
代码 Review
制度还是制度!
另外,每个公司需要根据自己的需求和目标制定自己的 check list
《为什么你做不好 Code Review?》
《Code Review Checklist》
《如何用 gitlab 做 code review》
RUP
《运用RUP 4+1视图方法进行软件架构设计》
看板管理
《说说看板在项目中的应用》
SCRUM
SCRUM - 争球
3个角色:Product Owner(PO) 产品负责人;Scrum Master(SM),推动Scrum执行;Team 开发团队。
3个工件:Product Backlog 产品TODOLIST,含优先级;Sprint Backlog 功能开发 TODO LIST;燃尽图;
《敏捷其实很简单3—敏捷方法之scrum》
敏捷开发
TODO
极限编程(XP)
XP - eXtreme Programming
《主流敏捷开发方法:极限编程XP》
结对编程
边写码,边review。能够增强代码质量、减少bug。
《结对编程》
PDCA 循环质量管理
P——PLAN 策划,D——DO 实施,C——CHECK 检查,A——ACT 改进
《PDCA》
FMEA管理模式
TODO
通用业务术语
TODO
技术趋势
TODO
政策、法规
法律
《中华人民共和国网络安全法》
《个人信息保护法》
《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》
《中华人民共和国电子商务法》
程序员需要知道的法律常识
白话法律42讲-为程序员打造的专属法律武器
严格遵守刑法253法条
我国刑法第253条之一规定:
最高人民法院、最高人民检察院关于执行《中华人民共和国刑法》确定罪名的补充规定(四)规定:触犯刑法第253条之一第1款之规定,构成“出售、非法提供公民个人信息罪”;触犯刑法第253条之一第2款之规定,构成“非法获取公民个人信息罪”
《非法获取公民个人信息罪》
避风港原则
“避风港”原则是指在发生著作权侵权案件时,当ISP(网络服务提供商)只提供空间服务,并不制作网页内容,如果ISP被告知侵权,则有删除的义务,否则就被视为侵权。如果侵权内容既不在ISP的服务器上存储,又没有被告知哪些内容应该删除,则ISP不承担侵权责任。 后来避风港原则也被应用在搜索引擎、网络存储、在线图书馆等方面。
《避风港原则》
架构师素质
《架构师画像》
《关于架构优化和设计,架构师必须知道的事情》
《架构师的必备素质和成长途径》
《架构设计师—你在哪层楼?》
团队管理
TODO
招聘
资讯
行业资讯
36kr
Techweb
公众号列表
TODO
博客
团队博客
阿里中间件博客
美团点评技术团队博客
个人博客
阮一峰的网络日志
酷壳 - COOLSHELL-陈皓
hellojava-阿里毕玄
Cm’s Blog
程序猿DD-翟永超-《Spring Cloud微服务实战》作者
综合门户、社区
国内:
CSDN
老牌技术社区、不必解释。
51cto.com
ITeye
博客园
ChinaUnix
开源中国社区
InfoQ
深度开源
伯乐在线
ITPUB
腾讯云— 云+社区
阿里云— 云栖社区
IBM DeveloperWorks
开发者头条
LinkedKeeper
国外:
DZone
Reddit
问答、讨论类社区
segmentfault
知乎
stackoverflow
行业数据分析
艾瑞网
TalkingData
专项网站
测试:
Java:
安全
大数据
其他专题网站:
其他类
程序员技能图谱
推荐参考书
在线电子书
《阿里技术参考图册-研发篇》
《架构师之路》
纸质书
更多架构方面书籍参考: awesome-java-books
开发方面
《阿里巴巴Java开发手册》详情
架构方面
《软件架构师的12项修炼:技术技能篇》详情
《架构之美》详情
《分布式服务架构》详情
《聊聊架构》 详情
《云原生应用架构实践》详情
《亿级流量网站架构核心技术》详情
《淘宝技术这十年》详情
《高可用架构(第1卷)》详情
技术管理方面
《CTO说》详情
《技术管理之巅》详情
《网易一千零一夜:互联网产品项目管理实战》详情
基础理论
《数学之美》详情
《编程珠玑》详情
工具方面
TODO
大数据方面
技术资源
开源资源
手册、文档、教程
国内:
W3Cschool
Runoob.com
Love2.io
gitbook.cn
ApacheCN
国外:
Quick Code
gitbook.com
Cheatography
Tutorialspoint
LeetCode
在线课堂
学徒无忧
极客时间
segmentfault
斯达克学院
牛客网
极客学院
51CTO学院
会议、活动
QCon
ArchSummit
GITC全球互联网技术大会
活动发布平台:
活动行
常用APP
极客时间
得到
找工作
Boss直聘
拉勾网
猎聘
100Offer
工具
极客搜索
代码托管
Coding
码云
文件服务
七牛
又拍云
综合云服务商
阿里云
腾讯云
百度云
新浪云
金山云
亚马逊云(AWS)
谷歌云
微软云
VPS
Linode
DigitalOcean
Vultr
The text was updated successfully, but these errors were encountered: