摘要: 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层? 答:从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层 数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问 业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关 表示层:是系统的UI部分,负责使用者与整个系统的交互。 优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。 缺点: 增加成本。分层式结构究竟其优势何在? 1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5 阅读全文
posted @ 2013-11-27 16:16 zzunstu 阅读(314) 评论(0) 推荐(0) 编辑
摘要: using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _8Queen{ class Program { const int NCOUNT = 8; static int[] QueenMap = new int[NCOUNT]; static int iCount = 1; /* * 核心函数,放置第N枚皇后(递归) */ static void M... 阅读全文
posted @ 2013-11-22 18:58 zzunstu 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 见下代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Encoding{ class A { public string Mys = string.IsInterned("Hello"); } class Program { static void Main(string[] args) { string[] sarr = new string[]{"a","我"... 阅读全文
posted @ 2013-11-14 22:03 zzunstu 阅读(170) 评论(0) 推荐(0) 编辑
摘要: string1.一个string表示一个恒定不变的字符序列集合。 string直接继承自System.Object,这使得他成为一个引用类型,也就是说线程的堆栈上不会驻留有任何字符串。 注:直接继承自Object的类型一定是引用类型;所有的值类型都继承自System.ValueType,,但System.ValueType却是一个引用类型(public abstract class ValueType);如下Code:string s=new string("Hello");无法通过编译。但是可以用string s = new string(char[] chars);st 阅读全文
posted @ 2013-11-14 22:02 zzunstu 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 一、C#多线程相关的基本概念进程:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。线程:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。静态属性:这个类所有对象所公有的属性,不管你创建了多少个这个类的实例,但是类的静态属性在内存中只有一个。二、C#多线程的优劣优点:可以提高CPU的利 阅读全文
posted @ 2013-11-12 16:47 zzunstu 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 作者:cyoooo7来源:博客园发布时间:2011-07-0516:31阅读:2246次推荐:2原文链接[收藏]摘要:当有多个字符串变量包含了同样的字符串实际值时,CLR可能不会为它们重复地分配内存,而是让它们统统指向同一个字符串对象实例。 刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例。如下:Strings1="Hello";Strings2="Hello";//s2和s1的实际值都是Helloboolsame=(object)s1==(object 阅读全文
posted @ 2013-11-12 15:42 zzunstu 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 5.1 简介进程(process)是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。当运行.NET程序时,进程还会把被称为CLR的软件层包含到它的内存空间中。上一章曾经对CLR做了详细描述。该软件层是在进程创建期间由运行时宿主载入的(参见4.2.3节)。线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。主线程将执行运行时宿主, 而运行时宿主会负责载入CLR。应用程序 阅读全文
posted @ 2013-11-07 11:48 zzunstu 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 上一篇文 章中简单讲了.NET中值类型和引用类型的区别,并分析了引用类型的内存布局和实现方式,并在开始的例子中简单分析了值类型相较于引用类型的若干优点。在 平常的开发中,很多人一上来就用class,而很少去想到底该用class还是struct。本文详细介绍.NET中的值类型以及在使用中应该注意的问 题。在某些情况下,使用值类型较引用类型可以显著减少内存占用和GC压力,提高程序的执行效率。本文参考《Pro .NET Performance》 《CLR Via C#》和 《Advanced .NET Debugging》,希望对您有帮助。值类型内部实现 和引用类型相比,值类型具有相对简单的内存布局 阅读全文
posted @ 2013-11-05 18:17 zzunstu 阅读(242) 评论(0) 推荐(0) 编辑
摘要: .NET中的类型分为值类型和引用类型,他们在内存布局,分配,相等性,赋值,存储以及一些其他的特性上有很多不同,这些不同将会直接影响到我们应用程序 的效率。本文视图对.NET 基础类型中的值类型和引用类型在内存中的布局,方法的调用,值类型如何实现接口,以及其他一些细节问题进行一些简要的讨论,文章主要参考《Pro .NET Performance》 和 《Advanced .NET Debugging》 ,希望给大家一点儿帮助。一 简单例子 举一个简单的例子,我们有一个名为Point2D的对象,用来表示二维空间中的坐标,每一个坐标值x,y都用一个short类型表示,整个对象占4个字 节。现在假设我 阅读全文
posted @ 2013-11-05 18:13 zzunstu 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 阅读目录前言线程堆栈的分配托管堆上对象的分配结束语前言 .Net中的运行时,以及各个类型、对象、线程堆栈以及托管堆之间的关系,在初学者(俺是初学者中的菜鸟 J)看来,有很多是难以理解的东西,俺在看了CLR Via C# 的前几章后,现在将文中的大概意思并加以自己的理解,重现运行时,以及各个关系。希望各位尽量拍砖,多多指出不正确的地方,共同进步。线程堆栈的分配 图1中展示了CLR加载的一个Microsoft Windows进程。在一个进程中,可能会存在多个线程。在创建一个线程时,这个线程会分配到一个1MB大小的堆栈。这个堆栈空间的作用:用于向方法传递 实参,并用于存储在方法内部定义的局部变量.. 阅读全文
posted @ 2013-11-05 17:23 zzunstu 阅读(273) 评论(0) 推荐(0) 编辑