﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-码农往事</title><link>http://www.blogjava.net/rockblue1988/</link><description>我的代码为什么这么丑?一定是因为我长的不好看</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 07:55:30 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 07:55:30 GMT</pubDate><ttl>60</ttl><item><title>一道小题的陷阱</title><link>http://www.blogjava.net/rockblue1988/archive/2016/01/25/429203.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Mon, 25 Jan 2016 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2016/01/25/429203.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/429203.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2016/01/25/429203.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/429203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/429203.html</trackback:ping><description><![CDATA[说有一个屋里有多个桌子，有多个人？ 如果3个人一桌，多2个人。 如果5个人一桌，多4个人。 如果7个人一桌，多6个人。 如果9个人一桌，多8个人。 如果11个人一桌，正好。 请问这屋里多少人?<br />
最近比较闲，逛论坛看到随手做了．<br />
最小答案是<br />
代码如下:<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->&nbsp; &nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;Integer.MAX_VALUE;&nbsp;i++)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;value&nbsp;=&nbsp;i&nbsp;*&nbsp;11;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(value&nbsp;%&nbsp;3&nbsp;==&nbsp;2&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;5&nbsp;==&nbsp;4&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;7&nbsp;==&nbsp;6&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;9&nbsp;==&nbsp;8)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("i:"&nbsp;+&nbsp;i&nbsp;+&nbsp;",value:"&nbsp;+&nbsp;value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
计算出来的结果是：i:229,value:2519<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 />
-->&nbsp; &nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;valueMax&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;iMax&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;pram&nbsp;=&nbsp;11;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;Integer.MAX_VALUE;&nbsp;i++)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value&nbsp;=&nbsp;i&nbsp;*&nbsp;pram;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(value&nbsp;%&nbsp;3&nbsp;==&nbsp;2&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;5&nbsp;==&nbsp;4&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;7&nbsp;==&nbsp;6&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;9&nbsp;==&nbsp;8)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(iMax&nbsp;&lt;&nbsp;i)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iMax&nbsp;=&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(valueMax&nbsp;&lt;&nbsp;value)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valueMax&nbsp;=&nbsp;value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("count:"&nbsp;+&nbsp;count);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("iMax:"&nbsp;+&nbsp;iMax);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("valueMax:"&nbsp;+&nbsp;valueMax);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
当i在Integer.MAX_VALUE范围内的计算结果：<br />
<div>count:6817408</div>
<div>iMax:2147483434</div>
<div>valueMax:23622317774</div>
这边遇到了一个问题，当代码中的pram声明为int类型时计算的结果会与声明为long类型发生极大偏差，貌似是因为Java乘法对于int类型越界处理的问题，具体原因待查．<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 />
-->&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;count&nbsp;=&nbsp;0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;Integer.MAX_VALUE;&nbsp;i++)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;value&nbsp;=&nbsp;i&nbsp;*&nbsp;11;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(value&nbsp;%&nbsp;3&nbsp;==&nbsp;2&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;5&nbsp;==&nbsp;4&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;7&nbsp;==&nbsp;6&nbsp;&amp;&amp;&nbsp;value&nbsp;%&nbsp;9&nbsp;==&nbsp;8)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("i:"&nbsp;+&nbsp;i&nbsp;+&nbsp;",value:"&nbsp;+&nbsp;value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("count:"&nbsp;+&nbsp;count);</div>
最后数行看到的结果是这样：<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 />
-->i:2147475704,value:2147396264<br />
i:2147476019,value:2147399729<br />
i:2147476334,value:2147403194<br />
i:2147476649,value:2147406659<br />
i:2147476964,value:2147410124<br />
i:2147477279,value:2147413589<br />
i:2147477594,value:2147417054<br />
i:2147477909,value:2147420519<br />
i:2147478224,value:2147423984<br />
i:2147478539,value:2147427449<br />
i:2147478854,value:2147430914<br />
i:2147479169,value:2147434379<br />
i:2147479484,value:2147437844<br />
i:2147479799,value:2147441309<br />
i:2147480114,value:2147444774<br />
i:2147480429,value:2147448239<br />
i:2147480744,value:2147451704<br />
i:2147481059,value:2147455169<br />
i:2147481374,value:2147458634<br />
i:2147481689,value:2147462099<br />
i:2147482004,value:2147465564<br />
i:2147482319,value:2147469029<br />
i:2147482634,value:2147472494<br />
i:2147482949,value:2147475959<br />
i:2147483264,value:2147479424<br />
i:2147483579,value:2147482889<br />
count:3718586</div>
问题产生的原因应该是Java对于int的乘法结果大于上限的情况，自动截取了前10位．<br />
-----------------------------------------------------------------------------------------------------------------之前的理解不正确．<br /><br />根据Java的基础类型的变窄转换（Narrowing&nbsp;primitive&nbsp;conversion）规则，对于运算结果超出int范围的，将超出部分全部丢弃，只保留低３２位的．<img src ="http://www.blogjava.net/rockblue1988/aggbug/429203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2016-01-25 17:16 <a href="http://www.blogjava.net/rockblue1988/archive/2016/01/25/429203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我所了解的游戏开发相关</title><link>http://www.blogjava.net/rockblue1988/archive/2015/03/10/423328.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Mon, 09 Mar 2015 18:05:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2015/03/10/423328.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/423328.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2015/03/10/423328.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/423328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/423328.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt;">有位朋友问起，我就顺便总结一下好了。个人知识有限，有谬误欢迎指正。</span><br /><span style="font-size: 12pt;">本人一直从事的服务端相关的工作，对前端只能说是耳闻目染。</span><br /><span style="font-size: 12pt;">参与的项目主要是页游和手游。</span><br /><br /><span style="font-size: 12pt;"><em><strong>从程序开发角度讲起，程序一般常分为前端程序和后端程序。</strong></em></span><br /><br /><span style="font-size: 12pt;"><strong>一.前端</strong></span><br /><span style="font-size: 12pt;">前端就是指玩家所使用的客户端，主要包括处理UI事件和向服务端发送请求。</span><br /><span style="font-size: 12pt;">页游主流的技术有ActionScript及新兴的Unity框架，由html5和JavaScript做的小游戏也不少。</span><br /><span style="font-size: 12pt;">手游上现在比较火的框架就是cocos2d-x和Unity 3D，cocos2d-x 是开源的，Unity 对开发者收费。</span><br /><span style="font-size: 12pt;">两者都支持多平台，就是说一次开发，ios、android等平台都可以生成相应代码。</span><br /><span style="font-size: 12pt;">我自己只稍微玩过一点cocos2d-x，主要用的语言是C++，也可以跟Lua混合使用。</span><br /><span style="font-size: 12pt;">Unity平台则支持C#、Boo、JavaScript、Lua，我没玩过，不发表评论。</span><br /><span style="font-size: 12pt;">2者现在都很火，行情都还不错。</span><br /><span style="font-size: 12pt;">最近比较大的新闻，就是Unreal Engine虚幻引擎宣布开发者免费，感兴趣的可以自行google下。</span><br /><br /><span style="font-size: 12pt;"><strong>二.后端</strong></span><br /><span style="font-size: 12pt;">通常所说的后端，常指的客户端发送请求的接收和处理者。语言的选择就很多了，Java、C++、Python、PHP等等。</span><br /><span style="font-size: 12pt;">端游等对实时性能要求比较高的场合，一般会选择C++，与之相应的开发成本更高。相对来讲，手游页游选其它语言的就很多了。</span><br /><span style="font-size: 12pt;">一般根据对实时性的要求，来选择合适的通信方式，长连接或短连接，以及合适的通讯协议如http、protobuf、amf3，及自定义协议等。</span><br /><span style="font-size: 12pt;">大多数时间，你主要的工作在定义协议、写游戏逻辑然后与客户端联调。</span><br /><span style="font-size: 12pt;">另外，服务端一个重要的工作就是负责数据的存储，mysql数据库是一个很常见的选择，还有这几年兴起的各种Nosql数据库，其中尤其是redis（有人说它不是数据库），用的越来越多。</span><br /><span style="font-size: 12pt;">最后，对于日志的处理，也是至关重要的。常用到的框架有log4j以及logback。简单粗暴点的，你可以另外开线程，直接丢入数据库，精细点的可以先写log文件，然后用脚本解析，转发到日志服务器然后再存入数据库。</span><br /><span style="font-size: 12pt;">如果是放mysql数据库，记得把二进制日志关掉，不然没跑几天硬盘就爆了。</span><br /><span style="font-size: 12pt;">工作内容上，除了上述事务，经常需要你做的事情还有：</span><br /><span style="font-size: 12pt;">其一，各种游戏平台的SDK对接，页游如腾讯、360、37wan，手游如苹果官方、谷歌官方以及各种大小平台；</span><br /><span style="font-size: 12pt;">其二，制作游戏测试工具，GM命令等；</span><br /><span style="font-size: 12pt;">其三，开发供运维人员使用的WEB版本的游戏管理平台。</span><br /><span style="font-size: 12pt;">小规模的公司，你可能啥都要做，人力配置稍微宽松的公司，这些工作往往会区分开来。</span><br /><span style="font-size: 12pt;">架构上来说，大型游戏的服务端，会分成登录服、逻辑服、数据存储服、日志服、GM管理服甚至更复杂。</span><br /><span style="font-size: 12pt;">一般服务器承载量不高的情况下，单进程的登录-逻辑-数据的架构也很常见。</span><br /><br /><em><strong><span style="font-size: 12pt;">从团队结构角度讲，常见的职位分配：<br /></span><br /></strong></em><span style="font-size: 12pt;">1.策划类：主策划、关卡策划、数值策划、剧本策划</span><br /><span style="font-size: 12pt;">2.美术类：主美、UI、3D建模、动作、特效、场景、原画</span><br /><span style="font-size: 12pt;">3.程序类：后端、前端</span><br /><span style="font-size: 12pt;">4.其它：商务、运营、维护、QA</span><br /><span style="font-size: 12pt;">一个大规模团队里往往美术是最多的，现在是看脸的时代，囧RZ！好的美术都是用钱砸的。</span><br /><span style="font-size: 12pt;">小团队来说，自然就是需要各种身兼数职的牛人。</span><br /><span style="font-size: 12pt;">策划？一个就够了，</span><br /><span style="font-size: 12pt;">前端？策划也能兼，</span><br /><span style="font-size: 12pt;">后端？一个就够了</span><br /><span style="font-size: 12pt;">运维？后端也能干</span><br /><span style="font-size: 12pt;">美术？不好搞就外包吧</span><br /><span style="font-size: 12pt;">这个世界上永远不缺少一个人搞定以上所有事情的大牛。</span><br /><br /><span style="font-size: 12pt;">答博友问：我们当时的团队是，策划兼前端，共3前端，后期只剩俩了，后端，前期俩，后期只剩我一个，还有一位特效，美术外包。</span><br /><span style="font-size: 12pt;">答毕。</span><br /><br /><span style="font-size: 12pt;">该休息了<br /><br /></span><span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20.7999992370605px; color: #ff0000;">在此申明，转载&#8212;&#8212;请注明出处。</span><br style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20.7999992370605px;" /><span style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20.7999992370605px; background-color: #ffffff;">来自：</span>http://www.blogjava.net/rockblue1988/archive/2015/03/10/423328.html<span style="color: #4b4b4b; font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 13px; line-height: 20.7999992370605px; background-color: #ffffff;"><br /></span><span style="font-size: 12pt;"><br /> </span><img src ="http://www.blogjava.net/rockblue1988/aggbug/423328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2015-03-10 02:05 <a href="http://www.blogjava.net/rockblue1988/archive/2015/03/10/423328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>回顾2014</title><link>http://www.blogjava.net/rockblue1988/archive/2015/03/07/423271.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Fri, 06 Mar 2015 19:09:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2015/03/07/423271.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/423271.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2015/03/07/423271.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/423271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/423271.html</trackback:ping><description><![CDATA[现在总结，是有那么点晚了呢。<br />只是想把那些容易不经意间忘却的，大的小的、圆的扁的、重要的不重要的，都稍稍记录下来。<br /><br />这是结完婚后的第一个年头，酸甜苦辣，冷暖自知（这句我咋就能联想到鸭子呢？）。<br /><br />一.工作<br />2月份，13年开始做的页游创业项目彻底黄了，还没过年呢，尾牙都不给吃，团队就&#8220;被&#8221;滚蛋了。<br />过完年回来，花了三个礼拜找工作。<br />3月2号，最终选择到一家手游公司上班，提前转正。<br />由于种种原因，决定换工作，拿了三份Offer，其中有我职业生涯中拿到过的最高的，还是比较欣慰的，这种被人认可的感觉良好，虽然最终没选择它。<br />11月27号到了当前公司上班，目前为止，工作和交流都很funny，是个令人愉快的选择。<br /><br />二.生活<br />在魔都这地方，换租了一套有独立厨房的居室，租的房子啥都没，买了各种东西，才有那么点家的样子。<br />每天上班下班，做饭洗碗，生活也有点像个样子。<br />这一年是到影院观影次数最多的一年，这也是恋爱时候曾经憧憬的。<br />给自己买了个nokia x2的手机，可是不到一个月就碎屏了，渣渣伤不起。<br />小舅子来到，带他走向了码农的不归路。<br /><br />三.技能<br />1.厨艺<br />研究尝试了很多没做过的菜式：<br />酸菜大肠、猪肚炖蛤蜊、炖王八、蒜泥扇贝、酱汁鲍鱼、清蒸多宝鱼、清蒸鲈鱼、肉末蒸蛋、土豆炖牛腩、<br />啤酒炖羊肉、香卤牛筋、清蒸猪舌头、酸菜鱼头、土豆色拉、西式牛排、香煎鳕鱼，还做了第一份自制双皮奶。<br />这里一点要说说，一个智能电压力锅实在是太值得入手了，煮饭炖汤焖肉都用的上，最重要的是有预约功能，晚上下好米，早上起来就能吃稀饭了。<br />2.篮球<br />周六无安排的话，坚持到上海大学打篮球，虐与被虐之间，技术还是有所进步的。值得一提的事，公司内部比赛，也算是第一次正式上了场，蛮开心。<br />3.吉他<br />没进步，只剩下随便吼吼的技能，走入社会越久，越哑。这个技能的好处是，年会总有机会上台去释放下闷骚的青春，顺带还能带点小礼品下来。<br />4.电子琴<br />主要练熟了两首曲子：《菊次郎的夏天》和《梦中的婚礼》，完成了大学时的小心愿。《克罗地亚狂想曲》挑战失败，最近电子琴已摆烂。<br />5.驾照<br />魔都4月份报名，7500，模拟考什么的花了500左右，每次练车都AA请教练吃饭，加上请假考试，总成本10000左右，好在一次性过----说实话，没上过几回车，教练素质一般，考科三中间三个月停练，呆车上的时间也绝对没达标 ----&nbsp;全国的驾校都这样吗？都TM没人管了？<br />6.代码能力<br />对于Linux下的操作更加熟练，shell脚本编写，组织SQL的能力有所提高。<br />在不同的公司，读到不同风格的代码，隐约觉得内功有所提升----别的不说，抄代码能力那是肯定增长了。<br />作为一个半路出家的程序员，补了《C++ primer》和《C程序设计语言》两本心法，眼界稍稍增长，至少不会被&#8220;java程序员不晓得指针是啥&#8221;这类的说辞给躺枪。<br />主要的吃饭家伙----Java方面，我再&#8220;三&#8221;次尝试了《Java并发编程实践》这本书，比最初多懂得一点。<br />比较用得上的一本书是《Java程序性能优化》，在大牛眼中这书可能比较浅显，但里面的东西确实比其它一些大部头里说的简洁一些，挺多地方一般面试也常问到。<br />《Java性能优化权威指南》就是前者的加强版，干货不少，字太多没坚持读完。<br />项目中用上了redis，涨了点姿势。<br />比较实用的新技能：Lua算是比较熟练了，可以拿来换饭钱。<br /><br />四.开心的事<br />1.年会上中了三等奖<br />2.论坛上抽中一个机械键盘<br /><br />五.最重要的事<br />两口之家即将变成三口之家了，希望一切顺顺利利、平平安安！<br /><br />六.2015的目标<br />年底再揭晓<br /><br />祝观文的诸位码友三羊开泰，心想事成！<br />PS：没多少内容的一篇随笔，竟然花了近两个小时，必须对产出高质量博文的博主们表达一下由衷的敬佩<img src ="http://www.blogjava.net/rockblue1988/aggbug/423271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2015-03-07 03:09 <a href="http://www.blogjava.net/rockblue1988/archive/2015/03/07/423271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LUA 面向对象编程中的一个坑</title><link>http://www.blogjava.net/rockblue1988/archive/2014/12/29/421910.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Mon, 29 Dec 2014 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/12/29/421910.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/421910.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/12/29/421910.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/421910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/421910.html</trackback:ping><description><![CDATA[最近的工作主要涉及LUA，这有个坑必须记一下。<br />
下面是一个LUA面向对象写法非常常见的写法。<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 />
-->Bird&nbsp;=&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;color&nbsp;=&nbsp;{};canFly&nbsp;=&nbsp;<span style="color: #0000FF; ">true</span><br />
}<br />
<br />
function&nbsp;Bird:<span style="color: #0000FF; ">new</span>(o)<br />
&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;=&nbsp;o&nbsp;or&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;&nbsp;setmetatable(o,&nbsp;self)<br />
&nbsp;&nbsp;&nbsp;&nbsp;self.__index&nbsp;=&nbsp;self<br />
&nbsp;&nbsp;&nbsp;&nbsp;self.color&nbsp;=&nbsp;{}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;o<br />
end</div>
注意，这里Bird类有两个属性，1个表，1个是基本类型，然后上测试代码（Utils类只是简单的封装类，可以自己实现一个）<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 />
-->&nbsp; &nbsp; &nbsp; &nbsp; local&nbsp;A&nbsp;=&nbsp;Bird:<span style="color: #0000FF; ">new</span>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("------------------------------原始值-----------------------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("Bird&nbsp;canFly:"&nbsp;..&nbsp;StringUtils.boolean2string(A.canFly));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("Bird&nbsp;color:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonUtils.printTable(Bird.color)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("a&nbsp;canFly:"&nbsp;..&nbsp;StringUtils.boolean2string(A.canFly));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("a&nbsp;color:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonUtils.printTable(A.color)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--改变A的属性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.canFly&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.color[1]&nbsp;=&nbsp;"red"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.color[2]&nbsp;=&nbsp;"blue"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A.color[3]&nbsp;=&nbsp;"green"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("------------------------------A改变后----------------------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("Bird&nbsp;canFly:"&nbsp;..&nbsp;StringUtils.boolean2string(Bird.canFly));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("Bird&nbsp;color:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonUtils.printTable(Bird.color)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("A&nbsp;canFly&nbsp;after&nbsp;change:"&nbsp;..&nbsp;StringUtils.boolean2string(A.canFly));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("A&nbsp;color&nbsp;after&nbsp;chagne:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonUtils.printTable(A.color)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("-------------------------------B的值----------------------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local&nbsp;B&nbsp;=&nbsp;Bird:<span style="color: #0000FF; ">new</span>()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("B&nbsp;canFly:"&nbsp;..&nbsp;StringUtils.boolean2string(B.canFly));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoggerUtils:debug("B&nbsp;color:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommonUtils.printTable(B.color)</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 />-->2014-12-29&nbsp;11:20:40,690&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;------------------------------原始值-----------------------------------<br />2014-12-29&nbsp;11:20:40,690&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;color:<br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;a&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;a&nbsp;color:<br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;------------------------------A改变后----------------------------------<br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:20:40,691&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;color:<br />2014-12-29&nbsp;11:20:40,692&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;1:red<br />2014-12-29&nbsp;11:20:40,692&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;2:blue<br />2014-12-29&nbsp;11:20:40,692&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;3:green<br />2014-12-29&nbsp;11:20:40,692&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;A&nbsp;canFly&nbsp;after&nbsp;change:<span style="color: #0000FF; ">false</span><br />2014-12-29&nbsp;11:20:40,692&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;A&nbsp;color&nbsp;after&nbsp;chagne:<br />2014-12-29&nbsp;11:20:40,693&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;1:red<br />2014-12-29&nbsp;11:20:40,693&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;2:blue<br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;3:green<br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;-------------------------------B的值----------------------------------<br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;B&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;B&nbsp;color:<br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;1:red<br />2014-12-29&nbsp;11:20:40,695&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;2:blue<br />2014-12-29&nbsp;11:20:40,696&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;3:green</div>发现神马问题了吗？<br />当A的类型为表的属性color改变时，原始类的color属性也改变了，同时这个改变也影响到新建的B，而类型为基本类型的属性canFly就没有这个问题。<br />我的解决方法是新增一个set方法：<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />-->function&nbsp;Bird:setColor(color)<br />&nbsp;&nbsp;&nbsp;&nbsp;self.color&nbsp;=&nbsp;color<br />end</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 />-->local&nbsp;color&nbsp;={}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color[1]&nbsp;=&nbsp;"red"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color[2]&nbsp;=&nbsp;"blue"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color[3]&nbsp;=&nbsp;"green"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A:setColor(color)</div>输出结果：<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 />-->2014-12-29&nbsp;11:31:58,648&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;------------------------------原始值-----------------------------------<br />2014-12-29&nbsp;11:31:58,648&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:31:58,649&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;color:<br />2014-12-29&nbsp;11:31:58,649&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;a&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:31:58,649&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;a&nbsp;color:<br />2014-12-29&nbsp;11:31:58,649&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;------------------------------A改变后----------------------------------<br />2014-12-29&nbsp;11:31:58,649&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;Bird&nbsp;color:<br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;A&nbsp;canFly&nbsp;after&nbsp;change:<span style="color: #0000FF; ">false</span><br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;A&nbsp;color&nbsp;after&nbsp;chagne:<br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;1:red<br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;2:blue<br />2014-12-29&nbsp;11:31:58,650&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;3:green<br />2014-12-29&nbsp;11:31:58,651&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;-------------------------------B的值----------------------------------<br />2014-12-29&nbsp;11:31:58,651&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;B&nbsp;canFly:<span style="color: #0000FF; ">true</span><br />2014-12-29&nbsp;11:31:58,653&nbsp;[main]&nbsp;DEBUG&nbsp;server.app.game.util.LoggerUtils:34&nbsp;-&nbsp;LUA:&nbsp;B&nbsp;color:</div>另外同事一个解决方法更简单，直接修改new()方法，其它的地方都不用改：<br /><div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />-->function&nbsp;Bird:<span style="color: #0000FF; ">new</span>(o)<br />&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;=&nbsp;o&nbsp;or&nbsp;{}<br />&nbsp;&nbsp;&nbsp;&nbsp;setmetatable(o,&nbsp;self)<br />&nbsp;&nbsp;&nbsp;&nbsp;self.__index&nbsp;=&nbsp;self<br />&nbsp;&nbsp;&nbsp;<span style="background-color: yellow;">&nbsp;o.color&nbsp;</span><span style="background-color: yellow;">=</span><span style="background-color: yellow;">&nbsp;{}&nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;o<br />end</div>这个问题基本上网上的示例貌似都没提到，我读的书里也没有，实际调试过程中才发现的，会造成新创建的类里会有不该有的属性，比较蛋疼。<br />具体原因不了解，有木有筒子指教一下？顺便问问这两种方法哪种更好？<img src ="http://www.blogjava.net/rockblue1988/aggbug/421910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-12-29 11:42 <a href="http://www.blogjava.net/rockblue1988/archive/2014/12/29/421910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux(centOS6.5)下SVN的安装、配置及开机启动</title><link>http://www.blogjava.net/rockblue1988/archive/2014/11/19/420246.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Wed, 19 Nov 2014 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/11/19/420246.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/420246.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/11/19/420246.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/420246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/420246.html</trackback:ping><description><![CDATA[作为一名&#8220;万能&#8221;的码农，这种活儿你迟早要干的。----By Jimi没有bond<br />
<br />
准备工作：yum<br />
<br />
<span style="font-size: 14pt;"><strong>1.检查是否已安装</strong></span><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 />
-->rpm&nbsp;-qa&nbsp;subversion</div>
如果要卸载旧版本：<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 />
-->yum&nbsp;remove&nbsp;subversion</div>
<span style="font-size: 14pt;"><br /><strong>2.安装</strong></span><br />
<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 />
-->yum&nbsp;install&nbsp;subversion</div>
<div>PS:yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql（这是安装配合Apache的模块，我暂时还没做，做了再补上，你可以只装subversion，多装了也无所谓）</div>
</div>
<span style="font-size: 14pt;"><strong>3.检查是否安装成功</strong></span><br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->svnserve&nbsp;--version</div>
如果成功会输出版本号<br />
<br /><span style="font-size: 14pt;"><strong>4.创建仓库目录</strong></span><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 />
-->mkdir&nbsp;/home/svn/game</div>
<br /><strong style="font-size: 14pt;">5.创建项目</strong><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 />
-->svnadmin&nbsp;create&nbsp;/home/svn/game</div>
<br /><span style="font-size: 14pt;"><strong>6.检查是否创建成功</strong></span><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 />
-->cd&nbsp;/home/svn/game<br />
ll</div>
如果成功，game目录下会多出几个文件夹<br />
<img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/ll.jpg" width="424" height="78" alt="" /><br />
<br /><strong style="font-size: 14pt;">7.进入conf目录会看到3个配置文件，生成的文件中都有英文注释说明</strong><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 />
-->策划组：开策划、美术读写<br />
后端组：开后端读写，策划只读<br />
前端组：开前端读写，策划、美术只读<br />
美术组：开美术读写，策划只读<br />
管理员组：所有的读写</div>
authz:用户权限配置<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 />
-->[groups]<br />
#管理组<br />
manager&nbsp;=&nbsp;boss<br />
#服务端用户组<br />
server&nbsp;=&nbsp;server1,server2<br />
#客户端用户组<br />
client&nbsp;=&nbsp;client1,client2<br />
#美术组<br />
art&nbsp;=&nbsp;art1,art2<br />
#策划组<br />
design=design1,design2<br />
[game:/]<br />@manager=rw<br />
[game:/server]<br />
@server=rw<br />
[game:/client]<br />
@client=rw<br />
@design=r<br />
@art=r<br />
[game:/art]<br />
@design=rw<br />
@art=rw<br />
@client=r<br />
[game:/design]<br />
@design=rw<br />
@server=r<br />
@client=r<br />
@art=r</div>
passwd:用户密码<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 />
-->[users]<br />
boss=123456<br />
server1=123456<br />
server2=123456<br />
client1=123456<br />
client2=123456<br />
art1=123456<br />
art2=123456<br />
design1=123456<br />
design2=123456</div>
svnserve.conf:<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 />
-->#匿名访问者权限<br />
anon-access&nbsp;=&nbsp;none<br />
#验证用户权限<br />
auth-access&nbsp;=&nbsp;write<br />
#密码文件地址<br />
password-db&nbsp;=&nbsp;/home/svn/game/passwd<br />
#权限文件地址<br />
authz-db&nbsp;=&nbsp;/home/svn/game/authz<br />
#项目名称（UUID）<br />
realm&nbsp;=game<br />
<br />
</div>
<br /><strong style="font-size: 14pt;">8.开放svn端口</strong><br />
默认是3690端口，你也可以用别的。已开启的跳过这一步<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->修改<br />
iptables&nbsp;-I&nbsp;INPUT&nbsp;-p&nbsp;tcp&nbsp;--dport&nbsp;3690&nbsp;-j&nbsp;ACCEPT<br />
保存<br />
/etc/rc.d/init.d/iptables&nbsp;save<br />
重启<br />
service&nbsp;iptables&nbsp;restart<br />
查看<br />
/etc/init.d/iptables&nbsp;status</div>
<br /><strong>
</strong><strong style="font-size: 14pt;">9.启动SVN服务</strong><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 />
-->svnserve&nbsp;-d&nbsp;-r&nbsp;/home/svn</div>
-d:守护进程<br />
-r:svn根目录<br />
假设服务端IP为192.168.1.100，那么如下设置后game的访问目录就为：<br />
<div>svn://192.168.1.100/game<br />
</div>
<br /><strong><span style="font-size: 14pt;">10.安装客户端&nbsp;</span><span style="color: #333333; font-family: arial; font-size: 13px; line-height: 20.0200004577637px; background-color: #ffffff;"></span></strong><a href="http://tortoisesvn.net/downloads.html"><strong><span style="color: #333333; font-family: arial; font-size: 14pt; line-height: 20.0200004577637px; background-color: #ffffff;">Tortoise</span><span style="color: #cc0000; font-family: arial; font-size: 14pt; line-height: 20.0200004577637px; background-color: #ffffff;">SVN</span></strong><span style="color: #cc0000; font-family: arial; font-size: 13px; line-height: 20.0200004577637px; background-color: #ffffff;"><br />
</span></a><span style="color: #cc0000; font-family: arial; font-size: 13px; line-height: 20.0200004577637px; background-color: #ffffff;"><br />
</span>
<div><strong style="font-size: 14pt;">11.建立子目录</strong><br />
在客户端PC上找个目录，用管理员帐户从svn://192.168.1.100/game迁出game目录，分别新建art,design,server,client 4个子目录，然后提交。<br />
这时候你可以用其他组的帐户测试下是否正常使用了。<br />
<br /><strong>
</strong><strong style="font-size: 14pt;">12.安装好的svn服务端，默认是不会开机自启动的，每次开机自己启动会很麻烦，我们可以把它设成开机启动</strong><br />
首先：编写一个启动脚本svn_startup.sh，我放在/root/svn_startup.sh<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 />
-->#!/bin/bash<br />
/usr/bin/svnserve&nbsp;-d&nbsp;-r&nbsp;/home/svn/</div>
这里的svnserve路径保险起见，最好写绝对路径，因为启动的时候，环境变量也许没加载。<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 />
-->which&nbsp;svnserve</div>
</div>
这里还有可能碰到一个问题，如果你在windows下建立和编写的脚步，拿到linux下，用vi或者vim修改后可能会无法执行，这是文件格式的问题<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 />
-->vi&nbsp;svn_startup.sh<br />
<br />
输入：set&nbsp;ff&nbsp;回车<br />
<br />
如果显示的结果不是fileformat=unix<br />
<br />
再次输入<br />
<br />
set&nbsp;ff=unix<br />
<br />
就OK了</div>
然后修改该脚本的执行权限<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->chmod&nbsp;ug+x&nbsp;svn_startup.sh<br />
<br />
或者万能的<br />
<br />
chmod&nbsp;777&nbsp;svn_startup.sh</div>
最后：加入自动运行<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">vi&nbsp;/etc/rc.d/rc.local<br />
在末尾添加脚本的路径，如：<br />
/root/svn_startup.sh</div>
现在，你可以重启一下试试了。
不懂得怎么确认成功？败给你了<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->ps&nbsp;-ef|grep&nbsp;svnserve</div>
好多活儿<img src ="http://www.blogjava.net/rockblue1988/aggbug/420246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-11-19 11:50 <a href="http://www.blogjava.net/rockblue1988/archive/2014/11/19/420246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IntelliJ IDEA 使用心得与常用快捷键</title><link>http://www.blogjava.net/rockblue1988/archive/2014/10/24/418994.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Fri, 24 Oct 2014 04:49:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/10/24/418994.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/418994.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/10/24/418994.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/418994.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/418994.html</trackback:ping><description><![CDATA[那种酸爽，根本说不出来&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; by: Jimi没有<span style="color: #333333; font-family: arial, 宋体, sans-serif; line-height: 24px; text-indent: 28px; background-color: #ffffff;">Bond<br /></span>Jimi是谁？ 就是洒家啊！<br /><br />刚开始学习写Java的时候，用的eclipse，正式工作后，主要用的myeclipse，去年初在前辈的推荐下，在2折的时候买了正版的 IntelliJ IDEA 和 Pycharm，12.0版终生使用，一年更新。<br />使用前早就久闻其名，据说是最好的Java开发工具。<br />起先用的非常不习惯，但是花了钱的，硬着头皮用了下去。<br />短短一个礼拜，彻底爱上了它！就是辣么酸爽！--------------------------------------------------------------谨以此文献给对于拥抱IDEA还存在疑虑的筒子们<br /><br />JetBrains（这个公司的名称翻译过来就是&#8220;大脑喷射？&#8221;） 公司的宣传语是这么说的：Develop with pleasure！（带着快乐开发！）<br /><br />Why?<br />他们咋这么有信心呢？<br />这到底是怎样的一个工具？<br /><br />跟我一起来数数IDEA特别长的地方：<br /><br /><span style="font-size: 14pt;">一.黑色主题 Darcula</span><br /><br />眼睛舒服，最重要的是酷！<br />设置方式：FILE--Settings--Edit--Colors&amp;Fonts--Scheme name<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/idea.jpg" width="1439" height="846" alt="" /><br /><br /><span style="font-size: 14pt;">二.智能提示</span><br /><br />创建或引入项目的时候，会自动引入缺少的包，真找不着的还可以search in the net<br />键入代码的时候，区分大小写的智能提示，自动引入包，如果有重名的会列出所有选择，但是比 myeclipse 的更聪明，至于怎么个聪明法，你自个儿试试就知道了<br /><br /><span style="font-size: 14pt;">三.工具集成</span><br /><br />基本上正式开发的常用工具基本都集成了，而且基本都在你非常容易触到的位置。<br />说说我比较常用的：<br /><br />1.ant <br />你懂的<br /><br />2.maven<br />你也懂的<br /><br />3.SVN<br />相比之下，IDEA的SVN的提交提供了更多的选项和功能<br />提交的界面两侧会显示当前文件和修改的部分对比，可以非常方便地检查和修改文件。<br />提交前：<br />(1).可选择自动格式化<br />(2).可选择自动忽略没有使用的imports<br />(3).可选择分析代码<br />(4).检查是否有TODO<br />提交后甚至可以选择将改变上传到特定的目录<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/sub.jpg" width="252" height="382" alt="" /><br /><br />4.系统终端<br />有了这个东西，你就不必频繁地切换窗口了<br />打开方式：Tools--Open Terminal<br />快捷键：Alt+F12<br /><br />5.SSH工具<br />打开方式：Tools--Start SSH session<br /><br />6.数据库连接工具<br />打开方式：View--Tool Windows--Database<br /><br />7.IDEA talk<br />神奇的东西，你可以联系局域网内其它的IDEA使用者，可以方便地把你的代码show给你的同事<br />打开方式：View--Tool Windows--IDEA talk<br /><br />8.Changes<br />非常方便的changes视图，它会变色显示你所有改动过的文件，而且可以方便的与 本地历史 或 线上历史 做对比<br />打开方式：View--Tool Windows--Changes<br /><br />还有git、github、cvs、groovy consle以及等等，真没有的你还可以：<br />FILE--Settings--Plugins<br /><br /><span style="font-size: 14pt;">四.强大的绘图工具</span><br /><br />读源码看不懂项目结构？写文章画类图好麻烦？<br />右键diagram帮助你<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/diagram.png" width="294" height="435" alt="" /><br />上个例图：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/player.png" width="485" height="387" alt="" /><br />右键选择 Show Categories 有惊喜，什么值域、方法、构造器、内部类统统有<br /><br /><span style="font-size: 14pt;">五.无缝接入eclipse和myeclipse</span><br /><br />IDEA可以直接打开有.project文件的项目，也可以将自身项目导出成eclipse的项目。<br />而且因为IDEA的项目配置文件为1个.iml文件加一个独立文件夹.idea，<br />所以只要你将两者放入ignore目录，即使在你个人使用IDEA而团队使用其他IDE的情况下，也并不会对其他人造成麻烦。<br /><br />导出方法：FILE--Export to eclipse<br /><br /><span style="font-size: 14pt;">六.更小的体积，更快的速度</span><br /><br />用过myeclipse的你明白的<br /><br />综上，我想你应该能够明白，为啥用IDEA写代码，就是那么愉快，就是那么酸爽，就是那么令人停不下来！<br /><br /><br />接着分享开发中我比较常用的一些快捷键：<br /><br /><span style="font-size: 14pt;">一.找文件找代码找引用相关</span><br /><br />1.双击shift <br />&nbsp;在项目的所有目录查找，就是你想看到你不想看到的和你没想过你能看到的都给你找出来<br /><br />2.ctrl+f <br />当前文件查找特定内容<br /><br />3.ctrl+shift+f<br /> 当前项目查找包含特定内容的文件<br /><br />4.ctrl+n <br />查找类<br /><br />5.ctrl+shift+n<br /> 查找文件<br /><br />6.ctrl+e <br />最近的文件<br /><br />7.alt+F7<br />非常非常频繁使用的一个快捷键，可以帮你找到你的函数或者变量或者类的所有引用到的地方<br /><br /><span style="font-size: 14pt;">二.编辑相关</span><br /><br />1.shift+enter<br />另起一行<br /><br />2.ctrl+r<br />当前文件替换特定内容<br /><br />3.ctrl+shift+r<br />当前项目替换特定内容<br /><br />4.shift+F6<br />非常非常省心省力的一个快捷键，可以重命名你的类、方法、变量等等，而且这个重命名甚至可以选择替换掉注释中的内容<br /><br />5.ctrl+d<br />复制当前行到下一行<br /><br />6.ctrl+x<br />剪切当前行<br /><br />7.ctrl+c \ ctrl+v&nbsp;<br />大家都懂的<br /><br />8.ctrl+z<br />撤销<br /><br />9.ctrl+shift+z<br />取消撤销<br /><br />10.ctrl+k<br />提交代码到SVN<br /><br />11.ctrl+t<br />更新代码<br /><br />12.alt+insert<br />非常非常以及相当方便的一个组合键，不信您往下看<br />在类中使用：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/insert.png" width="225" height="258" alt="" /><br /><br />可以自动生成构造器、getter/setter等等常用方法<br />在项目目录上使用：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/insert2.png" width="183" height="370" alt="" /><br /><br />可用于新建各种文件。<br /><br />13.alt+enter<br />又是一个大杀器，有多杀？<br />例1：<br />发现代码很&#8220;黄&#8221;怎么办？<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/yellow.png" alt="" /><br />鼠标移上去喵一下：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/yellow2.png" alt="" /><br />试试alt+enter：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/yellow3.png" width="249" height="147" alt="" /><br />选择simplify看看<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/yellow4.png" alt="" /><br />我勒个去，代码简洁了有木有啊！<br /><br />PS:黄色警告编译可以通过，不影响程序的正常运行，一般都是一些对于代码优化的建议，我遇到过的有：<br />(1).can be simplify<br />代码可以简化<br />(2).Variable is never use<br />声明的变量从未被使用<br />(3)unnecessary boxing<br />不必要的声明包装<br /><br />以及等等等，多留意下，对于编码的某些细节能够更了解。<br /><br />例2：<br />写个类实现某个接口，加上 implements Runnable 后你就会发现这条红色的波浪线：<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/error.png" width="325" height="28" alt="" /><br />咱试试在这行上来个 alt+enter:<br /><img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/enter.png" width="176" height="165" alt="" /><br />感动地哭了有木有？你想到的没想到的IDEA都帮你想到了。<br />看到代码里提示的各种红XX，就试试alt+enter吧！什么未抛异常啊没有try catch啊都能搞得定。<br /><br />14.ctrl+alt+L<br /><br />自动格式化代码，我已经养成了写完代码就来一发的习惯。<br />你可以个性化设置你自己的代码风格：File--<span style="font-family: georgia, verdana, Arial, helvetica, sans-seriff; font-size: 12px; line-height: 26px; background-color: #ffffff;">Settings--CodeStyle<br /></span><br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;切&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;切&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;切&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;切&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;切&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br /><br />凡事有利有弊，IDEA同样是把双刃剑，最后说说它不好的地方<br /><br />1.最重要的就是&#8220;贵&#8221;！<br />专业版个人许可2折可以接受，5折小贵，不打折桑不起！！！囧RZ～<br />美刀的消费水准令国内大多在屌丝线上挣扎的猿类们望而却步。<br />好在JetBrains是有社区版的，最近对于学生也有免费的Key。<br />对于使用破解版的小伙伴，建议自己用用就好了，不必太声张。<br /><br />用户养成良好的软件付费习惯，才能让我们的工作变得越来越有价值。<br /><br />2.集成太完善了<br />集成的工具完全能够应付大多数的工作需求，对于不求甚解又偷懒的筒子们，直接使用，可能很多工具的细节，你都不会了解，也不会再去了解了。<br />比如：maven,ant<br /><br />3.不自带JDK<br />不是缺点的缺点，myeclipse是集成的<br /><br /><br />差不多了，该撸代码了。<br />以上这些，就是我使用IDEA一年半来几乎所有的心得了。<br />能力有限，砖头轻拍。<br />如果你有杀伤力更强大的手段，欢迎交流。<br /><br /><span style="color: #ff0000;">后记：最近偶然发现，这篇文章被人转载了，而且没注明出处，令人蛋疼。</span><br /><span style="color: #ff0000;">在此重申下，转载，请注明出处。</span><br />来自：http://www.blogjava.net/rockblue1988/archive/2014/10/24/418994.html&nbsp;<br /><br /><br /><br /><img src ="http://www.blogjava.net/rockblue1988/aggbug/418994.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-10-24 12:49 <a href="http://www.blogjava.net/rockblue1988/archive/2014/10/24/418994.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux运维中一些常用命令（持续更新，老鸟绕路）</title><link>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418973.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Thu, 23 Oct 2014 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418973.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/418973.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418973.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/418973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/418973.html</trackback:ping><description><![CDATA[1.rm 删除<br />参数：<br />-r:递归<br />-f:强制<br /><br />2.cd 打开目录<br />cd ../ &nbsp;打开上级目录<br /><br />3.mv 移动或者重命名文件<br />重命名： mv test.txt test_old.txt<br />移动文件：mv 文件路径 新路径<br /><br />4.cp 拷贝文件或目录 参数与mv类似<br />例：cp -r folder folder2<br />sz 下载到本地<br /><br />5.sz 下载到本地<br /><br />6.rz 上传到服务器<br /><br />7.find 查找文件或者文件内容<br />查找文件中包含特定内容的行(支持通配符)：find . -name "game.log" -type f |xargs grep "hello world"&nbsp;<br /><br />8.df 查看存储状态<br /><br />9.top查看内存和CPU状态<br /><br />10.ll 列出当前目录所有文件<br /><br />11.ls列出当前目录所有文件详情<br /><br />12.chmod 777 修改文件读写权限（全可读可写）<br /><br />13.more 查看文件 按空格键向下翻页<br /><br />14.less 与more相反，用法一致<br /><br />15.sudo -i 提权<br /><br />16.netstat -nat|grep -i "9001"|wc -l &nbsp; 查看9001端口连接数<br /><br />17.history 查看历史操作<br /><br />18.last 查看历史登陆，可以看看服务器有没有陌生IP登陆<br />例：last|grep 192.168.1.1 &nbsp;查看192.168.1.1的登陆情况&nbsp;<br /><br />19.sh 执行脚本<br />例：sh restart.sh<br /><br />20.ps 查看程序快照<br />例：ps -ef|grep tomcat 查看运行中名称包含tomcat的进程<br />&nbsp; &nbsp; &nbsp; ps -aux|grep svn&nbsp;<br /><br />21.kill -9 进程号 杀死进程，常与ps命令配合使用<br />例：假设要关闭的进程号为 111<br />kill -9 111<br /><br />22.date 显示当前时间<br /><br />23.mkdir 创建目录<br /><br />24.ssh 用户名@IP地址 远程连接<br />例：ssh root@192.168.1.111<br /><br />25.tail 查看文件尾<br />例：tail -100f game.log 查看文件最后100行，持续刷新，适合在服务器上看实时日志时使用<br /><br /><br />26.head 与tail相反，用法一致<br /><br />27.vi 文本编辑<br />最基本的操作：<br />按i进入编辑模式，编辑完成后，按ESC退出编辑模式<br />输入:wq 回车后保存修改<br />输入:q! &nbsp;不保存退出<br />输入ZZ 保存退出<br /><br />28.ctrl+c 撤销或退出当前程序<br /><br />29.文件目录下，按TAB有智能提示<br /><br />30.按 &#8593; 符号，会显示使用过的命令<br /><br />31.rpm -qa 查看已安装过的程序<br />例：rpm -qa|grep subversion 查看是否已安装svn<br /><br />32.安装sz/rz命令<br />yum install lrzsz<br /><br />33.修改用户密码<br />passwd 用户名<br />例：passwd root<br /><br />34.which 查找命令所在的路径<br />例1：which ssh<br />例2：which sh<br /><br />35.查看编码方式<br />echo $LANG<br /><img src ="http://www.blogjava.net/rockblue1988/aggbug/418973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-10-23 16:52 <a href="http://www.blogjava.net/rockblue1988/archive/2014/10/23/418973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java并发学习与实践—— FutrueTask的使用示例</title><link>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418964.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Thu, 23 Oct 2014 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418964.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/418964.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/10/23/418964.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/418964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/418964.html</trackback:ping><description><![CDATA[并发模式中，有一个称做Future模式。啥是Future模式捏？ future，翻译成中文就是&#8220;未来，将来&#8221;的意思，可以简单地理解为 &#8220;明天的事明天再做&#8221; 。<br />
比方说，你在做晚饭，而只有一个火炉，先炖个猪蹄要1小时，在等待猪蹄的这个时间里，你可以去淘米、洗菜、刷牙、抠脚，待猪蹄炖好了，再继续炒菜。<br />
在编码中体现为：将耗时任务丢入单独的线程，从而使主线程能够继续执行其它的逻辑，待耗时任务执行完成后再做相应的处理。<br />
Future模式是一钟十分常用的并发模式，所以JDK的并发包中自带一套实现。上类图：<br />
<img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/b.png" width="389" height="403" alt="" /><br />
<br />
<br />
这个自己画的，既然画了不能白画，囧！！！<br />
<br />
下面这个是用&nbsp;<a data-click="{ 'F':'778317EA', 'F1':'9D73F1E4', 'F2':'4CA6DE6B', 'F3':'54E5243F', 'T':'1414043687', 'y':'763BFBFA' }" href="http://www.jetbrains.com/idea/download/" target="_blank"><span style="color: red;">IntelliJ&nbsp;</span><span style="color: red;">IDEA</span></a>&nbsp;自带工具生成的，真心太酸爽。<br />
<img src="http://www.blogjava.net/images/blogjava_net/rockblue1988/e.jpg" width="1263" height="580" alt="" /><br />
<br />
只看函数名称，也能基本了解FutureTask所提供的主要能力：<br />
1、可判断执行状态（isDone()）<br />
2、可取消（cancel()）<br />
3、可读取返回结果（get()）<br />
4、可判断是否取消（isCancelled）<br />
现在，我们可以解决上面这个猪脚的问题了：<br />
<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TestTask&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;Callable&lt;Boolean&gt;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Boolean&nbsp;call()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">模拟时间消耗</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("--------漫长的一小时--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(10000);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("--------猪脚炖完--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br />
<div style="font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 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 />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;ExecutionException,&nbsp;InterruptedException&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("--------开始做晚饭--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("开始炖猪脚～～～");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("--------猪脚下锅--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FutureTask&lt;Boolean&gt;&nbsp;futureTask&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;FutureTask&lt;Boolean&gt;(<span style="color: #0000FF; ">new</span>&nbsp;TestTask());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread&nbsp;thread&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Thread(futureTask);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thread.start();<br />
&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(1000);<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("--------淘米--------");<br />
&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(1000);<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("--------洗菜--------");<br />
&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(1000);<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("--------刷牙--------");<br />
&nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(1000);<br />
&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("--------抠脚--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">如果猪脚炖好了</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(futureTask.get()==<span style="color: #0000FF; ">true</span>){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("--------继续炒菜--------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
执行结果：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; background-color: #eeeeee;">
<div>--------开始做晚饭--------</div>
<div>开始炖猪脚～～～</div>
<div>--------猪脚下锅--------</div>
<div>--------漫长的一小时--------</div>
<div>--------淘米--------</div>
<div>--------洗菜--------</div>
<div>--------刷牙--------</div>
<div>--------抠脚--------</div>
<div>--------猪脚炖完--------</div>
<div>--------继续炒菜--------</div>
</div>
<img src ="http://www.blogjava.net/rockblue1988/aggbug/418964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-10-23 16:13 <a href="http://www.blogjava.net/rockblue1988/archive/2014/10/23/418964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>算法导论第2章：算法入门--插入排序</title><link>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410007.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Tue, 18 Feb 2014 15:23:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410007.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/410007.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/410007.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/410007.html</trackback:ping><description><![CDATA[<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>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;InsertionSortAlgorithmTest&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;String&nbsp;arrayToString(<span style="color: #0000FF; ">int</span>[]&nbsp;array){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuilder&nbsp;sb&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;StringBuilder();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(<span style="color: #0000FF; ">int</span>&nbsp;a:array){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(a).append("&nbsp;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;sb.toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;insertionSort(<span style="color: #0000FF; ">int</span>[]&nbsp;array){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;&nbsp;array.length;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;array[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;i&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(j&nbsp;&gt;=&nbsp;0&nbsp;&amp;&amp;&nbsp;array[j]&nbsp;&gt;&nbsp;key)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[j&nbsp;+&nbsp;1]&nbsp;=&nbsp;array[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;j&nbsp;-&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[j&nbsp;+&nbsp;1]&nbsp;=&nbsp;key;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(arrayToString(array));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;array;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>[]&nbsp;array&nbsp;=&nbsp;{2,&nbsp;3,&nbsp;1,&nbsp;7,&nbsp;5,&nbsp;9,&nbsp;4,&nbsp;6,&nbsp;8};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insertionSort(array);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div><img src ="http://www.blogjava.net/rockblue1988/aggbug/410007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-02-18 23:23 <a href="http://www.blogjava.net/rockblue1988/archive/2014/02/18/410007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>近期面试常见问题汇总</title><link>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410006.html</link><dc:creator>Jimi</dc:creator><author>Jimi</author><pubDate>Tue, 18 Feb 2014 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410006.html</guid><wfw:comment>http://www.blogjava.net/rockblue1988/comments/410006.html</wfw:comment><comments>http://www.blogjava.net/rockblue1988/archive/2014/02/18/410006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rockblue1988/comments/commentRss/410006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rockblue1988/services/trackbacks/410006.html</trackback:ping><description><![CDATA[1.说说ArrayList、Vector、LinkedList的区别<br />2.HashMap的实现原理<br />3.HashMap出现哈希冲突是如何处理的<br />4.观察者模式的定义和实现<br />5.单例模式的定义和实现<br />6.spring的事务如何配置<br />7.什么是AOP？<br />8.写一个永不停止的线程<br />9.mysql的优化<br />10.如何查找性能瓶颈<br />11.请自我介绍<br />12.netty 3 和 netty 4的区别<br />13.ArrayBlockingQueue和LinkedBlockingQueue的区别<br />14.缓存的实现方式<br />15.什么时候会GC？<br />16.内存回收模型<br />17.spring配置事务<br />18.Mysql的事务处理<br />19.ant自动上传服务器<img src ="http://www.blogjava.net/rockblue1988/aggbug/410006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rockblue1988/" target="_blank">Jimi</a> 2014-02-18 23:18 <a href="http://www.blogjava.net/rockblue1988/archive/2014/02/18/410006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>