自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Qt(4)

一、线程同步互斥量(互斥锁)QMutex 就是POSIX中的pthread_mutex_t的封装。常用的两个成员函数lock、unlock。读写锁QReadWriteLock它比QMutex更实用常用的三个成员函数lockForRead、lockForWrite、unlockA读 B读 OKA写 B读 NOA写 B写 NO信号量QSemaphore用于管理多个资源QSema...

2019-09-06 19:40:02 960

原创 Qt(3)

一、定时器Qt中的QTimer有两种使用方式:信号:void start(int msec)成员函数,开启定时器并设置定时器的时间间隔。时间到后会发出timeout信号,连接槽函数即可。事件:继承QTimer类,对该类进行扩展,并覆盖 void timerEvent(QTimerEvent *e) 事件。void start(int msec)成员函数,开启定时器并设置定时器的时间间...

2019-09-06 19:36:52 211

原创 Qt(2)

一.自定义信号和槽1.信号和槽必须定义在类中2.自定义信号必须继承QObiect3.在类的开头写上 Q_OBJECT 没有分号,此标识必须写在项目构建之前,如果是后加入必须重新构建项目4.信号定义signals:关键字下面5.通过emit 发送信号6.一个信号可以连接多个槽,当该信号发射会触发多个槽函数7.多个信号可同时连接一个槽,只要有一个信号发射就会触发槽函数二.界面布局1....

2019-09-06 19:34:45 226

原创 Qt(1)

一. Qt简介1.Qt是什么图形用户程序框架,是对底层应用编程接口API面向对象的封装是一套基于C++语言的类库,专注但不局限于图形用户界面的开发,也可以进行系统调用,网络编程,数据库,2D/3D图形处理特点:跨平台,支持Linux,windows,MacOS,iOS,Android等操作系统2.为什么选择Qt基于C++语言,简单,易用,面向对象(针对GTK)优良的跨平台特性(针对M...

2019-09-06 19:32:14 260

原创 c++基础(8)——STL

一、模板的技巧1、typename可以用class替代2、不能直接使用模板父类中的成员,需要:类名::函数名3、在类模板中可以定义虚函数(多态),但虚函数不能是模板函数。二、STL介绍STL 标准模板库,由惠普实验室提供,里面集成了常用的数据结构类模板和算法函数模板等。容器:用来存储各类型数据的数据结构。迭代器:类似于专门用来指向容器成员的指针,用来遍历、操作、管理容器中的成员,可以...

2019-08-29 18:42:13 130

原创 c++基础(7)——模板

一.为什么使用模板1.C/C++是一种静态类型语言(预处理->汇编->编译->链接),好处是速度快,缺点是实现通用代码麻烦,例如:实现支持所有类型的快速排序.2.借助函数重载实现通用代码,好处是实现简单,但代码段会增加3.借助宏函数来实现通用代码,类型检查不严格4.借助回调函数实现通用代码,使用麻烦5.由于以上原因C++之父在C++实现了模板技术,让C++能够支持泛型编...

2019-08-29 18:39:34 112

原创 c++基础(6)

一.虚函数表什么是虚函数表,在C++的类中,一旦成员函数中有虚函数,这个类中就会多一个虚函数表指针,这个指针指向一个虚函数表,表里面记录这个类中所有的虚函数,当这个类被继承(不管子类中有没有虚函数),它的子顺序中也会有一个虚函数表,如果子类的成员函数中的有函数签名与父类的虚函数一样就会用子类中的函数替换它在虚函数表中的位置,就达到覆盖的效果当通过类指针或引用调用函数时,会根据对象中实际的虚...

2019-08-24 14:49:22 101

原创 c++基础(5)——类的继承(2)

一.子类的构造,析构,拷贝1.子类的构造在执行它的构造函数前会根据继承表的顺序执行父类的构造函数默认执行父类的无参构造。显式调用有参构造,在子的构造函数后,初始化列表中显式调用父类的有参构造函数。2.子类在它的析构执行完后,会根据继承表的顺序逆顺序执行父类的析构函数注意:父类的指针可以指向子类对象,当通过父类指针释放对象时,只会调用子类的析构函数,而这种析构方式有可能造成内存泄露3.当使用...

2019-08-24 14:44:40 154

原创 c++基础(5)——类的继承(1)

一.类的继承1.共性与个性共性表达不同类型事物之间共有的属性和行为个性用于刻画每种事物特有的属性和行为2.共性表示为父类(基类),个性表示为子类(派生类)子类继承自父类基类派生出子类二.继承的基本语法1.继承表一个子类可以同时继承零到多个父类,每个父类的继承方式可以相同也可以不同class 子类:继承方式1 父类1,继承方式2 父类2,…{}2.继承方式public ...

2019-08-24 14:39:37 136

原创 c++基础(4)——操作符重载

一.操作符函数重载什么是操作符函数:在C++中针对类类型的对象的运算符,由于它们肯定不支持真正的运算操作,因此编译器会将它们翻译成函数,这种就叫做操作符函数(运算符函数)编译器把运算符编译成运算符函数,可以针对自定义的类类型设计它独有的运算功能其实各种运算符已经基本一些功能,再次实现它就是叫作运算符重载双目运算符: a+b 成员函数 a.operator+(b); 全局变...

2019-08-24 14:33:10 93

原创 c++基础(3)

一.this指针类的成员变量单独存储在每个类对象中,成员函数存储在代码段中,所有的类对象共享一份成员函数成员函数是如何区别调用它的是哪个类对象的呢?答:借助了this指针,类的每个成员函数都有一个隐藏的参数this指针,它指向类对象类的构造函数中同样有this指针,指向的就是正在构造的这个对象在类中(在成员,构造,析构函数中)对成员变量,成员函数的访问都借助了this指针this指针是...

2019-08-17 15:30:37 111

原创 c++基础(2)

面向过程的编程:关注的是问题解决的过程步骤(事情是如何解决的),算法面向对象的编程:关注的是谁能解决问题(类),需要什么样的数据(成员变量),具备什么样的技能(成员函数)才能解决问题抽象:找出一个能够解决问题的"对象"(观察研究对象),找出解决所必须的数据(属性),功能(成员函数)封装:把抽象的结构,归结为一个类(数据类型),然后实例化出类对象,设置对象的属性,调用对象的功能达到解决问题...

2019-08-17 15:10:41 91

原创 C++基础(1)

一.C++介绍本贾尼 斯特劳斯特卢普,于1979年4月贝尔实验室的本贾尼博士在分析UNIX系统内核流量分析时,希望有一种有效的更加模块化的工具1979年10月完成了预处理器Cpre,为C增加了类机制,也就是面向对象,1983年完成了C++的第一个版本,C with classes 也就是C++C++与C的不同点:1.C++完全兼容C的所有内容2.支持面向对象编程思想3.支持运算符,函...

2019-08-15 20:28:55 128

原创 线程——锁

一.同步,竞争,互斥当多个线程同时访问其共享资源时,需要相互协调,以防止出现数据不一致,不完整问题,能达到这种状态叫线程同步而有些资源在同一时刻只有一个线程访问,对于这种资源的访问需要竞争当资源获取到后,能够防止资源被其他线程再次获取的方法叫互斥二.互斥量(锁) pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER int pthread_...

2019-08-12 20:28:16 127

原创 线程属性操作

设置线程属性 typedef union { char _size[_SIZEOF_PTHREAD_ATTR_T]; long int_align; }pthread_attr_t 猜测:不让手动修改线程的各大项属性,而使用pthread_attr int pthread_attr_init(pthread_attr_t *attr); ...

2019-08-07 17:18:28 136

原创 线程操作

一.线程基本概念1.线程就是进程中的执行路线,即进程内部的控制序列,或者说是进程的子任务(进程就是正在运行的程序,它是一个资源单位).2.线程是轻量级的,没有自己独立的内存资源,使用的是进程的代码段,数据段,bss段,堆(没有栈),环境变量表,命令行参数,文件描述符,信号处理函数,工作目录,用户ID,组ID等资源3.线程有自己独立的栈,也就是有自己独立的局部变量4.一个进程中可以拥有多个...

2019-08-07 17:16:50 114

原创 socket通信

一.套接字socket是一种接口机制,可以让程序无论使用什么端口都可以从socket进出数据,它负责了进程与协议之间的连接1.编程模式点对点(p2p):一对一通信客户端/服务器(C/S):一对多2.创建socket int socket(int domain, int type, int protocol); 功能:创建socket描述符,可以把socket当作文件来看待,发送...

2019-08-07 17:10:21 93

原创 计算机网络(简单介绍)

计算机网络1.什么是计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统2.计算机网络的功能数据通信资源共享提高系统的可靠性分布式网络处理和负载均衡3.计算机网络的组成通信子网: 网卡,线缆,集线器,中继器,交换机,路由器资源子网: ...

2019-08-06 20:42:41 577

原创 UNIX/Linux系统命令(5)——进程间通信

一.基本概念什么是进程间通信(IPC,Interprocess communication):是指两个或多个进程之间交换数据的过程叫进程间通信进程之间为什么需要通信?当需要多个进程协同工作高效率完成任务时,因为每个进程都是一个独立的个体(资源单位),进程之间就需要进行通信进程间通信方式:1.简单进程间通信:命令行参数,环境变量表,信号,文件2.传统进程间通信:管道3.XSI进程间通信...

2019-08-06 20:38:51 261

原创 UNIX/Linux系统命令(4)——进程操作

一.基本概念1.进程与程序:程序:存储在磁盘上的文件,包含可执行指令和数据的静态实体进程:运行中的程序(一个程序可执行多次,加载出多个进程)进入就是处于活动状态的计算机程序2.进程的分类:交互进程:有输入,输出,用户可以根据自己的情况输入数据,得到想要的结果(一般进程)批处理进程:由脚本加载执行的程序(Linux下的shell,windows下的bat)守护进程:总是活跃的,后台运...

2019-08-06 16:54:22 246

原创 UNIX/Linux系统命令(3)——信号操作

一.信号的基本概念1. 中断:中止(注意不是终止)当前正在执行的任务,转而执行其他任务(可能返回也可能不返回),中断分为硬件中断(硬件设备产生的中断)和软件中断(其他程序产生的中断)2. 信号:是一种软件中断,提供了一种异步执行任务的机制3. 常见的信号 SIGINT(2) Ctrl+c 产生信号 SIGQUIT(3) Ctrl+\ 产...

2019-08-06 16:15:20 105

原创 UNIX/Linux系统命令(2)——目录操作

chdir/fchdir/getcwd char *getcwd(char *buf, size_t size); 功能:获取当前进程的工作目录,工作目录是指当不加路径信息时,创建/打开时从那个目录下查找,工作目录默认是程序所在的目录 int chdir(const char *path); 功能:修改进程的工作目录 返回值:成功返回0,失败返回-1 ...

2019-08-06 16:02:29 111

原创 UNIX/Linux系统命令(1)——文件操作

一.系统调用UNIX/Linux系统绝大部分功能都是通过系统调用实现的,比如:open/close… UNIX/Linux把系统调用都封装成了c函数的形式,但他们并不是标准C的一部分。 系统调用的功能代码存在于内存中,接口定义在c库中,该接口通过系统中断实现调用,而不是普通函数进行跳转;标准库中的函数绝大部分时间都工作在用户态,但部分时间也需要切换到内核(进行系统调用),比如:freed...

2019-07-27 15:00:16 237

原创 操作系统——库

库库的定义:库就是目标文件的集合,我们把不需要升级更新维护的代码打包合并在一起方便使用,也可以对源代码进行保密。静态库:静态库在使用时在使用时是把被调用的代码复制到调用模块中,然后在执行程序时,静态库就不需要了。静态库的特性:静态的扩展名为.a静态库的执行速度快,但占用内存大,当库中的内容发生变化时,需要重新编译出新的程序,因此不能轻易修改库中的内容共享库:共享库(动态库)的扩展...

2019-07-27 10:57:14 736

原创 算法——排序2

快速排序:快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。堆排序:首先把数组当作完全二叉树,然后保证根节点最大,然后把根节点与最后一个元素交换,然后再调整二叉树(逐渐减小数组),让根依然保持最大...

2019-07-25 19:17:20 70

原创 算法——简单排序

算法:数据结构中的算法,指的是数据结构所具备的功能。解决特定问题的方法,他是前辈们的一些优秀的经验总结。现在我来介绍几种简单的排序算法:冒泡排序:是一种稳定排序,在排序过程中可以检测到数据是否已经有序(对数据的有序性非常敏感),可以立即停止,如果待排序的数据基本有序,则冒泡的效率非常高。插入排序:当一列数据已经有序,再有加入的数据时,适合使用插入排序。选择排序:是冒泡排序的变种,...

2019-07-23 20:55:06 64

原创 数据结构简要

什么是数据结构数据结构的起源:美国高纳德教授,于1968年开设一门《基本算法》的课程,开设的数据结构和算法的先河。他提出了一个公式:数据结构+算法=程序。数据结构不是一门研究数据计算的学科,而是研究数据与数据之间的关系的学科。数据结构的基本的概念:数据:能够输入到计算机中的描述客观事物的符号。数据项:描述事物的其中一项指标。数据元素:用于描述一个完整事物。数据结构:同志数据元素和...

2019-07-13 10:08:09 90

原创 学习笔记——指针

指针:什么是指针:指针是一种数据类型(整数),这种类型定义出的变量叫指针变量(简称指针)。 内存的每个字节都有一个编号。指针变量中存储的就是这种整数。     1bit 最小的可用单位,能存储1或0;     1byte=8bit     1kb=1024byte     1mb=1024kb     1gb=1024mb     1tb=1024gb     1pb=1024...

2019-05-12 20:07:24 130

原创 学习笔记——内存,变量,输入输出缓冲区

内存:程序在内存中的分段当程序开始运行后会加载到内存中,会把内存分成若干段(60)。 每一段的功能和权限不同。    代码段(txt):程序中的二进制指令存储在此段,只读权限。    只读段:存储常量,字符串字面值。(有时和txt合并)    bss段:静态数据段,程序运行时会清理。    全局段(data):存储全局变量。    txt,bss,data当程序编译完成后大小就确定...

2019-05-12 19:45:29 343

原创 用c语言编程设计简单的小游戏------走迷宫

简单的的C语言编程小游戏——走迷宫C语言是一种非常适合编写游戏的编程语言,今天我就用c语言编写一个十分简单的小游戏–走迷宫。设计思路1.数据分析:定义变量 : 迷宫:char[10][10];     墙 ‘#’     老鼠 ‘@’     出口 ‘ ’     路 ‘ ’   ...

2019-05-07 20:12:48 20407 6

原创 vim文本编译器的基础使用方法

vim文本编译器Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立、修改、编辑文档或者程序文件。基本用法:vim file.c 打开或创建.c文件输入i进入编辑模式,可以编写或修改代码Ctrl+x 编译执行代码Ctrl+z 保存退出命令行编译: gcc code.c 编译代码./a.out 执行...

2019-05-07 09:29:32 199

原创 通过C语言数组解决一些简单的递推数学问题

通过C语言数组解决一些简单的递推数学问题c语言是一种十分适合解决数学问题的编程语言。其中数组对于解决递推问题有十分优秀的作用。数组:   数组就是变量的集合,是一种指定义变量的方法。   一维数组:   定义:  类型 数组[数量];//[]里的整数表示变量的数量   int arr[5]《=》int n1,n2,n3,n4,n5;     数组的变量,值也是不确定的,为了安全需要初...

2019-05-05 17:29:49 1614

空空如也

空空如也

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

TA关注的人

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