- 博客(33)
- 收藏
- 关注
原创 数据库(四)C++连接MySQL
mysql.h #ifndef MYSQL_H #define MYSQL_H #include <mysql/mysql.h> #include <cstring> #include <list> #include <vector> #include <iostream> using namespace std; class SQL { public: SQL(); ~SQL(); /* 功能: 初始化数据库 连接数据训
2020-05-11 22:46:15
233
原创 数据库(三)
一、数据约束 约束:对表中的数据加以限制,不允许非法数据插入。 注意:MySQL数据库不能很好的支持约束条件。 主键:非空且唯一 PRIMARY KEY CREATE TABLE student(id int PRIMARY KEY,name char(20),sex char); INSERT INTO student VALUES(123,'HEHE','M'); 唯一:数据不能重复 UNIQUE CREATE TABLE student2(id int PRIMARY KEY,nam
2020-05-11 22:43:01
270
原创 数据库(二)
INSERT INTO Student(name,sex,age,id) VALUES('hehe2','m',18,19070002); INSERT INTO Student(name,sex,age,id) VALUES('hehe3','m',19,19070003); INSERT INTO Student(name,sex,age,id) VALUES('hehe4','w',20,19070004); CREATE TABLE Teacher(id int,name char(20),su
2020-05-11 22:41:43
304
原创 数据库(一)
一、数据库介绍 1、为什么使用数据库 计算机的资源有限因此不可能把数据一直存储在内存中,而且内存一旦掉电数据就会不存在,我们需要所内存中的数据存储到文件中,方便下次的编辑、拷贝。 但随着程序越来越来复杂数据也就会越来越庞大,管理这些数据就会成为编程中最难、最重要的问题。 使用文件保存不安全,可能会被误删除,也可能被覆盖。 而数据库的访问是需要用户名、密码、相应的权限及命令。 文件读取数据并解析需要大量的重复代码,这种操作效率很低。 从数据库中查询数据只需要提供条件即可。 文件中删除一条记录
2020-05-11 22:36:30
260
原创 多路复用(五)epoll
服务端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/select.h> #inc...
2020-04-26 16:02:12
192
原创 多路复用(四)poll
服务端 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/select.h> #inc...
2020-04-26 16:01:06
197
原创 多路复用(三)pselect
服务端 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/select.h> #include <netinet/in.h> ...
2020-04-26 15:59:12
350
原创 多路复用(二) select
服务端 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/select.h> #include <netinet/in.h> ...
2020-04-26 15:55:12
226
原创 多路复用(一)简介
一、多路复用IO 在不创建新的进程和线程的情况下监控多个文件描述符,多应用于网络编程时一个服务端程序为多个客户端程序提供服务,多用于在业务逻辑简单,客户端需要的服务时间短,响应时间无太高要求的场景。 二、使用select函数实现多路复用IO int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struc...
2020-04-26 15:31:37
401
1
原创 线程通信
一、同步、竞争、互斥 当多个线程同时访问其共享的资源时,需要相互协调,以防止出项数据不一致、不完整的问题, 能达到这种状态叫线程同步 而有些资源在同一时刻只有一个线程访问,对于这种资源的访问需要竞争 当资源获取到后,能够防止资源被其它线程再次获取的技术叫互斥 二、互斥量(锁) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int pthrea...
2019-09-28 10:44:06
199
原创 进程间通信
一、基本概念 什么进程间通信(IPC):指两个或多个进程之间交换数据的过程叫进程间通信 进程之间为什么需要通信? 当需要多个进程协同工作高效率完成任务时,因为每个进程都是独立的个体(资源单位) ,进程之间就需要进行通信。 进程间通信方式: 1、简单进程间通信:命令行参数,环境变量表、信号、文件 2、传统进程间通信:管道 3、XSI进程间通信:共享内存、消息队列、信号量 4、网络进程间通信:sock...
2019-09-28 10:43:03
256
原创 自己实现一个简单的string类
#include <iostream> #include <string.h> using namespace std; class String { char* str; public: String(const char* str) { if (NULL == str) { this->str = new char[1]; this-...
2019-09-28 10:37:59
298
原创 各种排序与查找算法
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define swap(a,b) {typeof(a) t=a; a=b; b=t;} int order_find(int* arr,size_t len,int key) { for(int i=0; i<len; i++) ...
2019-09-27 23:16:45
249
原创 Linux上使用Git连接GitHub
Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命令行工具 Linux和Windows上都可以使用Git工具连接码云或者GitHub,这可以很方便的进行代码的下载以及上传。 具体步骤: 1、在终端输入 sudo apt-get install git 进行下载和安装Git 2、在终端输入 git config --global user.name “user_name” 引号内...
2019-08-29 15:29:56
750
1
原创 基于C++的酒店管理系统
酒店管理系统: 前提: 楼层,房间编号,房间类型,价格 开房:姓名,房间,随行人员,押金,时长 续费:延时,修改类型 退房:押金,消费 实现:在class.h中构建出房间以及顾客的两个类以及访问和修改类中私有成员的成员函数,然后在class.cpp中实现这些成员函数,func中实现开房、续费、查询、退房等具体的功能函数。 main.c #include <iostream> #in...
2019-08-22 20:46:21
5589
2
原创 用C++编写单向链表
list.h #ifndef LIST_H #define LIST_H #include <iostream> #include <cstdio> #define TYPE int using namespace std; class Node { public: TYPE data; Node* next; Node(TYPE _data) { ...
2019-08-17 16:34:55
302
原创 运算符重载返回值的引用或临时对象
const Point operator+(const Point& that) const { return Point(that.x+x,that.y+y); } const Point& operator+=(const Point& that) { x += that.x; y += that.y; return *this; } ...
2019-08-17 16:30:04
904
原创 运算符的重载
双目运算符的重载 成员函数: 类对象 operator#(const 类& that) const { return 类(参数#参数); } 注意:双目运算符的运算结构是个右值,返回值应该加 const,然后为了 const 对象能够调用参数应该写 const,函数也应该具备 const 属性。 全局函数: 类 operator#(const 类& a,const 类&...
2019-08-17 16:16:02
204
原创 基于TCP的C/S模型文件传输
实现: 文件上传 文件下载 通过命令行查看服务器的各层文件:cd、ls、mkdir、exit server.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include &l...
2019-08-09 19:45:01
1144
原创 基于TCP的网络聊天室
client.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h>...
2019-08-09 19:37:44
675
原创 UDP的C/S网络传输模型及其代码实现
编程模型 Server Client 创建套接字(socket) 创建套接字(socket) 准备地址(本机地址sockaddr_in) 准备地址(目标机地址sockaddr_in) 绑定(bind(sockfd+addr)) ..... 接受请求(recvfrom) 发送请求(sendto) 响应请求(sendto) 接受请求(recvfrom) 关闭套接字...
2019-08-09 19:27:58
556
原创 TCP的C/S网络传输模型及其代码实现
编程模型 Server Client 创建套接字(socket) 创建套接字(socket) 准备地址(本机地址sockaddr_in) 准备地址(目标机地址sockaddr_in) 绑定(bind(sockfd+addr)) ..... 接受请求(recvfrom) 发送请求(sendto) 响应请求(sendto) 接受请求(recvfrom) 关闭套接字...
2019-08-09 19:24:59
610
原创 合并两个排序的链表
将两个有序的链表合成一个有序的序列 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHe...
2019-08-04 22:14:59
154
原创 反转链表
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { if(pHead == NULL...
2019-08-04 20:59:08
171
原创 用消息队列实现atm
主要分为两人大模块: 客户端 1、进入时的功能开户、销户、登录、解锁 开户:输入姓名、身份证号、设置密码,如果开户成功,则服务器上保存一个账号信号(一个账号存一个文件,文件名建议是账号)。 销户:输入帐号、密码,服务器询问是否确认销户,如果确认则服务器删除帐号文件,并记录帐号。 登录:输入账号、密码,三次错误账号锁定。 解锁:输入账号、身份证号解锁。 2、登录...
2019-08-04 20:46:21
497
原创 Unix_Linux环境c语言(一)
本周主要对环境介绍,文件操作与文件管理进行了学习。 一、静态库、共享库、动态加载共享库的创建和应用 List item
2019-07-27 11:34:48
325
原创 学生信息管理系统
实现功能 文件加密 学生: 姓名 性别 学号 密码 语文 数学 英语 1、第一次登录强制修改密码。 //结构体里加一个flag位,初始化为false,第一次登陆后设置为true 2、查询成绩 排名 不显示姓名和学号。 平均分 最高分 最低分 3、修改密码 4、查看个人信息 5、三次密码错误锁定帐号,由教师解锁 教师: 姓名 性别 工号 密码 1、第一次...
2019-07-23 20:04:28
538
原创 数据结构
数据结构的四种基本类型 集合:元素之间没有任何关系 线性表:元素之间存在一对一关系 数组、链表、功能受限的表(栈、队列) 树:元素之间存在一对多关系 普通树、二叉树、完全二叉树、满二叉树、有序二叉树 图:元素之间存在多对多关系 邻接表、表的遍历(深度优先、广度优先)、最短路径 数据结构的存储方式(物理结构) 顺序:再一块连续的内存空间上存储元素与元素之间的关系。 优点是查找...
2019-07-13 14:28:33
207
原创 学习总结:指针
指针是一种数据类型(整数),这种类型类型定义出的变量叫指针变量(简称指针) 为什么使用指针:用堆、优化传参、共享变量 1、堆内存不能与标识符(变量名)建立联系,必须与指针配合才能使用堆内存。 2、优化参数的传递效率,函数的传参是值传递(内存拷贝),如果只传递变量的地址(4byte),可以达到传参的目的。 3、函数之间命名空间相互独立当需要共享变量时只能通过全局变量(不宜过多使用)...
2019-05-24 21:34:09
278
原创 学习总结:修饰变量的关键词
auto 用来定义自申请内存、自定释放内存的变量(局部、块变量)。 不加就代表加,与 signed 一样。 注意:全局变量前不能使用。 const 是对变量提供一种保护,但它不是常量。 变量一旦初始化后,就不能再显示修改他的值。 const 修饰被初始化过的全局变量才是真正的常量,一旦修改就出现段错误,因为编译器把这种全局...
2019-05-24 19:48:24
468
原创 学习总结三
写五子棋程序,这个是对迷宫的加深,以下是五子棋的分解过程: 五子棋: 分析数据: char board[15][15]; 棋盘 char key_x,key_y; 接收棋子的坐标。 char role; 记录角色'@','#'。 业务逻辑: 1、初始化棋盘,所有位置赋值为'*'; while(true) { 2、清理屏幕,显示棋盘。 3、请输入棋盘的坐标 检查坐标是否合法...
2019-05-10 16:25:07
200
原创 学习总结二
这个是我第一个写的稍微复杂点的程序,老鼠走出迷宫,老师在课上对于各个流程分解开来: 走迷宫: 数据分析: 迷宫:char[10][10]; 有墙‘#’ 有老鼠‘@’ 出口‘ ’ 路‘ ’ 老鼠的坐标:char m_x,m_y; 出口的坐标:char out_x,out_y; 业务流程: 显示迷宫:先清理屏幕,再显示迷宫。 #include<s...
2019-05-09 23:24:44
155
原创 学习总结一
有一个3*3方格,每个位置只能填写1~9,不能重复填写,要求:横向相加、竖向相加、斜向相加的值相等。 在想这道题的过程中,我一开始在想不通过随机置换数字来通过做出这道题,我通过一维数组来做这道题,我想的是一开始就摆好123456789这些数字,然后通过交换数字来找到目标数组,我刚开始在想的时候没想出这个的逻辑关系,后来就先用随机置换的方式。 ...
2019-05-09 22:50:08
167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅