自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(91)
  • 收藏
  • 关注

原创 用shell脚本实现从文件中读取数据插入mysql

shell脚本无所不能,实现数据库的导入导出.最简单的就是下面的脚本,循环从文件中读出单行字符串,循环插入msql格式是: mysql -h(数据库IP) -u(用户名) -p(密码) -P(端口) -D (数据库名) -e (sql)#!/bin/bashwhile read linedo    echo $line    mysql -h10.147.23.120 -u

2012-08-24 19:34:21 6928 1

原创 webkit 目录说明

一、external/webkit/webcoreAccessibility   提供控件的可用性相关的内容。主要说明使用Mac和Win操作系统下的图形控件的可用性,以及使用不同的图形库Gtk、Qt、Wx的控件的绑定和使用情况等。Mac: MAC OS XChromium:一个开源的网页浏览器,也相当于Google Chrome的工程版。Gtk:是unix-like系统下开发图

2012-06-03 16:21:35 1083

转载 Chrome和webkit的一些资源

Google Chrome 源码下载Goolgle 于 2008.09.02 发布了浏览器 Google Chrome。Google Chrome 使用的内核源码来自开源浏览器引擎 WebKit Open Source Project。Google Chrome 的源码,

2011-08-27 18:46:50 652

原创 高性能Linux服务器优化策略三:调整网络参数

<br />调整/etc/sysctl.confnet.ipv4.tcp_syncookies = 1  <br /><br />表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;net.ipv4.tc

2010-12-10 18:51:00 1298

原创 高性能Linux服务器优化策略二:多核任务平均分配

如果服务是多核的,有时候CPU的工作不平均,如何在操作系统层面和应用层面解决这个问题?

2010-09-06 00:28:00 1064

原创 高性能Linux服务器优化策略一:优化配置

Linux服务器并不是装上就达到最优性能的,为了让CPU专注你自己的程序,而不再一些无所谓的服务上浪费时间,需要关闭一些不需要的服务。

2010-09-05 23:43:00 853

原创 RTP over RTSP包混合发送的解决办法

禁止TCP数据的粘合,使接收端能够准确分出RTP和RTSP包。

2010-07-30 20:53:00 2586

原创 一个重绘的ip控件

关键APIFillSolidRect() CPaintDC dc(this);  CDC *dc = GetWindowDC(); 未完 待续

2009-07-27 15:46:00 457

原创 继承CWinThread创建UI线程

     我们经常在UI线程里面创建一些worker线程来执行一些复杂而冗长的计算任务,也可以创建一个UI线程,比如在点击一个按钮后弹出一个对话框,也可以用一个线程来执行。    只需要继承CWinThread就行了,并重载2个函数:virtual BOOL InitInstance();    virtual int ExitInstance();/代码如下:class CU

2008-10-09 15:04:00 2040

原创 C++细节之六:何时使用继承 何时使用模板

     在用才C++设计类的时候,要考虑是使用继承还是使用模板,原则如下:     当对象的类型不影响类中函数的行为时,就要使用模板来生成这样一组类。·    当对象的类型影响类中函数的行为时,就要使用继承来得到这样一组类。   

2008-09-26 18:57:00 760

原创 C++细节五:避免产生临时(隐式)对象

    产生一个对象,如果这个对象很大并且这个对象是在一个循环里面产生的,是特别耗资源的,因为编译器要找到一块合适的内存,如果没有合适的还要整理磁盘碎片并合并为一块合适的对象存储区。因此,在编程中一定要小心的产生临时对象。    临时对象在C++语言中的特征是未出现在源代码中,从堆栈中产生的未命名对象。这里需要特别注意的是,临时对象并不出现在源代码中。即开发人员并没有声明要使用它们,没有为其声

2008-09-21 22:42:00 576

原创 Sleep(0)及其使用场景

    Sleep(n)的作用是让当前线程睡眠n毫秒,以便执行其他线程,如果没有其他线程,那睡眠n毫秒后,继续执行。    而如果n=0,Sleep(0)是指CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程。    那么,Sleep(0)应该在那种情况下使用? 一般来说,如果当前线程比较耗时比较占CPU资源,可以在结尾处加上Sleep(0),

2008-09-20 11:46:00 4754 3

原创 递归删除文件夹

    windows API有一个RemoveDirectory(path)函数,但是必须是该文件夹为空,才能删除。在这个ActiveX中,因为只有3个需要另外存放的DLL,因此我是采用一下代码新建文件夹的:    TCHAR                   csStr[256];    CString                 sysDirPath;    Get

2008-09-16 16:28:00 920

原创 C语言获取文件后缀名

#include  #include   //求子串 char* substr(const char*str, unsigned start, unsigned end){    unsigned n = end - start;    static char stbuf[256];    strncpy(stbuf, str + start, n);   

2008-09-04 15:11:00 5118 1

原创 C++细节之四----再论四大函数

     在建立一个类的过程中,首先应该考虑的是,有哪些成员变量,即对象拥有的属性,第二步抽象出类的接口,即需要哪些成员函数,并确定访问权限。第三步,当然是考虑如何为类建立构造函数和析构函数了。对于成员变量中有指针的情况,需要提供拷贝构造函数和赋值函数。      1 构造函数:这个函数里面有许多需要注意的问题,第一,成员变量的赋值是放入初始化成员列表中,还是放在构造函数内部,两者的区别是

2008-07-28 01:02:00 698

转载 从printf()看可变参数函数

1. 使用情形 int a =10;double b = 20.0;char *str = "Hello world";printf("begin print/n");printf("a=%d, b=%.3f, str=%s/n", a, b, str);...  从printf的使用情况来看,我们不难发现一个规律,就是无论其可变的参数有多少个,printf的第一个参数总是

2008-07-21 15:36:00 453

原创 C++细节之三----当类中含有指针成员时

      当类中包含指针成员,有一些问题要注意,比如,默认的析构函数要释放对象,并不会删除指针所指的内容,而只是删除指针,明显这就产生了内存泄露。为了解决这个问题,必须在构造函数上下功夫。就是实现三大函数,即:构造函数,拷贝构造函数,operator=。在这三个函数对指针所指内容进行深复制。这样做了之后,这个类的每个对象都单独的拥有这块内存。问题自然就解决了。      这个问题也可以引用《

2008-07-17 22:52:00 590

原创 C++细节之二---注意函数的返回值

  似乎从来没有犯过返回值还出问题的错误,一般来说,一个函数结束后,会在函数指针出开辟一块内存存放返回值,这也是函数生命周期结束返回值以来存在的原因。没有犯过这种错误是因为,我们很少写返回const XXX &,也就是当返回值是一个大对象的引用的时候,我们经常容易犯这种错误。    和参数传递一样,函数的返回也包含3种,按值返回,按常量的引用返回,按地址返回。其中按地址返回就是返回一个指针了。

2008-07-11 01:45:00 633

原创 C++细节之一----3种参数传递方式的使用场景

  对于参数传递,有3种方式:a 传值 b 传引用 c 传指针  如果是基本数据类型,那就传值,如果是传递大的对象,那当然是传引用。而对于引用来说,是赋了值后就不会改变的,应该加const, (const &a). 如果函数体要改变这个对象,那就传指针。这是一个结论,以下说明原因。  将实参传递给形参,需要赋值操作,对于基本数据类型,当然是很快的,但是对于大的对象来说,赋值就是个性能的瓶颈

2008-07-11 01:06:00 531

原创 C++细节---序言

    C++是一门复杂的计算机语言,没有C语言简洁,也没有Java、C#的简单。正是因为这个原因,我们才喜欢她,喜欢她的弱点和强大的功能,也许天使并不完美,正是由于不完美让让人神往。    我最早学习的就是C++语言,但是当时大一的时候本身对于计算机的领悟就有限,不可能对C++有深入了解,甚至可以说完全不了解。之后,我开始使用C语言,编写实践了大量的数据结构,但也是为了应付考试,并没有用C语

2008-07-11 00:44:00 355

原创 使用指针实现进程间通信

    使用指针进行进程间通信,大致思想就是,在一个应用程序中获得某个变量的地址,然后在另一个应用程序中通过内存读写来改变这个地址中的值,或者提取这个地址中的值。这就是整个过程,很简单。两个应用程序沟通的桥梁就是某个变量的地址(指针)。    找到进程句柄: 首先在一个应用程序中,找到进程窗口的句柄(FindWindow()), 然后获得进程ID(GetWindowThreadProcessI

2008-04-27 21:38:00 544

原创 在vc中自定义事件扩展控件功能

       当MFC所提供的控件不能满足我们的要求时,我们需要为控件进行功能扩展,根据需求自定义控件的事件。本文以一个扩展按钮的鼠标按下和鼠标松开的事件为例,其它控件事件扩展可遵照该例。提供源代码,在VC6.0中调试成功。    按钮也是一个窗口,继承自CWND,它其中封装了大量的消息,因此我们之需要继承CButton,然后添加我们需要的事件对控件进行扩展即可。在开发过程中,只需要将标准按钮

2008-04-06 14:13:00 1902 1

原创 函数指针调用类成员函数的解决方案

    如果碰到在一个类中通过函数指针调用成员函数的要求。比如:在一个类中使用了 STL的排序函数qsort时,因qsort参数需要一个比较函数指针,如果这个类使用某个成员函数做比较函数,就需要将这个成员函数的指针,也就是成员函数名,传给qsort供其调用。    如以下三种情况就会出现编译错误:    1 将类的成员函数指针赋予同类型非成员函数指针#include#includety

2008-04-06 13:42:00 1788 1

原创 函数指针调用类成员函数的问题----对象模型的困惑

    首先通过以下代码测试一下,函数指针调用成员函数的几个类,用sizeof计算出函数指针的大小,结果有点困惑。#include #include class Test;class Test2{};class Test3{public: void (*memberfun)(); void Memberfun1(void (*f)()) {  f(); } void Memberfun2();

2008-04-03 22:47:00 1109

原创 深入解析C++构造函数

1 带有default Constructor的Member Class Object2 带有Default Consturctor的Base Class3 带有一个Vitual Function的Class4 带有一个Virtual Base Class的Class 

2008-03-09 22:36:00 1018

原创 四种对象四种存储方式

 

2008-02-27 20:21:00 1278

原创 C++中对象切割

 

2008-02-27 20:13:00 1490 1

原创 用消息映射处理消息循环

     为一个vc程序添加一个事件,那么平台会自动生成时间处理的函数,我们只需要在里面加代码就可以了。比如添加WM_LButtondown大家都知道windows程序是事件驱动,每一个事件都需要一个函数来与之对应,也就是通过消息循环在消息队列中来检测事件,然后通过回调函数来处理这一事件。    那么MFC是如何链接到这一事件的呢?它是通过消息映射来实现的。    在每个能处理消息的类中,

2008-02-20 17:37:00 1373

原创 静态类做缓存和全局对象

      静态类能做的事情很特别,很多时候它能帮大忙。      由于静态类不能包含this指针,因此不需要本类去实例化,可以独立对象产生,由于静态类实例化没有任何意义,所以我们最好加一个private构造函数来避免静态类的实例化。    由于静态类的生存周期是程序执行时到程序结束,所以我们可以在这个类中包含一个对象,用static修饰,那么我们可以在其他工程域中使用这个对象,因为它是公

2008-01-23 18:13:00 2418

原创 Remoting学习之一:对象的序列化

     Remoting的实质就是远程对象的调用,就是调用另一台机器的某个对象,那么第一步当然就是将对象序列化,这样才能在网络中传输。那么肯定就有2种方式来传递,一是将对象序列化为二进制形式,通过TCP协议来传输;二是序列化为XML格式,通过http/soap来传输。这是学习Remoting的必备条件。     序列化为二进制:            // create a file s

2008-01-22 21:56:00 1680

原创 如何在类中建立恒定的常量

    有时候,一个类的所有对象都共享相同的数据,这样节约存储,不需要在每个类实例化后都放相同的数据。那么有哪些方法来实现呢?   1 使用static const, static表示只为一个编译单元。class A {public:static const int SIZE1 = 10;  //VC不支持static const int SIZE2 = 5;private:int arr

2008-01-02 21:38:00 1387

原创 如何修改const常量的值

    看到这个标题,你也许会说,我不懂const, 因为Const修饰的是不可变得变量,他的值是不能修改的。没错,const修改的值的确不能修改,但是也有条件,条件就是编译不能通过,const是一个编译时期常量。如果我能在绕过编译器,通过编译后,我仍然可以修改const的值。    分C/C++两种情况讨论:    一 C语言:    const long lng=10;    

2008-01-02 17:54:00 4224 3

原创 .net多线程总结

 .Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助不需要传递参数,也不需要返回参数我们知道启动一个线程最直观的办法是使用Thread类,具体步骤如下ThreadStart threadStart=new ThreadStart(Calculate);Thread thread=new Th

2007-12-21 22:02:00 1249

转载 详解C++虚函数表

 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。  关于虚函

2007-12-19 21:48:00 1028

原创 关于main(),让程序可以执行命令行参数

     MS  C++/C应用程序的启动函数为mainCRTStartup()或者WinMainCRTStartup(), 他们都在这个函数内部定义了main()函数,或者WinMain(),然后以他们的返回值为参数调用库函数exit(),因此也就默认了main()应该作为它的连接对象,如果找不到这样的函数定义,自然就会报错了。    main()其实就像是一个回调函数。    基于应用

2007-12-17 17:52:00 893

原创 MySpace&FaceBook和我的论文

    今天在csdn上看到Myspce中国区CTO的访谈,结合对FaceBook的一些认识,感觉到了Web2.0正在的风靡整个地球,Myspace平台,让全球热爱网络的人结合到了一起,成为朋友;SpaceBook让自己生活中的朋友,昔日的同学,同事结合到了一起,一起分享他们的生活,分享他们喜欢的音乐,和书籍。    这个我产生的在震撼不是这些平台上有多么好玩,而是让我对互联网的发展有了新的认

2007-10-25 01:27:00 495

原创 分析C++中友元实现数据共享

   在C++中,为什么要引入友元的概念呢?主要是为了实现数据共享,提高程序效率,方式就是避免过多的函数调用。请看以下实例:#include#includeclass Point{public: Point(int xx,int yy) {  X=xx;  Y=yy; } int GetX() {  return X; } int GetY() {  return Y; } friend fl

2007-10-21 01:42:00 978

原创 const修饰对象,成员函数,成员变量

     const表示常量,意思就是说,被它修饰的对象,成员函数,成员变量,在整个程序运行期间,它的值得保持不变,如果你在程序中改变它,编译器将会报错。    如下面程序:#include void display(const double &r);void main(){ double d(9.5); display(d);}void display(const doubl

2007-10-17 00:05:00 1152

原创 总结static用法

    在C语言里,static用来修饰局部变量和全局变量。如果是修饰局部变量,那么这个值在函数调用完之后并不马上清除,而是保存它的值,可以用来做计数器。如果是用来修饰全局变量,主要目的是为了让别的文件不能使用这个变量。碰到多个程序员共同完成一个项目,可能会碰到全局变量重名的情况就解决了。顺便提一下,如果这个变量可以被外部应用,那么使用extern修饰。编译器碰到extern,它就知道这个变量在其

2007-10-16 22:59:00 633

原创 拷贝构造函数使用情况

    在C++中,有一个拷贝构造函数的概念,当一个对象通过构造函数初始化之后,如果需要一个和它一样的对象,这个对象是临时的,比如:1 函数返回一个对象,这个对象就是一个拷贝;2 对象做函数的形参,传过来的实参对象就是一个拷贝。3 用一个同类对象去初始化另一个对象时候,Point A(1,2),Point B(A). B对象就是通过拷贝构造函数产生的。    一般来说,拷贝构造函数是默认的,系

2007-10-16 15:25:00 708

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除