
java
文章平均质量分 77
lipengxs
这个作者很懒,什么都没留下…
展开
-
jcsv导入导出动态扩展思路
我整理的jcsv工具类库简介:[csv导入导出组件jcsv](https://blog.youkuaiyun.com/lp19861126/article/details/99769509)jcsv可以支持导入校验规则动态扩展,以及导出规则动态扩展。下面来介绍下扩展思路原创 2020-07-19 22:13:41 · 452 阅读 · 0 评论 -
面试必问之jvm
问题1 说一下jvm内存模型问题1.1 jvm内存模型栈区:栈分为java虚拟机栈和本地方法栈重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。通常说的栈就是指局部变量表部分,存放编译期间可知的8种基本数据类型,及对象引用和指令地址。局部变量表是在编译期间完成分配,当进入一个方法时,这个栈中的局部变量分配内存大小是确定的。会有两原创 2020-06-27 10:12:44 · 363 阅读 · 0 评论 -
面试必问之HashMap
问题1 hashmap原理?问题1.1 hashmap底层数据结构是什么哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。问题1.2 jdk1.8为啥要将链表转为红黑树呢?链表的用的是线性检索,时间复杂度是O(n),而红黑树的检索方式是二分查找,平均时间复杂度是O(logn),当达到一定阈值后,二分查找是由于先行检索的问题1.3 什么情况下会将链表转为红黑树当来链表长度达到8时会转为红黑树,当桶中链表元素个数小于等于6时,树结构还原成链表。原创 2020-06-21 17:06:24 · 266 阅读 · 0 评论 -
java如何保证一个方法只能执行一次
java如何保证一个方法只能执行一次原创 2020-04-06 22:41:39 · 11500 阅读 · 0 评论 -
常用设计模式类图
简单工厂单例模式策略模式模板方法模式桥接模式责任链模式原创 2020-03-31 10:54:40 · 241 阅读 · 0 评论 -
java增量发布工具
有些公司由于没有使用maven作为构建工具,全量发布时没问题,而修改bug增量发布往往是将改动的代码手动编译后,从classes目录下拷贝到jar中然后再放到tomcat目录下发布,这种方法准确度不高,当修复bug时间跨度较大且文件较多时就不好提供了,下面介绍下一个增量打包工具https://gitee.com/lpxs/ProjectPatch.git,该工程是基于eclipse,针对文件的...原创 2020-02-08 16:15:01 · 1233 阅读 · 0 评论 -
springboot代码自动生成
微服务中代码自动生成原创 2020-01-30 23:28:18 · 950 阅读 · 1 评论 -
logback日志级别动态切换的四种方案
springboot日志级别动态切换原创 2020-01-29 16:50:09 · 6143 阅读 · 0 评论 -
docker生产环境jvm性能优化
1、xmx与xms设置一样2、xmn或者maxnewSize设置3、当xmx设置大于3G时,设置垃圾回收器 -XX:+UseG1GC原创 2020-01-20 17:01:14 · 3893 阅读 · 0 评论 -
微服务业务日志收集方案
背景日志内容复杂多样,如何去收集有价值的日志是我们重点关注的。日志的价值其实是取决于业务操作的,不同的业务场景下相同类型的日志的价值会截然不同。根据以往的业务实践,结合企业级的一些业务需求,我们选定关注以下几类日志。• 跟踪日志【trace.log】 Server引擎的调试日志,用于系统维护人员定位系统运行问题使用。• 系统日志【system.log】 大粒度的引擎运行的入口、出口的日志,...原创 2020-01-11 17:47:15 · 3477 阅读 · 0 评论 -
quartz集成spring集群部署
2017-03-06 18:46:52 · 91 阅读 · 0 评论 -
java执行jar中的class类
原创 2015-10-26 18:29:38 · 183 阅读 · 0 评论 -
spring手动事务控制
原创 2014-11-14 11:02:54 · 112 阅读 · 0 评论 -
ibatis执行存储过程,java.lang.ArrayIndexOutOfBoundsException: 0
atisticsType$()} ]]></procedure> 错误日志如下: --- The error occurred in com/aspire/prm/dmplt/statistics/dao/ibatis/maps/StatisticsSQL.xml. --- The error occurred while applying a parameter map. --- Check the insertStatist原创 2014-11-06 18:36:17 · 124 阅读 · 0 评论 -
将整个工程的GBK转为utf-8格式
eclipse将整个工程转为utf-8时原先中文注释会变为乱码,13年时写了个脚本将整个文件的java以及配置文件转为utf-8格式,下面是代码package com.code.pd;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.Fi...原创 2019-08-06 09:30:00 · 1235 阅读 · 0 评论 -
java判断文本文件编码格式
上篇文章需要读取当前java或者配置文件的编码格式,这里主要支持UTF-8、GBK、UTF-16、Unicode等/** * 判断文件的编码格式 * @param fileName :file * @return 文件编码格式 * @throws Exception */ public static String codeString(File fileName) thro...原创 2019-08-06 09:32:00 · 15593 阅读 · 1 评论 -
Flex相册
有一个项目用到了Flex,于是抽时间用flex与java做了一个相册,并且添加了上传功能,不过暂时没有针对具体的用户进行存储。下面是图片: 大小: 95.7 KB原创 2014-06-17 16:42:42 · 325 阅读 · 0 评论 -
java本地增量打包工具
原创 2014-09-01 10:53:33 · 117 阅读 · 0 评论 -
java解压rar以及zip
原创 2014-04-09 23:38:45 · 102 阅读 · 0 评论 -
java汉字占用字节
"人".getBytes().length); 输出2若在windows上使用GBK编码,则占用2个字节 System.out.println("人".getBytes().length); 输出2原创 2013-08-29 18:52:56 · 124 阅读 · 0 评论 -
如何修改java过滤器链
在开发中遇到一个场景,当需要提供接口给其他系统,并需要鉴权时,我当时的处理方案是用过滤器拦截进行个性化鉴权,如果鉴权通过则还是需要经过安全测试、转码等filter,但是不走后面的鉴权过滤器,不通过则跳转到错误页面。这里就需要去掉过滤器链中的某一个过滤器,下面介绍下我的方案:通过反射修改过滤器链: /** * * 通过反射修改过滤器链 * @param...原创 2016-04-13 18:41:09 · 227 阅读 · 0 评论 -
java解压rar以及zip
/** * 解压缩zip包 * * @param zipFilePath zip文件路径 * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * @throws IOException * @author yayagepei * @date 2008-9-28 *...原创 2014-04-09 23:38:45 · 246 阅读 · 0 评论 -
java本地增量打包工具
在打增量包每次都需要将class文件、jsp文件等拷贝到增量包中比较麻烦。所以就写了一个增量打包工具。工作原理:根据文件的最后修改时间来打增量。1、查找Java类增量:根据eclipse工程下的.classpath文件中配置的javasrc目录,来查找修改的java文件,然后将其class文件拷贝到增量目录下。2、查找jsp文件、配置文件,可以自定义配置。下面为代码:XmlReadUtilp...原创 2014-09-01 10:53:33 · 315 阅读 · 0 评论 -
java汉字占用字节
若使用utf-8编码,中文占3个字节,英文的话只占一个字节System.out.println("人".getBytes().length); 输出3若使用unicode编码,则是2个字节System.out.println("人".getBytes().length); 输出2若在windows上使用GBK编码,则占用2个字节 System.out.prin...原创 2013-08-29 18:52:56 · 158 阅读 · 0 评论 -
quartz执行卡死--强制中断线程
在quartz中经常会碰到由于网络问题或者一些其他不稳定因素导致的线程卡死问题,这往往会导致数据处理的延时。而有时候一时无法定位到卡死的原因,为了降低系统风险,我们就会希望有一个超时机制,当执行超时时强制中断该操作。下面就举个例子,ftp协议不稳定,当连接ftp上传下载数据时有时候会遇到不可知的因素会导致卡死,比如说主动被动切换,服务器连接数满等等,现在我们使用java提供的动态代理以及Futur原创 2017-04-17 15:05:55 · 5959 阅读 · 3 评论 -
远程采集服务器指标信息(二)通过telnet执行远程命令
远程采集服务器信息,比如说磁盘信息、内存信息。现介绍java通过telnet执行命令采集服务器信息,比如说执行df、ls、top。这里在linux环境通过root或者其他用户登录执行解析方式有点出入,下面是代码/** * Telnet远程会话 * */public class TelnetSession implements IRemoteSession {原创 2014-06-17 16:43:59 · 851 阅读 · 0 评论 -
tomcat发布两个项目报错webAppKey重复设置
两个项目的web.xml中都有一个日志监听器配置org.springframework.web.util.Log4jConfigListener 这只需要在web.xml中配置webAppRootKeywebName.root比如说我的项目名称是Recommend,则配置为webAppRootKeyRecommend.root原创 2014-06-17 16:43:13 · 544 阅读 · 2 评论 -
java汉字占用字节
若使用utf-8编码,中文占3个字节,英文的话只占一个字节System.out.println("人".getBytes().length); 输出3若使用unicode编码,则是2个字节System.out.println("人".getBytes().length); 输出2若在windows上使用GBK编码,则占用2个字节 System.out.println("原创 2014-06-17 16:43:33 · 471 阅读 · 0 评论 -
远程采集服务器指标信息(三)通过snmp
有时候需要监控不同操作系统的服务器性能指标,这时可以使用SNMP简单网络管理协议来获取某个网络设备上一些信息,达到数据监控的目的。snmp就不介绍了,网上有说明,现在就介绍下使用开源框架snmp4j,监控设备数据的方法。这里需要说明的是,被监控服务器上必须开启snmp服务。/** * SNMP远程会话 * * @author lipeng * @since 1.0 * @原创 2014-06-17 16:44:04 · 897 阅读 · 0 评论 -
通过JMX监控weblogic服务
一、JMX简介 JMX是一种JAVA的正式规范,它主要目的是让程序有被管理的功能,那么怎么理解所谓的“被管理”呢?试想你开发了一个软件(如WEB网站),它是在24小时不间断运行的,那么你可能会想要“监控”这个软件的运行情况,比如收到了多少数据,有多少人登录等等。或者你又想“配置”这个软件,比如现在访问人数比较多,你想把数据连接池设置得大一些。 当然,你也许会专门为这些管理来开发软件,但原创 2014-06-17 16:44:09 · 4668 阅读 · 1 评论 -
java解压rar以及zip
/** * 解压缩zip包 * * @param zipFilePath zip文件路径 * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下 * @throws IOException * @author yayagepei * @date 2008-9-28 */原创 2014-06-17 16:44:15 · 884 阅读 · 0 评论 -
java线程帮助类(无限循环)
/** * 对监视线程的抽象。封装一种特殊的线程行为:一旦被创建就永远循环地做某件事情, * 直到该线程被杀死。这是一个抽象类,从Thread类继承而来,不能直接实例化,其子类 需要覆盖方法task()来完成具体的功能。 * * @version 1.0 */public abstract class WatchThread extends Thread { /*原创 2014-06-17 16:44:20 · 2248 阅读 · 0 评论 -
quartz监控日志(一)
最近几个月,现网总是出现定时器不执行的情况,或者定时器卡死的情况,而又不方便排查,只能依靠quartz的debug日志以及错误日志来监控定时器的执行情况,并且随着我们系统中job越来越多,而使得job问题越来越难以跟踪,所以我们才需要一个能过对定时器进行监控的功能,并能实现线程阻塞告警,以及杀死阻塞线程的功能。监控job有几种方案:方案一:通过jmx远程或者直接在应用内部定时获取qua...2016-04-13 19:25:09 · 1461 阅读 · 0 评论 -
java执行jar中的class类
很多情况都会需要运行jar,网上资料很多,大致分为三种方法:一、直接达成可执行的jar。二、定义lib path,使用命令执行。三、定时classloader,手动加载jar。 第一种方案比较简单,就不做介绍。 第二种方案比较适用于jar都集中在一个目录下,命令如下:java -Djava.ext.dirs="../3rdLib" -cp . com.aspi...原创 2015-10-26 18:29:38 · 897 阅读 · 0 评论 -
quartz执行卡死--强制中断线程
在quartz中经常会碰到由于网络问题或者一些其他不稳定因素导致的线程卡死问题,这往往会导致数据处理的延时。而有时候一时无法定位到卡死的原因,为了降低系统风险,我们就会希望有一个超时机制,当执行超时时强制中断该操作。下面就举个例子,ftp协议不稳定,当连接ftp上传下载数据时有时候会遇到不可知的因素会导致卡死,比如说主动被动切换,服务器连接数满等等,现在我们使用java提供的动态代理以及Fut...原创 2017-03-08 11:48:10 · 3190 阅读 · 0 评论 -
quartz集成spring集群部署
由于quartz单节点无法满足业务的需求,后面我们在单节点的基础上进行了集群部署。由以前的定时任务信息放在jobs.xml配置文件中,转而放到数据库中。1、新建数据库表 CREATE TABLE qrtz_job_details ( SCHED_NAME VARCHAR2(120) NOT NULL, JOB_NAME VARCHAR2(200) N...2017-03-06 18:46:52 · 171 阅读 · 0 评论 -
disconf分布式配置管理(二) 与spring集成
上一章介绍了disconf的安装预配置,这章主要介绍下disconf与spring集成1、添加依赖 <dependency> <groupId>com.baidu.disconf</groupId> <artifactId>disconf-client</artifactId&...原创 2017-11-28 11:18:39 · 508 阅读 · 0 评论 -
disconf分布式配置管理(一) 安装与配置
一、背景 在生产部署过程中,遇到以下问题:1、由于节点较多,每次增量修改配置文件后都需要每个节点替换配置文件。2、有些动态配置修改后,需要重启服务。二、解决方案1、使用linux文件共享配置文件来实现,但是这个需要解决配置的权限分配问题,操作起来比较麻烦,并且无法解决问题2。2、使用中间件来解决配置加载问题,由于我们服务已经使用了dubbo,所以最后采用了...原创 2017-11-27 11:38:56 · 781 阅读 · 0 评论 -
微服务分布式锁解决方案
下面说一下分布式实现的几种方式:一、数据库悲观锁所谓的悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁。这样别人拿数据的时候就要等待直到锁的释放。这里是采用oracle的 select ...... where id=1 for update 来实现分布式锁,建议加上nowait,或者wait 以及 of下面是demo:...原创 2017-09-25 16:34:21 · 607 阅读 · 0 评论 -
dubbo序列化问题(三)子类覆盖父类字段hession反序列化获取不到
在进行dubbo开发中遇到一个问题,当是用hession2进行序列化时,子类和父类有相同的字段时,hession2反序列化获取不到该字段数据,如下:import java.io.Serializable;import java.util.Date;public class User implements Serializable{ /** * */ p...原创 2017-08-25 00:44:34 · 2978 阅读 · 0 评论