- 博客(16)
- 资源 (9)
- 收藏
- 关注
原创 单链表有环问题
面试中单链表有环问题及其变形单链表是否相交是比较常见的问题,这里总结如下1判断是否有环,引入slow=slow->next慢指针和fast=fast->next->next,这两个指针如果有环则迟早相遇//是否有环struct node{int val;node* next;};bool ishoop(node *h){node *slow=h;node *fast=h;...
2017-09-23 10:25:06 676
转载 MVC的转载
一、什么是MVC 1、概念 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理
2017-09-21 21:10:01 282
原创 自定义memcpy和strcpy
memcpymemcpy是C语言中的内存复制函数,它的函数原型:void *memcpy(void *dest,const void *src,int size)它的目的是将SRC指向地址为起始地址的连续size 个字节的数据复制到dest指向的地址为起始地址的空间内,注意这两块内存区域不能重叠,同时与strcpy相比,没有遇到'\0'截止一说而是一定赋值size个字节,而且可以用来复制任
2017-09-15 11:28:52 466
原创 已知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}
2017-09-15 10:53:21 505
原创 设计模式初见
常见分类1 创建型创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。2 结构性用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式adapter、桥接模式bridge、组合器模式compon
2017-09-13 22:55:48 267
原创 C++ boost
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。Boost中比较有名气的有这么几个库:Regex:正则表达式库; Spirit LL parser f
2017-09-13 16:53:18 553
转载 数据库索引
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为
2017-09-12 23:29:25 510
转载 Linux 下几款程序内存泄漏检查工具
1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西)2.程序的健硕性如何(服务器任何程序的基本要求就是要满足高并发的要求,也就是说,如果达不到这个基本要求,程序并并不能成为服务器)针对第一点,以下将介绍几款内存泄漏检查工具工具描述valgri
2017-09-11 15:01:27 421
原创 libevent的了解
概念libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。它被众多的开源项目使用,例如大名鼎鼎的memcached等。特点:事件驱动,高性能;轻量级,专注于网络(相对于ACE);开放源码,代码相当精炼、易读;跨平台,支持Windows、Lin
2017-09-06 00:21:39 457
原创 MemCache的了解
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念
2017-09-06 00:18:03 293
转载 面试算法之范围搜索问题
例1:平面上百万个点,设计数据结构求每个点最近的k个点例2:游戏中打怪时已经各个小怪的坐标,你放一个技能是圆形范围,快速求能打到的小怪KD树:http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html最近邻搜索: k近邻搜索:参考: http://blog.csdn.net/da
2017-09-05 11:31:42 2341
转载 mmap
概念mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进
2017-09-04 00:37:26 2328
原创 死锁/活锁/锁饥饿
死锁所谓死锁是指多个进 程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。产生死锁的原因:1 系统资源不足2 进程推进的顺序不合理3 资源分配不合理导致死锁的四个必要条件:1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。2
2017-09-03 22:04:57 1164
原创 无锁编程的了解
多线程编程是多CPU系统在中应用最广泛的一种编程方式,在传统的多线程编程中,多线程之间一般用各种锁的机制来保证正确的对共享资源(share resources)进行访问和操作。这种基于锁机制的多线程同步存在以下问题:1产生竞争时,线程被阻塞等待,无法做到线程实时响应;2 死锁3 活锁4 申请和释放锁的操作,增加了很多访问共享资源的消耗,尤其是在锁竞争(loc
2017-09-03 20:58:55 656
原创 在从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
2017-09-02 16:08:10 372
原创 数据库索引
一 概念索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。二底层结构数据库底层数据结构是B+树,B+tree 是一个n叉树,每个节点有多个叶子节点,一颗B+树包含根节点,内部节点,叶子节点。根节点可能是一个叶子节点,也可能是一个包含两个或两个以上叶子节点的节点。B+tree的性质:1.n棵子tree的节点包含n个关键字,不用来保存数
2017-09-02 10:57:15 274
clang_library
2015-11-28
tags_vim_master
2015-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人