自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不舍驽马

不积跬步,无以至千里;不积小流,无以成江海。

  • 博客(73)
  • 收藏
  • 关注

原创 用户空间与内核空间数据交换之mmap

在阅读以下测试程序之前先要搞清楚驱动程序中__get_free_pages的用法:unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)This function works the same as alloc_pages(), except that it directly retur

2015-10-15 16:11:33 718

原创 生成最长递增子序列

思路参考:http://blog.csdn.net/joylnwang/article/details/6766317 #include #include #include #include using namespace std; int main(){ int m,n; vector v; cin >> m; int num;

2015-09-26 21:29:16 501

转载 Linux内存管理之mmap详解

一. mmap系统调用1. mmap系统调用        mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。当使用mmap映射文件到进程后,就可以直接操作这段虚拟地址进行文件的读写等操作,不必再调用read,write等系统调用.

2015-09-17 17:49:59 499

转载 Linux启动过程详解

http://blog.chinaunix.net/uid-26495963-id-3066282.html启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱

2015-09-14 15:42:54 395

转载 正向代理与反向代理的区别【Nginx读书笔记】

http://blog.csdn.net/m13666368773/article/details/8060481正向代理的概念正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代理服务器,告诉他我需要那个无法访问网站的

2015-09-14 15:29:30 371

转载 epoll模型中LT、ET模式分析

水平触发(level-triggered,也被称为条件触发)LT: 只要满足条件,就触发一个事件(只要有数据没有被获取,内核就不断通知你)边缘触发(edge-triggered)ET: 每当状态变化时,触发一个事件ET模式仅当状态发生变化的时候才获得通知,这里所谓的状态的变化并不包括缓冲区中还有未处理的数据,也就是说,如果要采用ET模式,需要一直read/write直到出错为止,很多人

2015-09-11 00:52:49 824 1

转载 两种高性能I/O设计模式(Reactor/Proactor)的比较

这篇文章探讨并比较两种用于TCP服务器的高性能设计模式. 除了介绍现有的解决方案, 还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例), 以及其在不同平台上的微调. 此文还比较了java,c#,c++对各自现有以及提到的解决方案的实现性能.系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异步型[1, 2]. 阻塞型I/O意味着控制权只到调用操作结束了才会回到

2015-09-09 23:31:13 386

转载 最短路径—Dijkstra算法和Floyd算法

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.htmlDijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,

2015-09-09 23:21:30 375

转载 高效编程之互斥锁和自旋锁的一些知识

两种锁的加锁原理互斥锁:线程会从sleep(加锁)——>running(解锁),过程中有上下文的切换,cpu的抢占,信号的发送等开销。自旋锁:线程一直是running(加锁——>解锁),死循环检测锁的标志位,机制不复杂。两种锁的区别互斥锁的起始原始开销要高于自旋锁,但是基本是一劳永逸,临界区持锁时间的大小并不会对互斥锁的开销造成影响,而自旋锁是死循环检测,加锁全

2015-09-09 00:51:43 327

转载 设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

http://blog.csdn.net/superbeck/article/details/4446177简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。 简单工厂简单工厂模式

2015-09-08 01:26:17 320

转载 C++函数声明和定义深度解析(转)

概述:声明是将一个名称引入一个程序.定义提供了一个实体在程序中的唯一描述.声明在单个作用域内可以重复多次(类成员除外),定义在一个给定的作用域内只能出现一次. 一个定义就是一个声明,除非:它定义了类的一个静态数据成员.它定义了类的非内联成员函数. 声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代

2015-09-06 13:33:43 1727

转载 腾讯后台开发面试题--整理3

1.C++模板的作用。 将算法与具体对象分离,与类型无关,通用,节省精力2.socket编程,如果client断电了,服务器如何快速知道???有以下几个技术:使用定时器(适合有数据流动的情况); 使用socket选项SO_KEEPALIVE(适合没有数据流动的情况); 3.fork()一子进程程后 父进程癿全局发量子迍程能不能

2015-09-06 00:01:23 959

原创 腾讯后台开发面试题--整理2

1)tcp三次握手的过程,accept发生在三次握手哪个阶段?2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?4) valitale的含义。5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。

2015-09-05 01:17:11 715

转载 C++中const的实现细节

1、什么是const?  常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)  2、为什么引入const?  const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。  3、cons有什么主要的作用?  (1)可以定义const常量,具有不可变性。 例如:  const

2015-09-03 23:46:01 584

转载 sizeof在32位和64位机器上的运行结果

机器平台:X86_64 处理器操作系统:Red Hat 4.1.2-14编译器: gcc version 4.1.2 20070626  Size of char is:                                   1Size of unsigned char is:                     1Si

2015-09-03 23:16:20 1871

转载 警惕缓冲区溢出(C中那些不安全的库函数)

http://blog.csdn.net/yang_yulei/article/details/45314177C 和 C++ 不能够自动地做边界检查,边界检查的代价是效率。一般来讲,C 在大多数情况下注重效率。然而,获得效率的代价是,C 程序员必须十分警觉以避免缓冲区溢出问题。C语言标准库中的许多字符串处理和IO流读取函数是导致缓冲区溢出的罪魁祸首。我们有必要了解这些

2015-09-03 22:14:13 960

转载 Linux系统中valgrind检查内存泄露

Valgrind 安装1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz22. 解压安装包:tar –jxvf valgrind-3.2.3.tar.bz23. 解压后生成目录valgrind-3.2.34. cd valgrind-3.2.35. 运行./autogen.sh设置环境(需要标准的autoconf工具)(可选)6.

2015-09-03 16:59:01 1853

原创 腾讯后台开发面试题--整理1

linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小 ^_^ ,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握awk se

2015-09-03 16:05:11 4509

原创 后台开发面试准备2:linux共享内存

共享内存定义:共享内存是最快的可用IPC(进程间通信)形式。它允许多个不相关的进程去访问同一部分逻辑内存。共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段共享内存段“连接到”它们自己的地址空间里去。所有进程都可以访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动会立刻被有访问同一段共享内存的其他进程看到。因此共享内存对于数据的

2015-09-03 14:59:06 2582 1

原创 后台开发面试准备1:Linux命令

1.netstat :《effective TCP/IP》条款382.tcpdump:《effective TCP/IP》条款343. ipcs :ipcs -a  是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息ipcs -m  打印出使用共享内存进行进程间通信的信息ipcs -q   打印出使用消息队列进行进程间通信的信息ipcs -s  打印出使用信号

2015-09-03 13:13:49 2043

转载 动态规划:从新手到专家

作者:Hawstein出处:http://hawstein.com/posts/dp-novice-to-advanced.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。前言本文翻译自TopCoder上的一篇文章: Dynamic Programmin

2015-09-01 00:47:34 268

转载 编写一个智能指针类

http://www.hawstein.com/posts/13.9.html比起一般指针,智能指针会自动地管理内存(释放不需要的内存),而不需要程序员去操心。 它能避免迷途指针(dangling pointers),内存泄漏(memory leaks), 分配失败等情况的发生。智能指针需要为所有实例维护一个引用计数, 这样才能在恰当的时刻(引用计数为0时)将内存释放。

2015-08-31 17:35:22 541

原创 对C++名字隐藏的理解

Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。如何理解这句呢?看这个例子:class FirstClass{public: virtual void MethodA(int); virtual vo

2015-08-31 16:18:23 563

转载 用C++写一个函数,打印输入文件的最后k行

http://www.hawstein.com/posts/13.1.html一种方法是打开文件两次,第一次计算文件的行数N,第二次打开文件,跳过N-K行, 然后开始输出。如果文件很大,这种方法的时间开销会非常大。我们希望可以只打开文件一次,就可以输出文件中的最后k行。 我们可以开一个大小为k的字符串数组,然后将文件中的每一行循环读入。 怎么样循环读入呢?就是将k行字符

2015-08-31 15:14:55 695

转载 C++中struct和class的区别

http://blog.csdn.net/xdrt81y/article/details/17143801一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。    struct能包含成员函数吗?   能!    struct能继承吗?          能!!    str

2015-08-30 23:28:15 289

转载 Apache的prefork模式和worker模式

prefork模式 这个多路处理模块(MPM Multi-ProcessingModules)实现了一个非线程型的、预派生的web服务器,这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能 。它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请

2015-08-29 13:25:52 510 1

转载 虚函数表的实现细节

http://blog.csdn.net/lingfengtengfei/article/details/12345809虚函数·虚表是怎么实现的?虚表存放在哪里?·虚表中的数据是在什么时候确定的?·对象中的虚表指针又在什么时候赋值的?我们很难通过 C++语言本身来找到答案。 C++标准给编译器实现者定义了语法规范,但是被并没有定义如何实现这些语法规范,

2015-08-27 23:32:50 369 1

转载 MVC 编程模式

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:[1] Model(模型)表示应用程序核心(比如数据库记录列表)。View(视图)显示数据(数据库记录)。Controller(控制器)处理输入(写入数据库记录)。MVC 模式同时提供了对 HTML、CSS 和 JavaS

2015-08-27 22:32:40 647

转载 自旋锁和互斥锁区别

POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机

2015-08-25 01:17:10 323

转载 linux下epoll如何实现高效处理百万句柄的

http://blog.csdn.net/russell_tao/article/details/7160071开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺

2015-08-25 01:16:05 471

转载 C++中的static关键字

http://blog.csdn.net/Hackbuteer1/article/details/7487694C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就

2015-08-24 17:39:32 209

转载 C++中虚函数与晚绑定的编译器实现

编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数 的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函 数调用时(也就是做多态调用时),编译器静态地插入

2015-08-21 19:27:58 565

转载 构造函数为什么不能是虚函数

本文的主题是构造函数不能是虚函数,首先这不需要你用脑子去记,因为当你写出来虚构造函数时,编译器是能检查出来的。本文的目的是为什么构造函数不能是虚函数。首先,先看一段错误的代码,下面的代码是通不过编译阶段的。1 class A{2 public:3 virtual A(){4 this->value = 0;5 }6 private:7

2015-08-21 00:19:44 299

转载 四层和七层负载均衡

http://kb.cnblogs.com/page/188170/http://blog.csdn.net/caoshuming_500/article/details/7337802(一)  简单理解四层和七层负载均衡:  ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP

2015-08-18 22:57:13 323

转载 strcpy的正确实现

http://www.weste.net/2006/2-20/13432127659.html1.引言   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面

2015-08-16 23:19:46 10285 2

转载 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

http://www.cnblogs.com/panxueji/archive/2013/05/12/3073924.html原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应

2015-08-16 13:29:46 461 1

转载 从一道面试题谈linux下fork的运行机制

http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目:      给出如下C程序,在linux下使用gcc编译:123456

2015-08-14 00:22:55 266

原创 多线程造成死锁的例子

1、假设有如下代码   pthread_mutex_t mutex;   //代表一个全局互斥对象   void  A()      {          mutex.lock();          //这里操作共享数据          B();  //这里调用B方法          mutex.unlock();

2015-08-13 22:51:09 2098

原创 由memcpy strcpy memmove看内存重叠

/***********************C语言标准库函数strcpy的一种典型的工业级的最简实现*返回值:目标串的地址。*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。*参数:des为目标字符串,source为原字符串*/ char* strcpy(char* des,const char* sourc

2015-08-13 21:57:54 493

转载 左孩子右兄弟树的递归与非递归、深度与广度遍历

http://blog.chinaunix.net/uid-21712186-id-1818095.html左孩子右兄弟存储方式:     struct tree_node{  int data;  tree_node* first_child;  tree_node* sibling;}一个观念必须要有: root没有兄弟sibling,根是独立的,代表这

2015-08-10 22:52:30 3555 2

空空如也

空空如也

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

TA关注的人

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