上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 28 下一页

2013年6月16日

技术人生:如何成为强大的程序员?(转载)

摘要: Aaron Stannard 是新创公司 MarkedUp 的CEO,他最近花费大量时间雇佣、评估很多不同的程序员,并和他们一起协作。在这个过程中他发现并总结了十种程序员无法意识到自己潜力的原因,意在让更多程序员发掘出自己的潜力,从而成为强大的程序员。 Aaron 提到,他的公司中所使用的技术非常复杂,某些大型企业都很难掌握,所以对于想要加入团队的程序员来说,入门门槛非常高。因此,尽管他们非常仔细地雇佣新人,但还是很难找到足够天才的程序员。于是,他总结出十种阻碍程序员职业生涯发展的行为,并据此来帮助想要提升自身的平凡的程序员们。 1. 太害怕学不会新的工具、语言和框架 一般的程序员会墨守... 阅读全文

posted @ 2013-06-16 20:29 幸福框架 阅读(347) 评论(0) 推荐(0) 编辑

2013年6月15日

DDD:如何处理“唯一性”业务逻辑

摘要: 背景唯一性约束是一个经常出现的业务逻辑,刚开始我觉得非常简单,不过深入考虑后,发现实现起来还不是那么简单,下面就让我们分析一下。两种场景下的唯一性约束第一种场景:聚合根的某个属性的唯一性约束示例:用户的用户名必须唯一。第一种实现思路:后验证+不用数据库索引,在插入用户名和修改用户名之后执行一次验证,这个验证逻辑执行的事务隔离级别必须处于“读未提交”级别。 1 public volid Insert(User user) 2 { 3 using(var ts1 = new TransactionScope("读已提交")) 4 { 5 DoInsert(user)... 阅读全文

posted @ 2013-06-15 21:14 幸福框架 阅读(2103) 评论(0) 推荐(1) 编辑

2013年6月14日

DDD:聚合(根)、实体、值对象精炼思考总结(转载)

摘要: 原文链接:http://www.cnblogs.com/netfocus/archive/2012/02/12/2347938.html。1. 聚合根、实体、值对象的区别?从标识的角度:聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法;从是否只读的角度:聚合根除了唯一标识外,其他所有状态信息都理论上可变;实体是可变的;值对象是只读的;从生命周期的角度:聚合根有独立的生命周期,实体的生命周期从属于其所属的聚合,实体完全由其所属的聚合根负责管理维护;值对象无生命周期可言,因为只是一个值;2. 聚合根、实体、值对象对象之间如何建立 阅读全文

posted @ 2013-06-14 22:43 幸福框架 阅读(2407) 评论(0) 推荐(1) 编辑

2013年6月13日

.NET:栈的生长与消亡

摘要: 背景多数情况下我们不需要关心栈的变化,不过个别场景下还是需要对此有所了解,如:指针操作,下文会给出一个具体的示例。另外,理解栈的变化对于理解作用域也有一定的好处,因为C#的局部变量作用域是基于栈的。栈的变化规则方法调用会导致栈的生长,具体包括两个步骤:一、插入方法返回地址(下图中的Fn:);二、将实际参数按值(可以使用ref或out修饰)拷贝并插入到栈中(可以使用虚参数访问)。遇到局部变量定义会向栈中插入局部变量。遇到return语句会导致栈消亡,一直消亡到方法返回地址,并把return的返回值设置到方法返回地址中。这里先不考虑中括号导致的栈的消亡。简单的示例最后的小测试,输出的啥内容? 1 阅读全文

posted @ 2013-06-13 23:17 幸福框架 阅读(1295) 评论(2) 推荐(3) 编辑

2013年6月12日

.NET:也谈谈.NET中的引用类型和值类型

摘要: 背景引用类型和值类型的区别好像是一个经典的面试问题,也是一个非常基础的问题,今天试着写一下,一则为了以后新入职的毕业生学习,二则希望高手批评。几个事实值类型的局部变量始终分配在栈中,局部变量中存储的是值。引用类型的局部变量始终分配在栈中,局部变量中存储的是值地址(引用),地址指向的值(对象)分配在堆中。值类型的成员变量始终内敛存储在对象中(堆中),内敛存储的是值。引用类型的成员变量始终内敛存储在对象中(堆中),内敛存储的是值地址(引用),地址指向的值(对象)分配在堆中的另外一个区域。一个进程拥有多个AppDomain。一个AppDomain拥有一个堆。一个进程可以运行多个线程。一个线程拥有一个 阅读全文

posted @ 2013-06-12 23:22 幸福框架 阅读(1365) 评论(5) 推荐(1) 编辑

2013年6月11日

技术人生:学会快速的切换上下文

摘要: 编程领域有一个非常重要的概念:“上下文为王”,在ASP.NET、WCF和WF中都可以找到上下文的定义。我想上下文对于我的生活也是一样,我必须学会快速的切换上下文,在不同的上下文中扮演不同的角色,当然也要享受这些角色。 阅读全文

posted @ 2013-06-11 20:12 幸福框架 阅读(302) 评论(0) 推荐(0) 编辑

2013年6月10日

技术人生:年轻的我,没有放纵的理由,也不想

摘要: 放假了,哪里都不想去,就想见一些志同道合的朋友、学学习和写写代码。老婆大人也比较宅,否则我是愿意和她一起去旅游的(她旅游,我拜访朋友)。 阅读全文

posted @ 2013-06-10 08:53 幸福框架 阅读(221) 评论(1) 推荐(0) 编辑

2013年6月9日

幸福框架:模式驱动开发

摘要: 背景我非常喜欢各种模式(很多还都看不懂),几乎会购买关于模式的任何书籍,生怕有所遗漏,关于模式的优势以及如何使用好模式已经有很多文章在介绍了,我今天想给大家分享的是我的一个想法:模式驱动开发,即如何使用模式来进行真实的项目开发。思路关于模式我们已经有了足够的资源(甚至泛滥),目前缺乏的是将这些模式落地的具体框架、组件和工具(后面我简称为平台)。想做一个通用的平台确实不容易,但是我们可以将业务领域和技术领域进一步限定,甚至只限定在一个应用程序中,在这种限定的业务领域和技术领域内做一个平台应该不是很难了。以界面为例,在我做过的企业应用领域出现的界面模式还没有超过20种,如果这20种模式有一个好的平 阅读全文

posted @ 2013-06-09 09:31 幸福框架 阅读(1120) 评论(1) 推荐(0) 编辑

2013年6月8日

DDD:在基于关系数据库的领域,聚合的边界等于并发管理的边界。

摘要: 背景领域驱动中关于聚合设计的原则一直存在一个模糊的定义,比如:不变量、一致性和一个边界。根据这些规则很难清晰的划分聚合,不排除聚合的设计有一定的艺术性,但是在限定的领域内或许有某种可以明确遵循的规则,前几天我好像思考到了这样一个规则,这里分享给大家,跪求批评。规则(在基于关系数据库的领域,聚合的边界等于并发管理的边界。)为了满足不变量和一致性,毫无疑问我们要采用并发管理。正确的聚合设计下图中只有一个聚合实例,在聚合根中应用乐观锁保证聚合的一致性,一个聚合必须做为一个整体进行操作,如:客户端修改“明细”时,其加载和保存的JSON数据必须包含“聚合根”。错误的聚合设计下图中只有三个聚合实例,在聚合 阅读全文

posted @ 2013-06-08 08:59 幸福框架 阅读(1665) 评论(5) 推荐(2) 编辑

2013年6月7日

.NET:如何应对边界异常?

摘要: 背景为什么语言引入了异常一直没有思考过这个问题,但是异常确实让我的编程生活更快乐,今天早上似乎找到了这个问题的答案:exception之于call stack就像break和continue之于while或for、就像return之于method,总结为一句话:异常只是一种返回机制。为什么异常让程序更简洁代码里只有正常的处理逻辑。 1 /// 2 /// 创建。 3 /// 4 public ActionResult Create(TAggregateRoot item) 5 { 6 t... 阅读全文

posted @ 2013-06-07 08:12 幸福框架 阅读(1997) 评论(6) 推荐(8) 编辑

2013年6月6日

MongoDB:安装步骤

摘要: 第一步:下载安装包下载地址:http://www.mongodb.org/downloads。第二步:解压第三步:设置环境变量第四步:创建log和data目录第五步:创建配置文件mongod.cfg内容:1 logpath=D:\mongodb-win32-i386-2.4.4\log\mongo.log 2 dbpath=D:\mongodb-win32-i386-2.4.4\data第六步:安装为Windows服务命令行内容(需要管理员权限):1 mongod.exe --config D:\mongodb-win32-i386-2.4.4\mongod.cfg --install2 ne 阅读全文

posted @ 2013-06-06 12:13 幸福框架 阅读(2180) 评论(2) 推荐(0) 编辑

AOP:使用命令模式实现AOP

摘要: 背景某位大牛说过,采用命名模式的好处是,你可以将命令按照不同的方式执行,如:排队、异步、远程和拦截等等。今天我介绍一下如何拦截命令的执行,这有些AOP的味道。思路就是一个管道过滤器而已实现先不考虑处理器的实例化和过滤器列表的实例化,如果给你一个命令、一些过滤器和一个处理器,让你组装为一个管道应该不是啥大问题。这部分概念虽然简单,可是也不见得好理解,因此我基本把全部代码都贴上了,建议不太明白的同学,自己重写一遍,加深对管道过滤器的理解。核心代码命令接口 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 阅读全文

posted @ 2013-06-06 09:19 幸福框架 阅读(1931) 评论(5) 推荐(1) 编辑

2013年6月5日

.NET:离线悲观锁 之 过期策略支持

摘要: 背景之前写了一篇文章防止并发修改 之 离线悲观锁代码示例(离线悲观锁),这篇文章回避了一个问题,就是如何处理用户直接关闭浏览器后导致的锁占用问题。本文就介绍一个思路。思路思路1这是之前已经提供过的思路,只是没有贴出来,就是:当会话结束的时候清除所有用户持有的锁,这会导致个别锁在会话期间被长时间占用(可能超过几个小时)。思路2引入一个后台线程,每隔指定的分钟就清理一下被长时间占用的锁,如:清理那些占用超过10分钟的锁,这回导致一定的线程成本,因为这个线程需要频繁的运行。思路3引入过期策略,是否被锁完全取决于两个条件:是否拥有锁以及是否过期,这个思路下过期的锁会成为一种垃圾,如何清理这种垃圾又是一 阅读全文

posted @ 2013-06-05 08:11 幸福框架 阅读(1274) 评论(2) 推荐(0) 编辑

2013年6月4日

幸福框架:全站式代码生成器示例

摘要: 背景一直在做企业应用,也一直在使用代码生成器,代码生成器分两个维度,一个维度是”主动或被动“,另外一个维度是”运行时或编译时“,这两种维度会有四种组合,每个组合都有其应用的场景,今天我就介绍一下Happy是如何使用代码生成器的。概念介绍主动:可以生成多次,会”主动“的合并生成代码和用户自定义代码,C#的部分类和ExtJs的扩展类就是,通过一些文本合并工具也是可以实现的。被动:不可以生成多次,每次生成都会覆盖用户自定义的代码。运行时:运行时的代码生成,也叫元编程,动态语言几乎都支持,静态语言可以使用动态编译。编译时:编译时的代码生成,是狭义的代码生成器的代名词。还有一点需要说明的,如果是基于应用 阅读全文

posted @ 2013-06-04 08:08 幸福框架 阅读(6645) 评论(26) 推荐(9) 编辑

2013年6月3日

幸福框架:在应用层实现触发器

摘要: 背景企业应用开发过程中经常面对一些非功能型需求,如:自动收集和设置审计信息、索引和关系约束,有些非功能需求当然可以用数据库自带的功能,如索引约束,但是应用层视乎也有必要重复一次,因为当违背这种约束的时候我们希望提示给用户友好的信息,如:‘xxx已经存在,xxx必须唯一’,这篇文章我就介绍一个简单的方案应对这种需求。思路我觉得数据库的触发器是个好东西,应用层完全可以借用一下,我还认为如果我在应用层实现了触发器,像一些前置条件和后置条件验证也可以用触发器实现(这块我不是很清楚设计的是否合理,还是要引入另外一个继承体系)。实现核心类核心代码DefaultTriggerService.cs 1 usi 阅读全文

posted @ 2013-06-03 08:37 幸福框架 阅读(1883) 评论(10) 推荐(0) 编辑

2013年6月2日

技术人生:不要害怕,闲着干啥

摘要: 一个朋友的微博【世界上这三种人最可怕】第一:每天坚持早上锻炼或者写日记、发微博的人,因为他们的恒心和自制力了得;第二:孝敬父母的人,因为他们会对父母好,就会对朋友好,对客户好,为人也一定好;第三:本人很丑却有漂亮老婆的人,因为他们的忽悠能力营销能力很强!害怕的我最怕自己一生无所成就,死之前不知道说啥,想明白了,害怕没用,闲着也不知道干啥,还是努力坚持吧! 阅读全文

posted @ 2013-06-02 09:25 幸福框架 阅读(259) 评论(3) 推荐(0) 编辑

2013年6月1日

DDD:聚合根的批量删除是不是可以批量发送请求

摘要: 背景搞了近五年的系统开发,总是抱着一种思维模式,用户的一个操作对应一个请求和一个事务,比如:用户选择了N条记录,我就会向服务器发生一个请求,服务器在一个事务中进行处理。前几天在群里一个前辈反问:批量操作难道真的要在一个事务中?这个问题让陷入了反思,谢谢前辈们(魏琼东)。DDD中有聚合的概念,一个聚合有且只有一个聚合根和一些其他实体,如:订单聚合中,订单是聚合根,订单明细是聚合内的实体。因为DDD中只能操作聚合根,这篇文章就介绍聚合根的批量删除问题。有人问聚合内的实体的删除咋弄?聚合内实体的删除必须伴随着聚合根的修改(这里不做详细介绍)。另外一点是需要注意的是,引入工作单元之后,批量操作和单个操 阅读全文

posted @ 2013-06-01 09:07 幸福框架 阅读(2302) 评论(3) 推荐(0) 编辑

2013年5月31日

幸福框架:准备抽象NHibernate和EntityFramework,大家给点意见

摘要: 背景考虑到目前中小企业应用的主流是ORM,我准备在NHibernate和EntityFramework之间找到一个抽象层,也就是说我准备只支持NHibernate和EntityFramework。思路NH和EF都实现了“工作单元”和“主键映射”这两种企业应用模式,而这两种模式其实就是管理一种状态机,如下图:实现工作单元接口 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7... 阅读全文

posted @ 2013-05-31 09:02 幸福框架 阅读(2747) 评论(9) 推荐(1) 编辑

2013年5月30日

技术人生:让最卑微的念头也表现出来

摘要: 今天写完博客,有一个朋友给我提了一个意见,我虽然接受了,但是明显感觉心里有点不爽,这个要改正。要谢谢那些提意见的朋友。说容易,要发自肺腑的接受别人的意见不容易。 阅读全文

posted @ 2013-05-30 10:52 幸福框架 阅读(279) 评论(0) 推荐(0) 编辑

.NET:防止并发修改 之 离线悲观锁代码示例(离线悲观锁)

摘要: 背景系统会出现并发,上篇文章我介绍了如何使用“离线乐观锁”保证并发,离线乐观锁适合处理那些重新编辑成本不大的单据,如果某个单据用户花了10分钟进行编辑,提交时你告诉他出现并发了,他心里肯定会骂娘的,今天介绍的“离线悲观锁”就可以避免这种情况。思路小明签出了源代码,小强就不能签出了,我们目前的源代码系统就是用的这种悲观策略。实现核心代码离线悲观锁管理器接口 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Ta 阅读全文

posted @ 2013-05-30 08:12 幸福框架 阅读(2933) 评论(19) 推荐(6) 编辑

上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 28 下一页

导航

我要啦免费统计