- 博客(14)
- 收藏
- 关注
原创 系统健壮性设计
代码评审熵减的过程减少系统混乱提高代码质量工程师互相review,扫除知识盲区,提升代码的质量团队成长养成团队成员间的交流文化,有利于团队的知识共享提升代码规范度通过代码审查,发现纠正不规范情况,慢慢形成良好开发规范健壮性与鲁棒性如何构建健壮的系统面向失败的架构思想混沌工程...
2021-11-25 14:15:22
264
原创 Redis分布式锁
分布式锁介绍在同一个JVM 内部,大家往往采用synchronized 或者Lock 的方式来解决多线程间的安全问题,但是在分布式架构下,在JVM 之间,那么就需要一种更佳高校的锁机制,来处理这种跨JVM 进程之间的线程安全问题,解决方案就是: 使用分布式锁。Redis分布式锁原理Redis 分布式锁机制,主要借助setnx 和 expire 两个命令完成。setnx 当key 不存在,将key 设置为value, 存在不做任何操作,返回0.expire 设置key 过期时间。原理解析:
2021-11-22 14:47:23
471
原创 权限管理设计
JWTJson web token (JWT), 是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准((RFC 7519).定义了⼀种简洁的,⾃包含的⽅法⽤于通信双⽅之间以JSON对象的形式安全的传递信息。因为数 字签名的存在,这些信息是可信的,JWT可以使⽤HMAC算法或者是RSA的公私秘钥对进⾏签名。JWT组成Header头部头部包含了两部分,token 类型和采⽤的加密算法Payload负载这部分就是我们存放信息的地⽅了,你可以把⽤户 ID 等信息放在这⾥,JWT 规范⾥⾯
2021-11-20 14:12:42
624
原创 单元测试和系统安全规约
单元测试规约单元测试单元测试是对软件组成单元进行的测试。其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试。单元测试的益处:• 提高软件质量• 促进代码优化• 提升研发效率AIR原则可重复性独立性自动化BCDE原则B:Border 边界值测试C:Correct 正确的输入,并得到预期的结果E:Error 证明程序有错D:Design 与设计文档相结合常用单元测试框架系统安全规约权限控制-越权访问漏洞前后端同时对用户
2021-11-17 09:39:08
142
原创 OAuth2学习
OAuth2OAuth2是什么目前最流行的授权协议,用来授权第三方应用,获得用户数据。授权模式OAuth2的特点Cookie Session 和 Token的区别cookie不能跨域,前后端分离分布式架构实现多系统SSO非常困难移动端应用没有cookie,所以对移动端支持不好token基于header传递,部分解决了CSRF攻击token要比sessionID大,客户端存储在了Local Storage中,可以直接被JS读取基于token的分布式方案OAuth2的使用t31项
2021-11-16 10:29:57
2890
原创 开发避坑指南
开发避坑指南浮点数据处理正确选择数据类型任何货币金额:均以最小货币单位且整形类型来存储浮点数据类型的问题:精度丢失日期数据处理Java传统的日期API:Date、SimpleDateFormat、CalendarJava8新的日期API:LocalDate、LocalTime、LocalDateTime传统API存在的问题:线程不安全,没有区分日期和时间对应的类、格式化不方便。控制语句的避坑规范switch要记得写break;否则会产生case穿透现象,导致多层调用swit
2021-11-11 16:42:25
91
原创 项目编码规约
缘由熵增定律目的减少维护成本改善可读性提高团队开发的合作效率锻炼出更加严谨的思维身心愉悦代码格式和命名风格命名体现代码元素特质抽象类命名使用abstract或base开头异常类命名使用Exception结尾测试类命名以它要测试的类名开始,以Test结尾类型与中括号紧挨相连来定义数组 枚举类名带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开命名最好望文知义某些不规范的缩写会导致理解成本增加,比如condition缩写成condi主流的编程语言基本上以英语为基
2021-11-08 14:55:59
82
原创 技术架构选型
技术架构选型目标降低研发成本提高研发效率数据访问层选型数据库连接池选型常用中间件选型功能不具备一票否决重性能、重拓展技术栈、团队拓展能力远程通讯框架选型RPC框架核心技术点网关层选型网关分类流量网关:关注稳定与安全全局性流控防止Web攻击屏蔽工具扫描黑白IP名单证书/加解密处理业务网关:提供更好的服务服务级别流控服务降级与熔断路由与负载均衡、灰度策略服务过滤、聚合与发现多级缓存策略...
2021-11-06 16:52:13
1955
原创 工程结构规约
1. 应用分层1.1 为什么要分层?隐藏下层业务逻辑的复杂性提高系统的组件化和可维护性可扩展性、可维护性计算机领域的任何问题都可以通过增加一个中间层解决1.2 MVC框架模式ViewModelController1.3 推荐分层结构1.4 分层异常处理DAO层- 异常类型很多,不需要打印日志。SERVICE层-必须记录出错日志到磁盘,尽可能带上参数信息, 保护案发现场。WEB层-绝不能往上抛异常,应跳转到友好错误页面, 友好的错误提示信息。开放接口层- 将异常处理成
2021-11-04 17:07:21
117
原创 异常与错误规约
异常与目录规约异常规约Java异常体系异常处理日志规约日志时效规约日志记录规约日志输出规约扩展日志的设计与规约错误码规约二级目录三级目录异常规约Java异常体系异常处理异常处理流程异常处理机制异常抛出与捕获原则非必要不适用异常使用描述性消息抛出异常力所能及的异常一定要处理异常忽略要有理有据特殊NPE场景及其处理对策日志规约日志的目的:监控告警、记录行为轨迹和快速定位问题日志时效规约当天日志命名:以“应用名.log” 来保存过往日志命名:以{logname}.log.
2021-11-01 16:31:27
85
原创 需求以及架构设计
需求、设计以及架构##需求分析需求分析原则从用户的诉求出发注意边界:那些需求需要做的,那些需求是不需要做的需求分类伪需求:没有调研,没有目的,没有逻辑的需求强需求或者强势力方提出需求先肯定需求然后在提出成本等问题 根据实际情景来做推演架构设计用户,业务,产品,技术不同层次KISS原则keep it simle and smile 大道至简simle :可扩展性和可维护性smile:价值,可测试性DRY原则DRY是Andy Hunt 和 Dave Th
2021-10-30 15:58:30
328
原创 MySQL数据库规约
MySQL数据库规约建表规约索引规约SQL规约ORM映射规约建表规约表、字段命名• 必须使用小写字母或数字• 禁止出现数字开头• 禁止两个下划线中间只出现数字• 不使用复数名词• 禁用保留字• 是与否概念的字段,必须使用 is_xxx 的方式命名数据类型小数类型为 decimal货币数据使用最小货币单位,数 据类型为bigint字符串长度几乎相等使用 charvarchar长度不要超过 5000表必备三字段idcreate_timeupdate_time建表推荐规约表
2021-10-30 15:41:54
86
原创 jmeter测压
1.无缓存的情况下进行压测1.20线程 1秒 永远1.1无缓存压测 职业模块tps学生列表tps2 添加redis缓存职业模块tps学生列表模块tps3.redis缓存 有负载均衡职业模块tps学生列表模块tps总结:主要测了职业模块和学生列表模块,职业模块的进行请求的数据量较小,对于有无缓存而言影响不大。而对于学生列表模块来说,数据量就...
2019-09-19 23:29:02
480
原创 Tiles风格的学习
1.为什么使用Tiles在好多网页,我们会发现他们中有很多部分都是固定内容不变的,用tiles框架可以把这些复用代码按模块提取出来,需要的时候直接导入即可。减少重复代码,提高了页面的复用性和拓展性。而且可以用于新建一个模板,以便其他网页复用,调高我们的开发效率像图中所示,Header,Menu,Footer这三个模块都是可以复用的,只需要更改Body部分的内容就可以了,用Tiles框架就可以...
2019-08-29 11:19:01
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人