任何一个使用.NET的人
来源:互联网 发布:图片重复查找软件 编辑:程序博客网 时间:2024/05/24 06:42
1. 什么是强类型,什么是弱类型?哪种更好些?为什么?
弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C++ 是静态语言,也是弱类型语言;Perl and PHP 是动态语言,但也是弱类型语言。
强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 和 Python 等都是强类型语言。
使用哪种语言还是要按需而定。编写简单小应用,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。
2.PID是什么?在做系统的故障排除时如何使用它?
PID = Process Identifier, 是一个全局唯一的用来标识进程的整数。在多任务系统中,可用来诊断系统中发生错误的进程。
3.单个TCP/IP端口上能够侦听多少个进程?
可能只有一个。如果你需要创建另一个TCP/IP监听,你必须建立另一个不同的端口
4.什么是GAC?它解决了什么问题?
每一个CLR(Common Language Runtime)所在的计算机都有一个全局程序集缓存(Global Assembly Cache,GAC)。部署在GAC上的程序集必须有一个强名称。一种由.net framework sdk提供的名叫 "Global Assembly Cache tool" (Gacutil.exe)的开发工具,可以把程序集部署到GAC上。GAC存储专门指定的程序集以供计算机上多个应用程序共享。它也为我们提供了克服"DLL地狱"的问题。 百度百科上的解释: GAC全称是Global Assembly Cache
作用是可以存放一些有很多程序都要用 到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得 Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。举例而言,如果没有GAC,那么势必每个WinForm程 序的目录下就都要从C:/WINDOWS/Microsoft.NET/Framework/v1.0.3705下面拷贝一份 System.Windows.Forms.dll,这样显然不如都从GAC里面取用方便,也有利于Assembly的升级和版本控制。
除了系统默认放置在GAC中的Assembly如System.Windows.Forms以外,我们也可以添加自己的Assembly:
1)创建一个strong-name的Assembly,例如ToolbarComponent.dll
2)运行gacutil -i ToolbarComponent.dll,把这个Assembly添加到GAC
3)在程序中动态装载:
System.Reflection.Assembly ass=Assembly.Load("ToolbarComponent, Version=1.0.934.20434, Culture=neutral, PublicKeyToken=65f45658c8d4927f");
MessageBox.Show("Is the assembly loaded from GAC? "+ass.GlobalAssemblyCache);
在 上面的程序中,ToolbarComponent就是从GAC装载而不是从程序的运行目录下的dll文件中装载,程序目录下不需要放置 ToolbarComponent.dll程序也能正常运行。另外,Assembly.Load()中的参数可以通过"gacutil -l"查到。
另外,上面提到了GAC中的Assembly必须是strong-name的。创建strong-name的Assembly的步骤大致如下:
a) 在命令行运行“sn -k keyPair.snk”创建一个密钥文件。这里的sn.exe也是.NET附带的一个工具。
b) 在VS.NET里面修改“AssemblyInfo.cs”文件:
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("..//..//keyPair.snk")]
c) 编译项目,就能得到一个strong-name的Assembly。
MSDN中有一些对GAC的介绍,您可以参考:
1)《Assembly Cache Viewer (Shfusion.dll)》
2)《Global Assembly Cache》
.NET Framework中附带了一些和GAC有关的工具,其中包括:
1)Gacutil.exe,一个命令行的工具,用于在GAC中浏览、添加、删除Assembly
2)Ngen.exe,也是一个命令行的工具,用于在GAC中创建Native Image
3)mscorcfg.msc,一个MMC终端,可以图形化完成Gacutil.exe的主要功能。
- 任何一个使用.NET的人
- 任何一个使用.NET的人
- 任何一个使用.NET的人应该知道的东西
- 任何一个使用.NET的人都应会的问题
- 任何使用.NET的人都应知道的
- 初级.NET开发人员 - 任何使用.NET的人都应知道的
- 不使用任何中间变量计算一个字符串的长度
- 编写程序删除一个字符串(不能使用任何操纵字符串的函数,不使用下标)
- delphi prism能使用任何语言实现的.Net的控件吗?
- 一个.Net程序加壳程序 注意:这个壳对于内行是没有任何作用的,就是一个玩具。
- 一个使用TXT文本的JSP网站访问计数器(不用任何数据库)
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API.
- 使用getconf DISK_SIZE /dev/updisk2确定一个不属于任何卷组的物理卷大小
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
- 相信任何一个成功的项目经理
- 任何成为一个合格的程序人员
- 查询任何一个网站的服务器架构
- 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
- Windows上的单个进程所能访问的最大内存量是多少
- linux echo 服务器模型
- EXE和DLL之间的区别是什么?
- 第一篇
- 任何一个使用.NET的人
- Named Pipes Provider, error: 40 完全解决方案
- 配置Outlook 2003接收Gmail
- 中级.NET开发人员
- java反射与内省(Introspector)
- 编写高性能 Web 应用程序的10个技巧
- Google Chrome OS的战略部署和应用前景分析
- 高级开发人员/架构师
- 博客网站优化技巧