
获得徽章 10
- #青训营笔记创作活动#
1月18日 打卡day43
作者介绍了如何进行开源库的pr流程。在Hertz库中拉去issues,选择自己感兴趣的issue,随后提交申请,在获取开发任务后fork仓库进行开发。开发完成后做好单侧的测试,填写并提交pr信息,在merge完成后还应当留意原作者的fix,做好建议的解决工作。展开评论点赞 - #青训营笔记创作活动#
1月17日 打卡day42
在MySQL中单表的数据量越大,业务执行的效率就越低。究其原因就在于当数据量多到一定程度时,b+树的结构使得增加索引带来的效果就不再明显。
解决方案有三个方向:
数据表分区,实际上就是将一张表的内容从一个文件拆分成好几个文件,按照需求建立索引分区
数据库分区,分为水平分表和垂直分表。前者就是将一张大表按一定规则拆分成不同的小表,其中保留了相同的属性字段。后者就是拆分原表的属性字段,竖直方向拆分大表。
最后就是冷热归档分库,实际上就是将不常用的冷数据分成另外的分区,减少大量冷数据对数据库查询的性能影响。展开评论点赞 - #青训营笔记创作活动#
1月16日 打卡day41
今天学习的文章是关于idea中debug技巧的。在平时的开发过程中,遇见bug几乎是不可避免的。如何利用好现有工具链实现最优化debug效率是十分重要的。
作者介绍了根据condition进入断点,不阻塞断点的开启方式,分组管理断点的好处,如何快速定位断点运行位置,回退断点和调试stream流的方式展开评论点赞 - #青训营笔记创作活动#
1月15日 打卡day40
今天的文章介绍了redis除了作为缓存这一主要功能的其他高级应用。
1. 使用redis实现限流操作,主要介绍了固定窗口计数滑动窗口计数,漏桶算法和令牌桶算法,以及各自的使用场景和优缺点。
2. 实现延时队列。介绍了key过期监听事件和zset两种方法。
3. redis实现布隆过滤器的方法,以及介绍了布隆过滤器的原理和应用场景
4. redis在幂等操作方面的处理
5. 介绍了redisincr的常见使用方法,登陆序列号和对限制登陆失败的防爆破应用展开评论点赞 - #青训营笔记创作活动#
1月14日 打卡day39
Java8之后,为了处理对象属性和方法的连环调用存在空指针异常,简化控制语句的繁杂。引入了optional类,该类用于处理nullpointerexception的情况。作者介绍了其中最常用的方法,of(),ofnullable(),empty(),ifpresent(),orelse()等,为我们展示了如何使用optional类优化判空语句。并且介绍了工厂方法的构造已经常用方法的源码实现。展开评论点赞 - #青训营笔记创作活动#
1月13日 打卡day38
真正高性能高并发的秒杀系统主要是考虑以下几个方面。
1. 对页面的优化,实现资源静态化,与主服务做隔离,并且通过cdn加载和同步秒杀js信息。
2. 使用负载均衡,分摊各服务器压力
3. 对缓存进行预热,防止缓存击穿,同时加上分布式锁避免缓存的过期。布隆过滤器也是必不可少的,避免缓存穿透带来的大量数据库io
4. 为了避免恶意重复下单,下单时也应当实现重复提交校验,黑名单校验和商品校验,进一步保证服务的正常运行。
5. 对于秒杀商品库存的处理,可以使用预扣库存和回退库存来避免数据库的io,同时要注意库存超卖和库存不足的问题,这些可以通过事务,分布式锁,redis队列实现。
展开评论点赞 - #青训营笔记创作活动#
1月12日 打卡day37
缓存作为现代架构中重要的组成部分。关于缓存的可靠性和数据的一致性一直以来是需要重要考虑的部分。
作者介绍了几个业务中可能遇见的缓存问题
缓存雪崩:数据短时间集体失效
缓存击穿:旁路系统中突然涌现的大量对冷数据的查询
缓存穿透:大量无效请求使得转向数据库查询
展开评论点赞 - #青训营笔记创作活动#
1月11日 打卡day36
初入门go语言,学习感觉只接触到了皮毛,对于一些基础问题的把握还是不到位。这篇文章汇总了一些go基础的问题,对于我这种初学者来说是很好的辅助。评论点赞 - #青训营笔记创作活动#
1月10日 打卡day35
今天的文章介绍了如何使用go中流行的http框架hertz进行jwt认证。jwt是一个用于验证用户身份的json对象。作者带领我们分析了hertz中提供的demo,一步步介绍了从用户注册到token认证的过程。最后还运行了demo实际展示了jwt认证的实际样貌。展开评论点赞 - #青训营笔记创作活动#
1月9日 打卡day34
这篇文章是作者MySQL索引系列的完结篇,作者在这篇文章中介绍了MySQL索引构成的底层数据结构,并介绍MySQL使用的是带反向指针的b+树的变种。除此之外,作者还介绍了各类索引在创建时的步骤已经增删改数据时索引树的变化。收益颇丰展开评论点赞