句柄

CreateIoCompletionPort

好久不见. 提交于 2019-12-20 19:46:22
创建输入/输出(I / O)完成端口并将其与指定的文件句柄相关联,或创建尚未与文件句柄相关联的I / O完成端口,从而允许以后进行关联。 将打开的文件句柄的实例与I / O完成端口相关联,可使进程接收有关该文件句柄的异步I / O操作完成的通知。 注意 此处使用的术语文件句柄是指表示重叠的I / O端点的系统抽象,而不仅仅是磁盘上的文件。任何支持重叠I / O的系统对象(例如网络端点,TCP套接字,命名管道和邮件插槽)都可以用作文件句柄。有关更多信息,请参见“备注”部分。 句法 C ++ HANDLE WINAPI CreateIoCompletionPort( _In_ HANDLE FileHandle, _In_opt_ HANDLE ExistingCompletionPort, _In_ ULONG_PTR CompletionKey, _In_ DWORD NumberOfConcurrentThreads ); 参量 FileHandle [输入] 打开的文件句柄或INVALID_HANDLE_VALUE。 该句柄必须指向支持重叠I / O的对象。 如果提供了句柄,则必须打开它才能完成I / O重叠。例如,在使用CreateFile函数获取句柄时,必须指定FILE_FLAG_OVERLAPPED标志。 如果指定了INVALID_HANDLE_VALUE

PHP curl_multi_init函数

為{幸葍}努か 提交于 2019-12-18 22:56:01
curl_multi_init — 返回一个新cURL批处理句柄 说明 resource curl_multi_init ( void ) 允许并行地处理批处理cURL句柄。 参数 此函数没有参数。 返回值 成功时返回一个cURL批处理句柄,失败时返回FALSE。 实例 这个范例将会创建2个cURL句柄,把它们加到批处理句柄,然后并行地运行它们。 <?php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); // 创建批处理cURL句柄 $mh = curl_multi_init(); // 增加2个句柄 curl_multi_add_handle($mh,$ch1); curl_multi_add_handle($mh,$ch2); $running=null; // 执行批处理句柄 do { usleep(10000)

Windows句柄

杀马特。学长 韩版系。学妹 提交于 2019-12-16 14:05:20
图解说明——究竟什么是Windows句柄 参考资料: http://blog.csdn.net/newjerryj/article/details/4383701 http://www.cnblogs.com/yellowyu/archive/2009/06/07/1497910.html 写在前面: 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚。查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种是以比喻、类比的方式说明,这种方法虽然形象易懂,但并没有从原理上、本质上加以揭示,让人仍然想问“为什么?”、“怎么实现?”。另一种是给出源代码,无可厚非,这当然是最本质的说明了,但这样一来,又显得不够直观,初学者理解起来有一定的难度。鉴于此,在下尽微末之能,结合自己的愚见,在两者之间折中,用图解的方式来将原理呈现出来,做到一目了然。 这里需要说明: 1.这里将句柄所能标识的所有东西(如窗口、文件、画笔等)统称为“对象”。 2.图中一个小横框表示一定大小的内存区域,并不代表一个字节,如标有0X00000AC6的横框表示4个字节。 3.图解的目的是为了直观易懂,所以不一定与源码完全对应,会有一定的简化。 让我们先看图,再解释。 其中,图1是程序运行到某时刻时的内存快照,图2是程序往后运行到另一时刻时的内存快照

设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别

会有一股神秘感。 提交于 2019-12-16 11:30:50
max-file 表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的。 ulimit -n 控制进程级别能够打开的文件句柄的数量。提供对shell及其启动的进程的可用文件句柄的控制。这是进程级别的。 对于服务器来说,file-max和ulimit都需要设置,否则会出现文件描述符耗尽的问题。 一般如果遇到文件句柄达到上限时,会碰到"Too many open files"或者Socket/File: Can’t open so many files等错误。 为了让服务器重启之后,配置仍然有效,需要用永久生效的配置方法进行修改。 max-file: 查看系统级别的能够打开的文件句柄的数量,Centos7默认是794168 # cat /proc/sys/fs/file-max 794168 系统级打开最大文件句柄的数量永久生效的修改方法,修改文件,文件末尾加入配置内容: # vim /etc/sysctl.conf fs.file-max = 2000000 然后执行命令,使修改配置立即生效: # sysctl -p ulimit: 查看用户进程级的能够打开文件句柄的数量,Centos7默认是1024 这里设置的是当前shell的当前用户的打开的最大限制,如果当前用户打开多个shell,则每个shell都能打开该最大值 # ulimit -n 1024

python 日志应用实例

与世无争的帅哥 提交于 2019-12-15 20:11:08
import logging def get_logger(): # 创建日志对象 log_obj = logging.getLogger('日志') # 设置日志水平 log_obj.setLevel(logging.DEBUG) # 创建控制台句柄 sh = logging.StreamHandler() # 创建文件句柄 fh = logging.FileHandler('test.log') # 创建格式对象 log_format = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s') # 设置句柄格式 sh.setFormatter(log_format) fh.setFormatter(log_format) # 添加句柄到日志对象 log_obj.addHandler(sh) log_obj.addHandler(fh) # 返回日志对象 return log_obj def login(user,pw,log_obj): if user == '123' and pw == '234': #登录成功调用日志记录 log_obj.info('用户 %s 登录成功' %user) else: #登录失败调用日志记录 log_obj.info('用户 %s 密码错误' %user) log

nginx和swoole怎么混合使用

落爺英雄遲暮 提交于 2019-12-14 16:17:52
有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的。感谢阅读! 点此加入该群 ​jq.qq.com 基于epoll的Nginx 有了epoll,理论上1个进程就可以无限数量的连接,而且无需轮询,真正解决了c10k的问题。 (推荐学习: swoole视频教程 ) Nginx是基于epoll的,异步非阻塞的服务器程序。自然,Nginx能够轻松处理百万级的并发连接,也就无可厚非了。 swoole如何处理高并发 ①Reactor模型介绍 IO复用异步非阻塞程序使用经典的Reactor模型,Reactor顾名思义就是反应堆的意思,它本身不处理任何数据收发。只是可以监视一个socket(也可以是管道、eventfd、信号)句柄的事件变化。 注:什么是句柄?句柄英文为handler,可以形象的比喻为锅柄、勺柄。也就是资源的唯一标识符、资源的ID。通过这个ID可以操作资源。 Reactor只是一个事件发生器,实际对socket句柄的操作,如connect/accept、send/recv、close是在callback中完成的。 因为reactor基于epoll,所以每个reactor可以处理无数个连接请求。 如此,swoole就轻松的处理了高并发。 nginx配置: 9501就是swoole服务器监听的地址。root设置为静态文件的目录

修改static控件背景颜色和文字颜色

拟墨画扇 提交于 2019-12-14 11:03:42
当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,Windows 会使用该画刷来绘制控件背景(子窗口背景)。 也就是说,改变 static 控件的背景颜色只有这一种方式,就是处理 WM_CTLCOLORSTATIC 消息。WM_CTLCOLORSTATIC 消息就是用来设置背景画刷的。 改变 static 控件的背景颜色: 复制 纯文本 复制 LRESULT CALLBACK WndProc ( HWND hWnd , UINT message , WPARAM wParam , LPARAM lParam ) { PAINTSTRUCT ps ; HDC hdcWnd ; static HFONT hFont ; //逻辑字体 static HWND hStatic ; //静态文本框控件 static HBRUSH hBrush ; //画刷 switch ( message ) { case WM_CREATE : //创建画刷 hBrush = CreateSolidBrush ( RGB ( 0x41 , 0x96 , 0x4F ) ); //翠绿色 //创建逻辑字体 hFont = CreateFont (- 14 /*高

Eclipse的设计模式

独自空忆成欢 提交于 2019-12-13 11:52:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、核心工作区间(Workspace)中的代理与桥梁模式。 在核心工作区间中,最重要的设计模式是“代理与桥梁”,最让人疑惑的是哪部分是代理,哪部分是桥梁。 下面类图使用 IResource做示范,其他也类似如:IFile, IFolder, IProject, IWorkspaceRoot等等。 在工作空间中,每个资源(resource)用句柄(handle)代表,句柄像资源的主键,句柄是小对象,他创建之后就不会改变。 Resource 是 ResourceInfo 的代理,无论什么请求ResourceInfo都通过他的代理Resource。 Resource 是 IResource的实现类,但是一个句柄只有一个实现类,这可以称为一个简化版的桥梁模式。 代理:如果,A无论做什么,都通过B,那么,B是A的代理, 这可能不准确,但是他是我们怎样理解类图。 桥梁:桥梁是一个类型适配器的模式,在桥梁模式中,我们定义所胡的抽象中和底层实现,我们不必等待它适用我们的接口,在这种例子中,通常会有多个实现代理一个。 在这里,没有必要对应上你知道的设计模式,因为他们不是很明显,懂得他们怎么更有用。 2. 代码例子: 这里是一个代码例子能说明这个模式怎么工作: IResource resource=ResourcesPlugin

什么是句柄?为什么会有句柄?HANDLE

谁都会走 提交于 2019-12-13 11:37:53
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 转载自 http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html 关键字:句柄, HANDLE, WINDOWS SDK, windows.h, 从广义上, 能够从一个数值拎起一大堆数据的东西都可以叫做句柄。 句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗? 然后,指针其实也是一种"句柄",只是由于指针同时拥有更特殊的含义——实实在在地对应内存里地一个地址——所以,通常不把指针说成是"句柄"。但指针也有着能从一个32位的值引用到一大堆数据的作用,这不是句柄又是什么? Windows系统中有许多 内核对象 ( 这里的对象不完全等价于"面向对象程序设计"一词中的"对象",虽然实质上还真差不多 ),比如打开的文件,创建的线程,程序的窗口,等等。这些重要的对象肯定不是4个字节或者8个字节足以完全描述的,他们拥有大量的属性。为了保存这样一个"对象"的状态,往往需要上百甚至上千字节的内存空间,那么 怎么在程序间或程序内部的子过程(函数)之间传递这些数据呢? 拖着这成百上千的字节 拷贝来拷贝去 吗?显然会浪费效率。那么怎么办