- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 FutureTask的用法及两种经常使用的使用场景
FutureTask可用于异步获取执行结果或取消执行任务的场景。经过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,以后能够在外部经过FutureTask的get方法异步获取执行结果,所以,FutureTask很是适合用于耗时的计算,主线程能够在完成本身的任务后,再去获取结果。另外,FutureTask还能够确保即便调用了屡次run方法,它都只会执行一次Runnable或者Callable任务,或者经过cancel取消FutureTask的执行等
2021-10-11 14:28:43
4936
原创 Java 8 新特性之 Stream
stream of elements -----> filter-> sorted-> map-> collect List transactionsIds = widgets.stream() .filter(b -> b.getColor() == RED) .sorted((x,y) -> x.getWeight() - y.getWeight()) .mapToInt(Widget::getWeight) .sum(); 1.filter List strings
2021-01-22 14:47:39
287
2
原创 Runtime.getRuntime().addShutdownHook简介
前言: 在使用线程池的时候,偶然看到了前人的代码里出现了Runtime.getRuntime().addShutdownHook()。 作用: jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。 使用场景: 多用于内存清理,对象销毁等等。 示例: 以线程池在进程关闭时的处理。 上代码: private static Sche
2020-08-12 20:05:30
1335
原创 mysql自动化运维平台--Arkcontrol部署教程
一、环境要求 操作系统: 支持Centos 6/7 支持Redhat 6/7 内存: 4G+ 二、安装部署 1、下载 wget http://mirror.cloud-ark.com/public_package/arkcontrol/latest/arkcontrol-v1.4.1-beta-community-linux-x86_64.tar.gz 2、安装 tar -xvf arkcontrol-v1.4.1-beta-community-linux-x86_64.tar.gz ./depl
2020-07-08 21:40:16
1389
原创 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)
数据一致性问题非常多样,下面举一些常见例子。比如在更新数据的时候,先更新了数据库,后更新了缓存,一旦缓存更新失败,此时数据库和缓存数据会不一致。反过来,如果先更新缓存,再更新数据库,一旦缓存更新成功,数据库更新失败,数据还是不一致; 比如数据库中的参照完整性,从表引用了主表的主键,对从表来说,也就是外键。当主表的记录删除后,从表是字段置空,还是级联删除。同样,当要创建从表记录时,主表记录是否要先创建,还是可以直接创建从表的记录; 比如数据库中的原子性:同时修改两条记录,一条记录修改成功了,一条记录没有修改成
2020-06-28 18:03:37
722
原创 Flex实战七(项目属性:order、flex-grow、flex-shrink、flex-basis、flex综合属性、align-self、margin)
order属性定义项目的排列顺序,数值越小,排列越靠前,默认为0 .item{order: } flex-grow属性定义项目的放大比例,默认为0,及如果存在剩余空间也不放大。 .item{flex-grow: ;/* default 0*/} flex-shrink属性定义了项目的缩小比例,默认为1,及如果空间不足,该项目将缩小 .item{flex-shrink: ;/* default 1...
2020-03-16 15:51:17
399
原创 Flex实战六(容器属性align-items)
align-items属性定义项目在交叉轴上如何对齐。(上中下) .box{align-items: flex-start | flex-end | center | baseline |stretch} flex-start: 交叉轴的起点对齐 flex-end:交叉轴的终点对齐 center:交叉轴的中点对齐 baseline: 项目的第一行文字的基线对齐 stretch(默认值):如果项目未...
2020-03-16 15:01:38
453
原创 Flex实战五(容器属性justify-content)
justify-content属性定义了项目在主轴上的对齐方式(左中右) .box{justify-content: flex-start | flex-end | center | space-between | space-around} flex-start:默认值 左对齐 flex-end:右对齐 center:居中 space-between:两端对齐,项目之间间隔都相等 space-a...
2020-03-16 14:36:06
377
原创 Flex实战四(容器属性flex-wrap)
默认情况下,项目都排在一条线上,flex-wrap属性定义,如果一条轴线排不下,如何换行。 .box{flex-wrap: nowrap | wrap | wrap-reverse} nowrap(默认):不换行 wrap:换行,第一行在上方 wrap-reverse:换行,第一行在下方 <!DOCTYPE html> <html> <head> <...
2020-03-16 14:21:36
427
原创 Flex实战三(容器属性flex-direction)
.box{flex-direction: row | row-reverse | column | column-reverse;} flex-direction属性决定主轴的方向:左中右、上中下 row(默认值):主轴为水平方向,起点在左端 row-reverse:主轴为水平方向,起点在右端 column:主轴为垂直方向,起点在上沿 column-reverse:主轴为垂直方向,起点在下沿 ...
2020-03-15 17:05:23
255
原创 Flex实战二(表单布局)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>flex表单布局对比</title> </head> <body> <div&g...
2020-03-15 16:29:27
807
原创 Flex实战一(概要)
任何一个容器可以指定Flex布局。.box{display: flex;} 行内元素也可以使用flex布局。 .box{display: inline-flex} Webkit内核的浏览器,必须加上-webkit前缀 .box{display: -webkit-flex;/* Safari */ display: flex;} 设置为Flex布局后,子元素的float、clear和vertical...
2020-03-15 15:59:14
167
原创 MySQL执行计划extra中的using index 和 using where using index 的区别
http://www.cnblogs.com/wy123/p/7366486.html
2020-03-04 18:29:10
455
原创 JVM配置
java -Xms3584m -Xmx3584m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/alidata1/admin/za-castle-test-ms/logs/vehicle-za-castle-test-ms.hprof -verbose:gc -Xloggc:/alidata1/admin/za-castle-test-ms/l...
2020-01-17 11:41:15
169
原创 策略模式(优化 if-else)
前言 在之前文章说到,简单 if-else,可以使用 卫语句 进行优化。但是在实际开发中,往往不是简单 if-else 结构,我们通常会不经意间写下如下代码: -------------------- 理想中的 if-else -------------------- public void today() { if (isWeekend()) { System.out....
2020-01-07 17:06:28
956
3
原创 模板方法设计模式
模板方法模式的定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 案例一:消息监听器 @Slf4j public abstract class AbstractJsonStringMessageListener<T> implements MessageListener<String, String...
2020-01-06 16:24:24
167
原创 自定义注解+AOP实现缓存
使用场景:解耦业务实现和基础组件功能代码 @MyCache(key = "test_'+#code") public TempObject getTempObject(String code){ } 自定义注解: @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyCache { ...
2020-01-02 14:01:08
554
原创 spring Valid @Pattern 常见的验证表达式
匹配首尾空格的正则表达式:(^\s*)|(\s*$) 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。 只能输入至少n位的数字:"^\d{n,}$"。 只能输入m~n位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。 只能输入有两位小数的正实数:"^...
2019-12-11 11:14:59
1303
原创 备忘录模式
备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 关键代码:客户不与备忘录类耦合,与备忘录管理类耦合。 优点: 1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。 缺点:消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次...
2019-10-16 16:50:22
155
原创 责任链模式
优点 1)责任链模式将请求和处理分开,请求者不知道是谁处理的,处理者可以不用知道请求的全貌。 2)提高系统的灵活性。 缺点 1)降低程序的性能。每个请求都是从链头遍历到链尾,当链比较长的时候,性能会大幅下降。 2)不易于调试。由于该模式采用了类似递归的方式,调试的时候逻辑比较复杂。 应用场景 责任链模式是一种常见的模式,Struts2的核心控件FilterDispatcher是一个Servlet过...
2019-10-16 11:04:26
131
原创 mysql事务行锁for update实现写锁的功能
在电子商务里,经常会出现库存数量少,购买的人又特别多,大并发情况下如何确保商品数量不会被多次购买。其实很简单,利用事务+for update就可以解决。我们都知道for update实际上是共享锁,是可以被读取的。但是如何在执行时,不被读取呢。 简单来说:假设现在库存为1,现在有A和B同时购买 A: 1、先开启一个事务,执行sql select stock from good where ...
2019-09-30 14:53:20
294
原创 Git实战
一 集中式vs分布式 集中式版本控制系统:版本库是存放在中央服务器的,每个操作都需要联网与中 央服务器进行交互。 分布式版本控制系统:版本库是存放在每个人自己的电脑上,即使没有网络,你 也可以想玩就玩。分布式版本控制没有中央服务器概念,其远程服务器主要是用 来多人协作时交换数据而已 二 工作区&暂存区 三 配置文件样例 在用户目录下添加配置文件.gitconfig,功能自行百度吧,比较简...
2019-09-27 16:23:23
347
转载 IDEA中用好Lombok,撸码效率至少提升5倍
Lombok注解的使用 1) @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。 @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。...
2019-09-20 18:59:15
549
原创 统一异常返回、和统一返回json格式
统一异常返回、和统一返回json格式 @Configuration @Slf4j public class CommonJsonReturnConfig { @RestControllerAdvice("com.ceo.controller") static class CommonResultResponseAdvice implements ResponseBodyAdvice...
2019-09-20 18:38:34
649
原创 项目重构,我是如何优化大量屎一样的 if else 代码的?
策略模式 1.首先抽象业务处理器 2.将业务处理器和其支持处理的类型放到一个容器中,java里Map就是最常用的容器之一 3.定义不同的处理器 4.测试类 if else if ("BATCH_CHANGE_WAREHOUSE".equals(taskType)) { //批量转仓逻辑 } else if ("BATCH_CHANGE_SHI...
2019-09-20 18:26:21
296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅