java相关
徴心
所谓文字,是承载语言的图像或符号。
展开
-
记一次因为一个3导致的Double.parseDouble失败
最近在跑的一个spark任务总是因为parseDouble中报NumberFormatException,但是我的逻辑中都是基于fastsql中的类型断定去存放到一个Double集合中,当使用的时候会去进行进行Decimal的断定,在类型转换的时候就直接进行了转换,代码如下private boolean isMatch(String value) { int integerLocation = numericPrecision - numericScale; long min = (long)(0原创 2022-03-08 11:57:00 · 1664 阅读 · 0 评论 -
Maven Proguard插件进行代码混淆
最近想把代码进行混淆,研究了一下proguard,把配置保留一下有两个类TestOne.javapackage com.alibaba.proguard;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import com.levin.proguard.pojo.Person;import lombok.extern.slf4j.Slf4j;/** * @progr原创 2022-02-18 11:33:52 · 1942 阅读 · 0 评论 -
Jar包冲突发现的几种方法
一般jar包冲突了都会得到类似的异常java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()总结了几种方式一、 mvn dependency:treemaven项目可以通过打印依赖树,定位具体的jar包二、 maven helper 插件intellij idea可以安装maven helper来查找本地工程的冲突三、通过this.getClass().getResource("/com/原创 2021-09-08 19:33:45 · 557 阅读 · 0 评论 -
记一次DBCP2连接不回收,程序卡死,分析过程
最近刚换了新公司,想去优化一下之前的代码,提高一下任务执行效率,review了一下之前的代码,可以优化的地方挺多的,公司有一个查询db的sdk,被之前的同事用druid datasource 封装了一下, 看了一下sdk的实现,本身是有pooling的支持的,那么我就大刀阔斧的进行了代码的重构,本着有现成的就不过多的扩展(之前的代码实现的也不是太好,fork了堆无用的类,只为了封装druid)。经过一顿修改之后打包测试,简单的sql可以,但是如果多线程并发下,会出现程序卡死的情况,执行了一下jstack原创 2020-05-25 20:49:48 · 885 阅读 · 0 评论 -
什么情况下ThreadLocal会导致内存泄漏(附案例)
如果没有看过ThreadLocal源码的,建议先去看看源码在来看这篇帖子,博主这篇帖子主要是先真实的模拟一下,什么情况下会导致内存泄漏。网上关于ThreadLocal的文档很多,就不过多追溯基础原理了。每个Thread本身会维护一个threadLocals,这个对象就是一个ThreadLocal.ThreadLocalMap,而ThreadLocal维护一个ThreadLocalMap,这个Ma...原创 2019-12-24 18:17:03 · 989 阅读 · 7 评论 -
修改logback日志框架默认文件路径(附修改思路)
如果配置过logback的同学肯定都清楚,在resource下创建一个logback.xml文件即可,但是今天遇到了一个需求,需要在生产环境和开发环境进行区分,因为生产环境下的路径是work用户的而我们开发环境是dev用户,默认权限运维也只给到home目录下,如果配置文件只有一套的话,在开发时需要调整地址,而发布代码的时候又要改回去。容易出错也麻烦,那么以这个背景为前提,研究一下如何配置。之前也...原创 2019-11-14 16:56:57 · 4991 阅读 · 0 评论 -
JDBC别再写Class.forName了
昨天同事不小心把Class.forName删掉了,程序却依然可以运行,问我遇到过这种情况么,我说不能呀,一直脑袋里印象都是必须要写Class.forName("com.mysql.jdbc.Driver")然后会调用类中的静态块注册到DriverManager中啊。本着不知道看源码的原则,跟到com.mysql.jdbc.Driver中下面是Driver类public class Driver...原创 2019-11-14 10:34:58 · 388 阅读 · 0 评论 -
JDK8 HashMap.put()方法解读
复习一下基础,顺便给HashMap的Put方法加一个详细的注释final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { //这个tab就是成员变量里的table HashMap.Node<K,V>[] tab; ...原创 2019-07-22 13:51:34 · 692 阅读 · 0 评论 -
Jdk1.8-HashMap put() 方法tab[i = (n - 1) & hash] 解惑
读过HashMap源码的同学对下面这段应该都不陌生,之前博主也读过,但是只是浅尝即止,这次有时间看了一下,发现put方法有一段不是很清楚,就是if ((p = tab[i = (n - 1) & hash]) == null) tab[i] = newNode(hash, key, value, null);这段代码,其中获取了当前table数组的最大下标与hash(key)进行按位与操...原创 2019-07-15 22:34:32 · 7312 阅读 · 11 评论 -
Java求字符串的最大子串和长度(没有判断是否连续)
之前在面试的时候遇到过的一个问题,由于当场让手写(特别反感这种面试中要求手写的),就没理会,回来想想看看能不能实现,今天有时间写出来,让大家帮忙指正。 题目是给出一个字符串计算出它的最大子串 例: “abcdefgabc” -> abcdefg “ababcdeac” -> abcde 代码在下面,加了注释/** * 求字符串的最大子串 * * @ClassName:原创 2017-09-01 18:14:01 · 1266 阅读 · 0 评论 -
Java线程池(ThreadPoolFactory)构造参数总结
今天看到关于线程池的一篇帖子,是关于面试时问到ThreadPoolFactory构造器时的一些问题,之前博主也学习过一些关于ThreadPoolFactory构造器的问题,但是一直没有总结过,既然今天有时间,那么就总结一下,避免有些同学走弯路(有些工作多年的老鸟也不一定能准确的说明coreSize,MaxSize,workQueueSize的关系),话不多说上干货。 下面来直接看ThreadPoo原创 2017-08-30 14:54:33 · 6262 阅读 · 0 评论 -
基于Java关于链表的简单实现
之前写过集合的简单实现,今天来写一下链表的简单实现,实现了增删改,还有实现基于下标的查找,有时间在写package com.levin.stack;/** * 链表的简单实现 * @ClassName LinkList * @Description TODO(这里用一句话描述这个类的作用) * @author Levin * @Date 2017年7月7日 下午5:56:30 * @ve原创 2017-07-07 19:12:00 · 465 阅读 · 2 评论 -
org.springframework.core.task.TaskRejectedException:Executor[]did not accept task异常解决
今天有个需求是优化查询时的效率(使用的hbase无法做关联查询,需要在结果查出来之后组合),结果就遇到了如题的异常。 那么通过查询源码发现问题,上代码 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.java@Override public void execute(Runnable task) {原创 2017-03-04 10:31:24 · 26461 阅读 · 0 评论 -
JAVA技术提高(JMX监控)
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。 实际上来说我们可以用jmx来监控一些java应用的运行情况,还有自己写的一些服务类的应用。 下面链接有详细说明 https://stevene原创 2016-09-27 13:01:17 · 1059 阅读 · 0 评论 -
java远程debug(基于eclipse)
由于在某些情况下,源码不全,或者有部分源码,这种时候就可以运用远程调试去解决,比如在前段时间写了一个flume的intercept,在上线过程中发现了intercept并没有生效,这种时候就用到了远程调试,发现并解决了问题。 以下说明如何应用远程debug – 在JAVA虚拟机启动时添加如下参数-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,a原创 2016-09-27 11:59:46 · 413 阅读 · 0 评论 -
使用Jconsole观察JVM
前段时间做有关于Flume入库程序的调试,用到了Jdk自带的调试工具–jconsole.exe,现在做一下记录也方便没有接触过的同学有一个好的入门。 如果想使用jconsole.exe调试jvm主要有两个方面。配置想要通过jconsole连接的java程序的jvm启动参数 本文已tomcat为例,其他程序也一样 修改$TOMCAT_HOME/bin/catalina.sh 在JAVA原创 2016-09-27 10:34:32 · 594 阅读 · 0 评论