获得徽章 1
#青训营笔记创作活动#
2月17日打卡day8
今天学习了Kafka 的一些基本知识,包含 Topic、Partition、消费者、生产者、副本等基本概念,同时也学习了 Kafka 的版本变迁以及应用实战所必备的知识点,最后学习了消息可靠性分析,加深对 Kafka 的理解。
展开
评论
#青训营笔记创作活动#
2月16日打卡day7
今天学习了为什么有HTTP协议,还要有websocket协议?
1、TCP协议本身是全双工的,但我们最常用的HTTP1.1,虽然是基于TCP的协议,但它是半双工的,对于大部分需要服务器主动推送数据到客户端的场景,都不太友好,因此我们需要使用支持全双工的websocket协议。
2、在HTTP1.1里。只要客户端不问,服务端就不答。基于这样的特点,对于登录页面这样的简单场景,可以使用定时轮询或者长轮询的方式实现服务器推送(comet)的效果。
对于客户端和服务端之间需要频繁交互的复杂场景,比如网页游戏,都可以考虑使用websocket协议。
3、websocket和socket几乎没有任何关系,只是叫法相似。
4、各个浏览器都支持HTTP协议,websocket会先利用HTTP协议加上一些特殊的header头进行握手升级操作,升级成功后就跟HTTP没有任何关系了,之后就用websocket的数据格式进行收发数据。
展开
评论
#青训营笔记创作活动#
2月15日打卡day6
今天学习了插上网线,电脑怎么知道自己的IP并能上网的:
1、电脑插上网线,联网后会通过DHCP协议动态申请一个IP,同时获得子网掩码,路由器地址等信息。
2、DHCP分为四个阶段,分别是 Discover,Offer, Request和ACK。如果曾经连过这个网,机器会记录你上次使用的IP,再次连接时优先使用原来的那个IP,因此只需要经历第三第四阶段。
3、DHCP是应用层协议,考虑到需要支持广播功能,底层使用的是UDP协议,而不是TCP协议。
4、DHCP分配下来的IP是有可能跟某台手动配置的IP地址重复的。
5、DHCP得到IP之后还会发3次无偿ARP通告,在确认没有冲突后开始使用这个IP。
展开
评论
#青训营笔记创作活动#
2月14日打卡day5
今天学习了MySQL索引失效的整理:
1、查询范围过大导致失效;
2、更改字段造成失效;
3、字段使用不确定导致索引失效;
4、最优选择导致失效;
5、未遵循最左缀匹配原则;
6、select* 不会导致失效降低效率。
展开
评论
#青训营笔记创作活动#
2月12日打卡day4
今天学习了转go的学习方法:
1、客户端转服务端,最大的挑战不是学一门新语言,而是编程思维的改变;
2、“三刷”官方文档:
(1)刷从头看到尾,扫清知识盲点,搞清楚概念;
(2)刷必须手敲,而且要写注释和总结;
(3)刷先只写注释,不看文档实现功能,遇到问题再和文档比较,加深理解。
3、在掌握Go基础之后,也可以通过“三刷”的方式掌握SQL,Redis,Linux,Nginx的基础知识点,这样就有能力开发Web项目了。
4、要进阶就要学“微服务”和“DDD”
展开
评论
#青训营笔记创作活动#
2月11日打卡day3
今天学习了MySQL中InnoDB的存储特性:
1、一张数据表一般对应一颗或多颗树的存储,树的数量与建索引的数量有关,每个索引都会有一颗单独的树;
2、聚簇索引和非聚簇索引;
3、B+树的查询是从上往下一层层查询的,一般情况下我们认为B+树的高度保持在3层以内是比较好的;
4、MySQL每个节点大小默认为16KB,也就是每个节点最多存16KB的数据,可以修改,最大64KB,最小4KB。
展开
评论
#青训营笔记创作活动#
2月10日打卡day2
今天学习了一些idea中好用的插件,idea是程序员用的最多的开发工具,很多程序员想把它打造成一站式开发工具,于是安装了各种各样的插件。
Key Promoter X 可以快速显示IDEA快捷键的插件;
Lombok是一款Java代码功能增强库,Lombok将在编译时自动生成getter、setter、equals等方法;
MybatisX支持xml和Mapper接口之间的跳转,自带图形化的代码生成器,可以通过类似JPA的方式,直接根据方法名称生成SQL实现;
等等还有很多好用的插件。
展开
评论
#青训营笔记创作活动#
2月9日打卡day1
今日主要学习了一些常用的限流方式,并做了对比。
计数器,最简单的限流方法,一段时间就计数请求数并与阈值比较。
滑动窗口,针对计数器存在临界点的缺陷,一种流量控制技术。
漏桶,有水进有水出,可以控制消费频率。
令牌桶,解决漏桶不能灵活消费问题。
redis+lua,分布式限流,以集群为维度控制其请求限制。
展开
评论
#青训营笔记创作活动#
2月8日打卡day16
今天学习了以下内容:
1、HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
2、客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
3、后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
4、如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开
评论
#青训营笔记创作活动#
2月7日打卡day15
今天学习了后端开发的好习惯:
1、注释尽可能全面,写有意义的方法注释
2、项目拆分合理的目录结构
3、不在循环里远程调用、或者数据库操作,优先考虑批量进行
4、封装方法形参
5、封装通用模板
6、封装复杂的逻辑判断条件
7、保持优化性能的嗅觉
8、可变参数的配置化处理
9、会总结并使用工具类
10、控制方法函数复杂度
11、在finally块中对资源进行释放
12、把日志打印好
13、考虑异常,处理好异常
14、考虑系统、接口的兼容性
15、代码采取措施避免运行时错误
展开
评论
#青训营笔记创作活动#
2月6日打卡day14
今天学习了网络原理相关的知识,把网络原理倒过来看,从无到有。
评论
#青训营笔记创作活动#
2月5日打卡day13
今天自顶向下深入学习了MySQL整体架构。
评论
#青训营笔记创作活动#
2月4日打卡day12
今天学习了以下内容:
1、使用用wireshark抓包的简单操作流程。
2、HTTPS会对HTTP的URL和Request Body都进行加密,因此直接在filter栏进行过滤http.host == "baidu.com"会一无所获。
3、HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数:客户端随机数(client random),服务端随机数(server random)以及pre_master_key。前两个,是明文,第三个是被服务器公钥加密过的,在客户端侧需要通过SSLKEYLOGFILE去导出。再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
4、通过设置SSLKEYLOGFILE环境变量,再让curl或chrome会请求HTTPS域名,会让它们在调用TLS库的同时导出对应的sslkey文件。这个文件里包含了三列,其中最重要的是第二列的client random信息以及第三列的pre_master_key。第二列client random用于定位,第三列pre_master_key用于解密。
展开
评论
下一页
个人成就
文章被点赞 2
文章被阅读 1,194
掘力值 190
收藏集
0
关注标签
0
加入于