句柄

MFC对话框常用操作文章收藏

*爱你&永不变心* 提交于 2019-12-28 00:23:22
1、改变控件文本 参考链接: https://blog.csdn.net/active2489595970/article/details/88856235 所有控件的文本都可以用这种方式动态改变。 2、获得控件句柄 更具ID获取句柄:: https://blog.csdn.net/yal179/article/details/28234345 获取各种窗口句柄: https://blog.csdn.net/yimiyangguang185/article/details/52609767 获取句柄的六种方法: https://blog.csdn.net/u011499992/article/details/45441989 3、MFC控件的外观编辑 参考链接: https://blog.csdn.net/xuanyuanlei1020/article/details/52571562 MFC界面美化: https://blog.csdn.net/shiqw5696/article/details/78891855 , https://blog.csdn.net/u011711997/article/details/52526439 PNG贴图: https://blog.csdn.net/u011711997/article/details/52551106 4、设置对话框位置

Linux最大文件打开数

吃可爱长大的小学妹 提交于 2019-12-27 14:52:08
介绍 在Linux下有时会遇到Socket/File : Can't open so many files的问题。其实Linux是有文件句柄限制的,而且Linux默认一般都是1024(阿里云主机默认是65535)。在生产环境中很容易到达这个值,因此这里就会成为系统的瓶颈。 1.查看方法 使用ulimit -a 或者 ulimit -n open files (-n) 1024 是linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的套接字数量) 这里只是对用户级别的限制,其实还有个是对系统的总限制,查看系统总线制: # cat /proc/sys/fs/file-max man proc,可得到file-max的描述: /proc/sys/fs/file-max This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit, RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages

Windows消息机制

隐身守侯 提交于 2019-12-27 00:09:50
Windows消息机制 Windows 操作系统最大的特点就是其图形化的操作界面,其图形化界面是建立在其消息处理机制这个基础之上的。如果不理解 Windows 消息处理机制,肯定无法深入的理解 Windows 编程。可惜很多程序员对 Windows 消息只是略有所闻,对其使用知之甚少,更不了解其内部实现原理,本文试着一步一步向大家披露我理解的 Windows 消息机制。可以说,掌握了这一部分知识,就是掌握了 Windows 编程中的神兵利器,灵活运用它,将会极大的提高我们的编程能力。 一、 消息概述 Windows 窗体是怎样展现在屏幕上的呢?众所周知,是通过 API 绘制实现的。 Windows 操作系统提供了一系列的 API 函数来实现界面的绘制功能,例如: ² DrawText  绘制文字 ² DrawEdge  绘制边框 ² DrawIcon  绘制图标 ² BitBlt 绘制位图 ² Rectangle  绘制矩形 ² … 再复杂的程序界面都是通过这个函数来实现的。 那什么时候调用这些函数呢?显然我们需要一个控制中心,用来进行“发号施令”,我们还需要一个命令传达机制,将命令即时的传达到目的地。这个控制中心,就是一个动力源,就像一颗心脏,源源不断地将血液送往各处。这个命令传达机制就是 Windows 消息机制, Windows 消息就好比是身体中的血液,它是命令传达的使者。

记一次传递文件句柄引发的血案

匆匆过客 提交于 2019-12-26 17:55:06
apue 上讲 Solaris 系统是可以在进程间通过 STREAMS 管道传递文件句柄的。 书上讲道:“在技术上,发送进程实际上向接收进程传送一个指向一打开文件表项的指针,该指针被分配存放在接收进程的第一个可用描述符项中。” 个人非常感兴趣,就写下了下面的两个程序来验证 STREAMS 管道是否支持发送接收文件描述符,且发送方与接收方的描述符是否可能不相同。 spipe_server.c 1 #define MAXLINE 128 2 3 int get_temp_fd () 4 { 5 char fname[128] = "/tmp/outXXXXXX"; 6 int fd = mkstemp (fname); 7 printf ("create temp file %s with fd %d\n", fname, fd); 8 return fd; 9 } 10 11 int main (int argc, char *argv[]) 12 { 13 if (argc < 2) { 14 printf ("usage: spipe_server <spipe_client>\n"); 15 return 0; 16 } 17 18 int n; 19 int fd[2], fd_to_send, fd_to_recv; 20 if (pipe (fd) < 0) { 21

DDE通信研究

笑着哭i 提交于 2019-12-25 07:19:43
作为一个安全研究人员来讲,听到最多关于DDE的东西可能就是 office DDE 攻击 这种钓鱼攻击手法。 为什么只有Office可以进行DDE攻击? 有哪些软件默认支持DDE协议? DDE还可以做什么? DDE通信还有其他功能命令,如:动态修改Excel表格内容。 本文只针对双击桌面上的xls文件时,Explorer通过DDE将文件路径传给Excel的过程进行研究。 1)研究背景 大部分Office系列软件如Excel、Word等程序默认支持基于Windows消息机制的DDE通信协议。使用DDE的程序,如Excel软件在启动时的命令行参数只有" /dde" 这样Excel就会默认创建一个隐藏的窗口作为DDEServer,并等待接收用户双击桌面xls文件时,DDE Client(Explorer.exe)发来的DDE消息。 2)DDE会话流程 一个程序既可以作为DDE服务器,也可以作为DDE客户端,两者通讯的标识是彼此的窗口句柄HWND。微软建议每次建立会话都应该建立不同的窗口句柄。 第一步: 建立会话,客户端必须通过SendMessage广播一条WM_DDE_INITIATE消息给所有窗口,来定位Excel的DDE Server。 如果lParam的LOWORD为NULL,任何DDEServer可以回复这个消息。DDE Server收到一个WM_DDE_INITIATE消息后

PHP curl_reset函数

二次信任 提交于 2019-12-25 02:04:40
curl_reset— 重置libcurl会话句柄的所有选项。 说明 void curl_reset ( resource $ch ) 该函数将重新初始化cURL的所有选项值(默认值)。 注意: curl_reset() 同样会重新设置 curl_init() 的 URL 参数。 参数 ch 由 curl_init() 返回的 cURL 句柄。 返回值 没有返回值。 实例 <?php // 创建一个cURL句柄 $ch = curl_init(); // 设置 CURLOPT_USERAGENT 选项 curl_setopt($ch, CURLOPT_USERAGENT, "My test user-agent"); // 重置所有先前设置的选项 curl_reset($ch); // 发送 HTTP 请求 curl_setopt($ch, CURLOPT_URL, 'http://w3cschool.cc/'); curl_exec($ch); // the previously set user-agent will be not sent, it has been reset by curl_reset // 关闭句柄 curl_close($ch); ?>    「大理石构件」大理石打孔与大理石构件之间的关系是什么? 来源: https://www.cnblogs.com

PHP curl_multi_exec函数

a 夏天 提交于 2019-12-25 02:04:00
curl_multi_exec — 运行当前 cURL 句柄的子连接 说明 int curl_multi_exec ( resource $mh , int &$still_running ) 处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法。 参数 mh 由 curl_multi_init() 返回的 cURL 多个句柄。 still_running 一个用来判断操作是否仍在执行的标识的引用。 返回值 一个定义于 cURL 预定义常量中的 cURL 代码。 注意: 该函数仅返回关于整个批处理栈相关的错误。即使返回 CURLM_OK 时单个传输仍可能有问题。 实例 这个范例将会创建 2 个 cURL 句柄,把它们加到批处理句柄,然后并行地运行它们。 <?php // 创建一对cURL资源 $ch1 = curl_init(); $ch2 = curl_init(); // 设置URL和相应的选项 curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/"); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/"); curl_setopt($ch2, CURLOPT_HEADER, 0); /

Java运行时数据区域

寵の児 提交于 2019-12-25 01:49:43
Java运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池 虚拟机中对象简介 对象的创建 对象的内存布局 对象的访问定位 直接上图: Java的运行时数据区主要是:方法区、虚拟机栈、本地方法栈、堆、程序计数器。 程序计数器 是一个较小的内存空间,可以理解为当前线程执行的字节码的行号指示器。字节码解释器通过改变这个计数器的值来选取下一个需要执行的字节码指令;分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖于程序计数器。 它是线程私有,每一个线程都有一个独立的程序计数器。如果当前执行的是Java方法,记录的就是当前正在执行的虚拟机字节码指令地址。如果是执行的Native方法,这时是空(Undefined). 此内存区域不会出现OOM(OutOfMemoryError) Java虚拟机栈 Java虚拟机栈也是线程私有,其生命周期和线程相同。java虚拟机描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表(存储编译期可知的各种基本数据类型、对象引用和returnAdress类型)、操作数栈、动态链接、方法出口等信息。每一个方法从执行到结束,就对应着一个栈帧在虚拟机中的入栈和出栈过程。 如果线程的请求的栈深度大于虚拟机允许的深度,将抛出StackOverflowError;如果允许动态扩容

Windows GDI

与世无争的帅哥 提交于 2019-12-21 05:05:55
TextOut (hdc, x, y, psText, iLength) ; TextOut向窗口的显示区域写入字符串。psText参数是指向字符串的指针,iLength是字符串的长度。x和y参数定义了字符串在显示区域的开始位置。hdc参数是「设备内容句柄」,它是GDI的重要部分。实际上,每个GDI函数都需要将这个句柄作为函数的第一个参数。 设备内容 读者可能还记得,句柄只不过是一个数值,Windows以它在内部使用对象。程序写作者从Windows取得句柄,然后在其它函数中使用该句柄。设备内容句柄是GDI函数的窗口「通行证」,有了这种设备内容句柄,程序写作者就能自如地在显示区域上绘图,使图形如自己所愿地变得好看或者难看。 设备内容(简称为「DC」)实际上是GDI内部保存的数据结构。设备内容与特定的显示设备(如视讯显示器或打印机)相关。 对于视讯显示器,设备内容总是与显示器上的特定窗口相关。 设备内容中的有些值是图形「属性」,这些属性定义了GDI绘图函数工作的细节。例如,对于TextOut,设备内容的属性确定了文字的颜色、文字的背景色、x坐标和y坐标映像到窗口的显示区域的方式,以及显示文字时Windows使用的字体。 当程序需要绘图时,它必须先取得设备内容句柄。在取得了该句柄后,Windows用内定的属性值填入内部设备内容结构。 当程序在显示区域绘图完毕后,它必须释放设备内容句柄

JVM内存模型详解

∥☆過路亽.° 提交于 2019-12-21 01:48:04
内存模型 内存模型如下图所示 堆 堆是Java虚拟机所管理的内存最大一块。 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。 此内存区域唯一的目的就是存放对象实例。所有的对象实例都在这里分配内存 Java堆是垃圾收集器管理的主要区域。从内存回收的角度来看,由于现在的垃圾收集器采用的是分代收集算法。所以,java堆又分为 新生代 和 老年代 。从内存分配的角度来说,线程共享的java对中可能划分出多个线程私有的fenp缓冲区(Thread Local Allocation Buffer)。 可以通过 -Xms 、 -Xmx 分别控制堆初始化是最小堆内存和最大堆内存大小。 虚拟机栈 与程序计数器一样,java虚拟机栈也是线程私有的,他的生命周期与线程相同 。 虚拟机栈描述的是Java方法的执行的内存模型:每个方法在执行的同时会创建一个 栈桢(stack frame) 用于存储 局部变量表、操作数栈、动态链表、方法出口等信息 。每个方法从调用直至执行完成的过程,就对应着栈桢在虚拟机栈中入栈到出栈的过程。 虚拟机栈存储的数据类型 局部变量表 存放的是编译器可知得到各种基本数据类型 boolean、byte、char、short、int、float、long、double、对象引用(refrence类型,不等同于对象本身,一个指向对象的起始内存位置的引用指针) 操作数栈 动态链表