自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小liu向bei的博客

Hang in there

  • 博客(14)
  • 收藏
  • 关注

原创 C++任子行面经

任子行(offer)面试官官说话太好听了叭,答得不准确的他会答复更好的解释给我听 every question9.24一面:自我介绍问了java python会不会const c里面const和c++有哪些区别多态,class和struct的区别extern c作用(混合编译),不用它会怎样(在c++重载的角度说了下)智能指针实现,shared_ptr循环引用,weak_ptr为什么可以解决(其实计数器里有俩count)设计模式 简单工厂和工厂化的区别http 302;长连接怎么实现的

2021-10-20 16:23:04 259

原创 2021-07-23

7.23:周报1.前两天学习了gns3的使用,应用测试的流程。2.学习了node.js的一些基础;3.学习了mongoDB数据库的一些命令4.了解了ELK日志分析系统,logstach对日志进行格式化,然后交给elastisearch引擎进行添加索引,最后它在交给kubau已web页面进行展示。node.js他底层是一个c/c++写的高性能服务器,在往上是一个中间层,在往上是javasprib...

2021-07-23 14:19:33 97

原创 c++11 function、bind()、lambda

function:C++11提供的一个类模板,用来包装各种形式类型的可调用实体(函数指针,普通函数,函数对象,lambda表达式,bind绑定的对象)绑定成员函数:function<返回类型(类名&,参数列表)> func = &类名::成员函数bind():可以看作函数适配器,可以把可调用对象和现有的参数先绑到一块,生成一个新的可调用实体,可用function接收。作用:可以把含多元参数的可调用对象转成一元、二元、少元的可调用对象。在使用一些STL算法的时候,比如f

2021-06-08 20:17:16 183

原创 TCP的一些总结(三握手、四挥手、状态转换、半关闭、半连接队列)

以客户端向服务器发起请求为例TCP的三次握手:连接双方要在连接建立初共计发送3个数据包,为了确保双方都能知道自己和对方的发送接收能力正常,再者就是要同步双方的序列号和确认号,交换窗口值大小,让对方知道接下来如何收发数据。1.客户端调用connect(),发送了SYN包,然后就进入了SYN_SEND状态。2.服务器此时已经调用了listen()函数,处于Listen状态,收到这个SYN包后(代表你能发我能收),就把这个连接放到半连接队列里,然后发送带着这次ACK的SYN包,就进入SYN_RECV状态

2021-06-04 17:12:25 636

原创 网络套接字的五种IO模型

IO的两个阶段:1)等待数据准备阶段(udp包重组)2)拷贝到用户缓冲的阶段- 1.阻塞IO:socket有数据,就拷贝。没有数据就先等待数据来了在拷贝。这两个阶段都会造成进程/线程阻塞,释放掉cup,转换成就绪态。优点:没有延时,数据来了之后就立刻拷贝走缺点:单进程单线程下,一个read阻塞后,程序就被切走了,无法进行任何cpu运算和响应IO请求多线程下,只能解决小规模的请求,规模大了就会照成线程频繁创建销毁切换的开销- 2.非阻塞IO:socket有数据,就拷贝;没有数据就直接返.

2021-05-31 11:21:34 273

原创 epoll、poll、select区别

1.文件描述符传入内核的方式select:创建文件描述符集合,拷贝到内核,每个文件描述符会多次拷贝。poll:创建struct pollfd结构体数组拷贝传入内核。epoll:epoll_ctr一个一个上树,并建立回调关系,每个文件描述符只会传入一次。2.内核检测文件描述符就绪的方式select:轮询,遍历所有fd,最后返回一个是否就绪的mask掩码,并根据掩码给fd_set赋值poll:轮询遍历,如果就绪,加入到就绪队列继续遍历epoll:在epoll_ctr上树的时候就在fd和网络设备间建

2021-05-31 09:49:33 100

原创 epoll原型、原理、两种模式、反应堆、server

【epoll原型:】int epoll_create(int size) int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)3.结构体地址int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout)//2.数组地址4.毫秒 events可以是以下几个宏的集合: EPOLLIN :表示对应的文件描述符可以读(包括

2021-05-29 14:40:58 296 1

原创 select 的原理、原型、优缺点

epoll和select的总结 【select原型:】 int select( int nfds,//最大fd+1 fd_set *readfds, //传入传出参数,fd集合,数组地址 fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)//监听时间 FD_ZERO(); FD_SET(); FD_ISSET(); struct timeval { long

2021-05-28 18:40:37 1233

转载 c++内存管理

相当不错!相当不错!相当不错!C++内存管理(超长,例子很详细,排版很好)收藏下来,慢慢看。[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了

2020-12-21 16:32:41 281

原创 C++浅拷贝深拷贝

浅拷贝带来的问题:堆区内存二次释放,需要深拷贝解决#include<iostream>using namespace std;class Zero{public: int m_age; int* m_height;public: Zero(int age,int height)//有参构造函数 { m_age = age; m_height = new int(height); cout << "age:" << m_age <&l

2020-12-21 16:17:55 58

原创 二叉排序树 c++

//二叉排序树*#include//节点struct BiTNode{int date;BiTNode* lchild;BiTNode* rchild;};typedef BiTNode* BiTree;//查找bool SearchBST (BiTree T,int key,BiTree f,BiTree& p){if(!T){p=f;return false;}else if(T->date==key){p=T;return true;}els

2020-12-21 16:10:21 171

原创 链表增删改查

c++实现#include<iostream>#include<string>using namespace std;//定义一个节点类class Node{public: int data; Node* next;};typedef Node* LinkList;//定义一个操作类class Linked_action{public: Node* Create_List();//创建一个单链表 void traverse_List(LinkLi

2020-12-21 15:59:57 118

原创 基于STL容器的贪吃蛇

类的描述:Tool类:主要调用一些Windows系统函数,完成光标的定位(光标定位用于屏幕各种打印的位置),改变字体颜色,改变背景颜色这些功能。Tools.头文件 void SetWindowSize(int cols, int lines);//设置游戏窗口的大小 void SetCursorPosition(const int x, const int y);//设置光标位置,用来输出文字或者空格(覆盖) void SetColor(int colorID);//设置文本颜色 void S

2020-12-21 15:38:54 202

转载 C++如何由文件组成项目

当我们学习了C++的语法以及种种特性之后,可能要开始做一个项目。但是一个C++的项目究竟是怎么组成的呢?当我们用Visual Studio新建一个项目时,里面的cpp文件和项目究竟是怎样的关系?这篇文章就是为了解答这些问题。我们将解释项目、解决方案、库等各种术语的含义。首先要知道,C++从源文件到可执行文件的一个基本流程。C++的源文件,要通过预处理、编译、链接三个步骤,才能得到可执行的文件。这个过程中涉及到了预处理器、编译器、链接器。源文件通过预处理和编译得到的是目标文件(Object file)。一

2020-07-19 00:43:34 617

空空如也

空空如也

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

TA关注的人

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