自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++ STL容器底层实现

STL底层数据结构实现C++ STL 的实现:1.vector 底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(dou...

2019-07-10 16:55:38 235

转载 有return的情况下try catch finally的执行顺序

结论:1、不管有木有出现异常,finally块中代码都会执行;2、当try和catch中有return时,finally仍然会执行;3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;4、finally

2017-07-06 20:43:13 262

原创 C++11完成单生产者单消费者模式

#include #include #include #include #include #include static const int kItemRepositorySize = 10; // Item buffer size.static const int kItemsToProduce = 1000; // How many items we plan to

2017-07-03 16:44:27 512

转载 有名管道和无名管道的区别

1)无名管道:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。    单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。    数据的读出和写入:一个进程向管道中写的内容被管道另一端

2017-07-03 15:46:23 1880

转载 把《编程珠玑》读薄

作者:Hawstein出处:http://hawstein.com/posts/make-thiner-programming-pearls.html目录开篇啊哈!算法数据决定程序结构编写正确的程序编程中的次要问题程序性能分析粗略估算算法设计技术代码调优节省空间排序取样问题搜索堆字符串开篇具体化你的解决的问题。下面是A和B的对话。

2017-06-27 10:45:05 541

转载 tcp连接关闭详解和注意事项

状态分析2.1 FIN_WAIT1这个状态在实际的工作中很少见。主动方调用close函数关闭连接后立刻进入FIN_WAIT1状态,此时只要收到对端确认ACK后马上会进入FIN_WAIT2状态。因为对端确认ACK是TCP协议栈自己控制的,所以很快就会发出。出现场景:主动方等待ACK过程中网络断掉了,导致长时间收不到ACK,主动方就会停留在CLOSE_WAIT1状态上(超时时间:一般默

2017-06-21 11:59:19 479

原创 网络协议常用的端口号

ftp-data            20/tcp               FTP, dataftp                21/tcp              FTP. controltelnet           23/tcp smtp            25/tcp               Simple Mail Transfer Protocolt

2017-06-20 09:41:48 757

转载 Linux中的fork()详解

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进

2017-05-11 21:52:29 226

转载 迭代器失效问题——小心使用erase()

删除指定元素:for (auto it = vec.begin(); it != vec.end(); ) {  if (*it ==3)  {   it = vec.erase(it);  }  else  {   it++;  } } for (int i=0; i {  if (vec[i] == 3)  {   std

2017-05-11 21:31:40 808

原创 Leetcode 10. Regular Expression Matching

class Solution {public: bool isMatch(string s, string p) { if(p.empty())return s.empty(); bool T[p.size()+1][s.size()+1]; for(int i=0;i<=p.size();i++){ for(int

2017-05-04 21:24:36 224

转载 系统设计面试题分析

系统设计面试题分析应届生在面试的时候,大公司偶尔也会遇到一些系统设计题,而这些题目往往只是考一下你的知识面,或者对系统架构方面的了解,不会涉及编码。很多人感觉难以应对这样的题目,也不知道从何说起,在本文中,总结了回答这类题目需要哪些基础知识,以及怎样使用这些知识回答这些问题。在正式介绍基础知识之前,先罗列几个常见的系统设计相关的笔试面试题:(1)(百度)要求

2017-05-03 10:04:39 894

原创 不使用temp变量来交换两个值??该使用异或吗?

通常碰上这种问题,大多是在c++面试中,通常的答案有使用异或来实现,比如如下代码:反转字符串"abcde"为"edcba"{ char *begin = str; char *end = str+n-1; while(begin<end){ *begin^=*end; *end^=*begin; *begin^=*end;

2017-05-02 16:15:44 677

原创 京东2017暑期实习生招聘面经(一面、二面)

京东(共两面,每面一小时):1.项目2.每隔两位反转单链表节点3.有序数组旋转后查找4.stl容器知道哪些,说说原理5.map底层实现,它和hashtable的区别6.红黑树与一般二叉树区别,怎么旋转7.如何确定hash函数。二面.1.项目,讲讲爬虫框架,写一个正则表达式匹配ip2.写个快排3.一致性哈希4.stl内存分配,迭代器原理,5

2017-04-18 18:35:28 4047

原创 腾讯2017暑期实习生OMG事业群一面面经

总结 主要问简历 1.复制构造函数什么时候需要重写2.多进程同步方式,多线程同步方式3.两道编程题(数学问题)大数据下点集里最短距离的两点,优化时间(邮局问题,当时忘了…)4.c++11里并发处理的优势5.以腾讯视频为例讲后台的开发大概架构6.stl的局限性7.分布式服务器负载均衡策略8.会不会linux开发 会不会数据库(不会)

2017-04-17 19:35:25 2596

原创 C++中的异常安全、以及copy_and_swap

参考effective c++条款29可知,C++中的异常安全提供以下三个保证之一:基本承诺: 如果异常被抛出,应该保证函数中的状态还是可控的,也就是说当前函数内没有任何对象或者数据结构被破坏,仍然是合法的状态。强烈保证: 如果异常被抛出,函数的内部各个状态应该和发生异常之前的状态相同(类似于回滚了状态);不抛掷异常保证: 该函数不发生异常。其中强烈保证往往

2017-04-08 21:46:28 411

转载 c++单继承、多继承、菱形继承内存布局(虚函数表结构)

单继承:只有一个基类和一个派生类class Base{public: virtual void fun1() { cout "Base::func1()" << endl; } virtual void fun2() { cout "Base::func2()" << endl; }private:

2017-04-05 22:06:15 638

原创 利用STL中的partition完成快排

学习《STL源码剖析》p354时,发现STL中已有partition函数,这不禁让人联想到c语言实现的快排:int Partition(int k[], int low, int high){ int point; point = k[low]; while( low < high ) { while( low = point ) { high--; } swa

2017-04-03 18:30:46 1943

转载 HTTP 1.1与HTTP 1.0的比较

HTTP 1.1与HTTP 1.0的比较一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是

2017-03-31 16:57:35 168

原创 从十七年蝉谈起——hashtable的表格大小为什么要选择质数

十七年蝉,同翅目。北美洲一种穴居十七年才能化羽而出的蝉。它们在地底蛰伏17年始出,尔后附上树枝蜕皮,然后交配。雄蝉交配后即死去,母蝉亦于产卵后死。科学家解释,十七年蝉的这种奇特生活方式,为的是避免天敌的侵害并安全延续种群,因而演化出一个漫长而隐秘的生命周期。这是百度百科里关于十七年蝉的介绍,十七年蝉是一个非常奇怪的蝉类,它的生命轮回周期是13年或者17年这样的质数年份。

2017-03-30 17:12:37 1458 1

原创 各种排序算法稳定性比较

排序算法稳定性所谓稳定性是指待排序的序列中有两元素相等,排序之后它们的先后顺序不变.假如为A1,A2.它们的索引分别为1,2.则排序之后A1,A2的索引仍然是1和2.稳定也可以理解为一切皆在掌握中,元素的位置处在你在控制中.而不稳定算法有时就有点碰运气,随机的成分.当两元素相等时它们的位置在排序后可能仍然相同.但也可能不同.是未可知的.另外要注意的是:算法思想的本身是独立于编程语言的,

2017-03-30 10:54:02 480

转载 使用vector::reserve来避免不必要的重新分配

关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。) 对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的倍数。在大部分实现中,vector和str

2017-03-22 22:56:39 281

原创 C++任意进制转任意进制的转换函数实现

作为一个半路出家的C/C++开发者,平日里最讨厌使用C++处理字符串以及处理类型转换的问题,不甚其烦。今天在做CVTE的笔试题的时候又遇到了进制转换 因此在这里对进制转换做一个总结吧。C++内置的itoa是非常强大的,能够将十进制的int型转换成任意进制的字符串输出,利用这一点,实际上任意进制的互相转换利用itoa以及设计一个函数来实现任意进制-》十进制的组合即可。。PS:

2017-03-22 21:38:26 9667

转载 计算机网络常见面试题

1.      OSI,TCP/IP,五层协议的体系结构OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。五层协议(5层):物理层、数据链路层、网络层、运输层、应用层。每一层的作用如下:物理层:激活、维持、关闭通信端点之间的机械特性、电气特性、功能

2017-03-19 09:12:14 205

原创 为什么需要内存对齐?

对齐原因大部分的参考资料都是如是说的:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。

2017-03-17 15:53:50 332

转载 C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

经常看到uboot里面有清bbs段.一直都不明白,bbs段是什么东西,为什么要清,有什么作用. 还有其他段,都是些什么关系。C语言中总体来说,分两种情况:1.编译出来可执行文件放在存储盘上(硬盘),                                             2.在内存上运行的时候的段.第1种情况:比如.a.out:有代码段(text)

2017-03-17 09:51:18 413

原创 C++内存空间区域

程序运行时,内存分为堆区、栈区、代码区、全局区栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等.例如: 参数buf,参数bufsize和size都是存放在栈区.当函数执行完毕的时候,自动释放堆区一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收全局区(静态区)全局变量和静态变量存放在此. 里

2017-03-17 09:34:04 192

原创 随想

今天的自己似乎有点浮躁,实验室老师安排了不少事情给我,一方面自己还要忙着毕业设计,一方面还要准备找工作的知识梳理,感觉身体被掏空。。。不懂的东西太多,仿佛抛弃了从很久之前就开始注重积累的自己。。。有点急功近利,嗯。希望自己冷静一下

2017-03-09 22:56:06 176

转载 fopen与open的区别

如题,看到好多调用设备文件的程序都是用的open函数,难道用fopen不可以吗?主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数? 第 1 楼    tent8()2006-8-26 17:53:47得分:2   fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核apilinux中的系统函数是o

2017-03-09 11:22:38 296

原创 Leetcode 102. Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 2

2017-03-07 16:11:13 217

原创 编译器自动优化——为什么我的C++编译器不调用拷贝构造函数了?

今天在学习《深入理解C++11》中关于移动构造函数的内容时,发现了这么一个问题:#include #include #include #include #include #include using namespace std;class HasPtrMem{public: HasPtrMem() :d(new int{0}) { cout << "Constrcut"

2017-03-06 17:24:12 980

原创 通过bitset输出二进制数

做到笔试题时,难免会有需要将数字的二进制输出的情况,通过STL中的bitset我们可以很轻松地完成这个目标。 有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了st

2017-03-06 16:34:09 5162

转载 C++特殊成员变量(静态、常量、引用)的初始化方法

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括:1.引用2.常量3.静态4.静态常量(整型)5.静态常量(非整型)常量和引用,必须通过参数列表进行初始化。静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末。参考下面的代码以及其中注释

2017-03-06 16:09:23 358

原创 名企笔试:好未来2017秋招笔试(连续最长的数字串)

读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。输入例子:abcd12345ed125ss123456789输出例子:123456789

2017-03-05 22:10:49 471

原创 STL中各个容器的实现基本原理以及互相依赖

STL中一共拥有六大组件:1.算法 2.迭代器 3.容器. 4.仿函数 5.适配器(配接器)6.空间配置器通过阅读侯捷版本的《STL源码剖析》可以知道,STL的实现也是由基本的数据结构来完成的容器大概可以分为关联型容器和序列型容器,序列型容器有vector,list,deque,queue,stack,slist,heap,priority_queuevecto

2017-03-05 20:28:48 1001

转载 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)

转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179    一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到

2017-03-05 16:42:46 168

转载 Bloom Filter(布隆过滤器)的概念和原理

Bloom filter  适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集  基本原理及要点:  对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到

2017-03-03 15:36:52 241

转载 LFU与LRU的不同

LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

2017-03-03 11:30:09 235

原创 阿里巴巴2017暑期实习生招聘面经

此篇博客实时更新。。。希望最后能够顺利拿到offer2017/3/2电话面试第一轮阿里的效率果然快。。投简历第五天,系统开放第二天就打来了面试电话。面试官非常有礼貌给人感觉很好,上来先介绍了一下他们部门,随后就是我的自我介绍了,先是讲了讲项目,随后问了问我本科、研究生学习的课程,问的知识点如下:1、缓存的实现原理,缓存的效率(有没有缓存效率变化有多大)2、局部性原理

2017-03-02 19:53:16 419

原创 服务器通讯——短连接和长连接

解释1所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差,   所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接 解释2长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。   而短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。

2017-03-02 10:38:57 1238

原创 求解最长公共子序列问题(LCS)

刷leetcode一直没做到大名鼎鼎的LCS问题,也不明白LCS具体是什么问题,直到做到去年腾讯笔试的一道编程题:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000. 输出描述:

2017-02-27 21:46:10 364

空空如也

空空如也

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

TA关注的人

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