摘要:前注:本文中针对的我们公司研发的一些问题的思考,以及我给出的一些解决方案。如果你有更好的方案,希望能够介绍给我。1、现状:在新产品开发和维护过程中,经常会遇到产品质量的问题。一种情况是在新产品开发时遗留的bug,还有一种情况是维护过程中引入的新的bug。2、原因:这个现状的原因有两个方面。一是资深研发人员的流失,这是客观方面的原因,这里不再多说(留住人才有很多的影响因素,很多不是我能够掌控的);二是我们再管理和流程上的问题,这是主观的问题,也是我们能够努力解决的地方。3、危害:给客户造成不好影响,影响品牌形象,产品后期往往需要投入更多的成本来解决问题。4、解决方案:有几个措施有助于改进研发质量 阅读全文
posted @ 2013-04-15 21:30 常高伟 阅读 (2133) 评论 (1) 编辑
摘要:前言:这篇文章写作过程断断续续持续了两个月,终于写完了,最近事情有些多。这次技术会议的主办方虽然是阿里巴巴,但是还有很多其他的互联网企业,比如百度,新浪,腾讯,盛大,360,小米。会议共有两天,主要面向互联网技术,参与者也大多是互联网公司从业者。人还比较多,讨论也比较活跃。我主要参与的是aDev(应用架构和后端技术),这里简单总结一下:1、SOA的落地。记得Infoq上一篇文章曾说过:大意是,当一个技术大家不再热烈的讨论它的时候,说明他已经在工作中真正的发挥作用(当然也可能被淘汰),SOA应该是如此的。虽然各大网站对它的讨论热度不在,但是从这次技术会议中,随处可见SOA的身影。很多公司的交流都 阅读全文
posted @ 2012-09-20 21:21 常高伟 阅读 (1851) 评论 (4) 编辑
摘要:前言:我一直在关注如何让开发变得更容易,效率更高,更不易出错。之前做过类似的努力,结合SOA和工作流引擎做的一个流程编辑:http://blog.csdn.net/chgaowei/article/category/597366。它有它自身的缺陷:脚本和程序之间的耦合太大,脚本限制太多。后来接触并且学习Python,它简洁而强大,应该是解决这类问题的一个思路。那天看到Python自带的生成器yield关键字,感觉着应该是解决逻辑问题的一个突破点(后面会介绍)。再后来参加Python con2011 china,看里面很多人提到了协程和Greenlet,特别是赖勇浩提出的口号:协程才是未来。当时 阅读全文
posted @ 2012-06-21 07:59 常高伟 阅读 (9938) 评论 (1) 编辑
摘要:不要把大脑当做磁盘上学的时候我们会倾向于(被迫)背很多东西,毕业后发现大部分都又还给了老师。但是受过教育和没有受过教育的人还是有区别的,差别可能就在于剩下的那一小部分。工作后,在工作中可能还会倾向于去记忆很多东西,但是我发现很多时候是没有必要的,而且有时候甚至会成为一种负担。第一个原因是之前被我们说了很多的知识爆炸。只看看在软件开发领域,这十几年出现了多少新的语言,接口,框架,思想,方法,模式,还有操作系统。而且,知识增长的速度只会越来越快,分工也会越来越细,一个人要想记住所以的东西基本是不可能的,即便是他所处领域内的东西也是不可能的。第二个原因是没有必要。为什么要记住这些东西?因为会用到它。 阅读全文
posted @ 2012-06-13 08:08 常高伟 阅读 (3763) 评论 (33) 编辑
摘要:我看书有个特点,不写笔记,就感觉好像没有看过书,印象不深刻(虽然写了也未必深刻),所以我看书会比较慢,笔记会很多。这里总结一下并发。最近学习《深入理解计算机系统》,最后一章中讲到了并发。之前一直以为并发是为了提高性能,书中将并发理解为逻辑控制流在时间上的重叠。简单的说,就是让机器能够同时处理多个事情,充分利用机器的能力。特别是现在多核机器的普遍,并发可能越来越重要。现代操作系统提供了三种基本的方法用于构造并发:进程,I/O多路复用,线程。我们公司在工作中用的最多的其实是第二种。你也许知道,他是无法利用CPU的多核的。不过还好,我们的服务器上一般会跑多个程序(系统划分为多个程序模块)。某些语言也 阅读全文
posted @ 2012-06-06 12:50 常高伟 阅读 (10593) 评论 (3) 编辑
摘要:不知觉python总结都有四十页了,虽然可能很多都是基础性的,仍然有成就感。和之前一样,仍然全部贴出来,而不是把新的贴出来,请谅解。这次新增的部分包括c扩展,排序,ftp,源码安全,性能,代码检查等。后面在python上努力的几个方向:1、继续在开发中多使用,积累开发经验。2、针对我们公司完善基础库,在我们公司推广。3、抽时间,系统学习一下python。4、学习一下高手在怎么使用python。毕竟我是自学。5、参与开源。如果你想下载这个文档,请点击这里:http://download.csdn.net/detail/chgaowei/4324981两本不错的书:《Python参考手册》:对Py 阅读全文
posted @ 2012-06-05 23:15 常高伟 阅读 (6262) 评论 (8) 编辑
摘要:使用C很长时间,但是很难说对c的各个点都十分的透彻。虽然c不像c++那样复杂,但是还有很多叽里旮旯儿:并不是他们有多难,而是在于他们平时用的不多,或者和人的第一直觉相悖,再或者初学时经验有限理解不深根本没有记住。下面的这些东西可能来自《c专家编程》或者网络。最近发现基础的经典的书籍常读常新,原因可能有两个:1、随着自己经验的增长,你的认识可能会不一样,思维的方式也会有所变化,而得到的东西自然会是新的东西。2、早些时候经验有限,有些点可能根本就没有完全理解。现在你可以理解的更深刻。这方面的书籍再比如《代码大全》,前几天翻了一下,又有不同的认识。进入正题: 1、有符号和无符号的比较:printf( 阅读全文
posted @ 2012-06-02 10:54 常高伟 阅读 (1088) 评论 (1) 编辑
摘要:首先声明一点:这里的“高并发”是相对的,相对于硬件而言,而不是绝对的高并发。后者需要分布式来实现,这里不做讨论。本文关注的是单机的高并发。最近在做一个语音通信系统,要求在线用户2W,并发1K路通话。硬件是两台服务器,酷睿多核,4G内存,千兆网卡(我用过的最好的硬件,负担这些应该问题不大)。系统的另一个指标是呼叫时延和语音时延。这是这个系统的关键。最终我们的系统拿到用户现场测试的时候,效果可能有点太好,对方测试不大相信。其实降低时延只要几个地方把握好了,应该问题不大的。这里总结一下。1、整体结构:整体上采用控制与承载相分离的结构。控制部分负责流程的控制部分,包括流程的建立,处理,语音资源的管理等 阅读全文
posted @ 2012-06-02 07:01 常高伟 阅读 (5209) 评论 (18) 编辑
摘要:本文示例代码采用的是c语言。之前介绍过数据驱动编程《什么是数据驱动编程》。里面介绍了一个简单的数据驱动手法。今天更进一步,介绍一个稍微复杂,更加实用的一点手法——表驱动法。关于表驱动法,在《unix编程艺术》中有提到,更详细的描述可以看一下《代码大全》,有一章专门进行描述(大概是第八章)。简单的表驱动:《什么是数据驱动编程》中有一个代码示例。它其实也可以看做是一种表驱动手法,只不过这个表相对比较简单,它在收到消息后,根据消息类型确定使用调用什么函数进行处理。复杂一点的表驱动:考虑一个消息(事件)驱动的系统,系统的某一模块需要和其他的几个模块进行通信。它收到消息后,需要根据消息的发送方,消息的类 阅读全文
posted @ 2011-11-14 21:19 常高伟 阅读 (2290) 评论 (4) 编辑
摘要:最近读完《unix编程艺术》,一本不错的书,值得好好读一下。书中提到了一些非常有启发性的设计概念,这里和大家分享一下。模块性:要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单的模块组合起来。模块性可以说是听到的最多的一个,它已经深入程序员的心中。它的本质其实就是用分而治之的方法来分解复杂度。关于模块的大小,本书有精彩的论述,有兴趣可以详读。紧凑性:就是一个设计能否装进人脑的特性。我把它理解为设计的可读性。紧凑不等以薄弱:如果一个设计构建在易于理解利于组合的抽象概念上,则这个系统能够在具有非常强大、灵活的功能同时保持紧凑性,典型的如Eclipse的插件体系结构。紧凑不等于 阅读全文
posted @ 2011-10-25 20:18 常高伟 阅读 (2354) 评论 (3) 编辑