The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

2016年12月31日 #

人生的高度不在于你学会了什么技术,会做什么事,而取决于价值观(value)与远见(vision)

待写

posted @ 2016-12-31 22:01 abilitytao 阅读(12997) | 评论 (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 阅读(521) | 评论 (0)编辑 收藏

2014年11月19日 #

WebSocket的一些资料

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

posted @ 2014-11-19 22:13 abilitytao 阅读(814) | 评论 (0)编辑 收藏

2014年11月11日 #

Unix下 压缩和解压缩命令

范例: 

.tar 
解包:tar -xvf FileName.tar 
打包:tar -cvf FileName.tar DirName 
(注:tar是打包,不是压缩!) 
--------------------------------------------- 
.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 

  (会出现Reading 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 阅读(604) | 评论 (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 阅读(315) | 评论 (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 阅读(422) | 评论 (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 阅读(32006) | 评论 (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 阅读(453) | 评论 (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 阅读(397) | 评论 (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 阅读(456) | 评论 (0)编辑 收藏

仅列出标题  下一页