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

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

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

    漢辰攻略

    The palest ink is better than the best memory.

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      8 Posts :: 1 Stories :: 3 Comments :: 0 Trackbacks

    2008年11月12日 #

  • C-j: Insert a new line with the same indentation level as the current line
  • RET: Insert a new line with the same indentation level as the current line
  • C-M-a: Go to the beginning of the current function or class
  • C-M-e: Go to the end of the current function or class
  • C-M-h: Mark the current function or class for copying, etc.
  • C-M-x: Execute the current function or class
  • C-c C-b: Submit a bug report
  • C-c C-c: Execute the buffer (i.e., the file being displayed)
  • C-c C-d: Trace the stack of the process being executed
  • C-c C-h: Get context-based help
  • C-c TAB: Indent a highlighted (or marked) region
  • C-c C-k: Mark a block of text. Using this at the head of a class or function definition will mark the entire block.
  • C-c C-l: Shift the region to the left. If the cursor is in the middle of a region, the lower half of the region will shift.
  • C-c RET: Execute the current file, opening a new window to show the output.
  • C-c C-n: Jump to the next statement.
  • C-c C-p: Jump to the previous statement.
  • C-c C-r: Shift the region to the right. If the cursor is in the middle of a region, the lower half of the region will shift.
  • C-c C-s: Execute a Python command.
  • C-c C-t: Toggle shells
  • C-c C-u: Go up one block
  • C-c C-v: List the version of the Python mode
  • C-c C-w: Run PyChecker
  • C-c !: Open the Python interactive shell
  • C-c #: Comment the highlighted (marked) region
  • C-c :: Check the indentation off-set
  • C-c <: Shift the region to the left
  • C-c >: Shift the region to the right
  • C-c ?: Show Python mode documentation
  • C-c |: Execute the highlighted (marked) part of the current program.
  • posted @ 2008-11-12 14:11 漢辰 閱讀(1070) | 評(píng)論 (0)編輯 收藏

    2008年10月30日 #

    --XX:+DoEscapeAnalysis, off by default
    如果一個(gè)對(duì)象的所有引用都是限于某一局部范圍,去掉對(duì)象上的鎖
    --XX:+UseBiasedLocking, on by default
    對(duì)多次取鎖的操作,比如循環(huán),不釋放Lease即使鎖已被釋放,避免費(fèi)時(shí)的取Lease操作 (最有效)
    --XX:+EliminateLocks, on by default
    如果一段代碼經(jīng)常性的加鎖和解鎖,在解鎖與下次加鎖之間又沒干什么事情,則可以將多次加加鎖解鎖操作合并成一對(duì)。也稱為L(zhǎng)ock Coarsening (鎖粗化)

    http://www.infoq.com/articles/java-threading-optimizations-p1
    posted @ 2008-10-30 15:33 漢辰 閱讀(671) | 評(píng)論 (0)編輯 收藏

    2008年9月9日 #

    python 有str object 和 unicode object 兩種字符串, 都可以存放字符的字節(jié)編碼,但是他們是不同的type,這一點(diǎn)很重要,也是為什么會(huì)有encode 和decode。

    encode 和 decode在pyhton 中的意義可表示為

                                                                      encode
                                                  unicode -------------------------> str
                                                  unicode <--------------------------str
                                                                      decode
    幾種常用法:
    str_string.decode('codec') 是把str_string轉(zhuǎn)換為unicode_string, codec是源str_string的編碼方式
    unicode_string.encode('codec') 是把unicode_string 轉(zhuǎn)換為str_string,codec是目標(biāo)str_string的編碼方式
    str_string.decode('from_codec').encode('to_codec') 可實(shí)現(xiàn)不同編碼的str_string之間的轉(zhuǎn)換
    比如:

    >>> t='長(zhǎng)城'
    >>> t
    '\xb3\xa4\xb3\xc7'
    >>> t.decode('gb2312').encode('utf-8')
    '\xe9\x95\xbf\xe5\x9f\x8e'

    str_string.encode('codec') 是先調(diào)用系統(tǒng)的缺省codec去把str_string轉(zhuǎn)換為unicode_string,然后用encode的參數(shù)codec去轉(zhuǎn)換為最終的str_string. 相當(dāng)于str_string.decode('sys_codec').encode('codec')。

    unicode_string.decode('codec') 基本沒有意義,unicode 在python里只用一種unicode編碼,UTF16或者UTF32(編譯python時(shí)就已經(jīng)確定),沒有編碼轉(zhuǎn)換的需要。 

    注:缺省codec在site-packages下的sitecustomize.py文件中指定,比如

    import sys
    sys.setdefaultencoding(
    'utf-8')



     

    posted @ 2008-09-09 15:49 漢辰 閱讀(13137) | 評(píng)論 (1)編輯 收藏

    2008年7月28日 #

    慕名Emacs是很久的事了,上個(gè)周末Google了一天終于把它在Windows下的中文化問題初步解決了。

    網(wǎng)上講述Emacs中文問題的帖子很多,不過很多是過時(shí)的或不完整的,并以Linux下居多。很多.emacs設(shè)置看起來發(fā)生了作用,但是在我的機(jī)器上不是顯示方塊,就是半個(gè)中文字符。前者懷疑未配置好Emacs使其無法讀取系統(tǒng)字體,后者懷疑字符寬度設(shè)置還有問題,苦于無暇深究。

    最后找到一篇Emacs 中文化指南[http://17xie.com/read-103809.html],講述了在Windows下使用了X11的BDF字體配置Emacs的過程,下載安裝了intlfont,改了相應(yīng)的emacs設(shè)置,Bingo!!!,一試就通。不過字庫還是GB2312的,想把Mule-GBK 和BDF 字體配置在一起,未成功。

    貼張圖慶賀一下
    posted @ 2008-07-28 13:47 漢辰 閱讀(940) | 評(píng)論 (0)編輯 收藏

    2008年7月11日 #

    EMacs常用命令集:
    C-x C-s        當(dāng)前文件存盤
    C-x s        所有文件存盤,根據(jù)提示確認(rèn)是否保存指定文件
    C-x C-b        列出緩存
    C-x C-f        查找文件,如果不存在則新建,如果已打開則切換為當(dāng)前文件
    C-x 數(shù)字        關(guān)閉其它窗,只顯示當(dāng)前主窗體。也可以輸入其它數(shù)打開多窗
    C-x o        切換到另一個(gè)打開的窗
    C-z        臨時(shí)退出,在X中相當(dāng)于最小化,在Console中可以用"fg"或者"%emacs"返回。
    C-x C-c        退出
    C-u 數(shù)字        前綴參數(shù),常用于重復(fù)執(zhí)行命令,如插入8個(gè)*符:C-u 8 *
    M-x recover 文件名<回車>         恢復(fù)文件到上次自動(dòng)保存的狀態(tài),常用于系統(tǒng)崩潰時(shí)
    C-h m        當(dāng)前模式的說明文檔,每種模式都略有些許不同
    C-h i        常用shell命令的說明文檔

    常用移動(dòng)命令:
    C-v        向下翻頁
    C-M-v        另一窗向下翻頁
    M-v        向上翻頁
    C-l        移動(dòng)到光標(biāo)位置
    M- <-        移到文首
    M- ->        移到文尾
    C-a        移到行首        M-a        移到句首
    C-e        移到行尾        M-e        移到句尾
    C-p        上移一行
    C-n        下移一行
    C-b        左移一位        M-b        左移一字
    C-f        右移一位        M-f        右移一字
    常用編輯命令:
    C-k        刪除到當(dāng)前行尾
    M-k        刪除到當(dāng)前句尾
    C-g        中斷執(zhí)行
    C-w       Cut marked region
    A-w       Copy marked region
    C-y        取回所有刪除的行,默認(rèn)顯示最后刪除的行
    M-y        C-y取回所有刪除的行之后,切換顯示之前刪除的行
    C-x C-x  Mark the region from the current cursor to last mark point, 可以方便的重復(fù)Mark
    C-x h      Mark the whole buffer
    C-x u        撤消
    C-x C-a C-l Revert a buffer
    g                刷新Dired mode buffer

    常用查找命令:
    C-s        向前查找
    C-r        向后查找
    M-g M-g Goto a line

    進(jìn)入Hex mode      M-x hexl-mode ,C-c C-c 退出

    換行:

    不嫌煩的,每次M-x toggle-truncate-lines切換換行與不換行
    一勞永逸的,M-x customize-option,輸入truncate-partial-width-windows,將出來的設(shè)置頁面中的參數(shù)改為off,然后保存(Save for future sessions)
    另外說一句,M-x auto-fill-mode也是切換換行模式,不過這是要在文章內(nèi)容里插入回車符號(hào)

    posted @ 2008-07-11 22:16 漢辰 閱讀(423) | 評(píng)論 (0)編輯 收藏

    2008年7月8日 #

    寫這篇東西,是本著好記性不如爛筆頭的原則把自己配置LaTex的過程粗略地記錄下來以備后查。

    LaTex 是用了20多年的排版工具。因其專業(yè)的排版質(zhì)量和對(duì)大文檔處理能力,流行于學(xué)術(shù)界,大多數(shù)研究生博士生都用它寫自己畢業(yè)論文。

    自己3年前曾也想用它寫碩士論文,但迫于時(shí)間壓力,后來還是改用了WYSWYG的StarOffice(Sun的產(chǎn)品,基于OpenOffice)。

    不用Word,因?yàn)橛盟庉嬑业?0頁論文時(shí),總是無可挽回地讓我的機(jī)器崩潰,當(dāng)時(shí)系統(tǒng)還是Windows2000。

    下面先離題談一談近期讀程序員修煉之道一書的兩個(gè)體會(huì),也想闡述一下我為什么對(duì)用LaTex統(tǒng)一創(chuàng)建項(xiàng)目文檔感興趣

    1)DRY(Don't Repeat Yourself),這是作者(Andrew Hunt/David Thomas)提到的重要原則,應(yīng)貫徹到軟件開發(fā)的各個(gè)方面。其中一方面暗示開發(fā)流程中應(yīng)盡可能保持同一級(jí)別信息的儲(chǔ)備唯一化,而不應(yīng)有多處載體包含同級(jí)別信息。比如從測(cè)試規(guī)范應(yīng)可以直接導(dǎo)出TestCase,數(shù)據(jù)庫定義規(guī)范直接導(dǎo)出數(shù)據(jù)庫腳本等等。

    2)工欲善其事,必先利其器。專業(yè)的程序員除了熟悉自己吃飯用的編程語言外,還需懂得各種輔助工具特別是Perl/Python/Shell一類的腳本語言,因其廣泛存在于各種平臺(tái)中,并有很好的正則表達(dá)式和純文本操縱能力。例如,用他們可以幫助實(shí)現(xiàn)項(xiàng)目文檔的自動(dòng)生成和發(fā)布等等。比如上面的信息導(dǎo)出就是一個(gè)應(yīng)用目標(biāo)。

    要達(dá)到這樣地目的,必須要用純文本作為信息載體。但是,對(duì)于習(xí)慣于閱讀Word,PDF,HTML等格式化文檔的人們來說,純文本卻不太合適。所以3年前的LaTex又浮現(xiàn)在我的眼前。LaTex 很符合DRY原則,文檔信息和格式化信息都用純文本方式保存,但最終發(fā)布形式可以用LaTex自動(dòng)生成,或PDF,或HTML,自己選擇。

    LaTex難以學(xué)習(xí)是一大詬病,但是個(gè)人認(rèn)為,軟件開發(fā)文檔有比較統(tǒng)一的格式化規(guī)范,只要有現(xiàn)成的模板,普通程序員可以通過短時(shí)間學(xué)習(xí)掌握基本的編輯能力。

    下面言歸正傳:

    大家時(shí)間都不多,Windows下使用LaTex最方便的辦法是安裝MiCTex套裝,其主要包括MikTex(LaTex的一種實(shí)現(xiàn)),SciTE(LaTex文檔編輯器),Tex4ht(LaTex文檔到Html轉(zhuǎn)換器)等,還捆綁了一些入門學(xué)習(xí)資料。

    LaTex內(nèi)核無法識(shí)別超越ASCII的編碼,中文處理是以外掛的方式進(jìn)行的。CJK是目前使用的最多的LaTex的中文化包,MiCTex也包括了,不過中文字體還需配置(也可能因?yàn)槲业南到y(tǒng)是英文的XP所致)。

    比較了網(wǎng)上Google到的資料,Helmer Aslaksen的這篇文章最全面和正確的描述了中文配置過程
    Chinese TeX Using the CJK LaTeX Package, Unicode TrueType Fonts and pdfTeX under Windows
    http://www.math.nus.edu.sg/aslaksen/cs/cjk.html

    MiCTex作者最近也提供了一個(gè)中文字體自動(dòng)配置工具,可以很方便的生成各類字體配置文件,并支持UTF8或GBK編碼,很好用。我用它安裝了系統(tǒng)中的微軟宋體,黑體。結(jié)果比上面Cyberbit字體好。
    http://bbs.ctex.org/viewthread.php?tid=44496&extra=page%3D1

    下面可以下載到其他免費(fèi)字體文件
    http://www.wazu.jp/gallery/Fonts_ChineseSimplified.html

    Tex4ht是MiCTex捆綁的LaTex2Html轉(zhuǎn)換工具,英文很不錯(cuò),中文有點(diǎn)問題,還要下功夫看看那里出問題。我自己很憧憬以HTML的形式發(fā)布和更新項(xiàng)目文檔,簡(jiǎn)單實(shí)用,這個(gè)發(fā)布過程可以作為一個(gè)步驟加入每晚的Build。

    posted @ 2008-07-08 14:20 漢辰 閱讀(1883) | 評(píng)論 (0)編輯 收藏

    2008年6月26日 #

    Fork-join framework是Java 7并行庫的新內(nèi)容,基于divide-and-conquer算法來處理大數(shù)據(jù)量計(jì)算。DnQ是處理微粒度并行計(jì)算(數(shù)據(jù)量大,單位運(yùn)行時(shí)間短)的理想模式。數(shù)據(jù)量在達(dá)到一個(gè)預(yù)定義的門檻之前,被分割成多個(gè)任務(wù)被Worker threads執(zhí)行。因?yàn)楝F(xiàn)代Java虛擬機(jī)都把Java thread映射到系統(tǒng)線程或LWP(Light-weight process) ,同時(shí)Worker數(shù)量一般設(shè)定等同于CPU個(gè)數(shù),這樣在多核的硬件系統(tǒng)中能充分利用多個(gè)CPU的計(jì)算能力。

    寫了一個(gè)MergeSort的測(cè)試?yán)樱罱K的排序用的是Java Collection Framework 自帶的Arrays.sort()。在自己雙核機(jī)器試了試,發(fā)現(xiàn)提升不是特別明顯。Arrays.sort 本身很高效,F(xiàn)ramework有thread之間協(xié)作和管理worker pool的開銷,所以必須選擇一個(gè)適合的數(shù)據(jù)量闞值。下面是運(yùn)行結(jié)果:

    java -Xms64m -Xmx128m -cp C;/forkjoin/jsr166y.zip;C:/workspace/java.tij forkjoin.SortTask

    Number of processor 2
    =================Sequential ===================
    Sorting takes 2617701971 to complete
    =================ForkJoin ====================
    Sorting takes 2284940405 to complete

    找不到更多核的機(jī)器,有條件的同學(xué)可以測(cè)試一把。另外,Brain Goetz (Java Concurrency in Practice作者) 的文章可參考,他的測(cè)試?yán)语@示了不錯(cuò)的性能提升(最高17倍在32cpu系統(tǒng)),一般4核或8核的能達(dá)到3倍或5倍的SPEEDUP

    Java thread and practice: Stick a fork in it Part 1 - http://www.ibm.com/developerworks/java/library/j-jtp11137.html

    package forkjoin;

    import jsr166y.forkjoin.RecursiveAction;
    import jsr166y.forkjoin.ForkJoinPool;
    import java.util.Random;
    import java.util.Arrays;

    public class SortTask extends RecursiveAction {

        
    final static int ARRAY_LENGTH = 10000000;

        
    final static int THRESHOLD = 3000000;

        
    final int[] array;

        
    final int lo;

        
    final int hi;

        
    public SortTask(int[] array, int lo, int hi) {
            
    this.array = array;
            
    this.lo = lo;
            
    this.hi = hi;
        }


        
    private void sequentiallySort(int[] array, int lo, int hi) {
            
    int[] units = new int[hi - lo + 1];
            
    for (int i = lo; i <= hi; i++)
                units[i 
    - lo] = array[i];
            Arrays.sort(units);
            
    for (int i = lo; i <= hi; i++)
                array[i] 
    = units[i - lo];
        }


        
    private void merge(int[] array, int lo, int mid, int hi) {

            
    int[] units = new int[hi - lo + 1];
            
    int i = lo;
            
    int j = mid + 1;

            
    for (int k = 0; k < units.length; k++{
                
    if (array[i] <= array[j])
                    units[k] 
    = array[i++];
                
    else if (array[i] > array[j])
                    units[k] 
    = array[j++];

                
    if (i > mid)
                    
    for (int m = j; m <= hi; m++)
                        units[
    ++k] = array[m];
                
    else if (j > hi)
                    
    for (int m = i; m <= mid; m++)
                        units[
    ++k] = array[m];
            }


            
    for (int k = lo; k <= hi; k++)
                array[k] 
    = units[k - lo];

        }


        
    protected void compute() {
            
    try {
                
    if (hi - lo < THRESHOLD)
                    sequentiallySort(array, lo, hi);
                
    else {
                    
    int mid = (lo + hi) >>> 1;
                    
    //System.out.println(mid);
                    forkJoin(new SortTask(array, lo, mid), new SortTask(array, mid + 1, hi));

                    merge(array, lo, mid, hi);
                }

            }
     catch (Throwable t) {
                t.printStackTrace();
            }

        }


        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            
    int[] sample = new int[ARRAY_LENGTH];

            System.out.println(
    "Number of processor"
                    
    + Runtime.getRuntime().availableProcessors());
            
            Random seed 
    = new Random(47);

            
    for (int i = 0; i < sample.length; i++{
                sample[i] 
    = seed.nextInt();
            }


            
    long start = System.nanoTime();
            Arrays.sort(sample);
            
    long duration = System.nanoTime() - start;


            System.out.println(
    "===============Sequential==================");
            System.out.println(
    "Sorting takes " + duration + " to compelte");

            
    int[] sample2 = new int[ARRAY_LENGTH];

            
    for (int i = 0; i < sample2.length; i++{
                sample2[i] 
    = seed.nextInt();
            }


            ForkJoinPool pool 
    = new ForkJoinPool(Runtime.getRuntime()
                    .availableProcessors());
            SortTask st 
    = new SortTask(sample2, 0, sample2.length - 1);

            start 
    = System.nanoTime();
            pool.execute(st);
            
    while (!st.isDone()) {
            }

            duration 
    = System.nanoTime() - start;

            System.out.println(
    "===============ForkJoin==================");
            System.out.println(
    "Sorting takes " + duration + " to compelte");
            
        }


    }


    posted @ 2008-06-26 10:11 漢辰 閱讀(1320) | 評(píng)論 (2)編輯 收藏

    主站蜘蛛池模板: 阿v免费在线观看| 亚洲综合色区在线观看| 久久亚洲精品成人无码| 国产亚洲色视频在线| 99精品视频在线视频免费观看| 羞羞视频免费网站在线看| 亚洲阿v天堂在线2017免费| 黄页免费在线观看| 一本色道久久88—综合亚洲精品| 亚洲精品在线视频| 国产精品1024永久免费视频| 国产亚洲精品国产福利在线观看| 亚洲自偷自偷精品| 亚洲国产中文v高清在线观看| 国产成人福利免费视频| 久久久久久毛片免费看| 国产亚洲玖玖玖在线观看| 亚洲国产精品无码专区影院| 日韩毛片无码永久免费看| 99re免费视频| 亚洲精品国产日韩无码AV永久免费网| 亚洲娇小性xxxx| 亚洲成av人在线视| 免费在线观看黄网| 一本无码人妻在中文字幕免费| 日本免费高清视频| 无码日韩人妻AV一区免费l| 亚洲综合偷自成人网第页色| 国产AV无码专区亚洲A∨毛片| 免费人成视频x8x8入口| 性做久久久久久久免费看| 日本亚洲欧洲免费天堂午夜看片女人员| 国产精品亚洲片在线花蝴蝶| 亚洲无砖砖区免费| 亚洲国产成人久久精品动漫 | 免费**毛片在线播放直播| 我的小后妈韩剧在线看免费高清版| a级毛片免费全部播放| 一区二区三区精品高清视频免费在线播放 | 亚洲线精品一区二区三区影音先锋| 国产高清免费观看|