2019腾讯后台开发详细面试流程

背景 2017年我毕业于某不知名二本院校,校招进入一安防企业; 从事于后台服务接入工作。期间一直不断的提高自己,终于在今年如愿以偿,获得腾讯后台开发岗位offer。因此想借此分享成长路上的思考与困难,以及腾讯面试的整个流程。同时在这里声明学历及出身并非有意突出自己。相反,我希望任何拥有机会,...

2019-03-25 14:06:05

阅读数 172

评论数 0

redis ADDSLOTS支持区间输入实现

背景         最近在阅读redis源码,发现redis集群应用情景时,添加slot命令ADDSLOTS只接受slot按个输入, 没有办法直接按区间分配。这样就存在一个不是很友好的问题,redis定义共有16384个slot,只有所有slot都分配有节点处理时,集群进入上线状态。相反,如果...

2019-01-27 23:37:39

阅读数 188

评论数 0

C++11 STL之vector实现深入剖析(下)

       上回我们分析了push_back函数。接下来我们来看下pop_back函数。递减_M_finish指针,然后析构最后一个对象,但是内存不会进行释放,即capacity接口返回值不变。这也说明了为何没有pop_front接口;倘若有,那么每一次调用都得将所有对象向前移动,vector不...

2019-01-05 00:27:46

阅读数 83

评论数 0

C++11 STL之vector实现深入剖析(上)

概述         vector是一种线性容器,因此它的所有成员都是按照严格的线性排序。Vector是通过动态数组来实现的,因此它的成员都是存放在连续的内存中。所以我们不仅可以通过迭代器去遍历成员,还可以通过成员的指针加偏移来访问。因此vector擅长 通过下标来索引单个成员 任意顺序迭代...

2019-01-01 23:37:58

阅读数 159

评论数 0

coredump生成名与可执行文件名不一致原因分析

        众所周知,linux下进程当收到某些信号而终止时,会保存进程上下文信息进入coredump文件中;以帮助程序员们分析调试。它可以通过执行如下命令使能coredump生成。其生成路径定义在/proc/sys/kernel/core_pattern文件中,生成文件名格式定义在内核源码的...

2018-11-22 01:12:30

阅读数 121

评论数 0

redis源码剖析[1]-异步事件驱动框架(下)

        上篇文章<redis源码剖析[1]-异步事件驱动框架(上) >。我们分析了redis的事件驱动模块对于事件检测的实现。现在我们看看redis如何应用这些事件检测。         我们先来看创建事件驱动模块的接口aeCreateEven...

2018-10-29 01:19:06

阅读数 63

评论数 0

深入理解c++之struct构造函数

        是否曾好奇struct定义的数据结构类型,当我拷贝构造时,或者赋值操作时会发生什么?倘若我结构中存在指针引用对象时,又能否正确处理?带着这些疑问,我们来对struct的构造函数进行研究,以解答以下几个疑问:         1) 何时编译器会自动为struct合成构造函数   ...

2018-09-03 00:33:14

阅读数 3146

评论数 0

redis源码剖析[1]-异步事件驱动框架(上)

       想要分析源码,我觉得可以把它当成一个整体,或者一个函数,有输入和对应的输出。我们从输入开始分析流程。先撇开main函数,在gdb上打印下线程的堆栈是个好想法,让我们看看它都在做什么。        可以看得到它其中一条线程阻塞在epoll_wait(我的系统是ubuntu,因此选择...

2018-08-19 21:56:50

阅读数 214

评论数 0

设计模式-Iterator迭代器模式

       迭代器模式,即提供一种方法顺序的访问一个集合对象中的各个元素。而又不暴露其内部的表示。那么为什么需要这样设计呢?让我们考虑如下情况。        我们CString有两个不同版本的实现,然后当我们需要访问其各个元素时,却不得依据其集合的表达方式写出对应的访问。也就是说我们其实是在...

2018-08-08 23:43:45

阅读数 113

评论数 0

c++之默认参数的可继承性及其原理

        关于c++默认参数是否可以继承这个问题。我们先给出答案是,不可继承并且静态绑定为当前类接口的默认参数(如果有声明的话)上。当然,我们不单只需要知道结果,还应该探索一下原因。         考虑以下代码。非常简单的一段测试代码。有个IServer基类,其listen接口有个默认参...

2018-08-02 00:02:40

阅读数 282

评论数 0

从零编写c++之http服务器(3)-http服务

        http全称超文本传输协议,可调试性高,扩展性也强。上两个篇章我们已经拥有了epoll事件驱动框架和线程池处理网络事件,接下来我们要先写一个基础网络套接字,然后在此基础上扩展出http的套接字。献上类图如下 完整源码见<https://github.com/...

2018-07-27 22:32:42

阅读数 3669

评论数 1

从零编写c++之http服务器(2)-epoll异步事件驱动框架

       epoll是select/poll基础上改进的为大规模描述符事件监测的机制,常出现在高性能,高并发的服务器设计中。在这里我们需要设计一个框架,实现套接字对象将自身注册到框架中,框架即可利用epoll对其套接字进行事件监测;当事件产生时通知相应的套接字对象。从而实现事件的监测与处理解耦...

2018-07-27 22:26:28

阅读数 585

评论数 2

从零编写c++之http服务器(1)-线程池

引言         编写这么一个c++的http服务器,纯粹是满足多年前一个好奇心。为什么我输入链接可以打开一个网页?这背后究竟发生了什么?所以本着好事多磨的心理一点点从零写了这个http服务器。他有着以下几个特点。 1) 基于epoll的异步事件驱动框架 2) L/F线程池处理网络事件 ...

2018-07-27 22:25:12

阅读数 1124

评论数 0

消除 pointer of type ‘void *’ used in arithmetic告警

        考虑这么一段代码,编译时会产生警告void *指针用于算术运算,那么如果消除这个告警?ssize_t Send(int sockfd, const void *buf, size_t len, int flags) { size_t sendcount = 0x00; ssiz...

2018-07-08 21:23:24

阅读数 2332

评论数 0

c++函数返回值的初始化

引言      c++函数返回值,如int, char, float等内建类型可以使用寄存器返回。但是如果我返回了自定义的一个类呢?那么函数返回时当前栈帧释放了,如果保存返回对象的值。它又在什么时候初始化? 让我们从汇编层次来看问题。代码    编写测试代码如下,非常简单的一个例子。测试平台为i3...

2018-06-20 23:45:10

阅读数 266

评论数 0

深入理解c++多态实现原理

引言       多态是指通过基类的指针或者引用,在运行时动态调用实际绑定对象函数的行为。与之相对应的编译时绑定函数称为静态绑定。多态是面向对象编程的核心思想之一,因此我们有必要深入探索一下它的实现原理。理解了原理才能更好的使用。前置条件        现有代码如下所示,非常简单的例子。通过基类的...

2018-05-20 01:54:00

阅读数 1565

评论数 1

深入理解c++函数调用的参数传递与局部变量申请

引言       工作中最难以解决的BUG莫过于偶现,复现周期长,难以定位的,而有时core也是缺少调试信息的。这种情况下就需要通过堆栈还原工作现场来分析问题。尽管现在诸多解释性语言蓬勃发展,但语言的根本汇编我们还是需要掌握,无论对于解bug还是分析语言本质都有着奇效。掌握事物的本质才是真正的理解...

2018-05-13 21:58:30

阅读数 600

评论数 1

设计模式-observer观察者模式

    定义              观察者模式-在对象间定义一对多的依赖关系,这样一来当一个对象的状态更新时,其它对象都能得到通知更新。主题并不需要了解观察者具体实现细节,只需要保证观察者实现了观察者接口即可。观察者模式定义了对象间一对多的关系。即一个主题,多个观察者观察主题的状态变化。主题通...

2018-04-29 23:26:48

阅读数 123

评论数 0

设计模式-strategy策略模式

       引言        关于设计模式有这么几本书可以推荐。<设计模式>这本当然是经典了,但是比较专业深晦,需要有一定的基础再反复琢磨;绝非看过一遍即可束之高阁。<Head First设计模式>即&am...

2018-04-27 22:24:49

阅读数 107

评论数 0

内存泄漏检测原理

        众所周知,c/c++语言的内存回收依赖于程序员,并没有python,java之类的自动回收。那么内存是申请释放就是个需要认真对待的问题。因为往往诸如服务器是需要长期运行的,即便轻微的内存泄漏也将可能带来严重问题。而且这种bug还存在着复现周期长,难以定位的问题。        链接...

2018-04-16 00:05:18

阅读数 506

评论数 0

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