随笔分类 -  java

摘要:公司内网环境中许多调用资源(数据库、web接口等)都是通过内网DNS服务来进行域名-IP的映射。但经常出现DNS映射修改完毕后,应用中连接的资源迟迟没有变更。以前一直笼统的认为是linux的dns缓存导致,今天做了一次完整的分析,结果如下:1、Linux系统的本地DNS的缓存CentOS系统本身并不... 阅读全文
posted @ 2015-07-04 18:18 baibaluo 阅读(2153) 评论(0) 推荐(1)
摘要:总感觉json-lib里面关于null和"null"的处理非常不合理,或者说是bug,去了json-lib的网站,最后一次更新是10年了。。。发现官方网站第一段就说json-lib是基于json-java的,查了查json-java是一直在更新的,并且已经解决了那些奇怪的bug。官网:https://github.com/douglascrockford/JSON-javahttp://www.json.org/java/最新版的maven信息:org.jsonjson20131018抛弃json-lib换成json-java以后发现好用多了。使用起来基本没什么差别,目前发 阅读全文
posted @ 2013-10-30 12:59 baibaluo 阅读(870) 评论(0) 推荐(0)
摘要:公司有一个应用,多个线程从activeMQ中取消息,随着业务的扩大,该机器占用的网络带宽越来越高。仔细分析发现,mq入队时并没有异常高的网络流量,仅仅在出队时会产生很高的网络流量。最终发现是spring的jmsTemplate与activemq的prefetch机制配合导致的问题。研究源码发现jmsTemplate实现机制是:每次调用receive()时都会创建一个新的consumer对象,用完即销毁。正常情况下仅仅会浪费重复创建consumer的资源代价,并不至于产生正常情况十倍百倍的网络流量。但是activeMQ有一个提高性能的机制prefetch,此时就会有严重的问题。prefetch. 阅读全文
posted @ 2012-12-24 14:23 baibaluo 阅读(5591) 评论(2) 推荐(0)
摘要:tomcat 6的Connector配置如下<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="800" acceptCount="1000"/>其中最后两个参数意义如下:maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200acceptCount:当tomcat起动的线程数达到最大 阅读全文
posted @ 2011-08-23 10:51 baibaluo 阅读(56409) 评论(3) 推荐(4)
摘要:以前一直用log4j每天都写log.debug(XXX)log.error(XXX),当XXX部分包含的内容是由多个变量组合得到时,就用"XXX" + "YYY" + "ZZZ",虽然知道拼接字符串的效率不好,但是也没有去试图找更好的办法。今天看到同事的代码里这样写的(用的是slf4j)log.error("根据卡类型和面值无法找到对应卡[{}][{}]", new String[]{"001", "30"});这样能够非常优雅的就把后面的两个参数001和30拼接到前面的st 阅读全文
posted @ 2011-06-28 16:32 baibaluo 阅读(699) 评论(0) 推荐(1)
摘要:做过很多次导出excel了。都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法。。。弄过好几次都没有解决,最近又要导出excel了,下决心一定要找到解决办法自己在excel里测试过,较长的数字,都会自动变成科学计数法,除非我们把单元格格式设置成“文本型”哈哈,似乎找到了思路:用poi先把单元格设置成“文本型”就可以了把。从文档里找到了这个方法HSSFCell.setCellType(int type),怎么看这个方法都可以设置单元格格式。代码中加入cell.setCellType(HSSFCell.CELL_TYPE_STR 阅读全文
posted @ 2011-06-08 17:24 baibaluo 阅读(8142) 评论(1) 推荐(2)
摘要:经常需要配置项目的log4j.properties,可是一直都不是很系统,总是反复区参考老的配置现在总结一个比较通用的模板,以后参考这个就可以了,同时也分享给大家。#全局设置log4j.rootLogger=WARN, CONSOLE, LOGFILE, ERRORLOGFILE#frame包内是公司通用框架,日志级别设为infolog4j.logger.frame=info#netit包时当前项目的代码,所以级别设成debug,方便根据日志分析log4j.logger.netid=debug#spring的日志级别设为infolog4j.logger.org.springframework= 阅读全文
posted @ 2011-06-03 17:13 baibaluo 阅读(2807) 评论(2) 推荐(0)
摘要:现在项目中都用的是log4j进行日志的输出当遇到Exception时,e.printStackTrace() 已经无法使用。此时log.error(e.getMessage()),只能输出异常的信息,不包括异常的抛出顺序我的同事还自己写了一个util来从Exception对象中取得e.printStackTrace()的字符串形式。。。。突然发现不用那么麻烦,log接口有这么一个方法error(String content, Throwable e),调用这个方法,就会完整打印出信息例如 log.error("系统出错", e);。效果如下系统出错 java.lang.Ex 阅读全文
posted @ 2010-10-26 12:44 baibaluo 阅读(3447) 评论(0) 推荐(0)
摘要:自定义标签好像现在已经很少使用我们自定义的tag类需要继承TagSupport类,相应的方法返回值意义如下。EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用EVAL_PAGE:继续处理页面,doEndTag()函数可用SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent 阅读全文
posted @ 2010-10-19 14:59 baibaluo 阅读(1200) 评论(0) 推荐(0)