fd

epoll 简单介绍

喜欢而已 提交于 2020-04-07 13:43:02
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。 1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数,在我用的2.6.15-25-386内核中,该值是1024,搜索内核源代码得到: include/linux/posix_types.h: #define __FD_SETSIZE 1024 也 就是说,如果想要同时检测1025个句柄的可读状态是不可能用select实现的。或者同时检测1025个句柄的可写状态也是不可能的。其次,内核中实现 select是用轮询方法,即每次检测都会遍历所有FD_SET中的句柄,显然,select函数执行时间与FD_SET中的句柄个数有一个比例关系,即 select要检测的句柄数越多就会越费时。当然,在前文中我并没有提及poll方法,事实上用select的朋友一定也试过poll,我个人觉得 select和poll大同小异,个人偏好于用select而已。 2、内核中提高I/O性能的新方法epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调用:epoll_create

python(10)---七段数码管(2)

梦想与她 提交于 2020-04-07 08:01:38
  今天根据网上的教程修改了七段数码管的程序,引入了time库函数,这样程序可以 根据系统的时间画出七段数码管了。废话不多说了,直接上程序: 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 #Segement7_2.py 4 import turtle,time 5 def drawGap(): 6 turtle.penup() 7 turtle.fd(5) 8 def drawline(draw): 9 drawGap() 10 turtle.pendown() if draw else turtle.penup() 11 turtle.fd(40) 12 drawGap() 13 turtle.right(90) 14 def drawdigit(digit): 15 drawline(True) if digit in [2,3,4,5,6,8,9] else drawline(False) 16 drawline(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False) 17 drawline(True) if digit in [0,2,3,5,6,8,9] else drawline(False) 18 drawline(True) if digit

FireDac 组件说明一

喜你入骨 提交于 2020-04-06 11:29:49
应该说,目前10.3的方方面面基本正常的坑基本填好了。因此综合考虑还是用datasanp+firedac框架操练。 ================================ 数据量2w行,字段30个 第一次open fd读取数据用时363毫秒,ado用时783毫秒 第二次open fd读取数据用时10毫秒,ado用时553毫秒 遍历所有记录 第一次 fd读取数据用时2438毫秒,ado用时5590毫秒 第二次 fd读取数据用时1988毫秒,ado用时5548毫秒 -------------------------------------------------- fd读取数据用时363毫秒,ado用时783毫秒 fd读取数据用时363毫秒,ado用时783毫秒 FireDac 组件说明一 TFDManager 连接定义和Connect连接管理 TFDConnection 数据库连接组件,支持三种连接方式:1.持久定义(有一个唯一名称和一个配置文件,可以由FDManager管理) 例: uses FireDAC.Comp.Client, FireDAC.Stan.Intf; var oDef: IFDStanConnectionDef; begin oDef := FDManager.ConnectionDefs.AddConnectionDef; oDef.Name :=

输入输出函数库stdio.h

女生的网名这么多〃 提交于 2020-04-04 06:50:12
函数名 函数类型与形参类型 函数功能 函数返回值 clearerr void clearerr(fp) FILE * fp; 清除文件指针错误 无 close int close(fp) int fp; 关闭文件(非ANSI标准) 关闭成功返回0,不成功返回-1 create int create(filename,mode) char * filename; int mode; 以mode所指定的方式建立文件(非ANSI标准) 成功返回正数,否否则返回-1 eof int eof(fd) int fd; 判断文件(非ANSI标准) 是否结束 结束1,否则0 fclose int fclose(fp) FILE *fp; 关闭fp所指的文件,释放文件缓冲区 关闭成功0,否则返回非0 feof int feof(fp) FILE * fp; 检查文件是否结束 文件结束返回非0,否则返回0 ferror int ferror(fp) FILE * fp; 测试fp所指的文件是否有错误 无错返回0,否则返回非0 fflush int fflush(fp) FILE * fp; 将fp所指的文件的全部控制信息和数据存盘 存盘正确返回0,否则返回非0 fgetc int fgetc(fp) FILE * fp; 从fp所指向的文件中取得下一个字符 返回得到的字符,若出错返回EOF fgets

PHP文件操作[总结]

谁说我不能喝 提交于 2020-04-04 06:10:35
1、前言   工作中涉及到数据处理,后台需要用到PHP处理数据,之前没有接触过PHP,借此机会了解了一下PHP,PHP很方便,很灵活,编码很舒服,很喜欢用PHP处理后台数据。今天总结一下php文件操作,主要涉及到文件打开、读、写和关闭。 2、PHP文件操作API 文件创建/打开 fopen :(创建并)打开一个文件或 URL 地址。 文件写入 fwrite :向文件写入内容,可安全用于二进制文件 。 file_put_contents :向文件写入内容,等同依次调用 fopen,fwrite 以及 fclose 函数。 文件读取 fread :读取文件,可安全用于二进制文件。 fgets :从文件中读取 一行 数据,并将文件指针指向下一行。 fgetc :从文件中 逐字 读取文件数据,直到文件结束。 file_get_contents :把 整个文件 读入一个字符串。 file :把 整个文件 读入一个数组中,数组中的每个单元都是文件中相应的一行。 检查文件是否存在 file_exists :检查文件或目录是否存在。 检查文件是否可读写执行 is_readable :检查文件是否可读。 is_writable :检查文件是否是否可写入。 is_executable :检查文件是否可执行。 文件拷贝 copy :拷贝文件。 文件删除 unlink :删除文件。 取得文件大小、类型

Windows Socket编程简介

喜欢而已 提交于 2020-04-03 22:16:03
WinSock编程 使用WinSock API的编程,应该了解TCP/IP的基础知识。虽然你可以直接使用WinSock API来写网络应用程序,但是,要写出优秀的网络应用程序,还是必须对TCP/IP协议有一些了解的。 1. TCP/IP协议与WinSock网络编程接口的关系 WinSock并不是一种网络协议,它只是一个网络编程接口,也就是说,它不是协议,但是它可以访问很多种网络协议,你可以把他当作一些协议的封装。现在的WinSock已经基本上实现了与协议无关。你可以使用WinSock来调用多种协议的功能。那么,WinSock和TCP/IP协议到底是什么关系呢?实际上,WinSock就是TCP/IP协议的一种封装,你可以通过调用WinSock的接口函数来调用TCP/IP的各种功能.例如我想用TCP/IP协议发送数据,你就可以使用WinSock的接口函数Send()来调用TCP/IP的发送数据功能,至于具体怎么发送数据,WinSock已经帮你封装好了这种功能。 2、TCP/IP协议介绍 TCP/IP协议包含的范围非常的广,他是一种四层协议,包含了各种硬件、软件需求的定义。 TCP/IP协议确切的说法应该是TCP/UDP/IP协议。UDP协议(User Datagram Protocol 用户数据报协议),是一种保护消息边界的,不保障可靠数据的传输。TCP协议(Transmission

unix环境高级编程——文件IO

南楼画角 提交于 2020-04-03 22:11:16
可用的文件IO函数:打开文件,读文件,写文件等(不带缓冲的IO函数(指每个read或write函数都调用内核的一个系统调用))    不是ISO C的组成部分,但是时POSIX和SUS的组成部分 UNIX系统中常用的文件IO函数:open,read,wirte,lseek,close函数 当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符(非负整数) UNIX的shell把文件描述符0与标准输入关联,文件描述符与标准输出关联,文件描述符2与标准错误输出关联,在POSIX标准中,对应的被替换为符号常量STDIN_FLLENO,SEDOUT_FLLENO,STDERR_FLLENO  <unistd,h> 函数open和openat (fcntl.h) int open(const char* path,int oflag,.../*mode_t mode*/); int openat(int fd,const char* path,int oflag,.../*mode_t mode*/); 将最后一个参数写为...,表明余下的参数的数量以及类型是可变的 由open和openat函数返回的文件描述符一定是最小的未用的描述符数值 若path参数指定为绝对路径,fd参数无用,openat函数相当于open函数    path指定的是相对路径

WIFI模块开发教程之W600网络篇2:AP模式下TCP Server通信

独自空忆成欢 提交于 2020-04-03 18:33:02
前言 本文研究如何在AP模式下进行TCP Server通信,所谓AP模式是说模块起来一个softAP热点,可以供其他WIFI设备连接,当其他设备连接成功后,另WIFI模块作为服务端,等待局域网中其他客户端连接后通信。 一、 理论基础 本节要处理的有两个问题,其一是如何利用RT_Thread连接路由器,其二是如何使用Socket套接字编程搞定TCP Server程序编写。 1.连接路由器 模块需要开启station,并且连接到一个路由器,RT_Thread中只需要调用wlan.mgnt.h中的函数即可。 rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP); rt_wlan_start_ap("sand", "12345678"); 2.Socket套接字实现TCP Server 服务端套接字使用流程以及和客户端交互框图如下所示: 二、使用实例 1.程序 w60x/applications/4-ap_tcp_server/main.c #include <rtthread.h> #include <rtdevice.h> #include <sys/socket.h> //使用BSD socket需要包含此头文件 #define TCP_SERVER_ADDR "192.168.169.1" #define TCP_SERVER

ali lxcfs daemonset方式运行

試著忘記壹切 提交于 2020-03-31 03:32:02
刚开始按照相关文档将apiserver ,kubelet节点的特权模式开启--allow-privileged=true,再以ali的文档执行,完全无法运行。参考github里的issue得知,其实都是在问题为啥运行不起来的,但回复不详,其中也确实提到需要在宿主机上支持fuse。 开始自行排错:无法搜索到相关资料,下载源码,编译排查 git clone https://github.com/denverdino/lxcfs-initializer.git 从Dockfile里也可知,里面的库等文件并不能适合自身的版本需要,目前只是需要让他运行起来,然后再里面执行start.sh的脚本内容,查看具体出错是在哪? 据自己环境变更lxcfs-image/Dockerfile 内容如下 FROM daocloud.io/centos:7.3.1611 RUN yum -y install fuse fuse-devel pam-devel wget install gcc automake autoconf libtool make ENV LXCFS_VERSION 2.0.8 RUN wget https://linuxcontainers.org/downloads/lxcfs/lxcfs-$LXCFS_VERSION.tar.gz && \ mkdir /lxcfs && tar

《node.js权威指南》读书笔记

前提是你 提交于 2020-03-30 03:32:21
第一章 node.js介绍 非阻塞型I/O机制 当在访问数据库取得搜索结果的时候,在开始访问数据库之后,数据库返回结果之前,存在一段等待时间。 在传统的单线程处理机制中,在执行了访问数据库的代码之后,整个线程都将暂停下来,等待数据库返回查询结果之后才能继续执行后面的代码。这是I/O型阻塞 node.js中在执行了访问数据库的代码之后将立即执行其后面的代码段,把数据库返回的结果的处理代码放在回调函数中。这是非阻塞型I/O机制 第三章 node.js中的全局作用域及全局函数 timer.unref()用于取消setTimeout或setInterval函数中指定的回调函数的调用 timer.ref()恢复unref方法取消的回调函数 var testFunction = function(){ console.log('aaa') } var timer = setInterval(testFunction,3000) //取消定时器对象的回调函数调用 timer.unref() //没有输出 //恢复定时器对象的回调函数调用 // timer.ref()//有输出 在任何模块文件内部,可以使用 __filename 变量获取当前模块文件名 在任何模块文件内部,可以使用 __dirname 变量获取当前模块文件所在目录的完成绝对路径 EventEmitter类 emitter