ASP.NET unleashed 2nd Edition 学习笔记 第七部分


Part VII: Leveraging the .NET Framework
CHAPTER 24 Working with Collections and Strings
    24.1 Working with Collections
        在c# 2.0中,使用范型编程,这三个集合类被使用的次数不多了,但是在Asp.Net Unleashed 2nd写作的时候,2.0的规范应该还没有发布,粗略说一下吧
        Using the ArrayList Collection
            ArrayList在c# 2.0中,已经有了范型版
            ArrayList的背后,其实是一个数组,只不过ArrayList会自动扩充数组,以便能够装下更多的元素
            Adding Items to an ArrayList
                ArrayList.Add()方法,在ArrayList的末尾增加一个元素
                ArrayList.Insert()方法,在指定的位置增加一个元素
                ArrayList.Repeat()方法,加入指定重复次数的元素到ArrayList中
                ArrayList.AddRange()/ArrayList.InsertRang()发放,加入一个其他ArrayList到当前的ArrayList中
            Removing Items from an ArrayList
                ArrayList.Remove(),移出一个元素
                ArrayList.RemoveAt(),移除指定位置的元素
                ArrayList.RemoveRange(),移除指定范围内的元素
                ArrayList.Clear(),移除所有的元素
            Iterating Through the Items in an ArrayList
                For each循环完成迭代遍历
            Sorting Items in an ArrayList
                ArrayList.Sort()方法完成排序
            Searching for Items in an ArrayList
                ArrayList.Contains()方法,判断是否具有和给定参数同样值的元素
                ArrayList.BinarySearch(),Contrains方法对于元素众多的ArrayList,效率很低,这个时候需要使用ArrayList.BinarySearch()进行二分法查找,当然,在使用二分法查找前,必须对ArrayList进行排序
                ArrayList.IndexOf()方法,返回具有和给定参数同样值的元素的索引
        Using the HashTable Collection
            HashTable,存储键值对
            Adding Items to a HashTable
                HashTable.Add()方法,加入一个键值对
                HashTable(key) = value,也可以增加一个键值对
            Removing Items from a HashTable
                HashTable.Remove()方法,和给定参数想等的键所属的键值对被移除
                HashTable.Clear(),清空HashTable,移除其内存储的所有键值对
            Searching for Items in a HashTable
                HashTable.Contains()方法,将传入参数和每一个键值对的键进行比较
                HashTable.ContainsValue()方法,将传入参数和每一个键值对的值进行比较,速度慢于HashTable.Contains()方法
            Iterating Through the Items in a HashTable
                For Each循环
        Using the SortedList Collection
            SortedList类,在c# 2.0版本中,也有了范型版
            SortedList背后是两个数组,一个用于存放key,一个存放value
            Adding Items to a SortedList
                和HashTable的增加元素的方式相同,也是两种,不多说了
            Removing Items from a SortedList
                SortedList.Remove() / SortedList.RemoveAt() / SortedList.Clear()三个方法的解释看上面的ArrayList和HashTable
            Iterating Through the Items in a SortedList
                For Each循环
            Finding Items in a SortedList
                和HashTable类似
    24.2 Working with Strings
        Formatting Strings
            String.Format()方法,在参数字符串中,使用{}作为占位符,代表了其他的参数
        Formatting Numbers
            使用Int变量的ToString()方法,并在其中传入参数,指定输出格式
        Formatting Currency
            使用Decimal变量的ToString()方法,在其中传入参数,指定输出格式
        Formatting Dates and Times
            使用DateTime变量的ToString()方法,在其中传入参数,指定输出格式
        Formatting Strings for Different Cultures
            使用ToString()方法,并指定CultureInfo类型的参数
        Using String Methods and Properties
            Comparing Two Strings
                使用"=="就可以进行判等操作
                使用String.Compare()方法,通过参数可以指定是否区分大小写,根据返回值可以确定两个字符串的大小相等关系
            Removing Characters from a String
                Trim() / TrimStart() / TrimEnd(),默认情况下,三个方法都会清除空格,Trim()方法清除首尾的空格,TrimStart()清除字符串头部的空格,TrimEnd()方法清除尾部的空格
                Remove()方法,根据传入的参数移除相应的字符
            Finding Characters in a String
                IndexOf() / IndexOfAny() / LastIndexOf() / StartsWith() /EndsWith(),都是此类的方法
                    IndexOf()方法,返回第一个匹配传入参数的位置
                    IndexOfAny()方法,从字符串中找出匹配传入的数组参数中任何一个元素的位置
                    LastIndexOf()方法,返回最后一个匹配的元素的位置
                    StartsWith()方法,字符串头部是否匹配传入的字符串
                    EndsWith()方法,字符串尾部是否匹配传入的字符串
            Modifying a String
                String.Replace()方法,替换字符串中的某一个部分
                String.Insert()方法,将参数插入到字符串中
                String.SubString()方法,截取字符串中的某一个部分
                String.ToUpper() / String.ToLower()方法,将字符串转换为大/小写
            Splitting and Joining Strings
                String.Split()方法,根据传入的字符数组参数,把字符串切分成若干小段字符串
                String.Join()方法,把几个字符串拼成一个大的字符串,使用加号"+"也可以完成
        Using the StringBuilder Class
            在处理大尺寸的字符串的时候,使用StringBuilder类更高效
            Appending Strings to a StringBuilder
                使用StringBuilder.Append()方法,把传入的字符串参数插入到StringBuilder实例的末尾
            Inserting and Removing Strings with a StringBuilder
                StringBuilder.Insert()方法,在指定位置插入字符串
                StringBuilder.Remove()方法,移除指定位置的字符串
            Replacing Strings with a StringBuilder
                StringBuilder.Replace()方法,替换字符串
            Iterating Through the Contents of a StringBuilder
                使用for循环,遍历StringBuilder
            Converting a StringBuilder to a String
                StringBuilder.ToString()方法,将StringBuilder转换为字符串
    24.3 Working with Regular Expressions
        正则表达式,可以用于复杂格式的操作,可以用于复杂模式的匹配,可以用于查找,可以用于替换
        正则表达式,很厉害的技术,但是需要记忆的东西太多,放弃这部分的学习,用到的时候看看
        Using Regular Expression Classes
        Examining Elements of a Regular Expression
        Matching Single Characters
        Matching Special Characters
        Matching Alternative Sequences of Characters
        Matching with Quantifiers
        Identifying Regular Expressions and Greed
        Capturing and Backreferences
        Using Replacement Patterns
        Setting Regular Expression Options

CHAPTER 25 Working with the File System
    25.1 Security and the File System
        默认情况下,ASP.Net进程运行在ASPNET用户的安全Context中,所以没有权限将一个文件写入到目录中。这就需要设置。赋予ASPNET帐号对某一个目录的写权限
    25.2 Using Files and Directories
        Creating and Reading Text Files
            Writing to a Text File
                File.CreateText()方法,获得一个StreamWriter类的实例,调用StreamWriter.Write()方法,这样,创建了一个新的文本文件,并把内容写入到其中
                File.AppendText()方法,获得一个StreamWriter类的实例,调用StreamWriter.Write()方法,这样,把内容增加到文本文件的末尾
            Reading from a Text File
                File.OpenText()方法,获得一个StreamReader类的实例,调用StreamReader.Read()方法,获取文本文件每一行的内容
        Creating and Reading Binary Files
            Writing to a Binary File
                创建一个FileStream类的实例,
                    创建FileStream()类的实例的时候,通过指定FileMode,可以确定打开文件的方式,具体是,
                        FileMode.Append / FileMode.Create / FileMode.CreateNew / FileMode.Open / FileMode.OpenOrCreate / FileMode.Truncate,具体意思是,把内容插入到文件末尾或者创建新文件 / 覆盖已经存在的文件或者创建新文件 / 创建新文件,如果文件已经存在,报错 / 打开一个文件 / 打开一个文件,如果文件不存在,就创建一个 / 开发文件,移除文件中所有内容
                创建了FileStream实例后,使用这个实例初始化一个BinaryWriter实例
                使用BinaryWriter.Write()方法,写入文件
            Reading from a Binary File
                创建一个FileStream类的实例
                使用FileStream实例初始化一个StreamReader类的实例
                调用StreamReader.ReadInt32() / StreamReader.ReadByte() / StreamReader.ReadBoolean()方法来读取内容
        Displaying the Contents of a Directory
            可以使用Directory类的方法或者DirectoryInfo的方法完成特定目录的内容展现
                使用Directory和DirectoryInfo的区别在于,前者是类方法,后者是实例方法
        Retrieving Path Information
            使用Path方法,可以获取路径信息
    25.3 Using Serialization
        Using Binary Serialization
            BinaryFormatter,可以把单个对象或者一组对象序列化为二进制格式,BinaryFormatter类最重要的两个方法,
                BinaryFomatter.Serialize(),序列化
                BinaryFomatter.Deserialize(),逆序列化,反序列化
            只有属性具有Serializable attribute的类或者实现了ISerializable接口的类才能够被序列化
            BinaryFormatter类和XMLSerializer类的区别在于,
                使用BinaryFomatter进行序列化的时候,对象的所有成员都会被序列化,无论是否是public的,而XMLSerializer只会序列化public成员
                无法读取BinaryFomatter的输出,因为被序列化成了二进制格式,无法读取,同时,也意味着尺寸小于XMLSerializer序列化为xml文件的尺寸
            Serializing an ArrayList
                就是把ArrayList的实例和一个FileStream的实例传递给BinaryFormatter.Serialze()方法就可以了,其中,
                    ArrayList的实例,指定了要被序列化到文件中的内容
                    FileStream的实例,指定了文件的位置
            Serializing a Class
                被序列化的类必须有Serializable attribute声明或者实现了ISerializable接口
                调用BinaryFomatter.Serialize()方法,进行序列化,就可以了
        Using XML Serialization
            可以把单个对象或者一组对象序列化为xml格式
            Serializing a Class
                使用XMLSerializer.Serialze()方法和XMLSerializer.Deserialze()方法完成序列化和逆序列化
                在实例化XMLSerializer的时候,必须提供被序列化的对象的根类
            Controlling Serialization
                默认情况下,XMLSerializer把属性序列化为XML中的元素,但是,可能有的人或者有的需求需要把类中的属性转换为xml中的属性
                可以通过在被序列化的类的属性上声明attribute,来更改被序列化后的格式,具体有
                    XmlArrayAttribute,表明代表了数组的类的属性被序列化为XML数组
                    XmlArrayItemAttribute,和XmlArrayAttribute一同使用,表明数组中元素如何被序列化
                    XmlAttributeAttribute,表明类的属性被序列化为Xml的属性
                    XmlElementAttribute,表明属性被序列化为XML的元素
                    XmlEnumArribute,指明了枚举值如何被序列化
                    XmlIgnoreArribute,指明了属性不被序列化
                    XmlIncludeAttribute,指明了属性需要被序列化
                    XmlRootAttribute,指明了类需要被序列化为xml文档的根元素
                    XmlTextAttribute,指明了属性需要被序列化为xml文本
                    XmlTypeAttribute,指明了属性需要被序列化为xml类型

CHAPTER 26 Sending Email and Accessing the Network
    26.1 Sending Email From an ASP.NET Page
        The Microsoft SMTP Service
            MS的SMTP服务提供了基本的收发邮件的功能,但是不提供POP协议的支持。也就是说,不能够为多个用户创建邮箱帐号,不能够使用outlook之类的工具接收邮件
            Configuring the Microsoft SMTP Service
            How the Microsoft SMTP Service Works
        Sending a Simple Email Message
            可以使用SmtpMail类发送email,使用SmtpMail.Send()方法来完成
            默认情况下,SmtpMail使用本地的电子邮件服务器发送email,通过设置SmtpMail.SmtpServer属性,可以使用网络上其它的邮件服务器发送邮件
        Using the MailMessage Class
            SmtpMail类非常的简单,只能够发送简单的邮件,复杂的还是需要MailMessage类来完成
            MailMessage有很多属性,
                Attachments,附件
                Bcc/Cc,设置密送/抄送人员列表
                Body,邮件正文
                BodyEncoding,邮件正文编码方式
                BodyFormat,正文的样式,或者是text文本或者是Html格式
                From / To,发送人 / 接收人
                Headers,用于email的头
                Priority,优先级
                Subject,主题
        Adding Attachments to an Email Message
            附件,使用MailAttachment类的实例来完成
            MailAttachment类有两个重要属性,
                FileName,作为附件的文件的位置
                Encoding,编码方式
        Sending HTML Email
            默认,SmtpMail类发送的邮件是文本格式,设定SmtpMail.BodyFormat为MailFormat.Html,并且拼装SmtpMail.Body属性,可以发送HTML格式的正文
            Using Links and Images in HTML Email
                不用相对位置作为路径,应该是使用绝对定位,因为邮件接收者说不定在哪里呢
    26.2 Using Message Queuing
        Email实现了人与人之间的通讯,消息队列实现了应用程序之间的通讯
        消息队列和web服务之间的异同
            两者都是推动了应用程序之间的通讯
            Web服务基于公开的标准,即使应用程序实现在不同的平台和操作系统之上,都无所谓,都是可以互相通讯的
            消息队列,比Web服务更加成熟,但是,不是公开的
        Configuring Microsoft Message Queuing
            消息服务在windows中是可选项,需要自定义安装
            还需要在web.config文件中进行设置
        Working with Message Queues
            消息队列支持两种类型的用户队列,
                public queues,在一个域内所有的服务器上都是可用的
                private queues,在本机的应用程序之间通讯
            Retrieving a List of Queues
                使用MessageQueue.GetPublicQueues()方法可以获取网络上所有公共对列的列表
            Creating a New Queue
                使用MessageQueue.Create()方法,可以创建一个队列
        Sending Messages to a Queue
            使用MessageQueue.Send()方法,可以把一个消息发送到对列中
        Retrieving Messages from a Queue
            使用MessageQueue.GetMessageEnumerator()方法,可以获得一个迭代器,从而根据优先级遍历所有的消息
        Displaying the Body of a Message
            默认情况下,消息的主体是被序列化为XmlMessageFormatter格式。序列化是在发送消息的时候自动完成的
            但是,在接收消息的时候,需要开发员自己去处理逆序列化的问题了,需要告诉XmlMessageFormatter,消息的主题的类型
        Sending and Receiving Complex Messages
            复杂消息,也就是自定义对象也可以被发送到消息队列中,当然,也可以被接收回来,否则,消息队列还不被撑死?唯一的要求是,对象不能够大于4M
    26.3 Accessing Other Web Sites with the HTTP Protocol
        Using the WebClient Class
            从其他站点抓取页面的最容易的办法就是用WebClient类,WebClient类有三个方法用于下载数据
                WebClient.DownLoadData()方法,从一个网址返回一个byte数组
                WebClient.DownLoadFile()方法,把从网址获得的文件保存在本地
                WebClient.OpenRead()方法,从网址返回一个流
        Using the HttpWebRequest Class
            如果不使用WebClient类,可以使用HttpWebRequest和HttpWebResponse类来抓取页面,这两个类比webclient类难用,但是功能更强大
        Resolving Domain Names
            使用System.Net.Dns类,可以把IP地址和域名进行转换
            Dns的方法有,
                Dns.GetHostByAddress()方法,从Ip地址返回一个IPHostEntry
                Dns.GetHostByName()方法,从域名返回一个IPHostEntry
                Dns.Resolve()方法,从IP地址或者域名返回一个IPHostEntry

CHAPTER 27 Creating Graphics On-the-Fly with GDI+
    27.1 Building Simple Images
        书中举了一个简单的入门级别的例子,步骤如下,
            设定页面的content type,通过形如
                <%@ Page ContentType="image/gif? %>的指令,指定了页面的content type
            创建一个代表了图像的bitmap
            把bitmat保存到http输出流中       
    27.2 Drawing Objects with GDI+
        Creating a Bitmap
        Working with the Graphics Object
        Setting Graphics Quality
        Using Colors
            Converting Colors
            Setting a Color's Alpha Value
        Using Brushes
            Using the Standard Brushes
            Using SolidBrush
            Using HatchBrush
            Using LinearGradientBrush
            Using PathGradientBrush
            Using TextureBrush
        Using Pens
            Using the Standard Pens
            Creating Custom Pens
            Setting Pen Styles
        Setting Pen Cap Styles
            Setting Pen Line Join Styles
        Drawing a Rectangle
        Drawing a Line
        Drawing an Ellipse
        Drawing a Curve
            Drawing a Bezier Curve
            Drawing an Arc
            Drawing a Pie Section
            Drawing a Polygon
            Drawing an Image
    27.3 Drawing a String of Text
        使用Graphics.DrawString()方法,可以完成画一个文本的功能
    27.4 Building Sample GDI+ Applications
        Creating an ASP.NET Paint Application
            讲了一个画图的页面的制作
        Creating a Simple Chart Application
            如果在一个控件中绘图,可能会有用得到的时候

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值