获得徽章 1
#青训营笔记创作活动#
2月1日 打卡day19
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:

Bytebase是一款面向开发者的数据库变更管理工具,让开发人员在没有客户端的情况下也能方便地进行数据库管理,它的SQL审核功能可以避免开发人员对数据库的误操作。不仅可以方便地在线可视化管理数据库,还支持SQL审核和备份恢复。
· 项目地址:link.juejin.cn
· 主要特性如下:
1.SQL审核:具有一站式SQL审核面板,可以直观地看到数据库所有变更记录。
2.SQL建议:能自动检查SQL语句规范,额外提供GitHub Action和API接入方式。
3.SQL编辑器:可以在线管理及查看数据库表,支持语法的自动提示。
4.GitOps工作流:支持集成GitHub和GitLab,使用GitOps工作流进行数据库变更。
5.备份恢复:支持自动备份数据库及恢复数据。

Bytebase的环境功能可用于区分不同环境下的实例,比如测试环境和生存环境,可用于设置数据库变更是否需要人工审核以及数据库的自动备份策略。
展开
评论
#青训营笔记创作活动#
1月31日 打卡day18
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:

1.慢SQL优化思路
慢查询日志记录慢SQL
explain分析SQL的执行计划
profile 分析执行耗时
Optimizer Trace分析详情
确定问题并采用相应的措施

2.临时表的排序是怎样的
把需要排序的字段放到sort buffer,排完就返回,排序分全字段排序和rowid排序。如果是全字段排序需要查询返回的字段,都放入sort buffer,根据排序字段排完直接返回;如果是rowid排序只需把排序的字段放入sort buffer,然后多一次回表操作再返回。

3.如何优化order by的文件排序
order by使用文件排序效率会低一点。怎么优化?因为数据是无序的所以就需要排序。如果数据本身是有序的就不再用文件排序。而索引数据本身是有序的则可以通过建立索引来优化order by语句。还可以通过调整max_length_for_sort_data、sort_buffer_size等参数优化。
展开
评论
#青训营笔记创作活动#
1月30日 打卡day17
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:

(1)一条SQL是如何诞生的?
SQL语句都诞生于客户端,主要有两种方式产生一条SQL,一种是由开发者自己手动编写,另一种则是相关的ORM框架自动生成,一般情况下,MySQL运行过程中收到的大部分SQL都是由ORM框架生成的,比如Java中的MyBatis、Hibernate框架等。

(2)一条SQL执行前会经历的过程
为了SQL能够正常执行,首先会先去获取一个数据库连接对象,MySQL连接层中会维护着「连接池」。

(3)一条SQL执行完成后是如何返回的
一条「读SQL」或「写SQL」执行完成后,由于SQL操作的属性不同,两者之间也会存在差异性,MySQL执行一条查询SQL时,数据是逐条返回的模式,因为如果等待所有数据全部查出来之后再一次性返回,必然会导致撑满内存。不过这里的返回并不是指返回客户端,而是指返回SQL接口,因为从磁盘中检索出目标数据时,一般还需要对这些数据进行再次处理。
展开
评论
#青训营笔记创作活动#
1月28日 打卡day16
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:

· 一般情况下5xx的状态码其实并不是服务器返回给客户端的,而是由网关返回的,常见的网关如nginx。
· HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
· 客户端和服务端之间加入nginx,可以起到反向代理和负载均衡的作用,客户端只管向nginx请求数据,并不关心这个请求具体由哪个服务器来处理。
· 后端服务端应用如果发生崩溃,nginx在访问服务端时会收到服务端返回的RST报文,然后给客户端返回502报错。502并不是服务端应用发出的,而是nginx发出的。因此发生502时,后端服务端很可能没有没有相关的502日志,需要在nginx侧才能看到这条502日志。
· 如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开
评论
#青训营笔记创作活动#
1月27日 打卡day15
根据文章作者总结与阅读文章标注重点,该篇文章的要点如下:

1.注释尽可能全面、有意义
接口方法、类、复杂的业务逻辑,都应该添加有意义的注释。
- 对于接口方法的注释,应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述。
- 类的注释应该包含类的功能说明、作者和修改者。
- 业务逻辑很复杂的代码非常有必要写清楚注释。
**有利于后面的维护**。

2.项目拆分合理的目录结构
可以根据不同的业务划分模块,比如建一个`moudles`包,然后按订单、登陆等业务划分,每个业务都有自己的`controller、service、mapper、entity`。
**让项目结构更清晰,可读性更强,更容易维护**

3.封装方法形参
如果你的方法参数过多,要封装一个对象出来。

4.封装通用模板
一个优秀的后端开发,应该具备封装通用模板的编码能力。
展开
评论
下一页
个人成就
文章被点赞 17
文章被阅读 1,530
掘力值 196
收藏集
2
关注标签
32
加入于