Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Linux ---lseek() 函数

Linux ---lseek() 函数

每个打开的文件都有一个与其相关连的“当前文件偏移量”( current file offset )。它通常是一个非负整数,用以度量从文件开始处计算的字节数。通常,读、写操作都从当前文件偏移量开始,并使偏移量增加所读写的字节数。按系统默认情况,当打开一个文件时,除非指定 O_APPEND 选项,否则该偏移量设置为 0。lseek调用仅将当前的文件偏移量记录在内核中,它并不引起任何的 I/O 操作。然后,该偏移量用于下一个读或写操作。函...
UNIX内核用于所有I/O的数据结构

UNIX内核用于所有I/O的数据结构

内核使用三种数据结构表示打开的文件,分别是文件描述符表、文件表和 V 节点表。它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,每个描述符占用一项。与每个文件描述符相关联的是:(a) 文件描述符标志。(b) 指向一个文件表项的指针。内核为所有打开文件维持一张文件表。每个文件表项包含:(a) 文件状态标志(读、写、添写、同步和非阻塞等)。(b) 当前文件偏移量。(c) ...
PHP代码优化24条真经

PHP代码优化24条真经

PHP代码优化24条真经1.echo比print快。2.使用echo的多重参数代替字符串连接。3.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。4.对global变量,应该用完就unset()掉。5.用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会。6.函数代替正则表达式完成相同功能。7.当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异...
Objective-C中的Block

Objective-C中的Block

1.相关概念在这篇笔记开始之前,我们需要对以下概念有所了解。1.1 操作系统中的栈和堆注:这里所说的堆和栈与数据结构中的堆和栈不是一回事。我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构:栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值等。由编译器自动创建与释放。其操作方式类似于数据结构中的栈,即后进先出、先进后出的原则。例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间。堆区(heap):一般由程序...
使用 Google 的 Web API 创建二维码

使用 Google 的 Web API 创建二维码

介绍在这篇文章里我将会介绍一个简单的方法(使用内部的标准空间)用来创建二维码(QR Code), 记录关于UserControl的一切用以备查。有许多的库帮助我们做类似的操作,但是这次我要使用谷歌图表( Google Charts) (https://developers.google.com/chart/),同时还有System.Net和 System.IO命名空间。背景谷歌图表(Google Charts)可以通过POST被查询请求(细节看这里: ht...
Java并发:分布式锁

Java并发:分布式锁

Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。 用SETNX实现分布式锁 利用SETNX非常简单地实现分布式锁。例如:某客户端要获得一个名字foo的锁,客户端使用下面的命令进行获取: SETNX lock.foo <current Unix time + lock timeout + 1>如...
Linux下socket连接下的心跳机制

Linux下socket连接下的心跳机制

本文讲解关于Linux下socket连接下的心跳机制的简单过程。1,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活2,心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的...
C++中map的使用详解说明

C++中map的使用详解说明

项目需要,map的使用详解键值对 匹配1头文件 #include<map>2、map的功能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 快速插入Key - Value 记录。 快速删除记录 根据Key 修改value记录。 遍历所有记录。3,map的构造函数map共...
Socket心跳包机制

Socket心跳包机制

心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。方法2:TCP的KeepAlive保活机制因为要考虑到一个服务器通常会连接多个客...
Linux Socket编程中的心跳机制

Linux Socket编程中的心跳机制

在TCP网络通信中,经常会出现客户端和服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。从网络上找到,主要有以下方法实现TCP异常断开的检测:SO_KEEPALIVE,SIO_KEEPALIVE_VALS 和Heart-Beat线程。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setsockopt API:BOOL bSet=TRUE;setsockopt(hSocket,SO...
<< 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 >>