w1100n
This site is best viewed in Google Chrome
9/27/2013 13:25

可选的 TimeSpan 属性。 指定在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。 只有当 compilation 元素中的调试属性为 False 时,此超时属性才适用。若要帮助避免在调试期间关闭应用程序,请不要将此超时属性设置为较大值。 默认值为“00:01:50”(110 秒)。 注意 在 .NET Framework 1.0 和 1.1 中,默认值为 90。 http://msdn.microsoft.com/zh-cn/library/e1f13641(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.executiontimeout.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

9/16/2013 15:08

.Net利用Office组件的操作Excel批量插入数据据的时候,会非常慢。 我也曾经想利用其它组件来实现这个功能,但是效果不是很理想。后来经过查阅资料,发现Excel.Range的Value属性是Object的二维数组。 于是我想,不去遍历每个单元格,而是一次取得所要操作区域(Range)的Value属性,对这个二维数组操作,最后再把这个二维数组赋回去,就大功能告成了。 经过编码测试,与我想象中的一样,速度非常之快。 之前代码: 之后代码:         附上C#的代码 http://www.cnblogs.com/gateluck/archive/2009/08/04/1538360.html

9/13/2013 19:07

看了eaglet的《几种C#框架提供的数据结构对单值查找的效率比较》,发现作者对Hashtable与Dictionary<K, V>存在一些误解,抽点空,讲讲我对Hashtable与Dic的看法。 我个人是觉得,无论什么时候,都应该使用Dictionary<K,V>,理由如下: 1、Dic是类型安全的,这有助于我们写出更健壮更具可读性的代码,而且省却我们强制转化的麻烦。这个相信大家都明白。 2、Dic是泛行的,当K或V是值类型时,其速度远远超过Hashtable。这个大家对值类型与引用类型有所了解的话也会明白。 3、如果K和V都是引用类型,如eaglet所测,Hashtable比Dic更快,这里我要指出,eaglet所做的测试是有问题的。原因在于Hashtable与Dic采用的是不同的数据结构。eaglet的“Dictionary 由于在Hashtable基础上封装了一层”这个说法是不对的。 具体我也不讲了,因为有人(Angel Lucifer)已经讲得很清楚了,引用如下: http://www.cnblogs.com/lucifer1982/archive/2008/06/18/1224319.html http://www.cnblogs.com/lucifer1982/archive/2008/07/03/1234431.html Hashtable在指定capacity参数时,它并不只开出capacity个槽的内存空间,而是开出比 capacity / 0.72(默认装填因子) 大的最小素数个槽的空间;而Dic在指定capacity时,是开出 比capacity 大的最小素数个槽的空间。因此可以看到,楼主虽然都指定capacity为10万,而实际上Hashtable的槽的总数远远大于Dic的槽的总数,也就是占用的内存远远大于Dic,因此,如此测试是不公平不公正的,如要公平公正的测试,则应该把Dic的capacity指定为 10万/0.72,请大家再测试其性能。 下表是我测试的Insert的性能。(机器是老爷机了,跑的太慢了) 测试条件 HashTable Dictionary 字符串长度 16,未排序 93 56 字符串长度 16,已排序 113 86 字符串长度 128,未排序 140 106 字符串长度 128,已排序 202 169 字符串长度 … Continue reading

9/13/2013 18:49

     1、ArrarList 转换为 string[] : ArrayList list = new ArrayList(); list.Add(“aaa”); list.Add(“bbb”); //转换成数组 string[] arrString = (string[])list.ToArray(typeof( string)) ; 2、string[] 转换为 ArrarList : ArrayList list = new ArrayList(new string[] { “aaa”, “bbb” }); 3、ArrayList 转换为 string : ArrayList list = … Continue reading

8/21/2013 12:21

昨天偶然看到网上有人讨论究竟是该用viewstate还是session来保存信息. 忽然觉得有必要去深入的研究一下这两个东东了. 我们先来看深入分析一下viewstate, 为了分析的相对完整性,先从简单的说起: 在asp时代, 大家都知道一个html控件的值,比如input 控件值,当我们把表单提交到服务器后, 页面再刷新回来的时候, input里面的数据已经被清空. 这是因为web的无状态性导致的, 服务端每次把html输出到客户端后就不再于客户端有联系. asp.net巧妙的改变了这一点. 当我们在写一个asp.net表单时, 一旦标明了 form runat=server ,那么,asp.net就会自动在输出时给页面添加一个隐藏域 <input type=”hidden” name=”__VIEWSTATE” value=””> 那么,有了这个隐藏域,页面里其他所有的控件的状态,包括页面本身的一些状态都会保存到这个控件值里面. 每次页面提交时一起提交到后台,asp.net对其中的值进行解码,然后输出时再根据这个值来恢复各个控件的状态. 我们再看这个控件的value值,它可能类似如下的形式:Oz4+O2w8aTwxPjs+O2w8…. 很多人会认为这是加密的信息,其实不是, ms仅仅是给各个控件和页面的状态存入适当的对象里面,然后把该对象序列化, 最后再做一次base64编码,直接赋值给viewstate控件. 说到这,想必你一定想看看这个viewstate里面到底存了哪些东西, 嗯,你是可以写一个base64 to string的转换代码来实现.不过,viewstate是有层次之分的,普通的转换后,你看到的也是很乱的文字. 这里提供了一个专门转换viewstate值的地方 http://www.wilsondotnet.com/Demos/ViewState.aspx . 你可以去将自己的viewstate输入进去,让它给你转化一下,这可是带结构的哦 🙂 好, 以上说的这些你可能会觉得: 这与session有什么关系? 这个viewstate不是由asp.net自动去维护吗? 是的, 如果仅仅是保存控件的状态, … Continue reading

8/21/2013 10:02

注:2010年12月8日发布的Visual Studio 2010 Service Pack 1 Beta解决了该问题。 上次遇到VS2010中尴尬的代码窗口缩放功能,今天确认VS 2010存在一个令人恼火的Bug: 如果你的电脑开着对另外一台电脑的远程桌面连接,你在本机使用VS 2010写代码时,如果Ctrl+C的操作速度过快(据说是半秒之内),Ctrl+C就会失效,对Ctrl+X同样适用。 自从用上VS2010,已经多次遇到这样的问题:在VS2010中用Ctrl+C复制一段代码,用Ctrl+V粘贴时什么内容也没有,光标自动跳至下一行。当时真是又气又急,但再试几下,问题又消失了。想解决这个问题,却无从下手,问题出现没有规律,也无法重现这个问题,只能将这个问题诊断为疑似“VS2010神经质”… 今天在Microsoft Connect看到这个反馈Copy/Paste issue in VS 2010 RC,终于确诊为“VS2010 Ctrl+C 神经质”。 真让人气愤!强大的、令众多非.NET程序员羡慕的VS2010,竟然存在这个Bug。写代码时用的最多快捷键非Ctrl+C莫属,而且这个问题2010年2月15日在VS 2010 RC时,就有人发现并反馈给微软,而微软2010年4月13日才确认这个问题,并且说要等VS2010的Service Pack或下一版本的Visual Studio才去研究这个问题。 不用等微软了,一不小心就可能等到2012,自己动手,丰衣足食吧。 治疗“VS2010 Ctrl+C 神经质”的偏方: 1. 用VS2010写代码时,关闭所有远程桌面连接,或者用第三方的远程桌面连接工具。 2. 如果使用远程桌面连接,请放慢写代码的速度,先选择好要复制的内容,喝杯咖啡,然后再按Ctrl+C。 3. 卡吉洛提供的偏方:把远程桌面的“本地资源 -> 剪贴板”干掉。   http://www.cnblogs.com/dudu/archive/2010/06/18/1760337.html

8/8/2013 16:28

Use this procedure to create a macro that generates a list of all the commands in the integrated development environment (IDE) and any shortcut keys mapped to those commands according to the current keyboard mapping scheme. Several keyboard mapping schemes … Continue reading

8/6/2013 10:27

声明:本文内容主要译自Nauman Leghari的Using log4net,亦加入了个人的一点心得(节3.1.4)。 请在这里下载示例代码 1           简介 1.1          Log4net的优点: 几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。 经验表明,日志记录往往是软件开发周期中的重要组成部分。它具有以下几个优点:它可以提供应用程序运行时的精确环境,可供开发人员尽快找到应用程序中的Bug;一旦在程序中加入了Log 输出代码,程序运行过程中就能生成并输出日志信息而无需人工干预。另外,日志信息可以输出到不同的地方(控制台,文件等)以备以后研究之用。 Log4net就是为这样一个目的设计的,用于.NET开发环境的日志记录包。 1.2          Log4net的安装: 用户可以从http://logging.apache.org/log4net/下载log4net的源代码。解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。   2           Log4net的结构 log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局). 2.1          Logger 2.1.1     Logger接口 Logger是应用程序需要交互的主要组件,它用来产生日志消息。产生的日志消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。 Logger提供了多种方式来记录一个日志消息,你可以在你的应用程序里创建多个Logger,每个实例化的Logger对象都被log4net框架作为命名实体(named entity)来维护。这意味着为了重用Logger对象,你不必将它在不同的类或对象间传递,只需要用它的名字为参数调用就可以了。log4net框架使用继承体系,继承体系类似于.NET中的名字空间。也就是说,如果有两个logger,分别被定义为a.b.c和a.b,那么我们说a.b是a.b.c的祖先。每一个logger都继承了祖先的属性 Log4net框架定义了一个ILog接口,所有的logger类都必须实现这个接口。如果你想实现一个自定义的logger,你必须首先实现这个接口。你可以参考在/extension目录下的几个例子。 ILog接口的定义如下: public interface ILog { void Debug(object … Continue reading

7/31/2013 19:21

[] CronScheduleBuilder csb; //csb= CronScheduleBuilder.DailyAtHourAndMinute(3, 0); csb = CronScheduleBuilder.CronSchedule(ConfigurationSettings.AppSettings[“cronExpr”]); var trigger = (ICronTrigger)TriggerBuilder.Create().WithSchedule(csb).Build(); string cronExpression = trigger.CronExpressionString; Logger.Debug(“cron expression:” + cronExpression); ISchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler(); scheduler.Start(); IJobDetail job = JobBuilder.Create<DataImportJob>().WithIdentity(“XXXJob”, “JobGroup1”).Build(); scheduler.ScheduleJob(job, trigger); [] Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz … Continue reading

7/30/2013 11:24

string baseUrl = HttpContext.Current.Request.Url.ToString();

7/27/2013 19:40

C#的字符串常用的操作方法   字符串的用法: 1)截取字符串 使用substring方法,而该方法在c#中有两个重载函数:substring(参数),substring(参数1,参数2),用法如下: string A =”I’m a string”; sting B=A.substring(1); sting C=A.substring(1,6); 其中传入的参数1为字符串的起始位置,字符子串B将截取字符串A的第2个字符之后所有的字符. 字符子串C将截取字符串A的第2个字符之后的长度为6的字符串. 参数必须大于等于0,如果小于0将抛出ArgumentOutOfRange异常.     http://blog.csdn.net/mark4ever/article/details/6014606 static void Main()          {                    string c=Console.ReadLine();                    string d=Console.ReadLine();                   Console.WriteLine(c+”,”+d);    //用“+”连接符          }     你说这样写很容易写错,很麻烦,C#还提供另一种书写方式,就是占位符,用{ }来表示,在{ }内填写所占的位的序号,C#规定从0开始,也就是说刚才那中输出,我们还可以这样来表示 Response.Write(“{0},{1}”,c,d); 在这里有两个位c,d,那么也就需要两个占位符所以我们写成{0},{1},还需要注意的是,占位符要写在””内。 view plaincopy static void Main()          {                    string c=Console.ReadLine();                    string d=Console.ReadLine();                    string m=String.Format(“{0},{1}”,c,d);   //字符串格式输出 … Continue reading

7/27/2013 14:54

http://www.cnblogs.com/luminji/archive/2010/09/30/1839038.html C#笔记25:比较和排序(IComparable和IComparer以及它们的泛型实现) 本文摘要: 1:比较和排序的概念; 2:IComparable和IComparer; 3:IComparable和IComparer的泛型实现IComparable<T>和IComparer<T>;   1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。   2:IComparable和IComparer 当我们创建了自己的实体类,如Student,默认想要对其按照年龄进行排序,则需要为实体类实现IComparable接口。 class Student:IComparable { public string Name { get; set; } public int Age { get; set; } #region IComparable Members public int CompareTo(object obj) { Student … Continue reading

7/24/2013 9:10

ASPNETCOMPILER : error ASPRUNTIME: The precompilation target directory (D:appsjenkinsHomejobsxxxworkspacexxxPrecompiledWebxxx) cann ot be in the same tree as the source application directory (D:appsjenkinsHomejobsxxxworkspacexxx). [D:appsjenkinsHomejobsxxx workspacexxxxxx.metaproj]   modify the slution file xxx.sln modity from Debug.AspNetCompiler.TargetPath=”PrecompiledWebxxx” Release.AspNetCompiler.TargetPath=”PrecompiledWebxxx” to Debug.AspNetCompiler.TargetPath=”..PrecompiledWebxxx” Release.AspNetCompiler.TargetPath=”..PrecompiledWebxxx”

7/22/2013 15:52

我们在编程的时候,有时会使用多线程来解决问题,比如你的程序需要在后台处理一大堆数据,但还要使用户界面处于可操作状态;或者你的程序需要访问一些外部资源如数据库或网络文件等。这些情况你都可以创建一个子线程去处理,然而,多线程不可避免地会带来一个问题,就是线程同步的问题。如果这个问题处理不好,我们就会得到一些非预期的结果。   在网上也看过一些关于线程同步的文章,其实线程同步有好几种方法,下面我就简单的做一下归纳。   一、volatile关键字   volatile是最简单的一种同步方法,当然简单是要付出代价的。它只能在变量一级做同步,volatile的含义就是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我。(【转自www.bitsCN.com 】)因此,当多线程同时访问该变量时,都将直接操作主存,从本质上做到了变量共享。   能够被标识为volatile的必须是以下几种类型:(摘自MSDN)   Any reference type. Any pointer type (in an unsafe context). The types sbyte, byte, short, ushort, int, uint, char, float, bool. An enum type with an enum … Continue reading

7/17/2013 12:40

  C#自定义异常处理(自定义例外) 对.NET类来说,一般的异常类 System.Exception 派生于 System.Object。还有许多定义好的异常类(如:System.SystemException、System.ApplicationException等),他们又派生于 System.Exception 类。其中System.ApplicationException 类是第三方定义的异常类,如果我们要自定义异常类,那么就应派生于它。 我们要站在异常一定可能会发生的角度来编写异常处理程序,应对程序有可能发生的错误建立一个良好的异常处理策略。 在做异常处理的时候,最好能在应用程序所有的入口处(事件处理函数,主函数,线程入口)使用try-catch。 但是不要在程序构造函数入口处添加try-catch,因为此处产生异常,它自己并没有能力来处理,因为它还没有构造完毕,只能再向外层抛出异常。 但我们也不能盲目使用异常。而且使用异常,可能会在一定程度上影响到程序的性能(C#中使用异常一般不影响性能)。 全局异常处理、多线程中的异常处理 将全局异常处理函数的委托加入到 Application.ThreadException 中,实现全局异常处理,但它只能处理主线程中未捕获的异常。在多线程异常处理时,工作线程/辅线程中产生异常,可以把它转给主线程来完成异常处理。如果线程之间不通知,是无法直接捕捉异常的。若没有去处理工作线程/辅线程中产生的异常,该异常将会“消失”掉。 为什么要把异常处理都交给主线程去做呢?举个例子:在WinForm里我们使用多线程来处理界面元素,一旦有异常发生就将异常消息显示出来。那么,是直接在异常发生后就MessageBox,还是将消息交给MainUI来统一显示?试想一下,程序要是复杂点或是有多个界面采用多线程来显示界面元素,那么采用前者,我们就算知道了异常的详细信息,但可能还是很难找到究竟是哪里出了问题。而通过MainUI来显示,情况就要好很多了,尤其是还设计到其他东西的时候(如:多语言环境)   http://www.cnblogs.com/winnerlan/archive/2008/05/24/1206644.html

7/13/2013 15:48

检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。 具体解决方法如下: 1:在服务器上安装office的Excel软件. 2:在”开始”->”运行”中输入dcomcnfg.exe启动”组件服务” 3:依次双击”组件服务”->”计算机”->”我的电脑”->”DCOM配置” 4:在”DCOM配置”中找到”Microsoft Excel 应用程序”,在它上面点击右键,然后点击”属性”,弹出”Microsoft Excel 应 用程序属性”对话框 5:点击”标识”标签,选择”交互式用户” 6:点击”安全”标签,在”启动和激活权限”上点击”自定义”,然后点击对应的”编辑”按钮,在弹出的”安全性”对话框中填加 一个”NETWORK SERVICE”用户(注意要选择本计算机名),并给它赋予”本地启动”和”本地激活”权限. 7:依然是”安全”标签,在”访问权限”上点击”自定义”,然后点击”编辑”,在弹出的”安全性”对话框中也填加一个”NETWORK SERVICE”用户,然后赋予”本地访问”权限. 这样,我们便配置好了相应的Excel的DCOM权限. 注意:这是在WIN2003上配置的,在2000上,可能是配置ASPNET用户 由于EXCEL是在服务器上打开的,所以应该写一个把导出数据保存在服务器上,然后再传递给客户端的方法,最后每次调 用这个功能的时候再删除以前在服务器上 加everyone http://blog.163.com/xhy_cy/blog/static/1049762320104604942982/

7/13/2013 14:51

一、 Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500错误解决办法 转载的解决办法: A.在Web.Config <system.web> <pages enableEventValidation=”false”/> </system.web> B.在 ScriptManager  内添加 EnablePartialRendering=”false” 显示详细的错误信息。 如下: <asp:ScriptManager ID=”ScriptManager1″ runat=”server” EnablePartialRendering=”false”/> 一般的原因都是页面存在潜在的危险字符  在 页首加入 … Continue reading

7/12/2013 15:15

首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面。 语法: location.reload([bForceGet])                                                                                                                           参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。                                                                  true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5(“刷新”) replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过“前进”和“后退”来访问已经被替换的URL。 语法: location.replace(URL)                                                                                                      参数: URL 在实际应用的时候,重新刷新页面的时候,我们通常使用: location.reload() 或者是 history.go(0) 来做。因为这种做法就像是客户端点F5刷新页面,所以页面的method=”post”的时候,会出现“网页过期”的提示。那是因为Session的安全保护机制。可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, 我们期望是 Not IsPostback 的。这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。你可以这么写: location.replace(location.href) http://blog.csdn.net/fangxinggood/article/details/604916

7/10/2013 15:28

一、标识列的定义以及特点 SQL Server中的标识列又称标识符列,习惯上又叫自增列。 该种列具有以下三种特点: 1、列的数据类型为不带小数的数值类型 2、在进行插入(Insert)操作时,该列的值是由系统按一定规律生成,不允许空值 3、列值不重复,具有标识表中每一行的作用,每个表只能有一个标识列。 由于以上特点,使得标识列在数据库的设计中得到广泛的使用。 二、标识列的组成 创建一个标识列,通常要指定三个内容: 1、类型(type) 在SQL Server 2000中,标识列类型必须是数值类型,如下: decimal、int、numeric、smallint、bigint 、tinyint 其中要注意的是,当选择decimal和numeric时,小数位数必须为零 另外还要注意每种数据类型所有表示的数值范围 2、种子(seed) 是指派给表中第一行的值,默认为1 3、递增量(increment) 相邻两个标识值之间的增量,默认为1。 三、标识列的创建与修改 标识列的创建与修改,通常在企业管理器和用Transact-SQL语句都可实现,使用企业管理管理器比较简单,请参考SQL Server的联机帮助,这 里只讨论使用Transact-SQL的方法 1、创建表时指定标识列 标识列可用 IDENTITY 属性建立,因此在SQL Server中,又称标识列为具有IDENTITY属性的列或IDENTITY列。 下面的例子创建一个包含名为ID,类型为int,种子为1,递增量为1的标识列 CREATE TABLE T_test (ID int IDENTITY(1,1), Name varchar(50) … Continue reading

next page
辽ICP备14012896