获得徽章 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、及时跟同事沟通展开评论点赞 - #青训营笔记创作活动#
2月1日 打卡day5
结论
①客户端转服务端,最大的挑战不是学一门新语言,而是编程思维的改变。
②“三刷”官方文档是高效学习一门新的编程语言的制胜法宝。
1刷从头看到尾,扫清知识盲点,搞清楚概念;
2刷必须手敲,而且要写注释和总结;
3刷先只写注释,不看文档实现功能,遇到问题再和文档比较,加深理解。如果还有余力,整理成文章,帮助大家学习、回馈社区。
③在掌握Go基础之后,也可以通过“三刷”的方式掌握SQL,Redis,Linux,Nginx的基础知识点,这样就有能力开发Web项目了。
④要进阶就要学“微服务”和“DDD”!展开评论点赞 - #青训营笔记创作活动#
1月31日 打卡day4
git clone:将存储库克隆到本地。
git init:在目录中创建新的 Git 仓库。
git remote:管理跟踪远程仓库。
git checkout:切换分支。
git branch:查看、创建、删除分支。
git tag:创建、删除、查看标签。
git add:将本地文件添加到暂存区。
git commit:将暂存区内容添加到本地仓库中。
git push:将本地分支推送到远程仓库。
git pull:从远程仓库拉取代码并合并到本地当前分支。
git fetch:从远程获取代码库。
git cherry-pick:获取指定的 commit。
git merge:分支合并。
git rebase:分支变基。
git reset:退回某一次提交的版本。
git revert:回滚某一次提交记录。
git stash:暂存文件。
git reflog:记录了所有的 commit 操作记录。
git rm:删除指定文件。
git log:查看 git commit 记录。展开评论点赞 - #青训营笔记创作活动#
1月30日 打卡day3
Appsmith:主要用于构建管理面板、内部工具和仪表板等,允许拖放 UI 组件。
LowCodeEngine:出自阿里巴巴,快速定制符合自己业务需求的低代码平台。
Amis:出自百度,通过 JSON 配置就能生成各种后台页面。
tmagic-editor:出自腾讯,通过拖拽和配置,自助生成H5页面、PC页面、TV页面。
dooring-electron-lowcode:H5落地页。
还有vite-vue3-lowcode、shida、quark-h5、gods-pen、luban-h5、mometa、h5-factory、steedos-platform、lz-h5-edit、tefact、fast-poster、openDataV、mall-cook、form-generator、vjdesign。展开评论点赞 - #青训营笔记创作活动#
1月29日 打卡day2
1. 距离下次生日还有多少天:moment.js
2. 到顶部:scrollTo、scrollTop
3. 复制文本:clipboardData
4. 防抖/节流:(最后一次触发为准/只触发一次)
5. 过滤标点符号等特殊字符:RegExp
6. 常用正则判断:名字、手机号、密码
7. 初始化数组:Array(n).fill()
8. 将 RGB 转换为十六进制:左移运算
9. 检测是否是一个函数:typeof obj[.nodeType|item]
10. 检测是否为一个安全数组:Array.isArray
11. 检测对象是否为一个安全对象:typeof、isArray、Object.keys(obj).length展开评论点赞 - #青训营笔记创作活动#
1月28日 打卡day1
1. GitHub Desktop
2. 图片在线压缩
3. 在线代码编辑
4. JSON格式化
5. 代码生成图片
6. 表情符号
7. 矢量图标-iconfont
8. css3动画
9. 封面模板-canva
10. 高清图片-UnSplash
11. 在线画图
12. 快速部署建站
13. 在线性能评测
14. 多平台测试
15. Chrome扩展组件
16. 在线简历展开评论点赞