- 浏览: 581463 次
- 性别:
- 来自: 广州
最新评论
-
sp42:
好搞笑
你懂不懂xml! (2) -
cherishmmo2004:
感觉你们都很牛掰,我们做的一个运维平台也是用karaf的,用k ...
基于osgi开发大型的企业应用 -
liubey:
“自作聪明”的使用了读写锁,其实只使用ReentrantLoc ...
编码最佳实践(4)--小心LinkedHashMap的get()方法 -
liubey:
你这个代码是sublist后仍然一直持有这个sub的引用,一般 ...
编码最佳实践(5)--小心!这只是冰山一角 -
xiegqooo:
初学maven(5)-使用assembly plugin实现自定义打包
文章列表
开始启用新的博客网站,基于hexo,搭载在github上。
请点击这里访问 "Sky's blog".
现在的iteye上的blog不再更新。
之前遇到几次现场故障,都是和class文件有关,比如版本不兼容造成Bad Version错误之类,需要检查class文件的编译版本信息。
一般的方法都是下载回来class文件,用jd打开反编译,这个还是比较方便的,偶尔遇到手头没有jd的情况,就直接找个16机制文件编辑器打开class文件,直接看minor version 和 major version。
今天无意中发现(嗯,是之前有点孤陋寡闻), jdk自带的javap 命令其实可以方便的搞定这个事情: javap -verbose <ClassName>
得到的信息如下:
Compiled ...
前几次的编码最佳实践系列,我们都着眼于Java代码,今天我们换个话题,看看另外一个领域,和Java代码大相径庭的SQL。
这次作为素材出场的,是来自项目中的一段SQL,用于BlackWhiteList Adapter,在每次请求时检查一下,看当前用户是否在黑白名单中。
先介绍一下数据库结构,很简单的三张表:BWLIST记录黑白名单信息,BWLISTXADDRESS记录每个黑白名单下的地址列表,BWLISTXAPPLICATION 记录每个application关联到的黑白名单。查询时有三个输入:PARTNER_ID和APP_ID是当前application的唯一标识, ...
本期的案例依然是来自实际项目,很寻常的代码,却意外遭遇传说中的Java"内存溢出"。
先来看看发生了什么,代码逻辑很简单,在请求的处理过程中:
1. 创建了一个ArrayList,然后往这个list里面放了一些数据,得到了一个size很大的list
List cdrInfoList = new ArrayList();
for(...) {
cdrInfoList.add(cdrInfo);
}
2. 从这个list里面,取出一个size很小的sublist(我们忽略这里的业务逻辑)
cdrSublist = cdrIn ...
这是个非常无聊而无奈的问题,昨晚在解决globalrediect模块的重定向循环问题,我的drupal终于可以开发seo相关的各个功能。
第一时间跑去设置各个页面的关键字,结果立即被打击的不行,只要一点击Add page keyword,立即报错:
Notice: Undefined variable: keyword 在 kwresearch_page_keywords_edit() (行 419 在 /home/content/a/o/x/aoxiaojian/html/sites/all/modules/kwresearch/kwresearch.admin.inc) ...
昨晚继续折腾俺的小站http://www.javauniversity.net,准备给它加上SEO支持,安装了SEO tools模块和相应的依赖模块。
结果安装完成之后就陷入重定向循环了,每个页面都被重定向到新地址,然后新地址再次被重定向。chrome浏览器会稍后报错说太多重定向,而ie则傻傻的一直在死循环。
google了一圈,很快定位到问题发生在globalrediect,不过奇怪的是默认配置中对language的重定向功能是关闭的,有点晕。一狠心,直接去到site/all/modules/globalredirect下的globalredirect.module ...
Java University 网站开通过程吐糟
- 博客分类:
- 杂谈
折腾了两天,终于将Java University这个站点开通,过程真不容易的,决定写下来吐吐 糟,以纪念TIANCHAO和谐之光普照下P民的美好生活:
先是在Godaddy申请了主机,注册域名时发现javauniversity.com已经被人注册了,好在javauniversity.net还是空的,顺利注册后按照Godaddy的指示设置好域名和主机的关联,等生效后访问发现一次成功。正高兴时,发现自己是在fanqiang的情况下测试的,试了试不fanqiang 直接访问,结果悲剧了...
javauniversity.net 的域名解析出错,google之后得知是 ...
这是一个来自实际项目的例子,在这个案例中,有同事基于jdk中的LinkedHashMap设计了一个LRUCache,为了提高性能,使用了 ReentrantReadWriteLock 读写锁:写锁对应put()方法,而读锁对应get()方法,期望通过读写锁来实现并发get()。
代码实现如下:
private ReentrantReadWriteLock lock = new ReentrantReadWriteLock ();
lruMap = new LinkedHashMap<K, V>(initialCapacity, loadFactor, true) ...
这里将要讲述的是一系列的类似案例,都是在各个产品进行performance tuning时被发现的,非常具有普适性。可以说在日常开发中,有非常大的概率遇到相同或者类似的情形,因此需要对其保持警惕以便避免陷入类似的性能问题。
我们从JAXBContext这个对象开始,JAXBContext 是JAXB API的入口,典型的代码实现如下:
private void unmarshal() {
JAXBContext context = JAXBContext.newInstance(DirectoryConstants.JAXB_CONTEXT_CLASS);
...
这是一个真实案例,曾经惹出硕大风波,故事的起因却很简单,就是需要实现一个简单的计数器,每次取值然后加1,于是就有了下面这段代码:
private int counter = 0;
public int getCount ( ) {
return counter++;
}
这个计数器被用于生成一个sessionId,这个sessionID用于和外部计费系统交互,这个sessionId理所当然的要求保证全局唯一而不重复。但是很遗憾,上面的代码最终被发现会产生相同的id,因此会造成一些请求莫名 ...
最近在公司内部做了一些收集和整理的工作,关于trouble shooting和performace tuning 中遇到并解决的典型问题,做了一些内部分享。我整理了一下,准备陆续放上来分享给大家。
这些问题,单个看每个问题都不算复杂或高 ...
使用maven填写依赖的时候,常会遇到需要查一下groupId/artifactId和version,有时候还要看看有没有新的版本更新。
原来一直用http://mvnrepository.com/ 这个网站来搜索,最近发现maven官网也提供了类似的功能,http://search.maven.org/。
简单试用了一下search.maven.org,功能基本和mvnrepository.com相同,而且界面更简洁友好。推荐使用。
cloudfoundry是vmvare新推出来的开源PaaS平台,我试用了一下,发现还是很不错的。发出来分享给大家。
(1) 申请
目前接受申请,要求非常简单,近乎于没有:
1. 打开http://www.cloudfoundry.com/
2. 点击 Free Sign Up for Cloud Foundry
3. 输入你的email地址,填写认证码,搞定
如果申请成功,vmware会稍后给你的邮箱中发送一份邮件,注意这个不是即时的,比如我是第二天收到的。所以如果没有当场收到邮件,请不要着急。
下面是我收到的邮件内容:
...
初学gradle,一切都还在摸索的过程中。今天刚刚试图将之前基于ant + ivy的一个小项目转移到gradle下,结果在和sonar集成时出现问题。
gradle中支持sonar的方式很简单,gradle提供了一个sonar的plugin,简单的在build.gradle中配置 ...
今天开发中遇到的问题,代码提交到svn上去之后,hundson很快就红了。
检查hundson,发现该项目下所有的junit测试案例都失败了,所以的case都是一个错误:
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
Caused by: java.lang.NoClassDefFoundError: org/junit/runner/Describable
at java.lang.Clas ...