`
文章列表
最近有个需求是需要窗体上要有很炫的效果,比如动画划过的panel,跟随鼠标移动的动画,动画扩大缩小的panel,诸如此类,如果单独写这些效果一是要被烦死,二是窗体内的代码会一团糟,所以弄了个指挥其他控件移动变形的控件。 使用方法很简单,首先把这个控件拖到窗体 然后在需要移动其他控件的时候,比如我想在窗体上让一个按钮移动到鼠标当前点击的位置,那么只需要在窗体的mouse_click事件里这么写: private void Form1_MouseClick(object sender, MouseEventArgs e) { trans.MoveTo(button1.Location, e. ...
最近有个需求是需要窗体上要有很炫的效果,比如动画划过的panel,跟随鼠标移动的动画,动画扩大缩小的panel,诸如此类,如果单独写这些效果一是要被烦死,二是窗体内的代码会一团糟,所以弄了个指挥其他控件移动变形的控件。 使用方法很简单,首先把这个控件拖到窗体 然后在需要移动其他控件的时候,比如我想在窗体上让一个按钮移动到鼠标当前点击的位置,那么只需要在窗体的mouse_click事件里这么写: private void Form1_MouseClick(object sender, MouseEventArgs e) { trans.MoveTo(button1.Location, e. ...
鉴于上一篇POST过于抽象以至于很多人无法理解,现在用代码来说话,我们一起来重新回顾一下事故现场的情况。 首先在本机安装FTP软件,我这里使用的Serv-U一个用得非常广泛的Ftp Server,准备好Ftp的目录,我这里使用自己放mp3的目录 其中有一个子目录 2 我们可以看到两个目录的内容截然不同以方便我们重现事故现场。 第二部我们建立一个Winform项目 之后在界面上用三个按钮来实现testCase
鉴于上一篇POST过于抽象以至于很多人无法理解,现在用代码来说话,我们一起来重新回顾一下事故现场的情况。 首先在本机安装FTP软件,我这里使用的Serv-U一个用得非常广泛的Ftp Server,准备好Ftp的目录,我这里使用自己放mp3的目录 其中有一个子目录 2 我们可以看到两个目录的内容截然不同以方便我们重现事故现场。 第二部我们建立一个Winform项目 之后在界面上用三个按钮来实现testCase
本来以为2.0开始内置了FtpWebRequest,以后不用再受没有更新保障的第三方Ftp类库的限制,结果今天遇到的问题,让我呕血三升不得其解。看来又得自己写FtpClient的类了。言归正传,先说问题 以前用到Ftp上传很多都是一次性的操作,所以如果: FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create("url"); 之 后的话就可以上传,下载,或者什么的,之后就直接退出了事。结果现在的需求会涉及很多比较具有持续性的操作,比如进入一个根目录,然后list,判断是否 存在一个目录,如果存在就cd进入,不存在就 ...
本来以为2.0开始内置了FtpWebRequest,以后不用再受没有更新保障的第三方Ftp类库的限制,结果今天遇到的问题,让我呕血三升不得其解。看来又得自己写FtpClient的类了。言归正传,先说问题 以前用到Ftp上传很多都是一次性的操作,所以如果: FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create("url"); 之 后的话就可以上传,下载,或者什么的,之后就直接退出了事。结果现在的需求会涉及很多比较具有持续性的操作,比如进入一个根目录,然后list,判断是否 存在一个目录,如果存在就cd进入,不存在就 ...
为了说明一下基础tcp开发库是如何扩展来处理上层协议的,我这里用一个简单到极点的Http Server来作为例子。这个例子会处理发到特定端口的所有http请求,并返回显示Hello world的网页。 由于是一个很简单的例子,所以我们并不需要解析完整的Http协议,当然我们是能够很快构建一个http处理器,毕竟这是一个基于文本行的协议,不过即使这样还是需要很大的篇幅,所以我们只需要处理其中一小部份。 首先我们来看看Http的request。http的请求是一串文本,由多个行组成,每行都是key value形式的,第一行表示了请求的方法和路径,由空格隔开,后面的是请求的头,由冒号隔开,不过其中 ...
为了说明一下基础tcp开发库是如何扩展来处理上层协议的,我这里用一个简单到极点的Http Server来作为例子。这个例子会处理发到特定端口的所有http请求,并返回显示Hello world的网页。 由于是一个很简单的例子,所以我们并不需要解析完整的Http协议,当然我们是能够很快构建一个http处理器,毕竟这是一个基于文本行的协议,不过即使这样还是需要很大的篇幅,所以我们只需要处理其中一小部份。 首先我们来看看Http的request。http的请求是一串文本,由多个行组成,每行都是key value形式的,第一行表示了请求的方法和路径,由空格隔开,后面的是请求的头,由冒号隔开,不过其中 ...
经常在在用socket开发程序的时候会遇到很麻烦的事情,要处理网络异常,要实现异步提高性能,要处理粘包,分包,要分析处理协议,如果能够有一个如同java下的mina一样的开发库会很方便,所以写了这个东西,先在只实现了TCP协议,还很简陋,先在发出来在还能改正的时候求批评,求指正,免得以后不好调头。项目的地址在http://edas.codeplex.com/。 因为很简单,就几个类所以就不装样子发类图了。基本原理是这样子的: 一个Acceptor类用来封装Socket的监听操作,这里我提供了同步和异步两种监听方式,据网上的达人说同步监听的成功率高且效率不会比异步的差,经过测试发现效率上确实如 ...
经常在在用socket开发程序的时候会遇到很麻烦的事情,要处理网络异常,要实现异步提高性能,要处理粘包,分包,要分析处理协议,如果能够有一个如同java下的mina一样的开发库会很方便,所以写了这个东西,先在只实现了TCP协议,还很简陋,先在发出来在还能改正的时候求批评,求指正,免得以后不好调头。项目的地址在http://edas.codeplex.com/。 因为很简单,就几个类所以就不装样子发类图了。基本原理是这样子的: 一个Acceptor类用来封装Socket的监听操作,这里我提供了同步和异步两种监听方式,据网上的达人说同步监听的成功率高且效率不会比异步的差,经过测试发现效率上确实如 ...
老赵在前几次的POST里分析了.NET的自带线程池,由于.NET自带的线程池在底层通过win32api调用的windows的进程附带的线程池,所以对于进程,这个线程池是唯一的,而且很不幸的是很多.NET自身的操作也需要通过这个线程池来完成,比如timmer。所以我们来尝试自己写一个线程池,这个线程池不是静态的,一个进程里可以出现多个线程池的实例,我们可以随时放入要执行的操作,由于没有系统线程池的创建线程的频率的限制,对于大量突发线程的频繁操作来说自定义的线程池会比较好用。 首先我们来分析一下实现的原理。线程池,顾名思义就是在一个“池”中保存了一组可以重复利用的线程对象,从而可以节省创建线程的开 ...
老赵在前几次的POST里分析了.NET的自带线程池,由于.NET自带的线程池在底层通过win32api调用的windows的进程附带的线程池,所以对于进程,这个线程池是唯一的,而且很不幸的是很多.NET自身的操作也需要通过这个线程池来完成,比如timmer。所以我们来尝试自己写一个线程池,这个线程池不是静态的,一个进程里可以出现多个线程池的实例,我们可以随时放入要执行的操作,由于没有系统线程池的创建线程的频率的限制,对于大量突发线程的频繁操作来说自定义的线程池会比较好用。 首先我们来分析一下实现的原理。线程池,顾名思义就是在一个“池”中保存了一组可以重复利用的线程对象,从而可以节省创建线程的开 ...
一个基于flash的视频聊天室,http://www.shan6.com/  通过rtmp协议实现的视频聊天,如果用flex实现视频聊天尚算容易的话,这个站点的视频服务器并不是基于FMS也不是开源的Red5,而是用C#从头实现RTMP协议来开发的一个Flash媒体服务器,站点的业务逻辑也不是通过AS3而是通过C#来写的。基于IOCP的高并发设计使其能够支撑达到服务器带宽极限的并发用户数。不过可惜的是该站点的技术总监并没有将其开源的打算……我正在劝说中
很早的时候就想弄个人网站,当时正是个人网站的黄金时代,但是苦于一没钱没精力来扩大网站的规模,二没有好的盈利模式,终于不了了之。后来回想起来常常不胜唏嘘,早年很多做互联网技术入行的人想必都是怀揣着成为张 ...
很早的时候就想弄个人网站,当时正是个人网站的黄金时代,但是苦于一没钱没精力来扩大网站的规模,二没有好的盈利模式,终于不了了之。后来回想起来常常不胜唏嘘,早年很多做互联网技术入行的人想必都是怀揣着成为张 ...
Global site tag (gtag.js) - Google Analytics