
java
enjoy嚣士
一个行走在键盘上的修理工
展开
-
java 之 生产故障定位Arthas
arthas,一款java界的GDB原创 2022-05-08 12:43:08 · 193 阅读 · 0 评论 -
Java 之 list去除null
list.removeAll(Collections.singleton(null));原创 2022-04-22 11:34:39 · 2092 阅读 · 0 评论 -
java11
前言工作中大部分企业还是用的java8开发,但是如果需要一些新特性或者安全相关功能,需要使用新版本的jdk。这里简单介绍下java11,作为java8之后的一个LTS版本。java11 新特性推荐官网变量类型推断新版Java引入了一个全新的类型关键字var,用var来定义的变量不用写具体类型,编译器能根据=右边的实际赋值来自动推断出变量的类型:var name = "codesheep"; // 自动推断name为String类型System.out.println(name);//fo转载 2021-11-15 15:44:59 · 274 阅读 · 0 评论 -
Java之线程池有哪几种?
通常开发者都是利用 Executors 提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于不同的 ExecutorService 类型或者不同的初始参数Executors 目前提供了 5 种不同的线程池创建配置:newCachedThreadPool(),它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置的时间超过 60 秒,则被终止并移出缓存;长时间闲置时,这种线程池,不会消耗什么资源。其内部使用 S原创 2021-08-16 18:04:57 · 204 阅读 · 0 评论 -
java 之 volatile 与 synchornized 的区别
volatile 的特点volatile 保证了可见性:当一个线程修改了共享变量的值时,其他线程能够立即得知这个修改。volatile 保证了单线程下指令不重排:通过插入内存屏障保证指令执行顺序。volatile 不保证原子性,如 a++ 这种自增操作是有并发风险的,比如扣减库存、发放优惠券的场景。volatile 类型的 64 位的 long型和 double 型变量,对该变量的读/写具有原子性。volatile 可以用在双重检锁的单例模式种,比 synchronized 性能更好。vola原创 2021-08-16 17:50:58 · 214 阅读 · 0 评论 -
java 之 阻塞队列
队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头队列其实就是跟平时排队一样,按照顺序来,先排队的先买到东西,后排队的后买到东西,排队的第一个叫队头,最后一个叫队尾,这就是队列的先进先出,这是和栈最大的区别。堵塞队列当队列为空时,消费者挂起,队列已满时,生产者挂起,这就是生产-消费者模型,堵塞其实就是将线程挂起。因为生产者的生产速原创 2021-07-22 17:14:59 · 301 阅读 · 0 评论 -
java 之 使用stream判断两个list元素的属性并输出
/** * 使用stream判断两个list中元素不同的item */@Testpublic void test1(){ List<Param> stringList1 = new LinkedList<Param>(){{ add(new Param(1,"1111")); add(new Param(2, "2222")); add(new Param(3, "3333")); }}; List&l原创 2021-05-06 16:05:21 · 1991 阅读 · 0 评论 -
java删除文件无效
解决方法;1.确认各种流已经被close(),然后给对象赋值null。如果还不行,2.在finally中调用System.gc();原创 2021-04-23 10:31:05 · 596 阅读 · 0 评论 -
java 解析XML文件
介绍XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台四种解析方法对比DOM解析,文档对象模型解析优点:1、形成了树结构,有助于更好的理解、原创 2021-04-09 09:58:04 · 362 阅读 · 0 评论 -
String长度有限制吗?
结论(针对JDK1.8)首先字符串的内容是由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,且String类中返回字符串长度的方法length() 的返回值也是int ,所以通过查看java源码中的类Integer我们可以看到Integer的最大范围是 2^31 -1,由于数组是从0开始的,所以数组的最大长度可以使【0~2^31-1】通过计算是大概 4GB 。但是通过翻阅java虚拟机手册对class文件格式的定义以及常量池中对String类型的结构体定义我们可以知道对于索引定义原创 2021-03-11 18:09:08 · 179 阅读 · 0 评论 -
java 之 导出百万数据到excel
说明首先申明,本人不是标题党。使用如下代码测试100w条数据导出到excel文件,单线程使用17s,多线程使用13s。当然,针对类似方法的使用,有人做过测试,比我的还详细。但是具体到个人,建议你使用的时候还是要自己测试一下。测试链接依赖<!-- 依赖,你也可以使用更高版本,但是使用之前看下版本异同 --><dependency> <groupId>org.apache.poi</groupId> <artifactId>p原创 2021-03-10 11:23:19 · 777 阅读 · 0 评论 -
Java 之 Java8新特性
这个总结的不错https://www.cnblogs.com/liuxiaozhi23/p/10880147.html如果需要更多关于stream的示例,参考本人的webflux专栏原创 2020-12-22 15:29:39 · 144 阅读 · 0 评论 -
Java 之 重写equal和hashcode方法
为什么重写equal和hashcode方法?当自定义类时,使用equal对比对象的两个实例只是简单的比较其地址。所以需要我们重写equal方法比对类属性。同样未重写之前hashcode方法返回的是对象的32位JVM内存地址,那么当我们把不同地址但是实际相等的两个对象放进HashMap里面的时候它们不被看成是同一个对象,占据了两个位置。这个跟我们的预期不符,所以要重写hashcode方法。如何重写equal方法public boolean equals(Object otherObject)原创 2020-12-22 14:36:34 · 417 阅读 · 0 评论 -
java 之 请求合并
关键点:一是需要借助队列加定时任务实现。二是控制定时任务的执行时间.三是控制缓冲队列的任务长度。具体文章参考:https://mp.weixin.qq.com/s/odUr0vmYuDHCm1j9DVtTYAHystrix:实现容错和自我保护...原创 2020-12-21 16:35:18 · 411 阅读 · 1 评论 -
java之 LocalDate、LocalTime、LocalDateTime实践
LocalDate、LocalTime、LocalDateTime是Java8提供的全新时间类实践原创 2020-12-04 11:58:21 · 349 阅读 · 0 评论 -
Java之timezone设置和mybatis连接数据库时区设置
java连接数据库时区设置原创 2020-10-13 09:16:35 · 7786 阅读 · 0 评论 -
Java 之 如何将类文件打包为jar包
为实际项目写了一个工具类,但是每次使用时都需要打开项目点击运行。突然想,不如将这个类打成jar包这样后续就可以直接运行了。说做就做。写类文件大概就这么个样子。注意,这里用到了外部依赖,也就是为什么要写这篇文章的原因。本例中的外部依赖包为:commons-codec-1.14.jar编译javac -encoding UTF-8 -classpath .;./commons-codec-1.14.jar -d . CipherTest.java或者:javac -encoding UTF原创 2020-09-11 11:20:31 · 2655 阅读 · 1 评论 -
Java多种文件上传方式总结
请求类型单文件上传 //上传单个文件 @ResponseBody @RequestMapping(value = "uploadfile", produces = "multipart/form-data;charset=UTF-8") public String uploadfiles(HttpServletRequest request){ CommonsMultipartResolver multipartResolver = new Common原创 2020-08-18 14:09:19 · 4867 阅读 · 0 评论 -
Java边读文件变解析
我需要解决的问题每条数据用分隔符号隔开。使用时读取内容。没有换行。数据格式123333333333;456546546546; private List<String> getSNFromFile(String tmpFile, List<String> modellist, List<TerminalTaskStatus> errorSN) { FileInputStream in = null; BufferedR原创 2020-08-17 18:16:44 · 270 阅读 · 0 评论 -
Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密
原文就不贴了,点击地址原创 2020-08-17 17:55:44 · 301 阅读 · 0 评论 -
Java 之 一行行读写取文件
/** * 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码 * * 流的关闭顺序:先打开的后关,后打开的先关, * 否则有可能出现java.io.IOException: Stream closed异常 * * @throws IOException */ @Test public void readFile01() throws IOException { FileReade原创 2020-07-27 18:31:45 · 562 阅读 · 0 评论 -
java 之 SFTP通信
1.pom文件依赖<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version></dependency>2.代码封装类package com.common.sftp;import java.util.Map;import java.uti原创 2020-07-27 18:28:53 · 420 阅读 · 0 评论 -
java 之 String处理库
stringUtil 工具类Maven配置文件pom.xml<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency> <groupId>org.apache.commons</groupId> <a...原创 2020-04-13 16:55:10 · 241 阅读 · 0 评论 -
java 之 JDK各个版本新特性
JDK各个版本新特性 JDK14新特性详解,2020-03-17正式发布 JDK13新特性详解,2019-09-17正式发布 JDK12新特性详解,2019-03-19正式发布 JDK11新特性详解,2018-09-25正式发布 JDK10新特性详解,2018-03-20正式发布 JDK9 新特性详解,20...原创 2020-04-07 17:59:26 · 2045 阅读 · 0 评论 -
Java中list如何利用遍历进行删除操作
Java三种遍历如何进行list的便利删除:1、for循环:常见错误写法:(由于下标问题达不到想要效果)for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i);}应该改为:(倒序操作避免下标问题)int size = list.size();f...原创 2020-03-04 10:47:47 · 684 阅读 · 0 评论 -
java 之 反射实战
直接上代码吧package com.example.demo.TestClass;/* *create by gaoshiyong on 2019/11/25 * *Remark: * */import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect....原创 2019-12-11 14:18:31 · 234 阅读 · 0 评论 -
java 之 90%的人会遇到性能问题,如何用1行代码快速定位?(转载)
90%的人会遇到性能问题,如何用1行代码快速定位?1. 代码相关遇到性能问题,首先应该做的是检查否与业务代码相关——不是通过阅读代码解决问题,而是通过日志或代码,排除掉一些与业务代码相关的低级错误。性能优化的最佳位置,是应用内部。譬如,查看业务日志,检查日志内容里是否有大量的报错产生,应用层、框架层的一些性能问题,大多数都能从日志里找到端倪(日志级别设置不合理,导致线上疯狂打日志);再...转载 2019-12-06 12:00:41 · 445 阅读 · 0 评论 -
java 之序列化
为什么使用序列化有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从一个字节流中恢复一个Java对象。例如,有的时候我们想要把一个Java对象写入到硬盘或者传输到网路上面的其它计算机,这时我们就需要自己去通过java把相应的对象写成转换成字节流实现方式//需要导入的类import java.io.Serializable;//实现Serializable...原创 2019-11-25 15:49:19 · 131 阅读 · 0 评论 -
java 之 过滤算法之布隆多滤器
假设遇到这样一个问题:一个网站有 20 亿 url 存在一个黑名单中,这个黑名单要怎么存?若此时随便输入一个 url,你如何快速判断该 url 是否在这个黑名单中?并且需在给定内存空间(比如:500M)内快速判断出。一般我们会这样将URL 利用hash函数得到一个Integer,之后使用bit来表示每个哈希值是否存在。当然可能会存在碰撞,可以利用多个hash算法计算得出的值。如果值存在可能...转载 2019-11-05 15:05:32 · 318 阅读 · 0 评论 -
Java 之 JNA(调用第三方库)
Java 之 JNA(调用第三方库)原创 2019-11-04 16:56:57 · 19080 阅读 · 0 评论 -
java 之 自定义注解
注解是什么?Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据。有什么用?为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java标注可以通过反射获取注解内容。在编译器生成类文件时,注解可以被嵌入到字节码中。Java虚拟机可...原创 2019-10-25 16:41:18 · 200 阅读 · 0 评论 -
java 之 文件的读写
public class FileOperatorTests { ////以下是按照字节流读取和写入文件 /** * 写文件 * @throws IOException */ @Test public void WriteFile() throws IOException { String filename = "d...原创 2019-10-25 11:49:38 · 218 阅读 · 0 评论 -
Java 之 文件操作和文件夹的创建、删除、遍历
public class PtronicsApplicationTests { /** * 创建文件 */ @Test public void createFiles(){ File file = new File("D:\\hello.txt"); try{ //创建文件 ...原创 2019-10-25 11:16:24 · 237 阅读 · 0 评论