- 博客(16)
- 收藏
- 关注
原创 T31训练营笔记(14)课程总结
1. 基础知识1.1 提升点:学习能力、思维能力、专业能力1.2 如何学习:记忆、理解、表达、融会贯通1.3 快速学习:抓住关键信息、提升摄入质量、加快内化速度、形成知识网络1.4 数据结构:指逻辑意义上的数据组织方式以及相应的处理方式2. 代码规范2.1 编码规约意义:减少代码维护成本、改善可读性、提高团队开发的合作效率、锻炼出更加严谨的思维、身心愉快2.2 代码注释作用提高代码可读性、使程序条理清晰、方便后期代码维护、方便程序员间交流沟通、生成帮助文档、警示作用防止踩坑3. Ja
2021-12-03 12:57:33
325
原创 T31训练营笔记(13)系统健壮性设计
1. 代码评审1.1 代码评审作用熵减的过程、团队成长、提升代码规范度、提升代码质量1.2 如何做CR统一的编码与设计规范完整的技术架构说明与示例不定期的Review会议小项目10天/次,大项目15天/次,前期可以密集一些,后续考虑1月/次2. 健壮性与鲁棒性2.1 含义异常情况、特殊环境、超限情况,依然能够稳定运行2.2 健壮性度量(1)架构:负载均衡、容灾能力(2)代码:参数校验、异常处理、分支覆盖(3)环境:混沌工程、异地多活3. 如何构建健壮性的系统3.1 负载均
2021-11-25 16:13:47
575
原创 T31训练营笔记(12)Redis 分布式锁
1. 分布式锁简介1.1 简介在分布式架构下,在 JVM 之间,使用分布式锁解决跨 JVM 进程的线程安全问题。2. Redis 分布式锁分析2.1 Redis 分布式锁原理2.1.1 借助 setnx 和 expire 命令完成2.1.2 原理解析(1)key 不存在时创建,并设置 value 和过期时间,返回值为1;成功获取到锁(2)key 存在时,直接返回0,获取锁失败(3)持有锁的线程释放锁时,手动删除 key;或者过期时间到,key 自动删除,锁释放2.1.3 加锁的问题问
2021-11-23 14:07:15
1341
原创 T31训练营笔记(11)用户系统实现
1. JWT1.1 定义Json web token,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。定义了一种简洁的、自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。1.2 组成(1)Header 头部:包含了两部分,token 类型、采用的加密算法(2)Payload 负载:存放信息的地方(3)Signature 签名:使用编码后的 header 和 payload 以及我们提供的一个密钥,使用 header 中指定的签名算法进行签名。1.3 为什么使用J
2021-11-20 16:57:57
406
原创 T31训练营笔记(10)单元测试与系统安全规约
1. 单元测试规约1.1 是什么对软件组成单元进行的测试。目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试。1.2 AIR 原则A:Automatic 自动化I:Independent 独立性R:Repeatable 可重复性1.3 BCDE 原则B:Border 边界值测试C:Correct 正确的输入得到正确的结果D:Design 与设计文档结合E:Error 证明程序有错1.4 常用框架JUnit、Mockito、Spring-Test
2021-11-18 08:18:35
4306
原创 T31训练营笔记(9)OAuth2
1. OAuth2是什么1.1 OAuth2是什么OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。资源所有者同意以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。1.2 OAuth2的角色Resource Owner 资源拥有者Client 客户端Authorization Server 授权服务器Resource Server资源服务器User Agent 用户代理1.3 OAuth2授权模式authorization codeimplic.
2021-11-15 14:54:13
416
原创 T31训练营笔记(8)集合与并发编程
1. T31系统功能树1.1 用例图与功能树(1)用例图关注有哪些角色,角色能够干什么(2)功能树关注有哪些大的功能模块,功能模块能够实现什么能力1.2 部署图关注部署元素:微服务、数据库关注部署关联元素:注册中心、消息中间件2. 集合规约2.1 数据结构与时间复杂度(1)数据结构指逻辑意义上的数据组织方式及其相应的处理方式(2)数据处理方式:增删改查(3)时间复杂度从好到坏:常数级、对数级、线性级、线性对数级、平方级、指数级、阶乘级(4)数据结构的优化与运算规模有关,也与调用频率有关
2021-11-13 17:45:27
648
原创 T31训练营笔记(7)Java代码避坑指南
1. 浮点数据的处理1.1 任何货币金额均以最小货币单位且整型类型来进行存储1.2 浮点类型存在精度丢失1.3 浮点数据避坑(1)浮点数据之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断,可以指定一个误差范围(2)BigDecimal的等值比较应使用compareTo()方法,而不是equals()方法(3)禁止使用构造方法BigDecimal(double)的方式把double值转化为BigDecimal对象2. 日期数据的处理2.1 Java8新增日期
2021-11-11 08:50:06
393
原创 T31训练营笔记(6)编码规约
1. 编码规约缘起1.1 编码规约存在的意义减少代码的维护成本改善可读性提高团队开发的合作效率锻炼出更加严谨的思维身心愉快2. 代码格式与命名风格2.1 两个要求(1)命名体现代码元素特征抽象类命名使用Abstract或Base开头异常类命名使用Exception结尾测试类命名以它要测试的类名开始,以Test结尾类型与中括号紧挨相连来定义数组枚举类名带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开(2)命名最好望文知意不规范的缩写会导致理解成本增加望文知意指的是英
2021-11-09 08:20:13
304
原创 T31训练营笔记(5)技术架构选型
1. 关于技术选型1.1 为什么要进行技术选型降低开发成本、提高研发效率1.2 微服务架构的产生(1)第一代单体应用,所有模块打包到一起部署运行。特点:不可靠、单维扩展、不可持续发展。(2)SOA,面向服务架构,它是一种设计方法,自上而下,服务间松散耦合。特点:ESB没有解决局势应用的一些问题、服务拆分力度很大。(3)微服务,去中心化的SOA拓展,强调服务彻底的组件化,一个组件就是一个产品,服务切分力度更小,设计上更多的是自下而上的。特点:业务隔离、并行开发、易于运维、单独部署。1.3
2021-11-06 12:39:34
1960
原创 T31训练营笔记(4)工程结构规约
1. 应用分层1.1 为什么要分层可扩展性、可维护性1.2 分层领域模型DO、DTO、BO、Query、VO2. Maven2.1 什么叫做构建使用javac编译、根据环境读取资源文件、打包2.2 Maven的主要功能依赖管理、规范目录结构、完整的项目构建阶段、支持多种插件2.3 GAVgroupId、artifactId、version2.4 Maven的依赖仲裁(1)按照DependencyManager版本进行仲裁(2)如无仲裁声明,则按照依赖最短路径确定版本(3)若相同路
2021-11-04 11:53:49
1460
原创 T31 错误码设计
public enum ErrorCodeEnum { SUCCESS("00000", "成功","操作成功"), USER_ERROR_A0100("A0100", "用户注册错误","注册失败,请重新注册!"), USER_ERROR_A0101("A0101", "用户未同意隐私协议","注册失败,请重新注册!"), USER_ERROR_A0102("A0102", "用户名已存在","用户名已存在,请重新注册!"), USER_ERROR_A0103(.
2021-11-02 16:20:09
219
原创 T31训练营笔记(3)异常处理与日志
1. Java异常体系1.1 Java异常处理机制生成异常、捕获异常、抛出异常、声明异常1.2 Java异常体系Throwable、Error、Exception、非受查异常、受查异常2. 异常处理2.1 异常抛出与捕获的原则(1)非必要不使用异常(2)使用描述性消息抛出异常(3)力所能及的异常一定要处理(4)异常忽略要有理有据2.2 异常处理流程(1)try...catch...finally(2)try with resource2.3 foreach遍历集合的异常(1)不要
2021-11-02 08:21:48
138
原创 T31训练营笔记(2)MySQL设计规约
1.建表规约1.1 表、字段命名(1)必须使用小写字母或数字(2)禁止出现数字开头(3)禁止两个下划线中间只出现数字(4)不使用复数名词(5)禁用保留字(6)是与否概念的字段,必须使用 is_xxx 的方式命名1.2 数据类型(1)小数类型为decimal(2)货币数据使用最小货币单位,数据类型为bigint(3)字符串长度几乎相等使用char(4)varchar长度不要超过50001.3 表必备三字段id、create_time、update_time2.索引规
2021-10-30 17:33:00
159
原创 T31训练营笔记(1)架构设计
1. 需求分析1.1 定义理解和挖掘用户的诉求、以及背后的逻辑,转化成可行性的分析结果。从非结构化到结构化,确定系统的职责、模块的过程。1.2 需求的三个注意点边界、用户故事、用户路径分析需求背后的人性:人性是提出需求的本源1.3 伪需求、权力需求的应对1.3.1 伪需求应对(1)用数据化结果否定需求合理性(2)用正反案例来说明需求需要改进的地方(3)用户路径和触点推演需求合理性1.3.2 权力需求应对(1)先肯定需求价值再提出需求实现的成本(2)给出更好的需求
2021-10-28 08:42:04
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人