自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 51 上一个排列、下一个排列

给定一个整数数组来表示排列,找出其上一个排列。 样例 给出排列[1,3,2,3],其上一个排列是[1,2,3,3] 给出排列[1,2,3,4],其上一个排列是[4,3,2,1]  思路: 1、上一个排列就是所有全排列按照升序排列后的上一个排列 2、如数字排列63624578,其上一个排列为6...

2018-08-20 18:08:31 436 0

转载 socket阻塞与非阻塞,同步与异步、I/O模型

 https://blog.csdn.net/hguisu/article/details/7453390

2018-08-16 20:52:41 162 0

原创 服务器编程框架

虽然服务器种类很多,但编程框架基本相同,不同之处在于逻辑处理        I/O处理单元是服务器管理客户连接的模块。完成以下工作:                  等待并接受新的客户连接,接收客户数据,将服务器响应数据返回给客户端                  但数据的收发不...

2018-08-16 20:32:34 189 0

原创 高性能服务器程序框架

服务器主要包括如下三个主要模块: I/O处理单元,四种I/O模型和两种高效事件处理方式 逻辑单元,逻辑单元的高效并发方式 存储单元,服务器的可选模块 服务器模型 C/S模型:所有客户端都通过访问服务器来获取所需的资源 C/S模型的运行逻辑: 服务器启动后,首先创建一个或多个监听s...

2018-08-16 20:10:28 161 0

原创 两种高效的事件处理方式

Reactor模式 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元) 除此之外主线程不做其他实质性的工作,读写数据以及接受新的连接,以及处理客户请求均在客户线程中完成。 使用同步I/O模型(以epoll_wait为例)实现的Re...

2018-08-16 19:45:50 192 0

原创 Linux操作系统基础

https://blog.csdn.net/syt8945/article/details/50838679

2018-08-15 12:28:18 91 0

转载 内存分配的三种方式

把所有的点都说到,才能说明你有足够的项目经验,在实际工作的时候不会因为一些小问题而产生一些严重的bug,也证明了你有实力胜任这份工作。 要回答这个问题,我们必须先要理解C++的内存管理方式,需要站在内存四区的角度去审视一下代码,这样整个理解了内存分配的方式,回答的时候就只需要注意一些细节了。写一...

2018-08-14 14:57:58 6593 0

原创 智能指针

智能指针是行为类似于指针的类对象。 为什么需要智能指针?  为了避免当系统异常退出的时候避免资源泄漏(内存) 创建指向str的指针ps。有一个问题。如果函数异常终止,则本地变量将从栈内存中删除——因此ps占据的内存将被释放,如果ps指向的内存也被释放了,则就不需要后面的智能指针了。 或者如果...

2018-08-14 11:08:30 85 0

转载 c++线程中的几种锁

这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。 线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。 1、互斥锁 互斥锁用于控制多个线程对他们之间共享资源互斥...

2018-08-12 20:20:42 127 0

转载 有关线程池的面试题

 (1)因为我的项目中写到一个项目:简单线程池的实现,那么面试官就问我“如何保证线程池是线程安全的”。 首先给大家普及下线程池的知识。我写的线程池是使用POSIX写的。线程池整个项目中包括两个类:一个是Task类,用于描述执行一个任务的方法(一个函数)和执行这个任务所需要的参数(函数的参数)。另...

2018-08-12 20:17:19 6024 0

原创 STL之vector

容器、结构与分类  容器  :所有的容器都维护着两个迭代器,分别指向头和尾 STL容器是将运用最广的数据结构实现出来 根据数据在容器中的排列特性,将这些数据结构分为序列式和关联式两种 序列式容器(advlsqp)array\deque\vector\list\queue\priority-...

2018-08-12 16:31:22 425 0

原创 STL之(底层哈希表)hash_set、hash_multiset、hash_map,hash_multimap

hash_set与hash_multiset: 实值就是键值 以hashtable为底层机制,所以几乎所有的hash_set行为,都是转调hashtable的操作行为。   与set、multiset相比,hash_set、hash_multiset没有自动排序功能。   hash_s...

2018-08-12 16:20:07 180 0

原创 STL之(哈希表)hashtable

容器hashtable(哈希表):另外一种底层机制 其基本原理是:使用一个下标范围比较大的数组来存储元素。把关键字Key通过一个固定的算法函数即所谓的哈希函数(散列函数)转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的list空间...

2018-08-12 16:07:30 2207 0

原创 STL之(底层红黑树)set、multiset、map、multimap

set、multset容器 set/multiset是以rb_tree为底层机构,因此有元素自动排序的特性。 排序的依据是key,而set/multiset的value和key合一:value就是key,其中value由key和data组成。 set/multiset提供遍历操作和迭代器,按...

2018-08-12 15:55:54 1458 0

转载 STL之关联式容器----红黑树

标准STL关联式容器分为set(集合)和map(映射表)两大类以及这两大类的衍生体multiset(多键集合)和multimap(多键映射表),这些容器的底层机制均以RB-tree红黑树完成。它也是一个独立容器,但不开放给外界用 不在标准规格之列的关联式容器hash table(散列...

2018-08-12 10:13:45 313 0

原创 STL之stack、queue、priority_queue

栈的底层结构: 以缺省情况下的deque作为其底层容器(封闭底端出口和入口,利用deque的成员函数完成stack成员函数的定义),list也可以作为其底层容器 一种先进后出的数据结构,只能在最顶端新增、移除、取出元素。即不能遍历,所以stack没有迭代器      队列的底层结构:...

2018-08-12 09:09:33 90 0

转载 STL面试题

1、说说std::vector的底层(存储)机制。(如何实现vector) vector维护的是一个连续线性空间(动态数组),它以两个迭代器start和finish分别指向配置得来的连续空间中目前已被使用的范围(注意finish指向的是最后一个元素后面那个元素)并以迭代器end_of_stora...

2018-08-11 22:34:30 189 0

原创 STL容器迭代器失效情况分析、总结

当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此我们为了避免危险,应该获取insert或者erase返回的迭代器,以便用重新获取的新的有效的迭代器进行正确的操作  iter=vec.insert(iter); iter=v...

2018-08-11 22:27:42 4994 0

原创 STL之deque

deque的底层实现 vector是单向开口的连续线性空间,deque则是一种双向开口的由一段一段的定量连续空间组成,即可以在头尾两端分别做元素的插入和删除操作。一旦有必要在deque的前端或尾端增加新空间,便配置一段定量连续空间而我们也知道vector的头部操作效率非常差。   dequ...

2018-08-11 22:05:19 307 0

原创 STL之list

list的设计 list由三部分构成:list节点、list迭代器、list本身 特点:每次插入或删除一个元素,就配置或释放一个空间。对空间的运用不浪费 对于任何位置的元素插入或元素移除,list永远是常数时间 list节点 list是一个双向链表,所以其list结点中有前后两个指针,当...

2018-08-11 20:25:37 57 0

原创 有关笔试题,输入输出格式的几个特殊例子

题目描述 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M &l...

2018-08-11 18:33:35 451 0

原创 剑指offer 1 赋值运算符函数

题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数 class CMyString { public: CMyString(char*pData=NULL); CMyString(const CMyString&str);//拷贝构...

2018-08-09 21:15:22 59 0

原创 剑指offer 47 礼物的最大价值

题目描述  在一个 m*n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定价值(大于 0)。从左上角开始拿礼物,每次向右或向下移动一格,直到右下角结束。给定一个棋盘,求拿到礼物的最大价值。例如,对于如下棋盘 1 10 3 8  12 2 9 6  5 7 4 11  3 7 16 5  礼物的...

2018-08-09 19:59:04 277 0

原创 剑指offer 48 最长无重复字符的子字符串

给定一个字符串,请找出其中无重复字符的最长子字符串。 样例 例如,在"abcabcbb"中,其无重复字符的最长子字符串是"abc",其长度为3。 对于,"bbbbb",其无重复字符的最长子字符串为"b",长度为1...

2018-08-09 18:19:25 146 0

原创 剑指offer 44 数字序列中某一位的数字(类似题43)

题目描述         数字以01234567891011121314…的格式序列化到一个字符序列中。在这个序列中,第5位是5(从0开始),第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。 分析: 最直观的方法就是从0开始逐一枚举每个数字。每枚举一个数字,就求出该数字...

2018-08-09 16:56:58 282 0

原创 剑指offer 把数字转换成字符串(动态规划)

题目:给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,·······,25翻译成“z”。一个数字可能有多个翻译。例如,12258有5种不同的翻译,分别是“bccfi”、"bwfi"、"bczi"、"mcfi"...

2018-08-08 22:37:41 271 0

转载 面试题:C++有了malloc/free,为什么还需要new、delete?

1、面试宝典面试题(P81):C++有了malloc/free,为什么还需要new、delete? malloc与free是C、C++语言的标准库函数,new/delete是C++的运算符。他们都用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,只用malloc/free无法满足动态...

2018-08-08 11:12:39 142 0

原创 剑指offer 不用加减乘除做加法

题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。 分析: (1)十进制加法分三步:(以5+17=22为例)...

2018-08-06 19:43:26 76 0

原创 剑指offer 求1+2+3+......+n

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 class Solution { private: int result=0; public: int Sum_Solution(in...

2018-08-06 16:21:23 77 0

转载 IO多路转接—select 、poll、epoll

多路(多个文件描述符)I/O(输入输出)转接(将多个文件描述符交给select监控) 调用select函数,直到描述符表中有一个描述符准备好进入I/O时,该函数才返回,通过select的返回值告知进程哪些描述符已经准备好进入I/O。 三种模型性能分析  select 1.select能监听...

2018-07-28 22:25:32 67 0

转载 Linux 线程同步的三种方法

线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 一、互斥锁(mutex) 通过锁机制实现线程间的同步。 初始化锁。在Linux下,线程的互斥量数据类型是pthread_mutex_t。在使...

2018-07-27 17:29:35 43 0

转载 Posix 信号量与System v信号量的区别

在回答这个问题之前,首先要先了解什么是Posix,什么又是System V。 简要的说,Posix是“可移植操作系统接口(Portable Operating System Interface )的首字母简写,但它并不是一个单一的标准,而是一个电气与电子工程学会即IEEE开发的一系列标准,它还是...

2018-07-27 16:31:01 209 0

转载 getenv、setenv函数(获取和设置系统环境变量) 与 环境变量

1、getenv()   函数名: getenv 功 能: 从环境中取字符串,获取环境变量的值 头文件: stdlib.h 用 法:char *getenv(char *envvar); 函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称...

2018-07-23 22:53:11 2095 0

转载 setsockopt用法详解

1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,size...

2018-07-22 22:21:14 95 0

转载 linux标准输入输出与重定向

1. 标准输入输出和错误    linux下使用标准输入文件stdin和标准输出文件stdout,来表示每个命令的输入和输出,还使用一个标准错误输出文件stderr用于输出错误信息。这三个标准输入输出系统缺省与控制终端设备相联系在一起。 因此,在标准情况下,每个命令通常从它的控制终端中获取输入...

2018-07-22 20:45:16 382 0

转载 深入理解计算机系统 实现一个小型web服务器

  1. Web基础 web客户端和服务器之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议)。一个web客户端(即浏览器)打开一个到服务器的因特网连接,并且请求某些内容。服务器响应所请求的内容,然后关闭连接。浏览器读取这些内容,并把它显示在屏幕上。 对于web客户端和服务器...

2018-07-22 11:28:03 394 0

转载 17 子集(递归)

描述 给定一个含不同整数的集合,返回其所有的子集 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 您在真实的面试中是否遇到过这个题?  是 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3],...

2018-07-21 15:46:18 193 0

转载 分段和分页

操作系统面试题:https://blog.csdn.net/hackbuteer1/article/details/6787354 一. 分页存储管理 1.基本思想     用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户...

2018-07-20 14:40:32 842 0

转载 156. 合并区间

描述 给出若干闭合区间,合并所有重叠的部分。 您在真实的面试中是否遇到过这个题?  是 样例 Given intervals => merged intervals: [ [ (1, 3), (1, ...

2018-07-19 22:48:20 84 0

转载 30. 插入区间

描述 Given a non-overlapping interval list which is sorted by start point. Insert a new interval into it, make sure the list is still in order and no...

2018-07-19 21:23:58 75 0

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