- 博客(85)
- 收藏
- 关注
原创 QT网络连接
1、clicent1、connect:通过socket发送的connected连接信号,判断是否连接到服务器2、通过按键点击的槽函数void Widget::on_pushButton_clicked()将ip地址和端口通过socket的connectToHost连接到服务器3、客户端可以通过readyRead信号来进行判断服务器有无信息发送。通过socket的readall将内容全部读取...
2019-02-18 09:41:00
1835
原创 运用qt写一个简单的登录界面
1.widget登录界面的运行文件#include "widget.h"#include "ui_widget.h"#include <QDebug>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); con...
2019-02-16 09:16:27
3806
原创 QT初使用
1、创建一个简单的界面#include <QApplication> //QT应用工程类#include <QWidget> //窗口类int main(int argc,char **argv){ QApplication App(argc,argv); //工程对象(整个工程只能有一个) QWidget w1; ...
2019-02-13 09:09:28
188
原创 设计模式--结构型模式
1、原型模式#include <iostream>#include <string>using namespace std;//原型模式---->处理拷贝问题,在内部加入克隆函数class Person{public: virtual void show() = 0; virtual Person *clon() = 0;};c...
2019-01-28 21:20:46
178
原创 设计模式次
1、工厂模式1、简单工厂#include <iostream>#include <string>using namespace std;//简单工厂class Clothes{public: virtual void show() = 0;};class T_shirt:public Clothes{public: void s...
2019-01-28 14:38:17
131
原创 设计模式
1、设计模式基本原则1、创建型模式:通过和对象的创建有关(5种)2、结构型模式:组合类和对象(7种)3、行为型模式:类或对象的交互(11种)基本原则---->书2901、开放封闭原则:类的改动是通过增加代码进行的,而不是修改原代码2、依赖倒置原则:依赖于抽象(接口),不依赖于具体的类3、接口隔离原则:不应该强迫客户的程序依赖他们不需要的接口4、里式替换原则:任何抽象类出现的地...
2019-01-26 21:51:45
145
原创 类型转换和异常
1、类型转换1、_cast---->普通类型的强制转换2、reinterpret_cast—>指针类型的转换3、dynamic_cast---->类层次之间的类型转换成功返回转换类型的指针失败返回nullptr4、const_cast---->const变量转换成非const变量#include <iostream>using namespac...
2019-01-25 21:48:22
1678
原创 c++复习
1、命名空间## 2、函数参数1、默认参数c++允许形参带一个默认的值,当函数调用没给形参传值的时候,形参使用默认值Void func(int a,int b =10)如果函数有一个参数有默认值,该参数的右边所有参数都要有值。给形参设置默认参数的时候,函数声明和函数定义只能有一个赋值。2、占位参数顾名思义,这个参数是用来占位的,只有类型没有变量名。占位参数可以与默认参数一起使用Vo...
2019-01-24 09:37:58
150
原创 STL标准模板库(二)
1、set插入判断//判断插入成功与否void func1(){ set<int> s; s.insert(1); //插入的返回值 pair<set<int>::iterator,bool> ret = s.insert(1); if(ret.second) cout<<"插入成功:"...
2019-01-22 21:57:57
107
原创 STL标准模板库
1、主要内容1.1、算法—>函数(处理数据)1.2、容器—>数据结构(保存)1.3、迭代器—>遍历容器中的元素(统一容器的遍历方式)容器1、存放各种各样的数据:类模板2、结构:一般有链表、树、数组、栈、队列。。。。3、vector容器,deque容器,list容器算法库中有100多种算法头文件:1、排序:sort(排序开始的地方,排序结束位置的下一个位置)...
2019-01-21 18:57:03
121
原创 模板
1、模板1、模板的使用:template<typename 类型>1.1、隐式调用:myswap(d1,d2);编译器自动判断类型,通知函数1.2、显示调用: myswap(d1,d2);<>中写的是处理的数据类型2、模板的实现机制模板并不是真正的将数据类型传递给函数,数据类型是无法传递的,模板实际上是根据调用的时候来如果没有就创建相应的函数,有就直接调用。模...
2019-01-21 18:49:17
124
原创 用类写链表、栈、队列
1、链表#ifndef LIST_2_HPP#define LIST_2_HPP#include <iostream>using namespace std;template <typename T>class Data{public: Data<T> *next; T data;};template <typena...
2019-01-20 14:20:54
392
原创 c++学习
1、运用指针的一些问题1、基类指针操作派生类对象数组----->基类和派生类的步长不一致2、虚析构函数:—>通过基类指针释放派生类对象:解决办法,将基类的析构函数设置成虚函数#include <iostream>using namespace std;class Animal{public: Animal() { cout...
2019-01-18 18:52:40
107
原创 多态
1、多态1、什么是多态一种调用函数有多种不同的表现形态。2、封装:对信息进行隐藏,对外提供访问限制继承:代码复用多态:功能扩展–>在不改变原有代码的基础上进行添加3、确认实际调用的函数1、看指针类型---->Animal *2、看函数类型---->虚函数virtual void eat()3、看pa指向对象的函数—>调用pa指向对象的函数 —>程...
2019-01-18 18:48:25
156
1
原创 c++继承
1、继承是什么继承是代码的复用,被继承的类称为基类(父类),继承的新类叫派生类(子类)。继承的类拥有父类的所有成员变量和成员函数,相当于类的完全复制。2、继承的语法class 新类名 :访问控制 要继承的类例如:class new:public old------>new类继承了old类。#include <iostream>#include <string&...
2019-01-16 19:36:40
118
原创 友元与符号重载
1、友元(1)友元函数:如果一个函数是类A的友元函数,那么改函数可以通过对象使用A中的所有成员(破坏了类的封装性)使用方法:在类中声明函数,在函数名前面添加friend.注意:友元的声明不受访问控制符的限制,可以在类中的任意位置声明,一般放在类的最开始位置,便于查找。友元函数是“友”,不属于类的内部成员函数,是外部函数,因此没有隐藏的this指针(2)友元类:如果类A是类B的友元类,那...
2019-01-15 14:24:59
305
原创 聊天室添加新功能
1、添加会员制度会员包含的特权1、可以禁言用户2、可踢出用户下线3、可以防止禁言4、可以防止被踢1、服务器代码部分//踢出下线void kick(int cmd,long client_socket){ //客户端--->服务器 struct _kick { char name[SIZE]; }Kick; read(client_socket,&...
2019-01-13 20:47:31
409
原创 c++学习
1、拷贝构造函数1、用途(1)在函数形参是对象,实参传到形参的传递会用到(2)函数的返回值是对象的时候会用到2、格式类型类名(const 类名 &变量名)3、如果类内部没有写拷贝函数,使用的时候系统会自动添加,但是系统添加的拷贝函数只在值的复制(浅拷贝),在类中成员有指针的时候会出错。因此,在类中有指针的时候需要自己写拷贝函数,复制的时候连同堆上的空间一同复制过来(深拷贝)...
2019-01-13 18:46:29
104
原创 c++面对对象学习
1、用面对对象的思想考虑圆与点1、搭建场景2、场景中应该有哪些对象:圆,点3、对象有的属性(1)圆:半径,圆心的x坐标和y坐标(2)点:x坐标,y坐标3、对象本身有的功能:(1)圆:判断点是否在圆内(2)点:计算点与圆心的距离(计算两个点的距离)4、管理者将对象联动起来1、main.cpp#include <iostream>#include "point.h"...
2019-01-11 20:09:40
229
原创 聊天室跟新(2)
一、服务器代码#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <sqlite3.h>#include <string.h>#include <unistd.h>#inc...
2019-01-10 23:08:41
579
1
原创 c++初学(2)
1、constconst在c语言在:const:修饰的是一个变量,不能通过被修饰的内容去改变空间的值。const 在c++中:const修饰的是一个常量。它具有一些特性(1)const常量存放在符号表中,正常情况下内存不会为其分配空间(2)使用时,会去符号表中取值(3)如果对const常量取地址,编译器会在内存中分配一块无名空间,但它本身不会使用1、const在c++中的运用:替...
2019-01-10 00:22:20
127
原创 C++初识
1、命名空间1、命名空间的定义namespace 命名空间名称{各个成员}2、命名空间的使用(1)命名空间的名字+域解析符(::)例如:Name A :: 命名空间中的成员;(2)用using打开要使用的命名空间例如:using namespace NameA ;(2)用using打开要使用的命名空间的部分成员using NameA :: g_a;(3)怎么使用命名空...
2019-01-09 00:46:27
90
原创 多路复用
1、tcp服务器的多路复用#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <stdlib.h...
2019-01-04 19:52:13
163
原创 tcp和udp服务器与客户端的编写
1、tcp服务器#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#...
2019-01-04 19:49:48
541
原创 聊天室1.0(注册和登录功能)
1、服务器#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <sqlite3.h>#include <string.h>#include <unistd.h>#inclu...
2019-01-04 19:45:13
1933
原创 运用线程实现服务器与客户端相互通信
代码通过创建一个线程,使服务器的读写分离,主线程用于读客户端发送的数据,其他线程用来向客户端写数据,互不影响。#include <stdio.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <unistd.h>#include...
2019-01-03 19:25:23
441
原创 通讯录修改
一、添加的功能和未解决的问题添加:数据同步,在上一次意外退出或者未保存的情况下退出,再次进入可以选择还原上一次的数据问题:每次进入都会选择是否还原,不管上次有无操作二、代码主函数#include <stdio.h>#include "book.h"int main(){ Node *head = NULL; CreateList(&head); //创...
2019-01-03 18:43:09
447
原创 数据库
一、数据库的安装1、将压缩包sqlite-autoconf-3071700解压2、进入文件夹,运行configure等待下载完成3、下载完成后输入make指令,等待4、make install,等待结束5、找到/usr/lib目录下中的libsqlite3.so.0.8.6和libsqlite3.so.0文件,将其改名并将/usr/local中的对应libsqlite3.so.0.8.6...
2019-01-03 18:38:02
119
原创 线程同步
1、互斥量1、什么是互斥量互斥量(mutex)从概念上来说类似于一个二进制信号量,即初始值为1的信号量。互斥量被获取之后就不能再被获取,因此对互斥体的获取和释放操作常常称为加锁和解锁操作。互斥量只能由获取它的线程进行释放,如果违反这一原则,则结果是未定义的。互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁以后,任何其他试图再次对互斥...
2018-12-29 23:40:26
219
原创 线程
一、线程1、什么是线程1、线程:是CPU调度的基本单元进程:是可独立的运行模块线程依赖于进程,不能独立存在线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属于一个进程的其他的线程共享进程拥有的全部资源。2、刚启动运行的线程称为主线程,其他创建的线程乘为其他线程对于线程而言,多个线程没有地址空间,共享进程地址空间2、线程与...
2018-12-27 19:25:20
258
原创 进程间通信(2)
一、消息队列unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以向其中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。消息队列分两种:POSIX消息队列以及系统V消息队列 系统V消息队列目前...
2018-12-26 23:54:16
120
原创 进程通信
一、管道通信1、无名管道1、什么是管道:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道尾部写入数据,另一个进程(读进程)从管道的头部读出数据。2、管道的特点:1、单向性,一端写,一段读2、管道中数据是一次性的,读完就没有了3、管道中没有数据的时候,读取时会阻塞,直到管道中有数据3、管道的用途:一般用于父子进程之间的通信,因此又称无...
2018-12-25 19:39:30
229
1
原创 进程控制
一、进程1、什么是进程:运行起来的进程。进程是一个具有一定独立功能的程序的一次运行活动进程是一个程序正在执行的实例。每个这样的实例都有自己的地址空间和执行状态。2、怎么区分进程:给每个进程分进程号pid。每个进程都有一个ID(ID是一个正整数),唯一标识了系统中的这个进程。每个进程都有一个创建它的进程,叫父进程(Parent Process)进程ID(PID):标识进程的唯一数字父进程...
2018-12-24 21:13:27
123
原创 通讯录(带系统编程)
、main函数#include <stdio.h>#include "Linklist.h"int main(){ Node *head = NULL; CreateList(&head); //创建链表,初始化 if(NULL == head->next) Restore(head); //输入上次保存的值 while(1) { ...
2018-12-23 22:07:11
516
原创 排序练习
一、插入排序#include <stdio.h>void my_print(int *a,int len){ int i; for(i = 0;i < len;i++) { printf("%4d",a[i]); } printf("\n");}void swap(int *a,int i,int j){ int tmp = a[i]; a[i]...
2018-12-23 22:03:36
192
原创 系统编程第二天
一、write实时检测文件的命令:tailf文件关闭后,再次开启每次默认从文件开头开始00头文件#include <unistd.h>格式ssize_t write(int fd, const void *buf, size_t count);;第一个参数:写的文件的文件描述符第二个参数:存放在缓冲区的要写入的数据第三个参数:想要写的大小(字节)返回值成功:返回实...
2018-12-21 22:27:00
145
原创 系统编程第一天
一、open函数可以使用man 2 查看open的使用方法,头文件等一些内容1、opens所包含的头文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>2、open的格式int open(const char *pathname, int flags);int open(c...
2018-12-20 20:45:27
122
原创 排序的小运用
一、 有一个由大小写组成的字符串,现在需要对他进行修改,将其中的所有小写字母排在大写字母的前面(不要求保持原顺序)/* 有一个由大小写组成的字符串,现在需要对他进行修改, 将其中的所有小写字母排在大写字母的前面 (不要求保持原顺序) */#include <stdio.h>#include <string.h>int partion(char *a,int ...
2018-12-19 19:56:51
128
原创 排序
各种排序1、冒泡排序将数组的中的么一个数从头开始比较,找出最大的数,通过不断的交换,将最大数放入数组末尾。将长度减少,再次遍历,直到数组填完。2、冒泡排序——鸡尾酒排序又称定向冒泡排序。与冒泡排序的区别在于:冒泡只从低到高去比较,鸡尾酒排序不仅从低到高还从高到低去比较3、选择排序通过遍历,找到最小的数,将其放在数组开头。再从第二的位置开始遍历,找出第二小的数,放在数组第二个位置,直...
2018-12-18 20:48:50
107
原创 数据结构(树)
树树是一种非线性的数据结构根节点:没有父结点的结点叶节点:没有结节点的节点,度为0的结点分支节点:有结点的节点,度非0的结点子节点父节点树的度:所有结点中度的最大值树的高度 = 树的层次二叉树二叉树树的度最大为2的树满二叉树:所有结点度为2完全二叉树:允许缺结点,按顺序去(最后往前删)性质1:在二叉树的第n层最多有2^(n-1)个结点点性质2:高度为k的二叉树最多...
2018-12-18 20:42:11
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人