Archive for the ‘.net’ Category

今天读王翔的《设计模式 – 基于C#的工程化实现及扩展》,刚把第一章读完。作为一个C#初学者和工作者,发现了55页,也就是第一章的最后一段关于依赖注入的实例代码中有一个很明显的错误。本来想直接联系作者的,可是实在找不到他的联系方式,就发在自己博客上了。如果同样读过这本书的人能看到,不胜荣幸。
代码如下:

[AttributeUsage(AttributeTargets.Class), AllowMultiple=true]
sealed class DecoratorAttribute : Attribute
{
public readonly object Injector;
private Type type;
 
public DecoratorAttribute(Type type)
{
if (type == null) throw new ArgumentNullException("type");
this.type = type;
[...]

中文翻译:http://www.infoq.com/cn/articles/expression-compiler
英文原文:http://www.infoq.com/articles/expression-compiler

C#动态加载DLL

In: .net| C#

24 Sep 2009

利用反射进行动态加载和调用.
Assembly ass=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
Assembly.LoadFile 只加载指定文件,并不会自动加载依赖程序集.Assmbly.Load无需后辍名
加载dll后,需要使用dll中某类.
Type type=ass.GetType(“TypeName”);//利用类型的命名空间和名称获得类型
需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略
Object obj = Activator.CreateInstance(type,params[]);//利用指定的参数实例话类型
调用类型中的某个方法:
需要首先得到此方法
MethodInfo mi=type.GetMethod(“MehtodName”);//通过方法名称获得方法
然后对方法进行调用,多态性利用参数进行控制
mi.Invoke(obj,params[]);//根据参数直线方法,返回值就是原方法的返回值

By Scott Forsyth
November 28, 2003
When ASP.NET v1.1 was released, it became my project to find the best way to support this for our client base at ORCS Web, Inc. We needed [...]

Starting in the first version of ASP.NET, Microsoft has provided a tool to control which version of the framework is registered in IIS. This tool, aspnet_regiis.exe, is quite flexible and with the right understanding of how IIS and ASP.NET work, can be used for most any situation.
The most common parameter is -i. This is the [...]

各位在同一电脑上同时安装并运行.net 1.1 和 .net 2.0 两个版本的朋友要小心啊!
您的项目是不是时不时会出现 Server Application Unavailable 错误呢?或者一直连续都出这个错误!
今天帮一个老师升级一个web的心理测评系统.那个系统原来是ASP.NET 1.1的,新版本是ASP.NET 2.0的..(PS:那台服务器上面还装其他的ASP.NET程序,用的是ASP.NET1.1的.)
1、在服务器上创建一个目录,然后将发布后的所有Web程序的文件复制到这个新建的目录。
2、在服务器的IIS上新建一个虚拟目录,然后 将其配置成可以执行脚本的应用程序,(过程与创建.net Framework 1.1版本的程序相同。) 然后,将此虚拟目录的.net Framework 配置成2.0。
大功告成后,开始访问刚配置的程序,却得到如下错误:
Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the “Refresh” button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of [...]

今天上csdn,看到有人在炫耀自己所谓的分页算法,呃。。。我觉得算不上是什么算法,就是一种解决方案吧。不过回帖的人好多,在回帖里淘到了不错的东西,发上来记录一下。

1
2
3
4
5
6
7
WITH OrderedOrders AS
(SELECT *,
ROW_NUMBER() OVER (ORDER BY [id])AS RowNumber  –id是用来排序的列
FROM table_info ) –table_info是表名
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;

在windows server 2003, sql server 2005 CTP,P4 2.66GHZ,1GB 内存下测试,执行时间0秒 ,表中数据量230万
接下来大批量的数据查询性能瓶颈就在count了,不知道sql server 2005在这方面有没有什么改进.
附另一种方法:

1
2
3
4
SELECT *
FROM (SELECT *,ROW_NUMBER() Over(ORDER BY id) AS rowNum
FROM table_info ) AS myTable
WHERE rowNum BETWEEN 50 AND 60;

C#的疑问

In: .net| C#

2 Apr 2009

1
2
3
4
5
6
class User{
public IPAddress IP;
}
User user = null;
if( user == null || user.IP == null ) //这句会发生莫名的错误,程序直接退出,是C#的问题吗?
{}

一个C#睡前故事

In: .net| C#

23 Mar 2009

从 前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的 工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点进展我都会及时 让你知道。彼得通过周期性地使用“带类型的引用”(原文为:“typed reference” 也就是delegate??)“回调”他的老板来实现他的承诺,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Worker {
public void Advise(Boss boss) { _boss = boss; }
public void DoWork() {
Console.WriteLine(“工作: 工作开始”);
if( _boss != null ) _boss.WorkStarted();
 
Console.WriteLine(“工作: 工作进行中”);
if( _boss != null ) _boss.WorkProgressing();
 
Console.WriteLine("工作: 工作完成");
if( _boss != null ) {
int grade = _boss.WorkCompleted();
Console.WriteLine(“工人的工作得分=” + grade);
}
}
private Boss _boss;
}
 
class Boss {
public void WorkStarted() { /* 老板不关心。 */ }
public void [...]

一. 概述… 1
二. 并发访问的不利影响… 1
1. 脏读(dirty read)… 1
2. 不可重复读(nonrepeatable read)… 1
3. 幻读(phantom read)… 1
三. 并发访问的控制机制… 2
1. 锁… 2
2. 行版本控制… 2
四. 隔离级别… 2
五. 事务… 3
1. 事务的模式… 3
1.1. 显式事务(Explicit Transactions)… 3
1.2. 自动提交事务(Autocommit Transactions)… 4
1.3. 隐式事务(Implicit Transactions)… 4
2. 事务的编程… 5
2.1. Transact-SQL脚本… 5
2.2. ADO.NET应用程序接口… 5
一. 概述
当多个用户同时访问数据库的同一资源时,叫做并发访问。如果并发的访问中有用户对数据进行修改,很可能就会对其他访问同一资源的用户产生不利的影响。可能产生的并发不利影响有以下几类:脏读、不可重复读和幻读。
为了避免并发访问产生的不利影响,sql server设计有两种并发访问的控制机制:锁、行版本控制。
二. 并发访问的不利影响
并发访问,如果没有并发访问控制机制,可能产生的不利影响有以下几种
1. 脏读(dirty read)
如果一个用户在更新一条记录,这时第二个用户来读取这条更新了的记录,但是第一个用户在更新了记录后又反悔了,不修改了,回滚了刚才的 更新。这样,导致了第二个用户实际上读取到了一条根本就没有存在过的修改后的记录。如果第一个用户在修改记录期间,把所修改的记录锁住,在修改完成前别的 用户读取不到记录,就能避免这种情况。
2. 不可重复读(nonrepeatable read)
第一个用户在一次事务中读取同一记录两次,第一次读取一条记录后,又有第二个用户来访问这条记录,并修改了这条记录,第一个用户第二次 读取这条记录时,得到的是跟第一次不同的数据了。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录就能避免这种情况。
3. 幻读(phantom read)
第一个用户在一次事务中两次读取同样满足条件的一批记录,第一次读取一批记录后,又有第二个用户来访问这个表,并在这个表中插入或者删 除了一些记录,第一个用户第二次以同样条件读取这批记录时,可能得到的结果有些记录是在第一次读取时有,第二次的结果中没有了,或者是第二次读取的结果中 有的记录在第一次读取的结果中没有的。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录,也不能增删记录,就能避免这种情 [...]


关于博主

姓名:郑玏

性别:男

职业:IT工程师

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email: