- 博客(13)
- 收藏
- 关注
原创 【MySQL】SQL语句(数据定义语言-DDL+数据操作语言-DML+数据查询语言-DQL+数据控制语言-DCL)
SQL语句1). SQL语句可以单行或多行书写,以分号结尾。2). SQL语句可以使用空格/缩进来增强语句的可读性。3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。4). 注释: 单行注释:-- 注释内容 或 # 注释内容 多行注释:/* 注释内容 */分类说明DDL数据定义语言,用来定义或修改(重定义)数据库对象(数据库,表, 字段)DML数据操作语言,用来对数据库表中的数据进行增删改DQL数据查询语言,用来查询数据库中表的记录
2022-04-08 10:16:32
601
原创 linux下的代码是如何执行的 — — gcc
gcc工作的流程第一步: 进行预处理gcc -E hello.c第二步: 生成汇编文件gcc -S hello.i第三步: 生成目标代码gcc -c hello.s注意:前三步-E、-S、-c未用-o指定生成得文件名时,会自动根据源文件名匹配第四步: 生成可以执行文件gcc hello.o -o hello第五步: 执行./hello一步完成,直接将源文件生成一个可以执行文件,如果不指定输出文件名字, gcc编译器会生成一个默认的可以执行a.outgcc -c hello
2022-04-08 10:15:57
1543
原创 【网络编程】UDP+本地套接字
UDP原理TCP:传输控制协议 安全可靠 丢包重传 面向连接UDP:用户数据报协议 不安全不可靠 丢包不重传 快 不面向连接TCP通信流程:服务器:创建流式套接字 绑定 监听 提取连接 读写 关闭客户端:创建流式套接字 连接 读写 关闭收发数据read recvwrite sendUDP通信流程:服务器:创建报式套接字 绑定 读写 关闭客户端:创建报式套接字 读写 关闭发数据ssize_t sendto(int sockfd, const void *buf, size_t
2022-04-08 10:15:18
273
原创 【网络编程】深度好文(I/O复用:select、poll、epoll)
1.I/O模型阻塞等待多进程、多线程实现的并发,消耗资源,cpu未充分利用系统为每个并发的客户分配一个进程,该进程只处理该客户信息。由于IO事件的时间较慢,所以进程通常都是阻塞在IO处,浪费系统资源,cpu未充分利用。非阻塞等待(轮询)只有一个进程,依次轮询每个连接套接字connfd的状态。状态发生改变时,应用层进行处理。浪费cpu(轮询)多路I/O复用只有一个进程,所有套接字(包括listenfd和connfd)都交给内核监听,套接字状态发生时,通知应用层处理。内核监听的函数通常有:s
2022-04-07 21:11:40
262
原创 【网络编程】C/S模型通信过程 — — TCP
TCP的11种状态11种状态:LISTEN、SYN_SENT、SYN_RCVD、ESTABLISHED、CLOSING、FIN_WAIT_1、CLOSE_WAIT、FIN_WAIT_2、LAST_ACK、TIME_WAIT、CLOSED过程:CLOSEED->LISTEN->SYN_SENT->SYN_RCVD->ESTABLISHED->…->FIN_WAIT_1->CLOSE_WAIT->FIN_WAIT_2->LAST_ACK->TIME
2022-04-07 21:10:12
924
原创 【网络编程】并发服务器 — — fork、thread ## fork()
pid_t fork(void);//创建一个进程,返回一个文件描述符//文件描述符<0(或者==-1),进程创建失败//文件描述符==0,表示为子进程//文件描述符>0,表示为父进程int main (){ pid_t fpid; //fpid表示fork函数返回的值 int count = 0; fpid = fork(); if (fpid < 0) printf("进程创建失败"); else if (fpid .
2022-04-07 21:06:58
347
原创 【c++】STL容器深度好文(vector+deque+stack+queue+list+set+map+string)
vector/*vector容器 vector数据结构和**数组非常相似**,也称为**单端数组** vector容器的迭代器是支持随机访问的迭代器 vector与普通数组区别:不同之处在于数组是静态空间,而vector可以**动态扩展** 动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间 v.begin() -- 指向第一个数据位置的迭代器 v.end() -- 指向最后一个数据的后一个位置的迭代器 v.rend() -...
2022-04-07 21:04:54
182
原创 【c++】继承+多态+虚函数+运算符重载
继承继承的好处:减少重复的代码语法: class 子类名:继承方式 父类名子类(派生类)父类(基类)派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。继承方式一共有三种:1.公共继承 public 继承下来的成员属性不改变2.保护继承 protected 继承下来的成员属性都变为protected3.私有继承 private 继承下来的成员属性都变为private三种继承方式下,父类的私有成员都不可以继承创建一个子类时:先调用父类构造函数,再调用子类构
2022-04-07 21:02:52
799
原创 【c++】类和对象基础(拷贝函数、构造函数、深拷贝、浅拷贝、对象成员、this指针、const修饰函数和对象、友元)
类的创建、赋值、权限C++面向对象的三大特性为:封装、继承、多态语法:class 类名{ 访问权限: 属性 / 行为 };访问权限公共权限 public 成员 类内可以访问,类外可以访问保护权限 protected 成员 类内可以访问,类外不可访问 子类可以访问父类中的保护内容私有权限 private 成员 类内可以访问,类外不可访问 子类不以访问父类中的私有内容stuct和class的比较在C++中 struct和class唯一的区别就在于默认的访问权限不同 struct
2022-04-07 21:01:33
878
1
原创 【c++】引用+常量指针/指针常量+指针函数/函数指针+函数高级
引用引用:**给变量起一个别名**语法:数据类型 &别名=原名;引用一定要初始化int &c;//错误,要让b初始化引用指向a引用初始化后,不能更改int &c=a;int &c=b;//错误,不能更改引用的指向不要返回局部变量的引用,值会改变函数的返回值为引用的时候,函数调用可以作为左值(等式左边)引用本质:指针常量;指向不可以修改,指向的值可以修改int &ref = a;//自动转换 int* const ref = & a;/
2022-04-07 21:00:16
426
原创 【c++】内存分区模型
C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量(const修饰的常量,包含字符串常量),该区域的数据在程序结束后由操作系统释放(生命周期长)栈 区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆 区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收分区的意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程程序运行前:代码区,全局区 程序运行后:栈区,堆区#incl
2022-04-07 20:59:05
559
原创 【c++】指针+结构体
指针定义 数据类型 *p;声明 p=地址,p为地址,*p为地址对应的值定义并声明 数据内心 *p=地址;空指针:指针变量指向内存中编号为0的空间,用于初始化指针变量,空指针指向的内存是不可以访问的int *p = NULL;野指针:指针变量指向非法的内存空间,程序中避免用野指针常量指针:const int *p = &a; //指针的指向可以改,但不能通过该指针来修改指向内存的值指针常量:int * const p = &a; //指针的指向不能改,但指针指向的内存的
2022-04-07 20:58:08
1760
原创 【c++】数据类型+运算符类型+程序流程结构+数组+函数
数据类型注释: // /**/变量: 字母数字下划线常量:define,const关键字标识符:标识符(identifier)是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。数据类型(意义:给变量分配合适的内存空间)整型:short 2B (-32768`32767) int 4B lon
2022-04-07 20:56:59
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人