自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 intel毫无眼光,迟早死翘

好几年前,我就在期待什么时候用手机办公,或者用平板办公,作为一个程序员,我的要求很低,主要做后台开发,日常用最普通笔记本,8g内存,500g硬盘,i3-3210 cpu,这个笔记本算低端了,但跑几个vs,运行几十个应用进程绰绰有余了,一直期待哪天能有款笔记本,达到这个需求,那样就不用每天带个笔记本上下班,只需要带个手机,到公司(或家)接上鼠标键盘显示器就办公了,可看看我们的intel,Z3xxx系

2015-04-23 09:56:19 1539 1

原创 雷军不是个好程序员

这题目有点大,有点吓人,为什么这么说呢,请听我讲。很多土豪用iphone,我还用小米,之所以用小米,还不是看小米性价比还过得去嘛,另外,我偶尔用小米跑跑安卓程序。小米别的地方都还好,但有个地方总是不爽,屏幕偶尔无响应,我在论坛也看过,很多人碰到跟我一样的问题,这个问题显然是个软件问题,因为只要锁屏再开马上就好了,有时出现这个问题的时候backup按键也有效,其他触摸等基本无反应,或者反应非常迟

2015-01-27 18:09:49 5535 2

原创 对protobuf的深入解释

对protobuf的深入解释 对protobuf俺的认识,总结为以下几点:1.  pb是一种编码方式。之所以这么说是因为有的人认为它是协议,那就侠义化了,pb本质上就和json、xml类似,是一种编码方式,用pb编码出来的流可以套在任何现有协议里面,作为内容部分,如可以放在http的content区域,或者私有协议的content区域,外面套上(length, type, flag

2012-07-06 14:38:43 12917 2

原创 我理想中的手机

我理想中的手机是这样的,屏幕4 - 7英寸(如果能拉伸屏幕或支持投影则更好),计算能力超当前的pc,能跑64位虚拟机并同时跑几个os,能电话、娱乐、办公、上网、购物、拍照、录像等,日常生活不再需要笔记本或台式机,而完全可使用手机,可无线接鼠标键盘显示器(最不济也要支持HDMI),电话可辅助一个可简单拆卸的小手柄,大小如1cm宽的笔,可拉伸并能弯曲,实现类似现在的无线数字话机一样的功能,手柄还可做录

2012-07-05 13:53:56 1635 2

原创 关于网络编程中的序

关于网络编程中的序           有过网络编程的人一般都知道无状态有状态的区别,大多数人都知道web是无状态的,但很多人不知道有序和无序的区别,甚至有的从业很多年的同事也想当然的以为都是有序的。所谓序其实说起来很容易理解,就是abc三个包发到后端,依次返回ABC,说起来就这么简单,但是这个小小的序其实决定着后端如何实现的策略,我们常见的cs服务,如mysqlclient和my

2012-06-30 17:04:22 1333 2

原创 从周雷斗法说起

从周雷斗法说起          周某人最近又惹上了他的湖北老乡雷某人,两只九头鸟开始了斗法,大家都在看热闹,各抒己见,不亦乐乎。         周某人一直活跃于论坛口水之巅十多年,从3721开始,它就是最大的造毒分子,这个国家的法律从来是抓小放大,不但如此,当雅虎居然出10亿收购3721的时候,全国上下居然是一片欢呼声,居然是为这个犯罪分子庆功,周某人也被光环笼罩了,他也忘记了自己

2012-06-30 15:49:35 8299 4

原创 time_t的局限性及时间函数设计

time_t的局限性及时间函数设计 time_t早期是32位的,用来表示从1970.1.1开始的秒数,当初设计的时候受制于32位的容量,time_t只能表示136年的时间,而且精度只能到秒,后来time_t修改为64位,但仍然兼容了原来的设计,time_t虽然现在默认64位了但依然精度为秒,这是极大浪费的。系统还有很多time相关的函数,如win下mktime、gmtime、GetSy

2012-06-27 11:45:01 9857 1

原创 mysql在nosql下的缓存变革

mysql在nosql下的缓存变革          mysql这个互联网生出来的数据库被无数个网站、游戏等使用,据说google、tencent、taobao都在使用它,在互联网高速发展的过程中,由于高速缓存的需要以及传统数据库难于应付巨量写,于是各种nosql方案都出来了,最经典就是memcached,以及后来出现的redis,由于memcached本身是不支持持久化的,但实际需求却可

2012-04-27 11:06:41 2223

原创 G530 CPU虚拟化试验

G530 CPU虚拟化试验          前些天想玩玩虚拟化,手里机器不够用了,将家里的老pc拆了,买了主板(约400元),cpu g530的(+风扇约280),内存8g(约270),硬盘用了旧的sata(300g),电源换了个新的(航嘉冷静王xp版,准80plus,易讯上用了张优惠券,到手200元),机箱用了旧的,加一起大概1150左右吧,最初是打算装xenserver的,但试了几次

2012-04-27 10:19:15 3203

原创 关于模式的那点事

关于模式的那点事 群内在讨论模式的那点事,我就发言了,如下:    做软件除了实现基本的功能之外,很大一块的工作就是适配工作,适配工作就是模块内的函数交互,模块间的函数交互或接口交互(其实就是一组函数),进程间的协议交互等,以及为了这些交互顺利进行的约定规则,如数据类型,内存布局,进出栈方式,分配释放规则,通信协议等。    目前的各种模式无非就是这些交互法则的一个阶段性总结,交互

2012-04-18 11:06:37 1203 1

原创 虚拟化的那点事

虚拟化的那点事           虚拟化现在被鼓吹得神乎其神,似乎不虚拟化就是落伍,似乎不虚拟化就无法实现各种先进功能,到底虚拟化是怎么产生的,它真的有这么牛逼吗。         其实从os的发展来看,虚拟化不是今天诞生的,虚拟化思想无处不在,最早的地址虚拟化开始,32位下每个进程独享4g空间,那个时候觉得4g已经很多了,现在的主流cpu都超32位地址线,连入门级赛扬g530也

2012-04-18 10:59:07 1506

原创 经纬度距离查询优化实例

最近参与开发一个SNS类型的社交程序,里面要记录用户的经纬度,还要按照某个已知位置查询附近的用户,这类应用在社交类产品里面算最常见的了,起初在网上搜索了一下,没找到同类文章,为了实现根据一个已知位置(double lon_me, double lat_me)查询double distance范围内的用户的功能,做了一个最简单的实现,那就是遍历所有lon,lat数据,在客户端计算距离,然后比较距离,

2012-02-21 00:24:09 4691 2

原创 去盛大了,开始了一段新的历程

2011年8月底,我到盛大创新院了,去了之后一直忙各种事情,也没写过博客,如今快过去半年了,此篇权当一个时间点的纪念吧。

2012-02-21 00:22:41 1642 1

原创 一次全文索引编码实践

前端时间要处理一个即时输入提示和查询功能,一开始由于考虑到一个很特殊的需求,做相似度匹配(就是类似abc能匹配acb),所以用数据库的现成办法都不行,用全文索引也不行,因此第一个版本是前同事java版本,计算最深的一个查询一次执行5分钟,赶进度之下弄了第一个c++版本,直接内存缓

2011-07-28 11:03:50 1148

原创 那些名不副实害人不浅的软件

那些名不副实害人不浅的软件 刚在群内闲聊,又谈到“知名”软件的问题,以俺从业十多年的经验来看,“知名”和优质软件是完全两码事,“知名”未必优质,优质未必“知名”。软件行业存在太多的吹嘘,大到国际巨头,小到3、5个草根的初创公司,几乎没有不夸大其词的。下面就说几个俺的亲身经历,博大

2011-07-13 13:20:45 1436 2

原创 关于app和web的混合服务器

关于app和web的混合服务器 等下载机器实在有些慢,无聊之下继续写篇短文发点感慨。前段时间,为让客户端界面更容易表达一点,将客户端需要展现数据的地方全用html实现了,后端自然要用html格式化信息,通用匹配模式自然是要安排一个web服务器,非http信息走

2011-07-05 11:01:18 3343

原创 关于下载工具的多线程问题

关于下载工具的多线程问题 差不多是从蚂蚁开始吧,开创了多线程下载同一个资源的方式,当时觉得真神奇,让多个线程同时下一个文件,速度真快,想法真好。随着对编程的认识加深,特别是做server端编程之后,逐渐认识到,多线程下载同一个资源,无非就是建立多个连接,分别从

2011-07-05 10:24:46 1574 1

原创 关于优秀程序员

<br />网上收集的一些名人观点,仁者见仁智者见智,我就不做任何评论了。<br /> <br /> <br />一个程序员用了大约只用了10%-20%的时间来编码,而且大多数程序员,无论他的水平如何,其平均每天只有10-12行的代码最终会进入最终的软件产品中。这是因为,优秀的程序员会花费90%的时间来思考、调查、研究最佳的设计。而糟糕的程序员则会花费90%的时间来调试代码,并随意地改动代码并尝试让代码工作起来。<br />“A great lathe operator commands several t

2011-05-11 21:05:00 1131

原创 在北京郁闷的半年

<br /><br /> <br />北京呆了半年,在郁闷中结束了,做了半年CTO,但大部分时间还是在编码或review代码,别的也没什么好总结的,只好对这半年里面的技术决策做个简短总结:<br />1、  修改原基于openfire(java)为基础的服务器为基于c++的服务器程序,修改原基于xmpp的xml形式协议为json,由此节省带宽2/3,提高server端计算能力一个量级以上。其实我一开始是计划全做成二进制协议的,但发现这些同事们对二进制操作数据块都不熟悉,要教会他们这些要费很多时间,而老板给的

2011-05-09 21:49:00 2180 4

原创 Windows下两种iocp实现的差距

<br /><br />Windows下两种iocp实现的差距<br /> <br /> <br />之前几天说过,因为经典iocp实现(以下简称经典实现)多个io线程绑定在一个iocp上,这样内部管理了iocp队列的处理,内部决定是不是需要线程切换,我上次修改的一个版本(以下简称实现2),用了多个io线程,每个iocp队列仅绑定一个io线程,一组用户共享一个io线程,这和经典的多线程epoll模型的做法是很相似的,这样每个io线程是可以独立控制了,但理论上这种做法没有发挥iocp自动管理线程切换的优势,昨

2011-02-01 10:49:00 4977 3

原创 回调函数的常见实现方式及速度比较

<br />回调函数的常见实现方式及速度比较<br /><br /> <br /> <br />回调函数实在是用得太广泛,回调函数又有多种实现方式,如:<br />1、  静态函数<br />2、  虚函数<br />3、  函数对象<br />4、  传统c函数,通过一个void *传递对象地址,内部强制转换<br />5、  fastdelegate<br />6、  Tr1::function + bind<br />7、  Boost::Function + bind<br />基本上速度是按照由快

2011-01-30 11:20:00 1724

原创 一套网络框架的杯具

<br /><br />一套网络框架的杯具<br /> <br /> <br />之前设计了一套网络框架,持续改进了很多年,使用在很多项目上,综合效率还行,也很稳定,一直以来对这套东西信心满满,总以为啥问题都好解决,但最近就有个需求让我选择还是改了下这个框架。<br />之前的框架是这样的,可以开一组N个io线程,可以开一组N个同步线程(默认1个),可以开一组N个异步线程(默认1个),可以开一组N个timer线程(默认1个),可以开一组N个异步线程(默认cpu个),每组可独立受控,每组可支持自定义消息,可支

2011-01-26 16:13:00 1300

原创 让后端服务器支持memcached协议

<br /><br /> <br />由于原先的appserver功能不断增多,最近又增了两个功能,需要不断从后端memcached中提取数据并进行计算,由于提取数据量大且频繁,导致效率很低,粗测了一下,获取数据和格式化等操作花了90%以上的时间,由此设想将memcached改写或重写一个支持memcached的服务器,将计算功能和memcached做到一起,让获取数据的路径最短,也就最大限度减少了数据传输和格式化等操作,就是类似存储过程一样啦,这部分可以考虑使用插件来实现,甚至可考虑使用脚本语言来实现。<

2011-01-23 17:10:00 1091

原创 关于内存数据库

<br /><br /> <br /> <br />最近要将一些数据放到内存里面做很高的并发操作,考虑了很多方案,<br />1、  简单点使用maphash_map等自己管理。<br />2、  用sqlite内存表。<br />3、  用fastdb内存数据库。<br />4、  用ExtremeDb,TimesTen等。<br />比较测试了一下123,发现还是自己实现速度最快,比fastdb模式快3-5倍,fastdb模式比sqlite内存表模式快10倍左右,由于自己实现不具有典型通用性,多线程

2011-01-21 22:27:00 1547 2

原创 最近项目架构及协议决策

<br /><br /> <br /> <br />最近给自己换了个老板,忙了一段时间,所以有几个月没写博客,今后还是要争取多写啊,呵呵。<br /> <br />换来新地方,第一件大的事情就是修改后端架构和通信协议,架构也设计得很普通,因为这边的业务不需要太过复杂的后端,所以就简单设计了一下,基本是参照web的模型,符合我一贯的向web学习的思想,弄了个gate管理入口,相当于web下的webserver,后端其他服务器挂在该gate下,相当于web模型下的appserver,或者fastcgi模型的fa

2011-01-11 13:26:00 1018 1

原创 吹牛太少,以后要多吹

<br />昨天去见两个老乡,多年的朋友同学,也是搞技术的,大家都在上海,只是交流不是太多,聊起我做过的一些东西,他觉得不大相信,我说我写的远程控制程序全dll组成,所有模块可热升级,包括主模块,主模块小于20k,他似乎难于相信,我跟他说这个程序还是2001年做的,他就更难相信了。后来又说起我最近做的那个云计算的价格查询,他也很难相信底下是云计算,由于没带机器也没法给他看后台服务器,所以我估计他最后还是半信半疑吧。上周另一个朋友说他们老板有个项目十来个人做了3年,一直做不稳定,我说给我一段时间我肯定能把他整

2010-10-03 01:13:00 1858 7

原创 我的网络模块设计第二版

07年我写了一篇文章叫《我的iocp模块》,姑且叫那个为第一版吧,由于持续对网络模块进行改进,所以现在的实现和当时有很大改变,加上上层应用越来越多,又经过了几年时间考验,现在的实现方式比之前的更灵活更有效率,也因为最近看了一些人做网络程序多年竟毫无建树,一直要用别人写的网络模块,所以有感而写此文,为了使得此文不受上一篇《我的iocp模块》的影响,我决定写之前不看原来的文章,所以此文跟原文那篇文章可能没有太多相似性。一个基本的网络模块,无非就是管理N个连接,快速处理每个连接的收发数据、消息等,所谓好的网路模块

2010-10-03 00:27:00 2859 13

原创 我的网络模块设计第一版

<br />我的IOCP网络模块设计<br /> <br />为了设计一个稳定易用高效的iocp网络模块,我前前后后花了好几个月的时间,也曾阅读过网上很多资料和代码,但是非常遗憾,能找到的资料一般都说得很含糊,很少有具体的,能找到的代码离真正能商用的网络模块差得太远,大多只是演示一下最基本的功能,而且大多是有很多问题的,主要问题如下:<br />1、  很多代码没有处理一次仅发送成功部分数据的情况。<br />2、  几乎没有找到能正确管理所有资源的代码。<br />3、  大多没有采用用pool,有的甚至

2010-10-03 00:25:00 1938 1

原创 IT行业能说的人太多能做的人太少

<br />It行业从业十几年,虽然接触的人并不多,但算上网络上有点交往的人,也不算太少,阅读过无数代码,很容易得出这样的感悟,国内it行业能说的人太多,能做的人太少,能说大意就是能说会道,说起来头头是道,从架构到体系到模块到接口都能说得很专业,但实施起来就不行,不但架构做不好,接口定义不清,就连小小模块也未见得可搞定,这样的人实在是太多,之前一直以为一个项目组多几个人总能加快点速度,现在终于明白,一个项目组加几个不合适的人不但不能加速反而要降速,甚至直接导致项目开发失控、失败。关键模块如果让一个不称职的人

2010-09-11 14:57:00 3855 6

原创 实用云计算环境简述

<br />实用云计算环境简述<br /> <br />如今it领域没听说过云计算的绝对是out了,虽然大家都知道云计算,虽然很多高校很多专业都开设了云计算专业,虽然很多人都在讨论云计算,虽然也有少数人走在了应用云计算的前列,然而,可悲的是,大多数人对云计算的认识仅限于amazon、google、microsoft、ibm有能力架设云计算环境,其他公司都靠边,甚至唯他们的云计算才叫云计算,别的企业根本不可能做云计算,各级政府部门最搞笑了,动不动花多少钱引进某某云计算环境,填补某某空白,多少cpu多少机器每秒

2010-09-11 14:09:00 1323

原创 定时器模块改造

<br />之前的文章讲过,我设计的网络框架有几组线程,分别是io、异步、同步、定时器,各个不同应用server几组线程组合形式不尽相同,简单的可只有io线程,复杂一点的可io+同步,更复杂一点的也可io+同步+异步+定时器,总之我以几组线程的自由组合方式应付各种应用,在我负责的server全是这一套框架实现的,不管是支持几万人连接的服务器,还是只有几个用户连接的内部服务器,这套框架也算是久经考验,稳定运行多年,内部使用也非常简单,如给sync线程组发一个消息只要PostSyncEvent,如果要给异步线程

2010-09-11 12:52:00 2488

原创 云计算实践2

云计算实践2上一篇《基于云计算的价格查询实现》就算是云计算实践1吧,所以这篇就叫《云计算实践2》。其实今年开始研究云计算有一段时间了,约3个月前研究md5破解(http://www.shprog.com/HashCrack.aspx),那个项目就是选来玩云计算的,当时觉得md5破解这个小项目好玩,逻辑很简单,密码字母组合可长可短,规模可大可小,1台机器不嫌少,1万台不嫌多,所以就选中了它,没想到第一个md5破解版本后来演变成了主要是密码数据库的制造,虽然第一版没有做成标准云计算,但也算有个结果,而且存储效率

2010-08-31 23:57:00 834

原创 基于云计算的价格查询实现

基于云计算的价格查询实现上篇博客提到价格查询功能,当时正在考虑做成云计算模式,所以当时连多线程都没考虑,就是准备将功能都交给云计算系统的,由云计算内部管理线程和调度问题,所以当时实现就根本不用考虑多线程,现在功能基本实现,下面大致讲讲我的做法。国内很多人谈到全文检索就必提lucene,提到云计算就必提google的map/reduce、amazon的ec2,似乎只有那些东西才叫云计算,咱是实战派,没兴趣口舌之争,在俺看来分布式存储+分布式计算就叫云计算,俺就看了看google的map/reduce论文,照其

2010-08-22 16:12:00 1035

原创 价格查询网

<br />花了四天写了个价格查询的web体验版,大致结构是这样的,前端web界面:<br /><br /><br />该web通过tcp连接后台一个ppsserver,ppsserver调用一个ppsget.dll从一些配置好的网站现拉网页分析产品价格等信息,说起来是很简单的,要是画出结构图来也是很简单的,看看效果:<br /> <br /> <br /> <br /><br />为了写这个东西查了比价网等很多资料,看来看去觉得现在的一些比价网都把自己当购物门户了,上面什么信息都有,数据都是缓存的,有的还

2010-08-11 22:36:00 1195

原创 Json解析速度问题

<br />一直想测试一下json的解析速度,前些天终于花了一点时间测了一下,在我的破笔记本上,解析一个包含10个元素(各种类型都有)的object型json,1秒钟大概只能解析不到10w次,就算把内存池用到极致也只能解析12.5w次左右,换用自己定义的一种bjson格式,速度快了一些,但也不超过20w次,想想工作量也的确很大,生成一个包含10个子元素的object,需要动态分配最少10次,还要做最少10次hash的insert,还有各种格式的转换工作,里面有array和object还要额外分配容器并处理子

2010-08-11 22:04:00 8790

原创 HashCrack系统架构

<br />HashCrack跑起来了一段时间,一直没有写架构方面的总结,今天在地铁上画了一张图:<br />照此架构理论上是可以支持非常巨大的后端数据的,如果将web也弄成多个,分别连不同的SN则可支持非常巨大的用户量。<br /> 

2010-07-29 12:05:00 958

原创 HashCrack项目阶段性总结

从开始研究HashCrack两个多月了,虽然中间忙其他项目间断了近一个月,但总的耗在HashCrack上的时间也有一个多月,最近几天又把web部分完善了一下,顺便做了其他几种加密算法,现在HashCrack支持MD5、SHA1、MYSQL5HASH、QQHASH四种算法,每种算法都制造了46亿数据,总共占磁盘34.2 * 3G,qqhash和md5复用同一份数据。好在之前架构做得比较好,换一种加密算法只要换两个函数即可,所以加后面三种算法只花了1天时间。为了让界面更友好一点,临时学了下ajax,并学习了一下

2010-07-25 00:41:00 741

原创 HashCrack程序数据及索引设计2

<br />HashCrack程序数据及索引设计2<br /> <br /> <br />上个月写了《HashCrack程序数据及索引设计》里面已经提到早期设计的几种存储方法,最后达到了每条记录15个字节左右的水平,但这个存储效果还是很差的,而且是单体文件,受制于内存限制,后来又设计了几种复合索引格式,支持1万亿记录一个复合索引,下面简单讲讲之后的研究成果。<br />6、将内容区和索引区合并,索引位置不再提供指向内容区的size_t,内容区不再需要,直接在索引区,这样索引区indexnode<br />S

2010-06-30 14:12:00 765 1

原创 从需求角度看NOSQL发展

从需求角度看NOSQL发展早先当640kb就足够使用的观点流行的时候,数据处理规模很小,需求也不多,于是简单的文件存储即可满足需求,发展一段时间之后ISAM之类的简单存储就可满足需求,再之后sql流行,当sql为了适应各种需求变得越来越庞大的时候,效率也止步不前,在将缓存和多线程性能榨取完了之后,sql各项性能还只停留在满足常规应用的地步,难于处理1秒万次以上的读写操作,也难于解决万个以上的并发连接,一般的企业不可能动不动就上硬件,所以nosql发展是时代的需要是需求的推动。当然一般sql对传统企业还是足够

2010-06-01 13:46:00 935

原创 HashCrack程序数据及索引设计

 前文已经讲述,字母全排列是个惊人的数字,即使只遍历小写字母和数字6个全排列也有36^6 = 2176782336,21亿多个,7个排列36^7 = 78364164096,783亿多,8个排列36^8 = 2821109907456,2.8万亿多个,数字非常惊人。Md5反查是个string-string的映射,16-N个字符的映射,如果考虑hex模式的md5那就是32-N的映射,考虑映射人们

2010-05-31 01:52:00 778 1

空空如也

空空如也

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

TA关注的人

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