java
Little Coder
向往美好生活的程序员
展开
-
NullPointerException 没有打印异常栈
今天在排查一个java.lang.NullPointerException 的问题的时候发现,这个异常抛出竟然没有详细的堆栈信息:如下:message: error: java.lang.NullPointerException: null查看这个空指针的错误数量,从16号开始到23号,有100多w,如下:但是这样没有堆栈信息,对于排查错误很不友好。通过查询知道这个是HotSpot VM的优化,叫做fast throw:有些特定的隐式异常类型(NullPointerException之类)如原创 2021-12-23 19:40:52 · 1539 阅读 · 0 评论 -
redis实现分布式锁 工具类
/** * @description: Redis 分布式锁 * @author: cy * @create: 2020-07-10 **/@Slf4j@Componentpublic class RedisLock { private final RedisTemplate<String, Object> redisTemplate; private final ThreadLocal<String> localKeys = new ThreadLocal原创 2021-01-11 16:06:11 · 1243 阅读 · 3 评论 -
记一次线上OOM故障 Java heap space
1、发现问题早上测试环境一个应用机器容器 异常退出,然后开始排查问题,同时查看生产环境是否异常,发现生产程序正常运行,但是内存占用特别大,达到了70%,平时大部分时间保持在2,30%的水平,因为生产机器的性能比较好,配置比较高,所以内存70%是一个很大的数值了。初步怀疑是OOM问题,测试机由于内存比较小,所以导致异常的可能性非常大。2、确认问题重启测试环境,发现一开始正常,但是内存消费在10分钟之内上升很快,最终报了OOM堆溢出 java.lang.OutOfMemoryError: Java hea原创 2020-09-21 16:50:05 · 620 阅读 · 0 评论 -
Jprofiler连接远程JVM ,便于线上问题排查
1、下载Jprofiler官网地址因为我这边是windows 连接远程的centos的JVM,所以我这边下载windows 和linux的版本linux上下载:wget https://download-gcdn.ej-technologies.com/jprofiler/jprofiler_linux_11_0_2.tar.gzwindows的下载安装我就不写了,无脑式安装2、解压Jprofiler解压tar -zxvf jprofiler_linux_11_0_2.tar.gz原创 2020-06-28 10:58:19 · 4554 阅读 · 4 评论 -
@Async 配合线程池的使用
一、编写线程池配置类@Configuration@EnableAsyncpublic class NlpThreadPoolConfig { private static final int CORE_POOL_SIZE = 10; private static final int MAX_POOL_SIZE = 20; private static final...原创 2020-01-21 16:24:00 · 4287 阅读 · 0 评论 -
CompletableFuture 使用记录
Java 8 有大量的新特性和增强如 Lambda 表达式,Streams,CompletableFuture等。CompletableFuture简介在Java中CompletableFuture用于异步编程,异步编程是编写非阻塞的代码,运行的任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度,成功或者失败。在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行...原创 2020-01-19 17:56:05 · 685 阅读 · 2 评论 -
Java8 新特性之流式数据处理
这个流式处理可以在集合处理的时候提高性能,优化时可以采用,记录一下 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:List&l...转载 2018-03-29 15:00:35 · 895 阅读 · 0 评论 -
Java中文件的两种递归查询方法
最近,需要用写小工具来进行大量的文件读写操作,不可避免的用到文件目录的递归,下面有两种方法,一种是方法递归,一种是NIO的递归。效率应该是后一种优先,因为第一种我在学习机上跑竟然溢出了。 第一种:File file = new File(path); // 如果这个路径是文件夹 if (file.isDirectory()) { /...原创 2018-05-10 14:44:22 · 1973 阅读 · 0 评论 -
Java读取文件内容方法比较
最近在做一个语料的清洗程序,需要读取大量的txt文件的内容,然后对内容进行一系列的清洗,这时有两种处理方案,一是用readline()一行一行读取然后拼接起来,二是一次性读取,我倾向于一次性将文本的原始内容直接读取到内存中再做处理,因为涉及的文件量很大,几十、几百G的几十万个文件,这样提升一点速度,整体就能提升很大的速度。当然,这需要你有一台大内存的机器,内存不够者……可以一次读取少部分内容,分多...原创 2018-05-04 10:52:11 · 2793 阅读 · 0 评论 -
NIO的文件操作Path和File
Pathpath接口是在java7加入到NIO的,位于java.nio.file包,它的实例代表了文件系统里的一个路径。java中的Path表示文件系统的路径。可以指向文件或文件夹。也有相对路径和绝对路径之分。绝对路径表示从文件系统的根路径到文件或是文件夹的路径。相对路径表示从特定路径下访问指定文件或文件夹的路径。 初始化Path path = Paths.get(&quot;D:\\svn-co...原创 2018-07-26 13:21:37 · 3944 阅读 · 0 评论 -
Idea连接远程调试
当项目部署到生产环境之后,如果出现一些问题,不调试一下,想找到这个问题简直就是噩梦,下面就是远程调试的大显身手的时候了。步骤一:在服务器开启调试,并且开发端口我使用的是docker-compose部署,添加的配置如下,jar部署和docker也是同理:version: '3'services: 你的docker服务名: image: 你的镜像地址 container_n...原创 2019-03-21 14:44:06 · 1754 阅读 · 0 评论 -
MyBatis 中#与$的区别
今天在工作中有个点击排序的功能调试了许久,终寻因,总结之。 需求是这样的,页面有个table,有一列的上下箭头可点击并排序。对于这种需求,我的mybatis.xml的sql配置写成了如下:if test="map.ColumnNameSort!=null and map.ColumnNameSort!=''"> ORDER BY columnName #{map.Column转载 2018-02-07 11:07:56 · 130 阅读 · 0 评论 -
Java的transient的作用及使用方法
transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,原创 2018-01-24 15:01:39 · 343 阅读 · 0 评论 -
单例模式
第一种(懒汉,线程不安全): Java代码 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (转载 2017-03-08 10:15:49 · 225 阅读 · 0 评论 -
spring定时器
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <!-- 每隔1分钟执行 修改自动反馈是否完成 --> <bean id="Trigger1"原创 2017-03-17 16:03:28 · 215 阅读 · 0 评论 -
java中打印日志
private static Logger logger = LoggerFactory.getLogger(类.class);在类中声明一个logger变量,打印日志的调用方法如下:logger.info("这里打印了日志"):原创 2017-03-31 14:44:23 · 5801 阅读 · 0 评论 -
java生成唯一序列号,UUID的应用
java中生成不重复的唯一序列号具有很大的应用场景,UUID提供了这样的一个方法。生成如下格式的序列号:46049c6d-282e-434b-9c16-025c91ddd23d只需要调用UUID类的静态方法,如下所示:UUID.randomUUID().toString();即可生成String类型的序列号。原创 2017-03-25 10:47:49 · 10034 阅读 · 0 评论 -
Java对字符串进行加密解密的工具类
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signat转载 2017-08-08 10:34:00 · 4640 阅读 · 2 评论 -
Java内存分配
转自:谷哥的小弟 JVM的生命周期我们知道:每个Java程序都运行于在Java虚拟机上;也就是说:一个运行时的Java虚拟机负责运行一个Java程序。当启动一个Java程序时,一个虚拟机实例也就随之诞生了;当该程序执行完毕后这个虚拟机实例也就随之消亡。例如:在一台计算机上同时运行五个Java程序,那么系统将提供五个Java虚拟机实例;每个Java程序独自运行于它自己所对应的Java虚拟机实例中。转载 2017-09-05 09:13:05 · 178 阅读 · 0 评论 -
Java之多线程同步的五种方法
转自:http://geek.csdn.net/news/detail/2365021、为什么要线程同步 因为当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常。举个例子,如果一个银行账户同时被两个线程操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成转载 2017-09-14 17:26:16 · 247 阅读 · 0 评论 -
Java之StringUtil工具类
import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.PrintStream;import java.math.BigDecimal;import java.util.regex.Matcher;import java.util.regex.Pattern;public class St原创 2017-09-15 11:24:41 · 2306 阅读 · 0 评论 -
Java的Stirng.split方法注意点
今天在公司项目上用字符串分割String arrytool[] = str2.split(".");一直拿不到值,后来发现“.”是需要转意的,也是一脸懵逼 知识点如下: 在java.lang包中有String.split()方法的原型是: public String[] split(String regex, int limit) split函数是用于使用特定的切割符(regex)来分隔字符原创 2017-08-31 20:45:53 · 300 阅读 · 0 评论 -
彻底理解Java的Future模式
转自:https://www.cnblogs.com/cz123/p/7693064.html先上一个场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点转载 2018-01-24 11:06:28 · 1859 阅读 · 0 评论 -
Java中String、StringBuffer与StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所原创 2018-01-31 15:34:33 · 141 阅读 · 0 评论 -
JSTL标签库
JSP标准标签库 Pass by xkk ,and author is not clear 1. JSTL简介 JSTL全名JspServer Pages Standdard Tag Library(Jsp标准标签库),它是sun公司发布的一个针对JSP开发的新组件,它允许使用标签开发Jsp页面. JSTL是一个标准的已制定好的标签库,它可以应用转载 2016-12-23 23:06:57 · 370 阅读 · 0 评论