实习笔记
技术企鹅
北邮在读;
专精Java后端方向;
偶尔研究视觉和图形学;
base北京;
前JDL后端实习生,现阿里后端实习生;
展开
-
实习笔记 5
实习收获笔记 5 整理了业务的一张庞大的表的表关系,由于企业级的数据库往往不是高范式的,所以真正的表关系往往藏在代码里面,花了一段时间去做这件事情,占用了本周主要的时间。读表可以更快更深地去理解业务。 学习了更上层的后端开发思想:思考空间、时间,关心机器的性能。 深入了ClassLoader,想出了集中应用的方式,比如作为二方、三方库时保护核心代码等等。 订阅模式/监听模式应用于缓存内存的同步,业务背景:某些查询频繁的数据会在启动时被全量读取到缓存或内存中,但是仍然会有动态的更改,监听这个变更信息,即使同原创 2021-07-23 17:45:42 · 115 阅读 · 0 评论 -
实习笔记 4 MySQL深入/JVM深入
实习收获笔记 4 MySQL 1. InnoDB引擎 自适应哈希索引与B+树同时作为索引 AIO硬盘读写 B+树兼顾了查询次数(通常业务场景是4层左右)和内存连贯性,避免系统上的页面转换。 2. 优化 分库分表:单机单表能力有限,千万级开始考虑划分;垂直划分水平划分;注意主键全局唯一性,Unicode可以保证,但是查询效率不高,可以单独维护服务器分发递增唯一主键。 读写分离:原因是优化索引利于读不利于写,数据库本身也有读快写慢的性质,会出现单机上写入影响查询效率的情况;利用主从复制,主写从读。 索引:原创 2021-07-20 09:21:57 · 104 阅读 · 0 评论 -
实习笔记 3
实习收获笔记 3 学习了Arthas开源Java线上诊断工具,了解其优势和弊端。可以更优雅地显示官方诊断集能显示的内容,比如线程信息、JVM状态等等,并且开销低,相对安全稳定。但是Arthas仍然不推荐用于分析问题,仅可作为临时排查问题的工具,毕竟属于第三方侵入性应用,对线上环境存在一定的威胁,一旦产生问题,后果难以承担。 学习了利用火焰图诊断高CPU问题,了解了某案例,关于可以写在循坏外的高耗时调用被写入了循环内,导致日常环境为被检测出来,但在QPS激增时出现问题。一定要敏感高耗时调用的被调用次数(时间原创 2021-07-16 09:00:16 · 79 阅读 · 0 评论 -
实习笔记 2
实习收获笔记 2 初步熟悉了持久化(关系型)、缓存(非关系)、消息队列、定时任务、配置、开关方面的中间件。了解了大概的maven配置和调用方法,大致了解应用场景,读懂了现有项目的相关代码。 了解了集团数据库分库分表中间件实现主键唯一的方法。采用的是单独维护一个id分配集群,每个节点负责一段id的发放,一次发放一组,节点间互相可见从而实现id的唯一性。同时需要在项目数据库中额外维护一个表来管理id,代码层面也有对应的DAO。 消息队列的意义:削峰、提速(异步)、解耦、广播。常见问题:“异步”的特性为什么不用原创 2021-07-15 08:53:31 · 88 阅读 · 0 评论 -
实习笔记 1
实习收获笔记 1 敏捷配置了maven设置,第二次配大环境了,一下午搞定。 “埋点”一次的概念:为了获得数据而产生的预留点。 Mybatis:#{},${}的区别,前者是预处理,传到sql语句里是字符串,后者直接传进来,有sql注入风险。 分库分表的相关问题:目的是解决因单表单库巨大而带来的数据库负载增加,MySQL的话,到千万级通常就可以考虑分表了。五千万或一亿以上必须分表。分库分表分为水平划分和垂直划分。垂直划分类似提高范式,按照实际业务逻辑和处理流程来划分,分字段。而水平划分就是横着切一刀,通常可以原创 2021-07-14 09:04:53 · 76 阅读 · 0 评论