获得徽章 0
- #青训营笔记创作活动#
2月17日 打卡day7之前tag没加 重新发一遍
今天阅读了《****写出漂亮代码的45个小技巧****》,以下是心得体会:
1.try catch中如果流程过长,可以把内部主逻辑抽象成一个单独的方法
2.if 条件如果太复杂,可以用几个有意义的bool值代替之
3.资源释放要写到finally,保证真正能够释放
4.谨慎使用异步:会导致两个线程不是一个事务的,异常之后无法正常回滚数据/ cpu负载过高
5.定义枚举量,不要直接使用数字
6.远程接口调用要设置超时时间
7.需要什么字段select什么字段,不然增加冗余信息,还可能无法使用到覆盖索引展开评论点赞 - #青训营笔记创作活动#
1月20日 打卡day3
之前发错tag没有计算,重发
今日阅读《****go基础语法50问,来看看你的go基础合格了吗?****》,补充了很多不知道的Go语法知识:
1.string类型的值不可以直接修改,需要转为[]byte 修改再转为string。
2.switch语句可以用fallthrough强制执行下一个case代码块
3.解析JSON时,默认将数值按照float64处理
4.recover不能直接调用,必须在defer函数中执行,直接defer revover()也不行
5.在局部函数里执行defer不会有问题,不会影响到外面
6.初始化嵌套结构体不能直接按顺序填参数,要注意嵌套**var**
s2 = stStudent{stPeople{false, "JimWen"}, 3}
7.在C++中,数组名时饮用,函数内部可修改,GO中,数组名是值传递,函数内部不能修改,传指针才能修改,切片(slice)、字典(map)、通道(channel)、接口(interface)。这些是引用
8.类型断言是用来从一个接口里面读取数值给一个具体的类型变量。类型转换是指转换两个不相同的数据类型。
9.在 range 迭代中,得到的值其实是元素的一份值拷贝,更新拷贝并不会更改原来的元素,想要修改直接用索引进行修改即可。
10.interface类型的类型和值均为nil时才等于nil,如果把一个其他类型的nil变量赋值给空接口,空接口有类型了,不为nil。展开评论点赞 - #青训营笔记创作活动#
2月13日 打卡day8
5分钟自建数据库可视化平台,在线管理数据库也太方便了!
Bytebase是一款面向开发者的数据库变更工具,主要有Bytebase,主要特性有SQL审核、SQL建议、SQL编辑器、备份恢复,对MySQL8支持友好,还支持手动备份与恢复,准备使用其作为项目的数据库管理平台。展开评论点赞 - #青训营笔记创作活动#
2月1日 打卡day7
随着时间的推移,每个开发者的记忆力都会不断下降,特别是对于MySQL中的命令/函数数量众多的情况,很难记住所有命令。为了解决这个问题,博客中将常用的SQL命令/函数全部罗列出来,以便开发者在需要用到时回来查找。总体来说,这篇博客对于开发者来说非常有帮助,因为它可以帮助他们更方便的使用MySQL命令,提高工作效率。展开评论点赞 - #青训营笔记创作活动#
为什么有HTTP协议,还要有websocket协议?
1月31日 打卡day6
扫一扫就是前端不知道用户扫没扫,而是不断询问后端服务器,1~2秒一次,所以扫完需要等一等才能跳转。可以改为长轮询,服务器只要收到扫码请求,立马返回客户端,如果超时,等客户端发下次请求。
网页游戏需要大量的数据从服务器送到客户端,需要websocket了,HTTP用半双工的TCP(TCP本身全双工),Websocket全双工HTTP,也是应用层协议。
握手:Websocket建立连接需要用到HTTP,客户端发Upgrade:Websocket,服务端回101状态码,表示协议切换
Websocket应用:网页游戏、聊天室、飞书展开评论点赞 - #青训营笔记创作活动#
1月16日 打卡day1
之前忘记加tag,重新发了一次
学习了一个三刷官方文档法:1.从头看到尾。2.手敲一遍。3.先只写注释,不看文档实现功能,遇到问题再和文档比较。
设计数据库表结构是最重要的环节。
DDD领域驱动设计展开评论点赞 - #青训营笔记创作活动#
1月19日 打卡day2 之前tag没加 重新发一遍
今天阅读了《****写出漂亮代码的45个小技巧****》,以下是心得体会:
1.try catch中如果流程过长,可以把内部主逻辑抽象成一个单独的方法
2.if 条件如果太复杂,可以用几个有意义的bool值代替之
3.资源释放要写到finally,保证真正能够释放
4.谨慎使用异步:会导致两个线程不是一个事务的,异常之后无法正常回滚数据/ cpu负载过高
5.定义枚举量,不要直接使用数字
6.远程接口调用要设置超时时间
7.需要什么字段select什么字段,不然增加冗余信息,还可能无法使用到覆盖索引展开评论点赞 - #青训营笔记创作活动#
1月30日 打卡day5
Kafka应用实战
Kafka的分区、topic、存储以及多副本策略,介绍了日志文件常见的LogStartOffset、LogEndOffset、HW等变量,分区不能过多:1.会占用文件描述符2.副本也会很多,影响系统可用性3.Kafka正常启动关闭消耗时间
为什么Kafka的分区只能增加不能减少?收益太低,要考虑的问题太多,不如重新创建一个主题把现有主题的数据复制过去。展开评论点赞 - #青训营笔记创作活动# 之前发错tag了,重发一遍
1月28日 打卡day3
今日阅读《go基础语法50问,来看看你的go基础合格了吗?》,补充了很多不知道的Go语法知识:
1.string类型的值不可以直接修改,需要转为[]byte 修改再转为string。
2.switch语句可以用fallthrough强制执行下一个case代码块
3.解析JSON时,默认将数值按照float64处理
4.recover不能直接调用,必须在defer函数中执行,直接defer revover()也不行
5.在局部函数里执行defer不会有问题,不会影响到外面
6.初始化嵌套结构体不能直接按顺序填参数,要注意嵌套var s2 = stStudent{stPeople{false, "JimWen"}, 3}
7.在C++中,数组名时饮用,函数内部可修改,GO中,数组名是值传递,函数内部不能修改,传指针才能修改,切片(slice)、字典(map)、通道(channel)、接口(interface)。这些是引用
8.类型断言是用来从一个接口里面读取数值给一个具体的类型变量。类型转换是指转换两个不相同的数据类型。
9.在 range 迭代中,得到的值其实是元素的一份值拷贝,更新拷贝并不会更改原来的元素,想要修改直接用索引进行修改即可。
10.interface类型的类型和值均为nil时才等于nil,如果把一个其他类型的nil变量赋值给空接口,空接口有类型了,不为nil。展开评论点赞 - #青训营笔记创作活动#
今日阅读《刚插上网线,电脑怎么知道自己的IP是什么?》
1月29日 打卡day4
DHCP的主要流程是 1.DHCP广播 2.DHCP服务器发offer,有IP 子网掩码 3.DHCP 再次广播,要这个IP 4.DHCP服务器 回复一个ACK
DHCP是应用层协议,基于UDP进行数据传输,为什么不用TCP:TCP需要提前建立连接,不能广播,也不可能每个网段的机器一个一个建立连接。
每次联网请求都需要DHCP吗?不是,会优先再次请求之前的IP,省下前两个阶段了。
获得新IP后,会发三条无偿ARP,填本机的IP和MAC,告诉网段内所有机子,IP与MAC的对应关系,让大家记录在ARP缓存中展开评论点赞