- 博客(25)
- 资源 (10)
- 收藏
- 关注
原创 设计模式之Factory模式
一,Factory模式主要功能 1,定义创建对象的接口,封装了对象的创建2,使得具体化类的工作延迟到了子类中 二,Factory模式能够解决的问题 1,为了提高内聚(Cohesion)和松耦合(Coupling),需要抽象出一些类的公共接口以形成抽象基类或者接口,通常可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的,实际中经常会出现很多子类继承自
2016-03-17 10:04:04 435
原创 设计模式之概述
一,面向对象系统的分析和设计实际上追求的就是两点,一是高内聚(Cohesion),二是低耦合(Coupling)。这也是我们软件设计所追求的,因此无论是OO中的封装、继承、多态,还是设计模式的原则和实例都是为了追求这两个目标,设计模式是一种面向对象分析和设计的思想 二,23种设计模式分类1,创建型模式:Factory模式,AbstactFactory模式,Singleton模式,B
2016-03-14 20:36:09 449
原创 Effective STL 第一章:容器(四)
第5条:区间成员函数优先于与之对应的单元素成员函数1,区间成员函数是指使用两个迭代器参数来确定该成员操作所执行的区间的这类函数如:vector的insert方法:v1.insert(v1.end(), v2.begin(), v2.end()); 2,相比于单元素成员函数,使用区间成员函数的好处2.1,可以少写一点代码(如上面的插入操作,若使用单元素成员函数就得写一个显示的fo
2016-03-09 17:58:37 528
原创 C++11保证稳定性和兼容性(一):保持与C99兼容
C++11将下面C99特性的支持都纳入了新标准中1,C99中的预定义宏2,__func__预定义标识符3,_Pragma操作符4,不定参数宏定义以及__VA_ARGS__5,宽窄字符串连接 1.1,C++11中与C99兼容的宏
2016-03-09 10:57:56 1696
原创 C++中函数覆盖和使用虚函数有什么区别
举个例子class fruit{public: void func() { printf("fruit\n"); } virtual void vfunc() { printf("v fruit\n"); }};class apple:public fruit{publi
2016-03-09 09:41:52 2852 3
原创 Effective STL 第一章:容器(三)
第4条:调用empty而不是检查size()是否为0 1,对于任一容器,empty和size()是否为0本质上是等价的,尤其是empty通常被实现为内联函数,并且它所做的仅仅是返回size是否为02,但应该使用empty形式,理由很简单,empty对所有的标准容器都是常数时间操作,而对一些list实现,size耗费线性时间(list所独有的链接(splice)操作其不同的实现可能会导致
2016-02-17 10:36:17 405
原创 Effective STL 第一章:容器(二)
第3条:确保容器中的对象拷贝正确而高效 1,copy in,copy out是stl的工作方式,即向容器中加入对象时,存入容器的是你指定对象的拷贝,从容器中取出对象时,得到的是容器中所保存的对象的拷贝。2,拷贝对象时STL的工作方式,当对vector,string或deque进行元素的插入或删除操作时,现有元素位置通常会被移动(拷贝)(见第5,14条),如果使用排序算法(见第31条)如
2016-02-17 10:14:25 468
原创 Effective STL 第一章:容器(一)
一,本章主要内容1,如何就面临的具体制约条件选择适当的容器类型2,避免一种错误认识:即为一种类型的容器而编写的代码换了其他容器也能工作3,对于容器中的对象,拷贝操作的重要性4,当指针或者auto_ptr被存放在容器中时会有什么样的困难5,删除操作的细节6,用定制的分配子能做什么以及不能做什么7,使程序获得最高效率的窍门8,在多线程环境中使用容器时的一些考虑
2015-10-28 10:28:00 553
原创 STL中关于map和set的一些问题
1,STL封装了许多复杂的数据结构算法和大量常用数据结构操作,如vector封装数组,list封装了链表,map和set封装了二叉树等,另外STL采用自己的Allocator分配内存,以内存池的方式来管理这些内存,大大减少内存碎片的产生,从而提升系统的整体性能 2, STL中标准关联容器set,multiset, map, multimap内部采用的是一种非常高效的平衡检索二叉树:红黑树,
2015-10-20 10:09:24 1109
原创 C++11简介
1,C++11整体设计目标1.1,使得C++成为更好的适用于系统开发及库开发的语言1.2,使得C++成为更易于教学的语言(语法更加一致化和简单化)1.3,保证语言的稳定性,以及和C++03及C语言的兼容性 2,C++11相对于C++98/03的增强点2.1,通过内存模型,线程,原子操作等来支持本地并行编程2.2,通过统一初始化表达式,auto,declytype,移动语
2015-10-15 16:01:54 455
原创 命令行托管git项目基本操作
1,git clone HTTPS clone URL2,进入托管项目根目录3,git add .4,git commit -m "changes log"5,git push -u origin master
2015-10-15 10:15:43 305
原创 Boost.Asio简介
1,什么是Boost.AsioBoost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库,在网络通信、COM串行端口和文件上成功地抽象了输入输出的概念,使我们可以基于这些进行同步或者异步的输入输出编程,作为一个跨平台的库,Boost.Asio可以在大多数操作系统上使用,能同时支持数千个并发的连接,并且提供了一套可以支持传输控制协议(TCP)socket、用户数据报协
2015-10-12 15:28:25 3081
原创 VC++下使用ADO编写数据库程序
(1)、引入ADO类#import"c:\program files\common files\system\ado\msado15.dll" \no_namespace\rename("EOF", "adoEOF") (2)、初始化COM 在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitializ
2015-10-10 13:42:05 353
原创 ocx控件签名
数字签名1、数字签名。使用SignCode.exe进行数字签名,步骤如下:首先要有工具包,包括以下几个软件:(C:\Program Files\Microsoft Visual Studio8\Common7\Tools\Bin目录下都有)makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥cert2spc.exe 将cer格式
2015-10-10 10:06:31 1907
原创 详解Linux环境下Mysql的安装(含下载地址)
以下内容来自于网上资料搜索整理 1、下载MySQL的安装文件安装MySQL需要下面两个文件: MySQL-server-4.0.23-0.i386.rpm MySQL-client-4.0.23-0.i386.rpm下载地址为:http://download.mysql.cn/src/2006/0710/5541.html这个是MySQL-server-5.0.
2015-10-09 16:07:05 562
原创 ActiveX制作cab包学习总结
一, 将ocx文件以及第三方dll文件打包成cab文件Internet软件分发单位是“软件包”,它由包含.INF文件或软件分发.OSD文件(或两者都包括)的.CAB文件所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件(.OCX)、.DLL文件、.EXE文件、Java类文件或小程序。当Web页上OBJECT元素的CODEBASE特性引用包含.INF文件的. CAB文件时,
2015-10-09 11:30:48 1106
原创 VS2010安装boost
1,下载boost_1_58_0,下载地址http://www.boost.org/2,解压下载的压缩包,以我使用的路径E:\Boost_VS2010\boost_1_58_0为例3,启动Visual Studio 命令提示(2010),启动后会出现一个控制台界面。启动方法:开始->程序->MicrosoftVisual Studio 2010->Visual Studio Tools->
2015-07-16 22:49:05 449
原创 Qt窗体拖拽的实现方法
Qt窗体拖拽的实现方法 一,让窗体响应Drop事件 1,设置属性setAcceptDrops(true); 2,重写相关事件2.1,.h增加:protected: void dragEnterEvent(QDragEnterEvent*event); void dropEvent(QDropEvent *event);
2015-06-07 13:36:24 2725
原创 使用QWebView实现一个简单的浏览器(QtWebKit基本使用)
使用QWebView实现一个简单的浏览器 1,pro增加QT += webkitwidgets 2,包含头文件#include #include 3,核心代码QWebView *view= newQWebView();view->load(QUrl(http://www.qtsoftware.de/oxShop/en/Com
2015-06-07 13:01:16 9822
原创 Qt如何绘制边框,如何画一条线
一,如何绘制边框方法:重新paintEvent事件函数1,.h增加protected: void paintEvent(QPaintEvent *event); 2,.cpp增加void testWidget::paintEvent(QPaintEvent*event){ //绘制边框 QPainter painter(this);
2015-06-07 12:50:55 16997
原创 QLabel实现超链接,设置超链接颜色,去掉超链接下划线方法
一,QLabel实现超链接方法1:信号槽方式1,包含头文件#include #include 2,.h文件定义槽函数private slots: void openUrl(QString url); 3,.cpp文件添加//设置超链接并绑定信号槽QLabel *linkLabel= newQLabel(); linkLabel
2015-06-07 12:38:48 6548 1
原创 Qt设置背景色,按钮添加图片,实现三态,label添加图片,设置字体大小,颜色等基本操作
一,如何给widget设置背景色 方法1:使用调色板 1,设置widget属性: setAutoFillBackground(true); 2:,调色板QPalette palette;palette.setColor(QPalette::Background, QColor(231, 231, 231)); 3,给widget设置调色板setPalette(palette
2015-06-07 12:16:18 8225
原创 Qt实现窗体从虚到实及动画效果
以下内容是从网上查阅资料及自己实际工作中使用的方法。 一,实现界面从虚变实方法1:使用QWidget类提供的公有方法voidsetWindowOpacity(qreallevel);(参数为double类型) a,使用此方法应该在窗体show之后在调用,否则可能会出现窗体会闪一下实体窗口,然后才会从虚到实变化。 b,调用此方法时窗体不能设置Qt::Fra
2015-05-25 19:56:20 3266
原创 ubuntu 安装Git
以下内容系网上查阅资料及自己尝试后确定可行的方法。 1,用命令行直接安装(此方法安装后一般并不是最新的版本),命令如下:sudo apt-get install git2,在本地克隆一个git版本库,git clone 默认第二个参数是当前路径,命令如下:git clone git://git.kernel.org/pub/scm/git/git.git3,克隆后默认会ch
2015-05-19 20:46:17 456
原创 提高C++性能编程学习之内存池技术(一)
提高C++性能编程学习之内存池技术( 单线程固定大小内存池设计)内存池作用: 内存池是为了帮助我们解决软件在频繁申请和释放内存时的效率问题。内存池分类: 根据条件不同,内存池分类也不同,本文主要涉及四种内存池技术,单线程环境固定大小内存池设计,单线程环境可变大小内存池设计,多线程环境固定大 小内存池设计,多线
2015-05-09 22:02:44 630
[C++编程规范101条规则、准则最佳实践].Herb.Sutter.Andrei.Alexandrescu]
2014-07-20
c_c++网络通信游戏资料包
2014-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人