自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cmake

//声明版本要求CMAKE_MINIMUM_REQUIRED(VERSION 3.10)//指定工程名称PROJECT(projectname CXX)//生成可执行文件ADD_EXECUTABLE(生成的可执行文件的名字 $(SRCS))//将所有依赖包围一个东西AUX_SOURCE_DIRECTORY(./ SRCS)//添加库ADD_LIBRARY(libname SHARED/STATIC(静态库/动态库添加) $(SRCS))//添加子目录ADD_SUBDIRECTORY(.

2020-08-09 10:34:08 87

原创 makefile学习记录

第一层:显式规则目标文件:依赖文件[TAB]指令hello:hello.o gcc hello.o -o hello//第一个目标文件是最终的目标hello.o:hello.S gcc -c hello.S -o hello.ohello.S:hello.i gcc -S hello.i -o hello.Shello.i:hello.c gcc -E hello.c -o hello.i//伪目标.PHONY:clean: rm -rf hello.o hello.S he

2020-08-08 16:42:08 98

原创 c++11线程库

优点:能够跨平台1.范例演示线程的开始运行和结束

2020-06-02 16:46:54 175

原创 Variadic Templates

eg1:/*一大堆什么后面就加...*/void printx(){}//终止函数,类似于递归调用的终止条件template<typename T,typename... Types>//一大堆typenamevoid printx(const T &firstArg,const Types&... args)//一大堆类型{ cout << firstArg << endl; printx(args...);//一大堆参数}sizeo

2020-05-28 14:22:44 144

原创 跨平台服务器 客户端

效果图数据包头文件#ifndef _MessageHeader_hpp_#define _MessageHeader_hpp_enum CMD{ CMD_LOGIN, CMD_LOGIN_RESULT, CMD_LOGOUT, CMD_LOGOUT_RESULT, CMD_ERROR, CMD_NEWUSR_JOIN};struct DataHeader{ Da...

2020-04-05 15:46:35 239

原创 mysql day1

数据库:文件夹表:文件数据:文件中的数据SQL结构化查询语言以单行或多行书写,分号结尾;语句不区分大小写,但是关键字建议使用大写。单行注释:– 注释内容(两个横 一个空格)#注释内容多行注释:/注释内容/DDL操作数据库:CRUD1.create:创建create datebase ***;//创建数据库create database if not exists ...

2020-03-21 20:35:43 87

原创 http协议以及epoll实现http

http协议URL在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符),就是指网络地址。请求消息 - 浏览器发送给服务器四部分:请求行:请求说明类型:GET:请求指定的页面信息,并返回实体主体POST:向指定资源提交数据进行处理请求。数据被包含在请求体中,POST可能会导致新的资源的建立或者已有资...

2020-03-18 20:51:56 638

原创 libevent库

优点:开源。精简。跨平台(Windows,Linux,macOS,Unix)。专注于网络。安装: 参考readme./configuremakesudo make install进入sample目录。运行监测编译使用库的.c需要加 -levent选项特性:基于“事件”异步通信模型。 — 回调。libevent库框架创建event_basestruct event_base ...

2020-03-15 18:24:25 103

原创 c++day8

适配器取反适配器一元取反适配器class g5:public unary_function<int,bool>{public: bool operator()(int v) const { return v > 5; }};int main(){ vector<int> v(10); for (int i = 0; i < 10; ...

2020-03-13 16:58:04 145

原创 线程池相关

线程池模块分析1.main();创建线程池。向线程池中添加任务。借助回调处理任务。销毁线程池。2.pthreadpool_create();创建线程池结构体指针。初始化线程池结构体(N个成员变量)创建n个任务线程创建1个管理者线程失败时销毁开辟的所有空间。(释放)3.threadpool_thread();进入子线程回调函数接收参数 void *arg—>pool...

2020-03-11 17:40:56 88

原创 poll和epoll实现多路I/O转接

pollint poll(struct pollfd *fds, nfds_t nfds, int timeout); 返回值与select一样struct pollfd{ int fd; 待监听的文件描述符 short events; 待监听的文件描述符对应的监听事件。取值:POLLIN,POLLOUT,POLLERR short revents; 传入0,如果满足对应...

2020-03-11 17:40:38 141

原创 c++Day4

多态静态多态and动态多态(区别就是函数地址的早绑定和晚绑定)函数重载 派生类和虚函数动态联编,写法doSpeak方法改为虚函数,在子类上声明虚函数,发生了多态。什么叫多态?父类的引用或者指针 指向 子类对象一个类一张表一般继承 无虚函数覆盖有虚函数覆盖纯虚函数virtual void fun()=0;纯虚函数必须要被子类实现。如果父类有了纯虚函...

2020-03-11 17:40:13 118

原创 c++Day3

运算符重载内置数据类型的表达式的运算符是不可能改变的int之类加号运算符person operator+(person &p1,person &p2){ person tmp; tmp.num = p1.num + p2.num; return tmp;}//全局函数person operator+(person &p1){ person tmp; t...

2020-03-11 17:39:59 69

原创 C++Day2

c语言封装属性和行为分开处理了,没有严格的类型检测,而c++不会。c++封装struct 和 class是一个意思,唯一的不同,默认权限s是public,c是private。

2020-03-11 17:39:48 164

原创 c++再理解Day1

c++对c语言的增强全局变量检测增强int a;int a = 10;//不能这么写函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强int getRects(w,h){}void test{ getRects(10,10,10)}//不能这么写类型转换增强不匹配的数据类型会报错struct增强struct Person{ int m_Age;...

2020-03-11 17:39:24 134

原创 网络基础

协议一组规则。分层模型结构OSI七层模型:物,数,网,传,会,表,应TCO/IP 四层模型:网(链路层/网络接口层),网,传,应应用层:http、ftp,nfs,ssh,telnet…传输层:tcp,udp网络层:ip,icmp,igmp链路层:以太网帧协议,arp通信过程数据没有封装之前是不能在网络中传递的。以太网帧协议:根据mac地址,完成数据包传输ARP协议:根据...

2020-03-11 17:39:10 106

原创 UDP和本地套接字

TCP通信和UDP通信各自的优缺点:TCP:面向连接的,可靠的数据包传输。对于不稳定的网络层,采取完全弥补的通信方式。丢包重传。优点:稳定。数据流量稳定,传输速度稳定,顺序。缺点:传输速度慢。效率低。系统资源开销大。使用场景:数据的完整性要求较高,不追求效率。大数据传输,文件传输。UDP:无连接的,不可靠的数据报传递。对于不稳定的网络层,采取完全不弥补的通信方式。默认还原网络状况。...

2020-03-11 17:38:58 374

原创 select实现多路I/O转接

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);参1:所监听的文件描述符中,最大的文件描述符+1参2.3.4:本质是位图,所监听的文件描述符的可读可写和异常事件。参5:等待的时间 (NULL)阻塞监听...

2020-03-11 17:38:37 73

原创 Socket编程

sockaddr地址结构struct sockaddr_in addr;bind(fd,(struct sockaddr *)&addr,size);初始化add.sin_family = AF_INET/AF_INET6;addr.sin_port = htons/ntohs(xxxx);int dst;inet_pton(AF_INET,"192.157.22.45"...

2020-03-11 17:38:20 78

原创 Linux同步相关

线程同步指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时线程为保证数据一致性,不能调用该功能。协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。互斥量(互斥锁)pthread_mutex_t lock;//创建锁pthread_mutex_init;//初始化pthread_mutex_lock;//加锁访问共享数据(stdout)pthr...

2020-03-11 17:38:09 91

原创 c++Day5

模板函数模板template<class T>template<typename T>//每一个函数都要声明一下模板void func(T &a,T &b){}main(){ int a,int b; char c; func(a,c);//错误,推导不出来T是什么类型 func(a,b);//正确 fun<int>(a...

2020-03-11 17:37:42 94

原创 c++day6

c++输入输出流标准I/O 从键盘输入数据到屏幕文件I/O 从磁盘文件输入数据串I/O 对内存中指定的空间进行输入输出,通常指定一个字符数组作为存储空间。标准输入流char c = cin.get();//读一个字符,换行会在缓冲区中char buf[1024];cin.get(buf,1024);//两个参数,读一个字符串,不会把换行符拿走,遗留在缓冲区中cin.getline(...

2020-03-11 17:37:15 93

原创 C++ day7

stack容器stack<int> s;s.pop();//出栈s.push(num);//入栈if(!s.empty())s.size();//栈的大小没有迭代器,不能操作数据,FILOqueue容器FIFO,没有迭代器queue<int> q;q.push(n);q.pop();q.back();//队尾元素q.front();//队头元素...

2020-03-11 17:36:53 83

原创 Linux线程相关

进程组和会话会话就是多个进程组的集合,进程组是进程的集合守护进程deamon进程:通常运行于操作系统后台,脱离控制终端,一般不与用户直接交互。周期性的等待某个事件发生或周期性执行某一动作。不受用户登录注销影响,通常采用以d结尾的命名方式。创建守护进程模型:1.fork子进程,终止父进程。2.子进程调用setsid()创建新会话3.改变工作目录位置 chdir()4.重设umask...

2020-03-11 17:36:32 58

原创 Linux信号相关

信号的概念共性1.简单2.不能携带大量的信息3.满足某个特定的条件才发送信号的机制信号是软件层面上的“中断”。一旦信号产生,无论程序执行到什么位置,必须立即停止运行,处理信号,处理结束,再执行后续命令。所有信号都是由内核产生及处理的。与信号相关的事件和状态产生信号1.按键产生2.系统调用产生 kill,raise,abort 函数3.软件条件产生 定时器alarm4....

2020-03-11 17:36:19 92

原创 linux进程间通信相关(IPC)

方法最简单:管道开销最小:信号无血缘关系:共享映射区最稳定:本地套接字管道本质就是虚拟内存的内核缓冲区。伪文件:不是真正的文件,不会占用磁盘的存储。原理:管道为内核使用环形队列机制,借助内核缓冲区实现局限性:1.数据不能自己读自己写。2.数据一旦被读走,就不在管道中存在,不可重复读取。3.半双工通信,数据在一个方向上流动。4.只能在有公共祖先的进程使用管道。命名管...

2020-03-11 17:35:48 91

原创 linux进程相关

概念相关了解进程,程序,和并发单道程序设计模式 排队执行 DOS多道程序设计模式 时间片… 时钟中断机制(硬件机制)宏观并行,微观串行CPU和mmummu作用:将虚拟地址对应到物理地址上,程序员只需要虚拟地址。进程控制块PCB(进程描述符)在linux内核中以结构体的形式存在...

2020-03-11 17:35:35 111

原创 LinuxC库函数小结

获取文件信息

2020-03-11 17:35:01 135

原创 c++基础知识总结

一.const的用法1.用于指针const int *p:这就代表值不能够更改(*p,*p的值)int *const p:不能更改指向的地址,也就是说不能指向别的地方const int *const p:既不能更改地址,也不能更改变量的值2.const用于函数的地址传递参数,修饰函数的参数void foo(const int *p);这种形式通常用于在数组形式的参数中模拟传值调用。...

2020-03-11 17:34:23 418

空空如也

空空如也

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

TA关注的人

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