• <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>

            The Fourth Dimension Space

            枯葉北風寒,忽然年以殘,念往昔,語默心酸。二十光陰無一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢令

            2016年12月31日 #

            人生的高度不在于你學會了什么技術,會做什么事,而取決于價值觀(value)與遠見(vision)

            待寫

            posted @ 2016-12-31 22:01 abilitytao 閱讀(13020) | 評論 (0)編輯 收藏

            2015年1月5日 #

            什么是市盈率或稱本益比(P/E Ratio)?

            本益比是選股票的重要指標之一,說起本益比這個詞,相信很多人都有聽過,大部分投資者也自認明白和了解本益比的含義,但當你叫他和你解釋時,他卻說了半天你也沒聽懂。 一開始我也以為自己明白和了解本益比,因為本身讀金融系的關系,我知道本益比的計算方式,但最近我終于明白,知道計算本益比和了解本益比是兩回事,方程式始終只是方程式,必須探討其中的含義,了解方程式的的由來,才能一探本益比的真實意義,讓本益比成為選股的武器。 首先先放百度百科的本益比含義:
            本益比(price/earning,簡稱P/E) 本益比是某種股票普通股每股市價(股價)與每股盈利的比率。也稱“股價收益比率”或“市價盈利比率(簡稱市盈率)”。英文用PER表示。其計算公式為:本益比=股票市價/每股純利(年)
            本益比是某種股票普通股每股市價與每股盈利的比率。所以它也稱為股價收益比率或市價盈利比率。 如此,本益比應該是通常所說的市盈率。
            馬來西亞和新加坡財經報章一般將其稱為“本益比”,而香港和中國一般稱作“市盈率”,其實只是稱呼不同,但內容和含義相同,英文則稱為P/E RATIO或者PER,就是PRICE/EARNING RATIO的縮寫。
            本益比的計算方式:
            Market Value per Share(股票當今價格)
            Earnings per Share (EPS)(每股盈利)
            股票當今價格也就是股票閉市的價格。
            每股盈利則是公司盈利除于股票數量。
            例子:一間上市公司擁有100萬股,2012年度公司盈利為50萬。
            每股盈利就等于 50萬÷100萬 = 0.50 (每股分得0.50的盈利)
            EPS(Earning Per Share) 就是0.50
            如果該公司閉市價格為RM2.00 本益比就是2.00/0.50 = 4倍
            用白話解釋本益比,一句就搞定了: 本益比其實就是回本年份,如果該股本益比為4倍,代表我們購買該股,4年才能回本。
            股價就好比你的投資額,EPS就是我們的回報。 如果該股閉市價格RM2.00,我們購買該股本錢就RM2.00,EPS就是我們的回報,如果該股EPS是0.50,代表我們投資RM2.00,每年能拿回0.50,要4年才能回本,這4年其實就是我們常說的本益比。
            預測本益比就是根據該公司今年的盈利,預測明年的盈利,再計算出來的本益比。 本益比其實就是回本年份,如果該公司沒有盈利,你永遠都不能回本,那么該公司就不會有本益比。 馬航就是沒有本益比的最好例子。 很多人可能會說,如果本益比代表回本年份,那么是不是越低越好?那么就表示越快回本。 其實不然,本益比雖然是代表著回本年份,但不一定越低越好,要視公司而定,很多藍籌股的本益比都很高,也有很多垃圾股本益比都很低。 一般上互聯網科技股的本益比都很高。 馬來西亞基本面大師冷眼覺得本益比在10以下的公司,都比較合理,本益比超過10,該股有被高估的可能。
            轉自百度知道。

            posted @ 2015-01-05 17:20 abilitytao 閱讀(552) | 評論 (0)編輯 收藏

            2014年11月19日 #

            WebSocket的一些資料

            http://www.cnblogs.com/imayi/archive/2012/05/05/2485343.html

            posted @ 2014-11-19 22:13 abilitytao 閱讀(894) | 評論 (0)編輯 收藏

            2014年11月11日 #

            Unix下 壓縮和解壓縮命令

            范例: 

            .tar 
            解包:tar -xvf FileName.tar 
            打包:tar -cvf FileName.tar DirName 
            (注:tar是打包,不是壓縮?。?nbsp;
            --------------------------------------------- 
            .gz 
            解壓1:gunzip FileName.gz 
            解壓2:gzip -d FileName.gz 
            壓縮:gzip FileName 
            .tar.gz 
            解壓:tar zxvf FileName.tar.gz 
            壓縮:tar zcvf FileName.tar.gz DirName 
            --------------------------------------------- 
            .bz2 
            解壓1:bzip2 -d FileName.bz2 
            解壓2:bunzip2 FileName.bz2 
            壓縮: bzip2 -z FileName 
            .tar.bz2 
            解壓:tar jxvf FileName.tar.bz2 
            壓縮:tar jcvf FileName.tar.bz2 DirName 
            --------------------------------------------- 
            .bz 
            解壓1:bzip2 -d FileName.bz 
            解壓2:bunzip2 FileName.bz 
            壓縮:未知 
            --------------------------------------------- 
            .tar.bz 
            解壓:tar jxvf FileName.tar.bz 
            壓縮:未知 
            --------------------------------------------- 
            .Z 
            解壓:uncompress FileName.Z 
            壓縮:compress FileName 
            .tar.Z 
            解壓:tar Zxvf FileName.tar.Z 
            壓縮:tar Zcvf FileName.tar.Z DirName 
            --------------------------------------------- 
            .tgz 
            解壓:tar zxvf FileName.tgz 
            壓縮:未知 
            .tar.tgz 
            解壓:tar zxvf FileName.tar.tgz 
            壓縮:tar zcvf FileName.tar.tgz FileName 
            --------------------------------------------- 
            .zip 
            解壓:unzip FileName.zip 
            壓縮:zip FileName.zip DirName 
            --------------------------------------------- 
            .rar 
            解壓:rar a FileName.rar 
            壓縮:rar e FileName.rar 

            --------------------------------------------- 
            壓縮解壓縮 
            zip文件: 
            功能說明:壓縮文件。 

            語  法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目錄>][-ll][-n <字尾字符串>][-t <日期時間>][-<壓縮效率>][壓縮文件][文件...][-i <范本樣式>][-x <范本樣式>] 

            補充說明:zip是個使用廣泛的壓縮程序,文件經它壓縮后會另外產生具有".zip"擴展名的壓縮文件。 

            參  數: 
            -A 調整可執行的自動解壓縮文件。 
            -b<工作目錄> 指定暫時存放文件的目錄。 

            -c 替每個被壓縮的文件加上注釋。 
            -d 從壓縮文件內刪除指定的文件。 
            -D 壓縮文件內不建立目錄名稱。 
            -f 此參數的效果和指定"-u"參數類似,但不僅更新既有文件,如果某些文件原本不存在于壓縮文件內,使用本參數會一并將其加入壓縮文件中。 
            -F 嘗試修復已損壞的壓縮文件。 
            -g 將文件壓縮后附加在既有的壓縮文件之后,而非另行建立新的壓縮文件。 
            -h 在線幫助。 
            -i<范本樣式> 只壓縮符合條件的文件。 
            -j 只保存文件名稱及其內容,而不存放任何目錄名稱。 
            -J 刪除壓縮文件前面不必要的數據。 
            -k 使用MS-DOS兼容格式的文件名稱。 
            -l 壓縮文件時,把LF字符置換成LF+CR字符。 
            -ll 壓縮文件時,把LF+CR字符置換成LF字符。 
            -L 顯示版權信息。 
            -m 將文件壓縮并加入壓縮文件后,刪除原始文件,即把文件移到壓縮文件中。 
            -n<字尾字符串> 不壓縮具有特定字尾字符串的文件。 
            -o 以壓縮文件內擁有最新更改時間的文件為準,將壓縮文件的更改時間設成和該文件相同。 
            -q 不顯示指令執行過程。 
            -r 遞歸處理,將指定目錄下的所有文件和子目錄一并處理。 
            -S 包含系統和隱藏文件。 
            -t<日期時間> 把壓縮文件的日期設成指定的日期。 
            -T 檢查備份文件內的每個文件是否正確無誤。 
            -u 更換較新的文件到壓縮文件內。 
            -v 顯示指令執行過程或顯示版本信息。 
            -V 保存VMS操作系統的文件屬性。 
            -w 在文件名稱里假如版本編號,本參數僅在VMS操作系統下有效。 
            -x<范本樣式> 壓縮時排除符合條件的文件。 
            -X 不保存額外的文件屬性。 
            -y 直接保存符號連接,而非該連接所指向的文件,本參數僅在UNIX之類的系統下有效。 
            -z 替壓縮文件加上注釋。 
            -$ 保存第一個被壓縮文件所在磁盤的卷冊名稱。 
            -<壓縮效率> 壓縮效率是一個介于1-9的數值。 

            rar文件: 

            Rar 用法: rar <命令> -<選項1> ....-<選項N> <操作文檔> <文件...> <@文件列表...> <解壓路徑> h/](J k!P x l"w:G v K q7i6v 

              通常rar命令由一個主命令加若干選項(可選)構成,操作文檔為操作施加的.rar文件對象,文件或文件列表為對操作文檔實現修飾的具體文件或目錄(可選)。 

              Y0`-o r#V r n ~"p9f5N rar常用命令主要有: 

              1) a 添加文件到操作文檔 舉例rar a test.rar file1.txt 

              若test.rar文件不存在,則打包file1.txt文件成test.rar rar a test.rar file2.txt 若test.rar文件已經存在,則添加file2.txt文件到test.rar中(這樣 test.rar中就有兩個文件了)注,如果操作文檔中已有某文件的一份拷貝,則a命令更新該文件 另,對目錄也可以進行操作 eg. rar a test.rar dir1 。 

              2) e test.rar 注,用e解壓的話,不僅原來的file1.txt和file2.txt被解壓到當前目錄,就連dir1里面的所有文件也被解壓到當前目錄下,不能保持壓縮前的目錄結構,如果想保持壓縮前的目錄結構,用x解壓。 

              3) c 對操作文檔添加說明注釋 eg. rar c test.rar 

             ?。〞霈FReading comment from stdin字樣,然后輸入一行或多行注釋,以ctrl+d結束)。 

              4) cf 添加文件注釋,類似上面的c,不過這個是對壓縮文檔中每個文件進行注釋 cw 將文檔注釋寫入文件 eg. rar cw test.rar comment.txt。 

              5) d 從文檔中刪除文件 eg. rar d test.rar file1.txt e 

              將文件解壓到當前目錄 eg. rar。 

              6) e test.rar 注,用e解壓的話,不僅原來的file1.txt和file2.txt被解壓到當前目錄,就連dir1里面的所有文件也被解壓到當前目錄下,不能保持壓縮前的目錄結構,如果想保持壓縮前的目錄結構,用x解壓。 

              7) r 修復文檔 eg. rar r test.rar 

              當rar文件有問題時,可以嘗試用該命令進行修復(鬼知道有多少用) 。 

              8) s 轉換文檔成自解壓文檔 eg. rar s test.rar 

              會生成一個test.sfx的可執行文檔,運行它的效果就相當于rar x test.rar, 適合于向沒有rar的用戶傳輸文件。 

              9) t 檢測文檔 eg. rar t test.rar 

              檢測test.rar的完整性。 

              10) k 鎖定文檔 eg. rar k test.rar 

              鎖定文檔后,該文檔就無法進行任何更新操作了。 

            .Z文件: 
            命令: compress 
            格式: compress 選項 文件列表 
            功能: 用Lempel-ziv壓縮方法來壓縮文件或壓縮標準輸入 
            選項: -r 遞歸操作,如果指定目錄變元,則壓縮該目錄及其子目錄中的所有文件。 
            -c 將壓縮數據返回標準輸出,而缺省情況下為壓縮文件時將壓縮數據返回文件。 
            -v 顯示每個文件夾的壓縮百分比。 
            解釋: 在用compress壓縮文件時,將在原文件名之后加上擴展名.Z。如果不指定文件,則壓縮標準輸入,其結果返回標準輸出。 
            實例: 目的:壓縮/mnt/lgx/a1.doc文件 
            命令:#compress /mnt/lgx/a1.doc 
            結果:壓縮后生成a1.doc.Z文件。 

            命令: uncompress 
            格式: uncompress 選項 文件列表 
            功能: 解壓縮用compress 程序壓縮過的文件 
            選項: -c 它將壓縮數據發往標準輸出而不是改寫舊的壓縮文件 
            解釋: 如果不指定文件,則解壓縮標準輸入。缺省-c時,為解壓縮。 
            實例: 目的:解壓縮/mnt/lgx/a1.doc.Z 
            命令:# uncompress /mnt/lgx/a1.doc.Z 

            .gz文件: 

            命令: gzip 
            格式: gzip 選項 文件目錄列表 
            功能: 用Lempel-ziv編碼壓縮文件 
            選項: -c 壓縮結果寫入標準輸出,原文件保持不變。缺省時gzip將原文件壓縮為.gz文件,并刪除原文件。 
            -v 輸出處理信息。 
            -d 解壓縮指定文件。 
            -t 測試壓縮文件的完整性。 
            解釋: 值得一提的是,gzip比compress壓縮更加有效。 
            實例: 目的:壓縮/mnt/lgx/a1.doc 
            命令:#gzip -v /mnt/lgx/a1.doc 
            結果:產生a1.doc.gz的壓縮文件 

            命令: gunzip 
            格式: gunzip 選項 文件列表 
            功能: 解壓縮用gzip命令(以及compress和zip命令)壓縮過的文件 
            選項: -c 將輸出寫入標準輸出,原文件保持不變。缺省時,gunzip將壓縮文件變成解壓縮文件。 
            -l 列出壓縮文件中的文件而不解壓縮。 
            -r 遞歸解壓縮,深入目錄結構中,解壓縮命令行變元所指定目錄中的所有子目錄內的文件。 
            實例: 目的:解壓縮/mnt/lgx/a1.doc.gz 
            命令:#gunzip /mnt/lgx/a1.doc.gz 

            .tar文件: 

            命令: tar 
            格式: tar 選項 文件目錄列表 
            功能: 對文件目錄進行打包備份 
            選項: -c 建立新的歸檔文件 
            -r 向歸檔文件末尾追加文件 
            -x 從歸檔文件中解出文件 
            -O 將文件解開到標準輸出 
            -v 處理過程中輸出相關信息 
            -f 對普通文件操作 
            -z 調用gzip來壓縮歸檔文件,與-x聯用時調用gzip完成解壓縮 
            -Z 調用compress來壓縮歸檔文件,與-x聯用時調用compress完成解壓縮 
            實例1: 目的:用tar打包一個目錄下的文件 
            命令:#tar -cvf /mnt/lgx/a1.doc 
            結果:產生一個以.tar為擴展名的打包文件 
            實例2: 目的:用tar解開打包文件 
            命令:#tar -xvf /mnt/lgx/a1.doc.tar 
            附加說明:在通常情況下,tar打包與gzip(壓縮)經常聯合使用,效果更好。方法是: 
            首先用tar打包,如:#tar -cvf /mnt/lgx/a1.doc (產生a1.doc.tar文件) 
            然后用gzip壓縮a1.doc.tar文件,如:#gzip /mnt/lgx/a1.doc.tar (產生a1.doc.tar.gz文件) 
            實例3: 目的:解壓a1.doc.tar.gz文件 
            方法1: 
            #gzip -dc /mnt/lgx/a1.doc.tar.gz (產生a1.doc.tar文件) 
            #tar -xvf /mnt/lgx/a1.doc.tar (產生a1.doc文件) 
            這兩次命令也可使用管道功能,把兩個命令合二為一: 
            #gzip -dc /mnt/lgx/a1.doc.tar.gz | tar -xvf 
            方法2:使用tar提供的自動調用gzip解壓縮功能 
            #tar -xzvf /mnt/lgx/a1.doc.tar.gz 
            經過tar打包后,也可用compress命令壓縮(注:gzip比compress壓縮更加有效),產生一個以.tar.Z的文件,在解包時,可先用 “uncompress 文件名”格式解壓,然后用“tar -xvf 文件名”解包。也可直接調用“tar -Zxvf 文件名”解包。

            轉自:http://bjxuguoli.iteye.com/blog/761964

            posted @ 2014-11-11 23:34 abilitytao 閱讀(634) | 評論 (0)編輯 收藏

            2014年10月24日 #

            Windows上轉unix目錄

            pushd \\msad\root\ap\apbo\ku\USERS\weitaol\Desktop

            運行命令
            V:\AP\APBO\KU\USERS\weitaol\Desktop\TAP\Course\System Architecture\SOAP & REST A
            ssessment\mybank>xjc -b .\src\binding.xml -d  .\src\ -p src.java.mybank.soap.generated .\src\src\xml\SOAPRequestResponse.xsd

            posted @ 2014-10-24 17:28 abilitytao 閱讀(340) | 評論 (0)編輯 收藏

            2014年10月15日 #

            數據庫練習

            計算兩日期間隔天數
            values (days(current date) - days('2014-09-01'))

            去出某一字符串的的一個單詞,空格為分隔符
            select substr(title,1,instr(title,' ')-1) from titles

            將字符串的一個空格替換為'--hello--'
            select substr(title,1,locate(' ',title)-1)  || '--hello--' ||  substr(title,locate(' ',title)+1) from titles

            db2生成隨機數
            select case when price is null then INT(rand()*100) else price end from titles

            兩日期相差多少月,64代表月。參數可以更改求出周,小時等等。
            select TIMESTAMPDIFF(64,char(TIMESTAMP(CURRENT DATE) - TIMESTAMP(pubdate)) )from titles

            有關db2日期操作可參考此博客。
            http://www.cnblogs.com/wanghonghu/archive/2012/05/25/2518604.html

            建立數據表,有generated always列
            create table t1
            (
            c1 char(30),
            c2 double,
            c3 int not null generated always as identity
                  (start with 100, increment by 5)
            )
            第一次更新用insert into t1(c1,c2,c3) values('123',34,default)
            以后用 insert into t1(c1,c2) values('hi',45)

            如果是generated by default
            create table t1
            (
            c1 char(30),
            c2 double,
            c3 int not null generated by default as identity
            (start with 100, increment by 5)
            )
            如果插入時只有兩個參數,就按默認的來
            如果三個參數,就是插入的那個數
            默認生成的第三個數可以修改,系統會有記錄,即使修改了也會從上一次的默認位置開始疊加。不會再回到100.

            --select * from authors

            --select au_lname, au_fname from authors where state ='CA'

            --select * from publishers

            --select distinct state from publishers

            --select *from titles

            --select * from titles where price is null

            -- select case when price is null then 0 else price end from titles-- it works!!!!!!!!!!

            -- 4 Functions

            --select varchar_format(current date - date('2011-01-01') + date, 'DD-MM-YY') as newDate,

            -- varchar_format(date,'DD-MM-YY') as olddate from sales

            --values current date - date('2014-01-01') + date('2014-01-02')

            --select *from roysched

            --select hex(lorange) from roysched

            --select * from titles where price in (20,19) -- in one shot ZANZANZANZANZAN!!!

            select case type when 'business' then Title else 'other' end from titles 聯系條件語句并顯示成不同的屬性

            -----------------------------------------------------------------------------------------------

            --select * from authors

            --select au_lname, au_fname from authors where state ='CA'

            --select * from publishers

            --select distinct state from publishers

            --select *from titles

            --select * from titles where price is null

            -- select case when price is null then 0 else price end from titles-- it works!!!!!!!!!!

            -- 4 Functions

            --select varchar_format(current date - date('2011-01-01') + date, 'DD-MM-YY') as newDate,

            -- varchar_format(date,'DD-MM-YY') as olddate from sales

            --values current date - date('2014-01-01') + date('2014-01-02')

            --select *from roysched

            --select hex(lorange) from roysched

            --select * from titles where price in (20,19) -- in one shot ZANZANZANZANZAN!!!

            --select case type when 'business' then Title else 'other' end from titles

            --select syscolumns.length from syscolumns where syscolumns.id = 'titles' and syscolumns.name = 'title'

            --5 Grouping

            --select (days(max(pubdate)) - days(min(pubdate)) )/365 from titles

            --select title from titles order by length(title)

            --select *from titles

            --select count(*) from authors group by city

            --select title from titles where length(title) = (select max(length(title)) from titles)

            --select coalesce(price,0) from titles -- yuan lai bushi yong is null shi yong zhe ge a!!!!

            --select length(price) from titles

            /*

            select title from titles where length(title) >= all

            (

            select length(title) from titles

            )

            */

            --select pubdate from titles

            /*

            select title,pubdate from titles where pubdate >= all

            (

            select pubdate from titles

            )

            */

            --select count(*) from sales group by stor_num

            --select * from sales

            --select * from publishers

            --select * from titles as a inner join publishers as b on a.pub_id = b.pub_id

            --select title,city,a.pub_id from titles as a inner join publishers as b on a.pub_id = b.pub_id where city not in ('Boston')

            --select * from psales

            /*

            select b.ord_num,b.discount,d.discounttype from psales as a inner join salesdetail as b on a.stor_id = b. stor_id and a.ord_num = b.ord_num

            inner join stores as c on a.stor_id = c.stor_id inner join discounts as d on c.stor_id = d.stor_id order by b.ord_num

            */

            --select * from authors

            --select * from publishers

            --select * from authors as a inner join publishers as b on a.city = b.city

            --select sum(qty) from salesdetail

            --select pub_name, count(distinct type) from publishers as a inner join titles as b on a.pub_id = b.pub_id group by pub_name

            --select *from titleauthor

            --7 Sub-Queries

            /*

            select pub_name from publishers where pub_id in

            (

            select pub_id from titles

            )

            */

            --select * from publishers

            --nice !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

            /*

            select type,title,t1.price

            from titles as t1

            where price > (select avg(price) from titles as t2 where t2.type = t1.type)

            */

            -- nice !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

             

            select title,t1.price

            from titles as t1

            where price > all(select coalesce(price,0) from titles as t2 where t2.type != t1.type)

             

            --select * from titles

            --select t1.type,t1.title,t1.price,(select avg(price) from titles as t2 where t2.type = t1.type)

            --from titles as t1

            --where price > (select avg(price) from titles as t2 where t2.type = t1.type)

             

            --select avg(price) from titles

            --select abs(13.93750000000000000000000000- price) from titles

            --select coalesce(abs((select avg(price) from titles) - price),0) from titles


            --select count(*) as ANS from SB_AUCTION where (days(enddate) - days(startdate) < 10)

            /*

            select description, enddate, reserve from SB_Auction inner join sb_item on SB_Auction.itemid = sb_item.itemid

            where (date('2011-02-20') >= startdate and date('2011-02-20') <= enddate) order by reserve desc

            */

             

            --select * from sb_bid

            --select name from (sb_bid as a inner join sb_auction as b on a.bidder = b.userid) inner join sb_user as c on b.userid = c.userid group by name

            --select * from authors

            --select newA.name from

            --(

            --select name,c.itemid from (sb_user as a inner join sb_auction as b on a.userid = b.userid)

            -- inner join sb_item as c on b.itemid = c.itemid

            --) AS newA

            --select * from sb_auction

            /*

            create view weitaol_view

            as

            select c.auctionid, max(amount) as winning_bid from sb_auction as a inner join sb_user as b on a.winnerid = b.userid

            inner join sb_bid as c on a.auctionid = c.auctionid where a.state = 'sold' group by c.auctionid

            */

            --select * from weitaol_view

             

            select enddate, description,coalesce(name,'==') as name ,coalesce(c.winning_bid,0) as winning_bid

            from sb_auction as a inner join sb_item as b on a.itemid = b.itemid

            left join sb_user on a.winnerid = sb_user.userid

            left join weitaol_view as c on a.auctionid = c.auctionid

            /*

            select * from sb_auction

            */




            posted @ 2014-10-15 23:39 abilitytao 閱讀(447) | 評論 (0)編輯 收藏

            2014年10月4日 #

            Scala數組操作

            scala中的數組比java的數組強大很多   
                1、定長數組:長度不變的數組Array,如:聲明一個長度為10的整形數組,val arr = Array[Int](10);聲明并初始化一個字符串數組: val arrStr = Array(“wo”,”cha”,”yo”)。訪問數組方式:訪問arrStr第一個元素,arrStr(1)即可
                2、變長數組(即數組緩沖):java中有ArrayList和scala中的ArrayBuffer等效;但是ArrayBuffer更加強大,通過下面的事列來熟悉ArrayBuffer:
            import collection.mutable.ArrayBuffer
                val arrbuff1 = ArrayBuffer[Int]()
                val arrBuff2 = ArrayBuffer(1,3,4,-1,-4)
                arrbuff1 += 23    //用+=在尾端添加元素
                arrbuff1 += (2,3,4,32) //同時在尾端添加多個元素
                arrbuff1 ++= arrBuff2 //可以用 ++=操作符追加任何集合
                arrbuff1 ++= Array(2,43,88,66)
                arrbuff1.trimEnd(2) //移除最后的2個元素
                arrbuff1.remove(2)  //移除arr(2+1)個元素
                arrbuff1.remove(2,4) //從第三個元素開始移除4個元素
                val arr = arrbuff1.toArray //將數組緩沖轉換為Array
                val arrbuff2 = arr.toBuffer //將Array轉換為數組緩沖
                3、遍歷數組和數組緩沖:在java中數組和數組列表/向量上語法有些不同。scala則更加統一,通常情況,我們可以用相同的代碼處理這兩種數據結構,for(…) yield 循環創建一個類型和原集合類型相同的新集合。for循環中還可以帶守衛:在for中用if來實現。
                for(i <- 0 until arrbuff1.length) yield arrbuff1(i) * 2 //將得到ArrayBuffer(2,6,4,-2,-4)
                for(i <- 0 until (arrbuff1.length,2)) yield arrbuff1(i) * 2 //將得到ArrayBuffer(12,-4)
                for(elem <-0 arrbuff1) print(elem) //如果不需要使用下標,用這種方式最簡單了
                for(i <- arrbuff1 if arrbuff1 > 0) print i //打印出arrbuff1中為整數的值
                arrbuff1.filter( _ > 0).map{ 2 * _} //生成arrbuff1中的正數的兩倍的新集合
                arrbuff1.filter {_ > 0} map {2 * _} //另一種寫法
                4、常用算法:scala有很多便捷內建函數,如
                arrbuff1.sum //對arrbuff1元素求和
                Array("asd","sdf","ss").max //求最大元素
                arrbuff1.sorted(_ < _)  //將arrbuff1元素從小到大排序
                arrbuff1.sorted(_ > _)  //從大到小排序
                util.Sorting.quickSort(Array) //針對數組排序,單不能對數組緩沖排序
                val arr = Array(1,23,4,2,45)
                arr.mkString(",") //指定分割符
                arr.mkString("(",",",")") //指定前綴、分隔符、后綴
            更多函數參見Scaladoc
                5、多維數組:
            val matrix = Array.ofDim[Int](5,4) //三行四列的二維數組
            matrix(2)(3) //訪問第二行、第三個元素
                6、scala數組和java互操作:由于scala數組是用java數組實現的,所以可以在java和scala之間來回傳遞,引入scala.collectin.JavaConversion ,可以在代碼中使用scala緩沖,在調用java方法時,這些對象會被自動包裝成java列表。反過來講,引入scala.collection.asScalaBuffer時,當java方法返回java.util.List時,我們可以讓它轉換成一個Buffer

            轉自:http://www.kankanews.com/ICkengine/archives/128572.shtml

            posted @ 2014-10-04 11:52 abilitytao 閱讀(32058) | 評論 (3)編輯 收藏

            2014年9月29日 #

            C++ 泛型編程練習 Adaptor Functor & Helper Function

            #include<iostream>
            using namespace std;

            template <class OutputIterator, class Iterator, class predicate>
                void copy(OutputIterator o, Iterator f, Iterator l, predicate p)
                {
                    while(f!=l)
                    {
                        if(p(*f))
                        {
                            *o = *f;
                            ++f;
                            ++o;
                        }
                        else
                        {
                            ++f;
                        }
                    }

                }
            template <class Predicate>
            class negate
            {
                Predicate p;
            public :
                typedef typename Predicate::value_type value_type;
                negate(const Predicate &pred):p(pred){}
                bool operator()(const value_type v)const
                {
                    return !p(v);
                }
            };

            template<class Number>
            struct smallerThanX
            {
                typedef Number value_type;
                int x;
                smallerThanX(int x):x(x)
                {

                }

                bool operator()(const Number& n) const
                {
                    return n< this->x;
                }
            };

            template <class Predicate>
            inline negate<Predicate > NOT (const Predicate &p)
            {
                return negate<Predicate>(p);
            }


            int main()
            {
                int a[] = {1,2,3,4,5,6,7,8};
                int *b = new int [10]; 
                copy(b,a,a+8,NOT(smallerThanX<int>(5)));
                return 0;
            }

            這種方式實在是有點難看啊。。。 代碼不仔細看還看不懂,不知道為什么要這樣寫呢。。。

            posted @ 2014-09-29 23:50 abilitytao 閱讀(483) | 評論 (0)編輯 收藏

            2014年9月22日 #

            C# Dictionary容器練習

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;

            class MagicDictionary
            {

                private Dictionary<String, String> dic;

                public MagicDictionary()
                {
                    dic = new Dictionary<stringstring>();

                }

                void Add(String key, String value)
                {
                    if (dic.ContainsKey(key)&&dic[key]==value)
                        throw new Exception("KeyValuePair already exsits");
                    dic.Add(key, value);
                }

                void Remove(String key)
                {
                    if (!dic.ContainsKey(key))
                        throw new Exception("it doesn't exsit");
                    dic.Remove(key);
                }

                void Set(String key, String value)
                {
                    if (dic.ContainsKey(key))
                        dic[key] = value;
                    else
                        dic.Add(key, value);
                }

                String Get(String key)
                {
                    return dic[key];
                }

                void PrintAll()
                {
                    foreach (KeyValuePair<String, String> i in dic)
                    {
                        Console.WriteLine(i.Key + " " + i.Value);
                    }
                }

                String TryGetValue(String key)
                {
                    if (dic.ContainsKey(key))
                        return dic[key];
                    else
                        return "";
                }

                public String this[String key]
                {
                    set
                    {
                        dic[key] = value;
                    }
                    get
                    {
                        return dic[key];
                    }
                }

                public static void Main()
                {

                    try
                    {
                        MagicDictionary t = new MagicDictionary();
                        t.Add("Hi", "Hello");
                      //  t.Add("Hi", "Hello");
                        t.Add("What", "ever");
                        t.Add("Pretty", "Girl");
                        t.Add("Apple", "Google");
                        t.PrintAll();
                        t.Remove("Pretty");
                        t.Remove("#$@#*$");
                        t.Set("What", "Whatever");
                        if (t.TryGetValue("Hi") != "")
                            Console.WriteLine("OK");
                        else
                            Console.WriteLine("Bu OK");

                        if (t.TryGetValue("Appoe") != "")
                            Console.WriteLine("OK");
                        else
                            Console.WriteLine("Bu OK");
                        Console.WriteLine(t.Get("Apple"));
                        t["Apple"] = "BIG GOOGLE";

                        t.PrintAll();
                    }
                    catch (System.Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.Message);
                    }

                }

            }

            posted @ 2014-09-22 19:06 abilitytao 閱讀(423) | 評論 (0)編輯 收藏

            2014年9月21日 #

            C# 猜數字小游戲(IDisposable接口練習)

            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Text;

            class iTimer:IDisposable
            {
                String mes;
                DateTime s;
                public iTimer(String mes)
                {
                    this.mes = mes;
                    s = DateTime.Now;
                }

                public void Dispose()
                {

                    DateTime t = DateTime.Now;
                    TimeSpan ts = t - s;
                    Console.Error.WriteLine("spent time(in Milliseconds):");
                    Console.Error.WriteLine(ts.TotalMilliseconds);

                }

                public static void Main()
                {

                    using (iTimer t = new iTimer("game"))
                    {
                        int ans = 10;
                        int input = Int32.Parse(Console.ReadLine());

                        while(ans!=input)
                        {
                            Console.WriteLine("please try again.");
                            input = Int32.Parse(Console.ReadLine());
                        }
                        Console.WriteLine("Correct!");
                            
                    }

                    Console.Error.WriteLine("the program is terminated");
                    

                }


            }

            posted @ 2014-09-21 12:26 abilitytao 閱讀(539) | 評論 (0)編輯 收藏

            僅列出標題  下一頁
            亚洲精品乱码久久久久久蜜桃| 久久99精品国产麻豆宅宅| 久久99国产精品久久| 久久A级毛片免费观看| 成人久久免费网站| 久久综合精品国产二区无码| 亚洲国产欧洲综合997久久| 午夜天堂精品久久久久| 久久夜色精品国产网站| 国产精品久久久久久一区二区三区| 久久精品国产亚洲AV无码麻豆| 国产精品一区二区久久不卡| 91久久精品91久久性色| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 狠色狠色狠狠色综合久久 | 久久九九久精品国产免费直播| 亚洲天堂久久久| 欧美丰满熟妇BBB久久久| 九九精品99久久久香蕉| 国产99久久九九精品无码| 亚洲国产精品嫩草影院久久| 7777精品久久久大香线蕉| 精品久久久久久国产91| 亚洲精品国产综合久久一线| 国内精品久久久久影院亚洲| 久久精品人人做人人爽97| 国内精品久久久久久不卡影院| 热久久国产欧美一区二区精品| 77777亚洲午夜久久多人| 亚洲国产精品人久久| 国产成人精品综合久久久久| 久久综合久久综合九色| 国产99久久久国产精品小说| 久久91精品国产91久久小草| 久久青青草视频| 亚洲一区中文字幕久久| 久久99热这里只有精品国产| 久久se精品一区精品二区国产| 久久精品人人做人人爽电影蜜月| 久久青青草原精品国产不卡| 99久久无码一区人妻a黑|