博文

目前显示的是 三月, 2013的博文

记一下那些伪随机数生成函数

    Han 通过 Google 阅读器发送给您的内容:     记一下那些伪随机数生成函数 于 13-3-27 通过 basic coder 作者:levin 今天踩了一个伪随机数生成函数的坑,与其说是个坑到不如说自己功力不够深厚,对这些随机数生成的函数族欠缺了解,先来介绍下我的问题吧。 拿了100M的数据用LDA算法来跑,单线程的时候一次迭代需要大约15s的时间,而改用两个线程跑,线程之间对不同的数据块进行迭代,一次迭代完成的时间居然需要大约50s,而且线程数越多就会越慢,因为迭代的采样函数是一个纯计算的函数,多线程的情况下每个线程的数据量要比单线程成倍地缩小,迭代速度相比单线程应该快N倍才对,现在的结果是不符合常理的,因为每个线程都是独立的训练集,线程之前没有共享数据。 其实在我用几M的小数据测试的时候就发现这个问题,当时以为是数据量小迭代速度太快,以至于在迭代完成后的线程同步占用了一些时间才导致多线程版本会慢于单线程版本,但数据量大的时候这样就不可理解了。 后来开了两个线程发现,迭代计算的时候两个CPU大部分时间居然都没有跑在用户空间,相反大量的cpu时间都耗在了系统时间,仔细看了代码,这部分就只有一个random()函数不是我的计算函数,改成定值之后测试速度马上彪上去了,那就可以断写问题就出在这里。 random()函数是不可重入的函数,不保证它是线程安全的,但我看了glibc的代码发现, 其实它在glibc的实现里面是线程安全的: long int __random ( ) { int32_t retval ;   __libc_lock_lock ( lock ) ;   ( void ) __random_r ( & unsafe_state , & retval ) ;   __libc_lock_unlock ( lock ) ;   return retval ; }   weak_alias ...

仰望星空 脚踏实地

    Han 通过 Google 阅读器发送给您的内容:     仰望星空 脚踏实地 于 13-3-21 通过 Parallel Labs 作者:Guancheng 最近连续跟IBM的一位VP和一位Fellow有过交流,对"仰望星空,脚踏实地"有了一些新的体会,特在此分享。 仰望星空 讲的是你做事情的vision,或者是说你的动机。作为一名研究员来讲,最兴奋最幸福的事情莫过于对社会产生巨大的影响。IBM Fellow Chieko Asakawa(浅川智惠子)是无障碍设计领域的杰出研究人员,她领导了IBM于1997年专为盲人设计的语音浏览器 Homepage Reader 等一系列产品,而浅川院士本身就是一位盲人。在1997年互联网还没有很普及的时候,根据自己的需求研发了这样一款产品,不得不佩服她敏锐的技术触觉。但是最关键的是她长期以来对技术的vision。她的目标很简单:利用计算技术帮助盲人(及其他残障人士)更好地接触数字信息和社会环境,她说这是她的dream。跟那位VP的聊天中谈到技术项目的评估第一步往往要看它的vision是什么。其实不管是研究还是开发,第一步往往是要讲清楚你要做的这件事情的vision是什么,通过你要做的事情你改变了什么?你解决了什么问题?这件事情能不能使听众一听就觉得很买账?可以说vision好不好直接决定两件事情: 你自己是不是很兴奋的要去做这件事情 , 以及你能从你的听众那里得到多少支持(可以是你的老板,你的投资人) 。IBM CRL领导过两个IBM Research全球的研究项目: Wireless Network Cloud (无线网络云)和Internet of Things(物联网),一个是用软件来实现传统硬件基站的功能,一个是将物理世界和数字世界连接起来。Facebook,Google,Apple,Cloud Computing,Software Defined Network,Mobile,Big Data,Social,Virtualization这些名词背后你都能找到一个很鼓舞人的vision。想vision的...

[原]程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离

图片
    Han 通过 Google 阅读器发送给您的内容:     [原]程序员编程艺术第二十八~二十九章:最大连续乘积子串、字符串编辑距离 于 13-3-20 通过 结构之法 算法之道 作者:v_JULY_v                 第二十八~二十九章:最大连续乘积子串、字符串编辑距离 前言     时间转瞬即逝,一转眼,又有4个多月没来更新 blog 了,过去4个月都在干啥呢?对的,今2013年元旦和朋友利用业余时间一起搭了个方便朋友们找工作的编程面试算法论坛:为学论坛 http://www.51weixue.com/ 。最近则开始负责一款在线编程挑战平台:英雄会的产品运营 http://hero.pongo.cn/ ,当然拉,虽说是产品运营,实际上身兼"数职":出题审题,写代码测试,制定比赛规则等等一个都不敢落下。     前几天跟百度的几个朋友线下闲聊,听他们说,百度校招群内的不少朋友在找工作的时候都看过我的blog,一听当即便激起了自己重写此blog的欲望,恰巧眼下阳春三月( 虽说已是3月,奇妙的是,前两天北京还下了一场大雪 ),又是找工作的季节( 相对于每年的9月份来说,3月则是一个小高潮 ),那就从继续更新专为IT人员找工作时准备笔试面试的程序员编程艺术系列开始吧。     再者从去年4月份上传的编程艺术前27章的PDF文档的1.3万下载量来看 http://download.csdn.net/detail/v_july_v/4256339 ,此系列确确实实帮助了成千上万的人。 Yeah...

金钱或者经验,你现在想要的是哪个?

图片
    Han 通过 Google 阅读器发送给您的内容:     金钱或者经验,你现在想要的是哪个? 于 13-3-20 通过 36氪 | 关注互联网创业 作者:leon@36kr.com (leon) 我经常会跟各种创业者交流,商量他们是否给加入某家创业公司。我通常会使出老招式,用问题回答问题:"金钱或者经验,你现在想要哪个?" 你瞧,如果你打算加入一家已经拿到500万美元的创业公司,在里面做一个市场总监、产品经理、资深构架师或者国际事业部老大,想挣够退休金的希望是非常渺茫的。但是没关系,并不是每份工作都需要成为你的重大突破,就算这份工作只是提供一个学习机会也不错嘛。 但是我还是经常碰到各种人问我这家公司会不会撞大运。在我看来,这些人是把钱和经验弄混了。简单的算一下就明白了,比如你有0.25%的股份,这家公司B轮拿到了500万美元,假设VC对它的估值正常,就是说这轮拿到了1/3的股份,500万除以1/3就是1500万美元的估值。如果这家公司以后再也融不到下一轮了(很有可能哟),最后VC正常退出(平均是5000万美元),那么你的股份值多少呢?12.5万美元。就这么多。简单的算术就能解决问题,但是人们就是很少去做。 我们假设花了4年时间来退出,那就是每年31250美元。这些是优先认股权,不是受限制股票,所以你得交一笔短期资本利得税,在加州大概是42.5%,最后也就是每年18000美元,这还是乐观的!对了,这儿还没考虑优先清算权,也就是说你拿的会更少。 别误会我,不是说钱不重要,只是在Palt Alto或者Santa Monica买套房得200万,这点钱真没啥用。 我不想打击你,只是想让你看清现实。如果你想挣钱(我是指起码能买套房),你就得自己去开公司或者做高管,或者天上掉馅饼你能成为类似Google、Fac...

ulimit限制之nproc问题

    Han 通过 Google 阅读器发送给您的内容:     ulimit限制之nproc问题 于 13-3-12 通过 淘宝核心系统团队博客 作者:褚霸 前两天微博上的@王关胜同学问了个问题: #ulimit问题# 关于nproc设置:centos6,内核版本是2.6.32. 默认情况下,ulimit -u的值为1024,是/etc/security/limits.d/90-nproc.conf的值限制;注释掉这个限制后,值为95044;手工设置90-nproc.conf文件,值为新设置的值。想请 问这个95044是怎么来的? 这个问题挺有意思的,这里面有二个信息点: 1. 为什么limit配置文件是 /etc/security/limits.d/90-nproc.conf 而不是其他? 2. 为什么是nproc的值95044,而不是其他。 之前我也写了些ulimit的问题的解决,参见 这里 我们来简单的做下实验: $ cat /etc/security/limits.d/90-nproc.conf * soft nproc 8933 $ ulimit -u 8933 $ cat /etc/security/limits.d/90-nproc.conf #注释掉 #* soft nproc 8933 $ ulimit -u 385962 我们可以看出就是说当注释掉限制的话,不同的机器值是不同的。 我们先来回答第一个问题:为什么limit配置文件是 /etc/security/limits.d/90-nproc.conf 而不是其他 这个问题早些时候 杨德华 同学碰到了,也写了篇 博文 来解释redhat6下面如何破解nproc的限制,但是文章没提到这个问题。 我们一步步来看这个问题,首先看下 谁在使用 90-nproc.conf ...

Linux下如何知道文件被那个进程写

    Han 通过 Google 阅读器发送给您的内容:     Linux下如何知道文件被那个进程写 于 13-3-12 通过 系统技术非业余研究 作者:Yu Feng 原创文章,转载请注明: 转载自 系统技术非业余研究 本文链接地址: Linux下如何知道文件被那个进程写 晚上朔海同学问: 一个文件正在被进程写 我想查看这个进程 文件一直在增大 找不到谁在写 使用lsof也没找到 这个问题挺有普遍性的,解决方法应该很多,这里我给大家提个比较直观的方法。 linux下每个文件都会在某个块设备上存放,当然也都有相应的inode, 那么透过vfs.write我们就可以知道谁在不停的写入特定的设备上的inode。 幸运的是systemtap的安装包里带了inodewatch.stp,位于/usr/local/share/doc/systemtap/examples/io目录下,就是用来这个用途的。 我们来看下代码: $ cat inodewatch.stp #! /usr/bin/env stap probe vfs.write, vfs.read { # dev and ino are defined by vfs.write and vfs.read if (dev == MKDEV($1,$2) # major/minor device && ino == $3) printf ("%s(%d) %s 0x%x/%u\n", execname(), pid(), probefunc(), dev, ino) } 这个脚本的使用方法如下: stap inodewatch.stp major minor ino 下面我们构造个场景: dd不停的写入一个文件,查...

放诸古今皆准的权力规则

图片
    Han 通过 Google 阅读器发送给您的内容:     放诸古今皆准的权力规则 于 13-3-9 通过 上海书评    不管你是独裁者还是民主国家领导人,或者公司的CEO,只要能不折不扣地执行五条通用规则,你的权力就可保无虞。     The Dictator's Handbook   [美]Bueno de Mesquita等著   Public Affairs   2011年9月出版     十九世纪末的比利时国王利奥波德二世完全有理由成为一些人心中的偶像。他大力推动民主自由,在四十多年的任期内,把比利时从一个专制非民主国家成功地变成了一个现代民主国家。他赋予每个成年男子选举权,甚至比美国提前半个世纪立法允许工人罢工。他对妇女儿童的保护领先于整个欧洲。比利时1881年就普及了基础教育,确保每个女孩都能上到初中,并且在1889年通过法律禁止十二岁以下儿童工作。在利奥波德二世治下,国家的经济像政治一样获得了大发展,他比罗斯福更早采取建设公路和铁路基础设施的手段来减少失业和刺激经济。   然而在非洲刚果这个比利时殖民地,确切地说是利奥波德二世本人的殖民地,他完全是另外一个形象。刚果人,包括妇女儿童,在利奥波德二世的统治下没有任何人权,完全是奴隶。他们在警察部队的强制下劳动,动辄被施以断手之类的酷刑,有超过一千万人被迫害致死,而这一切都是为了保证利奥波德二世在橡胶贸易中获得巨额利润。   为什么同样一个人可以在一个国家推行善政却在另一个国家施行最残暴的独裁?在这里,与其说制度是答案还不如说是问题本身。为什么比利时的制度越来越民主,而同一时期,同一领导人的刚果,却越来越独裁?难道是因为利奥波德二世只爱本国人或者有种族歧视?但后来刚果自己"选"出来的领导人并没有做得更好,仍然是一个糟糕的独裁者。在The Predictioneer's Game(《预测师的博弈论》)这本书里,斯坦福大学胡佛研究所和纽约大学的政治学教授Bruce Bueno de Mesquita指出,真正的原...

《福布斯》公布2013年“30位30岁以下创业者”名单,超过三分之一的项目被36氪报道过

图片
    Han 通过 Google 阅读器发送给您的内容:     《福布斯》公布2013年“30位30岁以下创业者”名单,超过三分之一的项目被36氪报道过 于 13-3-11 通过 36氪 | 关注互联网创业 作者:wangjingyu@36kr.com (wangjingyu) 今天《福布斯》公布了2013年" 30位30岁以下创业者 " 名单 。这是福布斯中文版携手美国版,连续第二年寻求那些已经表现出技术、产品和商业模式创新能力的青年人。《福布斯》认为他们已经具备很强的创业能力和颠覆潜力,其中有些人已经开始进入高成长期。36氪作为"关注互联网创业"的媒体,也一直在寻求优秀的创业项目和创业者,在此次入围的《福布斯》2013年"30位30岁以下创业者"名单中,当中有三分之一的项目曾经被36氪报道过,部分项目甚至是在 36氪开放日 上首发。 《福布斯》2013年"30位30岁以下创业者中"被36氪报道过的有: 张一鸣,今日头条:《 "今日头条":基于社交数据挖掘的个性化阅读体验 》 "今日头条"一款纯粹基于社交网络数据挖掘,进行个性化阅读推荐的应用。区别于普通阅读类应用的个性化推荐模式,今日头条无需用户做任何选择,甚至都没有内容类别的选项,纯粹是基于用户的社交网络数据进行挖掘分析,再通过算法提供给用户自己最感兴趣的消息。 施凯文,Jing.FM:《 通过描述寻找音乐:Jing.FM正式开放注册,上线IOS客户端 》 Jing.FM能够通过描述自己的"心情"选择歌曲,让音乐更加...

想创业,先来学学怎么讲故事吧

图片
    Han 通过 Google 阅读器发送给您的内容:     想创业,先来学学怎么讲故事吧 于 13-3-10 通过 36氪 | 关注互联网创业 作者:304760767@qq.com (demetrius) 幻想有一天,你成了 Mark Zuckerberg 般成功的创业者,就会有人把你的故事翻拍成电影。如果你还没成功,这个的故事就得留给自己来写。对于创业者而言,学会讲故事不仅仅意味着可以在投资人、用户、媒体面前更好地"为自己代言",更可以用创作的思维为公司制定宏观的发展路径,解释创业过程中会遇见的各种突发情况。 皮克斯 Pixar 公司的资深剧本创作家 Emma Coats 曾经发表 《讲故事的 22 条法则》 ,讲诉自己创作动画巨制剧本时的原则。资深创业者 Peter Nixey 认为 ,这简直应该被称作"创业者的 22 条指南"。所谓一通则百通,让我们来看看这些理念你是否受用。 欣赏一个努力超越自身成功的角色。 ——成功不是目的也不是结果。 切实感受听众想要听什么,而不是你想要表达什么。 ——把消费者需求摆在第一位。 规划自己想表达的主题很关键,但不到最后一刻你的观点都是片面的。 ——产品又何曾不是这样的呢? 曾经 ,他们每天 。直到有一天 。因为 ,所以 。因为 ,所以 。最终 。 ——曾经这个世界上没有科技博客,上网者每天从门户网站获取信息。直到有一天科技博客出现了。因为更为独到的视角和深度的分析,所以很多人成为了科技博客的读者。因为 36 氪以其别具一格的开拓性潜入互联网创业这个生机蓬勃的领域,所以对未来怀揣希望和抱负的上网者都成为了忠实读者。最终 36 氪在这个市场内斩获了0.2%的市场份额。(kidding) 简化、专注、整合特色、绕过弯路。这样虽然可能让你觉得失去了有价值的东西,但它可以帮助你从思维定势中解放。 你的角色...

Redis内存存储结构分析

图片
    Han 通过 Google 阅读器发送给您的内容:     Redis内存存储结构分析 于 11-5-4 通过 搜索技术博客-淘宝 作者:五竹 五竹,20110418 Redis: A persistent key-value database with built-in net interface written in ANSI-C for Posix systems 1 Redis 内存存储结构 本文是基于 Redis-v2.2.4 版本进行分析. 1.1 Redis 内存存储总体结构 Redis 是支持多key-value数据库(表)的,并用 RedisDb 来表示一个key-value数据库(表). redisServer 中有一个 redisDb *db; 成员变量, RedisServer 在初始化时,会根据配置文件的 db 数量来创建一个 redisDb 数组. 客户端在连接后,通过 SELECT 指令来选择一个 reidsDb,如果不指定,则缺省是redisDb数组的第1个(即下标是 0 ) redisDb. 一个客户端在选择 redisDb 后,其后续操作都是在此 redisDb 上进行的. 下面会详细介绍一下 redisDb 的内存结构. redis 的内存存储结构示意图 redisDb 的定义: typedef struct redisDb { dict *dict; /* The keyspace for this DB */ dict *expires; /* Timeout of keys with a timeout set */ dict *blocking_keys; /* Keys with clients waiting for data (BLPOP) *...