C#/.net图片压缩算法
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; /// <summary> /// 图片压缩 /// </summary> public class ImageCompress { /// <summary> /// 指定缩放类型 /// </summary> public enum ImageCompressType { //***指定高宽缩放(可能变形) WH = 0, //***指定宽,高按比例 W = 1, //***指定高,宽按比例 H = 2, //***指定高宽裁减(不变形) Cut = 3, //...
用栈实现递归算法(第一版)
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#中所有引用类型的对...
Div的宽度与高度设定100%
正像你所知道的那样,设置DIV大小 的有两个属性width和height,以前在学习DIV每次给DIV设置100%宽度或高度时都很迷惑,不明确这个100%的宽度(高度)到底有多宽有 多高?这个100%是从哪里得到的从哪里继承的?今天我们的话题就是有关div高度100%的问题! 其实,要弄懂div宽度|width100%、div高度|height100%到底是怎么实现的,只需弄懂一个简单的问题就可以了,即100%的基数是谁,就是这个100%是相对于谁的width、height来说是100%? div的100%是从其上一级div的宽高继承来的,有一点很关键,就是要设置div100%显...
DIV的内容自动换行
word-break:break-all和word-wrap:break-word都是能使其容器如DIV的内容自动换行 它们的区别就在于: 1,word-break:break-all 例如div宽200px,它的内容就会到200px自动换行,如果该行末端有个英文单 词很长(congratulation等),它会把单词截断,变成该行末端为conra(congratulation的前端部分), 下一行为tulation(conguatulation)的后端部分了。 2,word-wrap:break-word 例子与上面一样,但区别就是它会把congratulation整个单词看成一个整体, 如果该行末端宽度不够显示整个单词,它会自动把整个单词放...
再说.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)); ...
程序员面试注意事项
程序员面试一直是社区乐于讨论的热门话题。我自己从06年实习以来,先后经历了4家软件 公司,全部是外企,其中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴 公司。跨入IT行业以来,我在求职过程中经历过多次面试,最近两年也有过多次面试别人的经验。我感觉现在到了对这个问题发表自己看法的时候,这篇文章是我 站在面试官角度对于程序员面试问题的一个阶段性反思和经验总结。 目标 相信和不少朋友一样,有了几年工作经验成为Senior后就开...
.NET使用UPnP来穿透NAT
在写完Object 672后,软件的一个致命问题暴露出来,如果服务器和客户端都在内网环境下,即双方都通过NAT来接触外网,那么此时客户端是无法直接和服务器交流的。 解决方案可以是: 1:把服务器部署在不存在NAT的公网环境下。 2:使用常见的NAT穿透方法比如UDP打洞,或者STUN协议,但是这些方法都需要另一个已知的部署在公网环境下的服务器。 3:就是这篇文章主要讨论的方案,即不需要部署任何公网环境下的服务器,通过路由器支持的UPnP协议来把内网的接口绑定到公网接口上。 UPnP的一大优势就是不会像UDP打洞那样...