java
jerry_player
这个作者很懒,什么都没留下…
展开
-
使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查
使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查一、问题来源自阿里开发手册 出现此问题肯定与String的split方法有关,首先介绍下String的split方法的使用二、正则表达式用法单正则表达式构造方法 public String[] split(String regex) { return split(regex, 0); } 该方法就是给定的表达式和限制参数0来调用两参数split方法。双参重...转载 2021-07-12 11:03:40 · 1185 阅读 · 0 评论 -
Integer.parseInt(String s, int radix)和Integer.valueOf(String s, int radix)对比分析
背景之前在code review 的时候,发现有同学直接使用“==”判断两个Integer是否相等,这有问题吗?相信大家对这个都有自己对看法。另外今早上在地铁上听到有人说Integer.parseInt(String s, int radix)返回是int类型,其中radix取值范围是2~36,s长度不能超过7,这种说法对吗?故写此文章来发表自己看法Integer.parseInt和Inte...原创 2020-04-16 18:36:39 · 1607 阅读 · 0 评论 -
Failed to read artifact descriptor for xxx:jar的问题解决
Failed to read artifact descriptor for xxx:jar的问题解决今天在编写maven项目的时候发现,spring-context-support-5.1.9.RELEASE.jar这个包无法引进来。查看父级pom文件已经加到dependencyManagement 里了,且自模块也已经引用了,但是就是找不到对应的jar,在项目里jar包里确实没发现有该jar...原创 2020-02-11 14:57:35 · 1296 阅读 · 0 评论 -
Java SimpleDateFormat表达式的坑
今天是2019年12月30日,登录我们线上服务器,发现日志变成了"localhost_access_log.2020-12-30.log",整整差了一年。所有根据该日志的监控图都废了,心里很慌,赶紧debug排查,发现了SimpleDateFormat 坑。先说一下我们的环境:springboot2.1.7 && 内置tomcat 9.0.22,并且为tomcat配置了acces...原创 2019-12-30 15:30:51 · 899 阅读 · 1 评论 -
org.apache.commons.lang3中的isBlank和isEmpty
最近在做代码reviewed的时候,发现项目中对字符串的非空校验使用了org.apache.commons.lang3包,有的地方使用了isBlank,有的地方使用了Empty.那么问题来了,使用他们两个有什么区别呢?话不多说,先上代码,查看运行结果import org.apache.commons.lang3.StringUtils;/*** @author jerry* @date...原创 2019-12-08 14:29:23 · 683 阅读 · 0 评论 -
Dubbo RPC原理解析
本文转自https://blog.csdn.net/wuzhengfei1112/article/details/77142147,若有侵权,请与我联系删除,谢谢本文代码摘录的时候,将一些与本流程无关的内容去掉了,如有需要请看源码。一、   闲言碎语...转载 2018-07-26 15:08:53 · 795 阅读 · 0 评论 -
Java静态绑定与动态绑定
程序绑定的概念绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定.静态绑定在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。例如:C。针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,p...转载 2018-06-03 14:51:13 · 183 阅读 · 0 评论 -
最大公约数和最小公倍数的算法分析及java代码
最大公约数和最小公倍数算法是数学界经典的算法之一。其中主要是西方的欧几米德算法(辗转相除法)和东方的《九章算术》更相减损法。在计算机界也有着广泛用法。本文主要是用java实现递归和循环方式来实现两种算法,至于原理性的文章请参照百度百科即可。import java.io.IOException;import java.util.Scanner;public class CommonDiv...原创 2018-06-02 22:00:58 · 1216 阅读 · 0 评论 -
设计模式之工厂模式
本文仅是个人学习中的理解,如有问题欢迎大家批评指正设计模式中的工厂模式有3种:简单工厂模式(Simple Factory Pattern)、工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern),这三种模式没有好坏之分,只看是否适合自己的业务需要。个人理解工厂模式就是把变化的部分抽象成接口或抽象类,利用OOP中的多态性,设...原创 2018-02-22 17:07:28 · 166 阅读 · 0 评论 -
https.protocols的检测与设置
最近在做一个需求,用到了https进行接口交互,在测试环境报如下错:10:20:21,667 ERROR [stderr](http-executor-threads - 39) java.lang.IllegalArgumentException: TLSv1.210:20:21,667 ERROR [stderr] (http-executor-threads - 39) java.la原创 2017-12-23 10:24:23 · 15315 阅读 · 0 评论 -
HashMap之扩容(三)
之前两章节已经介绍了关于HashMap的长度和get、put方法,本章节主要是介绍一下关于HasnMap的在高并发场景下存在的线程问题。 HashMap的容量是有大小的,那随着put的Entity的增多,经过Hash算法出现冲突的概率越来越高,此时HashMap达到一定的饱和度,需要进行扩展它的长度,也就是Resize。决定是否发生Resize的因素有两个:一是Capacit原创 2017-12-13 19:40:25 · 809 阅读 · 0 评论 -
初识HashMap之初始长度(二)
HashMap的初始长度为16,其次在自动扩展或手动初始化时,长度必须是2的幂。初始值选择16是为了服务从key映射到index的哈希值。上篇文章提到过《初识HashMap(一)》,从Key映射到HashMap数组的对应位置,会用到一个Hash函数: index = Hash("id")如何实现一个尽量均匀分布的Hash函数呢?我们通过Ke原创 2017-11-20 20:09:17 · 9307 阅读 · 0 评论 -
Java静态绑定与动态绑定之测试分析
上篇文章转载了一篇《Java静态绑定与动态绑定》的文章写的挺详细的,本来是要附上自己写的测试用例的,结果发现发表了blog后就不能修改了,没办发只能是再写一篇记录一下了。package binding;public class BindingFather { /* 类成员变量 */ protected String a="father"; /*...原创 2018-06-03 16:28:35 · 451 阅读 · 0 评论 -
Java静态绑定-null问题
前两篇文章分析了静态绑定和动态绑定的问题,大家要是觉着不过隐,下面的问题一道题更能充分说明静态绑定类StaticTest中有两个方法,一个是静态的一个是非静态的。当用 StaticTest staticTest=null;分别调用两个方法会有什么输出呢?且看如下代码package binding;public class StaticTest { public static v...原创 2018-06-03 17:15:16 · 447 阅读 · 0 评论 -
String不可改变的优点
大家都知道被final修饰的类是不可以继承的,其中String就被final修饰了。那么问题来了,String为什么要设计成被final修饰呢?这样设计是有什么好处么? 这个问题如果要全面回答,估计只有当时的设计者最了解了。不过我们可以从中找到一些这么设计的好处。1、节约内存 大家都知道,编程的时候String是大量被使用的。如果像普通对象那样,每次使用都new一个。内存会...原创 2018-05-28 17:12:04 · 1570 阅读 · 1 评论 -
如何解决定位高耗cpu的线程
好多公司只允许生产服务器部署应用,不允许部署一些监控或查找问题的小插件,不利于运维去定位问题。不过大多数java公司服务器上都会启动jdk里面自带的一些命令,下面就利用jstack排查哪个java进程高耗cpu资源。 1、通过ps -ef|grep java 找到Java应用的进程号 2、jstack -l pid >./pid.log 将该进程当前的线程栈信息打印到pid.lo...原创 2018-06-10 09:08:12 · 575 阅读 · 0 评论 -
java调用awk命令----判断txt中是否只有数字
最近项目中遇到一个问题:用户在上传文档的时候,没有按照规定的要求上传(txt中只允许有数字,每一行是一个序列码),影响了功能使用。基于此给出了两种解决方案 1、忽略非数字的序列码,只执行正常的序列码,执行成功后给出提示。 2、上传文件的时候进行校验,不符合规则的txt不允许上传。方案一 缺点:用户体验不好,在用户未允许的情况下部分执行部分不执行,需要用户2次修改失败的序列码重...原创 2018-08-18 18:56:36 · 2341 阅读 · 0 评论 -
log4j的MDC配合Spring-mvc进行日志追踪
跳槽后,接到的第一个需求是在项目里给每个请求加一个唯一字符串,能够通过日志追踪到请求的整个流程。一个很简单的需求,上网查找资料考虑半天后,决定用log4j的MDC进行请求追踪。(logback和slf4j也是支持MDC)因为我们项目是Spring-mvc和mybatis搭建的,页面请求都是直接转发到我们的controller层,所以考虑使用Spring的拦截器(interceptor)。inte...原创 2018-08-17 10:42:01 · 2473 阅读 · 0 评论 -
java中线程池参数设置
本文主要介绍线程池是解决了哪些问题以及线程池中 的corePoolSize(核心线程数),queueCapacity(等待队列的长度),maximumPoolSize(最大核心线程数)。本文不会对线程池各个参数介绍,假定你已经了解了线程池各个参数的含义。1 为什么要有线程池呢?当前实际应用中,经常会遇到单个请求处理时间短但请求量巨大但问题,简单说就是qps很高,平响时间很短的情况。...原创 2019-03-07 12:07:45 · 2607 阅读 · 0 评论 -
为什么Map桶中个数超过8才转为红黑树
原文链接:http://cmsblogs.com/?p=4374这是笔者一个好友面试阿里时,被问及的一个问题,应该不少人看到这个问题都会一面懵逼。因为,大部分的文章都是分析链表是怎么转换成红黑树的,但是并没有说明为什么当链表长度为8的时候才做转换动作。笔者第一反应也是一样,只能初略的猜测是因为时间和空间的权衡。要弄明白这个问题,我们首先要明白为什么要转换,这个问题比较简单,因为Map中桶的...转载 2019-04-02 13:58:32 · 1928 阅读 · 2 评论 -
初识HashMap(一)
本文是个人对HashMap的理解,记录一下,方便以后学习,有不对的地方,请大家指正。 HashMap是一个用key-value键值对存储数据的集合,每个键值对也叫做Entry,HashMap底层也是数组,这些Entry通过哈希算法,存储到底层数组中。HashMap在初始化的时候,每个数组元素都是空值(null). 我们通常使用HashMap的原创 2017-11-20 19:30:10 · 530 阅读 · 1 评论 -
jboss里打印ibatis与sql语句的配置
本人在做项目的时候用到了jboss,发现配置的log4j里的sql打印不出来,不利于定位问题。从网上找了些资料,记录一下配置,以便后续使用(我们使用的是standalone模式)找到standalone.xml文件1、 找到,删除 2、在 模块下新增模块,如下图,其中节点放包路径,放日志等级3、重新启动jboss服务就可以打印出ibatis和sql了原创 2017-11-03 10:25:57 · 750 阅读 · 0 评论 -
jboss数据源密码解密
目前jboss7的standalone模式数据源一般都配置在standalone.xml,有的时候需要查看一下数据源的密码,可以参照此文代码import java.math.BigInteger;import javax.crypto.*;import javax.crypto.spec.SecretKeySpec;public class Jboss { p原创 2017-11-02 19:49:34 · 1107 阅读 · 0 评论 -
Apache kafka原理与特性(0.8V)(转载)
前言: kafka是一个轻量级的/分布式的/具备replication能力的日志采集组件,通常被集成到应用系统中,收集"用户行为日志"等,并可以使用各种消费终端(consumer)将消息转存到HDFS等其他结构化数据存储系统中.因为日志消息通常为文本数据,尺寸较小,且对实时性以及数据可靠性要求不严格,但是需要日志存储端具备较高的数据吞吐能力,这种"宽松"的设计要求,非常适合使用kafka. 一转载 2017-05-18 17:09:10 · 394 阅读 · 0 评论 -
jboss7.1 在modules中引入其他jar包
今天在用jboss7.1部署项目的时候,报了一个问题,如下:Exception in thread "Thread-138" java.lang.NoClassDefFoundError16:07:51,508 ERROR [stderr] (Thread-138) at org.codehaus.xfire.aegis.type.DefaultTypeMappingRegistry.cl原创 2017-04-27 17:00:17 · 4975 阅读 · 0 评论 -
jboss连接消息队列出现的问题(Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory)
今天在参照网上的例子,连接测试环境的消息队列的时候,报了个错严重: Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactoryException in thread "main" javax.naming.NoInitialContextException: Cannot instantiat原创 2017-04-22 16:59:54 · 2982 阅读 · 0 评论 -
Remoting 外网访问和内网访问解决方案
最近解决公司一个老平台的问题,该平台中使用了 Remoting 技术,现有的环境大致如下:1、Remoting 服务和 Web 都是部署在局域网;2、多台 Web 都是通过内网 IP 和端口来访问 Remoting 。Remoting 服务端的代码如下: int serverPort = 10000; TcpServerChannel Channel =转载 2017-05-11 19:22:09 · 1145 阅读 · 0 评论 -
Can't find bundle for base name com/sun/org/apache/xml/internal/security/resource/xmlsecurity, local
Can't find bundle for base name jdk rt.jar原创 2017-04-09 11:52:15 · 831 阅读 · 0 评论 -
java类的加载机制
http://www.cnblogs.com/ityouknow/p/5603287.html转载 2017-03-12 00:48:21 · 333 阅读 · 0 评论 -
关于ArrayList的几个知识点
ArrayList 目前是大家经常用的一种集合类,但是对于此类的设计还是有许多细节的东西需要大家了解,有益于大家的开发原创 2017-03-11 23:41:13 · 719 阅读 · 0 评论 -
ConcurrentHashMap1.8 的扩容
什么情况会触发扩容当往hashMap中成功插入一个key/value节点时,有可能触发扩容动作:1、如果新增节点之后,所在链表的元素个数达到了阈值 8,则会调用treeifyBin方法把链表转换成红黑树,不过在结构转换之前,会对数组长度进行判断,实现如下:如果数组长度n小于阈值MIN_TREEIFY_CAPACITY,转载 2017-03-19 06:20:28 · 1426 阅读 · 1 评论 -
闲谈HttpClient
HttpClient参数说明当使用HttpClient的项目上线之后,不出问题还好,一旦出了问题就很难排查,但大部分都是由于对参数不了解,随意设置导致的,下面以4.2.3为例,对参数进行说明:SO_TIMEOUT "http.socket.timeout"设置从socket套接字中读取数据的等待时间,在规定时间内读取不到数据,则抛出异常,一般设为2 * 1000,如果想转载 2017-03-19 06:27:26 · 599 阅读 · 0 评论 -
jboss7数据源密码加解密
慎用!!!!/** JBoss.java - Blowfish encryption/decryption tool with JBoss default password* Daniel Martin Gomez - 03/Sep/2009** This file may be used under the terms of the GNU General Pub原创 2017-06-16 20:15:26 · 858 阅读 · 0 评论 -
jboss7增加线程数
最近在做的需求,使用jboss7部署的,在压测的时候发现吞吐量总是上不去,找了好久发现是jboss7默认的线程数有些少1、如下图,默认的jboss7的standalone.xml里的线程模块是空的。默认的线程大约60左右吧(这个没有仔细测)2、修成核心线程500,最大线程600, executor的最大连接数600,效果很明显哦为了方便复制,贴出增加部分原创 2017-06-22 20:14:49 · 1864 阅读 · 0 评论 -
测试守护线程的小例子
public class Test {/** * User:liluzhong * Date: Dec 10, 2017 * Time: 7:16:55 PM */ public static void main(String[] args) throws Exception{ DaemonThread t = new DaemonThread(原创 2017-11-02 19:45:57 · 308 阅读 · 0 评论 -
-Djavax.net.debug=all
今天在调试涉及https代码的时候,想看一下打印出的所有的证书指纹,找了好久,找到了-Djavax.net.debug=all。只需要在启动脚本中增加此参数即可。原创 2017-10-23 19:12:16 · 4535 阅读 · 0 评论 -
linux上weblogic新建domain
此文是基于linux服务器上已经安装了weblogic,然后新建不通的domain,步骤可以参照如下:1. 进入WebLogic的管理配置目录,比如:cd /weblogic/wls1036/wlserver_10.3/common/bin2、 执行配置脚本:sh config.sh 或者 ./config.sh,出现如下图3、在配置想到中选择“1”,然后回车,进入原创 2017-10-20 23:23:17 · 2506 阅读 · 0 评论 -
jms详解
本文转载自http://shift-alt-ctrl.iteye.com/blog/1902820 一.JMS使用场景: JMS是为"消息"而生,从使用的角度来说,任何可以与业务解耦的数据均可以作为"消息"存储;任何结构化(格式严格,适合解析)但未索引化(不能被随意检索)的数据均可以交付给JMS存储,但尽管JMS不是为存储而生. 1) 异构系统(应用)中,如果数据的转载 2017-09-26 20:48:29 · 1095 阅读 · 0 评论 -
基于Xfire实现webservice的超时设置
最近在做需求的时候,遇到一个问题,就是调用三方的服务,没有设置超时链接,影响了消息队列中消息的消费速度,进而导致消息队列消息有挤压。对此找到了一种设置连接超时的方法,适用于基于Xfire实现webservice的调用,具体如下:1、新建HttpMessageSenderimport org.apache.commons.httpclient.params.HttpClientParams;原创 2017-08-14 16:54:05 · 2100 阅读 · 1 评论 -
jboss7中用axis2对外发布webservice接口
今天在迁移查询接口的时候,遇到一个问题:在jboss7中发布的webservice接口访问不到(404),应该是某个地方的配置出了问题,下面详细介绍一下配置1、涉及到的jar包:axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-java2wsdl-1.5.原创 2017-08-18 12:36:40 · 1272 阅读 · 1 评论