自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 OAuth2角色

同程旅游项目月总结技术架构开发流程项目工程结构项目结构里程碑整个项目中,关键节点的里程碑计划。搜索模块搜索枚举获取添加项路径不是search驼峰格式,用-枚举值在一个表里面,表结构合理1后端接口添加、删除都是2获取筛选4个用一个接口3酒店搜索接口不用restful风格,接口名清楚对表设计、接口酒店列表数据库自己定义document就是ES里面的点击就有酒店ID,搜索酒店系统给经纬度接口就行附近:不做3级里面详细东西(价格、星级)(筛选:不做)(医院、机场

2022-05-04 11:23:10 1186

原创 浮点数据的精度丢失

计算机二进制存储计算浮点数时有精度丢失问题:0.2= 0.125+0.0625+0.007825+0.00390625...即2^-3+2^- 4+2^-7+2^-8...即.00110011001100110011...0.2是一个无限循环的二进制数所以十进制小数转换成二进制小数的时候会丢失精度如下例:十进制转换为二进制:1.8 = 1.1100 1100 1100 1100 1100 110 01100110011001100110011001101浮点数有.

2021-11-26 11:05:02 222

原创 系统健壮性

架构四大目的:1、确定系统边界2、确定后续设计原则3、确定模块关系,及模块与环境之间关系4、确定非功能性需求(可用性、健壮性、安全性)面向失败架构:1、网络抖动甚至是断网,如何提示,恢复,切换2、服务超时任何服务都要考虑超时没有返回的可能性3、弱电断电多云,多地部署能力4、洪峰流量流量打爆服务器后的架构健壮性在软件生命周期中,也会出现各式各样的问题,我们需要通过面向失败的设计,防范和监控已知的确定性风险及未知的不确定性风险:1) 任何环境都

2021-11-25 09:57:44 1047

原创 分布式锁概述

分布式锁简介:在同一个JVM内部,大家往往采用synchronized或者L ock的方式来解决多线程间的安全问题,但是在分布式架构下,在JVM之间,那么就需要一种更加高级的锁机制, 来处理跨JVM进程之间的线程安全问题,解决方案就是:使用分布式锁。Redis分布式锁原理:Redis分布式锁机制,主要借助setnx和expire两个命令完成setnx:当key不存在,将key设置为value ,存在不做任何操作,返回0expire:设置key过期时间加锁...

2021-11-21 16:21:31 699

原创 JWT权限管理

JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519)。定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。JWT组成传统的token认证JWT认证JWT使用1、授权中心和资源中心持有私钥和公钥2、私钥颁发令牌3、公钥验证令...

2021-11-20 15:40:52 662

原创 单元测试与系统安全规约

单元测试的AIR原则【强制】宏观上,单元测试整体必须遵守AIR原则A:自动化(automatic)I:独立性(independent)R:可重复性(replaceable)单元测试的BCDE原则(微观上,编写代码时遵守的原则)B:border 边界值测试C:correct 正确的输入,并得到预期的结果D:design 与设计文档相结合E:error 证明程序有错功能性测试之边界值测试1、边界点定义2、边界值分析SQL注入攻击防御..

2021-11-17 10:55:26 2790

原创 OAuth2

OAuth2角色OAuth2是目前最流行的授权协议,用来授权第三方OAuth2授权模式授权码模式简化模式密码模式客户端模式单体架构:cookie session机制分布式架构方案一:session共享分布式架构方案二:基于token为什么要用OAuth2Cookie session和token的区别1、cookie是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难...

2021-11-15 17:23:28 196

原创 集合和并发

HashMapCollectors.toMap()方法不能传入重复的值[强制]在使用java.util.stream.Collectors类的toMap0方法转为Map集合时,一定要使用含有参数类型为BinaryOperator ,参数名为mergeFunction的方法,否则当出现相同key值时会抛illeqalStateException异常。hashMap里面key、value都可以为null,但是merge的时候就不允许了。Colector.toMap()方法会调用merge方法..

2021-11-13 11:02:22 444

原创 Java代码避坑

浮点数据的处理注意:浮点数表示的不是一个准确的数字存储货币时,均以最小货币单位且整型类型来进行存储。0.1 默认是double类型,有效位数均为530.1f 有效位数23(double)e 会在flout类型上补0浮点数据类型的问题:精度丢失浮点数通过科学计数法表示,是二进制形式的科学计数法,所有底数为2有效位数其实前面省略了一个1,共24位(有效数字保存的只有小数部分)十进制科学计数法规格化:整数部分:1-9二进制科学计数法规格化:保持小..

2021-11-11 13:58:15 1769

原创 编码设计规约

好的编码规约的意义:1、减少代码的维护成本2、改善可读性3、提高团队开发的合作效率4、锻炼出更加严谨的思维5、身心愉悦命名风格与代码格式——两个要求1、命名体现代码元素特征(1)抽象类命名使用Abstract或Base开头(2)异常类命名使用Exception结尾(3)测试类命名以它要测试的类名开始,以Test结尾(4)类型或中括号紧挨相邻来定义数组(5)枚举类名带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开2、命名最好望文知义(1)

2021-11-07 11:16:46 152

原创 技术架构选型

技术选型为什么要进行技术选型?1、降低开发成本2、提高研发效率微服务架构的产生1、第一代单体应用,所有的模块打包到一起部署运行;例如:打包一个War包放到一个Tomcat下运行,这种架构也叫巨石型应用架构。在开发小型项目上有独特优势: 易于调试、部署,运维方便。缺点:1、不可靠。任何模块的一个bug,可能拖垮整个应用。2、单维扩展。只能通过运行更多的服务器水平扩展,而不同的应用服务对资源的需求不同。3、不可持续发展。引入新的框架或语言需要重构所有业务模块,往往

2021-11-06 16:24:28 513

原创 应用分层和maven

应用分层隐藏下层业务逻辑的复杂性提高系统的组件化和可维护性为什么要分层?可扩展性可维护性计算机领域的任何问题都可以通过增加一个中间层解决MVC框架模式view:面向客户(服务员)(jsp、模板、页面)controller:全盘统筹(dispatcherservlet)model:对页面支持的数据,对数据处理的业务逻辑(厨师)(service、pojo类)(解耦:可维护、可扩展)通用逻辑层(manager层):相当于一个共用的service层,.

2021-11-04 16:21:44 139

原创 异常与日志

异常异常应当描述导致当前异常发生的原因;根据异常栈快速定位到异常发生的位置;结合异常描述和异常栈解决异常。Java异常处理流程Java异常处理机制Java异常体系try-catch-finallytry with resource所有代码都放到catch块中,不好排查异常发生在哪个代码中。可能抛同一个异常,可以放到同一个catch块中。Optional优雅防止NPE级联调用时易产生NPE(空指...

2021-11-01 17:55:02 136

原创 SQL规约

规约目的:1、规范大家的行为,方便沟通。2、规约是经验的总结,防止再踩坑。建表强制规约表、字段命名:1、使用字母、数字、下划线2、禁止数字开头3、禁止两个下划线中间只出现数字4、不使用复数名称5、禁用保留字(desc、order)6、是否概念的字段,使用is_xxx的方式命名(is_accept)7、所有字母小写(反例:userName)数据类型:1、小数类型用decimal(decimal整数、小数部分单独存储,不会出现随机的值。不用float、

2021-10-30 18:01:01 838

原创 UML用例图和类图

UML常见关系:用例图 构成:参与者、用例、关系。概念:参与者:外部用户、进程或其他系统的理想化概念。用例:外部可见的一个系统功能单元,用例名字是一个动词短语字符串,比如,处理订单。关系:1、关联关系:带箭头或不带箭头的实线表示。2、泛化关系:带空心三角形作为箭头的直线表示,箭头端指向超类。3、包含关系:含有关键字<<include>>的带箭头的虚线表示,箭头指向被包含用例。4、扩展关系:含有关键字<<extend.

2021-10-28 18:02:50 1778

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除