关闭

自定义memcpy和strcpy

memcpy memcpy是C语言中的内存复制函数,它的函数原型: void *memcpy(void *dest,const void *src,int size)它的目的是将SRC指向地址为起始地址的连续size 个字节的数据复制到dest指向的地址为起始地址的空间内,注意这两块内存区域不能重叠,同时与strcpy相比,没有遇到'\0'截止一说而是一定赋值size个字节,而且可以用来复制任...
阅读(82) 评论(0)

已知randx构造randx+n

例如如何根据随机函数rand7()来构造rand10()函数。已知rand7()函数返回1-7的随机数,那么rand7()-1将得到一个离散整数集合{0,1,2,3,4,5,6},该集合中每个整数的出现概率1/7,那么(rand7()-1)*7将得到另一个离散整数集合A={0,7,14,21,28,35,42},其中每一个概率也是1/7。而rand7()得到的集合B={1,2,3,4,5,6,7}...
阅读(53) 评论(0)

设计模式初见

常见分类 1 创建型 创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。 2 结构性 用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式adapter、桥接模式bridge、组合器模式compon...
阅读(38) 评论(0)

C++ boost

Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。 Boost中比较有名气的有这么几个库: Regex:正则表达式库; Spirit LL parser f...
阅读(35) 评论(0)

数据库索引

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为...
阅读(51) 评论(0)

Linux 下几款程序内存泄漏检查工具

1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西)2.程序的健硕性如何(服务器任何程序的基本要求就是要满足高并发的要求,也就是说,如果达不到这个基本要求,程序并并不能成为服务器) 针对第一点,以下将介绍几款内存泄漏检查工具 工具 描述 valgri...
阅读(60) 评论(0)

libevent的了解

概念 libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。 它被众多的开源项目使用,例如大名鼎鼎的memcached等。 特点: 事件驱动,高性能; 轻量级,专注于网络(相对于ACE); 开放源码,代码相当精炼、易读; 跨平台,支持Windows、Lin...
阅读(56) 评论(0)

MemCache的了解

MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念...
阅读(81) 评论(0)

面试算法之范围搜索问题

例1:平面上百万个点,设计数据结构求每个点最近的k个点 例2:游戏中打怪时已经各个小怪的坐标,你放一个技能是圆形范围,快速求能打到的小怪 KD树:http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html 最近邻搜索: k近邻搜索: 参考: http://blog.csdn.net/da...
阅读(80) 评论(0)

mmap

概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进...
阅读(56) 评论(0)

死锁/活锁/锁饥饿

死锁 所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。产生死锁的原因: 1 系统资源不足 2 进程推进的顺序不合理 3 资源分配不合理 导致死锁的四个必要条件: 1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。 2...
阅读(87) 评论(0)

无锁编程的了解

多线程编程是多CPU系统在中应用最广泛的一种编程方式,在传统的多线程编程中,多线程之间一般用各种锁的机制来保证正确的对共享资源(share resources)进行访问和操作。这种基于锁机制的多线程同步存在以下问题: 1产生竞争时,线程被阻塞等待,无法做到线程实时响应; 2 死锁 3 活锁 4 申请和释放锁的操作,增加了很多访问共享资源的消耗,尤其是在锁竞争(loc...
阅读(71) 评论(0)

在从1到n的正数中1出现的次数

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。 例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。 最简单思路,就是从1-n一个刚数字进行判断然后计数即可, int NumberOf1BeforeBetween1AndN_Solution1(unsigned int n) { int number = 0; // Fin...
阅读(61) 评论(0)

数据库索引

一 概念 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 二底层结构 数据库底层数据结构是B+树,B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。 B+tree的性质: 1.n棵子tree的节点包含n个关键字,不用来保存数...
阅读(57) 评论(0)

虚拟内存

虚拟内存机制 1.为什么要有虚拟内存 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。 当运行多个程序时,经常会出现以下问题: 1)进程地址空间不隔离,没有权限保护。 由于程序都是直接访问物理内存,所以一个进程可以修改其他进程的内存数据, 甚至修改内核地址空间中的数据。 2)内存使用效率低 当内存空间不足时,要将其他程序暂时拷贝到硬盘,...
阅读(57) 评论(0)
273条 共19页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:114274次
    • 积分:3550
    • 等级:
    • 排名:第9620名
    • 原创:238篇
    • 转载:35篇
    • 译文:0篇
    • 评论:19条
    最新评论