- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 ThreadPoolExecutor创建线程池的几种案例
今天看了一下其它公司是怎样创建线程池的.基本都差不多.有些是单线程的线程池.如下:1.公司用来处理每日定时任务的线程池:ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 20, 60 * 3, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(100), Executors.defaultThreadFactory(), new ThreadPoolExecutor.Ab
2020-07-31 10:21:09 1060
原创 Java小技巧系列一:List去重
List去重一般利用set的不可重复特性去重,还有一个是利用Java8的stream 去重.示例如下: public static List<String> removeDuplicates(List<String> list) { //使用TreeSet也一样 return new ArrayList(new LinkedHashSet(list)); } public static void main(String[] a
2020-07-28 00:55:00 106
原创 使用FeignClient调用接口报错:Caused by: java.lang.NoClassDefFoundError: feign/Feign$Builder
由于引入了api的jar包,Application扫描不到@FeignClient的接口类.在Application上添加了basePackages.@EnableFeignClients(basePackages = "com.sysmgr.service.api").我使用的版本是1.5.2.RELEASE.启动后报错如下:Caused by: java.lang.NoClassDefFoundError: feign/Feign$Builder at java.lang.Cl..
2020-07-27 23:59:02 3070
原创 SpringBoot自动配置@EnableAutoConfiguration分析
@EnableAutoConfiguration 启动自动配置.在spring-boot-autoconfigure-xxx.RELEASE.jar中.EnableAutoConfiguration 有两个重要注解@AutoConfigurationPackage,@Import({AutoConfigurationImportSelector.class})1.@AutoConfigurationPackage引入了@Import({Registrar.class})会扫描启动类所在的包,并注册.
2020-07-27 13:33:51 284
原创 MySQL中时间的处理与DATE_FORMAT() 和STR_TO_DATE()
前提:apply_time为datetime类型,jdbcType="TIMESTAMP"如果Java中时间参数是String类型.mybatis中可以写成<if test="param.applyTimeStart!=null and param.applyTimeStart!='' ">AND apply_time >=str_to_date(#{param.applyTimeStart},'%Y-%m-%d %H:%i:%S')</if>.
2020-07-23 18:10:44 2696
原创 Java线程6种状态以及转化
Java线程6种状态:1.new(初始化):start()方法转runnable2.runnable(可执行/执行): 等待synchronized 的隐式锁时转blocked3.blocked(阻塞): 当等待的线程获得 synchronized 隐式锁时,就又会从 BLOCKED 转换到 RUNNABLE 状态4.waiting(无限期等待): 三种情况:第一种场景,获得 synchronized 隐式锁的线程,调用无参数的 Object.wait() 方法 第二种场景,调用无参数的
2020-07-23 10:08:21 104
原创 SpringBoot1.5升级到2.2时报错:NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver
从SpringBoot1.5升级到2.2时报错:NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver.这个是因为从2.0开始删除了这种方式获取参数.2.0之前是RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(environment, "kafka.consumer.");Map<String, Object&g.
2020-07-23 00:48:23 1334 1
原创 Linux下安装AsmTools工具
一、安装官网最新版本1.下载apache-ant最新版wget http://mirrors.cnnic.cn/apache//ant/binaries/apache-ant-1.9.15-bin.tar.gz2.解压tar -zxvf apache-ant-1.9.15-bin.tar.gz 3.移动到安装目录mv /root/apache-ant-1.9.15/ /home/software/4.配置变量并应用vim /etc/profile.
2020-07-21 00:58:53 344
原创 MySQL唯一索引和普通索引对性能的影响
先说结论:对查询:普通索引和唯一索引对查询性能影响很小对更新:唯一索引比普通索引更耗时.查询流程:唯一索引找到第一个匹配数据后不继续往后查找.1.普通索引,从索引树根节点开始按层往下查找,找到对应的数据页,然后二分法查找节点,找到第一个匹配的数据后,继续往后查找,直到不满足条件.然后返回.2.唯一索引,从索引树根节点开始按层往下查找,找到对应的数据页,然后二分法查找节点,找到第一个匹配的数据后,直接返回.更新流程:唯一索引对更新需要判断是否冲突1.普通索引,找到对应的..
2020-07-17 16:40:02 3073
原创 MySQL查询第N大的问题
关键点:LIMIT在MySQL教程网上找到介绍TheLIMITclause is used in theSELECTstatement to constrain the number of rows to return. TheLIMITclause accepts one or two arguments. The values of both arguments must be zero or positiveintegers.大意是,LIMIT用在SELECT语句中,用来限制...
2020-07-17 01:42:54 363
原创 雪花算法实现分布式ID生成器
package com.common.generator;/** * Snowflake */public class IdGenerator { private final long twepoch = 1288834974657L; private final long workerIdBits = 5L; private final long datacenterIdBits = 5L; private final long maxWorkerId = -1L ^ (-1L &.
2020-07-16 01:19:49 658
原创 Docker构建镜像容器实用操作
1.构建镜像:docker build -t imageName:tag . 注意最后有个点 表示当前目录的Dockerfile文件docker build -t flowable92:6.4.1 .2.启动容器docker run -d --name flowable_web_92 -v /root/flowable_war/flowable_92/container-conf92/:/opt/tomcat/conf -p 28082:8080 flowable92:6.4.1dock..
2020-07-15 10:21:58 227
原创 FlowableException: Error initialising dmn data model报错问题
flowable war包启动失败,报错Caused by: org.flowable.common.engine.api.FlowableException: Error initialising dmn data model类似问题.比如Caused by: org.flowable.common.engine.api.FlowableException: Error initialising cmmn data modelCaused by: org.flowable.common.eng
2020-07-15 10:14:29 9344
原创 查询以及删除MySQL中重复的数据
先查询重复数据的单号, 再查询重复的数据select * FROM transaction_detailWHERE id IN ( SELECT id FROM ( SELECT id FROM transaction_detail GROUP BY trade_flow_no, account_no, service_code, direction, trade_type HAVING COUNT(*) > 1 ) dis);另一种是使用not inSEL
2020-07-14 09:50:46 91
原创 MySQL的MVCC与其它锁的区别
多版本并发控制(MVCC),是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。 这样在读操作不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读。不仅是MySQL,包括Oracle、PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同。MVCC与乐观锁和悲观锁:悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但开销很大,在SELE
2020-07-14 01:42:00 1057
原创 MySQL长事务处理办法
长事务(Long-Lived Transactions),顾名思义,就是执行时间较长的事务。在innodb中可以查询到当前执行中的事务。select * from information_schema.INNODB_TRX;在访问表时,innodb会自动给加上元数据锁(meta data lock,MDL),MDL是表级锁。如果是读,就是共享锁,写就是排它锁。当执行长事务时,后续的事务如果要获取排它锁就会被阻塞。可能引发系统崩溃严重事故。解决办法:1.等系统不繁忙时操作2.检查表inf
2020-07-13 01:07:37 2170
原创 MySQL页分裂与页合并以及磁盘大小变化
从磁盘的物理结构来看存取的最小单位是扇区,一个扇区是512字节。微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”。一簇就是一组连续的扇区,每个簇可以包括2、4、8、16、32或64个扇区。一个文件通常存放在一个或多个簇里,但至少要单独占据一个“簇”。 也就是说两个文件不能存放在同一个簇中。NTFS文件系统格式化的时候默认是8个扇区组成一个簇,即4096字节,即4kb。而MySQL读取数据的最小单位为页,默认大小为16kb。lnnoDB逻辑存储结构MySQL所
2020-07-08 01:47:27 2963
原创 Xml与Bean转换
有些接口接收参数是Xml格式,可以通过实现这个基础类转换.减少冗余代码/** * Xml Bean转换基础类 * */public abstract class MarshallAble{ public String marshallToString() throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(ClassUtils.getUserClass(childClass.
2020-07-06 10:06:32 384
原创 MySQL的文件格式file_format与行格式row_format
MySQL的文件格式在5.7之前是只有Antelope(羚羊)一种,在5.7之后新加了一种文件格式Barracuda(梭子鱼)。所以MySQL的InnoDB引擎有两种文件格式:Antelope和Barracuda。那怎么查询文件格式呢?如果查询不到说明是默认文件格式。show variables like "innodb_file_format";那怎么设置文件格式呢?设置为BARRACUDA需要开启INNODB_LARGE_PREFIX参数。SET GLOBAL INNODB_LA
2020-07-04 00:27:04 1886
原创 Java开发者MySQL使用手册
这个是对Java开发人员的MySQL使用手册.乱序持续更新中,建议不要使用5.6以下的版本,至少5.7以上.1.MySQL的数据类型MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。这个一定要熟悉,因为关系到你设计的表是否合理.可以参考MySQL 数据类型.2.字符集不要设置为utf8 ,改为utf8mb4.COLLATE使用utf8mb4_general_ci3.使用 int 或者 bigint 类型。如果需要存储到分的维度,需要 *100 进行放大.或者
2020-07-03 01:23:44 262
原创 Java使用位运算进行int的加减乘除运算
通过位运算计算int的加减乘除:加法原理:a+b位的异或运算跟求'和'的结果一致:异或 1^1=0 1^0=1 0^0=0求和 1+1=0 1+0=1 0+0=0位的与运算跟求'进位‘的结果一致:位与 1&1=1 1&0=0 0&0=0进位1+1=1 1+0=0 0+0=0所以a+b = (a^b)+((a&b)<<1)减法原理:a-b减去一个正数等于加上这个负数的补码.一个正数的补码是它的原码.一个负数的补码等于它的反码.
2020-07-01 16:31:52 11684 1
asmtools.jar
2020-07-21
Zookeeper_DistributeLock_Demo.zip
2020-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人