摘要:一、Log4net简介 日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。 Log4net是一个非常不错的日志组件,使用...
阅读全文
|
04 2013 档案
摘要:一、Log4net简介 日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。 Log4net是一个非常不错的日志组件,使用...
阅读全文
摘要:一、异常类1、在C#中所有的异常都是使用一个异常类型的示例对象表示的,这些异常类型都是继承自System.Exception类型,或者直接使用System.Exception类型的实例对象;2、在C#中,位于finally块中的代码可以保证不管代码是正常结束,还是进入异常处理代码块,其中的语句均会被执行。System.Exception类有一些属性值得注意,这些属性被所有从此类派生的异常类共享,这些属性是: Message:一个只读字符串,此属性为当前的异常提供了描述性信息; InnerException:一个Exception类型的只读属性,如果它的值不为null,则可以通过它的值获取导..
阅读全文
摘要:今天翻了翻书,发现自己还是遗留下不少基础性的东西,老实说,不管一些基础的东西用到不用到都很应该了解,因为基础毕竟学习量不是很大。一、分部类 什么是部分类呢?简单来说就是将一个类型或方法拆分到两个或多个源文件中,每个源文件只包含类型定义的一部分。 当使用自动生成的源时,无须重新创建源文件便可将代码添加到类中。Visual Studio在创建Window窗体,Web服务包装代码时都是使用此方法。 1、分部类的特征类的定义前要加partial。分部类可以定义在两个不同的.cs文件,也可以定义在同一个.cs文件中。分部类必须同属一个命名空间。 代码示例: class Program ...
阅读全文
摘要:索引器类似于属性。和属性相似,索引器一样有get和set访问器。 索引器与属性的不同点: 1、每个属性的名称必须唯一,而每一个索引器的签名必须唯一。 2、索引器的“属性名”统一为this。而不能为其他,专门用于定义索引器。 3、索引器的参数列表包含在方括号而不是圆括号之内。 4、属性可以是静态的,而索引器只能为实例成员。 5、属性的get访问器没有参数,而索引器的get访问器可以有参数,而且索引器的get访问器和set访问器的参数相同。 6、索引器可以有多个形参,比如访问多维数组时。 索引器和数组对比: 数组 索引器 索引类型 ...
阅读全文
摘要:常识性优化 1、避免重新编译 编译和定义正则表达式的次数应尽可能的少。 2、使用非捕获型括号 如果不需要引用括号内的文本,请使用非捕获型括号(?:...)。这样不但能节省捕获的时间,而且会减少回溯使用的状态的数量,从两方面提高速度。而且能够进一步的优化,例如消除务必要括号。 3、不要滥用括号 在需要的时候使用括号,在其他时候使用括号会阻止某些优化措施。除非你需要知道.*匹配的最后一个字符,否则请不要使用(.*)。 4、不要滥用字符组 例如 ^.*[:] 这样会付出处理字符组的代价,而实际上这个式子并需不要用到字符组提供的多字符匹配功能,我认为,当一个字符是元字符时例如 . 或 ...
阅读全文
摘要:DataContractJsonSerializer类同样是提供JSON序列化的类。而且貌似有几个方法还和XML有点点关系。 注意用此类要引用System.ServiceModel.Web.dll与System.Runtime.Serialization.dll 1、属性 DataContractSurrogate 获取给定 IDataContractSurrogate 实例的当前活动代理项类型。代理项可以扩展序列化或反序列化过程。 IgnoreExtensionDataObject 获取一个值,指定在反序列化时是否忽略未知数据以及在序列化时是否忽略 IE...
阅读全文
摘要:JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。JSON语法规则:数据在 名称/值 对仲数据由逗号分隔花括号保存对象方括号保存数组JSON 名称/值 对介绍"name":"张飞","age":23Json的值可以是:数字(整数或浮点数)字符串(要包括在双引号中)逻辑值(true或false)数组(在方括号中)对象(在花括号中)Json转javascript对象的方
阅读全文
摘要:其中如果包含的字符串中包含双引号,那么就两个双引号表示,而不是反斜杠加上双引号(\”),也不是斜杠加上双引号(/”) 正则表达式获取CSS里面的图片的例子,里面有URL里面的图片地址有双引号,要注意用两个双引号""表示 static void Main(string[] args) { Regex reg = new Regex(@"url\((['""]?)(.+[^'""])\1\)"); //注意里面的引号 要用双引号表示,而不是用反斜杠 Console.WriteLine(reg.Match
阅读全文
摘要:小括号的作用分类 代码/语法 说明捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) (?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号零宽断言 (?=exp) 匹配exp前面的位置 (?<=exp) 匹配exp后面的位置 (?!exp) 匹配后面跟的不是exp的位置 (?<!exp) 匹配前面不是exp的...
阅读全文
摘要:Regex在匹配的时候,常常会返回一个Match类的对象,今天就来看看怎么玩这个对象。一、属性 Captures 按从里到外、从左到右的顺序获取由捕获组匹配的所有捕获的集合(如果正则表达式用 RegexOptions..::.RightToLeft 选项修改了,则顺序为按从里到外、 从右到左)。该集合可以有零个或更多的项。 Empty 获取空组。所有失败的匹配都返回此空匹配。 Groups 获取由正则表达式匹配的组的集合。 Index 原始字符串中发现捕获的子字符串的第一个字符的位置。 Length 捕获的子字符串的长度。 Success ...
阅读全文
摘要:在创建Regex类的实例时,构造函数的重载中有一个要求传入RegexOptions的一个枚举值,我相信这个枚举一定非常有用,否则不会要求在构造函数中传入。今天就来看一看这个枚举的作用。 我们干脆把代码敲出来看一看: // 摘要: // 提供用于设置正则表达式选项的枚举值。 [Flags] public enum RegexOptions { // 摘要: // 指定不设置选项。 None = 0, // // 摘要: // 指定不区分大小写的匹配。 ...
阅读全文
摘要:一、属性 CacheSize 获取或设置已编译的正则表达式的当前静态缓存中的最大项数。 默认是15个,最近使用的15个会存在缓存中,避免重新创建。当有第16个进来会替换掉第 1个。保持15个。 Options 返回传入 Regex 构造函数的选项。 RightToLeft 获取一个值,该值指示正则表达式是否从右向左进行搜索。二、方法 CompileToAssembly 已重载。 编译正则表达式,并将其保存到单个程序集的磁盘中。 Escape 通过替换为转义码来转义最小的元字符集(\、*、+、?、|、{、[、(、)、^、$、.、# 和空白)。 ...
阅读全文
摘要:正则表达式括号的作用1、限制多选项的范围 (Fri|1)st 这样写会匹配Frist或1st 如果去掉,则 Fri|1st就是匹配 Fri或1st2、将若干个字符进行组合,受量词的同时作用。例如 th+ 表示匹配 th thh thhh(h无数次),如果是(th)+,则匹配的是th thth tht
阅读全文
摘要:今天看了Artwl的一片关于编码的文章,感觉写的非常好,而且人家那博客园的样式都比哥的好看得多,一幕了然,尤其是那黑色背景的H1,妈个B了,哥太喜欢了。既然如果,就来就着它的文章跟样式,顺便来总结一下Url编码吧。URI编码的方法汇总 javascript中的编码有三种方法:escape、encodeURI、encodeURIComponent C#中编码的主要方法:HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString。 其中,Uri.EscapeUriString、Uri.Es...
阅读全文
摘要:System.Uri类用于处理Uri地址信息,常用到它的地方有,相对Uri地址转绝对Uri地址,获取Uri的某部分信息等等,可以说是一个非常有用的类。一、属性 AbsolutePath 获取 URI 的绝对路径。 AbsoluteUri 获取绝对 URI。 Authority 获取服务器的域名系统 (DNS) 主机名或 IP 地址和端口号。 DnsSafeHost 获得可安全用于 DNS 解析的未转义主机名。 Fragment 获取转义 URI 片段。 Host 获取此实例的主机部分。 HostNameType 获取 URI...
阅读全文
摘要:布隆过滤器用于字符串去重复,比如网络爬虫抓取时URL去重、邮件提供商反垃圾黑名单Email地址去重。等等。用哈希表也可以用于元素去重,但是占用空间比较大,而且空间使用率只有50%。 布隆过滤器只占哈希表的1/8或1/4的空间复杂度,就能解决同样的问题,但是有一定的误判,而且不能删除已有元素。元素越多,误报率越大,但是不会漏报。对于还需要删除的布隆过滤器,还有Counter Bloom Filter,这个是布隆过滤器的变体,可以删除元素。布隆过滤器的原理 布隆过滤器需要的是一个位数组(和位图类似)和K个映射函数(和Hash表类似),在初始状态时,对于长度为m的位数组array,它的所有位被...
阅读全文
摘要:今天在公司碰到一个神奇的问题,浪费了我一个早上,在本地数据库连接服务器上的数据库,无论如何都不得。(备注:今天早上公司的路由坏了,老板在修。)其实,如果结合上这一点蛛丝马迹也就可以肯定是网络的问题了。在连接局域网服务器上的数据库的时候,SqlServer报错:在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错) 这是一个非常肯定的网络连接上的问题,只要从网络连接上去解决就OK了。其他配置不说了,...
阅读全文
摘要:今天看到博客园一位朋友整理的一个WebConfig配置文件详解,觉得不错,转载一下:<?xml version="1.0"?><!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的“网站”->“Asp.Net 配置”选项。设置和注释的完整列表在 machine.config.comments 中,该文件通常位于 "Windows"Microsoft.Net"Framework"v2.x"Config 中。--> &l
阅读全文
摘要:一、SchemaExplorer获取数据库信息 在CodeSmith中,读取数据库信息是通过SchemaExplorer对象。 更多数据库方面的信息,可以在第三篇中找到,下面来看一个通过输入一个数据库,输出数据库信息的实例: 首先,建一个数据库,新建如下表: 模板代码:数据库名称: ...
阅读全文
摘要:一、基础模版类CodeSmith.BaseTemplates1.1 Batch 1.1.1 属性名称说明ContentLineCountStartLineNumber 1.1.2 方法名称说明Finalize在一个对象再次创建之前获得空闲资源并且执行其他的清空操作MemberwiseClone建...
阅读全文
摘要:CodeSmith的C#语法与Asp.net MVC2的模板语法很像。一、声明 编写模板代码的第一步是先进行一段声明: 以上声明的作用是告诉CodeSmith你的开发语言是C#,生成的目标代码是C#,最后是这个模板的描述信息。二、C#代码 C#代码写在标记内。 示例: 三、输出到模板 要输出到模板的变量值写在标记内 示例: 输出如下: 四、定义方法 CodeSmith中定义一个方法的方式与C#有点不同,它必须写在标记内。 示例: 五、声明外部输入变量 有些变量,可能我们需要在生成的时候才输入,这个时候就需要声明外部变量了。声明外部变量的语法如下: 各...
阅读全文
摘要:上次上级在搞远程桌面连接的时候,通过设置本地资源 点击“详细信息” 选中本地磁盘D,然后点确定,这样 才后台服务器就能够直接访问本地D盘,连FTP都不用配置了。非常方便。解决远程连接不能复制问题(剪贴板不互通问题)分三步:1.结束远程电脑的rdpcip.exe进程。2.远程桌面---...
阅读全文
摘要:CodeSmith图形界面操作 先从用法开始:以NHibernate模板生成为例: 1、启动CodeSmith,界面如下: 2、导入模板,点击左上角的文件夹一样的按钮,打开文件选择框,选择模板文件所在文件夹: 3、回到主界面就可以看到,模板文件已经被添加进来了。 4、展开文件夹,看到有个.cst后缀的文件,双击它,就会展开如下所示界面: 解释一下个选项的意思: OutputDirectory:生成的代码文件输出到的文件夹。 SourceDataBase:数据库名称 Assembly:就是生成代码文件的程序集。 ForceId:是否生成主键,如果选中,当表中没...
阅读全文
摘要:IIS的虚拟目录是对程序的绝对路径访问也是有效的,有时间要补充下IIS方面的知识. 2013-4-21今天配置IIS碰到一个有趣的问题,WIN7基本设置,选择, 应用程序池,如果选择Asp.net v4.0 Classic(经典) ,整个MVC项目的图片都不会显示,因此切换为Asp.net v4.0(集成),切换之后MVC图片就又能够显示了。HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效。配置错误 由于权限不足而无法读取配置文件原文件夹,右击选择它的属性,打开“安全”选项卡,看到“组或用户 名”,单击“编辑”按钮添..
阅读全文
摘要:System.ConfigurationManager类用于对配置文件的读取。其具有的成员如下:一、AppSettings AppSetting是最简单的配置节,读写非常简单。名称说明AppSettings获取当前应用程序默认配置的 AppSettingsSection 数据ConnectionStrings获取当前应用程序默认配置的 ConnectionStringsSection 数据 示例: class Program { static void Main(string[] args) { ...
阅读全文
摘要:一、配置文件入门 .Net提供了一种保存项目配置信息的办法,就是利用配置文件,配置文件的后缀一般是.config。在WinForm程序中配置文件一般是App.config。在Asp.net中一般默认是web.config。 一个.config配置文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中。在发布Web应用程序时web.config文件并不编译进dll文件中。将来如果客户端发生了变化,仅仅需要使用记事本打开Web.config文本编辑相关的设置就可以重新正常使用,而无需重新编译程序。 1.配置文件的查找 我们先从配置文件的查找方式来了解配置文件。 .n...
阅读全文
摘要:一、线程同步中的一些概念 1.1临界区(共享区)的概念 在多线程的环境中,可能需要共同使用一些公共资源,这些资源可能是变量,方法逻辑段等等,这些被多个线程共用的区域统称为临界区(共享区),临界区的资源不是很安全,因为线程的状态是不定的,所以可能带来的结果是临界区的资源遭到其他线程的破坏,我们必须采取策略或者措施让共享区数据在多线程的环境下保持完成性不让其受到多线程访问的破坏。 1.2基元用户模式 基元用户模式是指使用cpu的特殊指令来调度线程,所以这种协调调度线程是在硬件中进行的所以得出了它第一些优点:速度特别快;线程阻塞时间特别短; 但是由于该模式中的线程可能被系统抢占,导致该模式...
阅读全文
摘要:HttpWebResponse类的作用用于在客户端获取返回的响应的信息,还记得HttpResponse类吗?你是否在写B/S程序的时候,经常用到Response.Write()呢? HttpResponse用于在服务器端设置服务端的响应信息,而HttpWebResponse类用于客户端获取服务...
阅读全文
摘要:HttpWebRequest类与HttpRequest类的区别。 HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息。而HttpWebRequest用于客户端,拼接请求的HTTP报文并发送等。 HttpWebRequest这个类非常强大,强大的地方在于它封装了几乎HTTP请求报文里需要用到的东西,以致于能够能够发送任意的HTTP请求并获得服务器响应(Response)信息。采集信息常用到这个类。在学习这个类之前,首先有必要了解下HTTP方面的知识。一、简单示例 我们先来一个最简单的,就是紧紧输入一个网址就获取响应。代码如下: ...
阅读全文
摘要:反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程。通过反射可以获得.dll和.exe后缀的程序集里面的信息。使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息。一、各种GetType()、typeof的区别 首先就是获取Tyoe对象的来源不同: class Program { static void Main(string[] args) { Type t1 = Type.GetType("ConsoleApplication2.Person"); //从字符串中获得Type对象 ...
阅读全文
摘要:之前写过一篇HTML报文,但是感觉写完之后还是不懂,最近终于有时间开始看《HTTP权威指南》,看完之后觉得还是比之前的理解更加深入了,提取HTTP报文出来做个记录。 HTTP报文分为请求报文(request message)与响应报文(response message)。一、报文的组成部分 ...
阅读全文
|