用栈实现递归算法(第一版)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TEST { class Program { static void Main(string[] args) { Console.Write(GetFoo(10)); Console.Read(); } // static long GetFoo(int n) { if (IsLeaf(n)) { return GetLeafvalue(n); } //结果保存栈 Stack<lo...
再说.NET的堆与栈
理解堆与栈对于理 解.NET中的内存管理、垃圾回收、错误和异常、调试与日志有很大的帮助。垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并 不需要程序员手动管理内存,但这并不代表程序员就无需了解分配的对象是如何被回收的,在一些特殊的场合仍需要程序员手动进行内存管理。 在32位的处理器上,每个进程的虚拟内存为4GB,.NET会在这4GB的内存块中开辟出3块内存,分别作为栈、托管堆、和非托管堆 堆(heap): 堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对...
再说.NET/C#中的堆与栈
理解堆与栈对于理 解.NET中的内存管理、垃圾回收、错误和异常、调试与日志有很大的帮助。垃圾回收的机制使程序员从复杂的内存管理中解脱出来,虽然绝大多数的C#程序并 不需要程序员手动管理内存,但这并不代表程序员就无需了解分配的对象是如何被回收的,在一些特殊的场合仍需要程序员手动进行内存管理。 在32位的处理器上,每个进程的虚拟内存为4GB,.NET会在这4GB的内存块中开辟出3块内存,分别作为栈、托管堆、和非托管堆 堆(heap): 堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对...
WINFORM自动捕获异常
WINFORM自动捕获异常 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WinformLogDemo { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDef...
用栈实现递归算法(第一版)
学习使用,先用二叉树后序遍历写了个 斐波那契数的例子,后台陆续更新更好的算法,最新在学《算法导论》,开始有点困难,不过不急,慢慢来。。。一天,一周,一个月一个算法,弄明白了,比什么都强!! 这段代码没有解释,不久会更新,先看着代码哈 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TEST { class Program { static void Main(string[] args) { Console.Write(GetFoo(10)); ...
.NET使用UPnP来穿透NAT
在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的。 解决方案可以是: 1:把服务器部署在不存在NAT的公网环境下。 2:使用常见的NAT穿透方法比如UDP打洞,或者STUN协议,但是这些方法都需要另一个已知的部署在公网环境下的服务器。 3:就是这篇文章主要讨论的方案,即不需要部署任何公网环境下的服务器,通过路由器支持的UPnP协议来把内网的接口绑定到公网接口上。 UPnP的一大优势就是不会像UDP打洞那样...
A星寻路优化
这几天在天地会上看到有算法比赛,比的是谁实现的A*寻路速度快,虽然比赛不是那么正规,但是这种展现实力的机会咱也不能落后是不,于是咱也折腾出一个算法提交上去,点击这里下源码(如果觉得有学习到东西,能送点银子是更好的啦!):http://bbs.9ria.com/forum.php?mod=redirect&goto=findpost&ptid=172851&pid=1668442&fromuid=64655 128*128地图规模下1000个随机障碍,在我的电脑上一般不会超过1毫秒,只有一些奇葩的情况下会是1毫秒,没出现过2毫秒的情况。然后我尝试过5000个随机障碍,一...
WinForm中如何获取“嵌入的资源”和“资源文件”数据
生成操作:嵌入的资源;复制到输出目录:不复制; //获取“嵌入的资源”数据 Image.FromStream(Assembly.GetExecutingAssembly() .GetManifestResourceStream(@"TestCustomForm.Res.button.btndown.bmp")); 其中:TestCustomForm为项目名称,Res为项目下的文件夹,button为Res的子文件夹, btndown.bmp是文件名称。 //获取项目中“资源文件”的数据 Assembly asm = Assembly.GetExecutingAssembly(); ResourceManager rm = new ResourceManager("TestCustomForm.Properties.Resources", asm); String s...
编程中的异常处理
在 软件开发过程中,不可避免的会遇到错误处理,而且这部分对于整个软件的健壮性有非常大的作用,它是软件除了功能性以外最重要的指标了,一个软件成功与否与 其健壮性有很大的联系。我在以前的开发中也时常思考错误处理,因为这部分代码逻辑比较不容易梳理清楚。以异常的处理为例,以前通常就采用比较简单粗暴的处 理方式:用try..catch加Exception把所有异常都包起来,这样简单省事,写的代码最少,相信很多童鞋曾经跟我一样写过这样的代码,很明 显,这样写有很大的问题,最主要的问题在于: Ex...