??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久a亚洲欧洲aⅴ,日韩精品亚洲专区在线影视,亚洲激情中文字幕http://m.tkk7.com/xylz/category/41095.htmlx后端架构、中间g、分布式和高性能RESTful服务zh-cnTue, 15 Oct 2013 23:42:00 GMTTue, 15 Oct 2013 23:42:00 GMT60Java 8 入门/新特?/title><link>http://m.tkk7.com/xylz/archive/2013/10/16/405031.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Tue, 15 Oct 2013 16:33:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2013/10/16/405031.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/405031.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2013/10/16/405031.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/405031.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/405031.html</trackback:ping><description><![CDATA[<p>2013/09/05 已经发布?a >JDK 8</a>?a >M8 Developer Preview</a>版本??a >M7(2013/06/13)</a><span id="sgqamro" class="Apple-converted-space"> </span>所有新Ҏ已l封版, M8 作ؓ开发者预览版Q基本上可用Q可?a >Oracle|站下蝲</a>?按照<a >计划</a><a >GA(General Availability)</a>版本 应该?014q?月䆾发布Q如果顺利正式版估计和GA版本相同Q也是说在明年3月䆾正式用JDK 8了?/p> <p>q次JDK 8 一共带来了<a >55个新Ҏ?/a>Q目前所有API应该都已l冻l, 正在q行零bug试。这ơ更新的力度比JDK 6/JDK 7都要大,延期了几ơ,也非o人期待?我个人准备花费几个月的学习时_努力跟上Java 8的发布节奏。当然由于对Java 7不太熟悉Q因此同时也学习下Java 7的API?/p> <p>目前支持JDK 8的IDE有:</p> <ul> <li><a >Netbeans 7.4</a></li> <li><a >IDEA 12</a></li> <li><a >非官方的Eclipse</a>, 官方需要到明年Java 8正式发布以后</li> </ul> <p>q所有JDK 8的特性IDE都能支持Q因此需要随时更新IDE以便获得更好的开发环境,推荐使用IDEA?/p> <br /> <h2>Java 8 新特性入?/h2> <ol> <li>旉?/li> <li>Lambda</li> <li>式操作 – Stream API</li> <li>接口默认Ҏ – Default Method</li> <li>日期和时?– Date & Time (JSR 310)</li> <li>集合扩展 – Collections API</li> <li>q发操作 – Concurrency API additions</li> <li>IO/NIO 扩展 – IO/NIO API additions</li> <li>反射和注解更?– Reflection and annotation changes</li> <li>Base64</li> <li>其它各种更新 – Other additions</li> </ol> <hr /> <h2>Java 7 新特性入?/h2> <ol> <li>字符串在switch中的使用</li> <li>try-with-resources 自动释放资源</li> <li>泛型实例创徏的类型推?/li> <li>多异常catch操作</li> <li>文gAPI扩展</li> <li>集合API更新</li> <li>q发~程API更新</li> <li>Unicode 6.0的支?/li> <li>JDBC 4.1 支持 RowSet 1.1</li> </ol> <p> [更新旉: 2013/10/16] <br/> [原文地址Q?a target="_blank" >Java 8 入门/新特?/a>] </p><img src ="http://m.tkk7.com/xylz/aggbug/405031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2013-10-16 00:33 <a href="http://m.tkk7.com/xylz/archive/2013/10/16/405031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随机选择集合的子元素集合http://m.tkk7.com/xylz/archive/2013/08/17/402978.htmlimxylzimxylzSat, 17 Aug 2013 09:44:00 GMThttp://m.tkk7.com/xylz/archive/2013/08/17/402978.htmlhttp://m.tkk7.com/xylz/comments/402978.htmlhttp://m.tkk7.com/xylz/archive/2013/08/17/402978.html#Feedback1http://m.tkk7.com/xylz/comments/commentRss/402978.htmlhttp://m.tkk7.com/xylz/services/trackbacks/402978.html我需要一个从集合N中随机选择M个子元素的算法?当然最好的办法是将集合打ؕ序Q然后从中选择前M个元素即可?Java中现成的API可以使用Q?/div>
java.util.Collections.shuffle(List<?>)
此算法非常简单,循环Nơ,每次长度减少1Q随取其中一个元素,然后交换其对U元素?/div>
public static void shuffle(List<?> list, Random rnd) {
    int size = list.size();
    if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {
        for (int i=size; i>1; i--)
            swap(list, i-1, rnd.nextInt(i));
    } else {
        Object arr[] = list.toArray();

        // Shuffle array
        for (int i=size; i>1; i--)
            swap(arr, i-1, rnd.nextInt(i));

        // Dump array back into list
        ListIterator it = list.listIterator();
        for (int i=0; i<arr.length; i++) {
            it.next();
            it.set(arr[i]);
        }
    }
}

有点意思的swap函数

public static void swap(List<?> list, int i, int j) {
    final List l = list;
    l.set(i, l.set(j, l.get(i)));
}

其实我们的需求很单,在基本不变的集合中,多次重复随机获取其子集,至于子集是否有序或者随Z重要的, 重要的是原集合中的每个元素都有相似的概率出现在子集合中?/div>

考虑到性能以及q发讉KQ多U程Q的需要,我想C一个简单的法Q?/div>
l定N个元素集合,从中选择M(0<M<=N)个元素的办法是,
  1. 随机选择索引K(0<=K<N), i=0, I子?/li>
  2. 取有效元素N(k-i),N(k+i) 加入未满子集M
  3. i+=1, 重复(2) 直到子集M已满
  4. l止
q样取出来的元素虽然和原始集序有一定的关系Q但是每个元素在子集里出现的概率相当Q满结果要求?最后生成的法如下Q?/div>
public static <T> List<T> randomList(List<T> views, int max) {

    final int size = views.size();
    int index = RandomUtils.nextInt(size);
    //
    List<T> ret = new ArrayList<T>(max);
    int low = index - 1, high = index;
    while (max > 0 && (low >= 0 || high < size)) {
        if (low >= 0 && max-- > 0) {
            ret.add(views.get(low));
        }
        if (high < size && max-- > 0) {
            ret.add(views.get(high));
        }
        low--;
        high++;
    }
    return ret;
}

此算法满_下特点:
  1. _?/li>
  2. U程安全Q原始集合不变)
  3. 子元素出现概率相当(未经数学证明

另外Qstackoverflow上也有一些参考链接:



imxylz 2013-08-17 17:44 发表评论
]]>Crack JRebel 5.3.1http://m.tkk7.com/xylz/archive/2012/12/26/393498.htmlimxylzimxylzWed, 26 Dec 2012 04:02:00 GMThttp://m.tkk7.com/xylz/archive/2012/12/26/393498.htmlhttp://m.tkk7.com/xylz/comments/393498.htmlhttp://m.tkk7.com/xylz/archive/2012/12/26/393498.html#Feedback28http://m.tkk7.com/xylz/comments/commentRss/393498.htmlhttp://m.tkk7.com/xylz/services/trackbacks/393498.html
我一直?.1.0版本的jrebelQ是social免费版本的。social版本会在启动时连接jrebel服务器(myrebel)获取licenseQ同时会一些热部v的次数、节U时间、性能{日志提交到q程服务器?br /> 最q中国网l抽风,q接jrebel服务器特别慢Q导致每ơ启动的时候都需?0s以上的时间才能得到服务器的响应(加上自动更新)。最Z个技术控Q很昄Q我不能忍受q种行ؓ?br />
只好研究如何破解它?br /> ?.0开始jrebel的؜淆机制做得非常棒Q基本上无法q行反编译修改了。好在jrebel比较厚道Q一直兼Ҏ版本的license机Ӟd?008q写的破解工E,利解决?.1.0版本?br /> 然后下蝲最新的5.1.2Q?0121217Q版本,试了下居然没有成功。太囧了。这是一个小版本Qؓ何改动如此大Q?br />
打开debug日志后发玎ͼҎ没有加载jrebel.jar里面的License文g。反~译源码看了下,果然Q从5.1.2版本开始不再加载jrebel.jar里面的license文g了,该从用户ȝ录,jrebel安装目录{获取license文g。这样就没法通过一个jar包分发jrebel了?br /> jrebel.lic拯到用户主目录?jrebel目录卛_?br />
~ $ ls ~/.jrebel/jrebel.lic 
/Users/adyliu/.jrebel/jrebel.lic

来两张截图?br />
jrebel 5.1.2 crack
jrebel 5.1.2 crack

下蝲地址


Updated 2013/03/25
    JRebel更新?.2.0版本Q所以可以放Z个低版本Q我一直用)5.1.2?.1.3暂时不去解决了?br />


Updated 2013/04/17
    JRebel 更新?.2.2版本Q所以可以放Z个低版本5.2.0?br />

Updated 2013/06/06
    JRebel 更新?.3.0版本Q所以可以放Z个低版本5.2.2?br />

Updated 2013/07/12
    JRebel 更新?.3.1版本Q所以可以放Z个低版本5.3.0?br />

Updated 2013/09/15
    最新版本的下蝲地址在:http://m.tkk7.com/xylz/archive/2013/09/15/404098.html

PS:
     吐槽下,JRebel支持的功能越来越多,D本n来大了,版本5.x已经?M了!Q!

 

关键词: JRebel 5.3.1 crack, JRebel 5.3.0 crack, JRebel 5.2.2 crack, JRebel 5.2.0 crack, JRebel 5.1.2 crack,JRebel 5.1.0 crack, JRebel 5.x crack



imxylz 2012-12-26 12:02 发表评论
]]>
一ơ简单却致命的错?/title><link>http://m.tkk7.com/xylz/archive/2012/03/15/371966.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Thu, 15 Mar 2012 10:30:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2012/03/15/371966.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/371966.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2012/03/15/371966.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/371966.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/371966.html</trackback:ping><description><![CDATA[U上服务器负载过高发生了报警Q同事找我求救?br />我看到机器的负蝲都超q?0了,查看javaq程U程栈,扑ֈ了出问题的代码?br /> <br /> 下面是其代码片段Q实际情况错误处理比q更坏?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008080; "> 1</span> <span style="color: #0000FF; ">package</span> demo;<br /> <span style="color: #008080; "> 2</span> <br /> <span style="color: #008080; "> 3</span> <span style="color: #0000FF; ">import</span> java.io.BufferedReader;<br /> <span style="color: #008080; "> 4</span> <span style="color: #0000FF; ">import</span> java.io.InputStream;<br /> <span style="color: #008080; "> 5</span> <span style="color: #0000FF; ">import</span> java.io.InputStreamReader;<br /> <span style="color: #008080; "> 6</span> <span style="color: #0000FF; ">import</span> java.net.HttpURLConnection;<br /> <span style="color: #008080; "> 7</span> <span style="color: #0000FF; ">import</span> java.net.URL;<br /> <span style="color: #008080; "> 8</span> <span style="color: #0000FF; ">import</span> java.net.URLConnection;<br /> <span style="color: #008080; "> 9</span> <span style="color: #0000FF; ">import</span> org.apache.commons.lang.StringUtils;<br /> <span style="color: #008080; ">10</span> <br /> <span style="color: #008080; ">11</span> <span style="color: #008000; ">/**</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">12</span> <span style="color: #008000; "> * </span><span style="color: #808080; ">@author</span><span style="color: #008000; "> adyliu (imxylz#gmail.com)<br /> </span><span style="color: #008080; ">13</span> <span style="color: #008000; "> * </span><span style="color: #808080; ">@since</span><span style="color: #008000; "> 2012-3-15<br /> </span><span style="color: #008080; ">14</span> <span style="color: #008000; "> </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">15</span> <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">class</span> FaultDemo {<br /> <span style="color: #008080; ">16</span> <br /> <span style="color: #008080; ">17</span>     <span style="color: #008000; ">/**</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">18</span> <span style="color: #008000; ">     * </span><span style="color: #808080; ">@param</span><span style="color: #008000; "> args<br /> </span><span style="color: #008080; ">19</span> <span style="color: #008000; ">     </span><span style="color: #008000; ">*/</span><br /> <span style="color: #008080; ">20</span>     <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">void</span> main(String[] args) <span style="color: #0000FF; ">throws</span> Exception {<br /> <span style="color: #008080; ">21</span>         <span style="color: #0000FF; ">final</span> String tudou = "http://v.youku.com/v_playlist/f17170661o1p9.html";<br /> <span style="color: #008080; ">22</span> <br /> <span style="color: #008080; ">23</span>         URL url = <span style="color: #0000FF; ">new</span> URL(tudou);<br /> <span style="color: #008080; ">24</span>         HttpURLConnection conn = (HttpURLConnection) url.openConnection();<br /> <span style="color: #008080; ">25</span>         conn.connect();<br /> <span style="color: #008080; ">26</span>         <span style="color: #0000FF; ">try</span> {<br /> <span style="color: #008080; ">27</span>             InputStream in = conn.getInputStream();<br /> <span style="color: #008080; ">28</span>             BufferedReader br = <span style="color: #0000FF; ">new</span> BufferedReader(<span style="color: #0000FF; ">new</span> InputStreamReader(in, "utf-8"));<br /> <span style="color: #008080; ">29</span>             StringBuilder buf = <span style="color: #0000FF; ">new</span> StringBuilder();<br /> <span style="color: #008080; ">30</span>             String line = <span style="color: #0000FF; ">null</span>;<br /> <span style="color: #008080; ">31</span>             <span style="color: #0000FF; ">while</span> ((line = br.readLine()) != <span style="color: #0000FF; ">null</span>) {<br /> <span style="color: #008080; ">32</span>                 <span style="color: #0000FF; ">if</span> (StringUtils.isNotEmpty(buf.toString())) {<br /> <span style="color: #008080; ">33</span>                     buf.append("\r\n");<br /> <span style="color: #008080; ">34</span>                 }<br /> <span style="color: #008080; ">35</span>                 buf.append(line);<br /> <span style="color: #008080; ">36</span>             }<br /> <span style="color: #008080; ">37</span>             <span style="color: #008000; ">//</span><span style="color: #008000; ">do something with 'buf'</span><span style="color: #008000; "><br /> </span><span style="color: #008080; ">38</span> <span style="color: #008000; "></span><br /> <span style="color: #008080; ">39</span>         } <span style="color: #0000FF; ">finally</span> {<br /> <span style="color: #008080; ">40</span>             conn.disconnect();<br /> <span style="color: #008080; ">41</span>         }<br /> <span style="color: #008080; ">42</span> <br /> <span style="color: #008080; ">43</span>     }<br /> <span style="color: #008080; ">44</span> <br /> <span style="color: #008080; ">45</span> }<br /> <span style="color: #008080; ">46</span> </div> <br /> 思考下Q这D代码有什?strong style="background-color: yellow; ">致命</strong>问题么?Q这里不q究业务逻辑处理的正性以及细的瑕疵Q?br /> .<br /> ..<br /> ...<br /> 现在回来?br /> 我发现线E栈里面的线E都RUNNABLE?2行?br /> q一行看h有什么问题呢QStringBuilder.toString()不是转换成String么?Apache commons-lang里面的StringUtils.isNotEmpty使用也没问题啊?<br /> 看代码,人家的逻辑其实是判断是否是W一行,如果不是W一行那么就增加一个换行符?br /> <br /> 既然CPU在这里运行,那么p明这个地方一定存在非常耗费CPU的操作,DCPU非常J忙Q从而系l负载过高?br /> 看详l堆栈,其实CPU在进行内存的拯动作?br /> 看下面的源码?br /> <em style="color: #0000ff; ">java.lang.StringBuilder.toString()</em><br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <span style="color: #0000FF; ">public</span> String toString() {<br />         <span style="color: #008000; ">//</span><span style="color: #008000; "> Create a copy, don't share the array</span><span style="color: #008000; "><br /> </span>    <span style="color: #0000FF; ">return</span> <span style="color: #0000FF; ">new</span> String(value, 0, count);<br />     }</div> 接着看java.lang.String的构造函敎ͼ<br /> <div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <span style="color: #0000FF; ">public</span> String(<span style="color: #0000FF; ">char</span> value[], <span style="color: #0000FF; ">int</span> offset, <span style="color: #0000FF; ">int</span> count) {<br />         <span style="color: #0000FF; ">if</span> (offset < 0) {<br />             <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> StringIndexOutOfBoundsException(offset);<br />         }<br />         <span style="color: #0000FF; ">if</span> (count < 0) {<br />             <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> StringIndexOutOfBoundsException(count);<br />         }<br />         <span style="color: #008000; ">//</span><span style="color: #008000; "> Note: offset or count might be near -1>>>1.</span><span style="color: #008000; "><br /> </span>        <span style="color: #0000FF; ">if</span> (offset > value.length - count) {<br />             <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> StringIndexOutOfBoundsException(offset + count);<br />         }<br />         <span style="color: #0000FF; ">this</span>.offset = 0;<br />         <span style="color: #0000FF; ">this</span>.count = count;<br />         <span style="color: #0000FF; ">this</span>.value = Arrays.copyOfRange(value, offset, offset+count);<br />     }</div> <br /> 看出来了么?<br /> 问题的关键在于String构造函数的最后一行,valueq不是直接指向的Q而是重新生成了一个新的字W串Q用系l拷贝函数进行内存复制?br /> <div><em style="color: #0000ff; ">java.util.Arrays.copyOfRange(char[], int, int)</em></div> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <span style="color: #0000FF; ">public</span> <span style="color: #0000FF; ">static</span> <span style="color: #0000FF; ">char</span>[] copyOfRange(<span style="color: #0000FF; ">char</span>[] original, <span style="color: #0000FF; ">int</span> from, <span style="color: #0000FF; ">int</span> to) {<br />         <span style="color: #0000FF; ">int</span> newLength = to - from;<br />         <span style="color: #0000FF; ">if</span> (newLength < 0)<br />             <span style="color: #0000FF; ">throw</span> <span style="color: #0000FF; ">new</span> IllegalArgumentException(from + " > " + to);<br />         <span style="color: #0000FF; ">char</span>[] copy = <span style="color: #0000FF; ">new</span> <span style="color: #0000FF; ">char</span>[newLength];<br />         System.arraycopy(original, from, copy, 0,<br />                          Math.min(original.length - from, newLength));<br />         <span style="color: #0000FF; ">return</span> copy;<br />     }</div> <br /> 好了Q再回头看逻辑代码32行?br /> <div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">if</span> (StringUtils.isNotEmpty(buf.toString())) {<br />     buf.append("\r\n");<br /> }</div> q里有问题的地方在于每次循环一行的时候都生成一个新的字W串。也是说如果HTTPq回的结果输入流中有1000行的话,额外生?000个字W串Q不StringBuilder扩容生成的个敎ͼ。每一个字W串q比前一个字W串大?br /> <br /> <br /> 我们来做一个简单的试Q我们在原来的代码上增加几行计数代码?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <span style="color: #0000FF; ">int</span> lines =0;<br />     <span style="color: #0000FF; ">int</span> count = 0;<br />     <span style="color: #0000FF; ">int</span> malloc = 0;<br />     <span style="color: #0000FF; ">while</span> ((line = br.readLine()) != <span style="color: #0000FF; ">null</span>) {<br />         lines++;<br />         count+=line.length();<br />         malloc += count;<br />         <span style="color: #0000FF; ">if</span> (StringUtils.isNotEmpty(buf.toString())) {<br />             buf.append("\r\n");<br />         }<br />         buf.append(line);<br />     }<br />     System.out.println(lines+" -> "+count+" -> "+malloc);</div> 我们记录下行数lines以及额外发生的字W串拯大小malloc?br /> q是一ơ输出的l果?br /> <div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->1169 -> 66958 -> 39356387</div> 也就?169行的|页Q一共是66958字节Q?5KBQ,l果额外生成的内存大(不算StringBuilder扩容占用的内存大)?9356387字节Q?7.5MB)!!!<br /> 试想一下,CPU一直频J于q行内存分配Q机器的负蝲能不高么Q我们线上服务器?个CPU 16核,内存24G的Redhat Enterprise Linux 5.5Q负载居然达到几十。这q是只有讉K量很低的时候。这难怪服务频J宕Z?br /> <br /> 事实上我们有非常完善和丰富的ZApache commons-httpclient的封装,操作h也非常简单。对于这U简单的hQ只需要一条命令就解决了?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->String platform.utils.HttpClientUtils.getResponse(String)<br /> String platform.utils.HttpClientUtils.postResponse(String, Map<String, String>)</div> <br /> 即非要自造轮子,处理q种单的输入可以用下面的代码Q就可以很好的解决问题?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    InputStream in = <img src="http://m.tkk7.com/Images/dot.gif" alt="" /><br />     ByteArrayOutputStream baos = <span style="color: #0000FF; ">new</span> ByteArrayOutputStream(8192);<br />     <span style="color: #0000FF; ">int</span> len = -1;<br />     <span style="color: #0000FF; ">byte</span>[] b = <span style="color: #0000FF; ">new</span> <span style="color: #0000FF; ">byte</span>[8192];<span style="color: #008000; ">//</span><span style="color: #008000; ">8k</span><span style="color: #008000; "><br /> </span>    <span style="color: #0000FF; ">while</span> ((len = in.read(b)) > 0) {<br />         baos.write(b, 0, len);<br />     }<br />     baos.close();<span style="color: #008000; ">//</span><span style="color: #008000; ">ignore is ok</span><span style="color: #008000; "><br /> </span>    String response =  <span style="color: #0000FF; ">new</span> String(baos.toByteArray(), encoding);</div> <br /> 当然了,最后紧急处理线上问题最快的方式是有问题的代码稍微变通下卛_?br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> -->    <span style="color: #0000FF; ">if</span> (<strong style="background-color: yellow; ">buf.length() > 0</strong>) {<br />         buf.append("\r\n");<br />     }</div> <br /> <br /> q个问题非常单,只是惌辑և个观点:<br /> <ul> <li>团队更需要合作,按照规范来进行。自造轮子不是不可以Q但是生产环境还是要限于自己熟悉的方式?/li> <li>即非常单的代码Q也有可能有致命的陷阱在里面。善于思考才是王道?/li> <li>学习开源的代码和常规思\Q学习解决问题的常规做法。这个问题其实非常简单,熟悉输入输出的人非常熟l就能解决问题?/li> </ul><img src ="http://m.tkk7.com/xylz/aggbug/371966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2012-03-15 18:30 <a href="http://m.tkk7.com/xylz/archive/2012/03/15/371966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring Framework 3.1 Reference CHMhttp://m.tkk7.com/xylz/archive/2012/02/08/369608.htmlimxylzimxylzWed, 08 Feb 2012 08:41:00 GMThttp://m.tkk7.com/xylz/archive/2012/02/08/369608.htmlhttp://m.tkk7.com/xylz/comments/369608.htmlhttp://m.tkk7.com/xylz/archive/2012/02/08/369608.html#Feedback1http://m.tkk7.com/xylz/comments/commentRss/369608.htmlhttp://m.tkk7.com/xylz/services/trackbacks/369608.html
L了发生错误的javascriptQ网l原因,你懂的)Q烦引排序重命名Q稍微排版了下?br />
没有改动M内容?strong style="font-family: 'Comic Sans MS'; font-size: 14pt; color: #0000ff; ">毫无疑问Q这是英文版的,因ؓ没有人翻译?/strong>

截图如下?br />

Spring Framework 3.1 Reference CHM
SpringFramework3.1-Reference_en.chm

imxylz 2012-02-08 16:41 发表评论
]]>
~程语言大战http://m.tkk7.com/xylz/archive/2011/12/06/365658.htmlimxylzimxylzTue, 06 Dec 2011 03:25:00 GMThttp://m.tkk7.com/xylz/archive/2011/12/06/365658.htmlhttp://m.tkk7.com/xylz/comments/365658.htmlhttp://m.tkk7.com/xylz/archive/2011/12/06/365658.html#Feedback8http://m.tkk7.com/xylz/comments/commentRss/365658.htmlhttp://m.tkk7.com/xylz/services/trackbacks/365658.html


非常令h吃惊的是C++语言依然不够坚挺Q由于Windows 7/Windows 8的发力,C#很快׃抢占C++的市场,估计很快׃C++从前三名中挤下去?



iPhone/iPad的热销让Object Cl箋火热Q前十的位置q是可以持箋很久的,q一Ҏ庸置疑。移动设备开发的高端人才现在是高薪难求,如果有时间我也要l箋x下?nbsp; 阅读全文

imxylz 2011-12-06 11:25 发表评论
]]>
处理Zookeeper的sessionq期问题http://m.tkk7.com/xylz/archive/2011/12/05/365578.htmlimxylzimxylzMon, 05 Dec 2011 05:57:00 GMThttp://m.tkk7.com/xylz/archive/2011/12/05/365578.htmlhttp://m.tkk7.com/xylz/comments/365578.htmlhttp://m.tkk7.com/xylz/archive/2011/12/05/365578.html#Feedback4http://m.tkk7.com/xylz/comments/commentRss/365578.htmlhttp://m.tkk7.com/xylz/services/trackbacks/365578.htmlSession失效问题

通常客户端主动关闭连接认为是一ơsession失效。另外也有可能因为其它未知原因,例如|络时D的session失效问题。在服务端看来,无法区分session失效是何U情况,一ơ一旦发生session失效Q一定时间后׃session持有的所有watcher以及瞬时节点删除?
而对于Zookeeper客户端而言Q一旦发生失效不知道是否该重q,q涉及到watcher和瞬时节炚w题,因此Zookeeper客户端认为,一旦发生了seesion失效Q那么就认ؓ客户端死掉了。从而所有操作都不能够进行。参?How should I handle SESSION  阅读全文

imxylz 2011-12-05 13:57 发表评论
]]>
享受热部|的好处http://m.tkk7.com/xylz/archive/2011/06/17/352476.htmlimxylzimxylzFri, 17 Jun 2011 01:25:00 GMThttp://m.tkk7.com/xylz/archive/2011/06/17/352476.htmlhttp://m.tkk7.com/xylz/comments/352476.htmlhttp://m.tkk7.com/xylz/archive/2011/06/17/352476.html#Feedback2http://m.tkk7.com/xylz/comments/commentRss/352476.htmlhttp://m.tkk7.com/xylz/services/trackbacks/352476.html

你还在ؓ频繁部v服务器而烦gQ?br />
Ԍ试试jrebel吧。更多jrebel的介l参考这?a target="_blank" style="color: #4d87c1; text-decoration: none; font-family: arial; font-weight: bold; font-size: 1.1em; ">http://www.zeroturnaround.com/jrebel/?/p>

啊?免费版只能?0天?花钱Q十个h的团队用一q的企业版License?span style="font-family: 'Comic Sans MS'; font-size: 18pt; ">2891$Q你没看错,是真真正正的帝国的钱!

好吧Q我{穷Z用不P只好“自己动手/丰衣食”?/p>

q里提供了一个完整功能的企业版,免费大甩送了Q有木有!!!

 

怎么使用Q最单方?在resin的启动文Ӟ例如httpd.sh中增加:

Resin 3.1+版本Q?/p>

exec $JAVA_EXE -javaagent:/opt/apps/resin/jrebel4.0-crack.jar -jar ${RESIN_HOME}/lib/resin.jar $*

Resin 3.0-版本Q?/p>

args=”-J-javaagent:/opt/apps/resin/jrebel4.0-crack.jar

TomcatQJetty? Jboss? WebLogic? WebSphere? Maven? Eclipse? And More?

OKQ参考这里文档吧Q?a target="_blank" style="color: #4d87c1; text-decoration: none; font-family: arial; font-weight: bold; font-size: 1.1em; ">http://www.zeroturnaround.com/reference-manual/

Ԍ不要qQ试试吧Q?/p>

有木有更单,更NB的热部vU籍啊?

有的Q亲Q?/p>

如果你的Linux x86 (x86_64位目前没?的glibc?.4+版本Q试?a target="_blank" style="color: #4d87c1; text-decoration: none; font-family: arial; font-weight: bold; font-size: 1.1em; ">dcevm吧!Windows 32/64位同h相应的版本啊Q?/p>

imxylz 2011-06-17 09:25 发表评论
]]>
Crack JRebel 4.0Q无需重启JVMQ热部v解决Ҏhttp://m.tkk7.com/xylz/archive/2011/06/12/352109.htmlimxylzimxylzSat, 11 Jun 2011 16:24:00 GMThttp://m.tkk7.com/xylz/archive/2011/06/12/352109.htmlhttp://m.tkk7.com/xylz/comments/352109.htmlhttp://m.tkk7.com/xylz/archive/2011/06/12/352109.html#Feedback35http://m.tkk7.com/xylz/comments/commentRss/352109.htmlhttp://m.tkk7.com/xylz/services/trackbacks/352109.htmlhttp://dl.dropbox.com/u/22951342/jrebel.jar  www.zeroturnaround.com最q又接触C点WEB应用Q想到Resin服务器重启需要花Ҏ较多的时_SpringWEB服务搞得来复杂,来臃肿了Q,所以又惛_?8q那时候用JavaRebel了。一D|间不用h家居然改名ؓJavaRebel了?br />如果不熟悉的可以搜烦下JRebel/JavaRebelQ这里是官方|站Q?div style="display: inline-block; ">
www.zeroturnaround.com?br />最q刚发布?.0版本Q功能更强大Q配|也更加单了。hg菌Ӏ?br />官方提供30天试用版Q可以先体验下再军_是否购买?br />
看到里面的代码؜淆让我很崩溃Q没有深入研I؜淆后的运行机制。比如下面居然有两个名称相同Q参数相同,但是q回g同的静态方法,不知是如何执行的?br />public static void a(String s)?public static String a(String)Q以?br />private static void c()和private static String c()?br />猜测是在q行的时候自p行JVM指o的执行。这L代码反编译后都不知道怎么写回去,惛_崩溃Q因Z个方法居焉有地方调用了?br />


zhangthe9 提供了一?.0的破解版Q我很好奇,咨询了下Q居然还是以前的RSA{֐法?/div>
好吧Q翻?8q写的JavaRebel 2.0-M1的破解程序,重新生成一个license文gQ修改公钥,替换license文gQ居然运行正常。这么多q了Q签名算法和步骤居然一炚w没变Q嗯Qh家真执着Q?br />当然是无限制版,所有功能可用,也没有时间限制?br />

#############################################################

 JRebel 
4.0 (201105311152)
   with Enterprise Add
-On! (see http://jrebel.com/enterprise)
 (c) Copyright ZeroTurnaround OU, Estonia, Tartu.

 Over the last 
1 days JRebel prevented 
 at least 
0 redeploys/restarts saving you about 0 hours.

 This product is licensed to www.imxylz.info
 
for unlimited number of developer seats on site.
 
== Cracked by imxylz (imxylz#gmail.com) from JavaRebel 2.0-M1, 2008 ==

#############################################################

伟大领袖毛主席,指引我们向前q!
jrebel cracked by imxylz
伟大领袖毛主席,指引我们向前q!
jrebel cracked by imxylz
JRebel: Reloading class 'ReloadClass'.change 
伟大领袖毛主席,指引我们向前q!
class!

破解思\很简单,替换公钥Q用自q钥生成签名License文g?br />如果惛_蔽版本更新提C,有以下几U思\Q?br />Q?Q修改调用更新坚持的c(N有点大,因ؓh比较严重Q不Ҏ反编译)
Q?Q修Ҏ新服务器的地址Q将http://update.zeroturnaround.com/jrebel/地址修改Q可以用二q制工具直接修改字符Ԍ比如我就update改ؓupdattQ无法解析域名就不能获取最新版本了?br />Q?Q增?Drebel.disable_update=true参数卛_。(q种Ҏ最单)?br />
当然了,Z“保护知识产权”Q不会将破解文g攑և来,有需求的可以留言联系。(所谓的“计算机条?#8221;是允ؓ了学习、研I而进行相关逆向工程的,哈哈Q?/strike>

好吧Q架不住国h的热情,q里是下载地址Q需要翻XQ你懂得Q?div style="display: inline-block; ">
http://dl.dropbox.com/u/22951342/jrebel.jar  

[关键字: JRebel, JavaRebel, JRebel Crack, JRebel License, JavaRebel License]


imxylz 2011-06-12 00:24 发表评论
]]>当Ajax遭遇GBK~码 (完全解决Ҏ)http://m.tkk7.com/xylz/archive/2011/06/10/352073.htmlimxylzimxylzFri, 10 Jun 2011 15:46:00 GMThttp://m.tkk7.com/xylz/archive/2011/06/10/352073.htmlhttp://m.tkk7.com/xylz/comments/352073.htmlhttp://m.tkk7.com/xylz/archive/2011/06/10/352073.html#Feedback5http://m.tkk7.com/xylz/comments/commentRss/352073.htmlhttp://m.tkk7.com/xylz/services/trackbacks/352073.html阅读全文

imxylz 2011-06-10 23:46 发表评论
]]>
CRACK xmind 3.2.1 PRO功能http://m.tkk7.com/xylz/archive/2011/04/07/347837.htmlimxylzimxylzThu, 07 Apr 2011 15:56:00 GMThttp://m.tkk7.com/xylz/archive/2011/04/07/347837.htmlhttp://m.tkk7.com/xylz/comments/347837.htmlhttp://m.tkk7.com/xylz/archive/2011/04/07/347837.html#Feedback135http://m.tkk7.com/xylz/comments/commentRss/347837.htmlhttp://m.tkk7.com/xylz/services/trackbacks/347837.htmlxmind介绍点击q里和这里。思维导图介绍点击q里?
好吧Q我努力下,最新的xmind【截?011/4/7版本】pro版本功能挖掘出来。下面是一个智能截图[pro]功能的用截图。我使用了其它一些PRO功能发现都可以用,包括导出Q但是没有完全用所有PRO功能Q如果还有请告知吧?
另外Q这不需要帐戯行登录就可以使用所有PRO功能?nbsp; 阅读全文

imxylz 2011-04-07 23:56 发表评论
]]>
深入出 Java Concurrency (34): U程?part 7 U程池的实现及原?(2)http://m.tkk7.com/xylz/archive/2011/02/11/344091.htmlimxylzimxylzFri, 11 Feb 2011 15:48:00 GMThttp://m.tkk7.com/xylz/archive/2011/02/11/344091.htmlhttp://m.tkk7.com/xylz/comments/344091.htmlhttp://m.tkk7.com/xylz/archive/2011/02/11/344091.html#Feedback2http://m.tkk7.com/xylz/comments/commentRss/344091.htmlhttp://m.tkk7.com/xylz/services/trackbacks/344091.html阅读全文

imxylz 2011-02-11 23:48 发表评论
]]>
一个n份证L的基验证http://m.tkk7.com/xylz/archive/2011/01/05/342330.htmlimxylzimxylzWed, 05 Jan 2011 02:00:00 GMThttp://m.tkk7.com/xylz/archive/2011/01/05/342330.htmlhttp://m.tkk7.com/xylz/comments/342330.htmlhttp://m.tkk7.com/xylz/archive/2011/01/05/342330.html#Feedback1http://m.tkk7.com/xylz/comments/commentRss/342330.htmlhttp://m.tkk7.com/xylz/services/trackbacks/342330.html阅读全文

imxylz 2011-01-05 10:00 发表评论
]]>
深入出 Java Concurrency (29): U程?part 2 Executor 以及Executorshttp://m.tkk7.com/xylz/archive/2010/12/21/341281.htmlimxylzimxylzTue, 21 Dec 2010 15:32:00 GMThttp://m.tkk7.com/xylz/archive/2010/12/21/341281.htmlhttp://m.tkk7.com/xylz/comments/341281.htmlhttp://m.tkk7.com/xylz/archive/2010/12/21/341281.html#Feedback2http://m.tkk7.com/xylz/comments/commentRss/341281.htmlhttp://m.tkk7.com/xylz/services/trackbacks/341281.html下面q张囑֮整描qCU程池的cMpȝ构?nbsp; 阅读全文

imxylz 2010-12-21 23:32 发表评论
]]>
Ibatis 2.x日志记录QSQL调试Q分?/title><link>http://m.tkk7.com/xylz/archive/2010/12/05/339844.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Sun, 05 Dec 2010 07:17:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2010/12/05/339844.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/339844.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2010/12/05/339844.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/339844.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/339844.html</trackback:ping><description><![CDATA[     摘要: 最q的目使用的是旧的ibatis2.x版本Q有时候ؓ了方便调试,惌出SQL执行的语句和参数。我记得应该有某些logger的日志别修改ؓDEBUG可以看到。当然ؓ了方便可以直接在log4jQ如果用log4j的话Q的root日志U别修改为DEBUGQƈ且输出appender的接受别修改ؓDEBUG可以了。这h可以看到日志信息QSQL/参数Q等Q但是同时也输出了过多的其它logger信息Q显然在一个稍微大一点的pȝ里面debug的信息应该都是非常多的,不说别的Q光是spring的日志就够好多页了?<br>Z解决q多的日志,dibatis源码Q看了下。ibatis的执行流E大致是q样的?nbsp; <a href='http://m.tkk7.com/xylz/archive/2010/12/05/339844.html'>阅读全文</a><img src ="http://m.tkk7.com/xylz/aggbug/339844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2010-12-05 15:17 <a href="http://m.tkk7.com/xylz/archive/2010/12/05/339844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java常见疑惑和陷阱(PPTQ?/title><link>http://m.tkk7.com/xylz/archive/2010/12/03/339722.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Fri, 03 Dec 2010 08:13:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2010/12/03/339722.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/339722.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2010/12/03/339722.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/339722.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/339722.html</trackback:ping><description><![CDATA[本来是打小范围内讨论的Q话题也比较,后来听说人多了,临时拼凑些材料。话题过大后重点放在讲解上Q其实这里面讲解的东东还是挺多的。以后有旉会将q发完整整理一ơ?br /> <br /> <br /> <br /> <div style="width: 425px;" id="__ss_6013919"><strong style="display: block; margin: 12px 0pt 4px;"><a title="Java常见疑惑和陷?>Java常见疑惑和陷?/a></strong><object id="__sse6013919" width="425" height="355"> <param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=java-101203020649-phpapp02&stripped_title=java-6013919&userName=xylz" /> <param name="allowFullScreen" value="true"/> <param name="allowScriptAccess" value="always"/><embed name="__sse6013919" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=java-101203020649-phpapp02&stripped_title=java-6013919&userName=xylz" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object> <div style="padding: 5px 0pt 12px;">View more <a >presentations</a> from <a >xylz</a>.</div> </div><img src ="http://m.tkk7.com/xylz/aggbug/339722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2010-12-03 16:13 <a href="http://m.tkk7.com/xylz/archive/2010/12/03/339722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【广告】淘宝招聘高UJAVA开发工E师http://m.tkk7.com/xylz/archive/2010/11/02/336813.htmlimxylzimxylzTue, 02 Nov 2010 08:09:00 GMThttp://m.tkk7.com/xylz/archive/2010/11/02/336813.htmlhttp://m.tkk7.com/xylz/comments/336813.htmlhttp://m.tkk7.com/xylz/archive/2010/11/02/336813.html#Feedback19http://m.tkk7.com/xylz/comments/commentRss/336813.htmlhttp://m.tkk7.com/xylz/services/trackbacks/336813.html职位名称Q高U?/span>JAVA开发工E师

招聘数量Q若qԌ我们l估计还需?~8人)

工作地点Q北京(注意不是杭州Q?/span>

岗位职责Q?/span>

参与淘宝C务品系l设计与~码工作Q负责业务项目的开发和l护Q负责各目的设计,制定和评审各U技术规范?/span>

具体要求Q?/span>

. 计算机相关专业大学本U以上学历,h扎实的计机基础理论知识Q【只需要学校好点就行,面试的时候少被相关h士歧视下?/span>

. 三年以上使用Java语言q行|站开发的l验Q【两q也考虑吧,一q左右的q了,不想带h学习?/span>

. 熟悉Web JSP,Servlet,Java Bean,JMS,EJB,Jdbc开发,熟悉J2EE规范Q【估计每一个h都会q么说?/span>

. 熟悉Z数据库的设计和开发;【这是啥玩意儉K求?/span>

. 熟悉Linux操作pȝ和大型数据库Q【评论:q个是扯淡,基本上用不着Q淘宝划分的太细了?/span>

. 工作认真Q细心,有条理;U极性高Q求知欲强;h较强的沟通能力及团队合作_Q【虚的,没啥意思?/span>

. 有招聘等行业开发经验者优先;【不是必,但是会做相关工作?/span>

. 深入了解设计模式和项目管理经验者优先;【不是必,有一点讨v来容易点?/span>

=====

以上是官方说明,先补充几点:

Q?Q熟悉淘宝webx框架的绝对优?/p>

Q?Q目前系l还很烂Q所以技术比较初U,但是需要ibatis和velocity相关技术?/p>

Q?Q如果有一些设计思想或者经历就更好了(比如UML/架构/模型{)

其它的就了Q有亮点先说明?/p>

 

联系方式: 暂时不招?/s>

 

PS: 有意向的先发个简历过来,不想发简历的也可以先用邮件沟通下?/p>

有兴的可以先看看?a target="_blank">技术文化和惨E命运 —?怀念中国雅?/a>》,有个心理准备Q仅供参考?/p>

 

【最后更新时_2011.3.30 11:11?/p>

imxylz 2010-11-02 16:09 发表评论
]]>
q是JVM的Bug么?谁遇C面的情况Q?/title><link>http://m.tkk7.com/xylz/archive/2010/08/12/328589.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Wed, 11 Aug 2010 16:54:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2010/08/12/328589.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/328589.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2010/08/12/328589.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/328589.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/328589.html</trackback:ping><description><![CDATA[<p>我在CentOS release 5.3 (Final)遇到一U情况:</p> <p>一个类的所有public static final字段中,按照定义的从上往下顺序,C个字Dؓ止,此字D늚上面的所有字D都能访问,此字D下面(包括子字D)都不能访问?/p> <p>具体是这LQresin环境下一个jsp讉K一个类的某个字D,在webh此jsp的时候被告知~译jspp|Q原因是Qcannot find symbol。ƈ指明了此cȝ哪一个字Dc具体分析后发现此字D늚上面所有字D都可以讉KQ此字段的下面字D(包括自己Q都不能讉K。但是诡异的是,在jsp中用Class.getField()或者getFields()遍历是可以拿到此字段的,q且此字D|完整的,可用的?/p> <p>也就是说JVM实例化了一个类Q完成了所有字D늚初始化,但是在将所有字D设|ؓ对外可见时失败了Q导致一部分字段对外是不可见的,但是此类却成功初始化Qƈ对外可用了。这里所说的对外可见不是说字D设|ؓ非publicQ而是cdҎq不到Q因为如果是非public的话会得C个访问修饰符不可见的错误Q但是现在得到是不存在此W号。这只是我的猜想Qƈ不一定正?/p> <p>我的JVM版本如下Q?/p> <p>java version "1.6.0_10"<br /> Java(TM) SE Runtime Environment (build 1.6.0_10-b33)<br /> Java HotSpot(TM) 64-Bit Server VM (build 11.0-b15, mixed mode) </p> <p>其中resin比较老,?.0.21 pro版本。特别说明的是,q种情况是偶才出现Q重启resin消׃Q所有字D可以正常访问。我一共遇C两次Q目前仍然不知道是JVM的bugq是resin的bug?</p> <p>  </p> <p>W二个诡异的事情是,听同事(两个以上人看q现象)描述他写了一个单例,如下Q?</p> <blockquote> <p>public class Singleton { </p> <p>    private static final Singleton instance = new Singleton(); </p> <p>    private Singleton() {<br />     } </p> <p>    public static Singleton getInstance() {<br />         return instance;<br />     }<br /> }</p> </blockquote> <p>然后去调用getInstance()Q结果居然得C个null。特别说明的?没有ClassNotFoundException异常Q没有java.lang.ExceptionInInitializerError异常Q也没有java.lang.NoClassDefFoundError异常Q没有Q何异常,是一个真真正正的null?/p> <p>当然了,比较诡异的是重启JVM没有此现象了。此现象我没有重现过Q也没有看到q,只是道途听_不好q多评论?/p> <p> </p> <p>以上两个问题有谁遇到q么Q?/p> <p>N是RP问题Q灵异事ӞJVM BUGQ?/p><img src ="http://m.tkk7.com/xylz/aggbug/328589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2010-08-12 00:54 <a href="http://m.tkk7.com/xylz/archive/2010/08/12/328589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《深入浅?Java Concurrency》暂停两天更?/title><link>http://m.tkk7.com/xylz/archive/2010/07/16/326286.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Fri, 16 Jul 2010 03:59:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2010/07/16/326286.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/326286.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2010/07/16/326286.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/326286.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/326286.html</trackback:ping><description><![CDATA[<p>自从开了这个专题后发现旉明显不够用。前D|间几乎是每天一的速度更新Q但是没写一都需要花3个小时以上的旉。这一斚w是对知识的理解和l验不够Q另一斚w也确实是׃很多的时间做相关知识的准备和处理?/p> <p>每写一文章需要考虑适用的场合,相关的设计思想和理论知识,代码中是如何实现Q收集别人是何如理解和应用的Q查阅相关的资料{等Q感觉体力活比脑力活q要多。一句话Q精力不够!</p> <p>另外q有一个原因就是个人组l文料的能力不够Q其实也是经验不Ş了,所以在操作上也是比较耗费_֊的?/p> <p>但是“时间挤挤还是有的”,所以从下周开始还是会l箋更新的。这个周末好好考虑下,重新规划下接下来的章节该怎么q行。先休息两天吧?/p><img src ="http://m.tkk7.com/xylz/aggbug/326286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2010-07-16 11:59 <a href="http://m.tkk7.com/xylz/archive/2010/07/16/326286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入出 Java Concurrency (14): 锁机?part 9 d?(ReentrantReadWriteLock) (2)http://m.tkk7.com/xylz/archive/2010/07/15/326152.htmlimxylzimxylzWed, 14 Jul 2010 16:41:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/15/326152.htmlhttp://m.tkk7.com/xylz/comments/326152.htmlhttp://m.tkk7.com/xylz/archive/2010/07/15/326152.html#Feedback1http://m.tkk7.com/xylz/comments/commentRss/326152.htmlhttp://m.tkk7.com/xylz/services/trackbacks/326152.htmlq一节主要是谈谈d锁的实现?
上一节中提到QReadWriteLock看v来有两个锁:readLock/writeLock。如果真的是两个锁的话,它们之间又是如何怺影响的呢Q?
事实上在ReentrantReadWriteLock里锁的实现是靠java.util.concurrent.locks.ReentrantReadWriteLock.Sync完成的。这个类看v来比较眼熟,实际上它是AQS的一个子c,q中cM的结构在CountDownLatch、ReentrantLock、Semaphore里面都存在。同样它也有两种实现Q公q锁和非公^锁,也就是java.util.concurrent.locks.ReentrantReadWriteLock.FairSync和java.util.concurrent.locks.ReentrantReadWriteLock.NonfairSync。这里暂且不提?
在ReentrantReadWriteLock里面的锁M是一个SyncQ也是上面提到的FairSync或者NonfairSyncQ所以说实际  阅读全文

imxylz 2010-07-15 00:41 发表评论
]]>
深入出 Java Concurrency (13): 锁机?part 8 d?(ReentrantReadWriteLock) (1)http://m.tkk7.com/xylz/archive/2010/07/14/326080.htmlimxylzimxylzWed, 14 Jul 2010 06:18:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/14/326080.htmlhttp://m.tkk7.com/xylz/comments/326080.htmlhttp://m.tkk7.com/xylz/archive/2010/07/14/326080.html#Feedback2http://m.tkk7.com/xylz/comments/commentRss/326080.htmlhttp://m.tkk7.com/xylz/services/trackbacks/326080.htmlReentrantLock 实现了标准的互斥操作Q也是一ơ只能有一个线E持有锁Q也x谓独占锁的概c前面的章节中一直在q个特点。显然这个特点在一定程度上面减低了吞吐量,实际上独占锁是一U保守的锁策略,在这U情况下M“读/诠Z,“写/诠Z,“写/写”操作都不能同时发生。但是同样需要强调的一个概忉|Q锁是有一定的开销的,当ƈ发比较大的时候,锁的开销比较客观了。所以如果可能的话就量用锁,非要用锁的话尝试看能否攚wؓd锁?
ReadWriteLock描述的是Q一个资源能够被多个ȝE访问,或者被一个写U程讉KQ但是不能同时存在读写线E。也是说读写锁使用的场合是一个共享资源被大量d操作Q而只有少量的写操作(修改数据Q。清?描述了ReadWriteLock的API?nbsp; 阅读全文

imxylz 2010-07-14 14:18 发表评论
]]>
深入出 Java Concurrency (12): 锁机?part 7 信号量(SemaphoreQ?/title><link>http://m.tkk7.com/xylz/archive/2010/07/13/326021.html</link><dc:creator>imxylz</dc:creator><author>imxylz</author><pubDate>Tue, 13 Jul 2010 14:41:00 GMT</pubDate><guid>http://m.tkk7.com/xylz/archive/2010/07/13/326021.html</guid><wfw:comment>http://m.tkk7.com/xylz/comments/326021.html</wfw:comment><comments>http://m.tkk7.com/xylz/archive/2010/07/13/326021.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.tkk7.com/xylz/comments/commentRss/326021.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xylz/services/trackbacks/326021.html</trackback:ping><description><![CDATA[     摘要: Semaphore 是一个计C号量。从概念上讲Q信号量l护了一个许可集。如有必要,在许可可用前会阻塞每一?acquire()Q然后再获取该许可。每?release() d一个许可,从而可能释放一个正在阻塞的获取者。但是,不用实际的许可对象QSemaphore 只对可用许可的号码进行计敎ͼq取相应的行动?<br>说白了,Semaphore是一个计数器Q在计数器不?的时候对U程放行,一旦达?Q那么所有请求资源的新线E都会被dQ包括增加请求到许可的线E,也就是说Semaphore不是可重入的。每一ơ请求一个许可都会导致计数器减少1Q同hơ释放一个许可都会导致计数器增加1Q一旦达C0Q新的许可请求线E将被挂赗?<br>~存池整好用此思想来实现的Q比如链接池、对象池{?nbsp; <a href='http://m.tkk7.com/xylz/archive/2010/07/13/326021.html'>阅读全文</a><img src ="http://m.tkk7.com/xylz/aggbug/326021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xylz/" target="_blank">imxylz</a> 2010-07-13 22:41 <a href="http://m.tkk7.com/xylz/archive/2010/07/13/326021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入出 Java Concurrency (11): 锁机?part 6 CyclicBarrierhttp://m.tkk7.com/xylz/archive/2010/07/12/325913.htmlimxylzimxylzMon, 12 Jul 2010 15:33:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/12/325913.htmlhttp://m.tkk7.com/xylz/comments/325913.htmlhttp://m.tkk7.com/xylz/archive/2010/07/12/325913.html#Feedback2http://m.tkk7.com/xylz/comments/commentRss/325913.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325913.html如果说CountDownLatch是一ơ性的Q那么CyclicBarrier正好可以循环使用。它允许一l线E互相等待,直到到达某个公共屏障?(common barrier point)。所谓屏障点是一lQ务执行完毕的时刻?
  阅读全文

imxylz 2010-07-12 23:33 发表评论
]]>
深入出 Java Concurrency (10): 锁机?part 5 闭锁 (CountDownLatch)http://m.tkk7.com/xylz/archive/2010/07/09/325612.htmlimxylzimxylzFri, 09 Jul 2010 01:21:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/09/325612.htmlhttp://m.tkk7.com/xylz/comments/325612.htmlhttp://m.tkk7.com/xylz/archive/2010/07/09/325612.html#Feedback6http://m.tkk7.com/xylz/comments/commentRss/325612.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325612.html闭锁QLatchQ?
闭锁QLatchQ:一U同步方法,可以延迟U程的进度直到线E到达某个终点状态。通俗的讲是Q一个闭锁相当于一扇大门,在大门打开之前所有线E都被阻断,一旦大门打开所有线E都通过Q但是一旦大门打开Q所有线E都通过了,那么q个闭锁的状态就失效了,门的状态也׃能变了,只能是打开状态。也是说闭锁的状态是一ơ性的Q它保在闭锁打开之前所有特定的zd都需要在闭锁打开之后才能完成?
CountDownLatch是JDK 5+里面闭锁的一个实玎ͼ允许一个或者多个线E等待某个事件的发生。CountDownLatch有一个正数计数器QcountDownҎ对计数器做减操作QawaitҎ{待计数器达?。所有await的线E都会阻塞直到计数器?或者等待线E中断或者超时?nbsp; 阅读全文

imxylz 2010-07-09 09:21 发表评论
]]>
深入出 Java Concurrency (9): 锁机?part 4http://m.tkk7.com/xylz/archive/2010/07/08/325540.htmlimxylzimxylzThu, 08 Jul 2010 04:33:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/08/325540.htmlhttp://m.tkk7.com/xylz/comments/325540.htmlhttp://m.tkk7.com/xylz/archive/2010/07/08/325540.html#Feedback7http://m.tkk7.com/xylz/comments/commentRss/325540.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325540.htmlRelease/TryRelease
unlock操作实际上就调用了AQS的release操作Q释放持有的锁?nbsp; 阅读全文

imxylz 2010-07-08 12:33 发表评论
]]>
深入出 Java Concurrency (8): 锁机?part 3http://m.tkk7.com/xylz/archive/2010/07/07/325410.htmlimxylzimxylzTue, 06 Jul 2010 16:05:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/07/325410.htmlhttp://m.tkk7.com/xylz/comments/325410.htmlhttp://m.tkk7.com/xylz/archive/2010/07/07/325410.html#Feedback6http://m.tkk7.com/xylz/comments/commentRss/325410.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325410.html在没有深入了解内部机制及实现之前Q先了解下ؓ什么会存在公^锁和非公q锁。公q锁保证一个阻塞的U程最l能够获得锁Q因为是有序的,所以L可以按照h的顺序获得锁。不公^锁意味着后请求锁的线E可能在其前面排列的休眠U程恢复前拿到锁Q这样就有可能提高ƈ发的性能。这是因为通常情况下挂LU程重新开始与它真正开始运行,二者之间会产生严重的g时。因此非公^锁就可以利用q段旉完成操作。这是非公^锁在某些时候比公^锁性能要好的原因之一?nbsp; 阅读全文

imxylz 2010-07-07 00:05 发表评论
]]>
深入出 Java Concurrency (7): 锁机?part 2 AQShttp://m.tkk7.com/xylz/archive/2010/07/06/325390.htmlimxylzimxylzTue, 06 Jul 2010 10:29:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/06/325390.htmlhttp://m.tkk7.com/xylz/comments/325390.htmlhttp://m.tkk7.com/xylz/archive/2010/07/06/325390.html#Feedback3http://m.tkk7.com/xylz/comments/commentRss/325390.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325390.html
AQS
AbstractQueuedSynchronizerQ简UAQSQ是J.U.C最复杂的一个类Q导致绝大多数讲解ƈ发原理或者实战的时候都不会提到此类。但是虚心的作者愿意借助自己有限的能力和_֊来探讨一二(参考资源中也有一些作者做了部分的分析。)?
首先从理论知识开始,在了解了相关原理后会针对源码q行一些分析,最后加上一些实战来描述?nbsp; 阅读全文

imxylz 2010-07-06 18:29 发表评论
]]>
深入出 Java Concurrency (6): 锁机?part 1http://m.tkk7.com/xylz/archive/2010/07/05/325274.htmlimxylzimxylzMon, 05 Jul 2010 05:37:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/05/325274.htmlhttp://m.tkk7.com/xylz/comments/325274.htmlhttp://m.tkk7.com/xylz/archive/2010/07/05/325274.html#Feedback7http://m.tkk7.com/xylz/comments/commentRss/325274.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325274.html上一个章节中谈到了锁机制Qƈ且针对于原子操作谈了一些相关的概念和设计思想。接下来的文章中Q尽可能的深入研I机制Qƈ且理解里面的原理和实际应用场合?
管synchronized在语法上已经_单了Q在JDK 5之前只能借助此实玎ͼ但是׃是独占锁Q性能却不高,因此JDK 5以后开始借助于JNI来完成更高的锁实现?
JDK 5中的锁是接口java.util.concurrent.locks.Lock。另外java.util.concurrent.locks.ReadWriteLock提供了一对可供读写ƈ发的锁。根据前面的规则Q我们从java.util.concurrent.locks.Lock的API开始?nbsp; 阅读全文

imxylz 2010-07-05 13:37 发表评论
]]>
深入出 Java Concurrency (5): 原子操作 part 4http://m.tkk7.com/xylz/archive/2010/07/04/325206.htmlimxylzimxylzSun, 04 Jul 2010 10:03:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/04/325206.htmlhttp://m.tkk7.com/xylz/comments/325206.htmlhttp://m.tkk7.com/xylz/archive/2010/07/04/325206.html#Feedback15http://m.tkk7.com/xylz/comments/commentRss/325206.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325206.html锁机制存在以下问题:
Q?Q在多线E竞争下Q加锁、释N会导致比较多的上下文切换和调度gӞ引v性能问题?
Q?Q一个线E持有锁会导致其它所有需要此锁的U程挂v?
Q?Q如果一个优先高的U程{待一个优先低的U程释放锁会D优先U倒置Q引h能风险?
volatile是不错的机制Q但是volatile不能保证原子性。因此对于同步最l还是要回到锁机制上来?
独占锁是一U悲观锁Qsynchronized是一U独占锁Q会D其它所有需要锁的线E挂P{待持有锁的U程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁是Q每ơ不加锁而是假设没有冲突而去完成某项操作Q如果因为冲H失败就重试Q直到成功ؓ止?nbsp; 阅读全文

imxylz 2010-07-04 18:03 发表评论
]]>
深入出 Java Concurrency (4): 原子操作 part 3 指o重排序与happens-before法则http://m.tkk7.com/xylz/archive/2010/07/03/325168.htmlimxylzimxylzSat, 03 Jul 2010 12:40:00 GMThttp://m.tkk7.com/xylz/archive/2010/07/03/325168.htmlhttp://m.tkk7.com/xylz/comments/325168.htmlhttp://m.tkk7.com/xylz/archive/2010/07/03/325168.html#Feedback16http://m.tkk7.com/xylz/comments/commentRss/325168.htmlhttp://m.tkk7.com/xylz/services/trackbacks/325168.html׃在下一个章节中会谈到锁机制Q因此此节中会适当引入锁的概念?
在Java Concurrency in Practice中是q样定义U程安全的:
当多个线E访问一个类Ӟ如果不用考虑q些U程在运行时环境下的调度和交替运行,q且不需要额外的同步及在调用方代码不必做其他的协调,q个cȝ行ؓ仍然是正的Q那么这个类是U程安全的?nbsp; 阅读全文

imxylz 2010-07-03 20:40 发表评论
]]>
վ֩ģ壺 ˾þAV| ŷƷպһҹҹ| &#228;v뾫Ʒþþ | 2016| ƬվAëƬ| ޹߾Ʒһ| ޴Ƭѹۿ| һƷ| ҹƬ߲| ޽Сxxxxɫ| avѸ߳ˮ| ޹AVվ| һ| Ƶһ| ޾Ʒۺһ| þ2019Ļ| ŮƵ| о߹ۿͬ| ɫۺ| Avۺɫרɫ| ޳aƬ߹ۿ| ޸Ļ| WWWѹۿƵ| ëƬƵ| ƷƵվ| ޾ƷAAƬѽ| ѱ̬Ƶַվ| ߹ۿƵ| ɫþþۺ| ԻȫƵַ| ҹ˾Ʒɫ| ޹һ| þۺϹ׾Ʒ| һ߹ۿվ| AV| aëƬѹۿ | ߹ۿƬAVվ| ˳ɵӰ߹ۿ| www.ɫͼ.com| 2019ĻѴȫ5| ޹һӰ|