本文目录一览:
- 1、c语言读取txt文件中某个特定字符后面的数据 并且求这些数据的和
- 2、哪位好心人有我的世界手机版有限世界的沙漠村庄,冰天雪地,大片森林,大片沼泽地,平原村庄种子?有其中
- 3、solr和elasticsearch对比,有啥差别吗
c语言读取txt文件中某个特定字符后面的数据 并且求这些数据的和
没有万能的通用程序能做到你的要求。
因为“特定字符”可能是很奇怪的字符或控制字符,另外文件中字符的序列和组合千变万化。
所以只能针对具体的文件形式做具体处理。
例如,
读下面的文件a.txt:
axsdA1.23,
11A5.45e02,
XSSA-7.88,
999A987,
iikA0,
llllLA3.333333
取出A后面的double型数据并求和。
完整程序如下:
#include
stdio.h
main(){
FILE
*fin;
double
x[50],y[50],z[50],sum=0.0;
int
i,n=0;
fin=fopen("a.txt","r");
while(1){
if
(
fscanf(fin,"%*[^A]A%lf",x[n])
!=
1)
break;
//
窍门在此
n++;
if
(n=50)
break;
}
for
(i=0;in;i++)
{
printf("%lf\n",x[i]);
sum=sum+x[i];
}
printf("sum=%lf\n",sum);
return
0;}
输出:
1.230000
545.000000
-7.880000
987.000000
0.000000
3.333333
sum=1528.683333
哪位好心人有我的世界手机版有限世界的沙漠村庄,冰天雪地,大片森林,大片沼泽地,平原村庄种子?有其中
啊地图种子:
iwanttodie(许多浮空岛种子)
LavaWorld(岩浆就在出生点的种子)
hungergame(一个树很少的种子)
DING!(一个地形超级奇葩的种子)
sominto39(一个稍微平坦的种子)
WOW!(一个有很多很多山的种子)
theeRango(一个撒哈拉沙漠的种子……)
teehee(往出生点下面挖会找到好东西的)
Si(航海家种子)
fishybob(一个大空洞,两道岩浆)
IRONIRONIRON(出生点有很多好东西(IOS0.5.0)
pbjtime(有两道岩浆,还有奇葩的山,里面还有很多矿的哦!)
nyan(岩浆地带)
Si(航海家地图)
HangSB(航海家地图)
DING!(一个奇葩地图)
wwe(洞穴地图)种子备注
999直接出生在村庄
1404395465出生点右前方,水井下方有要塞
1405687408出生点左前方,水井下方有刷怪笼
-1861920591直接出生在村庄,岩浆就在附近
1404998229直接出生在村庄
7370出生点左方
1406606938出生点右前方,水井下方有要塞
1406703634直接出生在村庄
3351608直接出生在村庄屋顶
1406461735出生点左前方
mimi直接出生在村庄屋顶,水井下方有要塞
455出生点左前方
67直接出生在村庄
1896出生点左后方
AK47出生点右前方
NPC越过出生点前方一大片花田
9595越过出生点正前方的大山
3338333出生在矿洞,上去后向前走段距离有村庄附加这个地图一共有4个村庄3个有铁匠铺
Next出生点左前方,岩浆就在附近
424直接出生在村庄
world出生点左前方
1406342760出生点向前直走一段路有一个,其左方走一段路还有一个
0596出生点右方
1403012272出生点右前方
2307出生在空中,降落后左前方
1405044597出生点右前方一大段距离
——来自诺基亚Lumia800
OrangeLeaf(也是一个奇葩地图种子)
solr和elasticsearch对比,有啥差别吗
从两个方面对ElasticSearch和Solr进行对比,从关系型数据库中的导入速度和模糊查询的速度。
单机对比
1. Solr 发布了4.0-alpha,试了一下,发现需要自己修改schema,好处是它自带一个data importer。在自己的计算机上测试了一下,导入的性能大概是:14分钟导入 3092730 条记录,约合 3682条/秒。
2. 3百万条记录的情况下,模糊查询和排序基本都在1秒内返回
3. 刚才的测试,是每个field单独存储,现在修改了一下配置文件,增加了一个copyField,所有的field都拷贝一份到text这个field里面去,导入的性能大概是:19分钟导入了3092730 条记录,约合 2713条/秒
4. 3百万条记录的情况下,针对text的模糊查询基本在1秒内返回,但是针对所有记录的排序,大概要2~3秒
5. 使用 elasticsearch 0.19.8,缺省配置,用单任务导入,导入性能是:20分钟导入了3092730 条记录,约合2577条/秒
6. 3百万条记录的情况下,查询基本上在1秒内返回,但是模糊查询比较慢,第一次要10秒,后来大概要1~3秒。加上排序大概需要5秒,整体排序基本100ms
查询及排序的指令:
{
"query": {
"query_string": {
"query": "*999*"
}
},
"sort": [
{
"TIME_UP": {
"order": "asc"
}
}
]
}
7. Es0.19.8,用两个任务导入,导入性能是:13分钟导入了3092730 条记录,约合3965条/秒
8. Solr全部建好索引后,占用磁盘空间是1.2G,es占用磁盘空间是4G
单机对比2
在一台Intel i7,32G内存的机器上,重新跑这两个的对比。不过有个重大的区别在于,Solr是在这台性能很好的机器上跑,而es的导入进程则是在一台Intel 四核 2.5G,4G内存的机器上跑的,也许会有性能的差异。ES版本0.19.8,Solr版本4.0-ALPHA。
1. Solr的导入性能:3400万条记录,用时62分钟,平均9140条/秒,占用空间12.75G
2. 使用 *999* 这样的模糊查询,3秒以内返回,稍长一点的查询条件 *00100014*,也是2~3秒返回
3. Es的导入性能(设置Xmx为10G):3400万条记录,用时40分钟,平均14167条/秒,占用空间33.26G,客户端采用4个并发。
4. 使用 *999* 这样的模糊查询,9秒返回,稍长一点的查询条件 *00100014*,11.8秒返回
5. 如果不是针对所有字段查询,而是针对某个特定字段,比如 SAM_CODE: *00100014*,那么也是1秒以内返回。
6. 结论:es的查询效率也可以很高,只是我们还不会用。
7. 结论2:es有个设置是把所有字段放一块的那个,缺省是放一起,但是不知道为什么没起到应有的作用。
备注:
1. Solr第一次的那个内存使用的是缺省设置,这次改为10G,结果导入性能反而变差了,400万条记录,用了8分钟,平均8333条/秒,不知道为什么。
2. 改回缺省的内存配置,导入速度仍然慢。
3. 重启Linux,用10G的内存配置,再导入,5030万条记录,用时92分,约9112条/秒,说明导入速度和内存配置没有大差别
4. 在10G配置的情况下,检索速度也差别不大。
5. 为了搞清楚lucene4.0和solr4.0的进步有多大,下载了solr3.6.1,所幸的是4.0的配置文件在3.6.1上也可以用,所以很快就搭起来进行测试,导入性能为:3400万条记录,用时55分钟,约10303条/秒,占用空间13.85G。查询性能:*999*第一次11.6s,*00100014* 27.3s,相比4.0ALPHA的结果(5000万结果当中,*999*第一次2.6s,*00100014*第一次2.5s)来说,慢了很多,与es的性能差不多,因此,也许lucene4.0真的对性能有大幅提升?
集群对比:
采用4台同样配置(Intel i7,32G内存)的Centos 6.3组成的集群,进行对比。
1. 首先是es,很方便的就组成了一个Cluster,等上一个3400万条的Index全部均衡负载之后进行测试,导入到另外一个Index当中。
2. 导入性能:8500万条记录,用时72分钟,约为19676条/秒。在前5千万条记录导入时的速度在2万/条以上,初始的速度在2.2万/条。占用空间78.6G(由于有冗余,实际占用空间为157.2G)
3. 查询性能:
*999*第一次13.5秒,第二次19.5秒,第三次7.4秒,第四次7.1秒,第五次7.1秒
*00100014*第一次17.2秒,第二次16.6秒,第三次17.9秒,第四次16.7秒,第五次17.1秒
SAM_CODE:*999*,0.8s,1.3s,0.02s,0.02s,0.02s
SAM_CODE: *00100014*,0.1s,0.1s,0.02s,0.03s,0.05s
4. Solr4.0-ALPHA,SolrCloud的配置还算简单,启动一个ZooKeeper,然后其他三台机器访问这个地址,就可以组成一个Cloud:
机器1: nohup java -Xms10G -Xmx10G -Xss256k -Djetty.port=8983 -Dsolr.solr.home="./example-DIH/solr/" -Dbootstrap_confdir=./example-DIH/solr/db/conf/ -Dcollection.configName=xabconf3 -DzkRun -DnumShards=4 -jar start.jar
其他机器:nohup java -Xms10G -Xmx10G -Dsolr.solr.home="./example-DIH/solr/" -DzkHost=192.168.2.11:9983 -jar start.jar
但是在执行 data import 的时候,频繁出现 OutOfMemoryError: unable to create new native thread。查了很多资料,把Linux的ulimit当中的nproc改成10240,把Xss改成256K,都解决不了问题。暂时没有办法进行。
结论
1. 导入性能,es更强
2. 查询性能,solr 4.0最好,es与solr 3.6持平,可以乐观的认为,等es采用了lucene4之后,性能会有质的提升
3. Es采用SAM_CODE这样的查询性能很好,但是用_all性能就很差,而且差别非常大,因此,个人认为在目前的es情况下,仍然有性能提升的空间,只是现在还没找到方法。