C#如何将文本内容保存为BIN文件?

VB中资源的名称为:项目默认命名空间.资源文件名

注意: 资源文件一定要是 嵌入的资源; 并且资源文件名要带扩展名的

 有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放。对于托管的dll,我们可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管dll,就比较麻烦。在这种情况下,大家可以考虑本文介绍的方法。

 1、将需要用到的dll文件嵌入资源文件中。

(1)将需要用到的dll文件拷贝到工程中;

(2)修改“生成操作”为“嵌入的资源”;

这样就完成了dll文件嵌入资源的过程。

2、编写自动释放的过程 (保存资源文件到本地)

//创建dll文件(覆盖模式)

(注意:一定要设置 嵌入的资源)

  在程序启动时,首先调用上面的函数完成dll文件的释放,然后程序就能够正常运行了。这种做法只是笔者在实际项目中有时采用的一种方式,相信对大家也有一定的参考价值。

(2)、 我使用这种方式也可以导出,但是导出的文件大小不对,文件损坏了,使用不了

  • 自己下错了,不是我要的,哎呀,我的分

  • 可以作为参考,谢谢楼主

内容简介:C#读取BIN文件内容.rar 获取BIN文件内容 获取BIN文件内容 获取BIN文件内容.sln 获取BIN文件内容.suo 获取BIN文件内容

注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系。

下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。

DataReader:当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。使用DataReader 对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。

 页面之间传递值的几种方式。 

的类的内部实现,解决问题。

重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要。重载(overload)是面向过程的概念。

6、C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?

参数的个数和类型都是任意的。加分的补充回答:用reflector反编译可以看出,索引器的内部本质上就是set_itemget_item方法。加分的补充回答:回答传智播客.net培训中讲解设计模式中开发的SettingsProvider就是用的string类型的参数名做索引器参数。

7、属性和public字段的区别是什么?调用set方法为一个属性设值,然后用get方法读取出来的值一定是set进去的值吗?

属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的,极端的例子。Public Age{get{return 100;}set{}}。加分的补充回答:用reflector反编译可以看出,属性内部本质上就是set_***get_***方法,详细参考传智播客.net培训视频中串讲.net基础的部分。

Class可以被实例化,属于引用类,是分配在内存的堆上的。类是引用传递的。

Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。加分的回答:所谓的结构体通常包括Int32、Boolean等都属于结构体。

栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中

堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

15、能用foreach遍历访问的对象的要求

GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。GC只能处理托管内存资源的释放,对于非托管资源则不能使用GC进行回收,必须由程序员手工回收,一个例子就是FileStream或者SqlConnection需要程序员调用Dispose进行资源的回收。

要请求垃圾收集,可以调用下面的方法:培训中用多线程(ThreadPool)实现网站蜘蛛的案例

26、什么是强类型,什么是弱类型?哪种更好些?为什么 C#中

强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。

没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。弱类型更灵活,但是效率低,而且出错概率高

一般用于编译型编程语言,如c++,java,c#,pascal,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等 

加分的补充回答:引用传智播客.net培训呼叫中心项目中用强类型DataSet的例子,侃一通用强类型DataSet是多么方便。

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例 

加分的补充回答:聊用反射实现编辑器动态插件和如鹏网项目中插件体系实现第三方支付和定时任务的案例。

int、DateTime不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值nullstring可以为null

using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源。加分的补充回答:using其实等价于try……finally,用起来更方便。

30、中所有可序列化的类都被标记为_____? 

36..Net托管代码中我们不用担心内存漏洞,这是因为有了______? 

37、什么叫应用程序域?什么是受管制的代码?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTSCLSCLR分别作何解释? 

应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。

受管制的代码:在.Net环境中运行的任何代码都是受管制的代码(managed code),.Net外部的代码也运行在windows上,这些代码称为未受管制的代码(unmanaged code)。

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。

强类型语言是能够禁止任何违反类型系统的代码的语言,或者说是能够捕获所有违反类型系统的错误的语言。我们说C++相对于C是强类型的,是因为C++禁止了一些C中的隐式转换,比如将void*转换为任意的指针类型。

装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。

每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具有相同名称的方法时,就称作重载。

一种确定公共语言运行库如何定义、使用和管理类型的规范。

.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务。

要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用程序所需的一套基本语言功能。

 如果要操作一个不断增长的字符串,尽量不用String,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用页面一般都对应一个隐藏类,一般都在培训的如鹏网项目中用WebService实现管理客户端的例子说出来。

54您在什么情况下会用到虚方法?它与接口有什么不同?

答案:子类重新定义父类的某一个方法时,必须把父类的方法定义为virtual 

在定义接口中不能有方法体,虚方法可以。

实现时,子类可以不重新定义虚方法,但如果一个类继承接口,那必须实现这个接口。

中的代码隐藏文件的描述正确的是(C

a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为代码隐藏文件,如果用C#创建,该文件将具有“.中定义的类,而stringintbool相当于C#中对这些类定义的别名。CTS

64、培训班原创模拟题)

String是不可变在这段代码中,s原先指向一个String对象,内容是 "abc",然后我们s指向"123",那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"123",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

66、是否可以从一个static方法内部发出对非static方法的调用? 

不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部不能发出对非static方法的调用。

67、.Net中会存在内存泄漏吗,请简单描述。 (*)

所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。.Net中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。虽然.Net可以回收无用的对象,但是.Net仍然存在由于使用不当导致的内存泄露问题。.Net中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是.Net中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是.Net中可能出现内存泄露的情况,例如,缓存系统,我们加载了一个对象放在缓存中(例如放在一个全局Dictionary对象中),然后一直不再使用它,这个对象一直被缓存引用,但却不再被使用。

扩展:使用弱引用那么及时被引用也可以被回收。

68说出一些常用的类、接口,请各举5个 

要让人家感觉你对.Net开发很熟,所以,不能仅仅只列谁都能想到的那些东西,要多列你在做项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。

要出乎意料!不要仅仅完成任务!

B/S是Brower/Server的缩写,客户机上只要安装一个浏览器。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要逻辑在服务器端实现。浏览器通过Web Server 同数据库进行数据交互。 

1).硬件环境不同

  C/S 一般建立在专用的网络上小范围里的网络环境局域网之间再通过专门服务器提供连接和数据交换服务

  B/S 建立在广域网之上的不必是专门的网络硬件环境,例与电话上网租用设备信息自己管理有比C/S更强的适应范围一般只要有操作系统和浏览器就行 

).对安全要求不同 

  C/S 一般面向相对固定的用户群对信息安全的控制能力很强一般高度机密的信息系统采用C/S 结构适宜可以通过B/S发布部分可公开信息

  B/S 建立在广域网之上对安全的控制能力相对弱可能面向不可知的用户。 

  C/S 程序可以处理用户面固定并且在相同区域安全要求高需求与操作系统相关应该都是相同的系统。C/S的客户端由于是本地程序,因此和本地硬件、程序的交互性很强,比如可以控制本机的其他程序、可以读写本地磁盘文件、可以与硬件交互。

  B/S 建立在广域网上面向不同的用户群分散地域这是C/S无法作到的与操作系统平台关系最小,正应为如此B/S很难和本地硬件、程序、文件进行交互,比如很难控制本机的其他程序、很难读写本地磁盘文件、很难与硬件交互,当然可以用ActiveX技术解决,比如网银等就是这么解决的,这样做的问题就是可能会被客户拒绝,而且只局限于Windows操作系统。

C/S也分为两层架构和三层架构。两层架构:客户端程序程序直连数据库;三层架构:客户端访问服务端的服务,主要逻辑代码写在服务端的服务中,然后服务端服务再去访问数据库,Oracle版分布式呼叫中心,WCF

71、什么是sql注入?如何避免sql注入?

用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。

详细参考复习ppt。举例子,摆事实!

72、数据库三范式是什么?

传智播客风格的非严谨却一下子明了的解答方式:

第二范式:表必须有主键。

第三范式:表引用其他的表必须通过主键引用。

73、说出一些数据库优化方面的经验?

索引内部原理:想象成Dictionary,插入、删除、更新的速度慢了,加上索引也多占用了空间,查询的速度快了。加上索引以后速度提升非常明显。

1在经常检索的字段上(select * from Person where Name=@Name)使用索引提高查询速度。(2select中只列出必要的字段,而不是*。(3避免隐式类型转换造成的全表扫描,在索引上使用函数也会造成全表扫描(因为索引只是为字段建立的,一旦使用表达式或者函数,那么索引就是失效了,当然也可以使用“函数索引”、“表达式索引”解决这个问题),使用索引不一定能提高查询速度。4)避免在索引列上使用计算(where Name+'A'=@MyName

加分的回答:不进行无意义优化,根据性能查看器的报表,对最耗时的SQL进行优化。

74、什么是数据库事务?

事务三个特性:一致性、原子性、隔离性。

几个SQL语句,要么全部执行成功,要么全部执行失败。举例就用最经典的银行转账的例子就行,然后再举一个项目中用的例子:传智播客.net培训中批量导入客户数据的时候要么全部导入成功,要么全部导入失败。事务的三个操作:BeginCommitRollBack

75、谈谈你对设计模式的理解(传智播客.Net培训班原创模拟题)

世界上本没有模式,用的人多了,也就有了模式。不用刻意记每种模式的名字,手中无模式,心中有模式。

大部分设计模式就是接口、抽象类的一个组合。培训时SettingsProvider、第三方支付的例子。

76、谈谈ViewState。谈谈对生命周期。

Http是无状态的WebForm为了实现基于http的“有状态”从而简化开发,ViewState用来在两次请求间保持状态。页面返回前将界面的状态序列化到ViewState中,这样就将状态保存在了浏览器中,下次页面提交的时候会顺便再将ViewState提交到服务器,这样服务器就根据ViewState还原了状态,这样WebForm开发就像有状态一样了。谈谈自定义AutoInc控件。

get的参数会显示在浏览器地址栏中,而post的参数不会显示在浏览器地址栏中;

使用post提交的页面在点击【刷新】按钮的时候浏览器一般会提示“是否重新提交”,而get则不会;

get的页面可以被搜索引擎抓取,而用post的则不可以;

post可以提交的数据量非常大,而用get可以提交的数据量则非常小(2k),受限于网页地址的长度。

post可以进行文件的提交,而用get则不可以。

80、运算符++a表示(先将a1,然后表达式的值为a1后的值),i++表示(表达式的值为a,然后a1)。

81、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

解答:前两个参考第80题,i++表达式的值为i自增之前的值,所以打印10,执行完成后i变成11,执行++i的时候表达式的值为自增以后的值12。C#中赋值表达式的值为变量被赋值的值,因此最后一个就输出i赋值后的值20

答:培训班原创模拟题)

SOAP和HTTP的关系:SOAP基于Http协议的,和普通网页不同的是网页返回HTML,SOAP则是符合SOAP协议的XML数据。

84、.Net Framework中的类是专门供C#调用的是吗?(传智播客.Net培训班原创模拟题)

85、开放性问题:说出尽可能多的基于.Net Framework的语言。(*)(传智播客.Net培训班原创模拟题)

86、.Net、培训班原创模拟题)

中用来进行Web开发的一种技术,等支持.Net的语言编写。

C#是使用最广泛的支持.Net的编程语言。除了C#还有 开发的集成开发环境(IDE),使用VisualStudio可以简化很多工作,不用程序员直接调用培训班原创模拟题)

答:AJAX解决的问题就是“无刷新更新页面”,用传统的HTML表单方式进行页面的更新时,每次都要将请求提交到服务器,服务器返回后再重绘界面,这样界面就会经历:提交→变白→重新显示这样一个过程,用户体验非常差,使用AJAX则不会导致页面重新提交、刷新。

AJAX最重要的问题是无法跨域请求( →),也就是无法在页面中向和当前域名不同的页面发送请求,可以使用在当前页面所在的域的服务端做代理页面的方式解决。

在如鹏网项目中发帖的时候显示相关帖的功能、站内搜索项目中显示搜索Suggestion、数据采集项目中都用到了AJAX。

88、NET通过对各语言先编译成( IL),然后再执行时用( JIT)将其编译成本地平台代码,来实现异构平台下对象的互操作。(*)

89、编写正则表达式验证一个字符串是否为Email。复习正则表达式部分的知识。

答:Application是用来存取整个网站全局的信息,而Session是用来存取与具体某个访问者关联的信息。

91、开放式问题:你经常访问的技术类的网站是什么?

博客园()、csdn、codeplex、codeproject、msdn文档、msdn论坛(遇到问题先到网上搜解决方案,还不行就问同事,同事也解决不了就去MSDN论坛提问,一定能得到解决)

GC是.Net的垃圾收集器,可以进行内存资源的回收, 程序员无需关心资源的回收,当一个对象没有任何引用的时候就可以被回收了。一个对象可以被回收并不意味着一定会被立即回收,GC会选择时机进行回收。可以 调用程序可以像开发 Winform程序一样简单。Web服务控件最终还是被渲染(Render)为Html标签。使用WEB服务控件的劣势是会生成一些无用的属性、 ViewState等,不利于SEO,一般在内网系统或者互联网系统的后台中使用WEB服务控件。如果没有复杂的服务器交互动作,就不用Web服务器控 件。

runat=server的HTML控件有什么特点:路径不用程序员解析,可以使用“~”来虚拟路径。

96、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)

97、下面程序的执行结果是什么?(传智播客.Net培训班原创模拟题)(*)

解释:参考第22题的值,return先执行,finally后执行,所以return的值是没有i++之前的0。注意并不是return的时候函数真的就“返回、执行结束”了,return只是标记函数的返回值是0,标记完了还会执行finally中的代码,只有finally中的代码执行完成后函数才真正的返回。

98、开放式问题:工作中遇到不懂的问题是怎样去解决的?(传智播客.Net培训班原创模拟题)

参考解答:首先到百度上搜索中文的资料,一般都可以找到解决方案,如果还找不到解决方案就到google上搜索英文的资料,如果还没有解决方案就请教同事,如果同事也没有解决方案,就将问题提交到MSDN论坛。

99、开放性问题:你能说出哪些数据库?(传智播客.Net培训班原创模拟题)

100、开放性问题:你能说出尽可能多的你听说过的编程语言?(传智播客.Net培训班原创模拟题)(*)

(看,就和培训班原创模拟题)

A、将bmp格式的文件修改为jpg是修改图片格式最简单的方法

B、将QQ动态表情显示在网页上用gif格式比较好

C、将bmp格式的图片放到网页中可以优化网站速度

D、png格式用在网页中可以实现透明的效果。

答案:A、C。A错误是因为修改文件的后缀并没有真的修改文件的格式,要使用Photoshop、mspaint等图片处理工具进行转换才可以。C错误是因为在网页中不能使用bmp图片。

105、从以下简写中任选一个简单描述

HRM(Human Resource Managment):人力资源管理,包括员工管理、薪资管理、入职管理、离职管理、报销管理、请假管理等

106、请在数据库中设计表来保存一个树状结构的公司组织结构

参考呼叫中心项目的代码和板书。

107、下面程序的执行结果是什么?

cmd:启动另外一个命令行

ipconfig:打印网络设置信息

dir:显示当前目录下的文件

109、下列这些软件用过哪些?他们是用来做什么的?(传智播客.Net培训班原创模拟题)

TypeAndRun:快速通过敲命令的方式启动其他程序的工具。

FoxMail:邮件收发客户端

VSS:源代码管理工具

VirtualPC:在一台计算机中虚拟出另外一个计算机的软件,是微软的产品

110、开放式问题:如果程序连不上SQLServer数据库服务器服务器,你会怎么排除这个故障?(传智播客.Net培训班原创模拟题)

参考解答:首先ping一下服务器IP,看是否能够 ping通,如果不能ping通,则看是否网络有问题;如果能ping通,再telnet一下服务器的1433端口,看是否能够连通;如果不能连通则可能 是SQLServer服务停掉了或者是服务器上的防火墙封掉了1433端口;如果能连通再检查是不是本地程序的问题、驱动的问题。

111、下面的IP地址有什么含义?(传智播客.Net培训班原创模拟题)

4、一个文本文件含有如下内容,分别表示姓名和成绩:

提供用户一个控制台界面,允许用户输入要查询的姓名,输入姓名并且按回车以后,打印出此人的成绩,如果不输入姓名直接按回车则显示所有人的姓名以及成绩。(注意:不能使用数据库)

我要回帖

更多关于 怎么把网页保存为pdf 的文章

 

随机推荐