C++
花莫弦
达则兼济天下,穷则独善其身
展开
-
《c++性能优化指南》
这是一篇关于C++性能优化指南的学习笔记,主要是通过阅读学习Kurt Guntheroth著的C++性能优化指南。 这是一本知识量和信息量很大的一本书书,书里详细介绍了影响C++程序性能的原因,也给出了很多提高性能的优化策略。书中不仅讲解了软件和系统方面的相关内容,还涉及了计算机的硬件组成的基础知识,使读者可以全面的了解计算机和程序设计。一、C++代码优化策略总结1、用好的编译器并用好编译器(支持C++11的编译器,IntelC++(速度最快)、GNU的C++编译器GCC/G++(非常符合标准),Vi翻译 2020-08-04 12:24:42 · 1353 阅读 · 0 评论 -
高并发模型
一、基础知识1.pc、ios、android、移动web,通常通过负载均衡服务器(nginx)进行任务分发,经过多web服务器,多业务服务器 ,到数据库或分布式文件系统等;2.高并发服务器模型:多进程并发模型,多线程并发模型,多路io复用模型(select并发模型、poll并发模型、epoll并发模型);3.单核电脑是通过分时复用技术,利用cpu快速切换时间片来达到人感觉上的多进程同时运行;4.T...原创 2018-06-19 12:07:29 · 1933 阅读 · 0 评论 -
Qt实现艺术字效果
Qt实现艺术字效果,通常有三种方式,一种是通过绘制机制,另外一种是使用样式表,最后一种是通过图片代替,本次介绍使用绘制来实现艺术字效果。 代码如下(分两种实现): 第一种: QPainter painter(this); QPen pen; pen.setWidth(2); pen.setColor(Qt::red)...原创 2018-06-03 20:23:41 · 6168 阅读 · 0 评论 -
C++必知必会——读书笔记(2)
十、常量成员函数的含义1. 若想要修改常量成员,需要添加关键字mutable。十一、编译器会在类中放东西1. 在不是确切了解编译器的情况下,不要去管编译器如何处理你的代码,因为那毫无意义。十二、赋值和初始化并不相同1. 永远都不应该对一个未初始化的存储区执行用户自定义赋值操作。十三、复制操作1. 复制构造函数是去完成对未初始化的存储区的初始化,而赋值操作符则是处理一个已原创 2017-11-27 19:27:19 · 223 阅读 · 0 评论 -
C++必知必会——读书笔记(3)
二十二、Template Method模式1. 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤;2. 这是一种中级控制机制,通常使用基类的共有非虚函数,调用保护的虚函数,派生类可以重新实现基类的虚函数,达到依照框架重新制定执行方式的目的。二十三、名字空间1. 使用名字空间防止命名冲突;原创 2017-12-04 22:18:59 · 245 阅读 · 0 评论 -
linux下Qt访问sqlserver数据库
下载地址:http://pan.baidu.com/s/1i44vxbf1.安装unixODBC1.tar-xzvfunixODBC-2.3.2.tar.gz2.cdunixODBC-2.3.23../configure--prefix=/usr/local/unixODBC4.make && make install2.安装...原创 2017-11-21 17:31:18 · 4521 阅读 · 14 评论 -
C++必知必会——读书笔记(1)
一、抽象数据类型1.可以使用类这一概念进行理解;2.需要一个能够明确表示定义的名称;3.explicit : C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。1 是个构造器原创 2017-11-14 21:37:33 · 263 阅读 · 0 评论 -
C++常用类型转换
C++大体上有两种风格的类型转换,显式类型转换和隐式类型转换,而显式类型转换又分为两种,一种C风格的强制类型转换,另外一种使用类型转换运算符进行类型转换。 一、隐式类型转换 隐式类型转换通常出现在以下几种情况: 1.在不同类型的运算操作中 int intNum = 1; double douNum = 1.1; double addSum =原创 2016-06-13 21:47:15 · 446 阅读 · 0 评论 -
STL常用容器对比
STL的常用容器大致有以下8个:1.vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2的倍数动态增长的,在push_back的过程中,若发现分配的内存空间不足,则重新分配一段连续的内存空间原创 2016-08-13 22:50:34 · 3109 阅读 · 0 评论 -
Effective学习笔记1
本文内容一部分是自己理解,一部分是《Effective C++》中节选内容,若想阅读详细实例和分析,请阅读《Effective C++》。 注:其中标题和总结部分引用原文内容。1、视C++为一个语言联邦 1)多重范性编程语言:面向过程、面向对象、函数编程、泛型编程、元编程; 2)主要分为四部分次语言:C、Object-Oriented C++、Template C原创 2016-08-17 23:15:03 · 476 阅读 · 0 评论 -
VS调试查看Qt内置类型
利用VS调试Qt程序,通常情况下无法查看QString等Qt内置类型的值,只能够利用QDebug进行输出显示,但是这样引起的问题就是每次调试的时候都需要重新编译,当然这是不包括自己编写库的情况,下面来介绍另外一种方式可以让利用VS在调试Qt程序的时候直接像查看C++内置类型(例如int)一样进行查看值。 1.打开VS的安装目录,找到Common7\Packages\Debugger下面的原创 2016-07-19 09:21:43 · 3902 阅读 · 3 评论 -
设计模式——单例模式
一、单例模式的定义 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 二、单例模式的使用场景1、日志系统;2、windows的任务管理器;3、网站的计数器;原创 2016-06-21 23:06:45 · 310 阅读 · 0 评论 -
学习Qt5(3)
1.QFileDialog 标准文件对话框 1)getOpenFileName 获得用户选择的文件名称; 2)getSaveFileName 获得用户保存的文件名称; 3)getExistingDirectory 获得用户选择的已经存在的目录名称; 4)getOpenFileNames 获得用户选择的文件名称列表; 5)代码示例: QSt原创 2015-09-06 20:37:27 · 531 阅读 · 0 评论 -
学习Qt5(2)
1.分割窗口QSpliter 各个分割窗口可以利用拖拽进行改变 示例程序: QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0); QTextEdit *textLeft =new QTextEdit(QObject::tr("Left Widget"),splitterMain);原创 2015-08-31 09:01:56 · 852 阅读 · 0 评论 -
C++容器类和Qt容器类的对比
C++中容器类是属于标准模板库中的内容,有必要回顾下标准模板库。STL = Standard Template Library,标准模板库,惠普实验室开发的一系列软件的统称。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。STL被内建在编译系统之内。 在C++标准中,STL被组织为下面的转载 2015-06-05 15:16:55 · 6084 阅读 · 0 评论