JAVA
南无南有
来去撸两行!
展开
-
视频解析工具类
<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 · 465 阅读 · 1 评论 -
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 · 250 阅读 · 0 评论 -
new 对象生成所有set方法
idea 快速生成new 出来对象的所有set方法,插件安装 - 程序员大本营转载 2022-01-10 17:14:41 · 447 阅读 · 0 评论 -
架构思考
领域事件我们知道领域模型的变化会产生领域事件。例如,用户在完成注册后,系统会发出一封带有确认信息的邮件到用户的邮箱;用户关注的好友发送动态后他会收到相应的通知等等。在业务比较简单或者不用考虑性能的情况下,我们可以直接把对领域事件的处理嵌入到领域服务中。考虑这样一个场景:用户回复了某条评论,那么被回复的那个用户(也就是那条评论的所有者)需要收到一个PUSH消息。如果直接把发送PUSH的动作嵌入到了回复的逻辑中。这样做有以下两个问题:回复动作处理了它不关心的逻辑。发送PUSH不是回复的强关联逻辑,也原创 2021-05-07 23:43:45 · 150 阅读 · 0 评论 -
SPI和API的区别
API(Application Programming Interface):由于实现方完成接口实现SPI(Service Provider Interface):由调用方实现接口常见例子:插件模式开发数据库驱动 Driver 日志 Log dubbo扩展点开发原创 2021-04-13 17:05:08 · 621 阅读 · 0 评论 -
记一次线上死循环导致的内存溢出
系统水位图GC耗时峰值达到1000K毫秒(16分钟)线程总数下跌(出现死循环,线程被hold住)dump文件由于图片可以看出系统堆内存有1G多原创 2020-11-22 14:45:20 · 392 阅读 · 0 评论 -
计算机:字节与字符转换关系
位(bit):计算机存储信息的最小单位,音译比特,二进制的一个”0“或”1“字节(byte):计算机存储容量基本的单位,8个二进制组成1个字节。一个英文字母占用1个字节,一个汉字占用2个字节。1024B=1KB1024KB=1MB1024MB=1GB1024GB=1TB...原创 2020-11-22 14:37:36 · 628 阅读 · 0 评论 -
Spring启动过程
开始创建beanFactory加载beanDefinition,并注册到IOC容器中XmlBeanDefifinitionReaderBean实例化流程BeanDefinitionParser原创 2020-10-25 22:58:11 · 107 阅读 · 0 评论 -
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 · 8292 阅读 · 0 评论 -
记录一次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 · 173 阅读 · 0 评论 -
JAVA知识树
图原创 2020-06-21 22:10:14 · 230 阅读 · 0 评论 -
maven中的groupId和artifactId的含义
一:定义groupId和artifactId被统称为“坐标”,是为了保证项目的唯一性而提出的。如果你要把项目弄到maven仓库中,查找的时候就必须用groupId和atifactId去查找。二:规范groupId一般分为多段。这里我只说两段:第一段为域:域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。第二段为公司名称:如apache、alibab...原创 2020-05-05 21:32:35 · 1670 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
一:背景创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。...原创 2020-05-04 01:08:04 · 312 阅读 · 0 评论 -
Spring理解篇章随记
1原创 2020-03-08 21:32:55 · 168 阅读 · 0 评论 -
Java正则表达式&Sublime正则使用
一:解释正则表达式定义了字符串的模式;正则表达式可以用来搜索、编辑、处理文本;正则表达式并不仅限于某种语言,但是在每种语言中有细微的差别二:正则表达式实例java.util.regex 包主要有以下类:Pattern类:pattern对象是一个正则表达式的编译表示。 Matcher类:Matcher对象是对输入字符串进行解释和匹配操作的引擎。三:案例package tes...原创 2020-01-11 14:08:36 · 490 阅读 · 0 评论 -
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 · 5885 阅读 · 0 评论 -
多线程工具CountDownLatch使用
一:CountDownLatch概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。二:CountDownLatch的用法CountDownLatch典型用法:某一线程在开始运行前等待n个线程执行完毕。将CountDownLatch的计数器初始化为new CountDownLatch(n),每当一个任务线...原创 2019-11-10 16:38:41 · 201 阅读 · 0 评论 -
可重入锁
一:打水故事理解可重入锁背景:有一口井水,村民都在那边打水。但是人打水人太多,需要用规则保证打水秩序。规则:家庭为单位,家庭任何人到井边,这个家庭就有打水权(七大姑八大姨等亲戚)看井人:保证按秩序交接打水示意图如下 :是不是感觉很和谐,如果打水的人打完了,他会跟看井人报告,看井人会让第二个人接着打水。这样大家总都能够打到水。是不是看起来挺公平的,先到的人先打水,当然不是绝对...转载 2019-11-03 21:55:47 · 134 阅读 · 0 评论 -
JAVA常用集合框架
HashMap:无序链表LinkedHashMap:有序原创 2018-09-02 19:06:13 · 122 阅读 · 0 评论 -
ThreadLocal用法和原理
一、用法ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。ThreadLocal.get::获取ThreadLocal中当前线程共享变量的值。 ThreadLocal.set:设置ThreadLocal中当前线程共享变量的值。 ThreadLocal.remo...原创 2019-10-07 22:24:03 · 205 阅读 · 0 评论 -
【设计模式】简记
推荐书:Head First 设计模式 https://book.douban.com/subject/2243615/一:6大设计模式软件开发之所以会有这些原则,就是因为复杂多变且不可预料的需求。并不是说在实际项目开发中对这六大原则中的每一条都遵循到极致,而是说在项目开发过程中,根据项目的实际需要尽量的去遵循这些原则。当然能真正做到、做好的恐怕也只有具有丰富经验的人能运用自如。...原创 2019-09-15 21:30:30 · 104 阅读 · 0 评论 -
Java开发中使用的一些工具/方法
package com.google.common.collect;//list分区重组:splitParams要重组的数据,maxPartitionSize每个数组的大小List<List> l = Lists.partition(splitParams, maxPartitionSize); package java.lang;//自动返回组装结果String....原创 2018-08-30 19:55:20 · 180 阅读 · 0 评论 -
JDK8新特性:函数式接口@FunctionalInterface的使用说明
转载(https://blog.csdn.net/aitangyong/article/details/54137067)我们常用的一些接口可赎回,可运行状态,比较器等在JDK8中都添加了@FunctionalInterface注解。package java.lang; * @author Arthur van Hoff * @see java.lang.Thread ...转载 2018-08-29 12:56:11 · 202 阅读 · 0 评论 -
Java中级面试之基础篇(01)String、StringBuild、StringBuffer三者的区别
1:String、StringBuild、StringBuffer三者的区别相同点:都是用来操作字符串的;不同点:a:string是不可变的,即a=1;a=a+1;此时a新建了;string是final类,不能被继承;常用方法:length()长度、charAt(int)得到指定下标值、indexOf(String)指定内容第一次出现的下标、lastIndexOf(String)指...转载 2019-08-04 11:22:18 · 459 阅读 · 0 评论 -
Jdk 8.0 新特性 Lambda表达式 List集合 forEach(->)
前言:Lambda使代码简洁,与stream搭配使用,能充分利用多核,实现真正的并行,如果数据量不大,只能起到简化代码的作用,性能方面并没有太突出的优势,甚至会比for循环差,因为程序第一次使用lamda的时候需要初始化一些lambda框架的东西,这些也要花费时间,而for循环就不需要这些时间开销,上来就能执行。当迭代的数据量大的时候,lambda性能优势就体现出来了。Java SE8.0添加...原创 2018-08-25 17:18:57 · 6532 阅读 · 0 评论 -
JAVA多线程:ThreadPoolExecutor(线程池)
目录线程池的优点:线程池的创建:线程池的实现原理:线程池代码实现:饱和策略:线程池的优点:1:线程池是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作的线程都可以重复使用。2:可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。线程池的创建:corePoolSize:线程池核心线程数量maximumPoolS...原创 2018-09-16 22:45:30 · 211 阅读 · 0 评论 -
JAVA反射应用
使用JAVA反应进行两个vo有相同字段名字进行子转换: @Test public void doTransTest() { A a= new A(); A.setC(111L); B b= new B(); doTrans(a, b); } /** *@param sour 来源vo...原创 2018-09-24 16:05:24 · 1464 阅读 · 0 评论 -
Junit随笔记
一:Junit单测Junit测试框架中Assert类就是实现断言的工具,主要作用如下:单元测试用于判断某个特定条件下某个条件的行为; 执行单元测试证明某段代码执行结果和期望的一致。 assertEquals(expected,actual),查看两个对象是否相等,类似于字符串的equals()方法; assertNotEquals(first,second),查看两个对象是...原创 2018-08-25 14:52:25 · 203 阅读 · 0 评论 -
对JVM的一些见解
JAVA类加载器:一个java文件从编译完成到最终执行,一般经过两个过程:编译和运行;编译:即把写好的java文件,通过javac命令编译成字节码,也就是常说的.class文件。(编译器) 运行:则是把编译生成的.calss文件交给java虚拟机运行。(类加载器)而我们常说的类加载过程就是指java虚拟机把.class文件加载到内存中,并进行解析生成对象的过程。例子:java虚拟机...原创 2018-09-24 22:46:04 · 137 阅读 · 0 评论 -
Java内存泄漏和内存溢出
转载:https://blog.csdn.net/ruiruihahaha/article/details/702705741、内存泄漏memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一...转载 2019-08-04 14:38:00 · 271 阅读 · 0 评论 -
JDK1.8特性: Stream 流对象常用方法,groupingBy,forEach,distinct
读音:stream(s 俊 不(闽))一:Stream流介绍“流”是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 “集合讲的是数据,流讲的是计算” Stream操作可以是中间操作,也可以是完结操作。 完结操作:返回某种类型的值 中间操作:返回流对象本身 可以通过多次调用同一个流操作方法来将操作结果串起来。 Steam自己不会存储元素,且不...原创 2018-10-28 21:55:30 · 1475 阅读 · 0 评论 -
Lists.partition用法
将list集合按指定长度进行切分,返回新的List<List<??>>集合,如下的: List<List<Integer>> lists=Lists.partition(numList,3);package test;import com.google.common.collect.Lists;import org.junit.Te...原创 2018-10-28 22:47:11 · 77354 阅读 · 6 评论 -
java.lang.UnsupportedOperationException解决方法
在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。代码块:public class ListTest { public static void main(String[] args) { String[] array = {...原创 2018-11-03 17:00:09 · 123803 阅读 · 6 评论 -
double精度丢失和避免方法
double取余数:% private void test(){ double mainByNumber = 3.3D; double spc = 0.1D; double result = mainByNumber % spc; double result = mainByNumber * spc; ...原创 2019-05-21 22:08:56 · 3192 阅读 · 0 评论 -
反序列化失败:Message:create instance error, class xxx
问题:反序列化失败,内部非静态类无法实例化,Message:create instance error, class * @&com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.createInstance(JavaBeanDeserializer.java:249)@&com.alibaba.fastjs...原创 2019-08-24 14:53:36 · 2192 阅读 · 0 评论 -
JAVA开发中遇到的一些单词
current:现在scope:范围Process:处理Generate:生成operator:操作人dept:部门variable:变量initializer:初始化redundant:多余duplicate:复制品unversioned:非版本的untracked:未跟踪的parse:解析execute:执行unresolved:未解决conflicts:冲突的...原创 2018-07-28 19:55:21 · 724 阅读 · 0 评论 -
【IDEA】如何使用IDEA生成序列化ID
一:何为序列化和反序列化序列化: 将内存的对象转为字节序列,方便持久化到硬盘或网络传输第一步:将对象转为字节数组 第二步:将字节数组存储到硬盘或网络传输反序列化:将字节序列到内存中的对象来源:可以是文件数据、也可以是网络传输数据二:如何使用IDEA生成序列化ID打开“设置”打开“查看、检查” 搜索“serializable” 找到“serializable clas...原创 2019-09-15 11:16:39 · 952 阅读 · 0 评论 -
JDK8新特性(遇到整理)
可选:可选择的,主要用于空指针的判断。如果为空,返回OrElse运算()里面的结果;否则返回 “LL”package java.util.Optional@since 1.8public void testOpetional(){ List list=Lists.newArrayList(); list.add(1); list.ad...原创 2018-08-30 19:36:12 · 426 阅读 · 0 评论