自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL存储引擎的选择

记得一年多前在为我们的产品选择MySQL的存储引擎时——InnoDB和MyISAM之间,费了好大的功夫,从网络和一些书籍中收集了很多资料来论证,最终我们以到底是读多写少还是写多读少这个普遍观点当做决定条件选择了InnoDB。前些日子在阅读了《高性能MySQL》(第三版,这一版由淘宝的DBA翻译,我个人感觉质量非常好)之后,书中对存储引擎的选择有着更权威更系统的回答,下面我就循着书籍来给大家总结一下

2013-11-23 14:27:03 619

原创 ActiveX开发知多少?

由于前段时间要为一个项目定制一个电子地图+视频监控系统,考虑到公司的现有的开发资源(C#项目组)及已经完成的下层业务框架(C++实现),选择了.net技术结合ActiveX来实现需求。由于下层业务框架是我编写的,所以开始了自己的编写Activex插件之旅。按照我的习惯在接触一个新技术时并不会匆匆开始上手实现,而是在了解基本原理之后再着手。所以通过各种百科了解了一些关于ActiveX的背景和

2013-11-16 21:31:57 672

原创 将博客搬至CSDN

为了更多认识济南圈子的朋友,将博客同时搬家至CSDN,以后的博文将做同步。本文出自 “永远的朋友” 博客,转载请与作者联系!

2013-11-05 16:33:35 600

原创 做产品的一些思考

从我当前的职业经历来看,做过两种类别的产品:一种是客户定义好了需求由我们去实现,我姑且称其为做项目;一种是自己去探索用户需求然后在不断的摸索中引导用户,实现价值,这是我笔下真正的产品。做项目目标明确,用户参与度高,风险小;做产品属于定位目标,然后摸着石头过河,中间浅滩礁石密布,风险挑战可见一斑。所以我今天来谈谈我对做产品的一些思考。做产品的基石:需求《需求》这本书用多个成功企业和创始人的经历向我们

2013-11-05 16:33:33 705

原创 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百万,千万,甚至腾讯的上亿(注:QQ默认用的UDP协议)。虽然现在的集群,分布式技术可以为我们将并发负载分担在多台服务

2013-11-05 16:33:31 792

原创 网络编程释疑之:TCP半开连接的处理

熟悉基于TCP协议进行linux高性能、高并发服务端编程的朋友肯定应该知道每个文件描述符及其所占的资源对并发量的影响。在这种7*24甚至*365不间断运行的服务器上,一个描述符被浪费,两个被浪费...如果被浪费的多了,那还何谈高并发,高性能。除去文件描述被正常占用的情况外,是什么导致了我们可用的文件描述符越来越少呢?什么是半开连接?当客户端与服务器建立起正常的TCP连接后,如果客户主机掉线(网线断

2013-11-05 16:33:29 676

原创 网络编程释疑之:同步,异步,阻塞,非阻塞

一讲到网络编程的I/O模型,总会涉及到这几个概念。问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦。今天我也来给大家讲解一下我对这几个概念的理解。既然网络上众说纷纭,不如找个权威参考一下,这个权威就是《UNIX网络编程:卷一》第六章——I/O复用。书中向我们提及了5种类UNIX下可用的I/O模型:阻塞式

2013-11-05 16:33:27 674

翻译 Redis C语言客户端库hiredis文档翻译

Hiredis是redis数据库一个轻量的C语言客户端库。之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。但正是由于这种设计使我们只要熟悉了通用的redis操作语句就可以很容易的使用该库和redis数据库进行交互。除了支持发送命令和接收应答/应答数据,它提供了对应答数据的解析操作。而且这个基于I/O层的数据流解析操作设计考虑到了复用性,可以对应答数

2013-11-05 16:33:25 1493

原创 “偷懒”的程序员

在我们的印象里,偷懒无疑是个贬义词,往往是家长形容孩子不爱学习,不爱干家务活;领导形容员工不尽责,爱开小差;...但是今天我们要把偷懒当做个褒义词来用,大家想想看,我们现在社会的高度机械化和电子化是不是由于人的”偷懒“这个需求而产生的。走路太累,所以有人发明了汽车,飞机;干活太累,所以有人发明了洗碗机,洗衣机;当程序员太累,所以我们应该也要学会偷懒。纵观计算机科学的发展史,仿佛就是先驱们的”偷懒“

2013-11-05 16:33:23 894

原创 敏捷团队如何进行绩效考核?

近期公司要求各部门必须要制定详尽的KPI考核方案,看了下人力下发的模版,对研发非常非常不科学,简直把研发工作当做了工厂产线,于是特别针对我们部门的敏捷团队,制定了这么一套考核方案。(参考:敏捷团队的绩效考核)两个考核方向:团队绩效考核,个人绩效考核;团队绩效考核目的:促使团队成员对整体质量负责;考核内容:1.每次迭代的交付物可否被接受。(团队采用的敏捷开发,每一阶段会制定一个产出计划和产出目标)目

2013-11-05 16:33:20 1451

原创 济南第二期技术沙龙我的分享-网络开发那些事

我昨天在OSChina济南社区技术沙龙上分享的话题《网络开发那些事》,话题涵盖:协议分析、高性能网络编程、NAT穿透、p2p流媒体传输..., 随便截几张PPT,感兴趣的朋友可以下载完整版:)650) this.width=650;" src="http://img1.51cto.com/attachment/201308/190552778.jpg" style="float:none;" ti

2013-11-05 16:33:18 1167

原创 从几次应聘看职业发展

自打12年中期第二次离职后,到这家公司已经一年有余,做的工作和所处的团队更类似于创业模式,虽然激情也多有风险。在一个多月前,团队和产品的风险已经远远高于了激情,所以在一年合同即将到期时,我更想再寻找一个更好的机会,开始自己已经处于“30风险期”的职业生涯。IT人的30问题,始终是个争论,我一贯是鄙夷持“程序员到了30就无法再干下去”的论调。但是我想这句话是业界赋予了其中程序员这个关键词错误的概念,

2013-11-05 16:33:16 609

原创 想在未来,做在当前

背景:我所在的团队要做一个平台化的互联网产品,从产品的定位、推广、架构经历了不少变化和修正......,从中我也汲取了不少的教训,其中让我最深刻的一点产品经验就是“想在未来,做在当前”。产品定位在参加了公司为我们团队组织的VC会议,甚至公司内部 团队和市场部门一起召开的产品介绍会中,虽然他们都认为我们的产品有好的创新点,技术上也没有大的问题,甚至市面上也没有类似的竞争产品,但是我们的思路和产品仍然

2013-11-05 16:33:14 609

原创 研发部门之间利益之争何时休?如何休?

一直以来觉得技术圈是很纯洁的,小人在这个圈子中很少。但是说句真心话,自私抑或自大的人在这个圈中可不少,而且多以中层管理居多,特别是牵扯到自身利益和部门利益时这种行为表现的更为明显。案例1:1部门要开发一款产品A,其中2部门曾经做产品B时,已经做过很多A产品类似的功能模块或技术点,但是隐含的规则就是你是你的,我是我的。2部门会看紧家门,防止1部门获取这些。1部门怕功劳落入其他人手中,也闭门不出,开始

2013-11-05 16:33:12 828

转载 可伸缩系统的设计模式(译)

Ricky Ho在他的博客中分享了该文章,该文章是一个简单的概括分享,详细的可以参见他博客的其它详细文章。下面主要是意译。1、Load Balancer:负载均衡 – 由分发者来决定哪个工作者处理下一个请求,这种决定可以基于不同的策略。“In this model, there is a dispatcher that determines which worker instance will h

2013-11-05 16:33:10 788

原创 为什么还要相信“人月神话”

首先我要说明的是题目有着双关的含义。一层含义针对我而言,而这个“人月神话”是指Brooks老爷子的书籍《人月神话》,我很认可这本书中的大多数观点。一层含义针对一些企业管理者而言,我从我的角度对某些企业的管理层提出质疑,为什么他们确实相信人月这个神话。首先讲讲《人月神话》这本书之前这本书的大名早就如雷贯耳,但是一想到是一本几十年前的老龄书籍,心里想着伴随着软件业日新月异的发展,这本书的观点一定也是老

2013-11-05 16:33:08 914

原创 开源邮件系统的考察与部署

这几天因为产品需求:需选定一套开源的邮件系统进行业务改造,通过资料比对,再加上身边的这本《构建高可用Linux服务器》第8章“如何构建开源免费的企业级邮件系统”的推荐,最终选择了iRedMail邮件系统进行详细考察。(关于邮件系统的扫盲工作,也可看这本书)第一步肯定是要部署试用下。通过官网了解iRedMail;下载最新的release包;选择相应的linux发行版(我选的是CentOS),需要注意

2013-11-05 16:33:06 1863

原创 MySQL学习四部曲

互联网时代,关系数据库中MySQL的使用最为广泛,从而造就了大量的MySQL从业人员。曾经使用Oracle的互联网巨头阿里系也进行了去IOE化,也影响了更多的人想去学习MySQL,从事MySQL方面的工作。我是从四年前开始接触MySQL的,从之前的工程师工作,到现在的架构工作,再到偶尔的DBA工作,我对MySQL的学习也有着很多体会,今天我就来给大家讲讲我心目中的最好的MySQL学习书籍。我买书有

2013-11-05 16:33:03 714

原创 做个有产品意识的工程师

记得大学时,对专业课(计算机科学与技术)学习最大的疑问是其实用性。这个我想大家也有同样的经历,大学的学习偏重于语法和理论,与现实生活结合的很少,所以这个阶段算我的学习阶段。记得在工作的前几年自己作为工程师时,一心扑在技术上,一心扑在实现上,很少会去考虑自己和团队做出的东西是否有市场,所以算作我做项目的阶段。慢慢的,在企业文化,市场环境的熏陶下,我对自己、在团队常常会强调:一定要想想自己做出的东西有

2013-11-05 16:33:01 765

原创 你会使用回调函数吗?

之所以以反问的形式提出这个问题,是因为以我的观点来看,“回调函数”对一个C/C++程序员来说是很平常的,一些API的使用,一些接口的设计均要用到回调函数的概念。但是我面试过的一些有“多年工作经验”的C系程序员,共事过的一些“有经验”的同事竟然对回调函数不了解,更别提使用了。那今天我就以我的理解来梳理一下回调函数的概念和使用场景。什么是回调函数?维基百科释义:在计算机程序设计中,回调函数,或简称回调

2013-11-05 16:32:59 628

原创 求职or应聘,请先认清自己!

作为团队的主面试官已经接触了不少求职者,但是今天的一个面试者使我感到很吃惊,也许他也会看到我的博客,我想告诉他的是,今天我是出于面试官的礼貌完成了我的面试,也给予了他应有的尊重,但是我不欢迎你来到我的团队,即使你之后“有幸”通过了的笔试和面试,我一样会投出我否决的一票,为什么?因为“知己知彼,百战不殆;你既不了解自己,又不了解他人,所以我断定你无法有一个好的职业发展”。大概描述下简历情况和面试经历

2013-11-05 16:32:57 621

原创 加强debug能力来提高工作效率

以我的观点来看:做出一个业务功能是件很简单的事,做好则有难度,高效的做好则是难上加难。抛开前期的架构设计、技术方案的制定不谈,单单是写好代码这一阶段就给我们每个人带来了不同程度的挑战。之前还写过一篇关于代码编写阶段的文章《提高工作效率的工具“类”》,下面我就主要从代码debug的角度来谈谈我的看法。尽量写代码时避免bug,减少调试对于任何问题,先以预防为主。在团队中常常可以遇见这样的同事,代码写的

2013-11-05 16:32:55 1627

原创 STL容器的线程安全?

接上一篇STL容器删除操作继续,STL使用起来方便,还有自动内存管理,再结合合适的泛型算法大大提高了我们编程的效率,于是我们“肆无忌惮”的使用在自己的程序中。但是只要你有“肆无忌惮”的态度,你终归是要走上弯路的,比如其线程安全问题。先从《Effective STL》进行搬运。线程安全的情况多个读取者是安全的。多线程可能同时读取一个容器的内容,这将正确地执行。当然,在读取时不能 有任何写入者操作这个

2013-11-05 16:32:52 3414

原创 STL容器删除操作

接上一篇STL容器的选择继续,为什么要选这个话题,是因为我相信很多人都曾经错用过STL容器的删除,虽然网上也有不少解决方案,但是我觉得真正能深入其本质进行讲解而且给出了完整解决方案的网络资料并不多,所以我替大家从《Effective STL》进行下总结搬运。删除特定值连续内存容器(vector、deque或string)使用 erase-remove。例:c.erase(remove(c.begi

2013-11-05 16:32:50 722

原创 STL容器选择

注:这是篇搬运工文章,是在读了《Effective STL》这本书后对一些知识点的总结、摘录,希望和大家一起学习共享。题外话:在网上看到很多人喷C++,喷STL,其实我曾经也会喷C#、喷Java,...但是随着工作经验的增长,阅读书籍的增多,知识面的扩展,我对种类繁多的语言以及技术产生的是敬畏,再也不敢也不会信口开河的去喷,每种语言都有自己的优缺点,也正是这些优缺点,决定了其适用场景。送大家一句今

2013-11-05 16:32:48 628

原创 我的网络编程之旅

首先给大家推荐下Markdown,我想用过github的同僚一定很熟悉了,这篇文章的排版就是使用的markdown,以后我们不必再去适应各个博客系统自己繁杂的排版方式了。网络编程是什么?给大家从招聘信息上截取几段内容:熟悉Socket编程,熟悉Tcp/Ip协议栈;熟悉TCP/IP协议、UDP协议,有相关的协议开发经验;熟悉网络编程/多线程编程技术;大家应该很清晰了吧,关键词就是TCP/IP,Soc

2013-11-05 16:32:46 771

原创 《打造facebook》读感

周六陷在软软的沙发里,沐浴着暖暖的阳光,一口气读完了王淮的《打造facebook》这本书。我想说:这是种享受,是种收获,是种激励。 关于扎克伯格    “《社交网络》‘只有2%是真的’”在看完电影《社交网络》后我对扎克伯格的认识也就定位到了电影的情节中,但作者王淮给我们讲述了一个更真实的扎克伯格。一个伟大的CEO,造就了一个伟大的公司。 关于招聘   “facebook的招

2013-11-05 16:32:44 733

原创 从master-worker模型看团队管理

先讲一个场景:“团队负责人接到一个新项目,他会把项目进行需求细化,功能细化,然后他会分配给不同的团队成员完成”。 在这个场景中,团队负责人就是master,团队成员就是worker,至于这样做的好处,不用说大家也明白,如果团队负责人一个人干,估么着他要么累死,要么任务完不成被领导骂死。     master-worker模型的最大作用就是提高处理效率,特别是在多核cpu上,多worker的

2013-11-05 16:32:42 811

原创 团队协作,集成工具推荐

在之前的你们的团队是怎样组织开展大型项目的?这篇文章中指出了要在团队内引入协作工具,在我经历的团队和使用的工具中,我感觉项目管理工具jira、wiki知识库工具confluence、持续集成工具hudson—jenkins比较出色,而且易于团队使用。(前两款都不是免费软件,虽然网上有很多破解版本,但是希望大家如果在条件支持的情况下还是能使用正版软件,而hudson—jenkins则是开源的)  

2013-11-05 16:32:40 861

翻译 libjson文档翻译

导言:我已经有好几个项目使用了libjson库,感觉这是个挺不错的JSON库,顺便翻译了下他文档的主要部分,希望和大家一起了解学习。由于内容较多,无法全部发在博客文章上,大家可以通过附件下载完整文档。关于libjson项目主页:http://sourceforge.net/projects/libjson/        libjson 是一个适用于C和C++语言高效的并且可灵活定制的

2013-11-05 16:32:38 658

转载 重读黑客与画家

出处:http://www.cnblogs.com/chijianqiang/archive/2013/03/11/readhacker.html    《黑客与画家》这本书的中译本出版于2011年4月,它的作者是美国互联网界"创业教父",哈佛大学计算机博士Paul Graham,他的译者是著名blogger、译者阮一峰先生。     这本书在2011年一上市就受到了广大人民群众的爱戴,我

2013-11-05 16:32:36 676

原创 创建本地技术社区的构想

前天晚上约两个朋友吃饭喝酒,谈谈工作情况,交流下技术问题,唠叨唠叨某些领导,展望下未来......看似又是一场普通的聚会,但是最后引出的一个话题让我血脉迸张......    “缪斯的情人”穿着那件oschina奖励给他的vmware卫衣又一次提起了想在当地办一次oschina社区活动,吐槽了一下当地糟糕的IT环境,你看看其他城市的社区火火热热,可这里...。说到这个当地,我也必须要加入吐糟的

2013-11-05 16:32:33 603

原创 我的敏捷布道

去年,在慢慢了解了公司的研发体系和存在的一些问题后,向公司高层提了关于实施敏捷的建议,并没有讲具体的敏捷理论,也没有讲如何实施敏捷的,只是把我经历敏捷后的一些感受讲了出来。 对公司而言——敏捷思想带来民主、透明、自觉的文化; 对团队而言——敏捷团队带来了交流沟通、互助学习、友好信任; 对产品而言——在业务人员和测试人员提早介入跟进的情况下有了周期保证、质量保证; 对个人而言——每个

2013-11-05 16:32:31 682

原创 项目组CentOS开发环境的搭建

上一篇文章谈到了服务端Linux发行版的选择,我们虽然是拍脑袋选择的CentOS,但是至少没拍错,这个发行版还是非常适合我们的需求的。下一步自然是要选择CentOS的版本,官方主页为http://www.centos.org/,在其中你可以了解各个版本。由于我们要构建的是高性能服务器,所以需选择其64位版本,以下以6.3的x86_64为例。    如题,我特意加上了”项目组“三字,不知大家了解

2013-11-05 16:32:29 963

原创 服务器端linux发行版的选择

谈起这个话题,我的头立马大了一圈,曾几何时被众多linux发行版的类别以及关系绕的头大,其实各种书籍、网站关于这个话题也挺多的,下面我就给大家讲述一下我选择服务端linux发行版的过程,大家看看热闹。拍脑袋决定    那时是第一次选择服务端linux发行版,这次的过程更像拍脑袋决定,基于我并不是linux重度用户,而且以前一直使用ubuntu,对ubuntu的了解感觉他就像linux中的w

2013-11-05 16:32:27 1079

原创 事半功倍,事倍功半?

在我们生活和工作中,并不总是拿结果来衡量优与劣,而是大多要加上一点——做事效率。正如我们题目所讲的:别人用了一半的时间或者精力出色的完成了一项任务,而你却用了他多倍的时间或者精力完成了这项任务,甚至结果还不如他人,为什么?普遍来说我们可以忽略智力因素,毕竟没几个”天才“,剩下的也许我们只能归结于学习方法的优与劣。下面我谈谈我的一些看法。     一次在一个技术群里,一位从事MFC开发的技术人员

2013-11-05 16:32:25 839

转载 Google 的十大信条

在 Google 成立没几年的时候,我们首次写下这“十大信条”。此后,我们时常重新审视这份清单,看看它是否依然适用。我们希望始终贯彻这些信条,而您也可以监督我们做到这一点。 以用户为中心,其他一切水到渠成。 创建伊始,Google 就以尽可能提供最佳的用户体验为中心任务。不管是设计新的互联网浏览器,还是采用新的首页外观,我们都非常谨慎,确保它们最终可以满足用户的

2013-11-05 16:32:23 561

原创 我的2012

以往都是写公司的年终总结,今年新入职的公司少了这一环,干脆就把年终总结写在博客上,给自己这一年的工作和生活留下点回忆,总结下得失。 离职:    前半年,继续在曾经的公司延续着枯燥的工作和生活,现在这家公司再也没有三年前我入职时感觉到的那种亲近的感觉,也再也没有半点“研发”的感觉,也许是公司大了,官僚主义在蔓延;也许是自己在方方面面都受到了冷落;也许是公司领导曾说的一句话深深地刺痛了我

2013-11-05 16:32:21 591

转载 libevent入门教程:Echo Server based on libevent

花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的),

2013-11-05 16:32:19 591

原创 优秀的程序员和一般的程序员差别在哪?

这是某人在问答网站知乎上的提问,很多热心的程序员兄弟作了解答,挑出几个赞同数高的,大家来对号入入坐?或者对比一下你心中的优秀程序员和一般程序员?获得赞同数最多的回答:郭凛,简介:软件手艺人,自学编程18年至今,创业中,爱玩不爱束缚 在我平时所见到的程序员中,如果纯以编码能力来看,个人觉得可以分为五类,依次是:1. 拷贝型拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能

2013-11-05 16:32:17 636

空空如也

空空如也

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

TA关注的人

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