随笔分类 - 技术专题
摘要:一、使用向导 1.导入wsdl文件:file--new----other----webservice---WSDLimporter---输入wsdl地址 http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 完成之后,即可导入wsdl文件。 注:结尾处的'?wsdl'不能少。 2.在导入的wsdl文件中手动添加部分注册代码: InvRegistry.RegisterInterface(TypeInfo(qqOnlineWebServiceSoap), 'http://WebXml.com.cn
阅读全文
摘要:腾讯QQ在线状态 WEB 服务 Endpoint: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx Disco: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco WSDL: http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 通过输入QQ号码(String)检测QQ在线状态。返回数据(String)Y = 在线;N = 离线 ;E ...
阅读全文
摘要:主要特点: 完成同一种任务的一组线程。(一般初始线程数>=64) 原理: 通过“事先创建一堆线程,并且执行完后不销毁”的方式,避免每次任务到来时, 都要创建线程的开销。主要组成部分: 线程池管理器(ThreadPoolManager): 创建线程池 添加新任务 销毁线程池 工作线程(WorkThread): 线程池中的所有线程 任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。 任务队列(TaskQueue):用于存放没有处理的任务。提供一种缓冲机制。基本操作: 一般情况下是首先初始化一定数量的工作线程,并把任务提交给空闲的线程,当线 程都处于忙...
阅读全文
摘要:一.基本注意点 1.访问公共变量时需要设置临界区 2.不可直接操作界面,需通过向窗口发送消息来处理 PS:下面的测试程序中,为简单起见,在线程中直接对主界面进行了操作,实际开发 项目时是不应该如此操作的。二.主要代码 公共变量与临界区变量unit GlobalVar;interfaceuses Windows;var userCount:Integer; UserInfoRTL:TRTLCriticalSection;implementationend. 线程定义unit UserInfoManage_Thread;interfaceuses Classes, SysUtils, Gl...
阅读全文
摘要:一.基本概念只是一个“验证推断”的调式工具,而不是程序的一部分。 a)断言作用:顾名思义,开发者用于“验证自己的推断”的工具,调试阶段使用。 简单的参数验证——变量 复杂的条件验证——函数 简而言之, 断言是用来验证我们编码时所做的假设,而不是用来处理 运行时的各种逻辑分支。 b)开启与关闭 整个IDE: Project—>Option—>Compiler—>Assertion 代码中:{$ASSERTIONS ON} ,{$ASSERTIONS OFF} C)何处使用 1)私有函数中进行“参数检查” 2)适当的地方,检查系统中的某些关键变量 对于公共函数,通常不使用asse
阅读全文
摘要:一.原理 通过使用“内存映射文件”,实现内存共享二.主要操作 共享内存结构: PShareMem = ^TShareMem; TShareMem = Record id:string[10]; name:string[20]; age:Integer; end; 基本变量: shareMemName:string; //共享内存名 fileHandle : THandle;//内存映射文件句柄 pUserInfoShareMem : PShareMem;//指向共享内存的指针 a)写入程序 1)创建“内存映射文件”begin //创建“内存映射文...
阅读全文
摘要:一.钩子的基本概念 a) Hook作用:监视windows消息,在“特定消息”没有到达窗口之前捕获它。 b)钩子分类: 线程专用钩子:只监视指定的线程 全局钩子:监视系统中的所有线程 如果Hook过程在应用程序中实现,若应用程序不是当前窗口时,该Hook就不起作用; 如果Hook在DLL中实现,程序在运行中动态调用它,它能实时对整个系统进行监控. c)几种常用类型的钩子: 1)键盘钩子可以监视各种键盘消息。 2)鼠标钩子可以监视各种鼠标消息。 3)外壳钩子可以监视各种Shell事件消息,启动和关闭应用程序等。 4)日志钩子可以记录从系统消息队列中取出的各种事件消息。...
阅读全文
摘要:两类主要消息处理函数:1)向自身分发消息,由自己的成员函数处理:Dispatch(var message:string);同步2)向指定的类投递消息: a)SendMessage 异步投递 b)PostMessage 同步投递一.自定义消息号和消息结构const WM_5001=WM_USER+5001; WM_5002=WM_USER+5002; WM_5003=WM_USER+5003; WM_6001=WM_USER+6001;type //自定义消息结构 PMsgRec = ^TMsgRec; TMsgRec = record msgNo : Cardinal...
阅读全文
摘要:反射的基本作用:运行期,根据对象名就能获得该对象的:类型、方法、属性基本的类定义如下:1 class Person {2 String name;3 int age;4 5 public String toString(){6 return"name="+name+" age="+age;7 }8 }一、反射的作用 反射的作用1:根据“字符串类型的类名”创建“实例” String driverName="com.mysql.jdbc.Driver"; try{ Class.forName(driverName); System.out
阅读全文
摘要:一、纯回调函数 定义回调函数的原型:指明函数参数类型和返回值类型1 type2 TCallBackFuncType = function(RequestStr:string):boolean; stdcall; //定义回调函数原型 定义某个具体的全局函数,并指明是回调函数 1 function ThreadCallBackFunc(RequestStr:string):boolean;stdcall; 2 3 implementation 4 5 function ThreadCallBackFunc(RequestStr:string):boolean;stdcall; 6 begin 7
阅读全文
摘要:一、加解密算法在网络通讯中的作用 a)使通讯信息不被第三方看到 报文加密:可采用DES或3DES算法DES和3DES算法可逆,接收方可通过密钥将密文还原 以下是使用第三方提供的dll中的DES算法进行报文加密: 1 #include 2 #include "des3.h" 3 #include "h...
阅读全文
摘要:一个重要概念:Socket与TCP、UDP之间的关系?SOCKET是API,而TCP/UPD是通信协议,即:SOCKET是TCP、UDP的实现方式,用SOCKET编程可以实现TCP、UDP的通信。 SOCKET就像一个管子,连接两端。而TCP、UDP就像管子中的东西。是液体还是气体。也就是传送的协议 语言表达的例子: 用SOCKET实现TCP(或者UDP)通信。 (相反,TCP或者UDP通信也可以不使用SOCKET实现)一、TCP协议(传输层)二、UDP协议(传输层)三、Http协议(应用层) a)关于端口 Server端:强制使用的标准端口 80;还可绑定更多其它端口,eg:800...
阅读全文
摘要:一、VC程序调用VC编写的导出函数 a)定义 1)创建dll工程 2)在工程下添加源程序文件,并编写代码 源代码如下:1 _declspec(dllexport) int IntPlus(int a,int b)2 {3 return a+b;4 } 编译运行生成dll b)调用 1)创建普通的控制台工程并将要使用dll和lib文件拷贝至工程目录下 2)工程设置中,生命要使用的lib文件 3)编写源代码 1 #include<iostream> 2 using namespace std; 3 4 extern int IntPlus(int a,int b); 5 6 int m
阅读全文
摘要:一、Server端 使用的indy控件:idtcpsrvr1: TIdTCPServer; a)设置默认端口1 begin2 Self.btn1.Enabled:=False;3 idtcpsrvr1.DefaultPort:=2001;4 idtcpsrvr1.Active:=True;5 end; b)对客户端连接事件响应1 procedure TForm1.idtcpsrvr1Connect(AThread: TIdPeerThread);2 var3 ipStr:string;4 begin5 ipStr:=AThread.Connection.Socket.Binding.PeerI
阅读全文
摘要:A)用正则表达式代替常规的字符串处理 用处一:探测子串在原串中的位置(数组下标从0开始)1 var SourceString="first string for detecting,second string for Detecting";2 var RegExpObject=/detecting/; //等价于: RegExpObject=new RegExp("detecting") 3 alert("探测到的子串'detecting'在原串中的位置为:"+SourceString.search(RegExpObj
阅读全文
摘要:一、读取Xml文档 xml文档内容: 代码实现: 1 try{ 2 File myFile=new File("E:\\SourceCode\\JavaWorkspace\\Xml\\XmlFiles\\Candidate.xml"); 3 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); 4 DocumentBuilder builder=factory.newDocumentBuilder(); 5 Document doc = builder.parse(myFile); 6 No
阅读全文
摘要:一、几个字符串处理的基本函数 a)子串定位——获取子串在原字串中的位置(不是数组下标,而是第几个)1 function pos('子串','原字符串'):integer 说明:当有中文时,最好这样用:pos('子串',wideString('原字符串')),这样可以避免前一个汉字的后半部分和后一个汉字的前半部分 也恰好能构成一个汉字时出现问题。 b)子串截取——拷贝出原字符串中的部分子串(Index不是数组下标,而是第几个) 1 function Copy(S; Index, Count: Integer):string 说明:其
阅读全文