C++
文章平均质量分 69
ArrowYL
Try to be a man between NIUA and NIUC.
展开
-
MySQL 线程池、连接池、长连接、短连接概念
线程池简介1、mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来的所有命令2、每个线程会占用一定的系统资源,线程数越多消耗的系统资源也越多3、线程的创建和销毁有一定的开销4、当线程数过多时,如果大部分线程都处于活跃状态,会导致频繁的上下文切换,从而造成系统巨大的开销5、线程的本质就是线程共用,多个连接之间共享线程何时使用1、在有大量短...转载 2019-03-27 14:52:16 · 1748 阅读 · 0 评论 -
C++学习笔记(二十九)简单工厂、工厂方法、抽象工厂之小结、区别
简单工厂、工厂方法、抽象工厂之小结、区别 很多时候,我发现这三种设计模式难以区分,常常会张冠李戴闹了笑话。很有必要深入总结一下三种设计模式的特点、相同之处和不同之处。1 本质 三个设计模式名字中都含有“工厂”二字,其含义是使用工厂(一个或一系列方法)去生产产品(一个或一系列类的实例)。 另外,有时候,我们常常会将生产产品的一个或一系列方法封装到一个类中,我习惯把这个类叫做“工厂类”;而被实例...原创 2018-03-29 10:37:35 · 260 阅读 · 0 评论 -
C++学习笔记(二十八)工厂模式、简单工厂模式与抽象工厂模式
工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口(纯虚函数,抽象类),将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 抽象工厂(Creator)角色工厂方法模式的核心,...原创 2018-03-28 21:12:14 · 286 阅读 · 0 评论 -
C++编程题整理(持续更新中)
1.给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。输入描述:输入数据一个字符串,包括字母,数字等。输出描述:输出首先出现三次的那个英文字符示例1输入Have you ever gone shopping and输出e#include <iostream>#include <string>using namespace std;int main(...原创 2018-03-28 20:26:47 · 10963 阅读 · 1 评论 -
C++学习笔记(二十七)cin.getline()、getline()的用法
cin.getline()用法:接收一个字符串,可以接收空格并输出#include <iostream>using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj接收5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;如果把5改成...原创 2018-03-28 19:23:15 · 205 阅读 · 0 评论 -
C++学习笔记(二十六)设计模式学习之单例模式
单例模式作用:保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象为什么需要单例模式? 在多个线程之间,比如初始化一次socket资源 在整个程序空间使用全局变量,共享资源 大规模系统中,为了性能的考虑,需要节省对象的创建时间实现单例步骤常用步骤 构造函数私有化 提供一个全局的静态方法(全局访问点) 在类中定义一个静态指针,指向本类的变量的静态变量指针...原创 2018-03-28 19:17:44 · 193 阅读 · 0 评论 -
C++学习笔记(二十五)设计模式概述
设计模式是什么设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化。 设计模式的分类: 创建型模式 通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式) 结构型模式 ...原创 2018-03-26 20:36:16 · 283 阅读 · 0 评论 -
C++学习笔记(二十四)笔试编程题整理
一、题目描述现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度输入描述:输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号输出描述:输出树的高度,为一个整数示例1输入50 10 21 31 4输出3#include <iostrea...原创 2018-03-26 19:31:51 · 459 阅读 · 0 评论 -
C++学习笔记(二十三)遍历算法
vector<int> v;for (int i = 0; i < 10; i++)v.push_back(i+1); //把1-10插入容器vector中 // 遍历算法// 第一个参数:要遍历的数据的起始位置 // 第二个参数:要遍历的数据的结束位置 // 第三个参数:函数对象,要对数据做些什么事情// 运行过程:从开始到结束 一个一个取出元素,给第三个参数调用 f...原创 2018-03-26 19:29:58 · 317 阅读 · 0 评论 -
C++学习笔记(三十)建造者模式
建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包括的角色:(1)Builder:给出一个抽象接口或抽象类,以规范产品的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建,一般由子类具体实现。(2)ConcreteBuilder:Builder接口的实现类,并返回组建好对象实例。(3)Director:调用具体建造者...原创 2018-03-29 10:52:12 · 263 阅读 · 0 评论 -
C++学习笔记(三十四)知识整理1
1.整数转化字符串,不用itoa using namespace std;//字符串整数转化int main(){ int num = 12345; char str[7], s[7]; int i = 0, j = 0; while (num) { s[i] = num % 10 + '0'; i++; num = num / 10; } s[i] = 0; cout <<...原创 2018-04-11 20:02:55 · 283 阅读 · 0 评论 -
初探语音识别技术
语音识别 语音识别根据实际需求的不同也会有所不同。目前主要追求大词汇量、连续、非特定人。 语音识别主流开源框架:HTK、Kaldi、CMUSphinx。因为目前只接触了Sphinx,对于另外两个框架没有太深入研究。 1)Kaldi适用于在服务器搭建的语音识别系统,也可以适用于android,但没有实验过,根据官方提供方法:http://jcsilva.githu...转载 2018-04-17 19:44:43 · 12057 阅读 · 2 评论 -
吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
开发的原因,需要对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念做下了解,查自百度百科,记录如下:1. 响应时间(RT) 响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输...转载 2019-03-26 09:33:18 · 596 阅读 · 0 评论 -
量子软件开发包QPanda2学习之路(三)利用量子云平台进行量子计算
当我们构建好量子程序后,可以利用QPanda2内置的量子虚拟机程序运行并获取结果,也可以将计算任务提交给性能更为强劲的量子云平台计算服务器。该部分的使用类似QPanda2的量子虚拟机功能,不同的任务类型,调用不同的接口,下面是示例程序。MEASURE我们需要在量子程序中添加measure节点用于获取计算结果,否则服务器不会返回任何结果。MEASURE的结果具有随机性,它仅仅表示一次运行...原创 2019-02-22 09:01:03 · 826 阅读 · 0 评论 -
量子软件开发包QPanda2学习之路(二)量子程序转化模块
上一节中提到,QRunes文本是用于表述量子程序的指令集文本,所以在使用QPanda2的过程中不可避免的牵扯到量子程序的转化问题,在QPanda2中提供相关的函数接口支持转化功能的实现。量子程序转化QRunes模块欲使用这一功能,我们先进行量子程序的构建。具体看下面这一段简单的示例代码 init(); auto prog = CreateEmptyQProg();...原创 2019-02-22 09:00:59 · 724 阅读 · 0 评论 -
量子软件开发包QPanda2学习之路(一)基础入门
1.QPanda2简介Q-Panda 2 SDK(Quantum Panda 2 Software Development Kit)是由本源量子推的开源量子程序开发工具包。其支持主流的量子逻辑门操作,并且可对不同平台下的量子程序进行针对性优化,可适配多种量子芯片。QPanda 2 使用C++语言作为经典宿主语言,并支持以QRunes和QASM书写的量子语言。目前,QPanda 2.0支持本...原创 2019-02-22 09:00:53 · 3529 阅读 · 1 评论 -
OpenMP用法大全(个人整理版)
OpenMP基本概念OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP降低了并行编程的难度和复杂度。当编译器不支持OpenMP时,程序会退化成普通(串行)程序。程序中已有的O...原创 2018-07-18 11:10:57 · 70180 阅读 · 5 评论 -
auto的用法
用于代替冗长复杂、变量使用范围专一的变量声明。想象一下在没有auto的时候,我们操作标准库时经常需要这样:#include<string>#include<vector>int main(){ std::vector<std::string> vs; for (std::vector<std::string>::iterator...转载 2018-07-02 16:44:48 · 9644 阅读 · 7 评论 -
数据结构整理双向链表
双向链表- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -和单向链表相比有以下优势:插入删除不需要移动元素外,可以原地插入删除可以双向遍历- - - - -...原创 2018-04-17 20:48:56 · 265 阅读 · 0 评论 -
C++学习笔记(十三)动态多态、虚函数
#include <iostream>using namespace std;// 基类class Animal{public: void eat() { cout << "动物吃饭" << endl; } // 虚函数 virtual void sleep() { cout << "动物睡觉" << endl; }};cla原创 2018-03-21 18:42:04 · 219 阅读 · 0 评论 -
C++学习笔记(三十三)构造函数、析构函数与虚函数的使用
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 虚函数的...原创 2018-04-11 18:12:42 · 272 阅读 · 0 评论 -
C++学习笔记(十二)虚继承
C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。比如类B会继承A的数据,类C也继承A的数据,那么这时候类D再继承B和C的话,就会在类D中存在两份A的拷贝 。这是绝对不...原创 2018-03-21 17:02:53 · 257 阅读 · 0 评论 -
C++学习笔记(十六)函数模板
一、函数模板#include <iostream>using namespace std;// 写函数实现 2个 int、double、char 类型数据的交换void Swap(int &a, int &b){ int tmp = a; a = b; b = tmp;}void Swap(double &a, double &b){ double tm...原创 2018-03-23 15:12:25 · 296 阅读 · 0 评论 -
C++学习笔记(九)友元函数与运算符重载
// 友元函数 如果一个函数 func(), 它是类A 的友元函数,该函数可以通过A的对象使用A 的所有成员(包括私有成员)// 定义方式:// 1、在类中写出函数声明// 2、在函数声明前加一个关键字 friend// 特点:// 1、友元函数不是类的内部函数,是一个外部函数,所以没有this 指针// 2、友元函数的声明不受访问控制符影响,可以放到类的任意位置// 3、友元函数破坏了类的...原创 2018-03-19 19:55:09 · 301 阅读 · 0 评论 -
C++学习笔记(八)静态链接库、动态链接库与静态变量
一、1 静态链接库的优点 (1) 代码装载速度快,执行速度略比动态链接库快; (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 2 动态链接库的优点 (1) 更加节省内存并减少页面交换; (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变)...原创 2018-03-19 19:21:27 · 781 阅读 · 0 评论 -
C++学习笔记(十五)纯虚函数
#include <iostream>using namespace std;// 纯虚函数: 一个虚函数,在函数声明后加上 = 0,没有函数定义// 抽象类:拥有纯虚函数的类 // 特点:// 1、抽象类不能实例化对象,但是定义对象指针 =====> 用来操作派生类对象// 2、如果一个类,继承了抽象类,那么这个类必须实现抽象类的所有纯虚函数// 如果有一个纯虚函数没有,那...原创 2018-03-23 11:45:54 · 483 阅读 · 0 评论 -
C++学习笔记(十四)多态原理与虚函数
构造的顺序:沿着类的继承路径网上最顶层的父类,从最顶层的父类依次往下开始构造析构的顺序:从当前类开始沿着类的继承路径网上查找父类,依次析构,直到最顶层父类为止#include <iostream>using namespace std;class Animal{public: virtual void eat() { cout << "动物吃饭" << end...原创 2018-03-23 10:22:54 · 264 阅读 · 0 评论 -
C++学习笔记(六)继承属性
1、友元 friend 在类外定义,不属于当前类的函数,可以在当前类中声明,前面加friend构成友元函数 友元函数不能直接访问类的成员,只能通过对象访问 友元的关系是单向的,不是双向的。 友元类:友元关系不能传递。2、string类 a、包含头文件<string> string s1; 定义的时候没有初始化,默认空 string s2 = “c...原创 2018-03-19 15:14:30 · 189 阅读 · 0 评论 -
C++学习笔记(七)malloc、free、 new、delete与二维数组
#include <iostream>#include <stdlib.h>using namespace std;// malloc 和 free:是C语言的库函数,不是语法的一部分// new 和 delete:是C++的运算符 =====> 因为是运算符,效率比malloc和free要高// 1、创建单个变量void func1(){ // malloc 和...原创 2018-03-19 15:22:13 · 416 阅读 · 0 评论 -
C++学习笔记(五)构造函数与拷贝构造函数
#include <iostream>using namespace std;class Student{public: // 构造函数:在定义对象的时候对 对象进行初始化的函数 // 1、函数名和类名相同 // 2、构造函数没有返回值 // 3、构造是不需要手动调用的,在创建对象的时候编译器自己调用 // 4、构造函数可以被重载 Student() // 无参构造函数 { ...原创 2018-03-19 14:12:24 · 292 阅读 · 0 评论 -
C++学习笔记(十七)类模板
一、类模板#include <iostream>using namespace std;template <typename T>class A{public: A(T a) { this->a = a; } void show() { cout << "a = " << a << endl; }private: T a;};/..原创 2018-03-23 16:20:01 · 341 阅读 · 0 评论 -
C++学习笔记(十八)类型转换
#include <iostream>using namespace std;//static_cast : 普通数据类型之间的强转//reinterpret_cast : 指针数据类型之间的转换//dynamic_cast : 类层次之间数据类型的转换//const_cast : 去掉变量的常量属性void func2(const char *s){ /...原创 2018-03-23 16:56:25 · 188 阅读 · 0 评论 -
STM学习笔记(二)STM32仿真下载方式、库函数与寄存器
一、串口下载PA9(T) PA10(R) 串口下载引脚USB/串口转换电路 CH340 FLYMCU下载硬件连接:PA9 和 PA10跳线帽 B0和B1和GND跳线帽STM32的ISP下载,只能使用串口1,其他串口只能用作串口通信,不能进行串口下载FlyMcu bps选最高也没问题, 校验,编程后执行勾上 最后选DTR的低电平复位,RTS高电平进BootLoader ...原创 2018-03-23 20:58:39 · 1946 阅读 · 0 评论 -
C++学习笔记(十一)基类与派生类
#include <iostream>using namespace std;class Parent{public: Parent() {} Parent(const Parent &p) { a1 = p.a1; a2 = p.a2; } void setP(int a, int b) { a1 = a; a2 = b; } void showP() { prin...原创 2018-03-21 15:57:18 · 308 阅读 · 0 评论 -
C++学习笔记(十)运算符重载
函数调用运算符重载#include <iostream>using namespace std;class Student{public: Student() { } void operator()(int a) { printf ("a = %d\n", a); }private: int id; char *name;};void printS(int a){ printf ("...原创 2018-03-21 14:12:24 · 177 阅读 · 0 评论 -
C++学习笔记(二十二)迭代器
#include <iostream>#include <vector> //容器头文件#include <algorithm> //算法头文件using namespace std;void func(){ // 容器:用来存储数据 // 定义一个 容器对象 vector<int> v; v.push_back(1); v.push_back(1...原创 2018-03-25 15:51:55 · 228 阅读 · 0 评论 -
C++学习笔记(二十一) C++ 文件输入和输出
一、写入文件要让程序写入文件,可以这样做:1.创建一个ofstream对象来管理输出流;2.将该对象与特定的文件关联起来;3.以使用cout的方式使用该对象,唯一的区别是输出将进入文件,而不是屏幕先包含头文件fstream#include <fstream>然后声明一个ofstream对象ofstream fout; // create an ofstream object named...原创 2018-03-25 15:10:31 · 376 阅读 · 0 评论 -
C++学习笔记(三十二)回头再看虚函数原理
C/C++杂记:虚函数的实现的基本原理1. 概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的虚函数D::...原创 2018-04-07 20:46:44 · 251 阅读 · 0 评论 -
C++学习笔记(二十)STL中vector list deque map 的优缺点以及区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。 优...原创 2018-03-25 09:59:44 · 1516 阅读 · 0 评论 -
C++学习笔记(三十一)拷贝构造函数与赋值运算符重载的区别
拷贝构造函数发生在对象还没有创建;赋值操作符重载仅发生在对象已经创建的情况下。一个对象的诞生首先必须经历构造过程,这也是构造函数存在的意义,而=运算符本身并不具有代替构造函数的作用,在题目中由于obj1、obj2、obj3都是首次出现的对象,因此必须经历构造函数,因此,即使obj3使用了=运算符,但是仍然必须要执行构造函数,此时的=也会被理解成调用了拷贝构造函数。通常拷贝构造函数应用的场合有以下几...原创 2018-04-07 16:46:10 · 320 阅读 · 0 评论