- 博客(531)
- 资源 (7)
- 收藏
- 关注
原创 2020届秋招面试总结
2019年秋招算是告一段落了,从3月份找实习开始到现在也有大半年了,个人感觉秋招就是一个不断积累经验、提升自己的过程,简单总结下就是:基础、算法、项目、实习和表达能力。一、个人基本情况 本科双非,硕士末流985,本硕都是非科班,电子通信相关专业。个人比较爱折腾,属于闲不下来的那种,本硕阶段有两次实习经历和两个大的项目经历,还有若干比赛经历,实习和比赛都不是TOP级别,但基本也算是比上不足...
2019-10-24 15:10:43 3740 13
原创 面试中常见的智力题
一、提灯过桥问题 题目:小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?小明和小明弟弟过桥,需要花费3秒(小明弟弟慢,花3秒),计T1 = 3秒,总用时TC=3秒;小明回来,需要花费1秒,记T2...
2019-05-26 20:42:36 14093 6
原创 Linux系统编程中重要的工具和命令
一、硬盘和内存相关指令(1)df df命令作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间。// 命令参数:df -a:--all,显示所有的文件系统,包括虚拟文件系统。 df -B:--block-size,指定单位大小。比如1k,1m等。 df -h:--human-readable,以人们易读的GB、MB、KB等格式显示。 df -...
2019-05-05 15:23:04 852 1
原创 Linux系统相关的基础问题(空间、内存、库、链接、环境变量)
一、用户与内核1、用户空间与内核空间 4G的进程地址空间被人为的分为两个部分–用户空间与内核空间。用户空间从0到3G(0xc0000000),内核空间占据3G到4G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间。 2、用户态与内核态 内核态: CPU可以访问内存所...
2019-04-28 22:11:51 690
转载 std::move原理实现与用法总结
文章目录一、左值与右值二、左值引用和右值引用1、std::move简介2、std::move详解3、std::move的优点 右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从...
2019-03-09 21:42:59 15806 2
转载 从输入URL到页面加载完成发生了什么?
文章目录一、URL二、缓存三、DNS域名解析四、TCP连接五、浏览器向服务器发送HTTP请求六、浏览器接收响应七、页面渲染八、关闭TCP连接或继续保持连接 1. 浏览器的地址栏输入URL并按下回车。 2. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期。 3. DNS解析URL对应的IP。 4. 根据IP建立TCP连接(三次握手)。 5. HTTP发起请求。 6. 服务器处理请求...
2018-12-09 19:33:45 673
原创 线程池和内存池
文章目录一、线程池1、线程池的概念2、线程池的组成部分3、线程池的流程4、线程池的Demo5、线程池的应用二、线程池的惊群效应1、惊群效应的概念2、惊群效应存在的问题3、线程池的惊群效应4、怎么判断发生了惊群5、如何解决惊群效应三、内存池1、内存池的概念2、内存池的流程和设计3、内存池的Demo4、内存池的特点四、线程池和内存池的相关问题1、线程池大小应该设置为多少?2、线程池中如果有一个线程出现...
2018-11-25 15:40:24 1730 1
原创 select、poll、epoll总结
一、select总结 select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。【优点】:select()的可移植性...
2018-11-08 16:37:53 1391
原创 epoll原理详解及epoll反应堆模型
设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux2.4版本以前,...
2018-11-08 15:40:03 109748 24
原创 TCP协议详解(TCP报文、三次握手、四次挥手、TIME_WAIT状态、滑动窗口、拥塞控制、粘包问题、状态转换图)
文章目录一、TCP报文二、三次握手三、四次挥手四、TIME_WAIT状态五、connect()、listen()和accept()三者之间的关系六、三次握手、四次挥手总结七、滑动窗口(流量控制)八、拥塞控制九、粘包问题十、TCP状态转换图一、TCP报文【重要的字段】:序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记;确认序号:Ack序号...
2018-10-28 16:36:33 20571 13
转载 网络协议入门
我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP协议( 族 ),它们对电脑如何...
2018-10-15 15:21:22 773
转载 Linux内核的五大模块
一、进程调度模块 Linux以进程作为系统资源分配的基本单位,并采用动态优先级的进程高级算法,保证各个进程使用处理机的合理性。进程调度模块主要是对进程使用的处理机进行管理和控制。【进程创建】: 在Linux环境编程时,一般采用fork()/vfork()函数(fork 是 创建一个子进程,并把父进程的内存数据copy到子进程中;vfork是 创建一个子进程,并和父进程的内存数据shar...
2018-10-07 13:32:59 9313 1
原创 多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)
一、同步与互斥的概念 现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:都需要访问/使用同一种资源;多个任务之间有依赖关系,某个任务的运行依赖于另一个任务。【同步】: 是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以...
2018-10-06 14:06:34 83914 18
转载 Linux系统启动过程
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 1. 内核的引导; 2. 运行 init; 3. 系统初始化; 4. 建立终端 ; 5. 用户登录系统。()() () ()【Note】:...
2018-10-04 19:57:43 525
原创 Make和Makefile
Makefile是一个神奇的东西,有了它只需一个make命令就可以让源文件按你的规则编译成你所想要的程序。非常简单,方便。对于Keil,VS等IDE,一般只需点一下绿色的三角按钮,就可以完成编译。但具体内部是怎么实现编译的?改动文件后如何只编译改动的文件?学完makefile就可以掌握这些东西,从而对系统编程会有更深层次的理解。 1、demo的目录结构2、使用Makefile...
2018-09-02 10:37:08 1436
原创 gcc/g++ 编译器
一、单个源文件生成可执行程序g++ -o helloworld helloworld.cpp$ ./helloworld //运行hello, world二、多个源文件生成可执行程序1、生成共享库和静态库(1)生成目标文件(.o)g++ -c say_hello.cpp say_goodby.cpp -I "../inc" // -I表示编译程序按照-I指定的路...
2018-09-01 17:21:06 1747
原创 Vim编辑器
Vim常用配置set nusyntax onset autoindentset smartindentset shiftwidth=4set tabstop=4set softtabstop=4set expandtabset showmatchhi MatchParen ctermbg=Yellow guibg=lightblue //更改vim高亮括号匹配颜色ino...
2018-09-01 16:59:42 362
原创 四个强大的linux文本处理工具(find、grep、sed、awk)
一、find 因为Linux下面一切皆文件,经常需要搜索某些文件来编写,所以对于linux来说find是一条很重要的命令。linux下面的find指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能很强大。在不指定查找目录的情况下,find会在对整个系统进行遍历。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时...
2018-09-01 16:50:50 2421
原创 C++11多线程知识点总结
一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多个可以同时运行的线程。通俗理解:例如你打开微信就是打开一个进程,在微信里面和好友视频聊天就是开启了一条线程。两者之间的关系: 一个进程里面可以有多条线程,至少有一条线程。 一条线程一...
2018-07-27 11:39:42 4777 3
原创 平时刷题遇到的一些常见问题
1、头文件#include <bits/stdc++.h>using namespace std;int main(int argc, char const *argv[]){ return 0;}2、输入多组数据:while(cin &
2018-05-26 10:52:48 830
转载 sizeof用法总结
sizeof用法总结以下运行环境都是一般的,在32位编译环境中1、基本数据类型的sizeofcout<<sizeof(char)<<endl; 结果是1cout<<sizeof(int)<<endl; 结果是4cout<<sizeof(unsigned int)<<endl; 结
2017-10-02 20:36:13 580
转载 const、typedef和#define的用法与区别
目录一、typedef的用法二、#define的用法三、const的用法四、typedef与#define的区别五、typedef的四个用途和两个陷阱一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int IN...
2017-09-28 21:26:33 2947 3
原创 Thread参数传递问题
一、类的普通成员函数作为Thread的参数class threadtest{private:public: threadtest() { } ~threadtest() { } // 类的普通成员函数 void test_fun1(int num) { for (int i = 0; i < num; i++) cout << "thread test1" << endl; ret
2020-07-04 17:34:16 3155
原创 cmake知识点总结
CMake的所有的语句都写在一个叫 CMakeLists.txt 的文件中。当 CMakeLists.txt 文件确定后,可以用 ccmake 命令对相关的变量值进行配置。这个命令必须指向 CMakeLists.txt 所在的目录。配置完成之后,应用 cmake 命令生成相应的 makefile。一、项目的目录结构src:源文件inc:头文件proto:proto文件log:项目产生的日志文件build:在此文件夹中构建项目,不污染源文件bin:生成的可执行文件build.sh:cma
2020-07-04 16:17:04 1687
原创 vscode远程开发环境搭建
文章目录一、Windows端的环境配置 本地主机需要安装ssh-client,可以使用git安装,步骤如下:先安装gitbash,并添加到环境变量,F:\gitbash\Git\usr\bin进入.ssh文件,如果文件不存在,则执行“mkdir ~/.ssh”新建文件cd ~/.ssh配置全局的name和email,这里是的你github的name和email:git config --global user.name "用户名"git config --global user.ema
2020-07-04 16:15:40 2056
原创 protobuf编码和存储方式详解
文章目录一、消息结构二、Wire Type = 0时的编码和存储方式2.1 编码方式2.1.1 Varints编码2.1.2 ZigZag编码2.2 存储方式三、Wire Type = 2时的编码和存储方式3.1 编码方式3.2 存储方式四、Wire Type = 1&5时的编码和存储方式4.1 编码方式4.2 存储方式一、消息结构【结论先行】:protobuf将消息里的每个字段进...
2020-04-22 21:23:12 5295
原创 protobuf语法风格
文章目录一、代码风格二、文件格式三、包四、消息类型和字段五、repeated字段六、枚举类型七、服务一、代码风格每一行的代码长度不要超过80。使用两个空格进行缩进。二、文件格式 文件命名应该采用蛇形命名法(即用下划线连接),如:lower_snake_case.proto。所有文件应以下列方式排列:License header (if applicable)File ...
2020-04-22 10:35:10 1281
原创 protobuf语法详解
文章目录一、包(package)二、选项(option)三、消息类型(message)3.1、常规消息类型3.1.1、字段修饰符3.1.2、字段类型3.1.2.1、标量类型3.1.2.2、枚举类型3.1.2.3、Any类型3.1.2.4、oneof类型3.1.2.5、map类型3.1.3、默认值说明3.1.4、标识号3.2、多个消息类型3.3、嵌套消息类型3.4、更新消息类型四、RPC服务(ser...
2020-04-22 10:32:13 12774 2
原创 protobuf简介
文章目录一、protobuf的定义二、protobuf的优缺点1、优点2、缺点三、protobuf的使用流程1、protobuf在Linux下的安装过程2、定义proto文件3、protoc编译器4、调用接口进行序列化、反序列化四、protobuf的应用场景五、protobuf与json和XML的对比一、protobuf的定义 protobuf是一种用于序列化结构数据的工具,实现数据的存储与...
2020-04-22 10:29:01 4307
原创 Boost库的安装与使用
一、下载Boost库 下载地址:https://www.boost.org/users/download/二、编译Boost库cd boost_1_72_0# 修改Python2.7的路径,改为:/usr/include/python2.7vim project-config.jam./bootstrap.sh --with-python=python2.7# 将boost库相关文...
2019-12-28 21:15:09 1038
转载 UML各种类图总结
文章目录一、用例图二、类图1、泛化2、实现3、关联4、聚合5、组合6、依赖7、各种类图关系三、对象图四、状态图五、活动图六、序列图-时序图1、生命线2、同步消息3、异步消息4、注释5、约束七、协作图八、构件图九、部署图一、用例图 用例图主要回答了两个问题:1、是谁用软件。2、软件的功能。从用户的角度描述了系统的功能,并指出各个功能的执行者,强调用户的使用者,系统为执行者完成哪些功能。二、...
2019-12-28 17:36:05 4012 3
转载 接口隔离模式之适配器模式(Adapter)
文章目录一、概念二、动机三、适配器模式四、类图结构五、要点总结一、概念 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。—《设计模式》Gof二、动机 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既...
2019-12-24 19:32:18 770
转载 接口隔离模式之代理模式(Proxy)
文章目录一、概念二、动机三、源代码讲解四、使用代理模式进行改进五、类图结构六、要点总结一、概念 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。—《设计模式》Gof二、动机 在面向对象系统中,有些对象由于某种原因(比如对象创建开销很大或者某些操作需要安全控制或者需要进程外访问等),直接访问会给使用者、或者系统结构带来很多的麻烦。 如何在不失去透明操作对象的同时来管理...
2019-12-24 17:24:54 907
转载 对象性能模式之单例模式(Singleton)
文章目录一、概念二、动机三、单例模式的实现四、类图结构五、要点总结一、概念 保证一个类仅有一个实例,并提供一个该实例的全局访问点。—《设计模式》GoF二、动机 在软件系统中,经常有这样一个特殊的类,必须保证它们在系统中只存在一个示例,才能确保他们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?工厂模式绕过new是为了避开紧耦合,单例模式避开ne...
2019-12-24 17:10:10 613
转载 对象创建模式之抽象工厂模式(Abstract Factory)
文章目录一、概念二、动机三、源代码讲解四、使用抽象工厂模式进行改进五、类图结构六、要点总结一、概念 提供一个接口,让该接口负责创建一系列“相关或相互依赖的对象”,无需指定它们具体的类。 —《设计模式》Gof二、动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new...
2019-12-24 16:59:22 669
转载 对象创建模式之工厂方法模式(Factory Method)
文章目录一、概念二、动机三、源代码讲解四、使用工厂方法模式进行改进五、类图结构六、要点总结一、概念 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 —《设计模式》Gof二、动机 在软件系统中,经常面临这创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如...
2019-12-24 16:47:13 611
转载 单一职责模式之桥模式(Bridge)
文章目录一、概念二、动机三、源代码讲解四、使用桥模式进行改进五、类图结构六、要点总结一、概念 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 ——《设计模式》GoF二、动机 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引...
2019-12-24 16:35:50 577
转载 win10关掉扩展屏幕后,打开原来在扩展屏幕上的程序后主屏幕找不到怎么办?IIS扩展屏后断开扩展屏主屏看不到
一般可以这样操作,按Alt+空格,然后按M,然后用上下左右键把窗口移动到能看到的地方,再按回车。有些第三方的软件可能不能用,大部分都可以这样做。...
2019-12-24 12:28:39 5872
visio2007教程
2018-07-30
凸优化经典书籍(Stephen Boyd和Lieven Vandenberghe)
2018-07-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人