java
dream_lixiang
人生如逆旅,我亦是行人。
展开
-
Too many open files问题解决
昨天项目上线的时候,服务器程序在读写文件的类中,频繁出现IOException---Too many open files的问题,出现这个问题的原因是:当前打开的文件句柄数超过了系统的默认值,调大系统的默认文件句柄数,程序正常,但是运行了一段时间后,程序再次出错,使用lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|grep pid命令进行查看,发现程序原创 2017-03-19 17:00:28 · 1164 阅读 · 0 评论 -
JVM在SUSE下奔溃的原因
今天同事去厂商部署项目的时候发现项目启动一会便会奔溃,但是项目已经在其他的厂商和自己公司的云服务器上稳定运行了很长时间,且经过了大量严格的功能、并发测试,这让我有些诧异,通过了了解,知道了对方机器的操作系统为SUSE,同事发回了jvm奔溃时生成的hs_err_pid文件。通过查看hs_err_pid文件,发现以下信息较为关键。Stack: [0x00007f823bcfd000,0x00007原创 2017-05-24 19:38:46 · 1505 阅读 · 0 评论 -
hibernate QueryPlanCache引发的heap区内存溢出
这个问题是很久之前解决的问题,今天在整理电脑资料的时候,发现了当时解决问题的一些截图,在此发记录一下,以免自己忘记。 有一个项目中用到了hibernate作为数据持久层,当项目完成,使用loadrunner进行并发测试的时候,当测试跑了几天,就因为内存溢出挂掉了。当对奔溃场景进行重现的时,利用了JvisualVM工具对其进行监控,发现了其heap区内存一直在持续增长,利用heap dump原创 2017-08-16 16:12:54 · 9142 阅读 · 4 评论 -
二分查找 (java实现)
package com.li.test01;import java.util.Scanner;/** * * @author lixiang * */public class BinarySearch { //存在返回数组下表,不存在返回-1 //递归实现 public static int binarySearch(int key, int[] ar原创 2017-09-25 16:15:00 · 371 阅读 · 0 评论 -
gdb调试core分析jvm(JNI)奔溃原因
前几天服务(服务中使用了JNI调用了C++的so库)在并发测试几天后jvm突然奔溃,只在控制台打印出了一句话: terminate called after throwing an instance of '._0'。因为只根据这句话无法确定奔溃原因,于是查看linux系统日志,进入/var/log下,打开message文件,看到下面的话:Sep 16 13:44:04 localhost原创 2017-09-19 15:19:08 · 8178 阅读 · 0 评论 -
java如何删除文件的前几行数据(不使用临时文件)
private List readAndRemoveFirstLines(File file, int lineNum) throws IOException{ List strList = new ArrayList(); RandomAccessFile raf = null; try{ raf = new Random原创 2017-09-19 16:06:17 · 5468 阅读 · 1 评论 -
hibernate动态读取配置及创建数据源
public static Configuration initDBConfig(String dialect, String driver, String url, String user, String pwd){ Configuration cfg = new Configuration().configure("/hibernate.cfg.xml"); cfg.setProper原创 2017-09-19 16:18:44 · 1054 阅读 · 0 评论 -
Java集合源码解析-ArrayList
从今天开始,会用一段时间对Java集合框架中的一些常用数据结构进行源码解析。首先入手的是ArrayList,部分的源码解析会以注释的方式出现。public class ArrayList extends AbstractList implements List,原创 2017-03-08 15:57:05 · 359 阅读 · 0 评论 -
struts2 request.getInpustream()及multipart上传获取不到数据的解决方案
此问题是之前在项目中遇到并解决的,今天将其记录一下。项目中遇到的需求是,要在拦截器中将请求post过来的数据流进行解析,然后手动将解析的各参数其压到struts2的valueStack中,post过来的数据流可能是json串形式(客户端没有标记content-type)或者以multipart/form-data形式发送过来的语音文件(二进制)和json串两种情况。我的实现思路是,判断如果requ原创 2017-03-03 14:13:55 · 3929 阅读 · 1 评论 -
java使用枚举封装错误码及错误信息
使用枚举类型来封装project中所需要的错误码和错误信息,十分方便。 用法如下: package com.dear.simpler.dbservice;/** * * @author lixiang *使用枚举类型来封装异常码和异常信息 * */public enum DBServiceError { //RPC层调用错误码 DB_SERVICE_OK(2原创 2017-02-08 13:36:24 · 19630 阅读 · 2 评论 -
添加oracle jdbc到maven仓库
maven中没有提供oracle jdbc驱动,如果要在项目中使用,则需进行手动安装。 步骤: 1.到官网下载oracle jdbc驱动到本地 2.执行maven命令: mvn install:install-file-Dfile={驱动所在本地目录/ojdbc.jar}-DgroupId=com.oracle -DartifactId=ojdbc6原创 2017-02-08 14:08:45 · 259 阅读 · 0 评论 -
自定义log4j日志文件命名规则
项目中的日志需要采用一致的命名规范和规范,命名规则为:项目模块标识_index_日期时间_日志级别.log,且每个级别日志文件放在单独的文件夹,且每个文件夹下日志的数量不得超过10个,当数量超过限制时,删除相对较旧的日志,保留较新的日志。但是发现log4j并不能满足此要求,于是根据log4j的API定义自己的FileAppender。 代码如下:package com.dear.simpl原创 2017-02-16 18:18:38 · 6621 阅读 · 0 评论 -
sleep()和wait()
sleep()和wait()的区别:1.sleep()方法是属于Thread类的。wait()方法则是属于Object类中的。2.sleep()方法导致了程序暂停执行的时间,让出cpu给该其他线程,但是它的监控状态仍然保持着,当指定时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。当调用wait()方法的时候,线程会释放对象锁,进入等待此对原创 2017-02-08 14:24:07 · 217 阅读 · 0 评论 -
java程序启动脚本
在公司开发的系统包含多个服务进程,每个服务以单独的jvm进程的方式存在。为了节省存储空间以及对不同进程使用的jar包进行统一管理,要求所有服务使用的jar包都存放在同一个目录中,所有进程使用同一个jdk,每个服务有自己单独的目录存放主程序(服务启动逻辑和非共享逻辑)。我的db_service的启动脚本如下: #!/bin/bash#author:lixiang#the script原创 2017-02-21 15:46:51 · 1660 阅读 · 0 评论 -
Java基础回顾---IO(字节流)
IO流是Java基础中很重要的一个知识点,由于IO流的种类繁多,所以在此对其知识点进行整理,方便自己的回顾,总结。1.IO流概述 IO是Input和Output的缩写,即输入、输出。其实所谓的输入、输出都是针对运行的程序(CPU、内存)来说的,输入就是向程序所在的内存输入、 输出就是从内存中向外输出,即输入和输出的参照为为程序(内存),这样就比较容易理解IO,IO关注的是原始数据的读原创 2016-08-13 17:57:40 · 605 阅读 · 0 评论 -
Java基础回顾---Socket
由于一直以来都在使用Java进行Web相关的开发工作,平常写的比较多的都是servlet,或者是基于servlet(或filter)的框架(springmvc、struts2等)。这些程序都需要运行在像tomcat、weblogic等web服务器(servlet容器)中,web容器负责端口的监听、HTTP请求的接收和返回、并发的处理等工作,程序员们更多的是负责业务逻辑的编写。这样虽然降低了web编原创 2016-08-11 22:28:37 · 533 阅读 · 0 评论 -
基于hibernate的BaseDao
1.BaseDao接口:package com.dear.simpler.dao;import java.io.Serializable;import java.util.List;import com.dear.simpler.db.utils.SPLDBException;/** * * @author lixiang * * 定义所有表的公共的方法接口 */pu原创 2017-03-03 11:02:45 · 711 阅读 · 0 评论