- 博客(27)
- 收藏
- 关注
原创 T31训练营-DAY27Redis分布式锁笔记
前言今天主要分享部分代码实现。Redis加锁set key value [EX seconds][PX milliseconds] [NX|XX]使用Luaeval script key [key..] arg [arg ..]使用lua解锁正确姿势Redisson使用redisson进行加锁解锁Redisson的加解锁原理是使用lua脚本总结面试常考的知识点,需要掌握。...
2021-11-23 16:29:26
492
原创 T31训练营-DAY26Redis分布式锁
前言今天主要学习Redis分布式锁以及Redisson和分段锁。分布式锁当我们在同一个JVM当中,可以使用synchronized或Lock来进行上锁。但是在多节点的情况下,我们需要使用分布式锁。Redis分布式锁setnx命令:当值不存在时才能设置成功expire过期时间:设置过期时间保证发生异常时候没有正常释放锁的情况。存在的问题1.加锁成功,设置过期时间失败解决:加锁和过期时间一块设置;使用lua脚本2.解锁成功,把非自己占用的锁解除解决
2021-11-23 16:00:28
859
原创 T31训练营-DAY25用户系统实现笔记
前言分享令牌颁发实战。引入依赖<!--oauth2--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> </dependency>拷贝密钥到项目resource下。生成令牌//证书⽂件 String key
2021-11-20 15:23:30
519
原创 T31训练营-DAY24用户系统实现
前言今天的分享主要是颁发令牌。JWT什么是JWT?Json web token (JWT), 是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准(RFC7519).定义了⼀种简洁的,⾃包含的⽅法⽤于通信双⽅之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使⽤HMAC算法或者是RSA的公私秘钥对进⾏签名。组成Header:包含token类型和采用的加密算法 Payload:存放信息 Signature:签名,防篡改为.
2021-11-20 15:13:40
342
原创 T31训练营-DAY23单元测试与系统安全规约笔记
前言继续分享关于系统安全防范的知识。Sentinel限流熔断关键资源防刷流程防重放攻击总结今天主要分享防重放和重刷的防御流程以及介绍了sentinel中间件。
2021-11-17 14:53:18
2588
原创 T31训练营-DAY22单元测试与系统安全规约
前言今天主要分享单元测试与系统安全规约单元测试什么是单元测试?单元测试是对软件组成单元进行的测试。目的校验软件基本组成单元的正确性。流程AIR原则BCDE原则常用单元测试框架系统安全规约越权访问防范规约前后端同时对用户输入信息进行校验,双重验证机制 调用功能前,验证用户是否有权限调用相关功能 执行关键操作前必须验证用户身份 直接对象引用的资源ID必须加密,防止攻击者枚举ID,敏感数据特殊化处理 永远不相信用户的...
2021-11-17 11:17:58
3090
原创 T31训练营-DAY21周总结
前言时间犹如白驹过隙,又到了周总结的时候。这周主要讲了三大块内容,编码避坑,集合与并发,OAuth2。编码避坑主要介绍了浮点数据的规范,不规范可能引起精度丢失造成严重问题。还有控制语句规范与日期数据的处理。集合与并发主要介绍了JAVA中的集合,HashMap的源码,线程与线程池等内容。强化了并发的思想。OAuth2主要从OAuth2是什么,怎么用,为什么用三大块入手讲解。通俗易懂的例子,能轻松掌握现在最主流的登录验证鉴权模块。...
2021-11-17 10:36:49
413
原创 T31训练营-DAY20Oauth2笔记
前言今天介绍四种授权模式授权码模式流程返回access_token:返回令牌token_type:有MAC_Token和Bearer Token两种类型refresh_token:刷新令牌expires_in:过期时间scope:范围jti:当前token唯一标识简化模式密码模式客户端模式总结四种不同模式有不同的使用场景,按需使用即可。...
2021-11-17 09:57:29
279
原创 T31训练营-DAY19Oauth2
前言今天主要是学习刘雪松老师分享Oauth2的知识。OAuth2是什么?OAuth2是目前最流行的授权协议,用来授权第三方应用,获取用户数据。京东QQ示例快递员示例授权模式为什么要用OAuth2?cookie不能跨域,前后端分离分布式实现多系统SSO困难 移动端没有cookie token基于header传输,解决部分CSRF攻击 token比sessionid大,客户端存在LocalStorage中可以直接被JS读取怎么使...
2021-11-16 17:34:54
324
原创 T31训练营-DAY18集合与并发编程笔记
前言今天继续补充课堂内容。线程与线程池线程有自己的操作栈、程序计数器、局部变量表等资源,它与同一进程内的其他线程共享进程的所有资源。线程生命周期线程池的作用管理复用线程、控制最大并发数 实现任务线程队列缓存策略和拒绝机制 实现某些与实践相关的功能,定时执行、周期执行 隔离线程环境线程池构造方法corePoolSize maximumPoolSize keepAliveTime unit workQueue threadFactory handle.
2021-11-13 16:50:56
330
原创 T31训练营-DAY17集合与并发编程
前言今天主要孤尽老师分享集合与并发编程的知识点。JAVA集合HashMap基本概念table:存储所有节点数据的数组slot:哈希槽bucket:哈希桶初始化容量算法static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >&
2021-11-13 16:13:26
351
原创 T31训练营-DAY15编码避坑
前言今天主要分享下,编码可能会遇到的坑。浮点数据处理货币数据类型任何货币金额均以最小货币单位且整型类型来进行存储浮点数之间的等值判断基本数据类型不能用==比较 包装类型不能用equal判断 BigDecimal等值比较使用compareTo()方法 equal()方法会比较值和精度 compareTo()忽略精度 Bigdecimal禁止使用BigDecimal(double)日期数据的处理传统日期API存在的问题日期类线程不安全 日期、时间、.
2021-11-11 16:08:11
328
原创 T31训练营-DAY14周总结
前言时间飞快,转眼两周已经过去了。今天总结一下这周的学习历程,简单介绍三天的课程。Day1学习了工程结构规约,介绍T31项目结构,指明了方向Day2剖析了项目的架构选型,介绍了各模块技术的迭代过程,以及现有选型的优势。Day3主要讲解了编码的部分规约,从编码到注释,再到前后端。让我了解到不规范所导致产生的问题,可能会很严重,印象比较深刻。总结每周都是收获颇丰,能够从日常的CRUD跳脱出来,从全方面的角度来看待项目,扩宽了自己的视野。...
2021-11-08 15:00:20
211
原创 T31训练营-DAY13编码规约笔记
前言今天接着分享昨天上课的分享注释的误解没啥用,不影响编译 为了怕老板说没有注释 增加代码行数 对简单英文的傻瓜翻译魔法值创建缓存String key="Id#kaikeba.."+courseId;cache.put(key,value);使用缓存String key="Id#kaikeba."+couseId;cache.get(key,value);由此可见,魔法值可能会造成严重的问题。为什么大数字需要返回StringJAVA服务..
2021-11-08 14:45:45
204
原创 T31训练营-DAY9工程搭建
前言今天是实操搭建项目结构。项目技术选型技术选型是统一按照以下技术点项目结构根据老师讲解,依次简历对应模块并构建基类。总结定好了框架与基类,架构清晰明了符合规范。好的开始是成功的一半。...
2021-11-08 14:21:22
171
原创 T31训练营-DAY12编码规约
前言今天是孤尽老师分享的编码规约。编码规约的意义减少代码的维护成本 改善可读性 提高团队开发的合作效率 锻炼出更加严谨的思维 身心愉快命名风格与代码格式体现元素特征抽象类命名使用Abstract或Base开头 异常类用Exception结尾 测试类命名以测试类名开始,以Test结尾 类型与中括号紧挨相连定义数组 枚举类带上Enum后缀,枚举成员名称要全大写,单词间用下划线隔开望文生义常量定义设计规约不用魔法值常量统一定义,管理,维护常量复用
2021-11-08 14:15:12
245
原创 T31训练营-DAY11技术选型笔记
前言今天主要分享所选型技术的相关原理。SpringBoot特点1.方便创建可独立运行项目2.内嵌Tomcat Jetty或Undertow3.简化了项目的构建配置4.为Spring及第三方库提供自动配置5.提供生产级特性6.无需生成代码或进行XML配置cloud全家桶MyBatisRocketMQRPC选型Feign网关总结通过这次分享对原理方面有了更深刻的理解,拓展了思维。...
2021-11-06 17:36:49
176
原创 T31训练营-DAY10技术架构选型
前言今天要讲解技术架构选型,解答了为什么需要选型以及T31项目的选型。为什么要进行技术选型?降低开发成本 提高验发效率微服务分层架构数据访问层选型选用Mybatis/Mybatis PlusMyBatis层次结构连接池常用种类消息中间件选型远程通信框架选型网关选型T31项目采用的技术栈总结今天主要介绍了技术架构的历史,以及各模块选型的选择与内部原理,提供了以后我们自己选型的思...
2021-11-06 16:24:04
1449
原创 T31训练营-DAY8工程结构规约
前言今天主要讲的代码的工程结构,从MVC原理讲起,到MAVEN的使用,二方库的规范。额外讲到了TCP/IP的面试技巧。应用分层为什么要分层?可拓展性 可维护性MVC架构模式Model View Controller推荐分层结构分层异常处理分层中的领域模型DO:对象与数据结构表结构一一对应,通过DAO层向上传输 DTO:数据传输对象,Serivce或Manager向外传输的对象 BO:业务对象,可以由Serice层输出的封装业务..
2021-11-04 15:59:50
1905
原创 T31训练营-DAY7周总结
不知不觉第一周孤尽训练营已结束,今天来总结一下这周的内容。Day1讲解了整个项目的架构,从需求分析到设计的原则,学习了画架构图、UML图等内容。Day2个人练习部分,产出UML图。Day3主要讲解数据库规范,建表规约,索引规约,映射规约。Day4个人练习部分,产出项目ER图Day5学习了异常处理设计,日志设计规约,错误码设计规范。Day6个人练习部分,产出异常与日志学习笔记。第一周主要是规范的学习与项目的介绍,接下来第二周将开始进行实战编码环节。期待学
2021-11-04 09:50:12
267
原创 T31训练营-DAY6系统日志与异常设计
前言根据日程,今天任务主要完成购票系统的日志与异常,错误码的设计。日志日志选用SpringBoot默认的logback配置参考老师给出的配置通用配置appender配置错误日志配置异常统一由Controller层来捕获异常使用@RestControllerAdvice,@ExceptionHandler来指定捕获各种异常,打印对应信息原则保证数据入参合法 null值判断 属性约束 下层异常转换对应api异常...
2021-11-01 15:41:51
181
原创 T31训练营-DAY5异常处理与日志
前言今天主要学习内容异常处理与日志相关的知识,在开发项目的时候这两块是非常重要也绕不开的。JAVA异常异常处理流程异常抛出与捕获的原则非必要不使用异常 使用描述性消息抛出异常 力所能及的异常一定要处理 异常忽略要有理有据try with resource创建关闭资源推荐使用try with resource语法Optional级联调用判空可以使用Optional,orElse()语法。orElse语法作用是设置默认值,如果是NPE会返回指.
2021-11-01 14:27:11
193
原创 T31训练营-DAY4ER图
前言编写项目应先构思数据库表结构,ER图能够帮助我们直观感受表之间的关联关系。今天主要任务是画T31项目ER图,推荐使用PowerDesigner。ER图E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。根据项目设计,从以前的购票经历来看,大概需要以下设计用户信息 车票信息 车次 车厢 座位 车站 订单 支付 菜单管理附上自己简易版本总结ER图非.
2021-10-30 16:07:26
364
原创 T31训练营-DAY3数据库规范
前言DAY3学习了数据库建表规范,主要学习内容建表规约 索引规约 SQL与ORM映射规约 数据库设计实战建表规约规定数据库一系列名称的取名规范,选择合适的数据类型与长度数据类型小数采用decimal 货币数据使用最小货币单位,数据类型为bigint 字符串长度相等选用char varchar长度不要超过5000表必备三字段id create_time update_time推荐规约表名遵循“业务名称_表的作用” 库名与应用名一致 修改字段含义或状态追
2021-10-30 15:45:53
216
原创 T31训练营-DAY2UML图
前言DAY2的任务主要是完成作业,即产出T31项目的架构图。包含如下系统用例图 系统状态图 系统时序图 关键类图 活动图绘图工具选用process on系统用例图用例图是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。小组版本系统状态图状态图是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。小组版本系统时序图时序图,又名序列图、循序图,是一种UML交互图。它通...
2021-10-28 16:38:42
244
原创 T31训练营-DAY1架构设计
前言有幸参与孤尽老师的T31课程,借此机会开启自己写作旅程。T31训练营是一个为期31天的项目课程,从0到1实现一个购票项目。内容包含需求分析,架构设计,代码实现,代码评审等。第一天课程主要讲的是项目的需求分析,设计原则,架构图等。项目简介T31项目是一个仿12306的购票项目,包含查票,购票,下单,支付,乘客管理,车次管理等模块。需求分析需求分析核心思想就是理解和发掘用户的诉求,以及背后的逻辑,转化成可行性的分析结果。从非结构化到结构化,确定系统的职责、模块的过程
2021-10-27 14:28:42
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人