Spiga

LINQ Operator

2009-01-13 22:11 by zhangz, 2 visits, 网摘, 编辑

一张帮助你运动颈椎的图片

2008-11-25 14:29 by zhangz, 211 visits, 网摘, 编辑

VB.Net使用CInt转型非整数值时需要注意的问题

2008-11-21 15:18 by zhangz, 1115 visits, 网摘, 编辑

今天帮客户维护一个VB.Net项目时遇到的问题, 以前没注意过。在此记录下来,提醒不知道的朋友注意。

摘自MSDN :

将一个非整数值转换为整型时,整数转换函数(CByte、CInt、CLng、CSByte、CShort、CUInt、CULng 和 CUShort)将移除小数部分,并将该值舍入为最接近的整数。

如果小数部分正好是 0.5,整数转换函数将其舍入为最接近的偶数整数。例如,0.5 舍入为 0,1.5 和 2.5 都舍入为 2。这有时称为“四舍六入五成双”,其目的是弥补在将许多这样的数字相加时可能会累积的偏量。

Console.WriteLine(CInt(7.5)) '8
Console.WriteLine(CInt(8.5)) '8
Console.WriteLine(CInt(8.6)) '9

 

【收藏】泛型技巧系列---by装配脑袋

2008-11-04 17:03 by zhangz, 62 visits, 网摘, 编辑

泛型技巧系列:如何提供类型参数之间的转换

泛型技巧系列:用泛型打造可复用的抽象工厂

泛型技巧系列:简单类型选择器

泛型技巧系列:避免基类及接口约束

泛型技巧系列:类型字典和Type Traits

一些支离破碎的泛型反射技巧

死循环导致w3wp.exe进程CPU占用率100%

2008-10-21 16:08 by zhangz, 256 visits, 网摘, 编辑

    昨天快下班时同事准备把改好的报表的链接发给客户,让客户测试。在发邮件之前先检查了一遍,结果发现连页面都打不开,之前是可以打开的。同事让我帮他检查一下。

   我remote到server上,一进桌面就弹出来提示说C盘空间不足,一看就剩100多M了,赶快把没用的都删了。可是报表还是打不开。试试其他的网站都能打开,说明不是IIS的问题。打开任务管理器发现有一个w3wp.exe进程CPU占用率100%,我就给报表站点新建了一个application pool,重启iis。然后点开几个报表,都能打开了,但是过一会CPU又100%了。应该是代码有问题了。又重启IIS,然后把刚才的那几个报表挨个打开试试,最后发现有一个页面一打开CPU占用率立刻就上去了,终于找到了~,剩下的事就是去改代码了。

   解决内存占用过多,可以做以下配置:
   1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
   2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

   解决CPU占用过多:
   1、在IIS中对每个网站进行单独的应用程序池配置。
   2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

 

   google到的怎样找到有问题的网站:

   首先设置任务管理器的查看方式,勾上显示PID,记住w3wp.exe进程的PID。

   然后在命令行里运行iisapp -a,可以看到PID对应的应用程序池。

   再去iis中查看该应用程序池对应的网站,有问题的网站就找到了,剩下的就是这个网站代码中的问题了。  


   IIS的设置推荐Omar AL Zabir的这篇blog:Best practices for creating websites in IIS 6.0

 

    

找出二叉树中所有值比某个给定整数小的节点中值最大的那个节点

2008-09-28 15:22 by zhangz, 123 visits, 网摘, 编辑
摘要:遍历二叉树,通过辅助方法比较两个值的大小,把结果记录下来。[代码] 阅读全文

用栈实现队列,实现Enqueue和Dequeue方法

2008-09-28 14:31 by zhangz, 440 visits, 网摘, 编辑

队列是先进先出,栈是先进后出,使用两个栈来模拟队列:

入队就是入第一个栈,出队是把第一个栈的元素全部出栈到第二个栈里,然后第二个栈出栈,再把剩下的倒回第一个栈。

 

 1using System;
 2using System.Collections;
 3
 4namespace Algorithm
 5{
 6    class Program
 7    {
 8        static void Main(string[] args)
 9        {
10            Queueq = new Queue();
11            q.Enqueue(1);
12            q.Enqueue(2);
13            q.Enqueue(3);
14            q.Enqueue(4);
15            Console.WriteLine(q.Dequeue());
16        }

17    }

18    class Queue
19    {
20        private Stack s1=new Stack();
21        private Stack s2=new Stack();
22
23        public void Enqueue(object o) 
24        {
25            s1.Push(o);
26        }

27        public object Dequeue() 
28        {
29            while (s1.Count > 0
30            {
31                s2.Push(s1.Pop());
32            }

33            object o = s2.Pop();
34            while (s2.Count > 0
35            {
36                s1.Push(s2.Pop());
37            }

38            return o;
39        }

40    }

41}