摘要:
我们知道对于两个不具有继承关系的两个类型,如果没有为它们定义转换器,两这之间的类型转换是不允许的,Delegate也是如此。但是有时候我们却希望“兼容”的两种Delegate类型能够进行转换,比较典型的就是表示事件的Delegate。.NET Framework为我们定义了类型EventHandler来表示事件,但是却没有规定事件的Delegate类型是EventHandler的子类。原则上讲,事件可以是任意类型的Delegate,但是我们使用的事件一般具有如下两个共同点:不具有返回类型,或者返回类型为void;有且只有两个输入参数,其一个参数类型为Object,第二个类型是EventArgs 阅读全文
posted @ 2012-11-03 10:56
HackerVirus
阅读(159)
评论(0)
推荐(0)
摘要:
这里用python实现了一个echo程序的服务端和客户端,客户端发出的东西,服务端打上一个时间戳后给客户端发回去。主要是实践一下python的socket编程python的socket相关的比较低层的接口都在标准库中的socket module来实现的,这个module中定义的属性包括一些常量,如下面34行的AF_INET,SOCK_STREAM,全局函数ntohl(byte order translation),另外还有一个类socket,这个Socket Object里面包装了像listen, accept这些函数。socket module里面的全局函数socket就返回这样一个Sock 阅读全文
posted @ 2012-11-03 10:53
HackerVirus
阅读(481)
评论(0)
推荐(0)
摘要:
前段时间做一个产品,盈利方式也就是卖数据给用户,用wpf包装一下,当然数据提供方是由公司定向爬虫采集的,虽然在实际工作中没有接触这一块,不过私下可以玩一玩,研究研究。 既然要抓取网页的内容,肯定我们会有一个startUrl,通过这个startUrl就可以用广度优先的方式遍历整个站点,就如我们学习数据结构中图的遍历一样。既然有“请求网页”和“解析网页”两部分,在代码实现上,我们得需要有两个集合,分别是Todo和Visited集合,为了简单起见,我们从单机版爬虫说起,说起爬虫,就必然逃避不了海量数据,既然是海量数据,那么性能问题不容忽视,在Todo和Visited集合的甄别上,我们选择用Queu. 阅读全文
posted @ 2012-11-03 10:48
HackerVirus
阅读(247)
评论(0)
推荐(0)
摘要:
客户端缓存脚本通常让我们又爱又恨,爱他,是因为他确实可以有效防止相同的文件在客户端和服务器之间传来传去,恨他,是因为当你真的需要更新他的时候,他可能不理会你的要求。以至于很多人直接在脚本后面加一个时间戳作为参数,当我们每次去获取网页的时候,都会在后面去增加一个时间戳,这样脚本文件就会每次都回传给浏览器,具体表现为你每次F5刷新页面(不是CTRL+F5)的时候,返回状态码始终都是200。当然,这么残暴地写,在一些企业内网的环境,也没什么大不了,但是还是很多人会有点儿洁癖。其实只要在每次变更的时候强制大家刷新一下,不是就可以了吗?于是大家认为在后面加一个版本号,如v=2之类的,这样只需要每次更新脚 阅读全文
posted @ 2012-11-03 10:42
HackerVirus
阅读(382)
评论(0)
推荐(0)
摘要:
前段时间公司新写的自动升级服务端(Remoting)出现了内存不断飙升的情况,从最初的七八十兆一晚上竟然飙到了1G多,直接导致客户端连接服务端失败,这不科学,后来优化了各种可能造成占用内存的方法(数据库连接,I/O操作,引用类型释放),但效果不佳,这下可难为我们了,不知道问题的所在也就不知道该如何去修改。我们知道.NET是带有垃圾回收机制的,出现这种情况一般是由某些数据长期存活在内存中又不能被当成垃圾数据回收的原因造成的。后来就在各搜索引擎上进行了各种搜索,有说使用windebug分析dump,但需要大量时间琢磨,有人说是不是硬件问题,还有人说中毒了,最后找到了一款微软推出的CLRProfil 阅读全文
posted @ 2012-11-03 10:41
HackerVirus
阅读(207)
评论(0)
推荐(0)
摘要:
三十而立,从零开始学ios开发(二):Hello World!看到有那么多的回复和鼓励,有点受宠若惊的感觉,谢谢大家的支持,我会努力坚持把学习ios的过程记录下来,和大家分享。今天看了书的第二章,主要介绍了一下Xcode的使用方法和一些必要的说明,最后做了一个“Hello World!”的小程序,其实就是在屏幕上用一个Label显示“Hello World!”,一行代码都没有写,拖拖控件,改变一下Label字体大小颜色什么的,还是比较简单的,下面把这个过程写一下,至于xcode的使用说明就不在这里具体叙述了,反正到时候用到哪就介绍到哪里吧。1)启动Xcode选择“Create a new Xc 阅读全文
posted @ 2012-11-03 10:28
HackerVirus
阅读(239)
评论(0)
推荐(2)
摘要:
前面我写过7篇文章粗略的介绍了一下Rx及其方方面面。Rx是一个好东西不然我也不会费这么大的力气来写这些东西。本文打算初略的讲一下传统异步编程方法的缺点,以及为啥Rx能够给异步编程带来新的体验。最后我听译了一篇关于Reactive Extension的非常好的一篇演讲,并制作了中英文字幕。希望大家看完这篇文章之后能够对Reactive Extension能够有比较深的印象,并在实际编程中遇到比较纠结的异步编程问题了能够想到Rx。1. 传统异步编程存在的问题 异步编程比较困难,这一点老赵讲过很多次,在这里就我的理解有以下几点。1.1 异步编程的方式太多,缺乏统一性 在.NET下面做异步编程其实有很 阅读全文
posted @ 2012-11-03 10:27
HackerVirus
阅读(232)
评论(0)
推荐(0)
摘要:
上一篇列出了Perl中定义数组,对象的方式与JS的异同。这里继续补充数组,哈希的相关操作。一、数组可以对数组进行增删,插入。与JS不同的是这些函数都是全局的,JS则是挂在Array.prototype上。1,对数组尾部的操作pop(删除最后的元素)、push(在尾部添加)?123@goods= qw/pen pencil/;pop(@goods); # @goods 变成 (pen)push(@goods, 'brush'); # @goods 变为 (pen, brush)在Perl中,函数调用时小括号是可选的(视上下文而定),就象前面使用的print。以下是等价的?12po 阅读全文
posted @ 2012-11-03 10:03
HackerVirus
阅读(293)
评论(0)
推荐(0)
摘要:
注明:这篇文章一是当成学习笔记,二是给大家提供另一个快速理解学习Spring的参考。欢迎留言讨论,持续更新中~(该部分是Spring的面向切面编程AOP)第四章 通知Bean在软件编程中,散布于程序中多个地点的函数被称为“交叉事务”(日志管理、权限控制等)。从概念上来说,它们一般是与程序业务逻辑分开的,但经常却是直接嵌入其中的。把这些交叉事务与业务逻辑分离开正式面向切面编程(AOP)的作用所在,由此引入面向切面编程...Spring AOP的实现原理是:创建一个代理Bean,绑定通知者类(通知者类包含切面代码与切点),匹配相应的方法,在目标代码中嵌入执行切面的代码。1. 通过配置来详细说明下S 阅读全文
posted @ 2012-11-03 09:45
HackerVirus
阅读(167)
评论(0)
推荐(0)
摘要:
最近微软已经正式发布了windows 8操作系统,window操作系统的风格已经完全改变成了瓦片状的MetroUI。对于微软来说这是一个巨大的改变,而且所有微软的平台包括,桌面,平板,移动及其网站都使用这个UI风格。MetroUI包含了所有的现代web设计的特点,包括了,简化,基于网格的界面,并且富有连续性。 大家如果有兴趣可以看看这个界面设计说明(http://msdn.microsoft.com/en-us/library/windows/apps/hh465424.aspx)。如果你也喜欢Metro风格的话,这里我们收集了很多windows 8的MetroUI风格布局资源,希望大家喜欢! 阅读全文
posted @ 2012-11-03 09:44
HackerVirus
阅读(216)
评论(0)
推荐(0)