Fork me on GitHub

2011年4月1日

摘要: 写在前面:学习一种技术,我都要先搞清楚,1、我为什么要学习和使用它,它有哪些好处?2、它适用什么场合?3、如何使用它。这是我从我大学的导师那里学来的(在这里向我的导师致敬~~),我觉得很受用。之所以把如何使用放在最后,是因为在你没有搞清楚它的利弊和适用场合之前,如果上来就学习,即使学会了,在使用的过程中带来隐患。所以我会按照这个顺序来写,如果大家认为有道理的话,可以借鉴借鉴~~呵呵 1、为什么要使用ThreadPool?MSDN的官方说法是:许多应用程序创建的线程都要在休眠状态中消耗大量时间,以等待事件发生。其他线程可能进入休眠状态,只被定期唤醒以轮询更改或更新状态信息。线程池通过为应用程序提 阅读全文
posted @ 2011-04-01 00:02 HackerVirus 阅读(253) 评论(0) 推荐(0)

2011年3月31日

摘要: 1、前台线程和后台线程的基本概念MSDN上对前台线程和后台线程有如下描述:http://msdn.microsoft.com/zh-cn/library/h339syd0(VS.80).aspx 前台线程和后台线程的主要区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。 注意:通过Thread类创建的线程都是前台线程。线程池ThreadPool(后面将会介绍)中的线程都是后台线程。 在使用Thread创建前台线程时,可以通过IsBackground属性以确定该线程是前台线程还是后台 阅读全文
posted @ 2011-03-31 23:56 HackerVirus 阅读(297) 评论(0) 推荐(0)
摘要: 抽象工厂模式是一种创建型的模式。上面的比喻说明了抽象工厂就是生产同一个系列产品的东西,因为这一系列的产品是关联的,如果混用就可能出问题,所以就统一的在抽象工厂中进行创建。当要增加一个新的产品系列时,就多写一个工厂子类并添加相应的产品子类就可以了。我们来看一个类图。 图中,我们可以看到,客户需要得到某系列的产品的时候,直接用相应的工厂子类来创建产品就可以了。接来下我们设计个邮件发送的线程实例:首先创建一个接口ISaaSProcess.cs:view sourceprint?/// <summary> /// 异步调用接口 /// </summary> public int 阅读全文
posted @ 2011-03-31 23:55 HackerVirus 阅读(197) 评论(0) 推荐(0)
摘要: 开篇(设计模式之泡妞二十三招)园子里讲设计模式的太多了,最近我也在学设计模式,把我自己练的一些代码整理下,写个.NET设计模式学习笔记来让自己在设计模式的功底更深一层。记得金庸小说里风清扬教令狐冲的时候,说过独孤九剑的总纲,无招胜有招,其实设计模式中也有这种总纲,那便是 ?Identify the aspects of your application that vary and separate them from what stays the same.(找到系统中变化的部分,将变化的部分同其它稳定的部分隔开)。而我就有泡妞二十三招比喻设计模式的二十三种模设的开篇吧,作为大家茶余饭后的笑资 阅读全文
posted @ 2011-03-31 23:53 HackerVirus 阅读(203) 评论(0) 推荐(0)
摘要: 今天在网上找了一下Microsoft Enterprise Library 5.0 如何集成MySQL数据库, 结果只找到了entlib 4.1的扩展模块,http://entlibcontrib.codeplex.com/, 按照上面的说明配制后还是不成功。于是只好手动修改一下来支持entlib 5.0修改后的项目: MySqlDAAB.rarMySql.Data.dll: MySql.Data.dll1. 修改MySqlDatabaseAssembler.cs文件publicclassMySqlDatabaseData:DatabaseData{#regionPublicMethodspu 阅读全文
posted @ 2011-03-31 23:50 HackerVirus 阅读(417) 评论(0) 推荐(0)
摘要: 现在项目中使用的架构大概如下图,一个典型的分层架构,从PetShop学习得来,当时认为业务逻辑是不可能更换的,所以便去掉了IBLL层,但是现在看来这一层还是很有必要的,不同的时候看同一件事就会有不同的看法。UI层主要是收集数据和显示数据。Model层主要是一些贫血的实体类。BLL层主要负责业务逻辑的处理。IDAL是数据访问接口层。DALFactory主要负责数据访问对象的构造,这里主要是用到了反射来创建对象。DAL层实现数据访问接口。这个分层架构的好处是各个层的职责更加明确,同时由于通过接口来处理数据存储,所以理论上可以实现多数据库支持。对于一般的项目,这个架构也算是足够了。但是仔细分析会发现 阅读全文
posted @ 2011-03-31 23:43 HackerVirus 阅读(339) 评论(0) 推荐(0)
摘要: 回忆刚进公司那会儿,手头的第一个工作就是完成虚拟键盘,也就是通过驱动程序向键盘端口写入数据,这份活至今记忆犹新,那会儿写的是个过滤驱动程序,也就是将我的虚拟设备绑定到真实的键盘设备上,当驱动程序编译完成以后,我也总是通过下面的这个工具来安装驱动程序,每编译好一次就使用这个工具重新安装驱动一次,然后通过 DbgView 来打印消息,那会儿还真傻,为了弄出这么个虚拟键盘,都不晓得安装了驱动多少回,直到后来,当驱动程序完成以后,就需要部署驱动程序了,在网上找了很多资料,大部分也都是通过 INF 文件来实现,而对于 WDM 驱动程序,则还可以通过服务控制台来实现安装,模模糊糊还记得当初就是通过这个服务 阅读全文
posted @ 2011-03-31 23:34 HackerVirus 阅读(479) 评论(1) 推荐(0)
摘要: <%#Bind("Subject")%>//绑定字段<%#Container.DataItemIndex+1%>//实现自动编号<%#DataBinder.Eval(Container.DataItem,"[n]")%>通常使用的方法<%#DataBinder.Eval(Container.DataItem,"ColumnName")%><%#DataBinder.Eval(Container.DataItem,"ColumnName",null)%>&l 阅读全文
posted @ 2011-03-31 22:51 HackerVirus 阅读(222) 评论(0) 推荐(0)
摘要: 这几天一直在忙,怎么把图片保存到数据库中,在前台的图片切换中自动从数据库中检索最新的图片显示,按照这个过程,我首先讲一下我这几天的所得,因为也是刚学,又从网上查资料,也是找自己能看懂的来运用的,不难有与别人不一样的地方。其实,在数据库中是不能直接保存图片类型的。编程人员一般采取两种方法来保存图片:1、用来保存图片在服务器的虚拟路径;2、直接保存图片转换后的二进制数据流;在实际开发中,这两种都可以,但是各有各的优缺点。第一种方法,存取路径,当然比较简单,我们用Image控件的话,只要读取其路径,给了Image控件的ImageURL就可以了,但是它的缺点也就在于这个路径。如果本地的图片路径变换了或 阅读全文
posted @ 2011-03-31 21:54 HackerVirus 阅读(882) 评论(1) 推荐(0)
摘要: 上一篇我说了怎么将图片保存到数据库,这里我说一下,怎么将图片从数据库中提取出来并显示到页面中。图1:直接在页面输出二进制图片。图二:动态添加Image和显示多张图片使用一般处理程序。这里我就不讲怎么读取第一种的方法了,因为太简单了,只是读取路径出来再将路径赋给你想要绑定的控件上就可以了。这里我只是单独讲一下,怎么读取二进制流的图片。为了简单点讲,我就只是在页面显示一张图片。在page_load()事件里写上如下代码://连接数据库SqlConnection cn= new SqlConnection("server=.;uid=sa;pwd=****;database=za" 阅读全文
posted @ 2011-03-31 21:54 HackerVirus 阅读(2536) 评论(0) 推荐(0)