博文

.net面试问答(大汇总) (二)(2012-08-18 11:07:00)

摘要: 概述反射和序列化 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对 象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后, 可以调用类型的方法或访问其字段和属性 序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通 过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。 11)  XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限? 我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml 转换成对象。应该至少需要ACL权限中的读权限. 23)XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题? 只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写:
namespace test
{
public delegate void OnDBOperate();
public class UserControlBase : System.Windows.Forms.UserControl
{
public event OnDBOperate OnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.Equals(BtnNew))
{
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。
}
}
......

阅读全文(16494) | 评论:14

.net面试问答(大汇总) (一)(2012-08-18 11:06:00)

摘要: 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?
答: 从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层     
数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问      
业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关      
表示层:是系统的UI部分,负责使用者与整个系统的交互。
优点:  分工明确,条理清晰,易于调试,而且具有可扩展性。      
缺点:  增加成本。 分层式结构究竟其优势何在?
1、开发人员可以只关注整个结构中的其中某一层;     
2、可以很容易的用新的实现来替换原有层次的实现;      
3、可以降低层与层之间的依赖;      
4、有利于标准化;      
5、利于各层逻辑的复用。      
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。 分层式结构也不可避免具有一些缺陷:
1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。     
2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑......

阅读全文(16247) | 评论:11

在asp.NET 中使用SMTP发送邮件的实现代码(2012-08-12 11:25:00)

摘要: 核心代码:
复制代码 代码如下:
public class Mail
{
#region 邮件参数
static public string accountName = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountName"];
static public string password = System.Configuration.ConfigurationManager.AppSettings["SmtpAccountPW"];
static public string smtpServer = System.Configuration.ConfigurationManager.AppSettings["SmtpServer"];
static public int smtpPort = int.Parse(System.Configuration.ConfigurationManager.AppSettings["SmtpPort"]);
#endregion /// <summary>
/// 邮件发送方法一
/// </summary>
/// <param name="sendTo"></param>
/// <param name="subject"></param>
/// <param name="body"></param>
static public void SendMail(string sendTo, string subject, string body)
{
//.net smtp
System.Web.Mail.MailMessage mailmsg = new System.Web.Mail.MailMessage();
mailmsg.......

阅读全文(1231) | 评论:0

SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#)(2012-08-12 11:11:00)

摘要:    最近在做邮件发送接口 把遇到的问题和解决方法告诉大家  希望对了解邮件的人有所帮助
 
   原程序部分代码如下
  //设置邮件信息 发件人地址、收件人地址、标题、主题
  MailMessage mail = new MailMessage("xxxxxxx@sina.com", "zzzzzzz@sina.com", "标题", "主题");
  //设置邮件主题格式
  mail.BodyEncoding = Encoding.UTF8;
  //设置邮件主体格式是否为 html 格式
  mail.IsBodyHtml = false;   //验证邮箱用户名 密码
  NetworkCredential work = new NetworkCredential("xxxxxxx", "pwd");
   //验证 用户名 密码
  client.Credentials = work;   //设置邮箱smtp服务器 端口
  SmtpClient client = new SmtpClient("smtp.sina.com");

  //是否请求一起发送
  client.UseDefaultCredentials = false;
  //设置邮件发送格式
  client.DeliveryMethod = SmtpDeliveryMethod.Network;
  //安全连接设置
  client.EnableSsl = false;   client.Send(mail);
 
  错误一:
“/”应用程序中的服务器......

阅读全文(5021) | 评论:0

Email电子邮件应用分析(2012-08-12 11:02:00)

摘要:
Email电子邮件应用分析

一、        邮件传输协议简介
1.        邮件传输概念
邮件服务是Internet上最常用的服务之一,它提供了与操作系统平台无关的通信服务,使用邮件服务,用户可通过电子邮件在网络之间交换数据信息。邮件传输包括将邮件从发送者客户端发往邮件服务器,以及接收者从邮件服务器将邮件取回到接收者客户端。
2.        SMTP和POP3
在TCP/IP协议簇中,一般使用SMTP协议发送邮件,POP3协议接收邮件。
SMTP,全称Simple Message Transfer Protocol,中文名为简单邮件传输协议,工作在TCP/IP层次的应用层。SMTP采用Client/Server工作模式,默认使用TCP 25端口,提供可靠的邮件发送服务。
POP3,全称Post Office Protocol 3,中文名为第三版邮局协议,工作在TCP/IP层次的应用层。POP3采用Client/Server工作模式,默认使用TCP 110端口,提供可靠的邮件接收服务。
3.        SMTP和POP3的工作原理
发送和接收邮件都需要以下两个组件:用户代理(UA,常用的是Foxmail或Outlook)和SMTP/POP3服务器。
SMTP工作原理:
1)        客户端使用TCP协议连接SMTP服务器的25端口;
2)        客户端发送HELO报文将自己的域地址告诉给SMTP服务器;
3)    &n......

阅读全文(2259) | 评论:0

电子邮件收发原理和实现(POP3, SMTP) [整理](2012-08-12 11:01:00)

摘要: 电子邮件的收发流程示意图:



相对于邮件客户端的流程就是:




邮件接收——POP3协议
POP3(Post Office Protocol 3,邮局协议版本3)主要用于支持使用客户端远程管理在服务器上的电子邮件。该协议是在RFC-1939中定义的,是Internet上的大多数人用来接收邮件的机制。POP3采用Client/Server工作模式,默认使用TCP 110端口。
* 在使用POP协议时,人们熟悉的很多功能,如查看收到了多少新邮件消息的功能,POP根本不支持。这些功能都内置到诸如Eudora或 Microsoft Outlook之类的邮件程序中,能为您记住接收的上一封邮件,以及计算有多少新邮件这类信息。因此,如果想获取这类信息,将需要由自己进行计算。
[详细请参考wiki的解析:http://zh.wikipedia.org/wiki/POP3]
<POP3状态图>



<POP3常用命令表>

* 对大小写不敏感,以CRLF作为结束
[详细可参考RFC1939协议,http://www.rfc-ref.org/RFC-TEXTS/1939/contents.html]

>> 命令可能的返回值
+ OK <描述>  成功
- ERR <描述> 失败

<POP3工作原理>
1)        客户端使用TCP协议连接邮件服务器的110端口;
2)        客户端使用USER命令将邮箱的账号传给POP3服务器;
3)     &nb......

阅读全文(2218) | 评论:0

SMTP协议原始命令码和工作原理(2012-08-12 11:00:00)

摘要:SMTP协议原始命令码和工作原理

1.SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个
服务器
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返
回状态的三位数字代码
3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程:

a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令
服务器端正希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行
服务器端则表示是否愿意为收件人接受邮件
d.协商结束,发送邮件,用命令DATA发送
e. 以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。


5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
EXPN---用于扩充邮件列表。

6.邮件路由过程:
SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。

若SMTP服务器mail.abc.com收到一封信要发到shuser@sh.abc.com:

a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次
请求shmail.abc.com的CNAME记录,直到没有为止
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.c......

阅读全文(1930) | 评论:0

什么是POP3协议,什么是SMTP协议,如何设置(2012-08-12 10:58:00)

摘要: 利用E-mail软件收发电子邮件,我们需要设置POP3服务器和SMTP服务器的地址,那么,什么是POP3,什么又是SMTP呢?下面我们就给大家介绍一下。 简单的说:pop3协议是收邮件协议,smtp协议是发邮件协议。 POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。   当然,只有提供了POP3服务的信箱才能直接利用E-mail软件收发电子邮件,否则我们只有进入它的主页,才能收发邮件,如:微软的Hotmail免费信箱等。 转自:http://zhidao.baidu.com/question/535585.html 附:国内常用免费邮件POP3和SMTP设置 2005-7-6 0:56:00 1.网易邮箱 POP3 和 SMTP 服务器地址设置:
邮箱 POP3 服务器(端口110) SMTP 服务器(端口25)
@163.com pop3.163.com smtp.163.com
@126.com pop3.126.com smtp.126.com
@netease.com pop.netease.com smtp.netease.com
@yeah.net pop.yeah.net smtp.y......

阅读全文(2693) | 评论:0

用C++实现网络编程---抓取网络数据包的实现方法(2012-08-12 09:21:00)

摘要: 做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包。抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议、IP、UDP、TCP、甚至各种应用层协议),敏感数据的捕捉等。下面我们就来看看在windows下如何实现数据包的捕获。 下面先对网络嗅探器的原理做简单介绍。 嗅探器设计原理 嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。 具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面先给出结构.数据包的总体结构: 数据包 IP头 ......

阅读全文(18187) | 评论:10

数据库索引技术--聚集索引和非聚集的区别和建立原则(三)(2012-08-02 22:56:00)

摘要: 4.       聚集索引和非聚集的区别
聚集索引和非聚集索引的根本区别是数据记录的排列顺序和索引的排列顺序是否一致,聚集索引表记录的排列顺序与索引的排列顺序一致,优点是查询速度快,因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后,从而缩小了搜索范围,对于返回某一范围的数据效果最好。
聚集索引的缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
非聚集索引指定了表中记录的逻辑顺序,数据记录的物理顺序和索引的顺序不一致,聚集索引和非聚集索引都采用了B树的结构,但非聚集索引的叶子层顺序并不与实际的数据页相同,而采用指向表中的记录在数据页中位置的方式。非聚集索引比聚集索引层次多,添加记录不会引起数据顺序的重组。在有大量不同数据的列上建立非聚集索引,可以提高数据的查询和修改速度。
在对聚集索引列查询时,聚集索引的速度要比非聚集索引速度快。
在对聚集索引列排序时,聚集索引的速度要比非聚集索引速度快。但是如果数据量比较大时,如10万以上,则二者的速度差别不明显。

5.       聚集索引和非聚集的建立原则
在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要做出很大的努力。具体的来说,要做到这个三个适当有如下几个要求。
5.1          
根据表的大小来创建索引。
虽然给表创建索引,可以提高查询的效率。但是需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。这个认识是错误的。给所有的......

阅读全文(6534) | 评论:6