- 博客(33)
- 资源 (23)
- 收藏
- 关注
原创 整洁架构读书笔记(Clean Architecture)
又称干净的架构The Clean Architecture,这是著名软件工程大师Robert C Martin提出的一种架构整洁清晰之道,也是当前各种语言开发的目标架构。干净、清晰、整洁的架构应该只包含单向的依赖关系,这样才可以在逻辑上形成一种向上的抽象系统。我们经常听说过如下各种架构:六边形架构Hexagonal Architecture (也称为 端口和适配器) 这是由Alistair C...
2020-03-23 18:10:35 2712
原创 Docker 概念原理,常用操作(持续更新)
什么是dockerDocker vs. Virtual macheineDocker 架构镜像操作容器操作和生命周期进入容器内部外部网络访问容器容器通信容器数据管理
2020-03-01 18:29:55 156
原创 DDD战术实现 - code level
包结构:尽量使用有意思的命名,少用String,Integer,BigDecimal定义JSF:JPA:
2020-04-20 07:34:53 396
原创 Git Rebase vs Merge, GIt Reset vs Revert
Git merge vs Rebase构造场景如下:https://zhuanlan.zhihu.com/p/29682134?utm_source=wechat_sessionGit Rest & Revert在自己的分支上可以使用git reset, 如果是公共分支建议使用git revert,这样可以记录历史。Rest是指针的移动,revert是把回退当作一次...
2020-04-09 08:28:37 371
原创 Spring Boot2 Security JWT(持续更新)
文章目录JWT入门例子整合Springboot整合数据库JWT入门例子整合Springboot整合数据库
2020-04-08 09:19:39 602
原创 springboot2.x 使用Mockito编码完成接口测试
Spring context Mockito demoSpring上下文测试注解方法说明Servlet容器环境的测试轻量级测试Mock MVC更多用法
2020-03-29 10:07:29 522
原创 BFF架构设计与网关的演进
介绍BFF是(Backends For Frontends)单词的缩写,主要是用于服务前端的后台应用程序,来解决多访问终端业务耦合问题。最近在公司的微服务架构中遇到了一些多终端访问接口的问题,不同的终端拥有不同的接口服务,有不同的操作数据的能力,针对这种业务场景做出了调研,我们是否可以在不同的访问层进行业务逻辑处理,获取不同的数据内容呢?早在微服务出现的初期就已经存在类似的业务需求出现,而且...
2020-03-25 21:29:57 2731
原创 架构解决方案与融合(DDD, 六边形,洋葱,整洁,事件驱动,CQRS,SOA,Mircoservice, C4)
领域驱动设计和实践https://www.jianshu.com/p/c62d9afe3132六边形架构(端口和适配器架构)设计和实践https://www.jianshu.com/p/c2a361c2406chttps://www.jianshu.com/p/f39f4537857e洋葱架构https://www.jianshu.com/p/d87d5389c92a整洁架构htt...
2020-03-23 22:44:52 1802
原创 AWS S3存储服务
存储桶权限性能调优防盗链可以参考 https://blog.csdn.net/myarche/article/details/103990437
2020-03-19 18:16:00 194
原创 Clean code 内容总结
第一章 整洁代码在正式开始之前,我们先思考几个几个问题:1.需求与代码哪个重要?答:并不是所有的产品都能提出合理的需求,当你面对一个提出不合理需求的产品的时候,你需要坚持自己的原则,不能妥协。2.易读和易懂是一回事吗?答:易读的代码和易懂的代码是有区别的,不是易读的代码就是易懂的代码。3.什么是测试驱动代码?答:测试驱动代码,你写的代码要可以执行单元测试。如果你发现你的代码很难写单元...
2020-03-16 21:49:59 1004
原创 Clean Code学习笔记
代码的视角代码的坏味道代码的好味道注释与函数圈复杂度创建子函数重构复杂表达式Clean Code与性能变量高质量函数的十个一其他...
2020-03-14 21:39:56 419
原创 团队扩张时的能力构建和质量保证
文章目录如何完成新人能力构建新人Onboarding流程CheckPointHOMEWORK让新人通过作业来学习,完成测试用例新人状态跟踪人才梯队构建激活团队氛围,形成只是分享突然如何完成新人能力构建新人Onboarding流程CheckPointHOMEWORK让新人通过作业来学习,完成测试用例可以多加强视频和文档化培训资料基于项目级别的项目代码练习新人状态跟踪定期回顾...
2020-03-12 20:31:14 289
原创 jdk1.8 Java8新特性使用汇总
内容1. 接口和日期default关键字base64加解密API时间日期处理理类2. Lambda表达式 函数式编程 集合框架 收集器器和集合统计1. 接口和日期default关键字在jdk1.8以前接口里里面是只能有抽象方法,不不能有任何⽅方法的实现的。jdk1.8里面打破了了这个规定,引入了了新的关键字default,使用default修饰方法,可以在接口里里面定义具体的方法实现默认...
2020-03-12 08:26:07 782
原创 Springboot全局异常处理器 @RestControllerAdvice @ExceptionHandler
一、目标:弄懂为什么springboot需要《全局异常处理器》?编码实战一个springboot《全局异常处理器》封装一个自定义异常 ,并集成进《局异常处理器》把《全局异常处理器》集成进《接口返回值统一标准格式》二、springboot为什么需要全局异常处理器?先讲下什么是全局异常处理器?全局异常处理器就是把整个系统的异常统一自动处理,程序员可以做到不用写try…catch那...
2020-03-08 10:30:25 605
原创 XA两阶段提交协议 - 手写XA, Atomikos 与 Spring boot 集成
因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。一阶段提交协议一阶段提交协议相对简单。当然,前提是开启了事务,然后在应用程序发出提交/回滚请求后,数据库执行操作,而后将成功/失败返回给应用程序,程序继续执行。一阶段提交协议相对简单,简单带来的优点就是,...
2020-03-01 23:57:45 879
原创 Redis缓存失效
因为缓存失效,从而导致大量的请求怼到数据库。1、大量请求,导致数据库处理不过来,整个系统依赖数据库的功能,全部崩溃;2、单系统挂掉,其它依赖于该系统的应用也会出现不稳定,甚至崩溃;显然,不能在生产环境出现这个问题。一般,这么几种情况可能出现缓存失效。1、数据淘汰,LRU/LFU,最大内存阈值,依据内存使用情况淘汰掉旧的数据;2、数据过期 expire,超过时间了,缓存就没了。3、服务...
2020-02-28 22:28:32 403
原创 Redis缓存和MySQL数据一致性
1、需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间...
2020-02-28 22:24:32 740
原创 redis集群方式
主从复制相当于所有的写请求,都交给master,再同步到各个slave节点,确保数据一致。主节点挂了就麻烦了,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。哨兵这个时候哨兵就出现了,为了解决单个主节点挂掉的问题,就搞多个主节点,相互之间哨兵机制监视起来。哨兵的作用就是监控Redis系统的运行状况,功能如下:1、监控主服务器和从服务器是否正常运...
2020-02-28 22:03:08 144
原创 Redis 缓存击穿
缓存击穿和避免方式比如,访问不存在的数据。针对高并发的场景,常用的读都会命中缓存。而如果去查不存在的数据呢?如果还照着原来的设计,就会不停的去查数据库。这就是缓存击穿. 有什么方式可以避免呢?空对象做缓存,有一定道理,但如果成千上万的过来,就占缓存空间了不是数据库里面一直是空值,缓存也为空,后面的请求不都又到数据库了嘛.问题的本质,就是判断集合中是否存在某个元素。把所有数据都放到内存,这肯...
2020-02-28 21:57:20 112
原创 Redis集群原理和搭建
一个系统建立集群主要需要解决两个问题:数据同步问题和集群容错问题。1. Naive方案一个简单粗暴的方案是部署多台一模一样的Redis服务,再用负载均衡来分摊压力以及监控服务状态。这种方案的优势在于容错简单,只要有一台存活,整个集群就仍然可用。但是它的问题在于保证这些Redis服务的数据一致时,会导致大量数据同步操作,反而影响性能和稳定性。2. Redis集群方案Redis集群方案基于分而...
2020-02-26 15:48:23 105
原创 Spring Boot 异步框架@Async @EnableAsync
一、现实场景在现实的互联网项目开发中,针对高并发的请求,一般的做法是高并发接口单独线程池隔离处理。假设现在2个高并发接口:一个是修改用户信息接口,刷新用户redis缓存.一个是下订单接口,发送app push信息.设计解决方案用于[刷新用户redis缓存]和[发送app push信息]二、为什么要用异步框架,它解决什么问题?在SpringBoot的日常开发中,一般都是同步调用的。但经...
2020-02-25 23:32:34 250
转载 lombok 注解 @Data @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode
官方文档:@EqualsAndHashCode原文中提到的大致有以下几点:此注解会生成equals(Object other) 和 hashCode()方法。它默认使用非静态,非瞬态的属性可通过参数exclude排除一些属性可通过参数of指定仅使用哪些属性它默认仅使用该类中定义的属性且不调用父类的方法可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。...
2020-02-25 22:17:53 665
原创 Springboot 加入JMX监控
Springboot Java Application启动脚本,配置-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=<<port>> -Dcom.sun.management.jmxremote.password.file=<<path>> -Dcom....
2020-02-19 15:00:16 1144
原创 springboot启动流程及原理
springboot启动入口类@SpringBootApplicationpublic class SpringBootWebApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(SpringBootWebA...
2019-12-26 23:36:51 1985
原创 获取JAVA接口的所有实现类
前言:想看基于spring 的最简单实现方法,请直接看 第七 八步。本文价值在于 包扫描的原理探究和实现; 参考自https://www.cnblogs.com/wangzhen-fly/p/11002814.htmlhttps://www.cnblogs.com/heaveneleven/p/9125228.html一、背景项目开发中,使用Netty做服务端,保持长连接与客户端(agen...
2019-12-24 17:49:34 2587 1
原创 Java BigDecimal使用
Java BigDecimal使用Why商业计算往往要求结果精确浮点计算的问题其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math.BigDecimal类来进行精确计算。BigDecimal构造方法public BigDecimal(double val) 将double表示形式转换为BigDecimal *不建议使用pu...
2019-12-24 15:15:39 241
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人