<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    碼農往事
    我的代碼為什么這么丑?一定是因為我長的不好看
    posts - 29,comments - 86,trackbacks - 0
    說有一個屋里有多個桌子,有多個人? 如果3個人一桌,多2個人。 如果5個人一桌,多4個人。 如果7個人一桌,多6個人。 如果9個人一桌,多8個人。 如果11個人一桌,正好。 請問這屋里多少人?
    最近比較閑,逛論壇看到隨手做了.
    最小答案是
    代碼如下:
        public static void main(String[] args) {
            for (int i = 0; i < Integer.MAX_VALUE; i++) {
                long value = i * 11;
                if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
                    System.out.println("i:" + i + ",value:" + value);
                    break;
                }
            }
        }
    計算出來的結果是:i:229,value:2519
    轉念一想,結果可能不止一個,于是換個寫法:
        public static void main(String[] args) {
            int count = 0;
            long value;
            long valueMax = 0;
            long iMax = 0;
            long pram = 11;
            for (int i = 0; i < Integer.MAX_VALUE; i++) {
                value = i * pram;
                if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
                    count++;
                    if (iMax < i) {
                        iMax = i;
                    }
                    if (valueMax < value) {
                        valueMax = value;
                    }
                }
            }
            System.out.println("count:" + count);
            System.out.println("iMax:" + iMax);
            System.out.println("valueMax:" + valueMax);
        }
    當i在Integer.MAX_VALUE范圍內的計算結果:
    count:6817408
    iMax:2147483434
    valueMax:23622317774
    這邊遇到了一個問題,當代碼中的pram聲明為int類型時計算的結果會與聲明為long類型發生極大偏差,貌似是因為Java乘法對于int類型越界處理的問題,具體原因待查.
    如果你用如下代碼執行:
     int count = 0;
            for (int i = 0; i < Integer.MAX_VALUE; i++) {
                long value = i * 11;
                if (value % 3 == 2 && value % 5 == 4 && value % 7 == 6 && value % 9 == 8) {
                    System.out.println("i:" + i + ",value:" + value);
                    count++;
                }
            }
            System.out.println("count:" + count);
    最后數行看到的結果是這樣:
    i:2147475704,value:2147396264
    i:2147476019,value:2147399729
    i:2147476334,value:2147403194
    i:2147476649,value:2147406659
    i:2147476964,value:2147410124
    i:2147477279,value:2147413589
    i:2147477594,value:2147417054
    i:2147477909,value:2147420519
    i:2147478224,value:2147423984
    i:2147478539,value:2147427449
    i:2147478854,value:2147430914
    i:2147479169,value:2147434379
    i:2147479484,value:2147437844
    i:2147479799,value:2147441309
    i:2147480114,value:2147444774
    i:2147480429,value:2147448239
    i:2147480744,value:2147451704
    i:2147481059,value:2147455169
    i:2147481374,value:2147458634
    i:2147481689,value:2147462099
    i:2147482004,value:2147465564
    i:2147482319,value:2147469029
    i:2147482634,value:2147472494
    i:2147482949,value:2147475959
    i:2147483264,value:2147479424
    i:2147483579,value:2147482889
    count:3718586
    問題產生的原因應該是Java對于int的乘法結果大于上限的情況,自動截取了前10位.
    -----------------------------------------------------------------------------------------------------------------之前的理解不正確.

    根據Java的基礎類型的變窄轉換(Narrowing primitive conversion)規則,對于運算結果超出int范圍的,將超出部分全部丟棄,只保留低32位的.
    posted @ 2016-01-25 17:16 Jimi 閱讀(3412) | 評論 (0)編輯 收藏
    有位朋友問起,我就順便總結一下好了。個人知識有限,有謬誤歡迎指正。
    本人一直從事的服務端相關的工作,對前端只能說是耳聞目染。
    參與的項目主要是頁游和手游。

    從程序開發角度講起,程序一般常分為前端程序和后端程序。

    一.前端
    前端就是指玩家所使用的客戶端,主要包括處理UI事件和向服務端發送請求。
    頁游主流的技術有ActionScript及新興的Unity框架,由html5和JavaScript做的小游戲也不少。
    手游上現在比較火的框架就是cocos2d-x和Unity 3D,cocos2d-x 是開源的,Unity 對開發者收費。
    兩者都支持多平臺,就是說一次開發,ios、android等平臺都可以生成相應代碼。
    我自己只稍微玩過一點cocos2d-x,主要用的語言是C++,也可以跟Lua混合使用。
    Unity平臺則支持C#、Boo、JavaScript、Lua,我沒玩過,不發表評論。
    2者現在都很火,行情都還不錯。
    最近比較大的新聞,就是Unreal Engine虛幻引擎宣布開發者免費,感興趣的可以自行google下。

    二.后端
    通常所說的后端,常指的客戶端發送請求的接收和處理者。語言的選擇就很多了,Java、C++、Python、PHP等等。
    端游等對實時性能要求比較高的場合,一般會選擇C++,與之相應的開發成本更高。相對來講,手游頁游選其它語言的就很多了。
    一般根據對實時性的要求,來選擇合適的通信方式,長連接或短連接,以及合適的通訊協議如http、protobuf、amf3,及自定義協議等。
    大多數時間,你主要的工作在定義協議、寫游戲邏輯然后與客戶端聯調。
    另外,服務端一個重要的工作就是負責數據的存儲,mysql數據庫是一個很常見的選擇,還有這幾年興起的各種Nosql數據庫,其中尤其是redis(有人說它不是數據庫),用的越來越多。
    最后,對于日志的處理,也是至關重要的。常用到的框架有log4j以及logback。簡單粗暴點的,你可以另外開線程,直接丟入數據庫,精細點的可以先寫log文件,然后用腳本解析,轉發到日志服務器然后再存入數據庫。
    如果是放mysql數據庫,記得把二進制日志關掉,不然沒跑幾天硬盤就爆了。
    工作內容上,除了上述事務,經常需要你做的事情還有:
    其一,各種游戲平臺的SDK對接,頁游如騰訊、360、37wan,手游如蘋果官方、谷歌官方以及各種大小平臺;
    其二,制作游戲測試工具,GM命令等;
    其三,開發供運維人員使用的WEB版本的游戲管理平臺。
    小規模的公司,你可能啥都要做,人力配置稍微寬松的公司,這些工作往往會區分開來。
    架構上來說,大型游戲的服務端,會分成登錄服、邏輯服、數據存儲服、日志服、GM管理服甚至更復雜。
    一般服務器承載量不高的情況下,單進程的登錄-邏輯-數據的架構也很常見。

    從團隊結構角度講,常見的職位分配:

    1.策劃類:主策劃、關卡策劃、數值策劃、劇本策劃
    2.美術類:主美、UI、3D建模、動作、特效、場景、原畫
    3.程序類:后端、前端
    4.其它:商務、運營、維護、QA
    一個大規模團隊里往往美術是最多的,現在是看臉的時代,囧RZ!好的美術都是用錢砸的。
    小團隊來說,自然就是需要各種身兼數職的牛人。
    策劃?一個就夠了,
    前端?策劃也能兼,
    后端?一個就夠了
    運維?后端也能干
    美術?不好搞就外包吧
    這個世界上永遠不缺少一個人搞定以上所有事情的大牛。

    答博友問:我們當時的團隊是,策劃兼前端,共3前端,后期只剩倆了,后端,前期倆,后期只剩我一個,還有一位特效,美術外包。
    答畢。

    該休息了

    在此申明,轉載——請注明出處。
    來自:http://m.tkk7.com/rockblue1988/archive/2015/03/10/423328.html

    posted @ 2015-03-10 02:05 Jimi 閱讀(4175) | 評論 (3)編輯 收藏
    主站蜘蛛池模板: 亚洲熟女www一区二区三区| 乱人伦中文视频在线观看免费| 亚洲麻豆精品果冻传媒| 99精品全国免费观看视频..| 国产成人亚洲综合无码| 国产亚洲精品成人久久网站| 成人免费视频网址| 亚洲日韩精品无码专区加勒比 | 久爱免费观看在线网站| 亚洲国产精品无码久久久蜜芽| 亚洲国产成人资源在线软件 | 亚洲精品成人在线| 特级aa**毛片免费观看| 久久久精品国产亚洲成人满18免费网站| 亚洲精品一区二区三区四区乱码| xxxxwww免费| 亚洲AV日韩AV永久无码下载| 2019中文字幕免费电影在线播放| 亚洲桃色AV无码| jizz免费在线影视观看网站| 黄网站色在线视频免费观看| 亚洲伦理中文字幕| 午夜毛片不卡免费观看视频| 黄色a级片免费看| 人人狠狠综合久久亚洲婷婷| 91网站免费观看| 日韩亚洲翔田千里在线| 成年18网站免费视频网站 | 亚洲黄片手机免费观看| 亚洲AV永久无码精品成人| igao激情在线视频免费| 国产日韩亚洲大尺度高清| 成年大片免费视频播放一级| 亚洲国产精品无码专区影院| av无码久久久久不卡免费网站| 朝桐光亚洲专区在线中文字幕 | AV在线亚洲男人的天堂| 日本视频在线观看永久免费| 亚洲私人无码综合久久网| 国产AV无码专区亚洲AV漫画| 国产精品美女久久久免费 |