摘要:
我们没有使用TDD,所以单元测试最麻烦的就是准备测试的基础数据。我们现在是使用内存仓储来做单元测试,要为每个仓储都构造基础数据,非常麻烦。前几天看xunit的源码,看到AutoRollbackAttribute这个特性,异常的兴奋 ^_^。怎么就忘了用事务的自动回滚呢?我们看AutorollbackAttribute的具体实现:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657public class AutoRollbackAttri 阅读全文
posted @ 2012-03-16 09:24
HackerVirus
阅读(1819)
评论(0)
推荐(0)
摘要:
原本准备在mongodb之后写一个lucene.net系列,不过这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面,故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记。 好了,我们知道“负载”是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载。往小处说,线程也需要负载,面对海量的用户请求,我们的单线程肯定扛不住,那么怎么办,一定要负载,所以说多线程是我们码农必须要熟练掌握的一门技术。 在framework中给我们提供了一个Threading命名空间,下面是一个msdn上不完整的截图:在后面的系列中我也是主要整理这几个类的使用.. 阅读全文
posted @ 2012-03-16 09:22
HackerVirus
阅读(384)
评论(0)
推荐(0)
摘要:
目录1. 限制最大容量:BoundedCapacity2. 禁止加入:CompleteAdding和IsCompleted3. 枚举:GetConsumingEnumerable和BlockingCollection本身4. GetConsumingEnumerable和CompleteAdding返回目录1. 限制最大容量:BoundedCapacityBoundedCapacity属性和CompleteAdding方法,它们都可以从某种方式上限制元素被加入到集合中。但BoundedCapacity是用来限制集合的最大容量,当容量已满后,后续的添加操作会被阻塞,一旦有元素被移除,那么阻塞的添 阅读全文
posted @ 2012-03-16 09:21
HackerVirus
阅读(8066)
评论(2)
推荐(6)
摘要:
以前在学习Socket的时候,经常会使用到异步操作,孰不知将异步用到数据库查询上也是一把利器,特别是在大数据量查询的时候效果应该是比较明显的。我顺便写了一个小例子,供大家参考。 我们平时默认使用的查询是同步的,也就是说一方不等待另一方做好准备,当查询时间过长时,客户端会被一直阻塞在这里而不能做其他事情。而当我们使用异步时,程序并不会阻塞或挂起线程,它会通过一个代理的回调方法完成查询,主线程将会继续执行,这样便解决了同步所不能做到的并行执行的结果。 代码如下所示: 1 public partial class AsyncSearchForm : Form 2 { 3 ... 阅读全文
posted @ 2012-03-16 09:20
HackerVirus
阅读(760)
评论(0)
推荐(0)
摘要:
在Web显示的时候我们经常会遇到分页显示,而网上的分页方法甚多,但都太过于消耗带宽,所以我想到了用Ajax来分页,利用返回的Json来处理返回的数据,大大简化了带宽的压力。先说下思路,无非就是异步执行ajax 把新列表所需要的数据用json格式返回来,然后把原来的列表Remove掉,让新列表Show。上前台Html代码:<!--一个table 里面是repeater 当然了你也可以用<UL>那样效率更高--><table width="100%" border="0" cellpadding="0" id 阅读全文
posted @ 2012-03-16 09:18
HackerVirus
阅读(241)
评论(0)
推荐(0)
摘要:
此文章是利用Linq + Jquery + Ajax 异步分页的实现的后续文章,里面涵盖了,利用客户端复选框进行批量删除,单个删除,全选,反选的各种操作,可以立即用于商业开发!客户端代码:$("#quan").click(function () {//全部选择 $(".check_select").attr('checked', true); }) $("#fan").click(function () {//反选择 $(".check_select").each(function (i) { $( 阅读全文
posted @ 2012-03-16 09:17
HackerVirus
阅读(350)
评论(0)
推荐(0)
摘要:
最近在做性能测试,有大量的重复的操作,所以打算用bat文件做脚本。之前也用过bat文件,但是都只是应用到一些简单的功能。比如用%var%来指定环境变量,%0,%1来指代传入的参数,用if来进行字符串比较等等。今天通过网上搜索,学会了三个新的功能。用set /a 来进行数学计算,具体的语法如下:Add: SET /A Result = 12 + 4Subtract: SET /A Result = 23 - 7Multiply: SET /A Result = 8 * 2Integer divide: SET /A Result = 33 / 2Modulo divide: (1, 2) SET 阅读全文
posted @ 2012-03-16 09:16
HackerVirus
阅读(452)
评论(0)
推荐(0)
摘要:
1. 引言先来个比喻手法:如果把上课的过程比作进程,那么每个学生就是一个线程,他们共享教室,即线程共享进程的内存空间。每一个时刻,只能一个学生问老师问题,老师回答完毕,轮到下一个。即线程在一个时间片内占有cpu。这个例子容易理解多了吧?!下面马上来看些基本概念。仅为个人理解,轻描淡写。2. 进程进程是表示资源分配的基本单位,又是调度运行的基本单位。从编程的角度,也可以将进程看成一块包含了某些资源的内存区域。例如:当用户打开一个txt文档时,系统就创建一个进程,并为它分配资源。有时候打开得很慢,这是因为此时CPU运行的进程数过多,该进程需要等待调度,才能真正运行。如果再打开另外一个txt文档时, 阅读全文
posted @ 2012-03-16 09:13
HackerVirus
阅读(370)
评论(0)
推荐(0)
摘要:
LINUX学习笔记高度浓缩版之一 :用户管理、启动过程、硬盘管理纯手打,边读书边写。1、创建用户useradd -m -d /home/tom tom -G oracle-m 表示为该用户创建一个主目录,并拷贝/etc/skel下的文件为其做初始化。-G 表示加入某个用户组。用户默认设置都储存在/etc/default/useradd文件中,可以用useradd-D命令查看或者修改这些配置。包含了默认组,SHELL,skel,用户默认到期时间(EXPIRE),密码过期后可以修改的天数(INACTIVE)。useradd -D -s shel -b path/to/default/home -e 阅读全文
posted @ 2012-03-16 09:12
HackerVirus
阅读(390)
评论(0)
推荐(0)
摘要:
【译著】16 模型模板 — 精通 MVC 3 框架C H A P T E R 16■ ■ ■Model Templates模型模板The HTML helpers that we looked at in the previous chapter, such as Html.CheckBoxFor and Html.TextBoxFor, specify the HTML element required to edit a piece of data. The MVC Framework supports an alternative approach, known as templated 阅读全文
posted @ 2012-03-16 09:09
HackerVirus
阅读(1103)
评论(0)
推荐(2)