- 博客(89)
- 资源 (1)
- 收藏
- 关注
原创 创建Windows计划任务的2种方法
schtasks命令使用taskschddllschtasks命令在cmd下使用schtasks /create /?可以查看到详细用法,网上资料很多不再赘述,下面给出几个例子。 每日指定时间执行某程序 schtasks /create /sc DAILY /tn taskname /tr D: /test.exe /st 14:58 /sd 2017/03/29 /RU “NT AUTH
2017-03-28 17:46:59
6069
转载 explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”); 但是有
2012-09-27 09:44:33
670
转载 技术普及帖:你刚才在淘宝上买了一件东西
你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com。这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是 不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可
2012-03-31 16:51:05
685
转载 STL仿函数
标准模板库(STL)包含C++程序员不可或缺的许多东西。它还有力证明了C++的概念化编程能力。STL的概念包括容器(container)、范围(range)、算法(algorithm)以及仿函数(functor)。本文着重讲解仿函数,它本质上是一个类,但通过重载 operator(),所以行为与函数相似。这个概念在STL之前便已存在,STL只是从另一个角度来看待它。继续阅读本文,你就能体会到个中三味。STL以泛型方式来处理函数。假如一个参数的行为应该与函数相仿,STL算法就不关心它是一个实际的C++
2011-01-12 10:02:00
2848
转载 二叉查找树
<br />二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。
2011-01-05 13:06:00
687
转载 高内聚 低耦合
<br />藕合性指程序模块间存在联系的紧密程度 <br />内聚性指程序模块内部的相互依赖程度<br /><br />低耦合就是模块之间的关联少,越独立耦合度越低<br />高内聚就是模块的内容针对干的事情少,功能越单一内聚越高 <br /><br />一般情况,我们在编写程序的时候,要求高内聚,低藕合.<br /><br />用程序举例的话就是这样的.简单一点,用两个函数来说明一下:<br />藕合性:<br /><br /><br />boolean var2= f
2011-01-05 10:26:00
1723
转载 简单工厂,工厂模式,抽象工厂
简单工厂不算一个正式的设计模式。工厂模式分为抽象工厂模式和工厂方法模式,至于二者的区别不是三言两语说得清楚的,建议百度一下。这里给出定义:抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
2011-01-04 15:26:00
661
转载 c++引用
引用就是常数指针。int& a = c;其实等价于int const* b=&c。不过编译器在处理a.foo()时自动转换成类似b->foo()的形式。所以,即使你完全抛弃int&而用int const*代替也没问题。那么引用在内存中就是一个指针的空间。
2011-01-04 15:01:00
586
转载 设计模式之工厂模式
<br /> 1、为了提高内聚降低耦合,我们经常会抽象出一些类的公共接口形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类来实现,达到了多态的目的。这里很容易出现的一个问题 n多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如new XXX的代码。这里带来两个问题 1) 客户端程序员必须知道实际子类的名称 2)、程序的扩展性和维护变得越来越困难。<br /> 2、还有一种情况就是在父类中并不知道具体要实例化哪一个具体的子类。这里的意思为:假设我们
2010-12-30 17:54:00
645
转载 同步异步 阻塞非阻塞
<br />同步:函数没有执行完不返回,线程被挂起 <br />阻塞:没有收完数据函数不返回,线程也被挂起<br />异步:函数立即返回,通过事件或是信号通知调用者<br />非阻塞:函数立即返回,通过select通知调用者
2010-12-29 16:54:00
587
原创 c++调用c函数 以及c调用c++函数
http://blog.163.com/n_wangyi/blog/static/15747840720108382029367/c++调用c函数:在c函数声明前加extern "c"c调用c++函数:在c++函数实现前后添加extern "C"{ //int fun(){} }
2010-12-27 13:52:00
624
原创 虚析构函数
<br />在删除指向子类的基类指针时(base *p=new derived; delete p;),如果基类析构函数不为虚函数,则不会调用子类的析构。<br />引入虚析构函数的目的应该是正确释放指向子类的基类指针。
2010-12-20 15:42:00
647
转载 数据库范式
<br />理解数据库范式<br />系统是短暂的数据是永恒的<br />转自:http://blog.csdn.net/jianxiong8814/archive/2008/03/03/2142442.aspx<br /><br /> 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率、优雅的数据库。甚至设计出错误的数据库。而想要理解并掌握范式却并不是那 么容易。教科书中一般以关系代数的方法来解释数据库范式。这样做虽然能够十分准确的表达
2010-11-24 10:46:00
548
转载 windows消息机制
<br />一 Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能 创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。<br /><br /><br />二 Windows为当前执行的每个Windows程序维护一个「消息队列」。在发生输入事件之后,Windows将事件转换为一个「消息」并将消息放入程序的消息队列中。程序通过执行一块
2010-11-23 10:12:00
677
转载 用InternetOpen下载小文件 vc c++
<br />文章改自:<br />http://hi.baidu.com/hacknothack/blog/item/4ca77710bc8e97fdc3ce79ad.html<br />使用vc6.0通过<br />#include "stdafx.h"#include<windows.h>#include<wininet.h>#include<iostream.h>#pragma comment(lib,"wininet.lib")void main(){ DWORD
2010-10-15 11:13:00
5271
1
转载 从C++向COM演进
我们要解决的问题是复用问题,我们的目标:(1) 当被复用的软件升级时,客户程序不需要重新编译。(2) 被复用的软件应该容易扩展和升级。(3) 在客户能正常使用复用组件功能的基础上,组件向客户暴露尽可能少的信息。(4) 尽可能是客户使用组件更加方便,将许多繁琐复杂的工作从客户端转移到组件内部。==》所有可以在组件内部完成的事情,决不在组件外部完成。COM 的核心在于:接口。它解决了复用时两个主要的问题:(1)
2010-07-21 14:26:00
606
转载 vc所支持的文件类型
vc所支持的文件类型 <br /><br /> DSW:全称是Developer Studio Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成 <br /> DSP:全称是Developer Studio Project,也是一个配置文件,不过她记录的是一个项目的所有配置信息,纯文本文件 <br /> OPT:与DSW、DSP配合使用的配置文件,她记录了与机器硬件有关的信息,同一个项目在
2010-07-21 13:39:00
739
转载 VC++中(.def) 文件
一直没什么问题的工程突然出了问题,这个原因出现过几次都是糊里糊涂就过去了,今天贴出来作为技术总结吧。以下就是在C++中自建的dll定义的API,是不是应该在.def中做一个声明。MSDN中的名词解释模块定义 (.def) 文件为链接器提供有关被链接程序的导出、属性及其他方面的信息。生成 DLL 时,.def 文件最有用。由于存在可代替模块定义语句使用的链接器选项,通常不需要 .def 文件。也可以将 __declspec(dllexport) 用作指定导出函数的手段。在链接器阶段可以使用 /
2010-07-21 11:09:00
7738
转载 从def文件得到lib文件
<br />程序使用dll时需要lib文件,下载sqlite3时只能得到def和dll文件,所以可以使用lib命令生成一个lib,过程如下<br />1)将C:/Program Files/Microsoft Visual Studio 8/VC/bin放在环境变量path中<br />2)启动CMD,进入到放def文件的目录<br />3)lib /DEF:sqlite3.def /machine:IX86<br />这时可能提示找不到mspdb80.dll,所以<br
2010-07-21 10:59:00
2114
转载 关于Debug和Release之本质区别
<br /> 简单的说,区别在于运行时库,程序是否优化,是否包含调试信息。<br />一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 <br />Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,
2010-07-21 10:29:00
672
转载 volatile关键字
<br />volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行
2010-07-08 13:45:00
461
原创 基本概念:同步、异步、阻塞和非阻塞
<br />在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。同步<br />所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对
2010-07-07 16:02:00
469
原创 POP3 SMTP协议基本命令
POP3邮件接收telnet mail.tp-corp.com 110USER test01PASS test01STAT 查看邮箱状态LIST 邮件列表TOP 254 0 查看指定邮件的邮件头RETR 254 获取指定邮件 DELE 254 删除第254封邮件 SMPT发送邮件telnet mail.tp-corp.com 25HELO mail.tp-corp.comEHLO mail.tp-corp.comauth login用户名 dGVzdD
2010-07-07 11:49:00
1291
转载 CreateIoCompletionPort和完成端口
<br />摘自《Networking Programming for Microsoft Windows》第八章<br />“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!<br />从本质上说,完成端口模型要求我们创建一个Win32完成端口对象,通过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求提供服务。<br />使用这种模型之前,首先要创建一个I/O完成端口对象
2010-07-05 16:34:00
740
转载 CreateIoCompletionPort
<br /> 在Windows系统里,使用完成端口是高性能的方法之一,比如把完成端口使用到线程池和网络服务器里。现在就通过线程池的方法来介绍怎么样使用完成端口,高性能的服务器以后再仔细地介绍怎么样构造它。其实完成端口是一个队列,所有的线程都在等消息出现,如果队列里有消息,就每个线程去获取一个消息执行它。先用函数CreateIoCompletionPort来创建一个消息队列,然后使用GetQueuedCompletionStatus函数来从队列获取消息,使用函数PostQueuedCompl
2010-07-05 15:28:00
2387
3
原创 socket通讯tcp与udp的区别
<br />1.TCP服务器端:<br />#include <Winsock2.h><br />#include <stdio.h><br />void main()<br />{<br /> WORD wVersionRequested;<br /> WSADATA wsaData;<br /> int err;<br /> <br /> wVersionRequested = MAKEWORD( 1, 1 );<br /> <br /
2010-06-29 15:31:00
6453
2
转载 进程与系统服务之间用event通讯
<br />一般来说,进程与进程间通讯的通会采用以下代码<br />进程A<br />HANDLE hevent;<br />hevent=CreateEvent(NULL, TRUE, FALSE, "myevent");<br /> DWORD dwRtn = WaitForSingleObject(g_hEvent, 60*1000); //等1分钟<br /> if (dwRtn == WAIT_OBJECT_0) <br />{<br /> DePrintf("get even
2010-06-23 15:36:00
2025
2
原创 SIP的基本工作过程
<br />SIP IP电话系统定义了注册/注销、呼叫、重定向、能力查询四种工作过程。 <br />注册/注销过程<br /> SIP为用户定义了注册和注销过程,其目的是可以动态建立用户的逻辑地址和其当前联系地址之间的对应关系,以方便实现呼叫路由和对用户移动性的支持。逻辑地址和联系地址的分离也方便了用户,它不论在何处、使用何种设备,都可以通过唯一的逻辑地址进行通信。<br /> 注册/注销过程是通过REGISTER消息和200成功响应来实现的。在注册/注销时,用户将其逻辑地址和当前联系地址通过R
2010-06-23 13:18:00
6697
转载 SIP/H.323/MGCP协议详解
SIP/H.323/MGCP协议详解 摘要:SIP协议是NGN中的重要协议,越来越得到业界的重视。本文通过SIP协议的背景、功能、网络元素、实现机制、以及SIP消息的组成等几个方面对SIP协议做了全方位的概要性介绍,以使读者对SIP有初步的概念和认识。<br /> 一、SIP协议的背景和功能<br />SIP( 会话初始协议)的开发目的是用来帮助提供跨越因特网的高级电话业务。因特网电话(IP电话)正在向一种正式的商业电话模式演进,SIP就是用来确保这种演进实现而需要的NGN(下一代网络)系
2010-06-18 09:39:00
2232
1
原创 dynamic_cast、const_cast、static_cast、reinterpret_cast
dynamic_cast的注意事项 dynamic_cast转换符只能用于指针或者引用。dynamic_cast转换符只能用于含有虚函数的类。dynamic_cast转换操作符在执行类型转换时首先将检查能否成功转换,如果能成功转换则转换之,如果转换失败,如果是指针则反回一个0值,如果是转换的是引用,则抛出一个bad_cast异常,所以在使用dynamic_cast转换之间应使用if语句对其转换成功与否进行测试,比如pd=dynamic_cast(pb); if(pd){…}else{…},
2010-06-11 10:01:00
718
原创 好用的Yum源
<br />修改/etc/yum.repos.d/CentOS- Base.repo为:[base] name=CentOS-5 - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever5&arch=$basearch& repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ baseurl=http://ftp
2010-06-08 17:41:00
1710
原创 使用vmware安装Linux错误No drivers found解决方法
<br />安装redhat5的时候报了这个错,<br />原因:本地硬盘为SATA,vmware缺省将硬盘设置为SCSI-Buslogic,而系统挂载时未挂载相应驱动<br />解决办法:<br />将安装时默认分配的虚拟硬盘删除,从vm选项中重新创建IDE的虚拟硬盘。
2010-06-08 09:55:00
2822
转载 /lib和/usr/lib和/usr/local/lib的区别(zz)
<br />简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的.<br /> /lib/ — 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件。目录 /usr/lib/ 中含有更多用于用户程序的库文件。/lib目录下放置的是/bin和/sbin目录下程序所需的库文件。/lib目录下的文件的名称遵循下面的格式: <br />libc.so.* <br />ld* <br /><br />仅仅被/usr目录下的
2010-06-03 17:21:00
738
转载 存储类关键字(storage class specifier)
储类关键字(storage class specifier)包括:auto,extern,static,register ,mutable,volatile,restrict以及typedef。对于typedef,只是说在语句构成上,typedef 声明看起来象 static,extern 等类型的变量声明;而且对于编译器来说,多个存储类关键字不能同时用,所以typedef
2010-05-19 15:53:00
2455
原创 XML不区分大小写查询
按照名为"mydomain1.com"的 DomainName 属性对以下 XML 数据执行不区分大小写的搜索Mydomain1.COMMSXML 3.0 中 translate 的语法如下:oXML.setProperty "SelectionLanguage", "XPath"set node = oXML.selectS
2010-02-22 10:51:00
5759
vs2013 中文英文语言包
2017-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人