- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 Linux中打开文件时的O_EXCL有什么用
问题描述:open(pathname, O_RDWR | O_CREAT,0666);就不行吗?为什么好多资料上说要加O_EXCL,说是原子性操作,不加难道就不是了吗?解答:如果文件事先已经存在,open(pathname, O_RDWR | O_CREAT,0666); 打开成功,返回一个大于0的fdopen(pathname, O_RDWR | O_CREAT | O
2014-09-27 15:16:18 9700
原创 使用系统调用fcntl()来对文件加锁
在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。 文件锁包括建议性锁和强制性的锁。建议性的,顾名思义,相对温柔一些,在对文件进行锁操作时,会检测是否已经有锁存在,并且尊重已有的锁。在一般的情况下,内核和系统都不使用建议锁。强制性的锁是由内
2014-09-27 15:12:57 2635
原创 文件锁中的“协同锁”与“强制锁”的区别
文件锁是一种文件读写机制,在任何特定的时间只允许一个进程访问一个文件。利用这种机制能够使读写单个文件的过程变得更安全。 在这篇文章中,我们将探讨Linux中不同类型的文件锁,并通过示例程序来理解它们之间的不同之处。 我们将采取以下的例子来解释为什么需要使用文件锁。 1、进程“A”打开和读取一个文件,此文件包含账户相关的一些信息。 2、进程“B”也打开了这个文
2014-09-27 15:11:12 2174
原创 如何在socket编程的Tcp连接中实现心跳协议
心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法
2014-09-26 21:06:15 5029
原创 socket编程中的SIGPIPE信号
我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两
2014-09-26 19:30:54 1841
原创 二路归并排序
“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。以n个元素的数组为例:可以看作为n个有序的子表,每个子表的长度为1,然后两两合并,得到n/2个长度为2或1的有序子表。然后再两两合并......如此重复,直到合并为一个长度为n的有序表为止。
2014-09-25 16:40:32 1188
原创 C++中智能指针的模板类
在C++中,智能指针是一个非常重要的概念。因为C++的类动态分配的对象不能自动释放掉,需手动调用new运算符。当程序员大意时,或程序发生异常时,或许就会发生没有手动释放内存而造成内存泄露。 智能指针的定义:就是在一个类中,存在一个指向另一个类对象的指针,并通过对指针运算符(比如:->,*)的重载,就可以实现利用当前类的对象通过指针运算符来操纵另一个类的成员(就像另一个类的指针操作一样),并且,在析构函数中定义了delete操作,借助于变量的作用域,能够实现类对象空间的自动释放。 在C++ 11中,有
2014-09-25 14:07:12 2273
原创 程序员如何写一份另面试官眼前一亮的简历
这几年,我在Google工作,是一名软件工程师(之前是在微软做一个开发团队的队长),我曾浏览过成百上千的简历,从中挑选出可以进行下一步面试过程的 应聘者。 有些人的简历给我留下了很深的印象,而另一些则没有感觉。慢慢的,有越来越多的朋友和亲人向我咨询如何优化他们的简历,所以我就收集了一些我见过的简历中出现的最常见的问题,并给出了如何避免这些问题的建议:1. 简历里要有你工作的技术细节:编
2014-09-17 19:12:15 1954
原创 使用Git时,怎么忽略不想上传的文件
在进行协作开发代码管理的过程中,常常会遇到某些临时文件、配置文件、或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便。Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则。
2014-09-11 15:57:09 4700
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人