
获得徽章 11
- #青训营笔记创作活动#
2月8日 打卡day42
今日学习MySQL解决单表数据量太大,查询变慢问题,可以有三种方案。
1.数据表分区适用于查询只在某个区且没有联合查询的场景,优点是物理上文件进行拆分,不会影响的业务逻辑的sql。
2.数据表分表适用于数据可以完整按照区间划分且无法区分明显的冷热区,将大表拆分成小表,提高查询插入等效率。
3.冷热归档分库适用于数据冷热分区明显,冷数据使用频率极低,这种方式数据迁移的过程对业务的影响较小,开发量也较少减少成本,但是需要确认分表规则。展开评论点赞 - #青训营笔记创作活动#
2月6日 打卡day41
今日学习Debug的技巧。
1.debug代码是一个常用而且很常见的技能,但是不是每个人都能很有效率的debug代码...
2.有一些idea隐藏的debug方式,虽然一些人不关注,但是有用并且能极大提升效率
3.文章主要介绍一些在实际项目中相对有用的可以提升debug能力的一些经验。最后如果说实在是有问题,但是又没办法进入调试模式,可以考虑arthas的trace和watch。展开评论点赞 - #青训营笔记创作活动#
2月5日 打卡day40
今日学习Redis "高级"应用场景 -- 限流、延时队列、幂等处理。Redis实现限流有固定窗口计数、滑动窗口计数、漏桶和令牌桶算法。可以通过ZSet存储定时任务的方式实现延时队列。评论点赞 - #青训营笔记创作活动#
2月4日 打卡day39
今日学习利用Optional解决空指针异常。Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerException)。当我们对对象的属性进行检查,判断它的值是否为期望的格式,最终却发现我们查看的并不是一个对象,而是一个空指针,它会立即抛出一个让人厌烦的 NullPointerException 异常。
本质上,Optional 类是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。展开评论点赞 - #青训营笔记创作活动#
2月3日 打卡day38
今日学习实现真正的高性能高并发的上亿级别秒杀系统!设计应对瞬时高并发的场景可以从下面8个方面入手。
1.页面静态化
2.CDN加速
3.负载均衡
4.防重
5.缓存
6.异步
7.熔断、限流
8.分布式锁
总而言之:分层过滤,分而治之。
展开评论点赞 - #青训营笔记创作活动#
2月2日 打卡day37
今日学习安全且正确使用缓存。实际使用场景中,对于一致性要求不是特别高、且并发量不是特别大的场景,可以选择基于数据库事务保证的先更新数据库再更新/删除缓存。而对于并发要求较高、且数据一致性要求较好的时候,推荐选择先更新数据库,再删除缓存,并结合删除重试 + 补偿逻辑 + 缓存过期TTL等综合手段。展开评论点赞 - #青训营笔记创作活动#
2月1日 打卡day36
今日学习go基础语法50问。这篇文章50个细节问题帮助我们对go的基础知识进行查缺补漏,作为一个一天粗略过了一遍go语法就开始写web的人,里面大部分我都说不清,值得一看。评论点赞 - #青训营笔记创作活动#
1月31日 打卡day35
今日学习使用 Go HTTP 框架 Hertz 进行 JWT 认证。hertz-jwt 是 Hertz 众多外部扩展组件之一,Hertz 丰富的扩展生态为开发者带来了很大的便利,值得我们在本文之外自行探索。展开评论点赞 - #青训营笔记创作活动#
1月30日 打卡day34
今日学习MySQL索引原理篇。MySQL的索引机制中,有一点可谓是路人皆知,既默认使用B+Tree作为底层的数据结构,但为什么要选择B+树呢?有人会说树结构是以二分法查找数据,所以会在很大程度上提升检索性能,这点确实没错,但树结构有那么多,MySQL为什么不选二叉树、AVL树、红黑树或B树呢?这篇文章从原理上做了详细的介绍。此外还介绍了索引建立、查询和维护的过程。展开评论点赞 - #青训营笔记创作活动#
1月29日 打卡day33
今日学习为什么说MySQL单表函数不要超过2000w,文末的总结如下:
1.Mysql 的表数据是以页的形式存放的,页在磁盘中不一定是连续的。
2.页的空间是 16K, 并不是所有的空间都是用来存放数据的,会有一些固定的信息,如,页头,页尾,页码,校验码等等。
3.在 B+ 树中,叶子节点和非叶子节点的数据结构是一样的,区别在于,叶子节点存放的是实际的行数据,而非叶子节点存放的是主键和页号。
4.索引结构不会影响单表最大行数,2kw 也只是推荐值,超过了这个值可能会导致 B + 树层级更高,影响查询性能。展开评论点赞