自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

转载 楼层扔鸡蛋问题

==有限层数和蛋数,求即使最坏情况下需要的最少判断次数==两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。(参见[两个鸡蛋--一道Google面试题])这是典型的动态规划问题。假设f[n]表示从n层楼找到摔鸡蛋不碎安全位置的最少判断次数。假设第一个鸡蛋第

2013-11-21 14:26:06 373

转载 HashMap的工作原理

本文由 ImportNew - 唐小娟 翻译自 Javarevisited。如需转载本文,请先参见文章末尾处的转载要求。HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投

2013-11-16 14:52:20 222

转载 字符串匹配 KMP 算法

KMP算法中的KMP分别是指三个人名:Knuth、Morris、Pratt,其本质也是前缀匹配算法,对比前缀蛮力匹配算法,区别在于它会动态调整每次模式串的移动距离,而不仅仅是加一,从而加快匹配过程。下图通过一个直观的例子展示前缀蛮力匹配算法和KMP算法的区别,前文提过,这二者唯一的不同在于模式串移动距离。上图中,前缀蛮力匹配算法发现匹配不上,就向右移动距离1,而KMP算法根

2013-09-03 00:44:09 219

转载 Java 线程池的原理与实现

建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。我对此书印象最深之一的就是:equal()方法,由浅入深,经典!还有就是

2013-04-20 11:15:58 189

原创 poj2411 解题报告

题目:给你一个h*w的矩形,用一个1*2的小矩形去填充,问有多少种填充方法,不考虑对称性详细的解题报告参考:http://www.2cto.com/kf/201208/146894.html下面描述代码实现#include #include #define swap(x, y) do { \ int t; \ t = x; \ x = y; \ y = t;

2013-03-26 21:06:26 348

poj2411 解题报告

#include #include #define swap(x, y) do { \ int t; \ t = x; \ x = y; \ y = t; \}while(0) \#define MAXN 1<<11long long f[2][MAXN];long long ans[12][12];int width;int test11(int x) {

2013-03-26 18:25:46 214

转载 滚动数组

滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。一个简单的例子:斐波那契数列:一般代码:#include#includeusing namespace std;

2013-03-25 15:26:45 222

转载 JAVA参数传递

这是个老生常谈的问题了,引起过无数争论,但可以说一直没有一个令人满意的回答。有些人非要故弄玄虚,把传引用说成是栈里面放的是引用的值,说只有传值没有传引用,那看看这句经典名言吧:O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts it best: "Java manipulates objects

2013-03-14 15:11:59 173

原创 使用JAVA实现发送邮件

首先我们需要一个账号验证的类Email_Autherticator.java:import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Email_Autherticator extends Authenticator { String username = "mfkn

2013-03-14 14:52:39 280

原创 内存动态分配函数 malloc 和 calloc 的区别

函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。首先看他们的函数申明:void* malloc(size_t size);void* calloc(size_t numElements, size_t sizeOfElement);       可以看到,malloc()函数只有一个函数,即请求分配的内存空间大小;而calloc()函数有两个参数,分别表

2013-02-27 14:22:02 248

转载 strcpy和memcpy的区别

strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

2013-02-25 15:19:41 139

原创 Redis 源码分析四:skip list

Skip list是一种多层次的有序链表,通过随机地选择层数来实现插入、查找和删除都是O(logn)的时间复杂度(和平衡树同样的效率,但实现比平衡树简单很多)。关于skip list的具体介绍可以参见William Pugh的论文:Skip Lists: A Probabilistic Alternative to Balanced Trees 。也可以参见上一篇日志。如下图,为一个简单的

2013-02-05 01:39:06 668

转载 Skip Lists: A probabilistic Alternative to Balanced Trees (翻译)(转)

本博客主要介绍skiplist的算法原理,包括skiplist增删改查,下一篇博客将介绍skiplist的复杂度分析。(博客内容主要是翻译Skip Lists: A probabilistic Alternative to Balanced Trees)Skip list(跳跃表)是一种可以代替平衡树的数据结构。Skip lists应用概率保证平衡,平衡树采用严格的旋转(比如平

2013-02-03 23:02:14 441

原创 Redis 源码阅读三:Intset

Intset 实现redis的整数集合结构,它使用有序数组来表示集合,其结构体如下:typedef struct intset { uint32_t encoding; uint32_t length; int8_t contents[];} intset;encoding 表示Inset的编码类型,有三种类型:INTSET_ENC_INT16, INTSET_

2013-02-03 21:44:01 292

原创 Redis 源码阅读二:adlist/zipmap

1.      AdlistAdlist 是一个通用的双向链表,其内部结点和链表的结构体如下:typedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;typedef struct list { listNode *he

2013-02-03 13:50:04 195

原创 Redis 源码阅读一:dict.c/h 字典实现

Dict 和 hash 是 Redis 中最基础的核心数据结构之一,在src目录下的dict.c 和dict.h 定义了Hash的接口和实现。本文将对这两个文件进行解析,借此加深了解Redis的Hash实现。如下图是Dict 实现的数据结构组织:在分析源码之前,我们先介绍下Redis中的实现思路。Redis 使用链表来解决 hash冲突的问题。每个字典使用两个哈希表

2013-01-25 20:04:34 409

原创 Nginx 服务器压力测试工具 webbench

目前较为常见的网站压力测试工具有webbench、ab(apache bench)、tcpcopy、loadrunner  webbench由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL,部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发) 。  ab(apache bench)Apache自带的压力测试工具,主

2013-01-23 14:41:56 353

转载 C 语言中的getchar()函数 和EOF

在C语言中有个重要的库函数getchar(),可从终端获得一个字符的ASCII码值。在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的字符都会缓冲在键盘缓冲器中,直到回车换行一次性将所有字符按序依次赋给相应的变量,在这里一定要注意最后一个字符即'\n',该字符也会赋给一个相应的变量(当然这要你定义的用来接收字符的变量数比你输入的可见字符多一才可以)。  其实,getch

2013-01-20 11:45:43 220

nginx 基本数据结构

1. nginx 代码目录结构在src目录下有如下几个目录:core event http mail misc os各子目录存放不同类型的代码,其中:core : 该目录存放core module的代码,也是nginx服务的入口http : http core module 的代码,nginx作为web/http proxy server运行时的核心模块ma

2013-01-18 10:51:22 91

原创 hiRedis Synchronous API

hiRedis操作同步API的接口函数只需下面三个即可:redisContext*redisConnect(const char *ip, int port);void*redisCommand(redisContext *c, const char *format, ...);voidfreeReplyObject(void *reply);1. 连接(Connectin

2013-01-16 19:21:55 1268

原创 Redis 安装和运行

Redis 安装非常简单,因为连configure文件都不需要,你只需要make就好。Redis 2.4.15目前是最新稳定版,下载地址:http://redis.googlecode.com/files/redis-2.4.15.tar.gz2.1      安装过程如下:$wget http://redis.googlecode.com/files/redis-2.4.15.tar

2013-01-16 15:27:07 219

原创 Redis 介绍

1.    Redis介绍1.1   Redis是什么REmote DIctionary Server(Redis) 是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、key-value存储系统,并提供多种语言的API接口。Redis能运行在大多数POSIX(Linux,*BSD, OS X 和Solaris等)系统上,官方没有支持Windows的版本。目前最

2013-01-16 15:25:35 310

原创 Redis Command

http://redis.io/commands

2013-01-16 13:29:58 174

原创 hiredis 安装和测试

首先去github下载源码,地址如下:https://github.com/redis/hiredis,该网页下包括函数详细说明安装:$unzip hiredis-master.zip$cd hiredis-master$make $make install编写测试代码 connect.c#include #include #include #incl

2013-01-15 13:21:54 772

Redis C语言API hiredis 安装

首先从Github下载 hiredis-master.zip地址:https://github.com/redis/hiredis安装:$unzip hiredis-master.zip$cd hiredis-master$make如上操作,C客户端就装好,关键是在于配置,可以手动配置,也可以直接make install,这样会将需要的libhiredis.so libhi

2013-01-15 13:11:30 182

原创 nginx 常见宏定义

#define ngx_string(str) { sizeof(str) - 1, (u_char *) str }#define ngx_null_string { 0, NULL }#define ngx_str_set(str, text) \ (str)->len =

2013-01-14 14:16:51 221

转载 Tar打包、压缩与解压缩到指定目录的方法

tar在linux上是常用的打包、压缩、加压缩工具,他的参数很多,这里仅仅列举常用的压缩与解压缩参数参数:-c :create 建立压缩档案的参数;-x : 解压缩压缩档案的参数;-z : 是否需要用gzip压缩;-v: 压缩的过程中显示档案;-f: 置顶文档名,在f后面立即接文件名,不能再加参数举例: 一,将整个/home/www/images 目录下的文件全

2013-01-14 14:10:29 155

转载 Linux crontab 命令格式与详细例子 (转)

基本格式 :*  *  *  *  *  command分 时 日 月 周 命令第1列表示分钟1~59 每分钟用*或者 */1表示第2列表示小时1~23(0表示0点)第3列表示日期1~31第4列表示月份1~12第5列标识号星期0~6(0表示星期天)第6列要运行的命令crontab文件的一些例子:30 21 * * * /usr/local/etc

2013-01-14 14:08:45 152

北大编译原理PPT

北京大学的编译原理讲义,好东西

2008-07-10

空空如也

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

TA关注的人

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