自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 QT学习笔记(三)单行文本输入框与自动补全

main.cpp#include <QApplication>#include "mywidget.h"#include <QPushButton>int main(int argc, char **argv){ QApplication app(argc, argv); MyWidget w; w.show(); return app.exec()...

2018-03-31 12:00:55 1643 1

原创 QT学习笔记(二)自定义窗口

主函数 main.cpp#include <QApplication>#include "mywidget.h"#include <QPushButton>int main(int argc, char **argv){ QApplication app(argc, argv); MyWidget w, w1; //自定义构造后创建窗口 w.sho...

2018-03-31 11:06:53 350

原创 QT学习笔记(一)窗口与按钮

// 应用程序类#include <QApplication>// 窗口类头文件#include <QWidget>//按钮头文件#include <QPushButton>int main(int argc, char **argv){ // 定义一个应用程序对象 代表当前应用程序 QApplication app(argc, argv); ...

2018-03-31 10:18:28 354

原创 C++学习笔记(三十)建造者模式

建造者模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包括的角色:(1)Builder:给出一个抽象接口或抽象类,以规范产品的建造。这个接口规定要实现复杂对象的哪些部分的创建,并不涉及具体的对象部件的创建,一般由子类具体实现。(2)ConcreteBuilder:Builder接口的实现类,并返回组建好对象实例。(3)Director:调用具体建造者...

2018-03-29 10:52:12 254

原创 C++学习笔记(二十九)简单工厂、工厂方法、抽象工厂之小结、区别

简单工厂、工厂方法、抽象工厂之小结、区别  很多时候,我发现这三种设计模式难以区分,常常会张冠李戴闹了笑话。很有必要深入总结一下三种设计模式的特点、相同之处和不同之处。1 本质  三个设计模式名字中都含有“工厂”二字,其含义是使用工厂(一个或一系列方法)去生产产品(一个或一系列类的实例)。  另外,有时候,我们常常会将生产产品的一个或一系列方法封装到一个类中,我习惯把这个类叫做“工厂类”;而被实例...

2018-03-29 10:37:35 252

原创 C++学习笔记(二十八)工厂模式、简单工厂模式与抽象工厂模式

工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口(纯虚函数,抽象类),将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 抽象工厂(Creator)角色工厂方法模式的核心,...

2018-03-28 21:12:14 273

原创 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 10946 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 197

原创 C++学习笔记(二十六)设计模式学习之单例模式

单例模式作用:保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象为什么需要单例模式?  在多个线程之间,比如初始化一次socket资源  在整个程序空间使用全局变量,共享资源  大规模系统中,为了性能的考虑,需要节省对象的创建时间实现单例步骤常用步骤   构造函数私有化  提供一个全局的静态方法(全局访问点)  在类中定义一个静态指针,指向本类的变量的静态变量指针...

2018-03-28 19:17:44 190

原创 C++学习笔记(二十五)设计模式概述

设计模式是什么设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化。 设计模式的分类:       创建型模式             通常和对象的创建有关,涉及到对象实例化的方式。(共5种模式)       结构型模式          ...

2018-03-26 20:36:16 279

原创 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 455

原创 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 313

原创 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 224

原创 C++学习笔记(二十一) C++ 文件输入和输出

一、写入文件要让程序写入文件,可以这样做:1.创建一个ofstream对象来管理输出流;2.将该对象与特定的文件关联起来;3.以使用cout的方式使用该对象,唯一的区别是输出将进入文件,而不是屏幕先包含头文件fstream#include <fstream>然后声明一个ofstream对象ofstream fout; // create an ofstream object named...

2018-03-25 15:10:31 365

原创 C++学习笔记(二十)STL中vector list deque map 的优缺点以及区别

1 vector    向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。   优...

2018-03-25 09:59:44 1510

原创 C++学习笔记(十九)string

string的优点之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,...

2018-03-24 17:32:21 290

原创 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 1937

原创 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 185

原创 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 332

原创 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 284

原创 C++学习笔记(十五)纯虚函数

#include <iostream>using namespace std;// 纯虚函数: 一个虚函数,在函数声明后加上 = 0,没有函数定义// 抽象类:拥有纯虚函数的类 // 特点:// 1、抽象类不能实例化对象,但是定义对象指针  =====>  用来操作派生类对象// 2、如果一个类,继承了抽象类,那么这个类必须实现抽象类的所有纯虚函数// 如果有一个纯虚函数没有,那...

2018-03-23 11:45:54 468

原创 C++学习笔记(十四)多态原理与虚函数

构造的顺序:沿着类的继承路径网上最顶层的父类,从最顶层的父类依次往下开始构造析构的顺序:从当前类开始沿着类的继承路径网上查找父类,依次析构,直到最顶层父类为止#include <iostream>using namespace std;class Animal{public: virtual void eat() { cout << "动物吃饭" << end...

2018-03-23 10:22:54 260

原创 STM32学习笔记(一)基本了解、芯片内部资源与外观说明

什么是STM32?新的基于ARM内核的32位MCU系列    内核为ARM公司为要求高性能、低成本、低功 耗的嵌入式应用专门设计的Cortex-M内核标准的ARM架构优点超前的体系结构极高的性能: 主流的Cortex内核。丰富合理的外设,合理的功耗,合理的价格。强大的软件支持:丰富的软件包。全面丰富的技术文档。芯片型号种类多,覆盖面广。强大的用户基础:最先成功试水CM3芯片的公司,积累了大批的用户...

2018-03-22 21:04:01 8097

转载 【MySQL】20个经典面试题

原文链接:http://bbs.51cto.com/thread-1470880-1.htmlPart2:经典题目1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;2、MySQL中myisam与innodb的区别,至少5点(1)、问5点不同;(2)、innodb引擎的4大特性(3)、2者selectcount(*)哪个更快,为什么3、MySQL中varchar与char的区别以...

2018-03-22 10:20:27 666

原创 排序算法思想——归并排序、堆排序、shell排序

1.归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。两个已经排序的序列合并成一个序列的操作将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序...

2018-03-21 20:34:13 353

原创 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 208

原创 C++学习笔记(十二)虚继承

C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。比如类B会继承A的数据,类C也继承A的数据,那么这时候类D再继承B和C的话,就会在类D中存在两份A的拷贝 。这是绝对不...

2018-03-21 17:02:53 252

原创 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 299

原创 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 169

原创 C++学习笔记(九)友元函数与运算符重载

// 友元函数   如果一个函数 func(), 它是类A 的友元函数,该函数可以通过A的对象使用A 的所有成员(包括私有成员)// 定义方式:// 1、在类中写出函数声明// 2、在函数声明前加一个关键字  friend// 特点:// 1、友元函数不是类的内部函数,是一个外部函数,所以没有this 指针// 2、友元函数的声明不受访问控制符影响,可以放到类的任意位置// 3、友元函数破坏了类的...

2018-03-19 19:55:09 289

原创 C++学习笔记(八)静态链接库、动态链接库与静态变量

一、1 静态链接库的优点  (1) 代码装载速度快,执行速度略比动态链接库快;  (2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 2 动态链接库的优点  (1) 更加节省内存并减少页面交换; (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变)...

2018-03-19 19:21:27 776

原创 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 408

原创 C++学习笔记(六)继承属性

1、友元  friend  在类外定义,不属于当前类的函数,可以在当前类中声明,前面加friend构成友元函数  友元函数不能直接访问类的成员,只能通过对象访问  友元的关系是单向的,不是双向的。  友元类:友元关系不能传递。2、string类  a、包含头文件<string>    string  s1;        定义的时候没有初始化,默认空    string s2 = “c...

2018-03-19 15:14:30 182

原创 C++学习笔记(五)构造函数与拷贝构造函数

#include <iostream>using namespace std;class Student{public: // 构造函数:在定义对象的时候对 对象进行初始化的函数 // 1、函数名和类名相同 // 2、构造函数没有返回值 // 3、构造是不需要手动调用的,在创建对象的时候编译器自己调用 // 4、构造函数可以被重载 Student()      // 无参构造函数 { ...

2018-03-19 14:12:24 285

原创 C++学习笔记(四)函数重载

1.函数重载// 函数名相同,形参类型不同,可以构成函数重载// C++编译器对函数的处理:编译的时候将参数类型加入到函数名中形成新的函数名// mySwapiivoid mySwap(int &a, int &b)  // { int tmp = a; a = b; b = tmp;}// mySwapddvoid mySwap(double &a, double &am...

2018-03-19 10:18:28 320

原创 C++学习笔记(三)#ifndef.#define与#endif

// 函数返回值返回一个引用: 不能返回一个栈上变量的引用// 可以返回的引用:全局变量、静态变量、堆上的变量....int &func(){ static int a = 10; printf ("a = %d\n", a); return a;}int main(){ //1、不接收返回值 func(); // 2、用普通变量去收, 收回来的是数值,也就是  10 这个数,不是变量所代...

2018-03-19 09:42:42 289

转载 C++面试

1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 全局变量,static变量。 (2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建, 函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)用malloc或new申请内存...

2018-03-18 11:53:28 309

原创 实现网络聊天室时的问题

双方建立socket -> 客户机把注册信息打包好 -> 写入用户socket -> 服务器读socket ->服务器把返回信息打包好 写入服务器socket这都没问题问题出现在客户机读的时候,读里面处理结果的值不对,但是服务器那把处理的结果没问题然后我就花了2天的时间 ,先是自己不断打印值,看看问题出在哪里 然后在网上找来找去,把socket 以及read write 各...

2018-03-12 20:23:50 375

原创 数据库Sqlite3学习笔记(四)

int sqlite3_get_table( sqlite3 *db, /* An open database */ const char *zSql, /* SQL to be evaluated */ char ***pazResult, /* Results of the query */ int *pnRow, /* Nu...

2018-03-11 20:28:11 218

原创 排序算法3 —— 插入排序

插入排序假如给你一串数。从第二个开始,每个和自身前面的数字比较,根据排序的方式,比他大或者小,将其插入,原来的数字后移。直到全部插入完成。void insert_sort(int a[], int n){ int i, j, k; for (i = 1; i < n; i++) { //为a[i]在前面的a[0...i-1]有序区间中找一个...

2018-03-10 13:46:41 240

空空如也

空空如也

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

TA关注的人

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