摘要: 假设有两个文件a.file和b.file,分别代表集合A和集合B。a.file的内容如下:abcdeb.file的内容如下:cdefg可以用grep命令grep命令是常用来搜索文本内容的,根据输入的pattern,输出命中的内容。可以利用它的文件输入pattern特性,来求两个文件的交集。$ grep -F -f a.file b.filecde那差集可以利用-v这个参数,例如:$ grep -F -v -f a.file b.filefg$ grep -F -v -f b.file a.fileab其中第一个命令求B-A,第二个命令求A-B注意:1)grep求交集不要求输入文件是排序的,但最 阅读全文
posted @ 2013-10-24 10:31 桂皮猪 阅读(1298) 评论(0) 推荐(0) 编辑
摘要: 文件落盘的时候的逻辑应该是: 1、将数据保存到临时文件2、如果第一步文件保存ok,1)删除old文件,2)则将原始文件重命名为旧文件,3)将临时文件重命名为原始文件 4) 返回保存ok 如果第一步保存不ok,则删除临时文件,啥事也不做,返回保存失败 原始文件: 下次加载的时候需要用到的文件旧文件 : 这个是为了对比和备份用的临时文件: 临时的如果不做这样的保护,一旦落盘失败,可能把原始文件给毁了 阅读全文
posted @ 2013-09-30 11:37 桂皮猪 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 转自http://ticktick.blog.51cto.com/823160/431329最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13):undefinedreferenceto`func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)测试代码如下: 然后编译。gcc-ctest.c gcc–cmain.c 得到两个 .o 文件,一个是 main.o,一个是 tes 阅读全文
posted @ 2013-08-05 18:58 桂皮猪 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 使用xmlParser动态生成xml,输入的字符编码是gbk,结果怎么生成都不行,后来把输入转成utf8之后, 再生成就ok了 阅读全文
posted @ 2013-08-01 16:28 桂皮猪 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 这些事跨平台编程导致的;一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char1个字节8位short2个字节16位int2个字节16位long4个字节32位指针2个字节32位平台char1个字节8位short2个字节16位int4个字节32位long4个字节long long 8个字节指针4个字节64位平台char1个字节short2个字节int4个字节long8个字节(区别)long long 8个字节指针8个字节(区别)二、编程注意事项为了保证平台的通用性,程序中尽量不要使用long数据库型。可以 阅读全文
posted @ 2013-07-24 11:25 桂皮猪 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了。对于几百M到1G多的大文件要如下处理。单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选。-a, –ascii-b, –binary 用binary的方式上传下载,不解释字符为ascii-e, –escape强制escape 所有控制字符,比如Ctrl+x,DEL等rar,gif等文件文件采用 -b 用bi 阅读全文
posted @ 2013-06-09 10:39 桂皮猪 阅读(6679) 评论(0) 推荐(2) 编辑
摘要: 原文链接:http://blog.csdn.net/dog250/article/details/6612496目录(?)[-]说明网络协议设计TCP和IP协议TCP协议TCP协议有连接可靠传输数据按序到达的TCP有连接传输可靠性数据顺序性端到端的流量控制端到端意义上的TCP协议效率三个问题以及解决分析三个问题之间的关联问题的杂糅情况IP网络之上的TCP端到端的TCP协议和IP协议之间的矛盾拥塞控制的策略试探性的拥塞探测分为两类之一是慢启动之二是拥塞窗口加性扩大也就是熟知的拥塞避免然而这种方式是避免不了拥塞的拥塞避免方式拥塞控制旨在还没有发生拥塞的时候就先提醒发送端网络拥塞了这样发送端就要么可 阅读全文
posted @ 2013-03-27 11:11 桂皮猪 阅读(251) 评论(0) 推荐(0) 编辑
摘要: const、volatile、mutable的用法const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。例如:const int nValue; //nValue是constint const nValue; //nValue是const但是对于指针类型的TYPE,不同的写法会有不同情况:l指针本身是常量不可变(char*) const pCo 阅读全文
posted @ 2013-03-15 14:27 桂皮猪 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错首先是我把套接字设置为异步的了,然后在使用write发送数据时采取的方式是循环发送大量的数据;由于是异步的,write\send将要发送的数据提交到发送缓冲区后是立即返回的,并不需要对端确认数据已接收。在这种情况下是很有可能出现发送缓冲区被填满,导致write\send无法再向缓冲区提交要发送的数据。因此就产生了Resource temp 阅读全文
posted @ 2013-02-27 16:36 桂皮猪 阅读(43775) 评论(0) 推荐(8) 编辑
摘要: static_cast一般用来将枚举类型转换成整型,或者整型转换成浮点型。也可以用来将指向父类的指针转换成指向子类的指针。做这些转换前,你必须确定要转换的数据确实是目标类型的数据,因为static_cast不做运行时的类型检查以保证转换的安全性。也因此,static_cast不如dynamic_cast安全。对含有二义性的指针,dynamic_cast会转换失败,而static_cast却直接且粗暴地进行转换。这是非常危险的。比如:class B {};class D : public B {};void f(B* pb, D* pd) { D* pd2 = static_cast<D* 阅读全文
posted @ 2013-02-26 15:01 桂皮猪 阅读(13653) 评论(1) 推荐(2) 编辑