Delegate,Action<T>和Func<T>
摘要:定义一个委托的三种形式2012-12-31 13:17 by zhang carl, 131 阅读,1评论,收藏,编辑今天是2012年的最后一天,外面天气又冷,不想出门,在家闲着无聊,找了本书看看,随便翻了翻,下面跟大家分享一下,我的看书成果。随手一翻,看到了委托这一章节。委托这是一个非常有用,也非常重要的东东,用过的人一定深有体会。今天谈谈委托的三种定义形式,可能有点人会认为,声明委托不就是用:Delegate关键吗?我在今天以前也是这么认为的,但是ton通过 今天的看书,我了解到,其实在C#中声明委托不一定要用Delegate,还可以用Action<T>和Func<T&g
阅读全文
监控webservice信息
摘要:由于wince中对wcf的支持不是很好,所有还有需要用到传统的webservice,wince6.0和webservice通信的过程中,有时候在信号不是很稳定的情况下,容易出现“无法从传输连接中获取数据”的异常信息,因为在调试的过程中一直信号都很稳定,这就给发现原因提供了一定的困难,通过异常日志的记录,居然发现HTTP返回的状态是204(返回成功但内容为空),觉得很奇怪,明知我返回的内容不为空,但确返回此异常,并且这种提示信息让客户特别反感,带着这种疑问,于是想记录下客户端和服务器端webservice序列化成xml后在通信的过程中到底是发送了什么和接收了什么。记录webservice序列化成
阅读全文
C#中delegate对象Equals方法简析
摘要:.NET的基础类Object有一个Equals方法,这个方法用来比较两个对象是否相等,默认的实现是比较两个引用是否相同,相当于==操作符。对于不同的子类可能会有不同的实现,本篇就来研究一下delegate的equals方法。首先是msdn上给出的说明按照以下方式比较这些方法和目标是否相等:如果所比较的两种方法都是静态的且对同一类为同一方法,则这些方法被视为相等,这些目标也被视为相等如果所比较的两种方法都是实例方法且对同一个对象为同一种方法,则这些方法被视为相等,这些目标也被视为相等。否则,这些方法被视为不相等,这些目标也被视为不相等。 仅当两个调用列表具有相同顺序,并且两个列表的对应元素表示相
阅读全文
使用C#处理WebBrowser控件中的跨域问题
摘要:我们在做web测试时,经常会使用WebBrowser来进行一些自动化的任务。而有些网页上面会用IFrame去嵌套别的页面,这些页面可能不是在相同域名下的,这时就会出现跨域问题,无法直接在WebBrowser中获取到IFrame中的元素。下面来做个试验,自己写个页面嵌套一个百度的首页,然后在我们自己的页面上输入要查询的词,最后在百度上自动完成搜索。<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head> <meta char
阅读全文
使用.NET中的Action及Func泛型委托
摘要:委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储、传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基本上依赖于委托。C#的delegate关键字用于声明委托,它具有将声明委托类型映射到System.Delegate类的能力,System.Delegate类位于mscorlib.dll中,是.NET的基础核心类之一。使用delegate关键字声明一个委托,实质上创建了System.Delegate的派生类,因此委托类型并非结构体也不是其它类型,它是一个类。一个委托对象也就是一个类的实例。以下是De
阅读全文
Socket传输文件时进行校验(简单解决TCP粘包问题)
摘要:本小菜最近频繁使用Socket技术,遇到不少问题,有时候会心烦意乱,因为这问题并不是那么容易解决。就拿Socket传输文件来说,Socket无非就是TCP、UDP协议的封装,用它来传输文件,最正常不过了。但就是这么常用的东西,依然有非常多的麻烦事,而且没有太容易的解决方案。本小菜尝试用Socket传输图片,就遇到了如下伟大的粘包问题。先科普一下什么是粘包(确切的说是TCP传输粘包)。简单的说就是通过TCP协议发送了多条独立的数据,但接收的时候,有些数据不幸的合并成了一个。比如客户端向服务器发送两个命令:”Start”、”Parameter[x.x.x]”,第一个命令的含义是开始,第二个命令..
阅读全文
AsyncManualResetEvent
摘要:(译)Async同步基元,Part 1 AsyncManualResetEvent=============C#.Net 篇目录==============最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习惯,那么这系列翻译就是给“并行任务”封装同步基元对象。翻译资源来源《(译)关于Async与Await的FAQ》Async同步基元,Part 1 AsyncManualResetEventAsync同步基元,Part 2 Async
阅读全文
C#编写高性能网络服务器(源码)
摘要:C#编写高性能网络服务器(源码)最近有项目要做一个高性能网络服务器,决定下功夫搞定完成端口(IOCP),最终花了一个星期终于把它弄清楚了,并用C++写了一个版本,效率很不错。但,从项目的总体需求来考虑,最终决定上.net平台,因此又花了一天一夜弄出了一个C#版,在这与大家分享。一些心得体会:1、在C#中,不用去面对完成端口的操作系统内核对象,Microsoft已经为我们提供了SocketAsyncEventArgs类,它封装了IOCP的使用。请参考:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceve
阅读全文
异步编程:使用线程池管理线程
摘要:异步编程:使用线程池管理线程=============C#.Net 篇目录==============从此图中我们会发现.NET与C#的每个版本发布都是有一个“主题”。即:C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程。现在我为最新版本的“异步编程”主题写系列分享,期待你的查看及点评。异步编程:线程概述及使用异步编程:使用线程池管理线程异步编程:同步基元对象异步编程:并行任务Task异步编程:.NET1.0异步编程模型(APM)异步编程:.NET 2.0基于事件的异步编程模式(EAP)异步编程:.NET 4.5基于任务的异步编程模式(TAP)异步
阅读全文
websocket +C#
摘要:年后准本打算换工作了,闲暇无事接了个私活做个企业内部的用的信箱的页面, 客户要求用HTML5 做页面本来打算用ajax 做后来想想还是用Websocket 的吧 发现以前用的版本居然不能用了-。-! 很是无奈 ,于是谷歌求科普,原来草案改了。。很是无奈只有改了, 顺便看了下MSDN 上的异步 Socket 的例子, 便在其技术上修改了, 不废话了直接上代码WebSocket 类View Code1 public WebSocket(int numConnections, int receiveBufferSize) 2 { 3 this._maxC...
阅读全文
C# 事件的设计与使用
摘要:分类索引:C# 语言和运行时剖析--前言相关概念概念定义:事件是用于通知其他对象发生了本对象发生了特定的事情的类型成员。说明:事件是.NET类型成员中相对较为难以理解和实践的一个成员,因为事件的定义不是继承自基础的数据类型,而是对委托(delegate)的封装。所以,在了解事件之前,你需要先了解一点委托。应用场景:事件的应用场景非常广泛,其中最常见的场景是在各个前端控件中的大量触发事件设计。原因是因为意义:事件成员的使用有利于在程序中对面向对象原则的实现。例如类型的单一职责原则,控制反转原则。设想如果前端控件不能抽象出大量丰富的事件,那几乎不能将前端的UI元素与业务逻辑脱钩。程序必然高度耦合。
阅读全文
GO语言与C#之间的TCP通信小案例
摘要:Go语言是Google推出的一种全新的编程语言,具有简洁的设计、强大的并发能力以及美好的编程体验。我本人也才有两个多月的接触历史,但已经被GO的语言的简洁和强大的并发能力所吸收,也打算继续深入的学习,并应用到自己的工作之中。GO语言目前主要适用于服务端的开发,我参考了一些网络上的教程,做了一些TCP服务端的小练习,其中服务端用GO语言开发,客户端采用C#。具体参考如下的代码。效果图如下:服务端代码:package mainimport ("net""fmt")var ( maxRead = 25 msgStop = []byte("cmdSto
阅读全文
秋式广告杀手v2:广告拦截新功能与新思维(还能破墙)
摘要:相关文章:1:秋天新作品:秋式广告杀手,每年帮大伙多活7-8天!2:秋式广告杀手:广告拦截原理与杀手组织3:Web开发,浏览器通讯原理及流程那点事,你应该听说下V2.1版本的功能:1:屏蔽搜索引擎竞价广告。2:屏蔽国内常见站点的视频广告。3:去除ShareCode规则分享,增加自定义屏蔽网址。4:代理功能。A:默认离线模式会占用系统代理,如果你需要设置其它代理使用某些功能,可以在软件里设置。B:特殊使用环境A:公司屏蔽了某网站或QQ,但某些领导有权限上。想法子发一份给你领导,那你。。嘿嘿,就可以上了(默认81端口+领域的局域网IP)C:特殊使用环境B:国内行情要外出,要破墙。软件集成服务端+客
阅读全文
利用Google接口实现拼写检查
摘要:在开发一个国外外包项目时,客户提出一个需求,就是希望在文本框中输入单词,在保存前能够进行拼写检查,如果发现单词错误,可以提醒用户进行改正,为此,在结合参考了各种方案之后,选择了一个免费的方案,Google的一个API接口,https://www.google.com/tbproxy/spell?lang=,该接口提供多种语言的拼写检查,并能够返回相似的单词,并且幸运的是,在网上找到了一个开源的程序包googiespell,所以经过简单的包装处理,做成了一个拼写检查的小控件,使用起来就很方便了。实现原理在.net的页面上,在submit按钮提交之前,将页面的文本框内容,通过ajax的方式,采用代
阅读全文
Npoi.net
摘要:好几天没有写博客了,突然间有种写博客的冲动,虽然我的技术能力还是在努力的进步,但是和那些大牛比起来,我确实是小菜一枚,不过这并没有打击我的积极性,反而让我有种冲动,去超越他们。哈哈我记得在几天前我说过一个Lucene.net,是从java中借鉴过来的,现在我来说一下Npoi吧,当然这个也是从java借鉴过来的,不过这个语法没有Lucene.net那么恶心,Lucene.net是完全的java版,但是npoi.net最起码有点和.net联系在了一起。好东西都是java的,.net大牛们,你们在干嘛,开发一些优秀的东西吧,别总让java鄙视我们。好了,说说Npoi.net吧,Npoi是对Excel
阅读全文
多线程编程答案篇(C#和Java):解决pull和push模式在同一个程序中的冲突
摘要:大家应该对生产者消费者模式都耳熟能详了吧,在push模式上建立pull模式(或者说把push模式转换成pull模式)和生产者消费者模式一样,都是在并发环境里的设计模式。我今后会在博客里介绍更多的并发设计模式(不仅仅限于多线程并发设计模式),很多都将会是原创的。今天就先发个上周挑战题的参考答案,分析再稍后几天。我这里说的分析是指对模式的分析,源代码就不一一分析了,但你有问题并留了言的话,我是会答复的。C#的部分代码在上周的帖子里(C#多线程编程擂台赛:解决pull和push模式在同一个程序中的冲突),Java的答案就全在这里了。C#: PullOnPushReader.cs1 using Sys
阅读全文
代码整洁之道重构:身份证号码解析、验证工具
摘要:首先感谢原作者的代码: 《面向对象的15位、18位中国大陆身份证号码解析、验证工具》. 如果有版权问题,敬请告知。原代码给了我很好的起点,是的,这些代码都是玉,我在这只是再琢磨琢磨。即使如此,重构的过程依然很繁琐,文章也许会很长,每一次的重构都需要把全部代码显示一遍。知易行难, 重构是个动态过程, 不那么容易呈现出来,需要点耐心,慢慢看啊。1 - 转化为C#代码,增加第一个测试是的,这不是必须的,可以说是我自己的原因,不会Java。但是,你也可以看作是一种重构的场景,不是吗?更改的代码就不再放了,比较简单,与C#和Java的区别有关,留个连接SocialID.cs。可是,我的测试代码却很重要。
阅读全文
C#短彩信模块开发设计
摘要:准备从以下几个方面简单的谈谈短彩信模块的实现:[短彩信]C#短彩信模块开发设计(1)——架构(http://www.cnblogs.com/CopyPaster/archive/2012/12/07/2806776.html)[短彩信]C#短彩信模块开发设计(2)——配置(http://www.cnblogs.com/CopyPaster/archive/2012/12/10/2811626.html)[短彩信]C#短彩信模块开发设计(3)——协议(http://www.cnblogs.com/CopyPaster/archive/2012/12/12/2814918.html)[短彩信]C#
阅读全文
基于HttpWebRequest的通用请求和响应处理
摘要:基于HttpWebRequest的通用请求和响应处理作者:Tony Qu最近基于C#写了个Spider框架,所以有了此文的心得,虽然这话题也不算什么新话题了,但我还是想写一篇这样的文章,因为我发现这玩意真的写起代码来还是有很多细节的,要做到通用还是有一定难度的。当然,本文会略过最基本的一些东西,如GET/POST方式,UserAgent等,这不是本文要讨论的重点。我使用过程中遇到的最大挑战是以下几个问题:a. 如何处理chunked的页面b. 如何处理gzip过的页面c. 如何自动判断文本编码d. 如何使用CookieContainer我们一个一个来,先从第一个开始。chunked是常用的we
阅读全文
CodeSharp.EventSourcing框架介绍-如何实现异步事件订阅
摘要:上一篇介绍了CodeSharp.EventSourcing框架的概况和一个简单的也是最常用的使用场景,本篇文章想介绍一下如何实现异步事件订阅。异步事件订阅是指:领域层中一个事件发出来后,事件订阅者的响应处理不是在同一个线程中同步执行,而是该事件会被放在消息队列,然后由另外一个线程从队列取出该事件消息,然后响应处理。由于消息的发出和处理不是在同一个线程和事务中实现,所以我们叫做异步事件订阅或处理。本文先简单介绍一个例子,然后讲解背后框架实现的思路。一般涉及到异步处理的,最好放在两个端点处理,一个端点发出事件消息,另一个端点响应处理事件消息;发出事件消息的端点往队列中发送消息,处理事件消息的端点从
阅读全文