获得徽章 1
#青训营笔记创作活动#
1月20日 day27
分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。
分库分表是由分库和分表这两个独立概念组成的,只不过通常分库与分表的操作会同时进行,以至于我们习惯性的将它们合在一起叫做分库分表。
为了减少数据库的负担,提升数据库响应速度,缩短查询时间,这时候就需要进行分库分表。
1月20日 day27
分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。
分库分表是由分库和分表这两个独立概念组成的,只不过通常分库与分表的操作会同时进行,以至于我们习惯性的将它们合在一起叫做分库分表。
为了减少数据库的负担,提升数据库响应速度,缩短查询时间,这时候就需要进行分库分表。
展开
评论
点赞
#青训营笔记创作活动#
1月15日 day26
所谓的缓存,其实就是一个位于应用程序与数据库之间的一层,作用就是减少访问数据库的次数,以提高服务性能。
【先删除缓存,再更新数据库】在读写并发时,会产生缓存是旧数据,而数据库是新数据的问题,这该如何解决呢?
解决这样的问题,其实最好的方式就是在执行完更新数据库的操作后,先休眠一会儿,再进行一次缓存的删除,以确保数据一致性,这也就是市面上给出的主流解决方案--延时双删。
1月15日 day26
所谓的缓存,其实就是一个位于应用程序与数据库之间的一层,作用就是减少访问数据库的次数,以提高服务性能。
【先删除缓存,再更新数据库】在读写并发时,会产生缓存是旧数据,而数据库是新数据的问题,这该如何解决呢?
解决这样的问题,其实最好的方式就是在执行完更新数据库的操作后,先休眠一会儿,再进行一次缓存的删除,以确保数据一致性,这也就是市面上给出的主流解决方案--延时双删。
展开
评论
点赞
#青训营笔记创作活动#
1月14日 day25
对于相同的请求,如果匹配到缓存则直接返回缓存的结果即可,不用再次去执行查询数据库以及业务维度的运算逻辑。
缓存作为互联网类软件系统架构与实现中的基石般的存在,不仅仅是在系统扛压或者接口处理速度提升等性能优化方案,在其他多个方面都可以发挥其独一无二的关键价值。
1月14日 day25
对于相同的请求,如果匹配到缓存则直接返回缓存的结果即可,不用再次去执行查询数据库以及业务维度的运算逻辑。
缓存作为互联网类软件系统架构与实现中的基石般的存在,不仅仅是在系统扛压或者接口处理速度提升等性能优化方案,在其他多个方面都可以发挥其独一无二的关键价值。
展开
评论
点赞
#青训营笔记创作活动#
1月13日 day24
设计秒杀系统需要注意的9个细节。
1 瞬时高并发
2. 页面静态化
3 秒杀按钮
4 读多写少
5 缓存问题
6 库存问题
7 分布式锁
8 mq异步处理
9 如何限流?
1月13日 day24
设计秒杀系统需要注意的9个细节。
1 瞬时高并发
2. 页面静态化
3 秒杀按钮
4 读多写少
5 缓存问题
6 库存问题
7 分布式锁
8 mq异步处理
9 如何限流?
展开
评论
点赞
#青训营笔记创作活动#
1月12日 day23
公钥负责加密,私钥负责解密。公钥人人可得,私钥永远不泄露。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
HTTPS相当于HTTP+TLS,目前主流的是TLS1.2,基于TCP三次握手之后,再来TLS四次握手。
1月12日 day23
公钥负责加密,私钥负责解密。公钥人人可得,私钥永远不泄露。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
HTTPS相当于HTTP+TLS,目前主流的是TLS1.2,基于TCP三次握手之后,再来TLS四次握手。
展开
评论
点赞
#青训营笔记创作活动#
1月11日 day22
Redis(Remote Dictionary Server)是一个开源的、键值对型的数据存储系统。使用C语言编写,遵守BSD协议,可基于内存也可持久化的日志型数据库,提供了多种语言的API,被广泛用于数据库、缓存和消息中间件。并且支持多种类型的数据结构,用于应对各种不同场景。可以存储多种不同类型值之间的映射,支持事务,持久化,LUA 脚本以及多种集群方案等。
1月11日 day22
Redis(Remote Dictionary Server)是一个开源的、键值对型的数据存储系统。使用C语言编写,遵守BSD协议,可基于内存也可持久化的日志型数据库,提供了多种语言的API,被广泛用于数据库、缓存和消息中间件。并且支持多种类型的数据结构,用于应对各种不同场景。可以存储多种不同类型值之间的映射,支持事务,持久化,LUA 脚本以及多种集群方案等。
展开
评论
点赞
1月9日 day21
MySQL也提供了索引机制,索引是数据库中的核心组件之一,一张表中建立了合适的索引后,往往在面对海量数据查询时,能够事半功倍。
索引就是用来帮助表快速检索目标数据的
MySQL也提供了索引机制,索引是数据库中的核心组件之一,一张表中建立了合适的索引后,往往在面对海量数据查询时,能够事半功倍。
索引就是用来帮助表快速检索目标数据的
评论
点赞
#青训营笔记创作活动#
1月7日。day20
对数据库整体来说,索引带来的优势会大于劣势。不过也正由于索引存在弊端,因此索引不是越多越好,合理建立索引才是最佳选择。
数据表的主键,最好选用带顺序性的值,否则有可能掉入主键索引的“陷阱”中。
查询条件中,未包含联合索引的第一个字段,想要使用联合索引,那么查询条件中必须包含索引的第一个字段。
MySQL也无法通过前缀索引来完成ORDER BY、GROUP BY等分组排序工作,同时也无法完成覆盖扫描等操作。
全文索引的文件会额外的大!在检索中文时,存在些许精准度问题。
1月7日。day20
对数据库整体来说,索引带来的优势会大于劣势。不过也正由于索引存在弊端,因此索引不是越多越好,合理建立索引才是最佳选择。
数据表的主键,最好选用带顺序性的值,否则有可能掉入主键索引的“陷阱”中。
查询条件中,未包含联合索引的第一个字段,想要使用联合索引,那么查询条件中必须包含索引的第一个字段。
MySQL也无法通过前缀索引来完成ORDER BY、GROUP BY等分组排序工作,同时也无法完成覆盖扫描等操作。
全文索引的文件会额外的大!在检索中文时,存在些许精准度问题。
展开
评论
点赞
#青训营笔记创作活动#
1月6日 day19
在线可视化管理数据库的开源工具Bytebase,不仅可以方便地管理数据库,还支持SQL审核和备份恢复,
Bytebase确实是一款实用的数据库管理及变更工具,让我们在没有客户端的情况下也能方便地进行数据库管理,它的SQL审核功能可以避免开发人员对数据库的误操作。
1月6日 day19
在线可视化管理数据库的开源工具Bytebase,不仅可以方便地管理数据库,还支持SQL审核和备份恢复,
Bytebase确实是一款实用的数据库管理及变更工具,让我们在没有客户端的情况下也能方便地进行数据库管理,它的SQL审核功能可以避免开发人员对数据库的误操作。
展开
评论
点赞
#青训营笔记创作活动#
1月5日 day18
慢SQL优化思路。
1。慢查询日志记录慢SQL
2。explain分析SQL的执行计划
3。profile 分析执行耗时
4。Optimizer Trace分析详情
5。确定问题并采用相应的措施
1月5日 day18
慢SQL优化思路。
1。慢查询日志记录慢SQL
2。explain分析SQL的执行计划
3。profile 分析执行耗时
4。Optimizer Trace分析详情
5。确定问题并采用相应的措施
展开
评论
点赞
#青训营笔记创作活动#
1月4日 day17
SQL语句都诞生于客户端,主要有两种方式产生一条SQL,一种是由开发者自己手动编写,另一种则是相关的ORM框架自动生成,一般情况下,MySQL运行过程中收到的大部分SQL都是由ORM框架生成的,比如Java中的MyBatis、Hibernate框架等
「数据库连接池」和「线程池」的思想相同,会将数据库连接这种较为珍贵的资源,利用池化技术对这种资源进行维护。也就代表着之后需要进行数据库操作时,不需要自己去建立连接了,而是直接从「数据库连接池」中获取,用完之后再归还给连接池,以此达到复用的效果
1月4日 day17
SQL语句都诞生于客户端,主要有两种方式产生一条SQL,一种是由开发者自己手动编写,另一种则是相关的ORM框架自动生成,一般情况下,MySQL运行过程中收到的大部分SQL都是由ORM框架生成的,比如Java中的MyBatis、Hibernate框架等
「数据库连接池」和「线程池」的思想相同,会将数据库连接这种较为珍贵的资源,利用池化技术对这种资源进行维护。也就代表着之后需要进行数据库操作时,不需要自己去建立连接了,而是直接从「数据库连接池」中获取,用完之后再归还给连接池,以此达到复用的效果
展开
评论
点赞
#青训营笔记创作活动#
1月3日 day 16
今日学习
502问题怎么排查
HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,由nginx发送502状态码,所以502报错不会出现在日志中。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
1月3日 day 16
今日学习
502问题怎么排查
HTTP状态码用来表示响应结果的状态,其中200是正常响应,4xx是客户端错误,5xx是服务端错误。
客户端和服务端之间加入nginx,由nginx发送502状态码,所以502报错不会出现在日志中。
如果发现502,优先通过监控排查服务端应用是否发生过崩溃重启,如果是的话,再看下是否留下过崩溃堆栈日志,如果没有日志,看下是否可能是oom或者是其他原因导致进程主动退出。如果进程也没崩溃过,去排查下nginx的日志,看下是否将请求打到了某个不知名IP端口上。
展开
评论
点赞
#青训营笔记创作活动#
1月1日 day15
今日学习
优秀后端具有的好习惯:
1.注释尽可能全面,写有意义的方法注释
2.项目拆分合理的目录结构
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。
4. 封装方法形参
5. 封装通用模板
6. 封装复杂的逻辑判断条件
7. 保持优化性能的嗅觉
8. 可变参数的配置化处理
9. 会总结并使用工具类
10. 控制方法函数复杂度
11. 在finally块中对资源进行释放
12.把日志打印好
13. 考虑异常,处理好异常
14. 考虑系统、接口的兼容性
15. 代码采取措施避免运行时错误
1月1日 day15
今日学习
优秀后端具有的好习惯:
1.注释尽可能全面,写有意义的方法注释
2.项目拆分合理的目录结构
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。
4. 封装方法形参
5. 封装通用模板
6. 封装复杂的逻辑判断条件
7. 保持优化性能的嗅觉
8. 可变参数的配置化处理
9. 会总结并使用工具类
10. 控制方法函数复杂度
11. 在finally块中对资源进行释放
12.把日志打印好
13. 考虑异常,处理好异常
14. 考虑系统、接口的兼容性
15. 代码采取措施避免运行时错误
展开
评论
点赞
#青训营笔记创作活动#
12月30日 day14
今日学习
数据交换方式:分组交换
标识的思想:MAC地址
因为世界存在着各式各样的网络,它们使用着不同的硬件设备。而如果要是这些相互不同的网络要互相通信,那么就意味着要面对因为不同硬件设备而带来的硬件地址转换上的复杂工作。所以产生了IP地址。
把许多计算机连接在一起形成了计算机网络,而把许多网络连接在一起就构成了互联网;一个覆盖范围更大的计算机网络,覆盖范围可以是全球。
12月30日 day14
今日学习
数据交换方式:分组交换
标识的思想:MAC地址
因为世界存在着各式各样的网络,它们使用着不同的硬件设备。而如果要是这些相互不同的网络要互相通信,那么就意味着要面对因为不同硬件设备而带来的硬件地址转换上的复杂工作。所以产生了IP地址。
把许多计算机连接在一起形成了计算机网络,而把许多网络连接在一起就构成了互联网;一个覆盖范围更大的计算机网络,覆盖范围可以是全球。
展开
评论
点赞
#第五届青训营阅读打卡#
12月20日 day14
今日学习
MySQL的架构
网络连接层、系统服务层、存储引擎层、以及文件系统层,往往编写SQL后,都会遵守着MySQL的这个架构往下走。
连接层:主要是指数据库连接池,会负责处理所有客户端接入的工作。
服务层:主要包含SQL接口、解析器、优化器以及缓存缓冲区四块区域。
存储引擎层:这里是指MySQL支持的各大存储引擎,如InnoDB、MyISAM等。
文件系统层:涵盖了所有的日志,以及数据、索引文件,位于系统硬盘上
12月20日 day14
今日学习
MySQL的架构
网络连接层、系统服务层、存储引擎层、以及文件系统层,往往编写SQL后,都会遵守着MySQL的这个架构往下走。
连接层:主要是指数据库连接池,会负责处理所有客户端接入的工作。
服务层:主要包含SQL接口、解析器、优化器以及缓存缓冲区四块区域。
存储引擎层:这里是指MySQL支持的各大存储引擎,如InnoDB、MyISAM等。
文件系统层:涵盖了所有的日志,以及数据、索引文件,位于系统硬盘上
展开
评论
点赞
#青训营笔记创作活动#
12月18日 day12
今日打卡
HTTPS会对HTTP的URL和Request Body都进行加密,HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
12月18日 day12
今日打卡
HTTPS会对HTTP的URL和Request Body都进行加密,HTTPS握手的过程中会先通过非对称机密去交换各种信息,其中就包括3个随机数,再通过这三个随机数去生成对称机密的会话秘钥,后续使用这个会话秘钥去进行对称加密通信。如果能获得这三个随机数就能解密HTTPS的加密数据包。
展开
评论
点赞
12月17日 day11
今日打卡
写出漂亮代码的45个小技巧
1、规范命名2、规范代码格式
3、写好代码注释
4、 ty catch 内部代码抽成一个方法
5、方法别太长
6、抽取里复代码
7、多用 retum
24、 nul 值判出断新25、 pojo 类重写 toString 方法
26、魔法值用常量表示
27、资源释放写到 fnally
28、使用线程池代替手动创建线程
29、线程设置名称
30、涉及线程间可见性加 volatile
31、考虑线程安全问题
B 、 i 条件表达式不要太复杂
9、优雅地参数校验10、统一返回值
11、统一异常处理
12、尽量不传递 nul 值
32、慎用异步33、减小锁的粒度写出漂亮代码的45个小技巧
34、定义好枚举
35、远程接口调用设置超时时间
36、集合使用应当指明初始化大小
37、尽量不要使用 BeanUtils 来捷贝属性
38、使用 StringBuilder 进行字特串拼接
39、@ Transactional 应指定回滚的异常类型
13、尽量不返回 nul 值14、日志打印规范
15、统一类库
16、尽量使用工具类
17、尽量不要重复造轮子
18、类和方法单一职责
19、尽量使用聚合/组合代替继承
20、使用设计式优化代码
21、不浩用设计模式
22、面向接口编程
40、谨慎方法内部调用动态代理的方法41、需要什么宇段 select 什么宇段
42、不循环调用数据库
43、用业务代码代替多表 join
44、装上阿里代码检直插件
45、及时跟同事沟通
今日打卡
写出漂亮代码的45个小技巧
1、规范命名2、规范代码格式
3、写好代码注释
4、 ty catch 内部代码抽成一个方法
5、方法别太长
6、抽取里复代码
7、多用 retum
24、 nul 值判出断新25、 pojo 类重写 toString 方法
26、魔法值用常量表示
27、资源释放写到 fnally
28、使用线程池代替手动创建线程
29、线程设置名称
30、涉及线程间可见性加 volatile
31、考虑线程安全问题
B 、 i 条件表达式不要太复杂
9、优雅地参数校验10、统一返回值
11、统一异常处理
12、尽量不传递 nul 值
32、慎用异步33、减小锁的粒度写出漂亮代码的45个小技巧
34、定义好枚举
35、远程接口调用设置超时时间
36、集合使用应当指明初始化大小
37、尽量不要使用 BeanUtils 来捷贝属性
38、使用 StringBuilder 进行字特串拼接
39、@ Transactional 应指定回滚的异常类型
13、尽量不返回 nul 值14、日志打印规范
15、统一类库
16、尽量使用工具类
17、尽量不要重复造轮子
18、类和方法单一职责
19、尽量使用聚合/组合代替继承
20、使用设计式优化代码
21、不浩用设计模式
22、面向接口编程
40、谨慎方法内部调用动态代理的方法41、需要什么宇段 select 什么宇段
42、不循环调用数据库
43、用业务代码代替多表 join
44、装上阿里代码检直插件
45、及时跟同事沟通
展开
评论
点赞
面试