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

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

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

    碼農(nóng)往事
    我的代碼為什么這么丑?一定是因為我長的不好看
    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;
                }
            }
        }
    計算出來的結(jié)果是:i:229,value:2519
    轉(zhuǎn)念一想,結(jié)果可能不止一個,于是換個寫法:
        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范圍內(nèi)的計算結(jié)果:
    count:6817408
    iMax:2147483434
    valueMax:23622317774
    這邊遇到了一個問題,當代碼中的pram聲明為int類型時計算的結(jié)果會與聲明為long類型發(fā)生極大偏差,貌似是因為Java乘法對于int類型越界處理的問題,具體原因待查.
    如果你用如下代碼執(zhí)行:
     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);
    最后數(shù)行看到的結(jié)果是這樣:
    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
    問題產(chǎn)生的原因應(yīng)該是Java對于int的乘法結(jié)果大于上限的情況,自動截取了前10位.
    -----------------------------------------------------------------------------------------------------------------之前的理解不正確.

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

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

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

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

    從團隊結(jié)構(gòu)角度講,常見的職位分配:

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

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

    該休息了

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

    posted @ 2015-03-10 02:05 Jimi 閱讀(4175) | 評論 (3)編輯 收藏
    現(xiàn)在總結(jié),是有那么點晚了呢。
    只是想把那些容易不經(jīng)意間忘卻的,大的小的、圓的扁的、重要的不重要的,都稍稍記錄下來。

    這是結(jié)完婚后的第一個年頭,酸甜苦辣,冷暖自知(這句我咋就能聯(lián)想到鴨子呢?)。

    一.工作
    2月份,13年開始做的頁游創(chuàng)業(yè)項目徹底黃了,還沒過年呢,尾牙都不給吃,團隊就“被”滾蛋了。
    過完年回來,花了三個禮拜找工作。
    3月2號,最終選擇到一家手游公司上班,提前轉(zhuǎn)正。
    由于種種原因,決定換工作,拿了三份Offer,其中有我職業(yè)生涯中拿到過的最高的,還是比較欣慰的,這種被人認可的感覺良好,雖然最終沒選擇它。
    11月27號到了當前公司上班,目前為止,工作和交流都很funny,是個令人愉快的選擇。

    二.生活
    在魔都這地方,換租了一套有獨立廚房的居室,租的房子啥都沒,買了各種東西,才有那么點家的樣子。
    每天上班下班,做飯洗碗,生活也有點像個樣子。
    這一年是到影院觀影次數(shù)最多的一年,這也是戀愛時候曾經(jīng)憧憬的。
    給自己買了個nokia x2的手機,可是不到一個月就碎屏了,渣渣傷不起。
    小舅子來到,帶他走向了碼農(nóng)的不歸路。

    三.技能
    1.廚藝
    研究嘗試了很多沒做過的菜式:
    酸菜大腸、豬肚燉蛤蜊、燉王八、蒜泥扇貝、醬汁鮑魚、清蒸多寶魚、清蒸鱸魚、肉末蒸蛋、土豆燉牛腩、
    啤酒燉羊肉、香鹵牛筋、清蒸豬舌頭、酸菜魚頭、土豆色拉、西式牛排、香煎鱈魚,還做了第一份自制雙皮奶。
    這里一點要說說,一個智能電壓力鍋實在是太值得入手了,煮飯燉湯燜肉都用的上,最重要的是有預(yù)約功能,晚上下好米,早上起來就能吃稀飯了。
    2.籃球
    周六無安排的話,堅持到上海大學打籃球,虐與被虐之間,技術(shù)還是有所進步的。值得一提的事,公司內(nèi)部比賽,也算是第一次正式上了場,蠻開心。
    3.吉他
    沒進步,只剩下隨便吼吼的技能,走入社會越久,越啞。這個技能的好處是,年會總有機會上臺去釋放下悶騷的青春,順帶還能帶點小禮品下來。
    4.電子琴
    主要練熟了兩首曲子:《菊次郎的夏天》和《夢中的婚禮》,完成了大學時的小心愿。《克羅地亞狂想曲》挑戰(zhàn)失敗,最近電子琴已擺爛。
    5.駕照
    魔都4月份報名,7500,模擬考什么的花了500左右,每次練車都AA請教練吃飯,加上請假考試,總成本10000左右,好在一次性過----說實話,沒上過幾回車,教練素質(zhì)一般,考科三中間三個月停練,呆車上的時間也絕對沒達標 ---- 全國的駕校都這樣嗎?都TM沒人管了?
    6.代碼能力
    對于Linux下的操作更加熟練,shell腳本編寫,組織SQL的能力有所提高。
    在不同的公司,讀到不同風格的代碼,隱約覺得內(nèi)功有所提升----別的不說,抄代碼能力那是肯定增長了。
    作為一個半路出家的程序員,補了《C++ primer》和《C程序設(shè)計語言》兩本心法,眼界稍稍增長,至少不會被“java程序員不曉得指針是啥”這類的說辭給躺槍。
    主要的吃飯家伙----Java方面,我再“三”次嘗試了《Java并發(fā)編程實踐》這本書,比最初多懂得一點。
    比較用得上的一本書是《Java程序性能優(yōu)化》,在大牛眼中這書可能比較淺顯,但里面的東西確實比其它一些大部頭里說的簡潔一些,挺多地方一般面試也常問到。
    《Java性能優(yōu)化權(quán)威指南》就是前者的加強版,干貨不少,字太多沒堅持讀完。
    項目中用上了redis,漲了點姿勢。
    比較實用的新技能:Lua算是比較熟練了,可以拿來換飯錢。

    四.開心的事
    1.年會上中了三等獎
    2.論壇上抽中一個機械鍵盤

    五.最重要的事
    兩口之家即將變成三口之家了,希望一切順順利利、平平安安!

    六.2015的目標
    年底再揭曉

    祝觀文的諸位碼友三羊開泰,心想事成!
    PS:沒多少內(nèi)容的一篇隨筆,竟然花了近兩個小時,必須對產(chǎn)出高質(zhì)量博文的博主們表達一下由衷的敬佩
    posted @ 2015-03-07 03:09 Jimi 閱讀(5638) | 評論 (11)編輯 收藏
    最近的工作主要涉及LUA,這有個坑必須記一下。
    下面是一個LUA面向?qū)ο髮懛ǚ浅3R姷膶懛ā?br />
    Bird = {
        color = {};canFly = true
    }

    function Bird:new(o)
        o = o or {}
        setmetatable(o, self)
        self.__index = self
        self.color = {}
        return o
    end
    注意,這里Bird類有兩個屬性,1個表,1個是基本類型,然后上測試代碼(Utils類只是簡單的封裝類,可以自己實現(xiàn)一個)
            local A = Bird:new()
            LoggerUtils:debug("------------------------------原始值-----------------------------------");
            LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(A.canFly));
            LoggerUtils:debug("Bird color:");
            CommonUtils.printTable(Bird.color)
            LoggerUtils:debug("a canFly:" .. StringUtils.boolean2string(A.canFly));
            LoggerUtils:debug("a color:");
            CommonUtils.printTable(A.color)
            --改變A的屬性
            A.canFly = false
            A.color[1] = "red"
            A.color[2] = "blue"
            A.color[3] = "green"
            LoggerUtils:debug("------------------------------A改變后----------------------------------");
            LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(Bird.canFly));
            LoggerUtils:debug("Bird color:");
            CommonUtils.printTable(Bird.color)
            LoggerUtils:debug("A canFly after change:" .. StringUtils.boolean2string(A.canFly));
            LoggerUtils:debug("A color after chagne:");
            CommonUtils.printTable(A.color)
            LoggerUtils:debug("-------------------------------B的值----------------------------------");
            local B = Bird:new()
            LoggerUtils:debug("B canFly:" .. StringUtils.boolean2string(B.canFly));
            LoggerUtils:debug("B color:");
            CommonUtils.printTable(B.color)

    代碼執(zhí)行結(jié)果:
    2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始值-----------------------------------
    2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改變后----------------------------------
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
    2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
    2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
    2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
    2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
    2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
    2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
    2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
    2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------B的值----------------------------------
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
    2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
    2014-12-29 11:20:40,696 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
    發(fā)現(xiàn)神馬問題了嗎?
    當A的類型為表的屬性color改變時,原始類的color屬性也改變了,同時這個改變也影響到新建的B,而類型為基本類型的屬性canFly就沒有這個問題。
    我的解決方法是新增一個set方法:
    function Bird:setColor(color)
        self.color = color
    end

    然后修改改變屬性的方式:
    local color ={}
            color[1] = "red"
            color[2] = "blue"
            color[3] = "green"
            A:setColor(color)
    輸出結(jié)果:
    2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始值-----------------------------------
    2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
    2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
    2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
    2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
    2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改變后----------------------------------
    2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
    2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
    2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------B的值----------------------------------
    2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
    2014-12-29 11:31:58,653 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
    另外同事一個解決方法更簡單,直接修改new()方法,其它的地方都不用改:
    function Bird:new(o)
        o = o or {}
        setmetatable(o, self)
        self.__index = self
        o.color = {} 
        return o
    end
    這個問題基本上網(wǎng)上的示例貌似都沒提到,我讀的書里也沒有,實際調(diào)試過程中才發(fā)現(xiàn)的,會造成新創(chuàng)建的類里會有不該有的屬性,比較蛋疼。
    具體原因不了解,有木有筒子指教一下?順便問問這兩種方法哪種更好?
    posted @ 2014-12-29 11:42 Jimi 閱讀(10774) | 評論 (5)編輯 收藏
    作為一名“萬能”的碼農(nóng),這種活兒你遲早要干的。----By Jimi沒有bond

    準備工作:yum

    1.檢查是否已安裝
    rpm -qa subversion
    如果要卸載舊版本:
    yum remove subversion

    2.安裝

    yum install subversion
    PS:yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql(這是安裝配合Apache的模塊,我暫時還沒做,做了再補上,你可以只裝subversion,多裝了也無所謂)
    3.檢查是否安裝成功
    svnserve --version
    如果成功會輸出版本號

    4.創(chuàng)建倉庫目錄
    例如:
    mkdir /home/svn/game

    5.創(chuàng)建項目
    svnadmin create /home/svn/game

    6.檢查是否創(chuàng)建成功
    cd /home/svn/game
    ll
    如果成功,game目錄下會多出幾個文件夾


    7.進入conf目錄會看到3個配置文件,生成的文件中都有英文注釋說明
    示例需求:
    策劃組:開策劃、美術(shù)讀寫
    后端組:開后端讀寫,策劃只讀
    前端組:開前端讀寫,策劃、美術(shù)只讀
    美術(shù)組:開美術(shù)讀寫,策劃只讀
    管理員組:所有的讀寫
    authz:用戶權(quán)限配置
    示例:
    [groups]
    #管理組
    manager = boss
    #服務(wù)端用戶組
    server = server1,server2
    #客戶端用戶組
    client = client1,client2
    #美術(shù)組
    art = art1,art2
    #策劃組
    design=design1,design2
    [game:/]
    @manager=rw
    [game:/server]
    @server=rw
    [game:/client]
    @client=rw
    @design=r
    @art=r
    [game:/art]
    @design=rw
    @art=rw
    @client=r
    [game:/design]
    @design=rw
    @server=r
    @client=r
    @art=r
    passwd:用戶密碼
    [users]
    boss=123456
    server1=123456
    server2=123456
    client1=123456
    client2=123456
    art1=123456
    art2=123456
    design1=123456
    design2=123456
    svnserve.conf:
    #匿名訪問者權(quán)限
    anon-access = none
    #驗證用戶權(quán)限
    auth-access = write
    #密碼文件地址
    password-db = /home/svn/game/passwd
    #權(quán)限文件地址
    authz-db = /home/svn/game/authz
    #項目名稱(UUID)
    realm =game


    8.開放svn端口
    默認是3690端口,你也可以用別的。已開啟的跳過這一步
    修改
    iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
    保存
    /etc/rc.d/init.d/iptables save
    重啟
    service iptables restart
    查看
    /etc/init.d/iptables status

    9.啟動SVN服務(wù)
    svnserve -d -r /home/svn
    -d:守護進程
    -r:svn根目錄
    假設(shè)服務(wù)端IP為192.168.1.100,那么如下設(shè)置后game的訪問目錄就為:
    svn://192.168.1.100/game

    10.安裝客戶端 TortoiseSVN

    11.建立子目錄
    在客戶端PC上找個目錄,用管理員帳戶從svn://192.168.1.100/game遷出game目錄,分別新建art,design,server,client 4個子目錄,然后提交。
    這時候你可以用其他組的帳戶測試下是否正常使用了。

    12.安裝好的svn服務(wù)端,默認是不會開機自啟動的,每次開機自己啟動會很麻煩,我們可以把它設(shè)成開機啟動
    首先:編寫一個啟動腳本svn_startup.sh,我放在/root/svn_startup.sh
    #!/bin/bash
    /usr/bin/svnserve -d -r /home/svn/
    這里的svnserve路徑保險起見,最好寫絕對路徑,因為啟動的時候,環(huán)境變量也許沒加載。
    絕對路徑怎么查?
    which svnserve
    這里還有可能碰到一個問題,如果你在windows下建立和編寫的腳步,拿到linux下,用vi或者vim修改后可能會無法執(zhí)行,這是文件格式的問題
    vi svn_startup.sh

    輸入:set ff 回車

    如果顯示的結(jié)果不是fileformat=unix

    再次輸入

    set ff=unix

    就OK了
    然后修改該腳本的執(zhí)行權(quán)限
    chmod ug+x svn_startup.sh

    或者萬能的

    chmod 777 svn_startup.sh
    最后:加入自動運行
    vi /etc/rc.d/rc.local
    在末尾添加腳本的路徑,如:
    /root/svn_startup.sh
    現(xiàn)在,你可以重啟一下試試了。 不懂得怎么確認成功?敗給你了
    ps -ef|grep svnserve
    好多活兒
    posted @ 2014-11-19 11:50 Jimi 閱讀(58610) | 評論 (9)編輯 收藏
    主站蜘蛛池模板: 亚洲中文字幕无码爆乳app| 亚洲男人在线无码视频| 亚洲福利视频一区二区三区| a级毛片毛片免费观看久潮| 亚洲Av无码乱码在线znlu| 色婷婷精品免费视频| jizzjizz亚洲| 中文字幕手机在线免费看电影 | 嫩草成人永久免费观看| 亚洲av无码av在线播放| 亚洲精品女同中文字幕| 国产午夜不卡AV免费| 国产亚洲一区二区在线观看| 在线观看免费毛片| 亚洲国产成人久久综合一区| 日韩在线看片免费人成视频播放| 亚洲大尺度无码无码专线一区| 亚洲AV乱码久久精品蜜桃| 国产成人免费片在线观看| 免费无码中文字幕A级毛片| 毛片亚洲AV无码精品国产午夜| 精品亚洲成AV人在线观看| 亚洲精品99久久久久中文字幕| 7723日本高清完整版免费| av电影在线免费看| 亚洲精品宾馆在线精品酒店 | 亚洲一区免费在线观看| 亚洲精品自在在线观看| 日本人的色道www免费一区| 久久精品国产免费观看三人同眠| jizz免费一区二区三区| 亚洲美国产亚洲AV| 亚洲国产成人久久精品app| 久久亚洲成a人片| 亚洲精品一级无码鲁丝片| 在线免费不卡视频| 麻豆国产精品免费视频| 无码专区AAAAAA免费视频| 精品无码国产污污污免费网站国产 | 男人和女人高潮免费网站| 亚洲AV日韩综合一区尤物|