- 博客(24)
- 收藏
- 关注
原创 孤尽班第25天 -- 项目的权限管理
用户角色管理RBAC模型RBAC(role based access control)是一种设计模式,用来设计和管理权限相关数据的一种模型。
2021-11-29 05:28:49
370
原创 孤尽班第26天 -- 分布式锁
分布式锁使用场景在同一个JVM内部,大家往往采用synchronized或者Lock的方式来解决多线程间的安全问题。但在分布式集群工作的开发场景中,在分布式架构下,在JVM之间,那么就需要一种更加高级的锁机制,来处理种跨JVM进程之间的线程安全问题,解决方案就是:使用分布式锁。分布式锁组成要素setnx: set key if not existexpire: set expiration for a key两者结合就可以组成一个分布式锁原理解析1.key不存在时创建..
2021-11-22 10:38:28
811
原创 孤尽班第24天 -- JWT
JWTJSONWeb Token是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC7519)。JWT定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全地传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。JWT组成Header头部头部包含了两部分,token类型和采用的加密算法,它会使用Base64编码组成JWT结构的第一部分base64enc({ "alg":"HS256",..
2021-11-20 06:31:03
2601
原创 孤尽班第22天 -- 系统安全规约
权限控制越权访问漏洞越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。越权访问漏铜防范措施1.前后端同时对用户输入信息进行校验,双重验证机制2.调用功能前,验证用户是否有权限调用相关功能3.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限4.直接对象引用的资源ID要加密,防止攻击者枚举ID,敏感数据特殊化处理5.永远不要相信...
2021-11-18 11:58:57
3135
原创 孤尽班第21天 -- 第三周总结
第三周了,现在感觉像在跑长跑一样,身体到达了极限。课上讲到的每个知识,总感觉学过,但要自己复述一遍,却又很难讲清楚。按费曼学习法来讲,这说明我还是没学明白。唯一一个感觉自己搞明白的是浮点数的科学计数法。我可以把一个十进制的数转成二进制,然后用二进制科学计数法表示出来,然后将这个数存放到浮点类型中。会了这些,下一步就好理解为什么数字存放到浮点类型之后会有精度损失(因为有效数字位只有23位,数量有限),但有的数字虽然很大却还是能用浮点类型精确表示(只要这个数的阶码和尾数都能存放到浮点类型中即可)。我本来是想
2021-11-16 12:24:05
666
原创 孤尽班第16天 -- OOP规约
什么是OOP?OOP的抽象、封装、继承、多态的理念使软件大规模化成为可能,有效地降低了软件开发成本、维护成本和复用成本。面向对象编程思想使大型软件的开发就像搭积木一样隔离可控、高效简单,是当今编程领域的一股势不可挡的潮流。OOP实践了软件工程的三个主要目标:可维护性、可重用性和可扩展性。OOP四大特征抽象:对需求进行业务抽象和建模分析,通过模型的行为组合去共同解决某一类问题封装:封装是一种对象功能内聚的表现形式,使模块之间耦合度变低,更具有维护性继承:继承使子类能够继承父类,获得父类
2021-11-16 11:56:08
374
原创 孤尽班第20天 -- OAuth2(二)
授权4种模式授权码模式例子:1.申请授权码访问http://localhost:8888/oauth/authorize?client_id=cms&client_secret=secret&response_type=codeclient_id:客户端id,和授权配置类中设置的客户端ID一致response_type:授权码模式固定为codescope:客户端范围,和授权配置类中设置的scope一致。redirect_uri:跳转uri,当授权码...
2021-11-15 12:44:04
266
原创 孤尽班第19天 -- OAuth2(一)
在我们访问京东网站时,我们是如何通过验证登录的呢?下面是用户通过QQ验证登录京东网站的过程。流程:1.用户选择通过QQ登录2.用户跳转到QQ登录页面,并携带上京东发过来的callback网址(即京东网址)3. 用户登录QQ4.QQ授权服务返回授权码给用户-------------------------以下是用户看不到的活动--------------------------------------------5.用户的浏览器会通过京东发来的callback网址...
2021-11-14 12:21:02
3569
原创 孤尽班第17天 -- 集合与并发
Java集合框架图集合是数据结构的载体,其中包括接口、抽象类、并发包中的类、早起线程安全的类。数据结构与时间复杂度略过HashMap的基本概念三个基本概念table:存储所有节点数据的数组slot:哈希槽。即table[i]这个位置bucket:哈希桶。table[i]上所有元素形成的表或树的集合。HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元,每一个Entry包含Node内部类。当同一bucket的元素达到8个时,bu..
2021-11-13 12:05:17
138
原创 孤尽班第15天 -- Java代码避坑指南
浮点数据避坑浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断。BigDecimal的等值比较应使用compareTo方法,而不是equals方法 equals:此方法会比较值和精度(1.0与1.00返回结果为false) compareTo:会忽略精度禁止使用构造方法BigDecimal(double)的方式把double值转化为BigDecimal对象IEEE二进制浮点数算数标准(IEEE754)是20世纪80年代以来最广泛使用的.
2021-11-10 10:23:56
692
原创 孤尽班第14天 -- 第二周总结
在看完孤尽老师展示的UML图的标准答案后,说实话还是有点奔溃,自己做的和答案的差距还是挺大的。在绘制UML图上今后还需要多多努力。工程结构规约我使用Maven已经有段时间了,但一直不太清楚它的仲裁机制,通过这次学习算是搞了个基本明白。Maven的依赖仲裁按照DependencyManager版本声明进行仲裁 如无仲裁声明,则按照依赖最短路径确定版本。 若相同路径,则按照第一声明优先原则。要解决依赖冲突,可以查看工程的依赖树,Maven中可以在用“mvn dependency:tree”
2021-11-09 11:49:21
248
原创 孤尽班第13天 -- 深入理解浮点数
在计算机中,任何十进制的整数都可以用二进制表示。但是,浮点数就不是这样了,一个十进制的浮点数一般只能近似地转换成二进制浮点数。科学计数法是应用float的主要原因。目的是存储极大数和极小数,同时可以容忍一定的精度损失。从数学世界的科学计数法映射到计算机世界的浮点数时,数制从十进制改为二进制,还要考虑内存硬件设备的实现方式。在规格化表示上存在差异,称谓有所改变,指数称为“阶码”,有效数字称为“尾数”,所以用于存储符号、阶码、尾数的二进制分别称为符号位、阶码位、尾数位。假如我要用Float.
2021-11-08 21:59:33
279
原创 孤尽班第12天 -- 编码规约
代码中该用Tab还是空格?真的很无聊,没啥可说的。帕金森琐碎定理:那些个没用的,但每个人都能说上几句的,总是会消耗会议的大部分时间,而真正需要讨论的重要议题却得不到深入的交流。这个在新来的员工身上体现最明显。新来的员工正在业务熟悉中,所知不多,但又需要表现,给组员和领导留下印象。所以,在会议上,只要遇上他/她熟悉的话题,自然要好好展示一下。如果这个话题切中正题,这位新员工拔得一筹,即便没切中正题,至少也刷了波存在感,让人觉得他/她还是很有激情的。但是,从大局来看,需要讨论的问题总是得不到充分..
2021-11-07 23:44:28
93
原创 孤尽班第10天 -- 技术架构选型
开场白:从架构的选择可以看出你的人品,所以要慎重。当然,只是个玩笑。技术架构的选择实际上体现的是你的文化知识背景和技术的偏好,当然还有与时俱进的学习能力,还有深度思考和判断能力。反正有很多。技术选型要从多方面考量:降低开发成本;提高研发效率语言的选择:应该选群众基础好的、更新及时的语言服务架构的选择单体架构:第一代单体应用,所有的模块打包到一起部署运行;例如打包一个war包放到一个tomcat下运行,这种架构也叫巨石型应用架构,在开发小型项目上有独特优势:易于调试、部署、运维方便。缺
2021-11-05 11:46:13
1777
原创 孤尽班第9天 -- TCP/IP及规约
TCP/IP的五层结构以定义数据格式和解决传输问题角度进行抽象的分层应用层定义从端口获取到程序中的数据格式并解读和返回数据 传输层的主要工作是定义端口,实现端口到端口的通信 定义IP地址和子网,并对于不同子网的数据包进行路由 对电信号进行分组并形成具有特定意义的数据帧 接口规格,信号电平,IEEE 802.1定义传送频率,帧结构IP协议的报头TCP的报头SYN:Synchronize Sequence Numbers,用作建立连接时的同步信号。ACK:Acknowl
2021-11-04 09:17:15
146
原创 孤尽班第8天笔记 -- 工程结构规约
工程为什么要分层?分层了才能实现扩展,让更多的人一起来干。每层都能够有专人负责维护。所以,分层可增强工程的可扩展性和可维护性。计算机领域的任何问题都可以通过增加一个中间层解决。个人感觉增加中间层确实是一个解决办法,但是不能滥用。MVC框架模式Model: 数据和业务逻辑View: 与用户交互的部分,如jsp,html页面,模板渲染引擎等Controller:dispatcher和servlet分层异常处理DAO层:异常类型很多,不需要打印日志。Manager/
2021-11-03 11:15:10
169
原创 孤尽班第七天笔记 -- 一周总结
人都说,一个程序员在开发一个项目中真正花在写代码的时间只占他花的总时间的百分之二十到三十。那大部分时间都花在哪里了?在项目的架构设计、数据模型设计、以及其他方面如异常处理和日志规范等的设计。而在这个总共31天的训练营里,我们要在7天内完成这些工作,我想说好南啊。但是难,不影响收获。过去7天的学习,算是我见识了“????是怎么跑的”。在这里先简单回顾一下。框架一个项目的开发起始于用户需求的收集和分析。这部分很像记者采访,这阶段采访做得越扎实,后期对于需求的分析就越做的到位。要不然,回头还得回去找用
2021-11-02 10:45:48
100
原创 孤尽班第六天笔记--日志规约
当天日志命名:以“应用名.log”来保存过往日志命名:以{logname}.log.{保存日期}命名;日期格式:yyyy-MM-dd日志文件至少保存15天:便于排查某些以周为频次发生的异常敏感操作信息联机存储6个月:网络安全相关法律的规定记录用户敏感信息或者操作的日志为何要存储6个月,并多机备份?除了法律规定以外,也是为了保留证据记录,以防发生纠纷。该类日志最好使用什么日志级别输出?warn日志记录规约系统应依赖使用日志框架(SLF4J、JCL)的API而不是具体日志库中的。...
2021-11-01 01:26:10
295
原创 孤尽班第五天笔记--异常处理
异常的作用异常应当描述导致当前异常发生的原因 根据异常栈快速定位到异常发生的位置 结合异常描述和异常栈解决异常异常的处理流程图try代码块中可能会抛出多种异常,该怎么捕获?如果多种异常共有一个父类,并且处理它们的方式是一致的,那么我们可以catch这个父类并进行处理;如果多种异常的处理方式并不相同,那么先catch子类异常,然后逐步升级,最后catch级别最高的父类异常,并在每个catch中定义相应的处理逻辑。Throwable的抓取规约【强制】在调用RPC、二方包、或动...
2021-10-31 04:48:26
299
原创 孤尽班第四天--数据模型设计总结
与框架设计一样,数据模型设计也应该从分析用户需求着手。所以首先应该采访用户,把用户的非结构化的需求表述逐一罗列下来。比如,如果我们要构建一个12306购票系统的数据模型,我们差不多会收集到以下这么一些需求。乘客通过网站注册登录。 实名认证 铁路部门管理员有如下功能: 车次、车厢、经停站、时刻表的增删改查 用户管理:用户增删改查,黑名单管理,为用户分配角色 角色管理:角色增删改查,为角色分配相应的功能 定时任务:生成火车票 普通用户有如下功能: 修改信息:密码、住址、电话、邮箱等
2021-10-31 01:36:45
328
原创 孤尽班第三天笔记--MySQL规约
建表规约表、字段命名必须使用小写字母或数字 禁止出现数字开头 禁止两个下划线中间出现数字 不使用复数名词 禁用保留字 boolean的字段,必须使用is_xxx的方式命名这里借用PPT中举的反例数据类型小数类型为decimal 货币数据使用最小货币单位,数据类型为bigint(读取后先除以100,存储时先乘以100) 字符串长度几乎相等的应该使用char(不足的会自动用空白补齐) varchar长度不要超过5000(这样便于建索引,超过5000应考虑用text或者blo
2021-10-29 11:53:12
207
原创 孤尽班第二天笔记--设计原则
今天接着总结架构设计的七大原则。七大设计原则实践点:类图设计、接口设计、组合设计1. 单一职责最简单的,但却是最难的!高内聚、低耦合的延伸属性和行为向着模块预先定义的功能内聚模块的名字非常重要我们在做需求分析时,要将非结构化的需求进行结构化处理,确定系统的职责,划清系统各个模块之间的界线。这里划清界线正式单一职责原则的体现,也是为什么说单一职责执行起来很难的原因。因为无论怎样划分模块,总会有那么几个特例,让你不知道该放在哪个模块好。如果遇到这样的情况,应该找一个可以是特例尽量
2021-10-28 12:00:25
91
原创 孤尽班第一天笔记--架构设计
建筑师在工人开始造房子前需要先设计好房子的框架和外观,软件工程师在做一款产品时同样要先设计好产品的架构。好的框架应该像房子的栋梁一样,屹立多年而不必更换。这节课主要讨论的软件架构设计的需求分析、设计原则和交付品。需求分析:架构设计从用户提出第一个需求就已经开始了。架构设计的第一步,也是最重要的一步,就是理解和挖掘用户的诉求,以及背后的逻辑,并转化成可行性的分析结果。起初,用户的诉求是零碎和松散的,这在用户诉求的头脑风暴中体现的最明显。我们的这阶段的工作就是要把这种非结构化的输入进行结构化,然后确
2021-10-27 10:59:52
144
原创 写在孤尽T31训练营开班第一天
在报这个班的时候,其实心里没底,我到底有没有时间完成这项挑战?但人都说,时间是挤出来的。所以,我想再使劲挤一挤。在这里,我想立几个flag,等训练营结束的时候,看看自己完成了几个。1. 提升系统架构能力。检验标准:a. 能够清楚定义用户的实际需求,实践结构化思维、逆向思维、抽象化思维b. 能够根据需求,独立完成一个系统的架构设计,产出系统用例图、系统状态图、系统时序图、关键类图、活动图等。c. 对架构的可伸展性、可靠性、解耦性等方面的性能有深入的认识,并能够清楚地表达自己的观点。
2021-10-24 22:45:30
1626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人