- 博客(381)
- 资源 (4)
- 收藏
- 关注
转载 虚函数表的实现细节
1.虚函数·虚表是怎么实现的?虚表存放在哪里?·虚表中的数据是在什么时候确定的?·对象中的虚表指针又在什么时候赋值的?我们很难通过 C++语言本身来找到答案。 C++标准给编译器实现者定义了语法规范,但是被并没有定义如何实现这些语法规范,不同的编译器实现者可能有不同的实现方法,可以肯定的是他们的编译器必须符合这些语法规范。汇编语言作为最接近机器语言的计算机语言,可以
2014-09-13 13:07:18
590
转载 面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort
一、写在前面 继上一次发表了一片关于参加秋招的学弟学妹们如何准备找工作的博客之后,反响很大,顾在此整理一下,以便大家复习。好多源自july的这篇博客,也有很多是我自己整理的。希望大家能够一遍一遍的写,直到能够秒杀为止。二、stl模板函数 1、strcpy[cpp] view plaincopy
2014-09-12 17:28:52
583
转载 inline函数_内联函数的一些总结(zz)
inline函数我们看下面的函数,函数体中只有一行语句: double Average(double total, int number){ return total/number; } 定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函
2014-09-12 16:51:46
593
原创 SQL 建立数据库 表
SQL 建立数据库 表DB里面有两个表table1(m_1,m_2,m_3,N_1) m_1为主码table2(N_1,N_2,N_3) N_1为主码我想实现对表增、删、改、查之类的操作 删除table2的时候 table1中有N_1的信息也要删除 添加table1时候要检测 table2中是否有N_1的信息怎样建立如上数据库 和 table1、table
2014-09-12 16:39:20
687
转载 df 和 du 命令详解
df 和 du 命令详解df命令详细用法 a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案系统的所有分割区磁盘使用量 T:显示每个分割区所属的档案系统名称 常用命令:df -hi 操作详解 引用 指令 df 可
2014-09-12 16:22:27
524
转载 计数排序
计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序。比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序。我们如何设计一个最高效的排序算法。本文不光给出计数排序算法的传统写法,还将一步步深入讨论算法的优化,直到时间复杂度和空间复杂度最优。先看看计数排序的定义Counting sort (sometimes referred
2014-09-12 16:19:30
563
转载 malloc和free实现的原理
还是要认真看深入理解计算机系统http://blog.csdn.net/llhyy17/article/details/5375298内存分配是按照堆块实现的,一个堆块是由头部和有效载荷量组成,其中的有效载荷量就是我们申请的堆的大小。头部块包括 块大小和是否可用 这两个部分组成。在内存中这些堆块以链表形势组成malloc函数的实质
2014-09-12 02:16:48
609
转载 Linux进程间通信分类 以及 pipe的原理实现
http://blog.sina.com.cn/s/blog_4a84bd960100by8s.htmlhttp://home.lupaworld.com/home-space-uid-296848-do-blog-id-230801.html一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了Linux环境
2014-09-12 02:14:45
502
转载 C++中的单例模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点
2014-09-12 02:13:52
455
转载 海量数据处理方法
一、Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,很明显这个过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字
2014-09-12 02:11:18
505
转载 海量数据处理常用思路和方法
大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。
2014-09-12 02:10:22
656
转载 设计海量key-value数据的存储查询模块
设计海量key-value数据的存储查询模块http://www.cnblogs.com/iamzhaiwei/archive/2012/09/02/2689653.html单机存储100亿大数据量的key-value数据,要求能够支持插入和查询操作,单条数据长度不定,平均约1024字节,假设可用内存10G,磁盘空间不限,请设计一个存储查询模块,支持按照key来获取对应
2014-09-12 02:02:02
597
转载 海量存储
今天玩微薄的时候有人问我有没有数据存储的相关资料,我想了想。。虽然在这个领域内也算有点积累,以前讲课的ppt有200多页,但毕竟ppt的信息量有限。所以在这里将这个系列的部分内容在这里进行重新编排主要将涉及到:1. 数据库原理 http://qing.weibo.com/1765738567/693f0847330005sm.html 关系代数
2014-09-12 01:53:06
475
转载 Linux进程模型总结
http://blog.csdn.net/dlutbrucezhang/article/details/8696296一个进程在CPU上运行可以有两种运行模式(进程状态):用户模式和内核模式。如果当前运行的是用户程序(用户代码),那么对应进程就处于用户模式(用户态),如果出现系统调用或者发生中断,那么对应进程就处于内核模式(核心态)。Linux进程通过一个tas
2014-09-12 01:33:54
722
转载 Key-value存储简介
Key-value存储简介具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大的难题。在这样的情况下,使用Key-value存储将会是一个很好的选择。它被广泛应用于缓存,搜索引擎等等领域。 根
2014-09-12 01:32:14
1096
转载 linux内核 do_fork 函数源代码浅析
前面已经谈了内核加载与系统引导过程,下面我们来看看内核的 do_fork() 函数是如何创建一个新的进程的。在 Linux 内核中,供用户创建进程的系统调用fork()函数的响应函数是 sys_fork()、sys_clone()、sys_vfork()。这三个函数都是通过调用内核函数 do_fork() 来实现的。根据调用时所使用的 clone_flags 参数不同,do_for
2014-09-12 00:01:57
594
转载 I/O重定向和管道:使用pipe、fork、exec详解
I/O重定向和管道:使用pipe、fork、exec详解。要使 who | sort 用程序实现,需要进行 I/O重定向,参考了Unix / Linux编程实践教程,画了几个图来理解这个程序,可能会更好。1. 当运行pipe( pipe_id )以及fork之后,父进程和子进程共享stdin、stdout和管道,如图所示:2. 我们知道,可以设
2014-09-12 00:00:34
830
转载 从一道面试题谈linux下fork的运行机制
文章出处:http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:[html] view plaincop
2014-09-11 22:20:41
510
转载 一张图解决一道笔试题 --- 理解fork函数
下面的程序一共输出多少个“-”?()[cpp] view plaincopy#include #include int main(void) { inti; for(i=0; i fork(); printf("-");
2014-09-11 21:36:49
633
转载 TIME_WAIT和CLOSE_WAIT状态区别
在服务器的日常维护过程中,会经常用到下面的命令:[plain] view plaincopynetstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 它会显示例如下面的信息:TIME_WAIT 814CLOSE_WAIT 1
2014-09-11 21:11:33
521
转载 2014.3.29唯品会运维工程师笔试题
2014.3.29唯品会运维工程师笔试题 本帖最后由 ㄨí惯。 于 2014-3-30 10:31 编辑【2014.3.29——唯品会笔试】选择题(每题5分)1.在linux/unix操作系统中用什么命令可以向一个进程发送信号A.signal B.kill C.create D.fork2.在Linux/Unix操作系统中当一
2014-09-11 19:39:22
1851
转载 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞 》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link 。写完之后发现很多人都很喜欢,我还是非常开心的,也说明这个问题确实困扰了很多人。随着学习的深入,渐渐的感觉原来的理解有些偏差,但是还是没引起自己的重视,觉着都是一些小错误,无伤大雅。直到
2014-09-11 18:24:03
480
转载 C10K问题研究
1 epoll的两种工作模式(1) LT水平触发该模式为缺省的工作模式,并且同时支持block与non-block。在这种模式下,内核会告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作,如果你不做任何操作,内核还是会继续通知你的,该模式与传统的select以及poll模式是相同的。(2) ET边缘触发该模式只支持non-block模式,在这种模
2014-09-11 18:19:24
632
转载 df和du 命令详解
df命令详细用法a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使用量 k:大小用k来表示 (默认值) t:显示某一个档案系统的所有分割区磁盘使用量 x:显示不是某一个档案系统的所有分割区磁盘使用量 T:显示每个分割区所属的档案系统名称 常用命令:df -hi操作详解引用指令 df 可以显示目前所有档案系统的最大可用
2014-09-11 18:05:31
561
转载 Key/Value之王Memcached初探:一、掀起MC的盖头来
一、Memcached是何方神圣?在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的HttpRuntime.Cache虽然已经可以实现对页面局部进行缓存,但还是不够灵活,此时Memcached或许是你想要的。Memcached 是一个 高性能的分布式内存对象缓存系统 ,用于动态We
2014-09-11 17:29:52
556
转载 高性能Socket服务器的开发需要注意事项
几个必须涉及到的重中之重的课题: 1.需求.因为方式方法,手法,模型结构太多,因此,明确需求,注意:这里说的是明确需求,就是非常明白并确定需求.2.模型.windows下五种SCOKET模型,根据需求选择合适的模型.最高性能的莫过于IOCP为核心的同步线程工作方式.linux下使用epoll也是类似的手法.bsd下使用kqueue.以
2014-09-11 17:09:51
631
转载 服务器进程为何通常fork()两次
http://blog.csdn.net/chdhust/article/details/11872467服务器进程为何通常fork()两次首先,要了解什么叫僵尸进程,什么叫孤儿进程,以及服务器进程运行所需要的一些条件。两次fork()就是为了解决这些相关的问题而出现的一种编程方法。孤儿进程 孤儿进程是指父进程在子进程结束之前死
2014-09-11 17:08:16
444
转载 NGinx负载均衡策略
nginx的upstream目前支持的5种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver {server 192.168.0.14;server 192.168.0.15;}2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的
2014-09-11 16:49:39
629
转载 一些负载均衡策略
负载均衡分全局负载均衡和本地负载均衡。地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。 循环DNS就是每次解析域名时指向IP loop list 里的下一个IP. 负载均衡路由器通过某种策略把请求发送到响应最快的server上, 同时可以满足故障转移/故障恢复. 但是
2014-09-11 16:45:38
1155
转载 Linux proc机制
proc - process information pseudo-filesystemThe proc filesystem is a pseudo-filesystem which is used as an interface to kernel data structures. It iscommonly mounted at /proc. Most of it is rea
2014-09-11 14:41:06
554
转载 网络IO模型解析:同步IO和异步IO,阻塞IO和非阻塞IO的对比分析
本文讨论的背景是Linux环境下的network IO。本文最重要的参考文献是Richard Stevens的“UNIX? Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2节“I/O Models ”,Stevens在这节中详细说明了各种IO的特点和区别,如果英文够好的话,推荐直接阅读。Steve
2014-09-11 13:26:09
889
转载 RAID磁盘阵列详解
RAID磁盘阵列磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意。原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数据的安全性。磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分
2014-09-11 13:17:34
940
转载 计算机网络篇
OSI参考模型 一上来就是OSI七层参考模型,是不是有点晕?如果是,那先阅读文章开头推荐的那两篇文章吧! 第7层:应用层(ApplicationLayer) 应用层能与应用程序界面沟通,以达到展示给用户的目的。在此常见的协议有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。 第6层:表示层(PresentationLaye
2014-09-11 10:48:08
732
转载 设计模式(一)工厂模式Factory(创建型)
转自:http://blog.csdn.net/hguisu/article/details/7505909(设计模式一 工厂模式Factory 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤:
2014-09-11 02:25:09
418
转载 socket阻塞与非阻塞,同步与异步、I/O模型
转自:http://blog.csdn.net/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:
2014-09-11 01:49:09
553
转载 B-树和B+树的应用:数据搜索和数据库索引
B-树1 .B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A
2014-09-11 00:00:03
478
转载 关于C++中虚函数表存放位置的思考
原文地址:关于C++中虚函数表存放位置的思考 作者:fuliangcheng 其实这是我前一段时间思考过的一个问题,是在看《深入探索C++对象模型》这本书的时候我产生的一个疑问,最近在网上又看到类似的帖子,贴出来看看:我看到了很多有意思的答案,都回答的比较好,下面贴出一些具有代表性的:Answer 1:Answer 2:我们都知道,虚函数是
2014-09-10 13:26:44
1171
转载 面试经验
linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握awk sed需掌握共享内存的使用实现
2014-09-10 13:13:43
2145
转载 腾讯后台开发面试题及答案
简单归纳:fd只是一个整数,在open时产生。起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用; 而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构
2014-09-10 13:12:14
11829
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅