青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Onway

我是一只菜菜菜菜鳥...
posts - 61, comments - 56, trackbacks - 0, articles - 34

一,簡介
一個歷史項目里面用了c# .net 2.0的FtpWebRequest進行文件上傳;ftp server在各現場用的應該都是Filezilla。
因業務發展,需要上傳大文件(500M以上吧),某現場就出現了上傳失敗的情況。

二,網絡問題
最開始的代碼里面并沒有記錄上傳失敗的具體原因,或者說log記錄沒能準確定位問題。
代碼修改后還是沒能準確定位問題。
但從log判斷,似乎是網絡斷開造成的。
這想到可能現場網絡不穩定,有瞬斷情況。

三,斷點續傳
聽過斷點續傳,在百度找了些代碼,修改一下封裝好嵌到項目里面。
當時只在網絡暢通的情況下測試過,代碼也沒還checkin,發現場用戶也試試。
反饋還是不行。
看log更加迷糊了,堆棧顯示在FtpWebRequest.GetRequestStream.Close里面拋出來的異常。
想不明白啊。

四,重現爛網絡
去過現場出差的同事反應,現場的網絡真的好爛。
這想到怎么去模擬一個爛網絡出來。
找到一個程序叫clumsy,http://jagt.github.io/clumsy/
設置延時50ms,50%的丟包率,丫的那個異常堆棧重現出來了。
異常信息如下:
這應該說的,連接已經斷開了,再關的話就報錯了。
程序調試進去發現,最早引發異常的是FtpWebRequest.GetRequestStream.Write,程序里面是有catch,但只是記錄了失敗的位置偏移以便下次重傳,也沒有去記錄失敗原因。
當時close的調用是放在finally塊里面的,這個close引發的異常導致續傳沒能繼續執行,log記錄的堆棧也就是從這里開始。

五,重現了也沒個屁用啊
既然close不掉,那就直接跳到FtpWebRequest.GetResponse.Close好了。
還真不報異常了,GetResponse就直接阻塞了,一直塞到ftp server都超時斷開了,還沒返回。
看了一下msdn,說好的FtpWebRequest.Timeout咋的沒生效呢?FtpWebRequest.ReadWriteTimeout可是好好的呢。
google+stackoverflow也沒找到解決,倒是找到一些吐槽FtpWebRequest和Ftp庫推薦的。
莫非還真得換庫或者直接調些ftp命令?
同時stackoverflow發了第一個問題,我只想知道為什么不超時也不返回,因為我連GetResponse.Close都不調用就直接開始下一次重傳的話,會報另一個異常如下:
不造是否英語太爛,或者是問題沒到點子上,問題沉了。

6,似乎只能傻逼了
下班路上想到,出現異常的時候,一個close也不調用,無論是否重新連接,因為網絡已經不通了,server應該還hold住一個連接,把文件鎖住了。
這應該就是上面異常的情況,文件被鎖了,新連接就沒法操作這個文件,看server log,確實有這個cann't access file的記錄。
那很好,client出異常了,等一個足夠長的時間,等到server將連接斷開就好了,close也就不管了。
但想想這也太傻逼了啊,這得等到什么時候啊。

7,也算徹底解決了,反正可以交貨了
試了一下filezilla client,有斷點續傳功能,發現網絡異常斷開,開始續傳連接開始之前,server那個連接總會很快斷開。
這又是怎么解析呢,不是說網絡都不通了,server那個連接是怎么放掉的呢?
google一下,stackoverflow上看到FtpWebRequest有個Abort函數,說是斷開一個異步請求。
一試,我同步連接也能斷開啊,網絡異常,啥都不close,直接abort,server那個連接就斷了,很快也就可以重傳了呢。

8,來都來了
這個abort做了什么鬼呢,想用wireshark抓個包看看,無奈不懂,十來分鐘連個filter都沒寫好。
難道是50%的丟包不夠強悍,abort還是有數據逃出去了?
后來百度知道wireshark在windows下要做特殊處理才能抓取本地數據包。
無奈增加本機路由后filezilla server連不上了,最后下了個手機ftp server。
發現abort也沒什么特殊的地方,只是通知ftp釋放控制連接和數據連接然后馬上返回,連接能不能斷掉就聽天由命了。
100%丟包率的時候,filezilla還真有連接會鎖死文件。

posted @ 2015-07-11 15:38 Onway 閱讀(1313) | 評論 (0)編輯 收藏

1,三個部分
4字節的單精度浮點數32個位分3個部分:
1.1,從左往右第一位是符號位,0正1負;
1.2,緊接的8個位是指數部分,不要糾結是原碼,反碼還是補碼,只是一個不帶符號位的二進制數,都一樣。取值區間是[0,255],0和255有特殊含義;取值在[1,254]的情況下,需要減去127才是真正的指數值,這時指數取值是[-126,127]。
1.3,剩余的23位是尾數部分,用于表示浮點數的小數部分;也是一個不帶符號位的二進制數。

2,指數部分
2.1,當指數部分是0,且尾數部分為全0的情況,這表示浮點數0;加上符號位表示正負0。
2.2,當指數部分是0,且尾數部分不為0的情況,其實際指數是-126,二進制表示的科學計數法的浮點數的整數部分按0解析。
2.3,當指數部分是255,且尾數部分為全0的情況,表示一個無窮數;加上符號位表示正反無窮。
2.4,當指數部分是255,且尾數部分不為0的情況,表示不是一個有效數字,NaN。
2.5,當指數部分取值為[1,254]的情況,需要減去127才是實際指數值,二進制表示的科學計數法的浮點數的整數部分按1解析。

3,浮點書的規約形式與非規約形式
3.1,上述的第二種情況的浮點數稱為非規約浮點數;上述的第五種情況的浮點數稱為規約浮點數。
3.2,最小的規約浮點數是指數部分是1(實際指數是-126),尾數部分為全0的時候,絕對值為1 * 2 ^ -126 ;
次小的規約浮點數是指數部分為1,尾數部分最低位為1其余位為0的時候,絕對值為1.000...1 * 2 ^ -126;
它們之間的絕對差值為(1.000...1 - 1) * 2 ^ -126 = 2 ^ -23 * 2 ^ -126 = 2 ^ -149;
而最小規約數與0的絕對差值是1 * 2 ^ -126 = 2 ^ -126。
在坐標軸的表現是,兩個非0的規范浮點數的間隔很小,而最小規約浮點數與0的間隔很大,差距是23倍。
3.3,引入非規約形式的浮點數,可以使得0與最小規約浮點數的間隔變得均勻起來,并且間隔與兩個相鄰規約浮點數的間隔一致。
兩個非規約浮點數的間隔都是0.000...1 * 2 ^ -126 = 2 ^ -149。
3.4,最大的非規約數是0.111...111 * 2 ^ -126,最小的規約數是1.000..0 * 2 ^ -126;
最大的非規約總是小于最小的規約數,也可以認識近似相等。

4,浮點數舍入
4.1,四舍六入五成雙。
Math.Round()
4.2,向0(截斷)舍入
整型強制轉換
4.3,向負無窮大
Math.Floor()
4.4,向正無窮大
Math.Ceiling()

posted @ 2015-06-14 17:41 Onway 閱讀(661) | 評論 (0)編輯 收藏

python程序里面需要執行一個系統命令程序,如果命令在限定時間之內結束,則python程序讀取其輸出(如果有)并馬上返回,否則強行終止命令程序。
原本這個功能是用系統信號SIGALARM和python的異常解決的,但這不能用在多線程的環境里。然后考慮用threading.Timer進行計時,但這個計時是在一個單獨線程進行的,如何將超時信息傳給主線程也是一個問題。
百度一下,用select可以解決需求:
但select并不完美,當命令程序輸出的內容多于管道容量的時候,select就會返回,如果此時命令程序再進入阻塞,則時間限制就不起作用了。

select.py:
import select
import subprocess

popen = subprocess.Popen("./test.sh", stdout=subprocess.PIPE)
fs = select.select([popen.stdout], [], [], 3)
if popen.stdout in fs[0]:
    output = popen.stdout.read()
    print len(output)
else:
    print "timeout"

test.sh:
#!/bin/bash

# a.txt contains 65536 characters

cat a.txt
sleep 10
cat a.txt

posted @ 2013-05-10 21:26 Onway 閱讀(2794) | 評論 (0)編輯 收藏

使用getrusage得到的資源統計的類型較多,測試代碼是僅針對ru_utime, ru_stime, ru_minflt三種類型的資源。
測試環境:Linux kubuntu 3.2.0-38-generic-pae #61-Ubuntu SMP Tue Feb 19 12:39:51 UTC 2013 i686 i686 i386 GNU/Linux
結論:父進程fork得到的子進程的資源使用被重置,子進程使用execve之后的資源使用不變。
parent.c:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>

void
print_rusage(const char * where)
{
    struct rusage used;
    getrusage(RUSAGE_SELF, &used);

    printf("In %s:\n", where);
    printf("user cpu time: %ld(ms)\n",
            used.ru_utime.tv_sec * 1000 + used.ru_utime.tv_usec / 1000);
    printf("sys cpu time: %ld(ms)\n",
            used.ru_stime.tv_sec * 1000 + used.ru_stime.tv_usec / 1000);
    printf("soft page faults: %ld\n", used.ru_minflt);
    printf("\n");
}

void
consume_rusage()
{
    int i, j, k;
    char * s = NULL;

    /* about 3 seconds user cpu time */
    for (i = 0; i < 1000; ++i)
        for (j = 0; j < 1000; ++j)
            for (k = 0; k < 1000; ++k)
                i / (j + 1) * k;
    
    /* 1000 soft page faults */
    k = 4096 * 1000;
    s = (char *)malloc(k);
    for (i = 0; i < k; ++i)
        s[i] = 'a';
}

int
main(int argc, char *argv[])
{
    consume_rusage();
    print_rusage("parent process");

    if (fork() == 0) {
        print_rusage("child process, after fork");
        printf("consuming resource \n\n");
        consume_rusage();
        print_rusage("child process, before execve");
        printf("excl child program now \n\n");
        execl("./child", "./child", (void *)0);
    }

    wait(NULL);
    return 0;
}

child.c:
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

void
print_rusage(const char * where)
{
    struct rusage used;
    getrusage(RUSAGE_SELF, &used);

    printf("In %s:\n", where);
    printf("user cpu time: %ld(ms)\n",
            used.ru_utime.tv_sec * 1000 + used.ru_utime.tv_usec / 1000);
    printf("sys cpu time: %ld(ms)\n",
            used.ru_stime.tv_sec * 1000 + used.ru_stime.tv_usec / 1000);
    printf("soft page faults: %ld\n", used.ru_minflt);
    printf("\n");
}

int
main(int argc, char *argv[])
{
    print_rusage("child program");
    return 0;
}   

好久沒寫博客了,密碼都快忘記了。寫給自己的記憶。

posted @ 2013-05-10 20:21 Onway 閱讀(2580) | 評論 (2)編輯 收藏

     摘要: 更新說明:
a,去掉了本地單詞本功能
b,增加了simple選項查詞
c,detail選項查詞更新到有道詞典的5.1.38.3211版本
d,收錄skyhacker的pyfanyi(那是完全不一樣的界面風格)
下載:
https://sourceforge.net/projects/eyoudao/files/  閱讀全文

posted @ 2012-10-22 13:52 Onway 閱讀(2717) | 評論 (9)編輯 收藏








我以為自己已經上傳過0.1.0的了,原來沒有。

在原來那篇“OnlineJudge監測程序”的基礎上,添加了后臺守護進程和單機測試網頁。

信號處理和系統調用規則,依然不完善。
依然沒有使用chroot限制根目錄,頭文件,動態庫這些內容還是不會限制。
java程序的內存統計,依然包含了虛擬機內存。

在SourceForge搗鼓了好幾天了,還是不太熟悉。
下載地址:http://sourceforge.net/projects/anoj/files/
安裝包里有依賴,安裝等說明。

純粹學習吧,跟HDOJ和POJ比,還差遠著呢。
如有建議,博客留言或聯系aluohuai@126.com

posted @ 2012-09-18 11:44 Onway 閱讀(1184) | 評論 (0)編輯 收藏

今年四月底為一份實習參與了一個在線挑戰,選題是linux平臺的一個http服務器,一個星期多點完成交上去,然后就沒然后了。
昨晚拿出來運行一下,打開幾個源碼文件,看著感覺是挺不懂事的。
無論是代碼風格,程序結構,實現技術,還是標準支持,安全性什么都是慘不忍睹的。
但做這個東西的時候感覺是煞有介事的,也用到了線程技術,實現了CGI,也做了文檔什么的,也算是系統編程的開始吧,因此寫文一篇緬懷一下。

昨晚想到,有沒必要做一個本地瀏覽器接口程序?其實也就是一個監聽localhost的http服務器程序。
一些簡單的單機交互程序,跑命令行不方便,雖然用圖形庫寫個界面也是不難的事,但為了一個界面幾個按鈕去學個圖形庫就比較糾結了。
想法是這樣簡單的界面可以用瀏覽器做,服務程序作為本地程序和瀏覽器之間的橋梁。
當然如果覺得裝個apache更容易的話,那是無話說了。
只是簡單記錄一下想法,具體還需更多的需求分析和論證。

posted @ 2012-08-24 15:25 Onway 閱讀(265) | 評論 (0)編輯 收藏

     摘要: 3,運行監測程序:
./a.out -t time -m memory -f fsize --basedir a_temp_working_directory --datadir input_answer_files_directory \
--who user_and_group_ID --magic a_random_string --end java Main
解釋:
-t,時間限制,單位ms
-m,內存限制,單位kb
-f,輸出限制,單位kb
--basedir,工作目錄
--datadir,存放輸入和答案文件的目錄,必須包含了ojdlck生成的data.conf文件
--who,運行用戶程序的用戶ID和組ID,建議為系統的nobody用戶
--magic,用于在工作目錄產生輸出的文件名
--end,標志所有的參數輸入完畢,接下來的參數都會視為用戶程序及其參數
例如:
./a.out -t 1000 -m 65536 -f 4096 --basedir /tmp --dat  閱讀全文

posted @ 2012-08-20 00:35 Onway 閱讀(2012) | 評論 (1)編輯 收藏


更新說明:
    a,result.xsl在<body>之后加入了兩個html子元素。
    b,classify.txt分類支持空格
    c,選擇單詞分類不再使用zenity,而是直接在顯示的網頁中添加。
    d,單詞本復習支持短語,增加了兩個模式,背誦模式是將選中的單詞批量下載到一個文件,復習模式是顯示單詞和釋義,不記入數據庫。
    e,改變了安裝方式,不再從makefile文件編譯,而是預先拷貝預先的編譯好的可執行文件。(檢測了ubuntu,fedora,centos三個系統,xslt程序使用的動態庫都能在系統里找到)
下載:
/Files/Onway/eyoudao-1.2.tar.gz.rar

posted @ 2012-06-08 11:11 Onway 閱讀(2424) | 評論 (14)編輯 收藏

     摘要:
摘自《c專家編程》,代碼和答案都是基于gcc 4.6.1和32位linux系統。
某些解釋不夠全面和正確,如果是錯誤,請指正。

1,解釋該聲明的含義:
char * const *(*next)();  閱讀全文

posted @ 2012-05-28 11:52 Onway 閱讀(397) | 評論 (0)編輯 收藏

僅列出標題
共6頁: 1 2 3 4 5 6 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲无限乱码一二三四麻| 免费在线欧美视频| 亚洲色无码播放| 欧美三日本三级少妇三2023| aa级大片欧美| 中文欧美日韩| 国产精品视频免费在线观看| 久久se精品一区二区| 久久高清福利视频| 亚洲国产天堂久久综合| 亚洲国产综合视频在线观看| 欧美精品系列| 性欧美超级视频| 香蕉成人啪国产精品视频综合网| 国产一区二区三区在线观看免费 | 好吊妞这里只有精品| 久久久精品免费视频| 欧美www视频| 亚洲女女女同性video| 欧美在线一级视频| 日韩网站在线看片你懂的| 亚洲免费中文| 亚洲精品一二| 欧美一级大片在线免费观看| 极品尤物一区二区三区| 亚洲免费观看高清完整版在线观看| 欧美色欧美亚洲高清在线视频| 久久精品亚洲一区| 欧美激情视频免费观看| 久久久久国产精品麻豆ai换脸| 欧美91大片| 久久久精品动漫| 欧美激情第3页| 99精品99| 久久久精品国产免费观看同学| 日韩一级不卡| 久久一区免费| 欧美亚洲一区三区| 欧美高清视频一二三区| 久久av二区| 欧美三区在线视频| 亚洲大胆在线| 国产亚洲精品久久久| 日韩一级大片在线| 亚洲欧洲免费视频| 久久久久国内| 欧美一区在线看| 欧美日韩国产电影| 欧美激情aaaa| 亚洲第一页在线| 欧美在线91| 午夜宅男久久久| 欧美日韩一区二区三区| 欧美高清在线一区| 精品999日本| 欧美一区亚洲二区| 久久国产精品亚洲77777| 欧美图区在线视频| 一本久道久久综合婷婷鲸鱼| 一本色道久久综合亚洲精品小说| 久久综合亚洲社区| 巨胸喷奶水www久久久免费动漫| 国产伦精品一区二区三区四区免费| 亚洲精品一二| 一区二区高清视频| 欧美日韩在线亚洲一区蜜芽| 亚洲精品资源美女情侣酒店| 一区二区久久| 欧美视频在线观看视频极品| 亚洲伦理一区| 亚洲一区二区精品在线观看| 欧美日韩卡一卡二| 日韩视频在线观看免费| 亚洲午夜激情免费视频| 国产精品a级| 亚洲一区二区三区在线| 性视频1819p久久| 国产日产欧产精品推荐色| 午夜在线视频一区二区区别| 午夜精品久久久久久99热软件| 国产精品亚洲综合一区在线观看| 亚洲伊人网站| 另类酷文…触手系列精品集v1小说| 一区二区三区在线看| 嫩模写真一区二区三区三州| 91久久久久久| 亚洲一区二区视频在线| 国产精品区一区二区三区| 午夜国产欧美理论在线播放 | 最新日韩欧美| 欧美日韩精品欧美日韩精品一| 99视频一区二区| 欧美在线免费看| 亚洲高清在线| 欧美午夜电影在线| 久久精品免费播放| 亚洲精品视频二区| 午夜一区不卡| 亚洲福利小视频| 国产精品videossex久久发布| 午夜在线精品偷拍| 亚洲啪啪91| 欧美一区精品| 日韩天堂av| 国产亚洲在线| 欧美日韩精品综合| 欧美一级艳片视频免费观看| 亚洲丁香婷深爱综合| 欧美在线视频日韩| 日韩视频在线观看免费| 国产亚洲电影| 欧美性猛交xxxx乱大交蜜桃| 久久精品在线| 亚洲午夜av在线| 亚洲国产欧美不卡在线观看 | 亚洲高清在线观看| 欧美视频官网| 欧美福利电影网| 欧美一区二区黄| 在线视频欧美一区| 亚洲国产另类久久精品| 久久久久女教师免费一区| 一区二区三区黄色| 亚洲黄一区二区三区| 国产一区二区高清不卡| 国产精品国产亚洲精品看不卡15 | 欧美日本一区| 老司机精品久久| 久久高清国产| 性欧美精品高清| 亚洲色图制服丝袜| 91久久久久久久久| 欧美激情第9页| 麻豆国产精品一区二区三区| 久久精品中文字幕一区二区三区| 亚洲调教视频在线观看| 一区二区三区四区蜜桃| 日韩性生活视频| 亚洲日本无吗高清不卡| 亚洲福利专区| 在线免费观看欧美| 在线观看一区| 亚洲第一区在线观看| 在线看无码的免费网站| 尤物99国产成人精品视频| 精品二区视频| 亚洲福利视频专区| 最新中文字幕一区二区三区| 在线欧美视频| 亚洲国产精品精华液网站| 亚洲国产一区二区视频| 亚洲国产美女精品久久久久∴| 在线播放不卡| 亚洲人成久久| 一本一本久久| 亚洲欧美日韩在线观看a三区| 亚洲免费在线看| 小黄鸭精品aⅴ导航网站入口| 欧美与黑人午夜性猛交久久久| 欧美一区二区三区在线观看视频| 久久国产精品99国产精| 久久偷窥视频| 欧美激情一二三区| 日韩午夜中文字幕| 午夜激情一区| 六月婷婷一区| 欧美区高清在线| 国产精品自拍视频| 激情久久久久久久| 亚洲精选视频免费看| 亚洲性人人天天夜夜摸| 欧美中文在线免费| 免费的成人av| 99精品国产在热久久| 羞羞答答国产精品www一本| 久久久精品视频成人| 欧美精品1区2区3区| 国产精品日韩| 亚洲国产日韩欧美在线图片| 亚洲午夜精品久久久久久浪潮| 欧美一区二区久久久| 欧美福利专区| 午夜精品久久久久久久白皮肤| 久久精品一区四区| 欧美日韩在线播放三区| 狠狠网亚洲精品| 中文亚洲视频在线| 米奇777在线欧美播放| 在线午夜精品自拍| 久久综合激情| 国产午夜精品理论片a级探花 | 亚洲性视频网站| 麻豆成人在线播放| 亚洲在线播放| 欧美精品成人91久久久久久久| 国产一区视频在线看| 亚洲男人影院| 91久久夜色精品国产九色| 久久久久久午夜| 国产农村妇女精品一区二区|