句柄

XML-RPC-2RPC

青春壹個敷衍的年華 提交于 2019-11-28 07:44:45
远程过程调用协议 RPC一般指远程过程调用协议 RPC(Remote Procedure Call)— 远程过程调用 ,它是一种通过 网络 从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议 假定某些 传输协议 的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信 模型中,RPC跨越了 传输层 和 应用层 。RPC使得开发包括网络 分布式 多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复 信息 ,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 有多种 RPC模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算 环境 (DCE)。 中文名 远程过程调用 外文名 Remote Procedure Call 核心思想 信息传输协议 研究方向 分布式 目录 1 工作原理 2 协议结构 工作原理 编辑 运行时

初识API函数

人走茶凉 提交于 2019-11-28 06:11:13
我之前是一个只会编写数值计算的程序的OIer,但我并不甘于这种现状,于是 我 编写了我 的第一个使用API函数的C++程序 , 开发平台是VS2012 : // ConsoleApplication.cpp : 定义控制台应用程序的入口点。 // #include<stdio.h> #include"stdafx.h" #include<Windows.h> int _tmain(int argc, _TCHAR* argv[]) { HWND wnd; wnd=FindWindowA(NULL,"无标题 - 记事本"); SendMessage(wnd,WM_CLOSE,0,0); system("pause"); return 0; } View Code 之前有在看谷夕写的HACK编程实例精讲,第一节有介绍API函数,他的书上用的是hDesk=OpenDesktop(lpszDesktop,0,FALSE,DESKTOP_ENUMERATE);在这之前我连如何调用API函数都不知道,尝试过#include<stdafx.h>等等乱七八糟的东西,结果都不行.后来百度了一下,才发现原来是要加#include<windows.h> 明白如何才能可以调用API函数之后,尝试使用书上介绍的OpenDesktop函数,因为我什么都不知道,于是程序我就这么写了: //

初识pandas——筛选数据

瘦欲@ 提交于 2019-11-28 06:07:17
最近研发了一个关于手机号探测的一个小工具,从一开始的四个for循环到现在只需要输入6位手机号,就可以将手机号码复原,中间的过程也是非常的辛苦,遇到bug就百度四处问,这才是我应该做的事情,而不是在打什么游戏,看什么电视,跟一些毫无意义的人闲聊,正文开始 首先是安装pandas库,我已经发布了安装的whl的包 第一步就是到导入这个库 import pandas as pd 接下来就要显示他的列和行,他默认是只显示5行,所以我们要把他全部显示出来 pd.set_option('display.max_rows', None) 接下来就是打开excel文件了 df = pd.read_excel('地址/文件名.xlsx') #df有点像open函数的句柄,咱就把他当成句柄吧 接下来进行筛选数据,有好几种方法 control = " prefix == '180' and isp == '电信'" cou = df.query(control) #筛选出开头为180 和 运营商为电信的所以数据 第二种方法 变量 - df['筛选'] == "等于的值" 句柄[变量] 第三种,含有什么字符 变量 = 句柄p[筛选类型].str.startswith(‘a’) 筛选出来开头为a在筛选类型中 正则表达式 变量 = "123<筛选类型<456" df.query(变量) query 方法

Windows 进程间通信

淺唱寂寞╮ 提交于 2019-11-28 02:32:36
3.4 使用 WM_COPYDATA 消息通信 对于少量数据可以用WM_COPYDATA方便地实现通信。由于SendMessage()是阻塞的,只有接收方响应了消息,SendMessage()才能返回,否则一直阻塞。所以,对于大量数据来说,用SendMessage()就容易造成窗口假死。 3.4.1 通过 WM_COPYDATA 消息实现进程间通信的方法 在Win32中,WM_COPYDATA消息主要目的是允许在进程间传递只读数据。SDK文档推荐用户使用SendMessage()函数,接收方在数据复制完成前不返回,这样发送方就不可能删除和修改数据。这个函数的原型如下: SendMessage(WM_COPYDATA,wParam,lParam) 其中wParam设置为包含数据的窗口句柄,lParam指向一个COPYDATASTRUCT的结构,其定义为: typedef struct tagCOPYDATASTRUCT{ DWORD dwData; DWORD cbData; PVOID lpData; }COPYDATASTRUCT; 其中dwData为自定义数据, cbData为数据大小, lpData为指向数据的指针。需要注意的是,WM_COPYDATA消息保证发送的数据从原进程复制到目标进程。但是,WM_COPYDATA消息不能发送HDC、HBITMAP之类的东西

Halcon C# 联合编程问题(三)

我们两清 提交于 2019-11-28 00:58:45
因为之前遇到的那个halcon处理的图片要转换成ImageSource的问题,迟迟没有找到好的解决方案, 于是决定直接在wpf中使用halcon提供的HWindowControlWPF,用于显示图片。 结果发现这个东西好坑啊,这个东西感觉就是个窗口,不能直接绑定图片资源,不能实现像给Image控件添加Source的那样的功能。 只能够使用 HOperatorSet.DispObj 来将图片显示到窗口上。 随之而来的几个问题: 窗口拉大缩小过程中,图片会消失掉,尝试了各种事件,例如OnHMouseUp,OnMouseDown,还有整个窗口的SizeChange之类的,让这些事件触发的时候全都来个显示图片,然而都不能完全解决这个问题, 而且很神奇的是图片消失掉之后,点一下这个控件,图片就显示出来了。。。这里可能和我设置的某一个事件有关,没有详细研究。当时试了太多情况了,没有一一记录下来,过后就忘记了。。。 图片大小不好控制,我像按照一定的尺寸来显示图片,尝试了设置控件的ImagePart,RenderSize,Width,Height等等一系列的属性,但是效果乱七八糟的,等以后有空了可以总结一下是怎么个乱七八糟法。 网上竟然几乎找不到关于这个控件的使用说明,很绝望。。。连ihalcon论坛里面都没有多少关于这个控件的介绍

VB 函数在串口操作模块的运用

人盡茶涼 提交于 2019-11-27 20:42:50
1.应用 1.1RegOpenKeyEx函数涉及注册表的相关知识,先了解注册表的作用及数据结构 注册表的作用 注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。 具体来说,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息;系统内核从Registry中选取信息,包括要装入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等;同时设备驱动程序也向Registry传送数据,并从Registry接收装入和配置参数,一个好的设备驱动程序会告诉Registry它在使用什么系统资源,例如硬件中断或DMA通道等,另外,设备驱动程序还要报告所发现的配置数据;为应用程序或硬件的运行提供增加新的配置数据的服务。配合ini文件兼容16位Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中

Spy++使用方法

别说谁变了你拦得住时间么 提交于 2019-11-27 20:36:56
原文转自 http://jingyan.baidu.com/article/3a2f7c2e76584a26aed61174.html 1、Spy++ 是Visual Studio 自带的工具(菜单"Tools" --> "Spy++"),下面的 Spyxx.exe 也是启动 Spy++ 。 2、spy++ 是微软 Visual Studio 编译器自带的一款工具。它可以显示系统对象(包括进程、线程和窗口)之间关系的图形树,搜索指定的窗口、线程、进程或消息, 查看选定的窗口、线程、进程或消息的属性等等。因此,在 spy++ 的帮助下,我们进行程序调试将容易得多。 下面,我们通过一个简单的示例,来教大家如何使用 spy++ 查看指定窗口的属性。 方法/步骤 (1) 用 VS 打开一个工程,点击启动按钮。程序运行后,显示一个测试窗口。 (2) 点击 VS 菜单“ 工具 ” - “ spy++ ”,启动 spy++。 (3) 点击 spy++ 工具栏中的 望远镜 图标,弹出一个“窗口搜索”的对话框。在“窗口搜索”对话框中,鼠标左键在 查找程序工具 后面的 图标 处按下不放,将此图标拖移到我们想要知道信息的窗口内,再松开鼠标。 (4) 此时,“窗口搜索”对话框内将显示该要查找信息的窗口的句柄、标题和类名。查看完毕后,单击确定。 (5)“窗口搜索”对话框关闭后,spy++

记一次文件句柄泄漏导致的崩溃

吃可爱长大的小学妹 提交于 2019-11-27 18:42:15
最近项目上遇到好几个崩溃问题,解决过程有点曲折,在此记做个记录。 项目背景介绍:该项目为语音识别实时分析系统,整套系统架构如下:    接连几次崩溃的是中间的语音流接入系统,崩溃的情况如下: 1、打开文件过多报错,导致系统直接卡死。 2、打开线程过多,导致系统直接崩溃。 3、Jetty容器异步支持bug。 第一次崩溃:打开文件过多   首先在日志中大量的刷屏,因为我们的语音流接入系统只是一个中间转发的服务,这个服务当时是从实时语音分析服务中剥离出来的,当时剥离出来的主要目的是降低实时语音分析服务的带宽压力,所以当出现这个问题后,直接指向的是有网络连接没有释放。   既然确定了排查方向,使用lsof命令,好家伙,该进程直接占了六万多个文件句柄,其中eventpoll占了一万六千多个,打开的pipe有三万三千多个,就这两项就占了近五万个句柄。项目上部署的这套系统最高并发为预计的3000路通话,即使在最高通话并发的情况下,也不可能占用这么多句柄数,所以情况就是有连接没有释放,导致句柄泄漏,并逐渐累积到这个数目,验证这个情况,使用netstat,果然发现大量的连接一直没有释放。      好了,锁定了目标,接下来就是排查代码中没有正确释放的地方。   如最上,一通新通话进来时,我们的语音流接入系统会接入两个语音流并发送给语音识别服务进行识别,在这个过程中,语音流发送是一个持续的过程

获取指定句柄的类型号.

夙愿已清 提交于 2019-11-27 12:22:41
目录 一丶简介 二丶原理与代码. 2.1原理 2.2原理伪代码讲解 3.代码实现 4.用到的结构 5.代码演示截图. 6.附加 一丶简介 在windows系统下.句柄是很常用的. 骚操作的方法可以通过句柄拷贝方式拷贝到另一个进程让其占用句柄.比如独占文件. 但是有时候比如驱动想删除文件.强删文件的时候就会用到句柄类型. 但是此时一般都是写死的.网上也很少相关资料.这里就介绍一下.怎么通过句柄获取指定句柄类型(任何内核对象 句柄都可以使用) 下面以文件举例 二丶原理与代码. 2.1原理 原理还是使用未文档化的API 1.使用 ZwQuerySystemInformation 的16号功能遍历全局句柄表 2.创建文件(什么文件都可以)得出 文件句柄 3.遍历句柄表,判断文件句柄是否和遍历出的句柄表中记录的句柄一样. 4.如果一样.获取句柄表中 objectindex 即可.这个则是记录的文件句柄. 2.2原理伪代码讲解 主要是两个结构体.在使用 ** ZwQuerySystemInformation**的时候遍历的句柄的详细信息的结构 如下: typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO { USHORT UniqueProcessId; USHORT CreatorBackTraceIndex; UCHAR

Nginx入门教程

╄→гoц情女王★ 提交于 2019-11-27 10:22:11
1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师IgorSysoev所开发,供俄国大型的入口网站及 搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括 Yandex、Mail.Ru、 VKontakte,以及 Rambler。据 Netcraft 统计,在 2012 年 8 月份,世界上最繁忙的网站中有 11.48%使用 Nginx 作为其服务器或者代理服务器。目前互联网主流公司 360、百度、新浪、腾讯、阿里等,目前中国互联网企业 70%以上公司都在使用 nginx 作为自己的 web