- 博客(12)
- 收藏
- 关注
原创 Spring WebFlux -自定义ReactiveTransactionTemplete实现事务
Mono里是不支持注解事务的。比如 @Transactional public Mono<CommonOutput> save(RecordFileSaveReq req) { return Mono.just(true) .filter(b -> saveLog(req)) .fi...
2019-03-28 17:29:50 3233
原创 Spring WebFlux - 使用@Valid校验
WebFlux的validation比以前的版本简单了很多。先看pom.xml: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...
2019-03-27 08:34:21 2280
原创 Spring WebFlux - WebClient连接池简单测试和代码分析
Spring5.1开始,WebFlux的WebClient支持连接池功能了。默认情况下,WebClient使用global Reactor Netty资源,也可以不使用全局资源: @Bean ReactorResourceFactory resourceFactory() { ReactorResourceFactory factory = new Reactor...
2019-03-21 17:08:35 9695 3
原创 sofa-jraft试用 - counter
阿里开源了sofa-jraft。学习counter例子,使用Spring Boot整理了一下代码。首先,不喜欢Hessian,换成kryo。这部分代码,客户端和服务器端代码相同。CKryoPool类,提供pool提高性能:@Serviceclass CKryoPool { private KryoFactory factory = () -> { Kryo k...
2019-03-20 15:30:26 2231
原创 Java并发编程实践 - 读书笔记(1)
线程安全编写线程安全的代码,本质上就是管理对状态的访问,而且通常都是共享的、可变的状态。共享:一个对象可以被多个线程访问可变:变量的值在它的生命周期内可以改变通俗地说,一个对象的状态就是它的数据,存储在状态变量(state variable)中,比如实例成员或静态成员。无论何时,只要有多于一个的线程访问给定的状态变量,而且其中某个线程会写入该变量,就必须使用同步来协调线程对对象的访问...
2019-03-14 16:42:35 107
原创 领域驱动设计 读书笔记 (3)
上下文是最不容易引起注意的原则,实际上却是最根本的。无论大小,成功的模型必须在逻辑上一致,不能有互相矛盾或重叠的定义。有时,企业系统会集成各种不同来源的子系统,或包含诸多完全不同的应用程序,以至于无法从同一角度看待领域。要把这些部分中隐含的模型统一起来可能太难了,通过为每个模型显式定义一个BOUNDED CONTEXT,然后在必要的情况下定义它与其他上下文的关系,模型就不会变得掺杂不清。通过精炼...
2019-03-14 10:16:17 344
原创 领域驱动设计 读书笔记 (2)
与所有探索活动一样,建模本质上是非结构化的。对象分析的传统方法是先在需求文档中确定名词和动词,并将其作为系统的初始对象和方法。这种方法太过简单,只适合教导初学者如何建模。实际上,初始模型都是基于对领域的浅显认知而构建的。不够成熟、深入。比如一个运输系统,不应该是货轮和集装箱的模型。而是船只航次(货轮、火车等调度好的航程)。深层模型能穿过领域表象,清楚地表达领域专家的主要关注点和最相关的知识。...
2019-03-08 09:17:01 303
原创 领域驱动设计 读书笔记 (1)
模型由不同部分组成用于特定目的抽象的系统认知工具模型有几种表现方法(语言、代码、图解)一个系统包含若干模型通用语言是作为领域专家与软件专家之间的协作而演进的。好的面向对象设计单一职责原则:类只有一个职责开放封闭原则:类应该对修改关闭,但是对扩展开放。里氏替换原则:比如有个继承关系Person和Student。可以使用Person的时候,也可以使用...
2019-03-06 15:24:22 414
原创 深入理解Java虚拟机 - 内存 读书笔记
Java虚拟机管理的内存包括以下几个区域:程序计数器 Program Counter Register,比较小,可以认为是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取需要执行的下一条指令,分支、循环、跳转、异常处理和线程恢复都依赖这个计数器完成。每个线程都有独立的程序计数器。如果正在执行native方法,该计数器为Undefined...
2019-03-05 13:27:14 98
原创 重构 改善既有代码的设计 第二版 - Bad Smells in Code
重构 改善既有代码的设计 第二版 - Bad Smells in Code神秘的名字Change Function DeclarationRename VariableRename Field重复的代码Extract Function代码类似但是不完全相同时Slide Statements如果重复代码位于公共父类的子类中Pull Up Method长函数Extr...
2019-03-04 17:09:33 5696
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人