`
文章列表

新博客网站

开始启用新的博客网站,基于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这个站点开通,过程真不容易的,决定写下来吐吐 糟,以纪念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 ...
Global site tag (gtag.js) - Google Analytics