获得徽章 2
- #青训营 x 字节后端训练营# 虽然还在学前端的东西,但还是来打个卡,JavaScript的课程讲的蛮好的,除了视频播放音量有点小之外,其他都蛮好。。。评论点赞
- 一篇简单的阅读,就是一个chatgpt的应用,青训营打卡day1!最近要开始发力。。。上把劲搞深度学习。。评论点赞
- #青训营笔记创作活动#
2023年2月19日 打卡day46
因为死锁的检测过程较为耗时,所以尽量不要等死锁出现后再去解除,而是尽量调整业务避免死锁的产生,一般来说可以从如下方面考虑:
合理的设计索引结构,使业务SQL在执行时能通过索引定位到具体的几行数据,减小锁的粒度。
业务允许的情况下,也可以将隔离级别调低,因为级别越低,锁的限制会越小。
调整业务SQL的逻辑顺序,较大、耗时较长的事务尽量放在特定时间去执行(如凌晨对账...)。
尽可能的拆分业务的粒度,一个业务组成的大事务,尽量拆成多个小事务,缩短一个事务持有锁的时间。
如果没有强制性要求,就尽量不要手动在事务中获取排他锁,否则会造成一些不必要的锁出现,增大产生死锁的几率。展开评论点赞 - #青训营笔记创作活动#
2023年2月18日 打卡day45
# 查看文件指定文件、默认显示最后10行、无光标监听
tail log_all.log
# 查看文件指定文件、默认显示最后10行、有光标监听
tail -f log_all.log
# 查看文件指定文件、默认显示最后100行、有光标监听
tail -100f log_all.log #常用
# 模糊匹配文件后100行中出现的内容、有光标并只输出显示匹配内容
tail -100f log_all.log |grep 'BLOG_LIKE' #常用
# 模糊匹配文件后100行中出现的内容、有光标并输出匹配内容前2行内容
tail -100f log_all.log |grep -B 2 'BLOG_LIKE'
# 模糊匹配文件后100行中出现的内容、有光标并输出匹配内容后2行内容
tail -100f log_all.log |grep -A 2 'BLOG_LIKE'
# 模糊匹配文件后100行中出现的内容、有光标并输出匹配内容上下2行内容
tail -100f log_all.log |grep -C 2 'BLOG_LIKE'
# 模糊匹配文件后100行内容的多个关键字、有光标并只输出显示匹配内容
tail -100f log_all.log |grep --line-buffer -E '收到消息|BLOG_COMMENTS_LIKE'
tail -100f log_all.log |grep -E '收到消息|BLOG_COMMENTS_LIKE' # 和上面同样的效果
tail -100f log_all.log |egrep '收到消息|BLOG_COMMENTS_LIKE' # 和上面同样的效果
展开评论点赞 - #青训营笔记创作活动#
2023年2月1日7 打卡day44
该字段表示当前语句执行的类型,可能出现的值如下:
all:全表扫描,基于表中所有的数据,逐行扫描并过滤符合条件的数据。
index:全索引扫描,和全表扫描类似,但这个是把索引树遍历一次,会比全表扫描要快。
range:基于索引字段进行范围查询,如between、<、>、in....等操作时出现的情况。
index_subquery:和上面含义相同,区别:这个是基于非主键、唯一索引字段进行in操作。
unique_subquery:执行基于主键索引字段,进行in操作的子查询语句会出现的情况。
index_merge:多条件查询时,组合使用多个索引来检索数据的情况。
ref_or_null:基于次级(非主键)索引做条件查询时,该索引字段允许为null出现的情况。
fulltext:基于全文索引字段,进行查询时出现的情况。
ref:基于非主键或唯一索引字段查找数据时,会出现的情况。
eq_ref:连表查询时,基于主键、唯一索引字段匹配数据的情况,会出现多次索引查找。
const:通过索引一趟查找后就能获取到数据,基于唯一、主键索引字段查询数据时的情况。
system:表中只有一行数据,这是const的一种特例。
null:表中没有数据,无需经过任何数据检索,直接返回结果。展开评论点赞 - #青训营笔记创作活动#
2023年2月15日 打卡day 43
找到你感兴趣的开源库
搜索Github然后查看Issues列表
一般社区都会不定期发布一些新手任务,我们可以先从简单的任务开始。
其中,我们发现其中一个issue是Hertz准备对服务注册与发现进行拓展。我们查看一下这个issue的详情,可以看到包括了以下几个部分
这个issue的描述以及目的
代码仓库在哪里
可参考的API
等等展开评论点赞 - #青训营笔记创作活动#
2023年2月14日 打卡day42
分库分表存在的问题
1、事务问题
在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
2、跨库跨表的join问题
在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联操作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
3、额外的数据管理负担和数据运算压力
额外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于一个记录用户成绩的用户数据表userTable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order by语句就可以搞定,但是在进行分表之后,将需要n个order by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。
展开评论点赞 - #青训营笔记创作活动#
2023年2月12日 打卡day41
debug代码是一个常用而且很常见的技能,但是不是每个人都能很有效率的debug代码...
有一些idea隐藏的debug方式,虽然一些人不关注,但是有用并且能极大提升效率
文章主要介绍一些一些在实际项目中相对有用的可以提升debug能力的一些经验。最后如果说实在是有问题,但是又没办法进入调试模式,可以考虑arthas的trace和watch。展开评论点赞 - #青训营笔记创作活动#
2023年2月11日 打卡day40
幂等处理怎么用Redis实现?
比如我们有一个支付接口,一个订单号只能被支付一次
客户端先调用获取token的接口,后台生成一个token,返回给前端,同时存储在redis里边,设置一定时间过期
客户端带上token,调用支付接口,后台判断是否有这个token,有则说明是第一次访问
删除token
然后执行业务
第二次访问时,检测到没有token,则不允许执行,确保幂等性
展开评论点赞 - #青训营笔记创作活动#
2023年2月10日 打卡day39
map() 对值应用(调用)作为参数的函数,然后将返回的值包装在 Optional 中。这就使对返回值进行链式调用的操作成为可能 —— 这里的下一环就是 orElse() 。
flatMap() 也需要函数作为参数,并对值调用这个函数,然后直接返回结果
除了转换值之外,Optional 类也提供了按条件“过滤”值的方法。
filter() 接受一个 Predicate 参数,返回测试结果为 true 的值。如果测试结果为 false,会返回一个空的 Optional。展开评论点赞