自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Daemon的专栏

欢迎加入LinuxC++ QQ技术讨论群:514014828

  • 博客(246)
  • 资源 (1)
  • 收藏
  • 关注

原创 一波面经。。。

美团2015校招面经-软件研发岗 (拿到offer)一面上来我问“要自我介绍不?”。面试官一上来说不用了,先写几段代码吧!然后,第一题:给你两个字符串str1,str2,找出str2在str1中的位置。我一看题目心中暗喜,这个好做,好歹都写过求两个字符串的最长公共子串,求一个字符串的重复子串

2015-12-29 15:12:21 3490

原创 国内笔试面试风格及准备方法

第一节 国内笔试面试风格及准备方法免费试听分享面试经验,通过例题分析国内面试的风格及准备方法1) C/C++部分:2)实现 memcpy 函数STL 中 vector 的实现原理2)概率题部分:给 N 张牌和一个随机函数,设计一个算法对这堆牌进行洗牌3)智力题部分25 匹马,5 个赛道,最少赛多

2015-12-29 15:02:55 1404

原创 Linux内核的malloc实现(Oracle的cache buffer影子)

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/12845059本文介绍一下malloc的原理,对mm感兴趣(或者对Oracle internal实现感兴趣。注: 不是自以为感兴趣 )的同学能在本文找到感兴趣的内容。malloc主要由两个结构体做支撑。struct bucket_de

2015-12-27 01:54:32 1036

原创 Lighty的“自适应”树

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/13360863Lighty里采用了“自适应树”,而且是直接借用D. Sleator在1994年实现的代码。其实,在关键的数据结构上借用历史证明了健壮性的代码比自己重复造轮子要实际得多——如果自己实现,谁能保证这个“新家伙”不会出问题呢?

2015-12-27 01:51:25 720

原创 Linux内核源代码解析之——小弟我与神童聊Linux内核

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11619609我的朋友里,至少有2.5个神童。有的书上说,一个人的能力取决于他的朋友圈子的能力。所以,我是幸运的,因为我的很多朋友都比我更优秀。雅丽是公认的神童。北漂族、帅气、博学、擅长多国语言,同时,公认的Oracle大神。

2015-12-27 01:13:21 702

原创 抛弃编程语言的偏见——对话百度架构师

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/17337961某年某月某夜,与百度的大神有如下对话。希望对刚入门的同学有些启发。有很多同学来向我咨询如何学习Linux、c,非常欢迎交流学习。想当年我在学校学习的时候除了看片就看

2015-12-27 01:11:01 989

原创 关于分布式一致性的探究

2015-12-03 分类:框架 阅读(823) 评论(2) 随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。在初识分布式系统一文中简单介绍了分布式的基本概念,本文将在上篇文章的基础上继续学习分布式的一致

2015-12-12 23:19:00 711

原创 美团、58、百度、阿里面经

2015-05-12 分类:Java 阅读(1175) 评论(0) 今天在清理电脑文件的时候,发现有一份当年记录的文件,里面记录了我当年参加面试的时候面试官问我的问题。想想还是写出来。希望看到的人能有点收获百度一面:自我介绍、hashmap和hashtable区别、对线程安全的理解、讲讲web三大架构、为什么要用struts做mvc、

2015-12-12 23:18:32 719

原创 Lighty的jobs设计

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18571411Lighty把连接分为三类:conns,joblist,fdwaitqueue.这三类都由connections描述。其中jobs的添加filter如下:int joblist_append(server *sr

2015-12-01 23:59:56 635

原创 Redis的VM实现——终究敌不过业务架构师!

http://blog.csdn.net/freas_1990/article/details/18718251 Redis的VM机制将会成为历史,不过,回顾一下历史,未尝不是一件乐事。我们来看一下redis的VM设计。/* The VM pointerstructure - identifies an object in the swap file. * * This

2015-12-01 23:59:18 5440

原创 kmalloc设计

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18630413Linux内核在古老时代,比较死板,没有较为灵活的接口给到内核开发人员。kmalloc是其中一个,用于给内核开发人员提供内存获取接口。如果没有kmalloc,内核的内存使用会非常死板,甚至可以说仅仅是一个玩具——想象

2015-12-01 23:58:41 545

原创 Linux的slab设计

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18743391Slab机制最初起源于Solaris的内存管理,主要用于消除小对象(C结构体)频繁地分配和释放导致的内存碎片问题。回忆一下,Server四大性能因素吧,这是个致命的问题。Slab机制的总体思想是当不使用这些对象的时候

2015-12-01 23:58:09 644

原创 教你读Git——Linux内核版本管理工具

arch/x86/kernel/cpu/perf_event_amd_ibs.c | 53 ++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 8 deletions(-)--- a/arch/x86/kernel/cpu/perf_event_amd_ibs.c+++ b/arch/x86/kernel/c

2015-12-01 23:57:36 1218

原创 Linux内核源代码review Case

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18804425Srikanth Thokala 在2014年1月22日为Xilinx AXI Video Direct Memory Access Engine提交了一个patch,该patch提供了双维度、独立、异步的读写通道,大幅度提升了

2015-12-01 23:55:30 537

原创 Linux内核之——C语言“徒手”写内存!

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18990055在application程序猿的眼中,C语言写内存的方法,千篇一律,如下:struct mystr * ptr;ptr = malloc(sizeof(*ptr));ptr->fildA='abc';ptr->fildB=

2015-12-01 23:55:04 496

原创 Linux内核源代码解析之——欲三次握手,先构造传输控制块!

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/18999825众所周知,TCP/IP最为广泛的考题非三次握手、四次挥手莫属。当server端接收到syn包时,开始进入三次握手,tcp_sock的state变为SYN_RECV。完成了三次握手的第一次握手,server端开始发送ack+s

2015-12-01 23:53:58 729

原创 数据类型是浮云

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/19053687数据原本没有类型,int、char、double都是浮云。唯一实际的是,存储空间 & 字节数(bytes)。在汇编里,没有所谓的int、char之分,定义一个变量会先申明它需要的存储空间,然后初始化赋值(也可以不初始

2015-12-01 23:53:27 552

原创 跟Andrey Vagin学习写内核patch

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/19424109在2013年11月19日, Andrey Vagin提交了一个patch,该patch修复了 snd_nxt做update的逻辑。这个patch其实逻辑很简单,也正是因为简单,所以适合给初学者学习。kernel的oo

2015-12-01 23:52:35 428

原创 Linux内核zero-copy小试牛刀(加注释)

本文所涉及到的源代码为 wheelz原创,freas_1990加工整理。转载请标明出处:http://blog.csdn.net/freas_1990/article/details/19653015偶然在网上偶然翻到一篇 wheelz在多年前写的通过mmap + /dev/mem + 共享内存来实现zero-copy的文章, wheelz在网上已经很久没路面了,本文 简单加批注如下。

2015-12-01 23:48:49 578

原创 Lighty的Chunk设计

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/20001871下边是我画的Lighty的Chunk设计简图。Lighty的Chunk封装了对纯内存以及mmap的文件管理。多的不说,直接上图。

2015-12-01 23:48:06 477

原创 学习源代码内核一定要独立思考、勤于实践

本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/43772011今天给两位大二的学生讲解了某开源数据库源代码改造的思路。非常失望。以他们的基础,按照原计划现在他们应该在调试代码了。但是现实让我大跌眼镜。天道酬勤,只有坚韧勤奋才能成就超越常人之实力。望珍惜自己的青春和才华。

2015-12-01 23:43:47 514

原创 软中断网卡处理&Linux高性能外部设备处理机制

Jack:Linux外部设备的性能如何才能高呢?我:你为什么希望外部设备的性能好呢?Jack:典型的说,外部设备如磁盘、网卡都需要非常好的性能。磁盘设备处理性能好,才能承载数据库系统。网卡性能好,才能承载高性能server(数据库或者web server)。我:那你觉得用什么样的方式处理这两个外部设备,它的性能会好呢?Jack:外部设备要好,当然应该采用中断方式,这

2015-12-01 23:28:59 746

原创 Linux内核网卡收包机制历史变革

Linux内核对网卡收包处理机制大约经历了4个阶段。1、网卡在同一时刻只能接收一个包,当网卡接收到包之后,马上向中断控制器发出中断请求,中断控制器向CPU发出中断信号。2、网卡在同一时刻能接收多个包,单CPU,网卡接收到多个包的时刻,马上向中断控制器发出中断请求,中断控制器向CPU发出中断信号。3、网卡在同一时刻能接收多个包,多CPU,网卡接收到多个包的时刻,马上向中断控制

2015-12-01 23:24:50 1616

原创 Linux内核的信号机制——怪胎

信号机制是Unix的一大特色,因为是特色,所以很多同学在编程时,有些不能理解(超出理解范围?)。本文对Linux信号机制做一个分析。常见signal使用如下:void mysig(){printf("got a sig!\n");}int main() { printf("process id is %d !\n",getpid()); si

2015-12-01 23:12:46 497

原创 Redis的“表”怎么设计的?

在《C语言描述能力之——结构体》我曾提到C语言的描述能力,数据库里的“表”这个概念是如何通过C语言来设计的呢?我们来看一下Redis的实现吧。robj *createListObject(void) { list *l = listCreate(); robj *o = createObject(REDIS_LIST,l); listSetFreeMethod(

2015-12-01 23:12:04 1907

转载 内存管理算法--Buddy伙伴算法

Buddy算法的优缺点:1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是该算法中,一个很小的块往往会阻碍一个大块的合并,一个系统中,对内存块的分配,大小是随机的,一片内存中仅一个小的内存块没有释放,旁边两个大的就不能合并。2)算法中有一定的浪费现象,伙伴算法是按2的幂次方大小进行分配内存块,当然这样做是有原因的,即为了避免把大的内存块拆的太碎,更重要的是使分配和释放过

2015-12-01 23:09:51 747

转载 Linux下配置文件读取操作流程及其C代码实现

一、概述 Linux具有免费、可靠、安全、稳定、多平台等特点,因此深受广大程序员的欢迎。 为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际的安装环境对每个配置项的值进行设置。这就要求程序能够准确读取到各个配置项的值。 本文详细介绍了Linux下配置文件的读取方法及读取操作的C代码实现,为相关的软件开发工作的开展提供了有益的参考。二、配置文件介绍 

2015-12-01 23:08:47 534

原创 深入剖析 linux GCC 4.4 的 STL string

本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Write技术。平台:x86_64-redhat-linuxgcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)1. 问题提出最近在我们的项目当中,出现了两次与使用string相关的问题。1.1. 问题1:新代

2015-11-14 04:35:47 498

原创 一看就明白的爬虫入门讲解:基础理论篇

摘要:本文作者诸葛IO创始人/CEO孔淼从基础理论入手,详细讲解了爬虫内容,分为六个部分:我们的目的是什么;内容从何而来;了解网络请求;一些常见的限制方式;尝试解决问题的思路;效率问题的取舍。CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、寻求《近匠》报道,或给文章挑错,欢迎

2015-11-14 04:34:44 1366

原创 陈硕-Linux C++ 服务器端这条线怎么走?一年半能做出什么?

您好,我现在大三了,请问我想往 Linux C++ 服务器方向发展该怎么走,比如现在在看 Linux 程序设计,还应该在看哪些书,可以完成一些什么项目?谢谢。有 C++、C 基础,算法数据结构还不错。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:陈硕链接:http://www.zhihu.com/question/22608820

2015-11-09 22:00:16 3122 2

原创 陈硕-应届生应聘程序员,简历上能写书单吗?最好有哪些信息?

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:陈硕链接:http://www.zhihu.com/question/24887072/answer/29334013来源:知乎校园招聘的时候,我的中文简历上写了我参与翻译的几本书。结果没用上中文简历。说点有用的,你在简历上写以下几条,保证让面试官眼前一亮:读了 APUE,实现了一个简

2015-11-09 21:59:05 1188

原创 如何处理未使用的变量

有一些函数传入了没有任何作用的变量,但是,这些变量在以后可能会用上(可扩展性)。而编译器一般会发出警告,提示该变量没有被使用。如何处理这种case呢?业界有一行统一的代码来解决这个问题。handler_t stat_cache_handle_fdevent(server *srv, void *_fce, int revent) { size_t i; stat_cac

2015-11-08 01:56:42 4163

原创 kmemleak_object的优化patch

lizefan童鞋在今天(2014/3/13)提交了一个关于mem leak的patch,比较有意思。在kmemleak scan thread运行的情况下,无法释放kmemleak objects。OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME1200264 1197433

2015-11-08 01:55:48 937

原创 Linux源代码解析之——传输控制块诞生

在Linux 2.6以前(不包括2.6,具体版本没仔细调查),还没有使用传输控制块的概念,各种协议的状态管理还出于比较混乱的状态。Linux 2.6以后,传输控制块机制使代码看起来比较规整了。创建传输控制块:/* * Create an inet socket. */static int inet_create(struct socket *sock, int prot

2015-11-08 01:54:58 602

原创 Linux逻辑地址与物理地址的key point

以下的一段代码:#include stdio.h>greeting(){printf("Hello, world!\n");}main(){greeting();}经过gcc、ld(链接、编译)之后,生成一个elf可执行文件,再使用objdump处理,生成的反汇编代码如下:08048368 :8048368: 55 push %ebp8048369: 89 e5

2015-11-08 01:53:51 682

原创 大端字节(Big endian)与小端字节(Little endian)

常见的80x86 CPU是先存放小值,再存放大值。这是小端字节(Little endian)序列。而数字在互联网上传输的时候,是大端字节序列(Big endian)。所以,网络编程里有一个api是htons(),用来将主机字节顺序转化成为网络字节顺序。常见的CPU平台如下:处理器操作系统字节顺序Alpha全

2015-11-08 01:53:29 672

原创 X86 32位的基本寄存器

下面的寄存器前缀名E代表32,也就是说每个寄存器,可以拆分成两个16位寄存器。1个指令指针寄存器(EIP)4个数据寄存器(EAX、EBX、ECX和EDX)2个栈指针寄存器(ESP和EBP)2个变址寄存器(ESI和EDI) 6个段寄存器(ES、CS、SS、DS、FS和GS)1个标志寄存器(EFlags)

2015-11-08 01:53:10 1166

原创 DMA为什么比轮询、中断方式性能要卓越很多?

如果是计算机专业出身的同学,都听过一个概念,中断比轮询要好、DMA比中断要好。中断比轮询要好,是容易理解的:在轮询中,CPU是死循环执行对IO端口的检测,这种模式,大量的浪费了CPU(因为CPU除了处理外设之外,更多的时间应该用于对内存的操作,如计算等)。而中断方式,则没有死循环的浪费,CPU可以正常做别的事情,等到外部设备数据来了,就会主动由设备控制器发出中断(设备控制器

2015-11-08 01:52:50 2417

原创 源代码VS业务的悟道——知行合一

24岁以后博文更新逐渐减少了,因为守着“每篇文章都是思索所得”的原则,希望能对读者有所启发而坚持不发一篇垃圾文章。24岁以前,一直信仰源代码实现,觉得所有的核心技术,都在于源代码实现(尤其是C源代码)。直到24岁,学习之余,偶有所悟——技术的核心在于源代码,而项目的核心却并不在于具体实现,而在于业务的解决方案!那么,到底是源代码实现更重要一些呢?还是业务解决方案更重要一些呢

2015-11-08 01:52:25 831

原创 外企巨头与互联网巨头的成功之道

引子:在很久很久以前,很多IT行业的准程序员对微软、IBM、Oracle等巨无霸外企心生向往。在很久以前,很多IT行业的准程序员对百度、腾讯、阿里、360等巨无霸互联网公司心生向往。很多在外企的程序员觉得互联网公司是青春、高薪的圣地,能学习到业界最前言的技术和潮流的业务,无比崇拜。很多在BAT的程序员觉得外企是自由、幸福的圣地,能过上体面、高大上的生活,无比崇拜。

2015-11-08 01:51:51 695

空空如也

空空如也

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

TA关注的人

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