
Software Engineering
文章平均质量分 59
wavefly_liu
每一天都在学习,每一天都在进步!
展开
-
maven2 笔记
学习Mina的时候,发现Mina使用Maven做项目管理的。又开始学习Maven,这段时间做的笔记。要学会这种类似于ant,又比ant高级的build工具,首先要掌握mvn命令下的各个参数,然后将这些mvn、参数组合在实际的项目中加以运用。mvn将项目分为5个阶段(lifecycle):准备、编译(complie)、测试、部署、运行下载配置maven: 详细过程网上都会有。1原创 2008-08-04 17:23:00 · 6257 阅读 · 0 评论 -
安装版本控制系统
在Debian/Ubuntu上安装Mercurialsudo apt-get install python2.6.6sudo apt-get install python-all-devsudo apt-get install python-setuptoolssudo easy_install -U mercurialhg --version安装Git原创 2012-05-09 17:59:15 · 715 阅读 · 0 评论 -
软件行业决定发展前景
中国传统的软件行业中,普通的开发人员就是一个螺丝钉,项目需要你实现一个功能,你就要用最快的速度实现这个要求-google/baidu之,然后copy/paste,起主导作用的是行业的丰富经验,纯粹的技术会导致以后发展的路越来越窄,技术人员不能在技术领域钻研的很深。国内很多业务领域的基础软件都是依赖于国外的厂商:Oracle/DB2、Weblogic/Websphare、消息中间件Tuexdo/We原创 2011-04-28 21:40:00 · 1183 阅读 · 3 评论 -
好代码就是注释--你被骗了
“好代码本身就是最好的文档。当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释”实际上很多程序员的编码能力不足以达到“代码本身就是最好的文档”。即使一个团队中,大家都能互相理解其他人的代码,可以实践“代码即注释”,但是对于一个没有刚刚加入团队的新人来说,注释+代码才是最容易帮助理解逻辑流程的东西,如果这个新人是刚毕业的学生,那么代码也很难达到“代码就是最好文档”的程度,在一个团队中注原创 2013-11-03 21:02:16 · 3612 阅读 · 1 评论 -
git merge abort解决
在使用git的时候,一般用.gitignore文件来记录不需要上传到repo的文件。但是使用svn merge的时候,会因为这个文件导致svn merge之类的操作失败。解决办法:.gitignore文件使用1.将不想提交到git的文件名称按照通配符的方式写入.gitignore文件中2.git rm --cached .gitignore,将.gitignore文件从git原创 2014-03-08 17:21:47 · 35715 阅读 · 2 评论 -
架构腐化之谜-阅读笔记
架构腐化之谜本文的内容来源于此,但非仅限于此:http://www.infoq.com/cn/articles/cjz-architecture-corruption本文13年10月完成的,在13年底-14年初负责一个营销项目的业务代码架构,却并未完全按照下面的优点做下去(太汗颜了~\(≧▽≦)/~):例如监控只加入了一半、单测只完成数据访问层部分、部分无用代码还未清理重构。。。当原创 2014-03-09 20:45:27 · 3941 阅读 · 1 评论 -
记一次38营销项目总结(第一个女人节)
本文是个人的一些总结,有些因为是内容和数据是机密就不详述了,主要记录了一个算是大型项目开发过程中需要考虑的地方,当一个用户量多后,很多东西都不能用常识来估量,也会出现各种奇妙的问题。1、项目初期2、项目开发3、测试与产品体验4、项目稳定性5、上线运营6、后记原创 2014-03-19 09:00:02 · 3418 阅读 · 0 评论 -
项目流程管理&&架构总结
1 项目背景所在业务在早期没有营销费用,买家购买商品的折扣优惠是由卖家提供的,所有订单的最终价格是由卖家和业务方确定的,整个购买流程很简单。现在此业务收受到公司重视,业务团队能申请到营销费用,业务团队能主动补贴折扣优惠。一件东西进行促销时,用户购买此物品后,由业务方出钱补贴折扣的费用,而卖家不需要考虑优惠折扣。实现这种营销需求需要和第三方的团队合作,例如商家营销团队、账务团队。2 项目原创 2014-07-16 17:04:19 · 3771 阅读 · 0 评论 -
如何重构一个系统
如何重构一个系统发现一个很有意思的情况,做系统写代码多年了,遇到的需求基本上是在已有的系统上实现,从头来实现的系统基本上没有。1 why无论是从头是实现一个系统,还是维护一个系统,当时实现的技术可能是最先进的、规划的产品逻辑是合理的,随着时间的发展、开发人员的变更、系统的代码质量会逐渐腐化,加个Feature太麻烦,改个Bug涉及模块太多-没有单测不敢随便解,业务方抱怨技术团队响应太慢原创 2014-12-21 13:52:45 · 10406 阅读 · 1 评论 -
阅读笔记-软件工程思想(林锐)
在大学学习C/C++的时候后,看过他的《编程高手箴言》,现在又看了他的《软件工程思想》,这本书很薄,主要记录的是他的编程经验。原创 2010-01-11 18:49:00 · 1570 阅读 · 0 评论 -
大道至简读书笔记
大道至简1. 授人以鱼不如授人以渔:这本讲的是周先生编程过程中的总结和感想2. Chapter 1、编程的精义2.1 1、编程的根本:顺序、分支、循环2.2 2、编程语言没有优劣,只有适用的环境3. Chapter 2、解决问题:方法优先-有真正的OO编程?4. Chapter 3、技术能力!=管理能力4.1 团队-制度-成员角色:分工明确5. Ch原创 2010-04-07 17:53:00 · 1068 阅读 · 0 评论 -
单元测试之道 笔记
注:参考网络上已存在的文章。第1章 序言 ·什么是单元测试单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。 A unit test is a piece of code writtern by a developer that exercises a very s原创 2009-12-31 17:57:00 · 1049 阅读 · 0 评论 -
一个IT人七次跳槽的十点经验总结:跳槽一定要谨慎
原帖地址:http://sighlife.com/61.html早点看到这篇文章,可能就是另一种选择了跳槽是一门学问,也是一种策略。跳槽并不意味着你就能够取得职业的成功,当面临跳槽时,如何顺利地完成跳槽,从而取得职业的成功呢?以下是一些切身体会,值得大家参考。不错转载 2011-08-22 17:39:20 · 3663 阅读 · 0 评论 -
一位ALS患者在生命走到尽头前用脚贡献了最后一个代码补丁
一位ALS患者在生命走到尽头前用脚贡献了最后一个代码补丁,修正了GNOME中一个存在了9年的BUG。转载 2011-04-12 22:40:00 · 895 阅读 · 0 评论 -
DAILY BUILD
1 什么是dailybuilddaily build 网上译为"每日构建",可我更喜欢喊它为"每日集成".daily build 就是把一个软件项目的所有的最新的代码从配置库中取出,然后从头进行编译,链接和运行。更甚者可以再运行测试包对软件的主要功能进行测试,发现并报告错误的整个过程。最常见的是前过程。daily build 一般是在每日下班后半夜进行,前提是员工check in 最新的code到转载 2009-01-01 15:48:00 · 1785 阅读 · 0 评论 -
ANT使用笔记
ANT1、 当你修改静态常量定义的时候,对于使用静态常量的类,由于没有修改,因此ant不知道应该重新编译,这会导致隐含的错误,是因为javac inline造成2、 如果删除了源代码中的一个java文件, 除非清空编译得到的class目录或者手动删除, 否则多余出来这个class不会自动被找到和删除的.)3、 ANT必须有一个defaulttarget元素。原创 2009-03-10 13:54:00 · 1488 阅读 · 0 评论 -
TDD开发总结
在要求项目要尽量快地实现的时候,质量与开发进度上会出现一定的矛盾,最突出的就是单元测试代码与逻辑实现代码。TDD (测试驱动开发)必然没错,但是使用不当会造成开发效率的下降。在敏捷开发实践中,结合前辈经验与自己的经验,如下几点是要关心的:1. 为主要的、关键的逻辑组件,关键的逻辑方法进行测试驱动开发 这样对设计、设计演化很有帮助2. 逻辑类似的组件如果存在多个,优先编写其中一种逻辑组件的测试原创 2009-03-11 11:31:00 · 747 阅读 · 0 评论 -
注释==代码臭味
Comments == Code Smell 原文地址:http://memeagora.blogspot.com/2008/11/comments-code-smell.html I am sometimes asked about my position on code comments, and, like most things, I have strong opin翻译 2009-03-26 18:41:00 · 948 阅读 · 0 评论 -
软件开发者面试百问
想雇到搞软件开发的聪明人可不容易。万一一不小心,就会搞到一堆低能大狒狒。我去年就碰到这种事了。你肯定不想这样吧。听我的,没错。在树上开站立会议门都没有。问点有难度的问题能帮你把聪明人跟狒狒们分开。我决定把我自己整理出来的软件开发者面试百问发出来,希望能帮到你们的忙。这个列表涵盖了软件工程知识体系中定义的大多数知识域。当然,如果你只想找出类拔萃的程序员,便只需涉及结构、算法、数据结构、测试这几个话题转载 2009-03-27 15:59:00 · 844 阅读 · 0 评论 -
程序线程设计的原则
1.不要尽可能的利用已有对象,不要担心对象创建2. 为了thread safe: 考虑 : Caller copies Receiver copies:原创 2009-09-08 17:16:00 · 716 阅读 · 0 评论 -
项目与产品的区别
我是在线支付产品的,在完成模拟项目过程中曾经看过一些关于项目和产品区别的帖子,现总结如下:1、业务范围与需求调研 产品研发与项目研发的区别,业务目标与范围不一样,产品关注的是行业领域一类客户的需求的共同点与差异,需要长时间的业务调研,最终成为客户的一个业务顾问。而且在开发之前没有明确的客户,只有潜在的客户,客户通常不了解产品,开发完成之后需要去宣传,让潜在的客户购买产品。风险较大。原创 2010-05-06 10:34:00 · 4078 阅读 · 3 评论 -
GPL和LGPL协议
一直对GPL、LGPL、GPLV3的细节区别不清楚,今天转了一遍关于GPL和LGPL的文章当做参考资料。原文:http://simplesys.cn/2010/04/02/gpl%E5%92%8Clgpl%E5%8D%8F%E8%AE%AE/参考:http://www.oschina.net/bbs/thread/2827/lgplGNU是组织,这个就不说了常见的开源版权有两种,GPL转载 2010-05-17 17:41:00 · 6307 阅读 · 0 评论 -
实现邮储柜台模拟程序杂感(二)
实现邮储柜台模拟程序杂感(一)4、事件机制<br />事件分为同步事件、异步事件,主要是用来实现项目的可伸缩性、降低模块之间的耦合。<br />J2EE中的标准为JMS,有很多的实现项目,核心技术:对象序列化+TCP/UDP通讯+线程管理。<br />具体内容:系统中何时上异步消息架构5、系统开发<br /> <br />在编写代码的过程中,采用了分层开发和按照模块开发2种开发方式.<br />分层开发能够保证系统层次分明、职责清晰;强制性的使用面向接口开发:业务处理开发必须依赖Mock对象才能继续下去;在原创 2010-07-15 18:10:00 · 1666 阅读 · 0 评论 -
2010年小结
又是一年春荣夏繁秋枯,北京本该来的白雪却失约未至。我本是一个好总结的人,写总结的习惯已经持续了2年,就算做一个平凡的自传。我已经在公司供职已经达到三年。还记得毕业后刚刚来到公司不久,没有想象中的入职技术培训,面对网汇通海量的代码头晕脑胀,我不停的在以前的文档中寻找作者的业务思路和编码意图、在互联网上寻找作者的技术理念和实现原理。通过在网汇通项目中学习的关于加密、通讯、分布式、缓存、数据持久、数据库优化、系统调优、需求分析、设计的理念帮助我有效的解决在2010年的项目的遇到的问题。在2010年初期,我主要的任原创 2011-01-25 16:44:00 · 846 阅读 · 2 评论 -
反转链表:空间复杂度为O(1)的算法
题目:反转一个链表的数据,要求空间复杂度为O(1)原创 2011-04-03 18:46:00 · 4947 阅读 · 0 评论 -
分布式事务2PC笔记
2PC 事务介绍http://www.cnblogs.com/sunddenly/articles/4072882.html看过一个改进版的2PC,特性:1、与具体事务实现系统无关2、独立事务日志系统(不依赖undo),永不宕机3、coordinator也是事务的参与方(发起方)。commit阶段,发起方成功,则事务成功,其余参与方如果失败,则任务补偿。4、事务原创 2015-11-16 13:59:49 · 5557 阅读 · 0 评论