记一次网络原因导致的mysql连接中断问题(druid)
摘要:date: 2018 04 19 21:00 tag: java,mysql,exception,mat,调试,jvm 工具: "gceasy.io" , MAT 线上系统出现一个诡异的bug,通过heap dump分析 分析: 1. 通过日志确认系统在一天前就已经停止运行 2. 代码较简单应该不存
阅读全文
commons-httpclient中的超时设置
摘要:connectionTimeout与soTimeout的差异,前者指创建一个有效的客户端到服务端链接的最大允许时间,后者指socket接收data的时间。connectionManager.getParams().setConnectionTimeout(50);connectionManager....
阅读全文
caching redirect views leads to memory leak (Spring 3.1)
摘要:在Spring 3.1以及以下版本使用org.springframework.web.servlet.view.UrlBasedViewResolver + cache(如下配置),在出现任意种redirect链接的业务下会导致memory leak。 修复方案:可以使用Servlet API原生r
阅读全文
Clojure web初探
摘要:项目环境:3.2.0-52-generic #78-Ubuntu SMP Fri Jul 26 16:21:44 UTC 2013 x86_64 x86_64 x86_64 GNU/LinuxLeiningen 2.3.2 on Java 1.6.0_43 Java HotSpot(TM) 64-Bit Server VM[[org.clojure/clojure "1.5.1"][ring/ring-core "1.2.0"][ring/ring-jetty-adapter "1.2.0"]]1. 生成web项目:lein new
阅读全文
Tomcat编码配置解疑
摘要:环境:tomcat6.0.23 jdk 1.6相关参考:http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.htmlhttp://wiki.apache.org/tomcat/FAQ/CharacterEncoding影响编码的环境:server.xml中Connector节点的URIEncoding与useBodyEncodingForURI参数,http请求头content-type charset=xxx中的charset值,servlet request的setCharacterEncoding参数值以及setCharacterEnco
阅读全文
Web集群缓存一致性的思考
摘要:共享cache+数据库实现缓存一致性:1.1 memcache + mongo+定时器1.1.1 memcache优点:web集群共享数据缺点:数据生命周期的不可预估性1.1.2 mongo优点:持久化数据缺点:读的性能太与cache相差甚远(数据量高于数据库大小时)1.1.3 定时器优点:可以确保memcache数据的生命周期缺点:浪费web服务器和数据库资源1.2 实现要求: web集群时钟必须同步1.3 cache的数据结构update_lock 更新锁,确保上一次更新操作未完成(可能数据数据查询延时)前不会执行下一次更新问题:锁没被释放可能导致更新操作永远不能被执行,直到锁释放;解决:
阅读全文
maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
摘要:环境:Groovy/Grails Tool Suite 3.1.0.RELEASE(BASED ON ECLIPSE JUNO 3.8.1)、JDK1.6、Maven3.05、Tomcat6 错误描述: SEVERE: Error configuring application listener o
阅读全文
Maven安装使用
摘要:环境:Ubuntu 12.04LTS,jdk1.61、下载maven3.05;2、解压并获取M2/bin/mvn地址;3、创建~/.mavenrc文件,并加入JAVA_HOME并export(需重启系统);JAVA_HOME=/usr/local/share/jdk1.6.0_43export JA...
阅读全文
eclipse中运行项目时报Class not found的错误
摘要:环境:Groovy/Grails Tool Suite3.1.0.RELEASE(BASED ON ECLIPSE JUNO 3.8.1)、JDK1.6运行class的main方法,或启动junit测试时报Class not found错误,但是,指定的class明明是存在的并且已经编译成了.class文件。出问题之前与解决方案:1、报错前在项目中的该文件是可以正常运行的;2、报错前为项目添加了maven配置,然后又删除掉了,*但错误也是自此开始的;3、发现当前(出问题后)在项目中新建的class是能够正常通过main方法启动的;4、对比最终发现问题在于eclipse中项目run配置上(该配置
阅读全文
java泛型
摘要:泛型自J2SE 1.5引入。编译环境sun jdk 1.6class Generic<T>{ T obj; public Generic(T obj){ this.obj = obj; } public T getObj(){ return this.obj; }}执行'javac Generic.java',产生class文件Generic.class。执行'javap -classpath xxx Generic'打印出反编译信息:a@ubuntu:javap ...
阅读全文
instanceof的是与非
摘要:java中instanceof关键字对于final、非final类、泛型、Object、interface,在编译时的要求不同。A、其中泛型实例可以与任何接口和类执行instanceof判断(t instanceof User / t instanceof list);B、interface实例可与任何对象(除final对象)执行instanceof判断(list instanceof User / list instanceof Runnable);C、Object实例可与任何对象执行instanceof判断(obj instanceof User / obj instanceof List
阅读全文
变量名、对象引用(指针)与堆栈
摘要:解析1:变量名从创建到销毁,与其关联的对象引用可能会发生变化。对象从创建到销毁,与其对应的引用(指针)却始终不会变化(可以理解为“指针就是对象,对象就是指针”)。解析2:在同一作用域的不同时间点,一个变量可能对应多个对象引用,多个变量也可能只对应一个变量引用。其它关于“对象引用”的描述(摘自http://www.ibm.com/developerworks/cn/java/l-jpointer/):产生:引用总是在把对象作参数"传递"的过程中自动发生,不需要人为的产生,也不能人为的控制引用的产生。这个传递包括把对象作为函数的入口参数的情况,也包括用"="
阅读全文
git使用
摘要:场景:提交本地分支代码到远端master分支分支:本地dev分支、主分支master、远程主分支origin masterdev提交代码-> commit 提交指定文件-> git stash 保存可能发生冲突文件的状态stash的tips1、在"git stash"前执行"git add ."可以暂存所有“未提交”和“新增”数据;2、执行git stash save "xxxx",可以在暂存时自定义备注;-> checkout master 转到主分支-> git pull 更新master-> git
阅读全文
Web项目转换为groovy项目的步骤
摘要:Web项目转换为groovy项目的步骤环境:eclipse juno 3.8(安装有Groovy组件)转换步骤如下: a、转到Navigator视图; b、创建空的groovy项目,并与web项目对比; c、web的.setting下少文件org.eclipse.jdt.groovy.core.prefs; d、.project中缺少配置<nature>org.eclipse.jdt.core.javanature</nature>; e、.classpath中少配置<classpathentry exported="true" kind=&q
阅读全文
Apache Struts 2.3.12 GA?
摘要:http://en.wikipedia.org/wiki/Software_release_life_cycle
阅读全文
Web项目从MyEclipse->Eclipse的转换
摘要:目标环境:Eclipse JUNO 3.8.2步骤:1、转到菜单 Properties -> Project Facets ,选中Dynamic Web Module、Java、JavaScript选项,其余都不选;2、转到菜单 Properties -> Targeted Runtimes,选中需要部署的服务器,如Apache Tomcat v6.0;3、转到菜单 Properties -> Deployment Assembly,删除WebContext(Eclipse默认的web根目录)项,Add -> Folder选中WebRoot(原MyEclipse中的we
阅读全文
JSTL版本详解
摘要:当前的JSTL版本与相应JSP、Servlet的依赖关系:版本号JSTL 版本要求(必须满足此条件)获取Taglib途径Standard 1.2JSTL 1.2 (尚未经过JCP认证)Servlet 2.5, JavaServer Pages 2.1subversionStandard 1.1JSTL 1.1Servlet 2.4, JavaServer Pages 2.0下载Standard 1.0JSTL 1.0Servlet 2.3, JavaServer Pages 1.2下载JSTL1.0有EL版本和RT版本之分,JSTL1.1以及之后的版本就统一了EL和RT,如c标签,各自的配置分
阅读全文
hibernate-validator_NoSuchFieldError
摘要:错误来源:使用hibernate-validator错误原因:hibernate-validator使用的jboss-logging与相应的log4j版本不匹配解决方案:使用下载hibernate-validator时自带的可选log4j版本java.lang.NoSuchFieldError: TRACE at org.jboss.logging.Log4jLogger.translate(Log4jLogger.java:64) at org.jboss.logging.Log4jLogger.isEnabled(Log4jLogger.java:39) at org.jboss.logg
阅读全文
趣谈多线程
摘要:关键字:多线程,Servlet,面向对象(Object-Oriented)多线程,如果没有深刻的理解其本质(essential),操作起来往往会使人昏头转向。来形象的打一个比喻,也许可以借由咱们自己已有的生活经验,轻松的理解。张三想靠自己的踏实努力赚钱养家,他选择了卖面包Bread,现在食品安全大家都很在意,为了让客人更放心的购买,他的面包都是现做的(做面包的速度为毫秒级ms),整个流程客人都能清晰了解,早上刚开张,很快就有上班路过的白领过来买面包了。从客人提出需要,到拿到面包离开,整个过程可以大致分为以下几大步骤:客人选择需要面包的种类;做面包(Breadmaking);放进面包机烤(Bre
阅读全文