- 博客(73)
- 问答 (1)
- 收藏
- 关注

原创 STL
迭代器失效迭代器失效参考优秀博客总结:迭代器失效分三种情况考虑,也是非三种数据结构考虑,分别为数组型,链表型,树型数据结构。数组型数据结构:该数据结构的元素是分配在连续的内存中,insert和erase操作,都会使得删除点和插入点之后的元素挪位置,所以,插入点和删除掉之后的迭代器全部失效,也就是说insert(*iter)(或erase(*iter)),然后在iter++,是没有意义的。解决...
2020-03-24 23:21:54
157

原创 muduo知识点
C++中的RAII机制RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的...
2020-03-20 00:20:29
418

原创 C++知识点
C\C++static关键字的用法总结普通变量:静态变量只初始化一次,未初始化的静态变量会默认初始化为0。静态全局变量只在本文件可见,外部文件无法访问。而静态局部变量只在定义的作用域内可见,但他们的生存周期都是整个程序运行时期。静态函数主要是起到函数的隐藏作用,static修饰的函数只允许在当前文件中使用,在其他文件中无法找到该函数的地址,比如在一个工程中创建两个.cpp(.c)文件,mai...
2020-03-18 08:52:41
235

原创 http服务器原理
web服务器工作原理从零实现web服务器http协议简易教程http的url格式http协议的URL格式: http: //host[:port][abs_path] ,http表示使用http协议来进行资源定位;host是主机域名;port是端口号,一般有默认的;abs_path代表资源的路径。http请求报文和响应报文请求报文响应报文http协议的head和body...
2020-03-10 22:33:05
673

原创 网络编程
poll函数及简单服务器客户端编程当需要同时监听多个文件描述符时,就需要I/O复用函数,I/O复用函数有select、poll、epoll,今天主要使用poll函数。poll()接受一个指向结构’struct pollfd’列表的指针,其中包括了你想测试的文件描述符和事件。事件由一个在结构中事件域的比特掩码确定。当前的结构在调用后将被填写并在事件发生后返回。函数原型:#include<...
2020-03-05 23:45:59
170

原创 网络编程函数
新型网路地址转化函数inet_pton和inet_ntop这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构的二进制值。#include <arpe/inet.h>int inet_pton(int famil...
2020-02-28 14:39:08
241
原创 qq面经
操作系统有哪几种锁?1、信号量(Semaphore)信号量分为二元信号量和多元信号量,所谓二元信号量就是指该信号量只有两个状态,要么被占用,要么空闲;而多元信号量则允许同时被N个线程占有,超出N个外的占用请求将被阻塞。信号量是“系统级别”的,即同一个信号量可以被不同的进程访问。2、互斥量 (Mutex)和二元信号量类似, 唯一不同的是,互斥量的获取和释放必须是在同一个线程中进行的。如果一个线程去释放一个并不是它所占有的互斥量是无效的。而信号量是可以由其它线程进行释放的。3、临界区(Critical
2020-10-05 01:30:49
1239
原创 调试
多线程调试多线程与多进程调试:show follow-fork-mode(查看当前进程)set follow-fork-mode child(使程序进入子进程)gdb attach < pid >(将gdb挂到进程号为pid的进程上)attach pid想要击中断点程序得运行在当前进程中,可以先查看当前进程,若不在断点所在进程,设置进程show detach-on-fork (查看detach-on-fork模式)set detach-on-fork [on|off]( on:断
2020-09-28 22:29:24
383
原创 网易整理
程序运行过程,预处理,编译,汇编,链接首先对源文件进行预处理,这个过程主要是处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;然后进行编译,这个过程主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;最后进行汇编,这个过程比较简单,就是将对应的汇编指令翻译成机器指令,生成可重定位的二进制目标文件。以上就是编译的过程,下面主要介绍两种链接方式–静态链接和动态链接。静态链接是在形成可执行程序前,而动态链接的进行则是在程序执行时,下面来详细介绍这两种
2020-09-21 02:13:43
300
1
原创 es
elasticsearch分享笔记基本概念You know, for search (and analysis)基于Lucene的分布式全文搜索引擎•分布式文件存储•分布式(准)实时搜索引擎,每个字段都被索引并可被搜索•分布式(准)实时分析工具,聚合功能可以构建复杂数据摘要开箱即用。安装好ElasticSearch后,所有参数的默认值都自动进行了比较合理的设置,基本不需要额外的调整。包括内置的发现机制(比如Field类型的自动匹配)和自动化参数配置。天生集群。ElasticSearch默认
2020-09-15 21:33:43
333
原创 秋招记录
单例模式创建型模式( Creational Patterns )、结构型模式( Structural Patterns )和行为型模式( Behavioral Patterns )。懒汉式,核心代码:构造方法私有化,private。实例在用到的时候才去创建class Single {private: static Single *m_instance; Single(){ }; Single(const Single & other) {};public: static Sing
2020-09-10 14:37:45
632
原创 golang学习
golang的init函数,包初始化,变量初始化golang程序初始化先于main函数执行,由runtime进行初始化,初始化顺序如下:初始化导入的包(包的初始化顺序并不是按导入顺序(“从上到下”)执行的,runtime需要解析包依赖关系,没有依赖的包最先初始化,与变量初始化依赖关系类似,参见golang变量的初始化);初始化包作用域的变量(该作用域的变量的初始化也并非按照“从上到下、从左到右”的顺序,runtime解析变量依赖关系,没有依赖的变量最先初始化,参见golang变量的初始化);执行包
2020-07-20 16:18:55
192
原创 mysql
mysqlmysql left join(左联接) ,right join(右联接) ,inner join用法mysql left join(左联接) ,right join(右联接) ,inner join用法mysql> show create table EMPLOYEE \G;*************************** 1. row ***************************Table: EMPLOYEECreate Table: CREATE TABLE
2020-07-08 17:40:18
148
原创 http过程
http都有哪些方法:GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输数据给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。PUT: 传输数据,报文主体中包含文件内容,保存到对应URI位置。HEAD: 获得报文首部,与GET方法类似**,只是不返回报文主体,一般用于验证URI是否有效**。DELETE:删除文件,...
2020-04-30 21:29:07
597
原创 快手面经
堆和栈区别栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。堆栈是一个先进后出的数据结构,栈顶地址总是小于等于栈的基地址。区别2.1申请方式,栈由系统自动分配,堆需要程序员...
2020-04-25 09:35:00
1203
原创 http常见面试
HTTP报文是面**向**文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文:请求报文和响应报文。HTTP请求报文一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,...
2020-04-23 23:46:08
266
原创 剑指offer
创建链表判断是否是后序遍历class Solution { bool judge(vector<int>& a, int l, int r){ if(l >= r) return true; int i = r; while(i > l && a[i - 1] > a[r]) ...
2020-04-19 23:37:40
161
原创 面试记录
腾讯项目相关:http断开,返回给客户端什么?要看各种情况如何查看报文长度?如何查看头部长度?如何确定报文已经发送完毕?(粘包问题)为什么用优先队列,先进先出不行吗?优先队列线程安全问题压测?环境?几台机器?短连接,长连接怎么做到的?线程池满了怎么办?一次发送,再次发送怎么处理》recv函数返回大于0,小于等于0智能指针如何做到安全普通问题红黑树查找时间复杂度,哈希表复...
2020-04-16 23:21:52
172
原创 腾讯面经
进程与线程进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器...
2020-04-16 00:10:44
490
原创 操作系统
操作系统基本特征1. 并发并发是指宏观上在一段时间内能同时运行多个程序,而并行则指同一时刻能运行多个指令。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。操作系统通过引入进程和线程,使得程序能够并发运行。共享共享是指系统中的资源可以被多个并发进程共同使用。有两种共享方式:互斥共享和同时共享。互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问,需...
2020-04-15 00:39:35
332
原创 面经
单例模式参考链接作用:保证一个类只有一个实例,并提供一个访问它的全局访问点,使得系统中只有唯一的一个对象实例。应用:常用于管理资源,如日志、线程池实现要点:在类中,要构造一个实例,就必须调用类的构造函数,并且为了保证全局只有一个实例,需防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为private,同时阻止拷贝创建对象时赋值时拷贝对象,因此也将它们声明并权限标记为...
2020-04-09 18:41:03
583
原创 tcp知乎
tcp 知乎回答参考知乎其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。进行三次...
2020-04-08 21:33:33
239
原创 epoll使用框架
epoll的使用,包括一个经典通用框架for( ; ; ) { nfds = epoll_wait(epfd,events,20,500); for(i=0;i<nfds;++i) { if(events[i].data.fd==listenfd) //有新的连接 { ...
2020-04-02 15:40:50
219
原创 对象模型
别人的笔记汇总目录三种对象模型简单对象模型表格驱动对象模型C++对象模型c++额外成本与对象大小c++额外成本一个类的对象的内存大小包括:构造函数构造函数是否会自动生成1.包含有带默认构造函数的对象成员的类2.继承自带有默认构造函数的基类的类3.带有虚函数的类4.带有一个虚基类的类拷贝构造函数(探讨编译器的工作)定义拷贝构造函数的应用何时生成拷贝构造函数(类没有的话编译器生成)成员初始化队列(M...
2020-03-26 23:45:58
3343
原创 位运算_不用加减乘除做加法
不用加减乘除做加法思路:这题位运算还是背下来吧,毕竟位运算这种模拟加法用法基本就这题,很容易就忘掉。。。。。^ 亦或 ----相当于 无进位的求和, 想象10进制下的模拟情况:(如:19+1=20;无进位求和就是10,而非20;因为它不管进位情况)& 与 ----相当于求每位的进位数, 先看定义:1&1=1;1&0=0;0&0=0;即都为1的时候才为1,正好...
2020-03-18 10:12:31
125
原创 stringstream的用法
1. 概述 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。2. 用法转换将 int 类型转换为 string 类型( << >> 箭头指向谁表示向谁赋值)#include <string>#i...
2020-03-14 21:45:39
880
原创 求数组元素出现的个数
前菜本题和主站260 是一样的. 除了这个,主站还有136和137。 总共加起来本系列一共三道题。 三道题全部都是位运算的套路,如果你想练习位运算的话,不要错过哦~~异或的性质两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1异或的规律任何数和本身异或则为0任何数和 0 异或是本身异或满足交换律,a...
2020-03-13 20:08:05
406
原创 快速排序
int quickSort(int left, int right, int arr[]){ if(left >= right) return 0; int i = left, j = right, base = 0; base = arr[left]; while(i < j) { while(arr[i] < base && i < ...
2020-03-11 16:28:50
114
原创 树
二叉树的层次遍历题目描述: 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]分析:比层次遍历多的约束是按层,不同层的存在一个vector里,采用递归,递归的参数里面带有层数;递归...
2020-03-03 16:02:41
212
原创 c++ stack /queue/deque/string/vector/priotity/list函数
一:定义queue(要有头文件#include )queue q1;queue q2;二:基本函数back()返回一个引用,指向队列的最后一个元素。empty()函数返回真(true)如果队列为空,否则返回假(false)。front()返回队列第一个元素的引用。pop()函数删除队列的一个元素push() 在末尾加入一个元素size() 返回队列中元素的个...
2020-03-01 22:10:48
265
原创 海康相机项目
一个简单的改进方案是在服务器端使用多线程(或多进程)。多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他的连接。具体使用多进程还是多线程,并没有一个特定的模式。传统意义上,进程的开销要远远大于线程,所以如果需要同时为较多的客户机提供服务,则不推荐使用多进程;如果单个服务执行体需要消耗较多的CPU资源,譬如需要进行大规模或长时间的数据运算或文件访问,...
2020-02-29 00:05:43
547
5
转载 5种网络IO模型(有图,很清楚)
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不...
2020-02-28 23:35:16
206
转载 在Linux中使用VS Code编译调试C++项目(gcc/g++、Makefile入门、vs code)
在Linux中使用VS Code编译调试C++项目(gcc/g++、Makefile入门、vs code)
2020-02-25 16:22:25
607
原创 搜索回溯问题_滑动窗口
前言参考链接,有八皇后问题搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。如迷宫问题:进入迷宫后,先随意选择一个前进方向,一...
2020-02-24 21:20:26
364
空空如也
基于opencv人脸检测制作简易版faceu
2017-11-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人