蝈蝈俊.net

记录自己的学习心得

2009年07月03日

原创 Connection Pool 与 Connect Timeout=0

最近在做多线程处理数据库的程序时,这个程序总是会报如下错误: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 System.Data    在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)    在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)    在 System.Data.SqlClient.SqlConnection.Open() 仔细用 SQL Server Management Studio 中的 Activity Monitor 查看数据库链接,竟然是只有2,3个数据库链接时,就报上述错误,很是怪异。 一步步删除掉代码,反复试验后,竟然是数据阅读全文>

发表于 @ 2009年07月03日 15:00:00|评论(loading...)|举报|收藏

2009年06月23日

原创 PowerPoint插件出问题的解决方法

今天很怪异,我的PowerPoint出现了下面的提示对话框后,不论我选择是或者否,我的PowerPoint都再也打不开了。 网上搜索了相关资料,通过下面步骤删除这个插件后,就可以正常使用了。 单击开始→运行→输入Powerpnt.exe /safe回车,尝试以安全模式运行POWERPOINT。 如果可以运行,点击POWERPOINT选项→加载项→里面的活动应用程序加载项→去除对应插件。   参考资料: 启用或禁用 Office 程序中的加载项 http://office.microsoft.com/zh-cn/help/HA100341272052.aspx http://bbs.kafan.cn/thread-459528-2-9.html阅读全文>

发表于 @ 2009年06月23日 16:58:00|评论(loading...)|举报|收藏

2009年06月17日

原创 硅脂

     硅脂对CPU的热量向散热风扇的传递很重要,上周对我家电脑的处理对此深有感受。特写此篇Blog。      之前我家的台式机由于频繁出现无法启动。症状是:主板灯亮,风扇都在转,但是就是无法启动,而且主板没有任何嘟嘟提醒。每次碰到这种情况,我需要把CPU拆下来,重新装上去才可以启动。我怀疑就是CPU热量散不出去的原因,在能启动的时候,通过进入主板的管理界面,看到一开机,CPU的温度就是74度。风扇乌鸦乌鸦的响。      后来就是买了硅脂,涂在风扇跟CPU接触面上后,开机进入BIOS 后,发现CPU温度只有三十多度,玩一个3D的游戏时,也只有60度。之前不能启动的问题也就解决了。由于我家电脑的风扇是可以根据温度变转速的,之前开机后风扇很响的问题也解决了。   参考: 实践出真知-4种硅脂涂法详尽测试 http://mb.beareyes.com.cn/2/lib/200801/24/20080124504.htm阅读全文>

发表于 @ 2009年06月17日 10:16:00|评论(loading...)|举报|收藏

2009年06月12日

原创 学习笔记:7种结构型设计模式简单对比

这7种结构型设计模式是下面7种: Adapter 适配器模式 Bridge 桥接模式 Composite 组合模式 Decorator 装饰模式 Facade 外观模式 Flyweight 享元模式 Proxy 代理模式 对比: Adapter模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况” ,在遗留代码复用、类库迁移等方面非常有用。 Bridge模式的应用一般在“两个非常强的变化维度”。Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维护来变化。 Composite模式采用树形结构来实现普遍存在的对象容器,从而将“一对多”的关系转化为“一对一”的关系,使得客户代码可以一致地处理对象和对象容器,无需关心处理的是单个的对象,还是组合的对象容器。 将“客户代码与复杂的对象容器结构”解耦是Composite模式的核心思想,解耦之后,客户代码将与纯粹的抽象接口(而非对象容器的复杂内部实现)发生依赖关系,从而更能“应对变化”。 阅读全文>

发表于 @ 2009年06月12日 09:32:00|评论(loading...)|举报|收藏

原创 作用域

昨天花了2个小时调试有时候启动了定时轮询,有时候没有启用定时轮询的bug,最后发现竟然是作用域的问题,比较汗颜,下面就是有bug的这个代码的简单写法: using System; using System.Timers; using System.Threading; class Program {     static void Main(string[] args)     {         Begin();         Console.ReadLine();     }     public static void Begin()     {         TimerCallback callbackMethod = new TimerCallback(Program.Check);         int pollCycleInMilliseconds = 180000;         System.Threading.Timer 阅读全文>

发表于 @ 2009年06月12日 09:31:00|评论(loading...)|举报|收藏

2009年06月08日

原创 Html5

     上周五参加Google开发者日,给我冲击最大的是Html5。对我的冲击主要有2点:      1、Html 5 可以带来丰富的用户体验。      开发者日中Google演示的用Html5开发的Wave(一个Mail的应用)就被Google玩的很炫。邮件、IM、博客、照片等功能融合在一起。特别是可以在一个邮件中,几个相关人能够协同讨论,不再像从前一样一个问题可以讨论N个邮件。从现场多次的掌声中可以看到这个东西很强大。它可以实现现在Flash\Silverlight才能提供的功能。 下面是 Wave 的一个截图 图片来源自:http://google.org.cn/2009/05/29/google-wave-a-new-communication-platform-for-a-new-web-2/      2、各种浏览器支持Html5的步伐很快。 Html5的规范不象之前,九几年就出来的规范,不久前普及,这次Html5的支持,进展很快。HTML 5还没有标准化,但Firefox、Chrome、Safari和Opera已经引入了它的元素。很难想象的是一个处于阅读全文>

发表于 @ 2009年06月08日 15:11:00|评论(loading...)|举报|收藏

2009年06月03日

原创 多线程与SqlConnection.Close

我做的一个Windows Form 程序碰到一个很怪异的多线程情况,最后检查进去竟然是部分代码的数据库链接没有关闭导致的。 我的这个程序是多线程程序,每个线程不间断的从数据库中取得数据,然后对取出的数据进行处理,一直循环到没有需要处理的数据为至。每个线程的循环是上万次的,即,每个线程上万次的数据库链接打开操作。 这个程序碰到怪异的现象是: 在A服务器上,没有任何问题,在B服务器上程序开一个线程没有任何问题,开多个线程则只有一个线程没问题,其他线程都有问题。 对每一个线程都作 try catch 拦截,就会看到出错线程报如下错误: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 System.Data    在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)    在 System.Data.ProviderBase.DbConnectionClosed.OpenCo阅读全文>

发表于 @ 2009年06月03日 13:38:00|评论(loading...)|举报|收藏

2009年05月08日

原创 学习笔记:创建型设计模式简单对比

知识点: Singleton 模式解决的是实体对象个数的问题。 整个创建型设计模式,除了Singleton,其他4个都是解决“如何创建易变类的实体对象”的问题。 Factory Method,Abstract Factory ,Builder 都需要一个额外的工厂类来负责实例化“易变对象” Factory Method 解决“单个对象”的需求变化。 Abstract Factory 解决“系列对象”的需求变化。 Builder 解决“对象部分”的需求变化。构造的算法骨架稳定,各个步骤易变。 Prototype 采用的“原型克隆”的方法来解决这个问题。(可以认为是一个特殊的工厂类) Factory Method,Abstract Factory ,Prototype  这三个创建型模式相互转换的难度很低。能用Abstract Factory实行的,我们肯定也可以用Factory Method和Prototype  。如何区分他们的呢? 容易 克隆的类才方便用 Prototype ;是否这个类可用Me阅读全文>

发表于 @ 2009年05月08日 16:24:00|评论(loading...)|举报|收藏

2009年04月29日

原创 MemberwiseClone与Clone

MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。 下面的代码就是演示这个问题: using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace CloneDemo { [Serializable] class DemoClass { public int i = 0; public int[] iArr = { 1, 2, 3 }; public DemoClass Clone1() { return this.MemberwiseClone() as DemoClass; } 阅读全文>

发表于 @ 2009年04月29日 16:56:00|评论(loading...)|举报|收藏

2009年04月13日

原创 多线程Singleton单件模式

Singleton模式是最简单的模式,比较汗颜的是自己一直以来使用的是单线程的Singleton模式,最近在听了李建忠老师的模式讲座录像后,才发现自己一直没注意到这点。这个录像讲座在后面给出了链接地址: C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式) 下面内容整理自李建忠老师的讲课内容: 单线程的Singleton模式 public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton Instance { get { if (instance == null) instance = new Singleton(); return instance; 阅读全文>

发表于 @ 2009年04月13日 10:55:00|评论(loading...)|举报|收藏

原创 Thread.Sleep(0)

今天在看 EnterpriseLibrary 源文件时,看到如下的代码,这个代码可以比较经典的解释Thread.Sleep(0)的用途。代码如下: Hashtable inMemoryCache; CacheItem cacheItemBeforeLock = null; // ..... 一些其他代码// 通过循环,以获得 cacheItemBeforeLock 的控制权。 bool lockWasSuccessful; do { lock (inMemoryCache.SyncRoot) { // ..... lockWasSuccessful = Monitor.TryEnter(cacheItemBeforeLock); } if (lockWasSuccessful == false) { Thread.Sleep(0); } } while (lockWasSuccessful == false); try { // 对 cach阅读全文>

发表于 @ 2009年04月13日 09:19:00|评论(loading...)|举报|收藏

2009年03月30日

原创 Html标签嵌套对展示性能的影响

一个简单问题:如下2种Html写法,那个加载速度快? 内容代码2 内容代码3 内容代码4 内容代码5 内容代码6 内容代码7 内容代码8 内容代码9 内容代码10 内容代码2 内容代码3 内容代码4 内容代码5 内容代码6 内容代码7 内容代码8 内容代码9 内容代码10 我的答案,写法2。当然,如果只是上面的写法,实际上这两种写法对性能的差别,可以忽略不计。 但是如果,上图的内容代码区域如果嵌入了一些不可控的因素,比如:外站的一些脚本出现在内容代码7中。写法1需要所有都加载完成才可以正常显示,写法2的内容2-6 不受这个影响。   更具体的来说:浏览器解析Html的规则必然是: 当服务器向浏览器输出多少,浏览器就会解释多少,浏览器不可能解析没有给它的内容。 源文件Body区域的每个Html标签,如果浏览器找不到这个标签的结束标志(一些html标签没有结束标志,但是需要浏览器去分析结束位置)。这个标签对应的内容,浏览器就难以正常显示。 源文件Body区域的多个标签嵌套,阅读全文>

发表于 @ 2009年03月30日 14:56:00|评论(loading...)|举报|收藏

2009年03月19日

原创 NLB是如何做负载分流计算的

      网络负载平衡采用一种完全分布式的算法,根据传入客户端的 IP 地址和端口,以统计方式将其映射到群集主机。此进程的发生不需要主机间进行任何通信。当发现到达的数据包时,所有主机同时执行这种映射,以快速确定哪个主机应当处理这个程序包。这种映射一直保持不变,直到群集主机数发生更改时为止。与集中式负载平衡应用程序相比,网络负载平衡筛选算法处理数据包的效率更高,因为前者必须修改和重新传送数据包。 如下图: 请求发送到所有NLB主机 只有一台主机会处理,其他主机丢弃这个请求。 此进程的发生不需要主机间进行任何通信。 不需要修改和重新传送请求数据包。   这个统计算法在 Wlbs.sys 组件中实现。 有关这个算法细节可以搜索关键字:“Load Balancing Algorithm” 下面是一些相关文章链接: How Network Load Balancing Algorithm works internally http://www.codedigest.com/Articles/Windows%20and%20Cluste阅读全文>

发表于 @ 2009年03月19日 09:35:00|评论(loading...)|举报|收藏

2009年03月18日

原创 ASP.net2.0的machineKey

machineKey的作用在于下述场景: ASP.net 使用 forms authentication 时的 cookie 数据的加密和解密。以确保这部分数据不会被篡改。 viewstate 数据的加密和解密。以确保这部分数据不会被篡改。 使用进程外session(out-of-process session)时,对会话状态标识进行验证。 ASP.net 1.0 以及 ASP.net 1.1, 我们都可以在下面地址的文件中找到machineKey的配置信息: %Windir%\Microsoft.NET\Framework\\config\machine.config 不同的是 ASP.net 1.0 找到的是如下的配置信息 ASP.net 1.1 找到的是如下信息: 但是 ASP.net 2.0 , .net Framework 3.0 ,.net Framework 3.5 这些版本中,我们在 %Windir%\Microsoft.NET\Framework\\config\ 目录的  machine.config阅读全文>

发表于 @ 2009年03月18日 14:16:00|评论(loading...)|举报|收藏

2009年03月17日

原创 ASP.net 的工作线程与请求队列

ASP.net工作线程池 当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程。 一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求。如果一个同步请求成为 I/O bound(例如,如果它调用一个远程 Web 服务或查询一个远程数据库,并等待调用返回),那么分配给该请求的线程在调用返回之前处于挂起状态。 这影响了可伸缩性,原因是线程池的可用线程是有限的。 这个数字的设置是在 machine.config 的 下述节点的 maxWorkerThreads 属性 maxWorkerThreads 按 CPU 配置用于进程的辅助线程的最大数目。例如,如果单处理器服务器上的该值为 25,ASP.NET 使用运行时 API 将进程限制设置为 25。在双处理器服务器上,该限制设置为 50。该属性的值必须等于或大于 httpRuntime 配置节中的 minFreeThread 属性设置。 该属性的范围是从 5 到 100。 ASP.net请求队列 上述设置中,还阅读全文>

发表于 @ 2009年03月17日 13:38:00|评论(loading...)|举报|收藏

用户操作
[即时聊天] [发私信] [加为好友]
郭红俊
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
郭红俊的公告
记录自己的学习心得
我的同步博客:
博客堂
文章分类
收藏
    CSDN社区组同事的Blog
    OCAN
    wuxilin(RSS)
    我的msn的Blog
    我的技术Blog(RSS)
    我的收集资料的Blog(RSS)
    自己在CSDN马甲的Blog(RSS)
    朋友的Blog
    客齐集播客
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © 郭红俊