最新 | 最热门 | 最高评价

+0  Cuckoo Filter:设计与实现

Tag: C/C++语言 | 数据库 | 程序设计 | 趣味问题 | Algorithm | filter | hashing | 海量数据
Leo 发于 2015年09月02日 09:18 | 点击: 2019 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

对于海量数据处理业务,我们通常需要一个索引数据结构,用来帮助查询,快速判断数据记录是否存在,这种数据结构通常又叫过滤器(filter)。考虑这样一个场景,上网的时候需要在浏览器上输入URL,这时浏览器需要去判断这是否一个恶意的网站,它将对本地缓存的成千上万的URL索引进行过滤,如果不存在,就放行,如果(可能)存在,则向远程服务端发起验证请求,并回馈客户端给出警告。

索引的存储又分为有序和无序,前者使用关联式容器,比如B树,后者使用哈希

查看全文: http://www.udpwork.com/item/14563.html

+0  谜题的答案和活动的心得体会

Tag: 杂项资源 | 趣味问题 | Algorithm | Linux | Puzzle | Unix
陈皓 发于 2014年08月06日 07:47 | 点击: 1808 | 展开摘要
我于2014年8月3日周六的上午在微博、twitter、CoolShell上发布了一个和程序员有关的解谜题的活动——【活动】解谜题送礼物。我使用了二级域名fun.coolshell.cn做为这次活动的页面。

截止这篇文章发布的时候,fun.coolshell.cn的访问量UV大约有4万左右,通关人数大约有200人,但因为在活动的第二天网上就出了一些答题攻略,通过分析,实际靠自己能力通过的人数在130人左右。通过率大约不到4‰的样子。

在这里我把整个谜题和做这个活动的东西写

查看全文: http://www.udpwork.com/item/12864.html

+0  【活动】解迷题送礼物

Tag: 杂项资源 | 趣味问题 | Algorithm | Puzzle
陈皓 发于 2014年08月03日 18:52 | 点击: 1534 | 展开摘要
首先,先跟大家道歉一下最近CoolShell大约长达一个多月没有什么更新,原因主要在于,我去看世界杯去了,这一个月的世界杯熬夜看球使我的精力不佳,导致世界杯结束后的几个星期也没有缓过来,所以没有更新什么文章。好多朋友写邮件或是在微博上at我催我更新,所以有点惭愧了。

精神不佳我就不写文章了。于是,世界杯过后,我每天都会抽出每天晚上和周末的一些碎片时间,我仿照一些前端过关的游戏,做了几个和程序员有关的迷题,也是要通关的,不过和前端知识没什么关系。这个游戏我放到了下面这个二级域

查看全文: http://www.udpwork.com/item/12849.html

+0  如何用最有创造力的方式输出42

Tag: 趣味问题 | 轶事趣闻 | 42 | Programming | 程序员
陈皓 发于 2014年03月06日 22:42 | 点击: 2251 | 展开摘要
酷壳似乎好长时间没有像《编程真难啊》或是《老手是这样教新手编程的》或是像《如何写出无法维护的代码》这样“严肃正经”的文章了,所以,赶在大家还没有向我扔臭鸡蛋前奉献一篇。这篇文章来自CodeGolf.StackExchange上的《Most creative way to display 42》—— 请以最有创造力的方式输出42。于是出现了下面的这些答案(注:精彩的总是留在最后面)

人生和宇宙终级问题的答案:42

这里,需要介绍一下为什么要输出42。这时因为42是我们人生,

查看全文: http://www.udpwork.com/item/11908.html

+0  一个“蝇量级” C 语言协程库

Tag: C/C++语言 | 程序设计 | 趣味问题 | C++ | coroutine | Queue | yield | 协程
Leo 发于 2014年01月28日 10:50 | 点击: 6269 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

协程(coroutine)顾名思义就是“协作的例程”(co-operative routines)。跟具有操作系统概念的线程不一样,协程是在用户空间利用程序语言的语法语义就能实现逻辑上类似多任务的编程技巧。实际上协程的概念比线程还要早,按照 Knuth 的说法“子例程是协程的特例”,一个子例程就是一次子函数调用,那么实际上协程就是类函数一样的程序组件,你可以在一个线程里面轻松创建数十万个协程,就像数十万次函数调用一样。只不过子例程只有一

查看全文: http://www.udpwork.com/item/11640.html

+0  伙伴分配器的一个极简实现

Tag: C/C++语言 | 程序设计 | 趣味问题 | Algorithm | Buddy | 内存管理
Leo 发于 2013年10月09日 23:10 | 点击: 2160 | 展开摘要
(感谢网友 @我的上铺叫路遥 投稿)

提起buddy system相信很多人不会陌生,它是一种经典的内存分配算法,大名鼎鼎的Linux底层的内存管理用的就是它。这里不探讨内核这么复杂实现,而仅仅是将该算法抽象提取出来,同时给出一份及其简洁的源码实现,以便定制扩展。

伙伴分配的实质就是一种特殊的“分离适配”,即将内存按2的幂进行划分,相当于分离出若干个块大小一致的空闲链表,搜索该链表并给出同需求最佳匹配的大小。其优点是快速搜索合并(O(logN)时间复杂度)以及低外部碎片(

查看全文: http://www.udpwork.com/item/10916.html

+0  一个fork的面试题

Tag: C/C++语言 | Unix/Linux | 操作系统 | 编程语言 | 趣味问题 | C++ | fork | Puzzle | Unix | 面试
陈皓 发于 2012年08月01日 08:20 | 点击: 2233 | 展开摘要
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:

题目:请问下面的程序一共输出多少个“-”?

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
int i;
for(i=0; i<2; i++

查看全文: http://www.udpwork.com/item/7851.html

+5  神奇的CSS形状

Tag: Web开发 | 编程语言 | 趣味问题 | CSS
Neo 发于 2012年03月24日 20:35 | 点击: 2767 | 展开摘要
【感谢 Neo 投递本文 – 微博帐号:@_锟_ 】

在StackOverflow上有这么一个问题,有位同学在http://css-tricks.com/examples/ShapesOfCSS/  找到一些使用CSS做的形状,其中一位同学对下面的这个形状充满了疑问。

形状是:

代码是:

#triangle-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px

查看全文: http://www.udpwork.com/item/7034.html

+0  软件真的好难做啊

Tag: 程序设计 | 趣味问题 | 轶事趣闻 | Design | Programmer | 程序员
陈皓 发于 2011年06月10日 08:45 | 点击: 2372 | 展开摘要
还记得以前本站的那一篇“编程好难啊”吗,那是一篇众程序员调侃程序新手的文章,有恶搞的成分在里面。今天要和大家说的这个事没有一些恶搞和调侃的意思,是比较严肃的话题,你一定可以从中收获一些东西。这个话题来自StackOverflow上的一个问题——Cycle in Family Tree Software,这个程序员问了下面这个问题:

我是一个写家族族谱软件的程序员(我用的是C++和Qt),这个软件基本上没有什么问题,真到有一天有个用户报告了一个bug。这个问题是这样的——我这

查看全文: http://www.udpwork.com/item/5226.html

+0  面试题:火车运煤问题

Tag: 杂项资源 | 职场生涯 | 趣味问题 | Puzzle | 面试
陈皓 发于 2011年04月11日 09:01 | 点击: 3543 | 展开摘要
这个可能是一个比较经典的智力题了,和以前的那个《赛马问题》很相似,其题目如下:

你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?

这道题一开始看上去好像是无解的,因为你的火车每一公里就要消耗一吨煤,而到目的地有1000公里,而火车最多只能装1000吨媒。如

查看全文: http://www.udpwork.com/item/4774.html

+0  又一个有趣的面试题

Tag: C/C++语言 | 程序设计 | 趣味问题 | C++ | Puzzle | 面试
陈皓 发于 2011年04月02日 11:22 | 点击: 2443 | 展开摘要
大家还记得前些天的那个火柴棍式的面试题吗?很有趣吧。下面是我今天在StackExchange上看到的一个有趣的面试题。大家不妨一起来思考一下。问题如下——

有两个相同功能代码如下,请在在A,B,C是什么的情况下,请给出三个原因case 1比case 2快,还有三个原因case 2会比case 1要执行的快。(不考虑编译器优化)

for (i=0; i<N; ++i){
A;
B;
C;
}

for (i=0; i<N; ++i){

查看全文: http://www.udpwork.com/item/4712.html

+40  “火柴棍式”程序员面试题

Tag: C/C++语言 | 趣味问题 | C++ | Puzzle | 面试
陈皓 发于 2011年03月21日 08:28 | 点击: 5656 | 展开摘要
有时候,有些面试题是很是无厘头,这不,又有一个,还记得小时候玩的的“火柴棍游戏”吗,就是移动一根火柴棍改变一个图或字的游戏。程序面试居然也可以这么玩,看看下面这个火柴棍式的程序面试题吧。

下面是一个C程序,其想要输出20个减号,不过,粗心的程序员把代码写错了,你需要把下面的代码修改正确,不过,你只能增加或是修改其中的一个字符,请你给出三种答案。

int n = 20;

for(int i = 0; i < n; i--){
printf("-&q

查看全文: http://www.udpwork.com/item/4554.html
|<<<12>>>| 一共2页, 16条记录