• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-18  評論-11  文章-12  trackbacks-0
             
                socket是網絡編程的基礎,本文用打電話來類比socket通信中建立TCP連接的過程。
                socket函數,表示你買了或者借了一部手機。
                bind函數,告訴別人你的手機號碼,讓他們給你打電話。
                listen函數,打開手機的鈴聲,而不是靜音,這樣有電話時可以立馬反應。listen函數的第二個參數,最大連接數,表示最多有幾個人可以同時撥打你的號碼。不過我們的手機,最多只能有一個人打進來,要不然就提示占線。
                connect函數,你的朋友知道了你的號碼,通過這個號碼來聯系你。在他等待你回應的時候,不能做其他事情,所以connect函數是阻塞的。
                accept函數,你聽到了電話鈴聲,接電話,accept it!然后“喂”一聲,你的朋友聽到你的回應,知道電話已經打進去了。至此,一個TCP連接建立了。
                read/write函數,連接建立后,TCP的兩端可以互相收發消息,這時候的連接是全雙工的。對應打電話中的電話煲。
                close函數,通話完畢,一方說“我掛了”,另一方回應"你掛吧",然后將連接終止。實際的close(sockfd)有些不同,它不止是終止連接,還把手機也歸還,不在占有這部手機,就當是公用電話吧。
                注意到,上述連接是阻塞的,你一次只能響應一個用戶的連接請求,但在實際網絡編程中,一個服務器服務于多個客戶,上述方案也就行不通了,怎么辦?想一想1860,移動的聲訊服務臺,也是只有一個號碼,它怎么能同時服務那么多人呢?可以這樣理解,在你打電話到1860時,總服務臺會讓一個接線員來為你服務,而它自己卻繼續監聽有沒有新的電話接入。在網絡編程中,這個過程類似于fork一個子進程,建立實際的通信連接,而主進程繼續監聽。1860的接線員是有限的,所以當連接的人數達到上線時,它會放首歌給你聽,忙等待,直到有新的空閑接線員為止。
                實際網絡編程中,處理并發的方式還有select/poll/epoll等。

            下面是一個實際的socket通信過程:


            posted @ 2008-10-26 17:09 ronliu 閱讀(4080) | 評論 (4)編輯 收藏
            面試百度時,面試官問我,如何統計一個文本文件的行數,可以使用一種腳本語言。汗,我告訴他,用for循環,一行行地去讀吧。然后聽見面試官很小心的咕噥了一句,wc這種常用命令也不知道呀。:(
            本文只是列出了各個命令的簡要功能,欲知詳情,man吧!

            ls 顯示目錄中的文件名
            ps 查看當前進程快照
            kill 向進程發送一個信號,如殺死進程
            more 顯示文本文件,但一次只顯示一屏
            sort 按行對文本文件進行排序
            chmod 改變文件的模式,如可執行+x
            echo 輸出變量的值
            read 將用戶的輸入賦給變量
            env 在一個被改變了的環境中運行程序
            test 檢測文件的類型,比較值。例如檢測文件是否存在,字符串比較等
            touch 檢測文件是否存在,如果不存在就創建它
            rm 刪除一個文件或者目錄
            wc 顯示文本文件的行數、字數信息
            cp 復制文件或目錄,常用參數-r, -u
            mkdir 創建目錄
            ln 在文件之間創建鏈接

            內部命令:
            break 跳出當前循環
            continue 跳出本次循環,繼續下一次循環
            :空命令,相當于true的別名
            . 用來執行shell中的命令,類型與#include
            eval 允許你對參數求值,有點像一個而外的$,他給出一個變量值的值
            exec 將當前的shell替換一個不同的程序,其之后的代碼不會執行
            exit n 退出碼 n
            export 將作為它參數的變量到處到子shell中,作為子進程的環境變量
            expr 將參數當作表達式來求值,如簡單的數學運算
            `` 對反引號內的代碼當作命令執行,求的結果賦給變量
            return 是函數返回
            set 為shell設置參數變量 set $(date),將當前date作為參數
            shift 所有參數變量左移1個位置$3變為$2
            trap 用于接收到指定信號后將要采取的行動,如INT CTRL+C。即可以設定Ctrl+C后,程序如何響應。
            unset 從環境中刪除變量或函數
            find 查找文件 find [path] [option] [test] [action]
                option包括find深度,是否find mount的文件夾等,test包括name, mtime,action例如print,exec

            編程相關命令:
            strings 打印文件中的可打印字符,如查看一個可執行文件中的可打印字符。
            nm 列出對象文件(object files)的符號列表,如查看用gcc編譯出來的可執行文件的符號列表。
            strip  刪除對象文件中的符號列表。這樣可以使得可執行文件有更小的體積。
            strace 很強大的命令,顯示所有由用戶空間程序發出的系統調用。用于調試。
            posted @ 2008-10-17 16:48 ronliu 閱讀(664) | 評論 (0)編輯 收藏
                  從星期五晚上開始,一直在裝系統,甚至于昨天晚上還熬通宵擺弄這東西。只是到目前為止,手頭上的這個Linux系統仍然問題重重,不堪使用。明天又是新的一天,工作日,重裝系統的愛好就得先放放了。以下是這兩天的“成果”。
                  ~修改Grub引導區失敗一次,導致RedHat9無法引導,電腦無法啟動,借光驅格盤。
                  ~Ubuntu8.04硬盤安裝一次,失敗,原因同上,Grub引導出錯。
                  ~Ubuntu8.04 Wubi安裝兩次,體驗了傳說中的Ubuntu,但無法上網,基本等同于廢物了,比較適合初學者。
                  ~RedHat9安裝一次。字體配置文件丟失,Wine無法安裝,無賴重裝,但在我的電腦上僅存1天不到。
                  ~SuSe硬盤安裝一次,用的比較舒服,Wine成功,Qt失敗,聲音解碼器失敗,gcc編譯器向下兼容……
                  ~U盤安裝系統一次,失敗,電腦無法從U盤引導,或許是引導盤沒做好,但已經沒興趣了,借光驅ing
                  ~光盤安裝Windows2003一次,將無法引導的那個機器恢復,oye!
                  ~比較FC,Ubuntu,Suse,RedHat,各個的優缺點。
                   其間出過U盤被分區無法識別的烏龍,也學會單用戶登錄,修改Grub入門,等等,但總的來說,這個周末收獲不大。目前這臺電腦上幸存三個系統,Suse10,WinXP,Ubuntu(Wubi)。整個周末都耗在這個上面了,很無語。無論如何,進一段時間再重裝這臺機器了,太無聊。生命中還有很多美好的事情可以體驗,比如睡覺!

            posted @ 2008-06-15 23:08 ronliu 閱讀(295) | 評論 (0)編輯 收藏
                RedHat9, 在安裝光盤中的KDE包后, 無法進入X. 以下為解決過程.

            1. 以單用戶的模式進入Linux  參考
            2. 修改啟動文件/etc/inittab, id:5:initdefalut: 將5改為3
            3. 在文字模式下, startx, 嘗試啟動X11. 報錯. Could not open default font "fixed"
                注釋掉/etc/X11/XF86Config中的  FontPath "unix/:7100", startx, 回到久違的X11 參考



            說明
            --------
            1. 進入grub模式下, 也可以進入單用戶狀態, 但沒有成功.
            2. 以為字體丟失, 打算重新安裝系統盤中的XFree86包, 提示已安裝. (需要先將文件從光盤復制到其他盤)
            posted @ 2008-06-12 21:44 ronliu 閱讀(315) | 評論 (0)編輯 收藏
            一 基礎命令
                掛載: mount /dev/sda /mnt/usb
                卸載: umount /mnt/usb
            參數:
                -t vfat 指定掛載盤的類型
                -o 為掛載指定可選項, 如charset等
                -l 強制卸載磁盤

            二 亂碼
                在掛載時需要指定字符集. 對于U盤, mount /dev/sda /mnt/usb -o iocharset=cp936. 對于掛到Linux下的其他Winodw盤, 需要使用vim /etc/fstab命令修改配置文件, /dev/hdb7  /mnt/f  vfat  iocharset=cp936,defaults  0 0.
                系統RedHat9.0, 其他系統或有不同, 需要找到對應中文字符集. 如cp950, gb2312

            三 大小寫
                有些短文件名, 如果全大寫, 會顯示為全小寫. 影響使用. 在掛載時, 加上shortname=mixed的參數即可解決.

            四 說明
                注意到, 將這些掛載磁盤的選項寫入到/etc/fstab中, 可在系統啟動時自動加載.

            posted @ 2008-06-11 15:03 ronliu 閱讀(337) | 評論 (0)編輯 收藏
            1. 
            <script> 

            function test(object) 

            alert(object.value); 
            }
             

            </script> 

            <input type="button" name="one" value="one" onclick="test(this)"> 

            <input type="button" name="tow" value="tow" onclick="test(this)"> 

            function test() 

            var object =event.srcElement // 得到調用者的引用 object 
            alert(object.value); 
            }
             
            posted @ 2008-05-31 16:11 ronliu 閱讀(1935) | 評論 (0)編輯 收藏
            1. 在window.showModalDialog的彈出對話框中,刷新父頁面。
                window.opener.location.href=window.opener.location.href

            posted @ 2008-05-31 15:07 ronliu 閱讀(272) | 評論 (0)編輯 收藏
                    在開發中,測試的數據庫服務器和正式的通常不在一起。這就涉及到數據庫連接的更新。在丟失過一次所有字段之后,發現是自己想復雜了。數據庫-》設置數據源位置。OK。
                    但我的報表中有一個以XML為數據源的子報表,在設置數據源位置時,CR總是死掉,刪除這個子報表后一切正常了。原因未知。
                    報表更復雜一些,參見:http://topic.csdn.net/t/20031113/17/2457889.html#
            posted @ 2008-05-30 16:26 ronliu 閱讀(1294) | 評論 (0)編輯 收藏
            僅列出標題
            共2頁: 1 2 
            精品久久久久久国产潘金莲| 亚洲综合伊人久久大杳蕉| 久久久久AV综合网成人| 久久亚洲综合色一区二区三区| 久久精品国产99久久无毒不卡 | 久久大香香蕉国产| 99久久99久久精品国产片| 亚洲精品无码专区久久同性男| 久久久久久国产精品美女| 美女写真久久影院| 国产精品久久新婚兰兰| 18岁日韩内射颜射午夜久久成人| 免费精品国产日韩热久久| 国产成人精品白浆久久69| 久久大香萑太香蕉av| 一本伊大人香蕉久久网手机| 亚洲AV日韩精品久久久久久| 免费一级做a爰片久久毛片潮| 久久久久久久久久久久中文字幕| 四虎亚洲国产成人久久精品| segui久久国产精品| 精品久久久久久无码专区 | 国产精品久久网| 中文国产成人精品久久不卡 | 久久精品嫩草影院| 久久久精品国产sm调教网站| 中文成人久久久久影院免费观看| 国产精品免费久久久久电影网| 国内精品久久久久影院日本 | 五月丁香综合激情六月久久| 亚洲国产精品狼友中文久久久| 大美女久久久久久j久久| 久久精品成人免费看| 国产Av激情久久无码天堂| 亚洲国产美女精品久久久久∴| 久久精品国产久精国产果冻传媒| 久久久久国产一区二区| 国产精品成人久久久久久久| 久久97精品久久久久久久不卡| 久久99国产精品久久| 91精品国产色综久久|