自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 shell中read用法

read命令 -n(不换行) -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1、基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说)。得到输入后,read命令将数据放入一个标准变量中。下面是read命令的最简单形式::#!/bin/bashecho -n "Enter your name:"   //参数-n

2017-04-10 15:31:04 497

原创 静态数组和动态数组的区别

静态数组在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能改变,如:int a[10];在函数执行完以后,系统自动销毁;动态数组是malloc或者new出来的,位于内存的堆区,它的大小是在运行时给定,并且可以改变其,如:int *a;a = new int[10];动态数组,其创建麻烦,使用完必须由程序员自己通过free或者delete释放,否

2017-03-29 20:30:50 6657

原创 单例模式

设计模式是老生常谈的问题,有人工作多年却对设计模式一窍不通,但是更多的人是懂一点点,但是不求甚解。其实这样不好,暂且不说在工作中的应用,即便是在面试时,被面试官问到设计模式时一脸懵逼,是非常尴尬的事情。本文不废话,不谈大篇理论教学,只针对面试,给出设计模式的关键点,从应试的角度,让大家认识和理解设计模式。首先搞清楚一点,设计模式不是高深技术,不是奇淫技巧。设计模式只是一种设计思想,针对

2017-03-24 23:06:44 436

原创 中介者模式 1

一、引言在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室、QQ群和短信平台,这些都是中介者模式在现实生活中的应用,下面就具体分享下我对中介者模式的理解。二、 中介者模式的介绍2.1 中介者模式的定义从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋

2017-03-24 23:03:58 266

转载 IO多路复用select,poll,epoll的区别

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核

2017-03-14 18:54:45 1034

转载 IO多路复用之epoll

1、基本知识  epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口  epoll操作过程需要三个接口,分别如下:

2017-03-14 18:53:34 135

转载 IO多路复用之poll

1、基本知识  poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数

2017-03-14 18:52:20 151

转载 IO多路复用之select

1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I

2017-03-14 18:50:38 144

原创 10种算法原理(冒泡排序,选择排序,快速排序,堆排序,希尔排序,桶排序等)

1 冒泡排序(对于有序数组来说排序最快)    原理:临近的数字两两比较,按照从小到大或者从大到小的顺序进行交换,这样,一趟下来,最大或者最小的数字被交换到最后一位,然后再从头开始进行两两比较,直到倒数               第二位时结束。(用到两层循环,最多执行n-1趟)    外层循环结束条件:检测某一趟里有没有进行交换,如果没有进行交换,可以直接跳出循环。    稳定性

2017-03-14 09:27:46 690

转载 初窥Linux 之 我最常用的20条命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个

2017-03-10 21:43:23 160

转载 网络面试题:TCP和UDP的9个区别是什么

TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据。对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的。这就是为什么TCP和UDP是一个流行的Java编程面试问题。我曾经在各种不同的Java面试中见过这个问题,尤其是对服务器端Java开发人员的面试。由于FIX(金融信息交换)协议也是一个基于TCP协议,一些投资银行,对冲基金,和交换解决方案提供商也在寻找有良好的

2017-03-10 21:33:43 251

转载 c++面试总结(+网上收入)--内存管理(

1.谈谈你对C++内存分配的理解1.1 还是的先看看C++对内存分为哪几个区?1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。想知道为什么效率高吗?因为关于栈的操作如push集成在处理器的指令集中,效率很高,但是分配的内存容量有限。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由

2017-03-10 21:26:40 311

转载 C/C++ 笔试面试(1)—— sizeof

sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊

2017-03-10 21:25:22 155

转载 C/C++ 笔试面试(2)——二分查找

Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。难怪有人说,二分查找原理简单,甚至小学生都能明白。不过这查找算法好多专家都写不好。我自己尝试了一下,确实要第一次就完全写正确不容易.以下两份实现依次为迭代和递归版本的代码,二分查找的思想很多人都清楚,但是这里有一个细节就是要注意边界的选择。

2017-03-10 21:24:09 192

转载 C++常见面试题—内存管理GetMemory()

1.关于动态申请内存的问题 出现率极高程序的局部变量存在于(栈)中程序的全局变量存在于(静态存储区)中程序动态申请的数据存在于(堆)中[cpp] view plain copy print?void GetMemory(char *p)  {      p = (char *)malloc(100);  }    

2017-03-10 21:21:54 4531

转载 C几个经典的关于内存的笔试题

Getmemory的几个经典的关于内存的笔试题:[cpp] view plain copy print?void GetMemory( char *p )  {      p = (char *) malloc( 100 );  }    void Test( void )   {      char *str = NULL;      Ge

2017-03-10 21:17:53 963

转载 C++30道常见面试题

1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象

2017-03-10 21:15:22 198

转载 C++单例模式

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。       单例模式有许多种实现方法,在C++中,甚至可以直接用一个全

2017-03-08 10:48:19 130

转载 TCP通信粘包问题分析和解决

TCP通信粘包问题分析和解决(全)在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科

2017-03-07 10:26:43 211

转载 虚函数表放在哪里

引言:近日CSDN的"C/C++语言"版的一个问题引起了我的注意:"请问虚函数表放在哪里?"。我也曾经思考过这个问题,零零散散也有一定的收获,这次正好趁这个机会把我对这一部分的理解整理一下。 首先值得声明的是,本文的编译环境是VS2002+WinXP。C++标准并没有对虚函数的实现作出任何的说明,甚至都没有提到虚函数的实现需要用虚表来实现,只不过主流的C++编译器的虚函数机制都是通过虚表来

2017-03-06 18:47:09 318

转载 多态是如何实现的

1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包

2017-03-06 18:29:04 808

转载 C/C++关键字static总结

1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){

2017-03-03 19:51:03 130

转载 哈希查找

1.为什么要用哈希查找之前所讲的查找方法都是需要比较待查找元素与线性表或者树中的元素才能实现。这样的时间复杂度为O(n)或者O(log n),那么有没有可能当给定一个待查找元素x,我们通过一种特殊的计算,计算出该元素在数组A的位置i,那么就可以直接找到该元素A[i]哈希函数就是这种特殊的计算,能够降低时间复杂度。2.特殊计算的定义——哈希函数(散列函数)STL中

2017-03-03 19:19:16 656

转载 海量数据解题思路

例题: 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?   方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。   s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。

2017-03-02 19:43:57 153

转载 Ubuntu更改Mysql新建的数据库存放位置

     mysql默认是存储在/var/lib/mysql目录下的,这个路径是在mysql的配置文件/etc/my.cnf中进行设置的。现在我想改变数据库的保存目录为/root/mysql/db_save_pos/。于是,我将/etc/my.cnf文件中的datadir=/var/lib/mysql  一行改为:datadir=/root/mysql/db_save_pos,接着关闭my

2017-03-01 20:32:10 1897

转载 散列表(哈希表)查找算法

散列方法不同于顺序查找、二分查找、二叉排序树及B-树上的查找。它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O(1)。散列表的概念1、散列表      设所有可能出现的关键字集合记为U(简称全集)。实际发生(即实际存储)的关键字集合记为K(|K|比|U|小得多)。      散列方法是使用函数h将U映

2017-03-01 20:30:14 587

转载 堆排序原理及算法实现(大根堆)

堆排序       堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆  堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:  Key[i]=Key[2i+1]&&key>=key[2i+2]  即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。  堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+

2017-03-01 20:28:29 1721

转载 守护进程&创建守护进程&fork一次和fork两次的区别

我们先来了解一下什么是守护进程?守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。守护进程的特点:(1)Linux系统启动时会启动很多系统服务进程,守护进程

2017-03-01 20:24:49 198

空空如也

空空如也

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

TA关注的人

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