- 博客(169)
- 资源 (27)
- 问答 (1)
- 收藏
- 关注
原创 Mybatis支持底层测试数据隔离
前言本文主要是讲通过 MyBaits 的 Interceptor 的拓展点进行对 MyBatis 执行 SQL 之前做一个逻辑拦截实现自定义逻辑的插入执行。适合场景:1. 比如限制数据库查询最大访问条数;2. 限制登录用户只能访问当前机构数据。定义是否开启注解定义是否开启注解, 主要做的一件事情就是是否添加 SQL 拦截器。 1 2 3 4 5 6 7 8 9 10 11 12 13
2022-03-09 11:08:06 306
转载 使用Spring StateMachine框架实现状态机
Spring StateMachine框架可能对于大部分使用Spring的开发者来说还比较生僻,该框架目前差不多也才刚满一岁多。它的主要功能是帮助开发者简化状态机的开发过程,让状态机结构更加层次化。前几天刚刚发布了它的第三个Release版本1.2.0,其中增加了对Spring Boot的自动化配置,既然一直在写Spring Boot的教程,所以干脆就将该内容也纳入进来吧,希望对有需求的小伙伴有一定的帮助。快速入门依照之前的风格,我们通过一个简单的示例来对Spring StateMachine有一个初步
2021-07-28 20:40:51 479
原创 java面试题
junit用法,before,beforeClass,after, afterClass的执行顺序一个测试类单元测试的执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass每一个测试方法的调用顺序为:@Before –> @Test –> @After参考: http://bl...
2020-07-28 22:01:11 507
原创 Zookeeper集群
集群介绍集群搭建配置initLimit主从完成初始化最大容忍时间syncLimit主从请求应答最大容忍多少心调集群节点server.id=host:port:port服务器.id=主机:和leader通信:选举通道id = 1-255监控命令c-nf 配置c-ns 会话的详情crst 重置会话统计dump 未经处理会话和临时节点envi 服务环境...
2020-01-08 15:37:57 282
原创 Zookeeper入门
ZK介绍简介:Apache ZooKeeper是一种用于分布式应用程序的高性能****协调服务。提供一种集中式信息存储服务。特点:数据存在内存中,类似文件系统的树形结构(文件和目录),高吞吐量和低延迟,集群高可靠。作用:基于zookeeper可以实现分布式统一配置中心、服务注册中心,分布式锁等功能的实现注:组成ZooKeeper服务的服务器必须彼此了解。它们维护内存中的状态图像,以及持久性...
2020-01-04 23:47:33 582
原创 Mysql分区表
环境MySQL5.7Centos7查看是否支持分区从MySQL5.1开始引入分区功能,用如下方式查看是否支持: “老”的版本用SHOW VARIABLES LIKE ‘%partition%’; 新的版本用show plugins; 查看支持的存储引擎show engines;创建分区1 创建RANGE分区CREATE TABLE tbl_users1 ( ...
2019-11-27 19:38:59 341
原创 dubbo的配置
dubbo配置类型应用配置ApplicationConfig 配置当前应用信息RegistryConfig 配置连接注册中心信息MonitorConfig 配置监控中心信息ModuleConfig 用于配置当前模块关系信息客户消费者端ConsumerConfig : ReferenceConfig 某些属性没有配置的时候 默认使用这个ReferenceConfig 创建一个...
2019-11-14 19:20:44 224
原创 新Dubbo的负载均衡、容错和协议
Dubbo的负载均衡的策略首先会有一个抽象类 AbstractLoadBalance 是负载均衡算法的父类AbstractLoadBalance 抽象类 提供公共算法 如获取权重 权重是根据配置值和算服务的启动的时间 (和预热的时间) 可以做到防止服务正在启动中RandomLoadBalance 加权随机算法 – 默认的 思想有点意思RandomLoadBalance 是加权随机算...
2019-11-13 19:45:37 123
原创 新dubbo使用
dubbo介绍首先谈到dubbo ,我的第一印象不是他是啥子,而是他的读法是啥,光我听到的就有3种 也争论不休,现在官网终于给了正确读法了 Apache Dubbo |ˈdʌbəʊ| is a high-performance现在介绍一下dubbo 目前的官方的介绍Apache Dubbo |ˈdʌbəʊ| is a high-performance, light weight, java ...
2019-10-31 19:40:35 370
原创 深入探讨中台的思想
我的痛点相信大部分的研发和架构师都有类似的痛点:痛点: 产品和项目经理经常问我:为啥类似的业务或者业务场景,代码为啥不能复用,为啥那个逻辑不能平移过来,为啥在设计维度没有考虑到这些,为啥原有业务的逻辑加个小功能影响范围这么大。研发的思维:...
2019-10-26 19:38:48 1360
原创 ZK配置参数和日志清理
ZK配置参数参数说明clientPort客户端连接server的端口,即zk对外服务端口,一般设置为2181。dataDir就是把内存中的数据存储成快照文件snapshot的目录,同时myid也存储在这个目录下(myid中的内容为本机server服务的标识)。写快照不需要单独的磁盘,而且是使用后台线程进行异步写数据到磁盘,因此不会对内存数据有影响。默认情况下,事务日...
2019-09-24 16:54:07 1552
原创 RPC概念和使用
RPC是什么RPC和RMI区别RMI(Remote Method Invocation)远程方法调用。主要是java语言或者其生态的远程方法调用。与MQ的区别重要的是否支持发布订阅 耦合度的问题,一般远程方法调用话对语言要求和协议的通用性非常高的,现在的restful就是采用了http的交互方式,更达到了解耦的目的RPC的流程核心概念和术语marshalling 编组 unm...
2019-09-20 18:51:31 156
原创 zookeeper集群搭建和监控
zookeeper集群搭建配置集群节点互相通信在datadir目录下创建myid文件连接zookeeper集群java连接zk集群串,当一个节点不通时,客户端将自动切换另一个节点集群监控命令...
2019-09-19 19:40:34 216
原创 目标管理
什么是目标管理目标管理有一个前提,那就是人是愿意通过努力而得到成就的,也就是说人有自我实现的需求。我们对待目标态度:目标管理最大的特点是自我控制(Self-Control)。不是爸妈对你的控制,不是亲戚对你的控制,更不是老师和主管领导对你的控制。(这不是凑字数哦请耐心看完~)无论你是头悬梁还是锥刺股,或是建立属于自己的特色奖惩机制,最终的目标都是要实现自我控制。这点和我们所熟悉的“一切以人为...
2019-09-17 20:20:23 337
原创 Zookeeper原理与应用场景
Zookeeper 分布式协调服务应用之处:发布、订阅,命名服务,分布式协调和分布式锁命名服务:主要是微服务的注册中心核心使用: 分布式队列和分布式锁对比 Chubby:Chubby 被定义为 分布式的锁服务为分布式系统提供 松耦合、粗粒度 的分布式锁功能Google Chubby是一个分布式锁服务,Chubby底层一致性实现就是以Paxos为基础的应用场景最典型的场景是进行服务...
2019-09-16 20:54:21 153
原创 MySQL事务隔离级别的实现原理
Mysql的ACIDMYSQL的隔离级别在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读、幻读、不可重复读问题。(基本没用)读已提交:一个事务只能读取另一个事务已经提交的修改。其避免了脏读,但仍然存在不可重复读和幻读问题。可重复读:同一个事务中多次读取相同的...
2019-09-10 19:38:44 180
原创 每天一个俯卧撑的健身法 - 微习惯实践
微习惯思维导图步骤:第一步,选择适合自己的微习惯和计划.计划中的微习惯可以具备一定弹性,可以是单一的也可以尝试同时养成多个微习惯. 足够的小第二步,挖掘每个微习惯的内在价值.为什么我要每天做一个俯卧撑?因为我想有健康的身体,这让我感到非常具有活力,这对我的生活是一件非常重要的事情.就想这样,一步一步引导到微习惯的重要意义**. 对自己的提升是有意义的事情**第三步,明确习惯依据,将其纳入...
2019-09-02 18:48:57 740
原创 番茄工作法-开始使用
番茄工作法是简单易行的时间管理方法原则:1)一个番茄时间(25分钟)不可分割,不存在半个或一个半番茄时间。-- 工作需要保证25分不被打扰2) 一个番茄时间内如果做与任务无关的事情,则该番茄时间作废。-- 作废怎么算3)永远不要在非工作时间内使用"番茄工作法"。(例如:用3个番茄时间陪儿子下的棋、用5个番茄时间钓鱼,等等。)4)不要拿自己的番茄数据与他人的番茄数据比较。5)番茄的数量不...
2019-08-22 18:12:24 299
原创 Feign的构建过程及自定义扩展功能 -- 动态服务名
SpringCloud Feign扩展配置SpringCloud Feign的流程介绍@EnableFeignClients -> FeignClientsRegistrar 扫描 @Feign注解的类 -> FeignClientFactoryBean通过Targeter生产FeignClient -> Targeter通过Feign.Builder构建Feign ->...
2019-08-21 18:09:41 8270 1
原创 DDD 流程梳理
领域驱动设计提供了一整套战略和战术的方法论,这些方法论都是前辈们在无数的项目中总结出来的经验,我们在实际的项目中可以借鉴和学习。步骤:通用语言的提取和落地领域模型的表示上下文定义的边界领域的归属数据建模-- UML彩色建模 和 数据建模通用语言的提取通用语言的意义团队成员概念统一,理解一致,有文档落地。帮助产品快速理解用户需求 》帮助工程师快速理解业务需求 》帮助工程师...
2019-07-25 18:34:29 1127
原创 领域模型的图文表示法
领域模型的图文表示法领域模型定义实体、值对象、聚合、工厂、仓库、领域服务 6 种领域元素的定义,并且管理 6 种领域元素之间的内部关系和外部关系。注: 我们下面领域模型只涉及到 : 实体 值对象 聚合 领域能力 领域服务 不涉及工厂、仓库上面的领域模型从里面还是不能直接对应到我们的代码,我们在建立通用语言的时候没有细致到没有考虑到我们实体没有 考虑到我们值对象没有考虑需求的动作...
2019-07-23 18:49:41 2181 1
原创 DDD之挖掘通用语言实战
通用语言作用团队成员概念统一,理解一致,有文档落地。帮助产品快速理解用户需求 》帮助工程师快速理解业务需求 》帮助工程师落地能实现用户需求的代码。深入理解领域上下文是什么,能干什么,以及和其他领域上下文的边界。通用语言的统一:有上下文 有文档的三方(用户 产品 开发 测试)达成一致标准确认上下文边界也是确认不同系统之间边界通用语言的定义和表达1:说明了...
2019-07-20 18:15:46 595
转载 领域驱动设计 -- 工厂
工厂的由来在平时工作中,如果领域对象的创建逻辑比较简单,那么通过构造器即可创建,如果领域对象的创建逻辑比较复杂的时候,构造器就无法胜任创建的工作了,DDD 中引入了一个新的领域概念来做这个事情:工厂。领域对象的创建逻辑复不复杂,其实很难判断,一般在 Java 语言,类的构造器参数大于 3 个的时候,再使用构造器创建就不太合适了,这时候我们会新建一个工厂,来创建 Java 类,同理,当领域对象的...
2019-07-18 18:42:31 808
转载 领域驱动设计 -- 聚合
聚合的定义聚合,字面意思就很简洁明了,是把领域对象聚合在一起,并维护领域对象之间的关系。我们来解释下这句话中出现的几个名词:名词解释领域对象实体,并且只有实体领域对象的关系实体之间的固定业务关系,主要是逻辑关系(如一对多)和聚合业务逻辑聚合根聚合的根,聚合业务的发起者,领域对象关系的起点。所以我们总结下聚合的定义:聚合根发起的,并维护多个实体间固定业...
2019-07-17 21:34:27 1005
转载 领域驱动设计 -- 值对象
值对象的定义简单来说,值对象是对事物的描述,更确切的说,就是对领域对象的描述。描述这个词很好理解,一般都是形容词,比如说美丽的女人,这里美丽就是对女人的外貌描述。也可以是多个形容词的组合,比如说美丽动人可爱的女人,这里的描述就是美丽、动人、可爱三个形容词的组合。对领域的描述也是如此,有简单的描述,也会有复杂形容词组成在一起的描述,简单的说,就是一个属性字段,复杂描述就是多个属性字段组成的VO...
2019-07-16 20:33:31 1254 1
原创 领域驱动设计 -- 实体
实体的定义我们在定义一个概念的时候,常常会说这个概念是由那些部分构成的,按照这个套路来说,实体是由属性和行为组成的,属性指的是实体本身的特质,行为指的实体本身的能力,实体能干什么。如果一个实体表示的业务概念较大,那么属性和能力就会较多,在描述这个实体是什么的时候,你需要把属性和能力都列举出来,沟通很费力费时。我们在给领域元素做定义的时候,最好不要采用举例子的方式来解释,也不要用一个复杂名词取...
2019-07-15 18:21:00 937
转载 领域驱动设计 -- 最快学习路径介绍
从战略入门这种方式相对比第一种方法,费时很多,需要很大的毅力坚持,但因为是在实践中不断成长的,最终是可以形成自己的方法论的。但耗时太慢长,我自己不断实践落地 DDD 近 5 年,才形成了自己一丢丢的方法论。接下来给大家提供一些总结的资料,供大家入门学习:实体、聚合、值对象、聚合、工厂、仓储、领域服务等领域模型的基础概念,尽量白话准确;提供了挖掘通用语言的两种方法,指导如何从需求文章中快速...
2019-07-10 21:09:12 1027
原创 领域驱动设计-- 分层架构
领域驱动设计的经典分层架构领域驱动设计在经典三层架构的基础上做了进一步改良,在用户界面层与业务逻辑层之间引入了新的一层,即应用层(Application Layer)。同时,一些层次的命名也发生了变化,将业务逻辑层更名为领域层自然是题中应有之义,而将数据访问层更名为基础设施层(Infrastructure Layer),则突破了之前数据库管理系统的限制,扩大了这个负责封装技术复杂度的基础层次的内...
2019-07-09 21:40:01 3975
转载 领域驱动设计-- 界限上下文协作
限界上下文通信边界对协作的影响确定限界上下文之间的关系不能想当然,需得全面考虑参与到两个限界上下文协作的业务场景,然后在场景中识别二者之间产生依赖的原因,确定依赖的方向,进而确定集成点,需要注意的是,限界上下文的通信边界对于界定协作关系至为关键。限界上下文的通信边界分为进程内边界与进程间边界,这种通信边界会直接影响到我们对上下文映射模式的选择。例如,采用进程间边界,就需得考虑跨进程访问的成本,如...
2019-07-08 21:56:22 1129
原创 领域驱动设计-- 界限上下文
界限上下文我们怎么去划分界限上下文我认为通过从业务边界到工作边界再到应用边界这三个层次抽丝剥茧,分别以不同的视角、不同的角色协作来运用对应的设计原则,会是一个可行的识别限界上下文的过程方法。从业务边界到我们的界限上下文,根据上图的过程展示梳理出来流程:在明确了系统的问题域和业务期望后,开发团队与领域专家经过充分地沟通与交流,可以梳理出主要的业务流程 — 这一阶段需要梳理和输出...
2019-07-07 21:06:40 2409
原创 领域驱动设计-- 模型
什么是模型从领域驱动的战略设计进入战术设计,简单说来,就是跨过系统视角的限界上下文边界进入它的内部,从分层架构的逻辑分层进入到每一层的内部。在思考内部的设计细节时,首先需要思考的问题就是:什么是模型(Model)?模型是从哪里来的,怎么得出来的。注:这里的模型不仅仅是我们数据库建模还是来看看 Eric Evans 对模型的阐述:为了创建真正能为用户活动所用的软件,开发团队必须运用一整套与...
2019-07-06 12:23:58 756
原创 java源码解析--(ThreadLocal)
ThreadLocal介绍ThreadLocal,很多人都叫它做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那样每个线程可以访问自己内部的副本变量。这句话从表面上看起来理解正确,但实际上这种理解是不太正确的。多线程并发执行时,需要数据共享,因此才有了volatile变量解决 多线程间的数据可见性,...
2019-07-02 21:42:00 189
原创 SpringCloud网关和负载均衡整合
场景如果网关使用的是springcloud的话就直接使用,springcloud的方法直接整合不讨论如果采用了数据库或者zk为注册中心的话,当服务端注册的时候就是注册自己的ip地址那么负载均衡取到的ip是真实的服务端的ip,但是我们需要保证我们的请求都是要走网关的所以我们需要对我们的负载均衡的代码进行扩展为什么需要网关呢?我们的服务需要记过统一的鉴权或者过滤请求等,而我们的网关往往不是...
2019-07-01 19:26:28 1442
原创 SpringCloud之网关 --(Zuul)
Zuul 介绍This project provides a library for building an API Gateway on top of Spring MVC. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting co...
2019-06-29 16:06:27 385
原创 SpringCloud之声明式客户端 --(Fegin)源码分享
Fegin(声明式的web服务客户端)Fegin介绍Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageC...
2019-06-27 19:27:19 253
原创 SpringCloud之熔断 --(Hystrix)源码分析
Hystrix(熔断)动态的修改熔断配置背景:hystrix 熔断过程问题 和日志问题 需要熔断的场景 动态改变我们的配置参数 智能化其实本身的HystrixCommand 注解也是通过切面配置的,我们这边可以通过自定义注解动态加入@Aspect@Componentpublic class MyHystrixCommandAspect { public static Boole...
2019-06-26 19:38:17 740 1
原创 SpringCloud之负载均衡 --(Ribbon)源码分析
Ribbon介绍Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一...
2019-06-26 08:46:18 283
原创 SpringCloud之声明式客户端 --(Fegin)
Fegin(声明式的web服务客户端)Fegin介绍Fegin是一个声明似的web服务客户端,它使得编写web服务客户端变得更加容易。使用Fegin创建一个接口并对它进行注解。它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageC...
2019-06-23 17:26:56 591
window下或unix编译openjdk
2015-01-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人