获得徽章 1
#青训营笔记创作活动#
2月8日 打卡Day10
分库、分表是什么,为什么,怎么分
分库因为容量、连接数
分表因为聚簇索引结构的 B+tree 层级变高
垂直拆分、水平拆分
数据存在哪个库的表
1、取模算法
2、范围限定算法
3、范围 + 取模算法
4、地理位置分片
5、预定义算法
分库分表导致的问题
1、分页、排序、跨节点联合查询
2、事务一致性
3、全局唯一的主键
4、多数据库高效治理
5、历史数据迁移
分库分表架构模式
1、客户模式
2、代理模式
如何抉择
1、性能
2、复杂度
3、升级
4、治理、监控
展开
评论
#青训营笔记创作活动#
2月7日 打卡Day9
1 瞬时高并发
2 页面静态化
3 秒杀按钮
4 读多写少
5 缓存问题
5.1 缓存击穿
5.2 缓存穿透
6 库存问题
6.1 数据库扣减库存
6.2 redis扣减库存
6.3 lua脚本扣减库存
7 分布式锁
7.1 setNx加锁
7.2 set加锁
7.3 释放锁
7.4 自旋锁
7.5 redisson
8 mq异步处理
8.1 消息丢失问题
8.2 重复消费问题
8.3 垃圾消息问题
8.4 延迟消费问题
9 如何限流?
9.1 对同一用户限流
9.2 对同一ip限流
9.3 对接口限流
9.4 加验证码
9.5 提高业务门槛
展开
评论
#青训营笔记创作活动#
2月4日 打卡Day8
索引
基本操作:创建、查询、删除、指定索引查询
索引分类
按数据结构分:B+Tree、Hash、R-Tree、T-Tree
按字段数量分:单列索引、多列索引
按功能逻辑分(面试):全文索引(搜索模式)、空间索引
按存储方式分:聚簇索引、非聚簇索引
展开
评论
#青训营笔记创作活动#
2月3日 打卡Day7
1.注释尽可能全面,写有意义的方法注释
2.项目拆分合理的目录结构
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。
4. 封装方法形参
5. 封装通用模板
6. 封装复杂的逻辑判断条件
7. 保持优化性能的嗅觉
8. 可变参数的配置化处理
9. 会总结并使用工具类。
10. 控制方法函数复杂度
11. 在finally块中对资源进行释放
12.把日志打印好
13. 考虑异常,处理好异常
14. 考虑系统、接口的兼容性
15. 代码采取措施避免运行时错误
展开
评论
#青训营笔记创作活动#
2月2日 打卡Day6
1、规范命名
2、规范代码格式
3、写好代码注释
4、try catch 内部代码抽成一个方法
5、方法别太长
6、抽取重复代码
7、多用return
8、if条件表达式不要太复杂
9、优雅地参数校验
10、统一返回值
11、统一异常处理
12、尽量不传递null值
13、尽量不返回null值
14、日志打印规范
15、统一类库
16、尽量使用工具类
17、尽量不要重复造轮子
18、类和方法单一职责
19、尽量使用聚合/组合代替继承
20、使用设计模式优化代码
21、不滥用设计模式
22、面向接口编程
23、经常重构旧的代码
24、null值判断
25、pojo类重写toString方法
26、魔法值用常量表示
27、资源释放写到finally
28、使用线程池代替手动创建线程
29、线程设置名称
30、涉及线程间可见性加volatile
31、考虑线程安全问题
32、慎用异步
33、减小锁的范围
34、有类型区分时定义好枚举
35、远程接口调用设置超时时间
36、集合使用应当指明初始化大小
37、尽量不要使用BeanUtils来拷贝属性
38、使用StringBuilder进行字符串拼接
39、@Transactional应指定回滚的异常类型
40、谨慎方法内部调用动态代理的方法
41、需要什么字段select什么字段
42、不循环调用数据库
43、用业务代码代替多表join
44、装上阿里代码检查插件
45、及时跟同事沟通
展开
评论
下一页
个人成就
文章被阅读 1,352
掘力值 178
收藏集
0
关注标签
12
加入于