- 博客(93)
- 收藏
- 关注
原创 视频解析工具类
<dependency> <groupId>com.googlecode.mp4parser</groupId> <artifactId>isoparser</artifactId> <version>1.1.18</version></dependency>import org.junit.Test;import java.io.*;import java.net.M.
2022-03-15 16:31:24
559
1
原创 超好用的 Kafka 客户端管理工具 Offset Explorer
我们在项目开发中根据实际业务需求会使用到一些中间件,比如缓存redis、消息队列Kafka/RocketMQ/RabbitMQ等,在代码中集成后,可以通过命令来查看数据的走向,但我们更希望的是有一些可视化的辅助工具,来帮助我们快速的查看和监控服务以及数据的走向。很多中间件官方并没有给我们提供一些比较好的可视化工具。以Kafka为例介绍kafka可视化工具offset explorer的使用,更加方便我们对kafka数据的直观感受。一、下载安装1、从kafka tool官网下载Offset Exp
2022-03-06 20:42:35
12020
5
原创 Bigdecimal心得
BigDecimal cnt;BigDecimal totalCnt = new BigDecimal(total);cnt = new BigDecimal(po.getId() * 100);Double d = cnt.divide(totalCnt, 2, BigDecimal.ROUND_HALF_UP).doubleValue();在这里100要先乘以整数,否则放到除完后再*100,则会出现没有保留两位小数的情况;一些BigDecimal的参考:BigDecimal.se.
2022-01-19 20:47:22
298
原创 数据库三范式
1:字段不可拆分,如:名字字段,王小二,在国外“王”和“小二”是要分开的2:需要有主键,其他字段通过主键关联3:不冗余额外信息,如code对应的name
2021-07-06 19:10:38
110
原创 使用Visual Paradigm画ER图/Visual ER图
Visual Paradigm:多功能设计制图工具。一:new-project新建项目二:new entity relationship diagramnew entity relationship diagram :新建实体关系图三:拖拽一个实体出来四:open specificationopenspecification :打开说明五:增加行/字段六:结果图...
2021-05-15 08:34:53
6975
1
原创 架构思考
领域事件我们知道领域模型的变化会产生领域事件。例如,用户在完成注册后,系统会发出一封带有确认信息的邮件到用户的邮箱;用户关注的好友发送动态后他会收到相应的通知等等。在业务比较简单或者不用考虑性能的情况下,我们可以直接把对领域事件的处理嵌入到领域服务中。考虑这样一个场景:用户回复了某条评论,那么被回复的那个用户(也就是那条评论的所有者)需要收到一个PUSH消息。如果直接把发送PUSH的动作嵌入到了回复的逻辑中。这样做有以下两个问题:回复动作处理了它不关心的逻辑。发送PUSH不是回复的强关联逻辑,也
2021-05-07 23:43:45
176
原创 metaq原理介绍
1. 前言本文档旨在描述RocketMQ的多个关键特性的实现原理,并对消息中间件遇到的各种问题进行总结,阐述RocketMQ如何解决这些问题。文中主要引用了JMS规范与CORBA Notification规范,规范为我们设计系统指明了方向,但是仍有不少问题规范没有提及,对于消息中间件又至关重要。RocketMQ并不遵循任何规范,但是参考了各种规范与同类产品的设计思想。产品发展历史大约经历了三个主要版本迭代一、Metaq(Metamorphosis)1.x由开源社区killme2008维护,开
2021-04-16 16:10:34
2359
原创 SPI和API的区别
API(Application Programming Interface):由于实现方完成接口实现SPI(Service Provider Interface):由调用方实现接口常见例子:插件模式开发数据库驱动 Driver 日志 Log dubbo扩展点开发
2021-04-13 17:05:08
696
转载 有限状态机FSM(Finite State Machine)及实现方式介绍(转)
原文:https://www.cnblogs.com/barrywxx/p/12860573.html一、为什么引入有限状态机? 最近做一个项目,项目中很多实体(Entity),每个实体都有很多状态(State),各状态会经过不同事件(Event)触发后转换到另一个状态。这些事件包括但不限于:用户页面点击触发,生效时间或失效时间到达,其他依赖实体状态变更等。在状态变更后还会有一系列动作(Action)处理。一旦相互依赖实体或实体本身状态增多,状态转换变多,处理这些状态的业务代码也会分散在各处,..
2021-02-20 17:15:08
3971
原创 记一次线上死循环导致的内存溢出
系统水位图GC耗时峰值达到1000K毫秒(16分钟)线程总数下跌(出现死循环,线程被hold住)dump文件由于图片可以看出系统堆内存有1G多
2020-11-22 14:45:20
443
原创 计算机:字节与字符转换关系
位(bit):计算机存储信息的最小单位,音译比特,二进制的一个”0“或”1“字节(byte):计算机存储容量基本的单位,8个二进制组成1个字节。一个英文字母占用1个字节,一个汉字占用2个字节。1024B=1KB1024KB=1MB1024MB=1GB1024GB=1TB...
2020-11-22 14:37:36
705
原创 Spring启动过程
开始创建beanFactory加载beanDefinition,并注册到IOC容器中XmlBeanDefifinitionReaderBean实例化流程BeanDefinitionParser
2020-10-25 22:58:11
139
原创 IDEA Diagrams使用实现类图(类关系图、子类、父类)
目录1:右键选择:show diagrams2:结构图效果3:功能说明4:定位源码位置5:添加子类、子实现、父类idea diagrams图标功能是查看类、接口继承和实现的工具。使用方法介绍如下。1:右键选择:show diagrams2:结构图效果3:功能说明num 按钮 功能 1 Fields 域 2 Constructors 构造器 3 Method 方法 4 Properti..
2020-09-06 14:57:48
9329
原创 记录一次aop报错
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderPredictBizServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error...
2020-08-19 18:55:45
213
原创 maven中的groupId和artifactId的含义
一:定义groupId和artifactId被统称为“坐标”,是为了保证项目的唯一性而提出的。如果你要把项目弄到maven仓库中,查找的时候就必须用groupId和atifactId去查找。二:规范groupId一般分为多段。这里我只说两段:第一段为域:域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。第二段为公司名称:如apache、alibab...
2020-05-05 21:32:35
1791
原创 Java并发编程:Callable、Future和FutureTask
一:背景创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。...
2020-05-04 01:08:04
340
原创 MySQL Workbench
PK:primary key 主键NN:not null 非空UQ:unique 唯一BIN:binary 二进制数据UN:unsigned 无符号(非负数)ZF:zero fill 填充0 例如字段内容是1 int(4), 则内容显示为0001AI:auto increment 自增...
2020-05-01 22:31:19
894
原创 mysql相关
一:数据库事务具有ACID四大特性原子性(atomicity) :事务最小工作单元,要么全成功,要么全失败 。 一致性(consistency): 事务开始和结束后,数据库的完整性不会被破坏 。 隔离性(isolation) :不同事务之间互不影响,四种隔离级别为RU(读未提交)、RC(读已提交)、RR(可重复读)、SERIALIZABLE (串行化)。 持久性(durability) ...
2020-02-16 14:43:06
156
原创 阿里集团使用的各种中间件和基础产品
中间件: HSF:阿里高性能服务框架 TDDL:分库分表数据库服务 ONS:分布式消息服务 Diamond:分布式持久配置系统 Tair:分布式缓存 Notify:分布式消息服务 Switch:轻量级开关与动态配置项目管理框架 Sentinel:限流 EagleEye:链路监控 SchedulerX...
2020-01-11 14:45:14
1025
原创 Java正则表达式&Sublime正则使用
一:解释正则表达式定义了字符串的模式;正则表达式可以用来搜索、编辑、处理文本;正则表达式并不仅限于某种语言,但是在每种语言中有细微的差别二:正则表达式实例java.util.regex 包主要有以下类:Pattern类:pattern对象是一个正则表达式的编译表示。 Matcher类:Matcher对象是对输入字符串进行解释和匹配操作的引擎。三:案例package tes...
2020-01-11 14:08:36
524
原创 tar包、jar包、war包、tar.gz包的区别(通过assembly打tar.gz包)
一:文件类型不同tar包:属于打包文件。Lniux系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀为“tar”。简单说tar就是打包;jar包:属于打包文件。即Java Archive的Java包。Java编译好之后生成class文件,但是如果直接发布这些class文件的不方便,所以就把许多class文件打包为一个jar包。jar包中除了class文件还包括一些资源和配...
2019-11-16 13:03:12
6662
原创 多线程工具CountDownLatch使用
一:CountDownLatch概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。二:CountDownLatch的用法CountDownLatch典型用法:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为new CountDownLatch(n),每当一个任务线...
2019-11-10 16:38:41
254
转载 可重入锁
一:打水故事理解可重入锁背景:有一口井水,村民都在那边打水。但是人打水人太多,需要用规则保证打水秩序。规则:家庭为单位,家庭任何人到井边,这个家庭就有打水权(七大姑八大姨等亲戚)看井人:保证按秩序交接打水示意图如下 :是不是感觉很和谐,如果打水的人打完了,他会跟看井人报告,看井人会让第二个人接着打水。这样大家总都能够打到水。是不是看起来挺公平的,先到的人先打水,当然不是绝对...
2019-11-03 21:55:47
177
原创 与运算(&)、或运算(|)、异或运算(^)、进制转换
参加运算的两个对象,按二进制位进行运算。进制转换地址:http://tool.oschina.net/hexconvert/一:与运算符(&)预算规则:0&0=0;0&1=0;1&0=0;1&1=1即:两个同时为1,结果为1,否则为0例如:3&5十进制3转为二进制的3:0000 0011十进制5转为二进制的5:0000...
2019-10-26 23:49:30
251040
18
原创 @Slf4j注解的使用
在使用slf4j日志系统的时候,我们经常需要在类中添加如下代码用于打印日志(在日志文件中,就会将类名打出来):问:创建日志实例,为什么使用static和final呢?因为:final修饰为不可变常量;static修饰变量,不管new多少次,都只创建一个实例,节省空间;import org.slf4j.Logger;import org.slf4j.LoggerFactory;...
2019-10-13 18:04:05
470
原创 Mybatis之TypeHandler使用介绍
一:TypeHandler概念TypeHandler类型转换器,在mybatis中用于实现JAVA类型和JDBC类型的相互转换。列如:mysql表字段类型是个varchar,但是java代码对应字段是个对象VO,对象类型肯定无法存入mysql中。此时需要将对象VO转换为字符串类型,才能存入mysql数据库中,typeHandler就起到了这个作用。二:案例 <update ...
2019-10-13 17:42:54
853
原创 ThreadLocal用法和原理
一、用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。ThreadLocal.get::获取ThreadLocal中当前线程共享变量的值。 ThreadLocal.set:设置ThreadLocal中当前线程共享变量的值。 ThreadLocal.remo...
2019-10-07 22:24:03
271
原创 git push错误failed to push some refs to解决方法
一:原因当我们在git版本库中发现一个问题后,如你在git上对它进行了在线修改,但是没有对本地库进行同步(做到push之前,都先pull下代码,就可以保证本地库和远程库代码一致)。这个时候你再次commit,想把本地库提交到远程git库中,就会出现push失败问题。failed to push some refs to二:解决方法:2.1跟因就是远程库与本地库代码不一致导致...
2019-10-06 12:11:33
128156
7
原创 【设计模式】简记
推荐书:Head First 设计模式 https://book.douban.com/subject/2243615/一:6大设计模式软件开发之所以会有这些原则,就是因为复杂多变且不可预料的需求。并不是说在实际项目开发中对这六大原则中的每一条都遵循到极致,而是说在项目开发过程中,根据项目的实际需要尽量的去遵循这些原则。当然能真正做到、做好的恐怕也只有具有丰富经验的人能运用自如。...
2019-09-15 21:30:30
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人