获得徽章 1
#青训营笔记创作活动#
2月11日 打卡day23
今日学习为什么用公钥加密不能用公钥解密,因为数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密,还学习了HTTPS的加密原理
2月11日 打卡day23
今日学习为什么用公钥加密不能用公钥解密,因为数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密,还学习了HTTPS的加密原理
评论
点赞
#青训营笔记创作活动#
2月10日 打卡day22
今日学习关于Redis的各种面试问题,例如Redis的定义、优缺点、支持的数据类型、如何实现延迟队列、如何实现异步队列、哨兵模式等等
2月10日 打卡day22
今日学习关于Redis的各种面试问题,例如Redis的定义、优缺点、支持的数据类型、如何实现延迟队列、如何实现异步队列、哨兵模式等等
评论
点赞
#青训营笔记创作活动#
2月9日 打卡day21
今日学习MySQL索引应用篇:建立索引的正确姿势与索引的使用指南,从索引的优劣分析,到建立索引的原则、索引失效的情景、使用索引的正确姿势、MySQL对于索引的优化机制等各方面,对索引进行了进一步学习。
2月9日 打卡day21
今日学习MySQL索引应用篇:建立索引的正确姿势与索引的使用指南,从索引的优劣分析,到建立索引的原则、索引失效的情景、使用索引的正确姿势、MySQL对于索引的优化机制等各方面,对索引进行了进一步学习。
展开
评论
点赞
#青训营笔记创作活动#
2月7日 打卡day20
今日学习MySQL索引的由来以及索引的机制、索引分类、索引使用与管理综述,让我对MySQL的索引机制有了全面的认知
2月7日 打卡day20
今日学习MySQL索引的由来以及索引的机制、索引分类、索引使用与管理综述,让我对MySQL的索引机制有了全面的认知
评论
点赞
#青训营笔记创作活动#
2月6日 打卡day19
今日学习 Bytebase 一款面向开发者的数据库变更管理工具,今天学习了这个软件的安装以及使用教程
Bytebase功能如下:
SQL审核:具有一站式SQL审核面板,可以直观地看到数据库所有变更记录。
SQL建议:能自动检查SQL语句规范,额外提供GitHub Action和API接入方式。
SQL编辑器:可以在线管理及查看数据库表,支持语法的自动提示。
GitOps工作流:支持集成GitHub和GitLab,使用GitOps工作流进行数据库变更。
备份恢复:支持自动备份数据库及恢复数据
2月6日 打卡day19
今日学习 Bytebase 一款面向开发者的数据库变更管理工具,今天学习了这个软件的安装以及使用教程
Bytebase功能如下:
SQL审核:具有一站式SQL审核面板,可以直观地看到数据库所有变更记录。
SQL建议:能自动检查SQL语句规范,额外提供GitHub Action和API接入方式。
SQL编辑器:可以在线管理及查看数据库表,支持语法的自动提示。
GitOps工作流:支持集成GitHub和GitLab,使用GitOps工作流进行数据库变更。
备份恢复:支持自动备份数据库及恢复数据
展开
评论
点赞
#青训营笔记创作活动#
2月5日 打卡day18
今日学习了SQL优化思路以及经典案例分析,
慢SQL优化思路:慢查询日志记录慢SQL
explain分析SQL的执行计划
profile 分析执行耗时
Optimizer Trace分析详情
确定问题并采用相应的措施
2月5日 打卡day18
今日学习了SQL优化思路以及经典案例分析,
慢SQL优化思路:慢查询日志记录慢SQL
explain分析SQL的执行计划
profile 分析执行耗时
Optimizer Trace分析详情
确定问题并采用相应的措施
展开
评论
点赞
#青训营笔记创作活动#
2月4日 打卡day17
今日学习 一条sql语句从诞生到结束的执行过程,包括sql执行前会经历的过程以及执行完成后的返回
2月4日 打卡day17
今日学习 一条sql语句从诞生到结束的执行过程,包括sql执行前会经历的过程以及执行完成后的返回
评论
点赞
#青训营笔记创作活动#
2月3日 打卡day16
今日学习502问题如何排查
HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
2月3日 打卡day16
今日学习502问题如何排查
HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开
评论
点赞
#青训营笔记创作活动#
2月2日 打卡day15
今日学习优秀后端应该具备的开发好习惯,与前几天学习的代码习惯类似,比如,尽可能全面的注释,项目拆分合理的目录结构、封装、处理异常等
2月2日 打卡day15
今日学习优秀后端应该具备的开发好习惯,与前几天学习的代码习惯类似,比如,尽可能全面的注释,项目拆分合理的目录结构、封装、处理异常等
评论
点赞
#青训营笔记创作活动#
2月1日 打卡day14
今日 思考网络的原理是什么,从单机到互联,本质上是通信问题,重新温习了计算机网络的知识,比如,数据传输的基本方式,MAC地址、集线器、交换器、路由器等
2月1日 打卡day14
今日 思考网络的原理是什么,从单机到互联,本质上是通信问题,重新温习了计算机网络的知识,比如,数据传输的基本方式,MAC地址、集线器、交换器、路由器等
评论
点赞
#青训营笔记创作活动#
1月31日 打卡day13
今日学习MySQL是什么,起源,应用,隶属于,整体架构,以及对每层结构的解析,例如,网络连接层、系统服务层、存储引擎层、文件系统等
1月31日 打卡day13
今日学习MySQL是什么,起源,应用,隶属于,整体架构,以及对每层结构的解析,例如,网络连接层、系统服务层、存储引擎层、文件系统等
评论
点赞
#青训营笔记创作活动#
1月30日 打卡day12
文章开头通过抓包baidu的数据包,展示了用wireshark抓包的简单操作流程。
HTTPS会对HTTP的URL和Request Body都进行加密,因此直接在filter栏进行过滤http.host == "baidu.com"会一无所获。
HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
三个随机数,分别是客户端随机数(client random),服务端随机数(server random)以及pre_master_key。前两个,是明文,第三个是被服务器公钥加密过的,在客户端侧需要通过SSLKEYLOGFILE去导出。
通过设置SSLKEYLOGFILE环境变量,再让curl或chrome会请求HTTPS域名,会让它们在调用TLS库的同时导出对应的sslkey文件。这个文件里包含了三列,其中最重要的是第二列的client random信息以及第三列的pre_master_key。第二列client random用于定位,第三列pre_master_key用于解密。
1月30日 打卡day12
文章开头通过抓包baidu的数据包,展示了用wireshark抓包的简单操作流程。
HTTPS会对HTTP的URL和Request Body都进行加密,因此直接在filter栏进行过滤http.host == "baidu.com"会一无所获。
HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
三个随机数,分别是客户端随机数(client random),服务端随机数(server random)以及pre_master_key。前两个,是明文,第三个是被服务器公钥加密过的,在客户端侧需要通过SSLKEYLOGFILE去导出。
通过设置SSLKEYLOGFILE环境变量,再让curl或chrome会请求HTTPS域名,会让它们在调用TLS库的同时导出对应的sslkey文件。这个文件里包含了三列,其中最重要的是第二列的client random信息以及第三列的pre_master_key。第二列client random用于定位,第三列pre_master_key用于解密。
展开
评论
点赞
#青训营笔记创作活动#
1月29日 打卡day11
今日学习 写出漂亮代码的45个小技巧
比如规范命名、规范格式、写好代码注释、统一的返回值、统一的异常处理等
1月29日 打卡day11
今日学习 写出漂亮代码的45个小技巧
比如规范命名、规范格式、写好代码注释、统一的返回值、统一的异常处理等
评论
点赞
#青训营笔记创作活动#
1月28日 打卡day10
今日学习 UDP和TCP在不同情况下的应用,速度,区别等
TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
1月28日 打卡day10
今日学习 UDP和TCP在不同情况下的应用,速度,区别等
TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。
TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。
大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。
对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制的话,那数据就会在IP层分片,一旦丢包,那就需要重传整个超大数据包。而TCP则不需要考虑这个,内部会自动分段,丢包重传分段就行了。这种场景下,其实TCP更快。
展开
评论
点赞
#青训营笔记创作活动#
1月27日 打卡day9
今日学习 百度没有结果怎么办
google
必应
Stack Overflow
MSDN
以及文献翻译的方法,寻找外文文献的发现过程,如何解决英文文档中的复杂句子,如何结合文档学习语法等
1月27日 打卡day9
今日学习 百度没有结果怎么办
必应
Stack Overflow
MSDN
以及文献翻译的方法,寻找外文文献的发现过程,如何解决英文文档中的复杂句子,如何结合文档学习语法等
展开
评论
点赞
#青训营笔记创作活动#
1月25日 打卡day8
今日学习 Kafka 的基础定义,整体架构,基础概念,kafka版本以及日志的变迁,以及kafka的应用实战
1月25日 打卡day8
今日学习 Kafka 的基础定义,整体架构,基础概念,kafka版本以及日志的变迁,以及kafka的应用实战
评论
点赞
#青训营笔记创作活动#
1月23日 打卡day7
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
1月23日 打卡day7
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
点赞
#青训营笔记创作活动#
1月23日 打卡day7
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
1月23日 打卡day7
TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
websocket和socket几乎没有任何关系,只是叫法相似。
正因为各个浏览器都支持HTTP协议,所以websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
点赞
#青训营笔记创作活动#
1月21日 打卡day6
如何获得自己电脑的IP
电脑插上网线,联网后会通过DHCP协议动态申请一个IP,同时获得子网掩码,路由器地址等信息。
DHCP分为四个阶段,分别是 Discover,Offer, Request和ACK。如果曾经连过这个网,机器会记录你上次使用的IP,再次连接时优先使用原来的那个IP,因此只需要经历第三第四阶段。
DHCP是应用层协议,考虑到需要支持广播功能,底层使用的是UDP协议,而不是TCP协议。
DHCP分配下来的IP是有可能跟某台手动配置的IP地址重复的。
DHCP得到IP之后还会发3次无偿ARP通告,在确认没有冲突后开始使用这个IP。
1月21日 打卡day6
如何获得自己电脑的IP
电脑插上网线,联网后会通过DHCP协议动态申请一个IP,同时获得子网掩码,路由器地址等信息。
DHCP分为四个阶段,分别是 Discover,Offer, Request和ACK。如果曾经连过这个网,机器会记录你上次使用的IP,再次连接时优先使用原来的那个IP,因此只需要经历第三第四阶段。
DHCP是应用层协议,考虑到需要支持广播功能,底层使用的是UDP协议,而不是TCP协议。
DHCP分配下来的IP是有可能跟某台手动配置的IP地址重复的。
DHCP得到IP之后还会发3次无偿ARP通告,在确认没有冲突后开始使用这个IP。
展开
评论
点赞
#青训营笔记创作活动#
1月19日 打卡day5
今日学习
索引失效的原因 :查询范围过大;更改字段造成失效;字段使用不确定导致索引失效;最优选择导致索引失效;未遵循最左匹配原则;
1月19日 打卡day5
今日学习
索引失效的原因 :查询范围过大;更改字段造成失效;字段使用不确定导致索引失效;最优选择导致索引失效;未遵循最左匹配原则;
评论
点赞