抽点时间来梳理一下自己的知识体系,主要的框架流程是:
一.tcp/ip知识点整理
1.1. tcpip知识点
1.2. tcpip完整知识点扩充:
TCP/IP详解学习笔记 这位仁兄写得太好了
1.3. tcp长连接与短连接以及tcp/udp区别与联系
1.4. tcpip的流量控制:
TCP/IP详解学习笔记(15)-- TCP的流量控制和拥塞控制(注意1.2中提到的 坚持定时器、TCP保活定时器等四个定时器)
TCP流量控制和拥塞控制(有几个关于慢启动,拥塞避免的图。计算机网络那本书上的那个图,可以辅助复习)
TCP协议的流量控制、拥塞控制和差错控制知识点完善
1.5.其他
tcp的keepalive 与http的keep-alive的区别
如何防御ddos的攻击:(针对sync的攻击)[参考:DDOS攻击原理及防护方法论中的3.1.2]
1.sync proxy
2.随机丢包
3.特征匹配(带options的sync包)
4.sync cookies(给每一个请求连接的ip地址分配一个cookie)
5.ip信誉机制(终极)
另外,可以看一下关于tcp/ip,http我的相关手写笔记:在此
二.http
http完整讲解:HTTP协议详解(真的很经典)
http状态码
http与https的区别
http中的request和response的详细字段
http中的etag相关学习(可以查看我的相关笔记:在此)
http中的expires与max-age
另外,tcp/ip和http可以结合这两篇文章来进行复习:
1.简洁版:知乎问
2.完整版:从输入URL到页面加载的过程?由一道题完善自己的前端知识体系!
(http的个人整体笔记:在此)
三.nginx
nginx 结构解析
nginx rewrite
nginx平滑重启的原理
nginx常见的几种负载均衡算法的配置:介绍
nginx加权轮询的算法:介绍1,介绍2
nginx ip_hash(保持会话)的算法:介绍
nginx防盗链:文章1,文章2
nginx其他说明
四.php
4.1. 个人整理的知识框架:在此
4.2. php7的新特性:个人总结
4.3. 语言细节方面的问题
4.3.1. array_merge与+的区别
4.3.2. php中for,foreach,while的区别与联系
4.3.3. 语言中array与对象的区别以及php变量的实现解析
4.3.4. php中的魔术方法
4.3.5.php中的self与static的区别;this,self,parent三个关键字的区别等
4.4. php的异常处理,线程安全(文章1)
4.5. php内存溢出的处理:文章1,文章2;内存回收机制
4.6. FastCGI与php-fpm的关系:个人总结,相关问题解答,白话讲解
五.MySQL
5.1. MySQL系统复习相关
5.1.1. 个人手写相关笔记(这里1,这里2)
5.1.2. 个人系统整理的比较结构化的mysql复习相关笔记(这里,复习mysql以这个为主)
5.2. MySQL主从同步相关
5.2.1. 主从同步:文章1(有图,简单易懂),文章2(Mysql主从同步架构图和原理),文章3(MySQL主从同步原理)
5.2.2. MySQL数据库 主主、主从同步配置及原理(有详细配置说明)(auto-increment-offset=1, 2[多主偏移量不一致,但是后面的步数是一样的,跳跃的], auto-increment-increment=2)
mysql分表的防止id重复的两种方法(1.全局表,2.两个分表偏移一致,起点不同)
5.2.3. Mysql主从同步延迟的追踪问题和解决方案
5.3. 数据库中的锁
5.3.1. 乐观锁与悲观锁:简单说明;详细介绍
5.3.2. mysql的锁--行锁,表锁,乐观锁,悲观锁
5.4. mysql数据库事务(讲的很仔细,不错!强烈推荐要好好看一看)
5.5. MySQL连接数相关问题
5.5.1. MySQL的连接池、异步、断线重连
5.5.2. 持久的数据库连接个人总结
5.6. 数据库分表(纯科普)
5.7. NoSQL数据库相关
5.7.1. nosql(科普)
5.8. 分布式系统常见问题:
强一致性、弱一致性、最终一致性
面试应付篇
保证分布式系统数据一致性的6种方案(科普)
分布式锁(php的实现, 使用Redis SETNX 命令实现分布式锁)
相关(纯)科普:
常用的分布式事务解决方案
分布式锁1 Java常用技术方案
分布式系统阅读清单
分布式系统理论之Quorum机制
分布式系统解决方案
六.redis等缓存
个人整理的相关笔记(这里)
6.1. 数据类型以及底层数据结构的实现
文章1:深入浅出Redis-redis底层数据结构(上)(下)
文章2:Redis中的对象类型与底层编码(有底层实现的代码以及相关的对应关系,不错,值得一看)
文章3:Redis 的基础数据结构(一) 可变字符串、链表、字典
文章4:聊一聊Redis的数据结构(有彩图分析数据结构的实际效果,不错)
6.2.特点 (参考redis的面试题)
6.3.redis的持久化[相当重要!!!](参考:关于Redis持久化(图片笔记说明版;纯文字说明版,看绿色部分即可))
快照;aof。两者的原理一定要清楚。
(快照相关说明:因为os的copyonwrite导致子进程的地址空间内的数据知识fork时刻整个数据库的一个快照)
6.4.redis的并发竞争(参考redis的面试题)
主要解决方案分为:客户端的连接池;服务端利用setnx实现锁
6.5.redis的缓存失效策略以及主键失效策略(参考redis的面试题)
volatile(有生命周期的key);
volatile_lru,volatile_ttl,volatile_rand + allkey_lru,allkey_rand + no_envicition
6.6.watch、multi、exec等命令(参考redis的面试题)
6.7.主从复制 (重要)
redis的主从复制是建立在内存快照持久化的基础上的;
关键词:快照,写命令缓存,异步复制,SYNC,BGSAVE,RDB文件
详细原理请查看文章:Redis核心概念(纯文字说明版,看绿色部分即可)中的“复制功能的运作原理”一节即可。
6.8. sentinal(哨兵)(同样可查看楼上文章,以及这篇有图解结构的说明文章)
6.9. 缓存穿透,雪崩以及热点数据集中失效问题(注意概念的理解,可看草稿图)
6.9.1.缓存世界中的三大问题及解决方案
6.9.2.Memcached之缓存雪崩,缓存穿透,缓存预热,缓存算法(7)
6.9.3.Redis架构之防雪崩设计:网站不宕机背后的兵法
6.10. 其他
6.10.1 也谈谈 Redis 和 Memcached 的区别(纯科普)
注意该文有以下一段话,值得回味:
Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。
七.linux
可以参考个人笔记:这里
其中比较容易理解的学习命令:awk查看统计Nginx访问日志(可以学习到uniq,sort,head,awk的用法 )
八.面向对象、设计模式
8.1. 面向对象的相关原则
个人整理的相关笔记(在此)
8.1.1 六大原则实用帖
六大原则(官方说明版本,科普帖)
六大原则的php实现(有例子,容易理解,还不错)
8.1.2 六大原则科普帖
六大原则相关图解(纯科普纯科普)
SOLID原则(纯科普帖,比较长,讲的比较详细):
8.2. 设计模式
个人整理的相关笔记(在此)
人人都能读懂的设计模式系列(php实现,很不错)
(1):创建型模式;(2):结构型模式;(3):行为型模式;
九.算法
大数据算法解答套路
一致性hash算法以及应用:
五分钟理解一致性哈希算法(讲原理,写的不错,学习)
三分钟看懂一致性哈希算法(通过例子学习,不错)
个人整理的一些笔记
十.其他:
闭包的理解(还不错)
怎样用通俗的语言解释REST,以及RESTful
秒杀系统的设计与关注点(限流->削峰->异步处理->内存缓存->可拓展)
十一.在线学习的一些视频
360大牛带你横扫PHP职场 全面解读PHP面试
程序员价值最大化 - 如何在面试中脱颖而出