进程间通信小结
    
            
摘要:进程间通信小结近日与同事聊天提及到进程通信,还没搞过,于是就谷歌一下。发现实现进程通信的方法也不只一种,调用Windows API的,用IPC通道的,共享内存,利用Socket、配置文件、注册表等等。我后来尝试的只有IPC通道和Windows API。而用API的还有分同步的SendMessage和异步的PostMessage。目前来看用API的大部分都是用SendMessage。我也分别介绍一下吧。IPC通道用IPC通道其实是Remoting里的其中一种,这种方式用起来感觉有点像Web Service。首先定义一个类,这个类供通讯的目标进程调用。 1 public class IPC...
        
阅读全文
摘要:用C#写的JS代码生成器一接触FluentAPI,就被它的流畅编码和良好可读性吸引,园子里有很多介绍FluentAPI的文章,我也忍不住把自己最近写的一个小类库放在这里来补充一下流畅API的应用场景。 我写这个小型的类库来源于我昨天的发表的文章<asp.net webForm也可以这样用Ajax -- My Ajax Framework>一文后面网友“、Dark”对我的一个建议,是否可以用框架动态生成JS文件,这样直接类似AjaxPro的方式,仔细考虑感觉是很好的建议,于是就写了一下,结果发现向Response中写入一些JS数据流是多么乱,又很容易出错。我起初的代码是这样的:(为了
        
阅读全文
摘要:变化多端的列表集合大家都不陌生,但是实际应用确实有时候让人无从下手。其比数组最大的好处就是针对多变的动态的元素降服之功能!妙哉,笔者通过《C#高级编程》集合章节发现集合也会“博大精深,变化多端”的。但是有不同于书本,那么大一本厚书,让人敬而远之,特别一些些一套套理论的东西更是头大。笔者准备从集合的列表,队列,栈,链表,有序表,字典,等分系列发布。尽可呢避免大篇理论(核心的还是要强调的)。然后笔者自己做一些小实例,通过自己总结描述设计思想,结合代码实现,加以重点强调语句。最后配上运行结果!尽可能达到初学者有所悟吧。【列表】:针对列表适合于动态创建元素。下面结合多变的创建方法,多种方法添加元素,插
        
阅读全文
摘要:.NET中的静态与非静态忽略基础知识点梳理静态类 vs 普通类静态类与普通类的区别有以下几点:1)静态类无法实例化而普通类可以;2)静态类只能从System.Object基类继承;普通可以继承其它任何非static和非sealed类,但也只能继承一个类;3)静态类不能继承接口;普通类可以继承多个接口;4)静态类只能包含静态成员;普通类可以包含静态和非静态成员;5)静态类不能作为字段,方法参数和局部变量使用;普通类可以;静态类的意义:可以用静态类封装一组不与任何对象相关联的方法,如Math类,Console类。静态构造函数 vs 实例构造函数静态构造函数与实例构造函数的区别有以下几点:1)静态构
        
阅读全文
摘要:利用FarPoint Spread表格控件,构造Winform的Excel表格界面输入因有一个业务需要在Winform界面中,以类似Excel表格界面中录入相关的数据(毕竟很多时候,客户想利用成熟的软件体验来输入他们想要的东西),其中界面需要录入基础信息,列表信息,图片信息等,综合这些就是例如下面这样的界面效果。本文主要针对如何利用FarPoint Spread表格控件实现类似Excel界面丰富数据的保存及显示,以及在使用过程中的一些经验心得,希望对大家在开发Winform的Excel数据录入和显示方面的开发有一定帮助。从以上的界面分类可以看到,大致可以分为几个类型的数据,一个是基础字段数据,
        
阅读全文
摘要:C#启示录:尝鲜版本文从“基础”和“面向对象”两方面对“C#”基础知识进行初步的总结,总结过程中不免会出现一些问题,希望大牛们多多指点!基础: 表达式 数据:变量常量+数据类型 运算符:复制、算数、关系、条件、复合、其它 控制语句: 条件、循环、跳转、异常面向对象:从“类”和“特性”两方面进行分类,并结合“接口”“抽象类”之间的异同进行实质上的比较。 分类:C#
        
阅读全文
摘要:【C#|.NET】从细节出发 设计良好的分布式框架(二) 善用泛型 委托系列文章完成后 源码发布在我的GIT上https://github.com/dubing/文章仅代表个人观点 旨在交流 欢迎讨论背景 泛型 委托 反射 设计模式这些概念是大家最喜欢讨论 面试官也最喜欢问的,这里不炒冷饭。基于现在.net开发人员相当一部分都是基于业务开发,自己得不到充分的机会去思考去研究(或者说自己比较懒 不愿意去深入)。很多都是基于项目经理或者技术骨干提供的框架基础来开发或者设计业务模型。举个最简单的例子,单例和工厂模式是大家项目里最长用的,但是多少同学能用上面的知识自己整理出规范简洁统一的代码(相信大.
        
阅读全文
摘要:图片处理工具(C#)今天给大家介绍一个小图片处理工具,或许对有些人有帮助。原文地址:http://www.codeproject.com/articles/33838/image-processing-using-c先上张图吸引一下眼光,接下来大概讲讲都有什么功能。1、颜色滤镜颜色滤镜实现过程简单,我们来看看源码: public void SetColorFilter(ColorFilterTypes colorFilterType) { Bitmap temp = (Bitmap)_currentBitmap; Bitmap bmap...
        
阅读全文
摘要:这好像还是今年年初弄的一个东西,当时忘了是为了什么了,反正就是弄了这个手机QQ的协议,然后自己根据这开始写了一个简陋的QQ客户端,越来越有种想法,感觉该去看看C++了,对于C#这一年粗略的研究了很多东西,总结开来--码,不想继续这种想法,在整理完以前的东西之后,就去大踏步的开进C++ 这个是手机QQ,基于1.4版本的协议,经测试一切正常,能够实现的功能在代码里都有注释,还有webQQ和飞信,有想研究的可以自行去研究,感觉那两个虽然有实现,但不是想这个这样自己去拦截封包然后测试,在能发消息的那一刻,确实很兴奋,但是那两个都是基于别人研究的整理,只当是多加深了一下网络封包的理解 下面这个是用到的.
        
阅读全文
摘要:开源.NET下的XML数据库介绍及入门我的博客其他文章链接:【原创】关于.NET下开源及商业图像处理(PSD)组件【原创】.NET开源压缩组件介绍与入门【原创】C#开源轻量级对象数据库NDatabase介绍【转载总结】关于泛型基类的相关知识NewLife.Xcode组件资源目录Newlife.XCode对象容器与接口操作实例拥有自己的代码生成器—NewLife.XCode代码生成器分析拥有自己的代码生成器—Newlife.XCode模板编写教程1.前言有时候尝试未必是坏事,不断尝试新事务,才能发现新东西,增加阅历,才能更容易面对复杂的情况。今天给大家带来的是一个.NET下开源的XML数据库。比
        
阅读全文
摘要:C#实现简单的栈和队列C#提供了栈和队列,我们自己也可以尝试简单实现。而且这可以作为一个很好的面试题,主要考察c#基础、类的设计以及数据结构。根据不同的职位需求可以考察选择不同的考察难度和角度。4年前我第一次参加面试并进现在的公司,职位基本是公司的最低岗位了。当时面的题目就是:实现一个栈。简单的实现如下(考虑到顺序结构实现队列比较麻烦,采用链式结构):首先是结点类的实现: 1 // 结点类 2 // 注意应该使用泛型 3 public class MyNode<T> 4 { 5 // 存储的数据 6 public T Data 7 ...
        
阅读全文
摘要:爬虫开发(一)爬虫主要用来做数据采集,又名网络蜘蛛,内容网站很多就是用爬虫来抓取数据的。本系列(现在还不知道有几篇)旨在实现一个基本的爬虫程序(框架)。开发语言:C# 爬虫是要从源源不断的抓取到的页面中过滤出我需要的目标数据。既然要源源不断的抓取数据,那么我们就要有一个各个页面的URL的集合,去模拟访问这些URL,来分析返回的数据,从而再根据我们分析的HTML DOM结构获取到我们需要的数据。 URL的获取,通常,我们应该有一个Root节点,也就是根URL,然后就像树形结构一样去遍历他的各个子节点。说的形象一点,比如,一个网站的首页,上面有各个导航的URL1、URL2,URL3……也就是说..
        
阅读全文
摘要:鼠标拖拽效果的实现我所说的“鼠标拖拽效果”是指,鼠标在某个图标上按下,然后拖动,图标随着鼠标移动;这个效果的实现依赖控件的三个事件:Mouse_Down,Mouse_Move,Mouse_Up首先在Mouse_Down事件设置”拖动”标志,表明鼠标已经按下,将要移动;同时记录鼠标的起始位置然后在Mouse_Move事件计算鼠标的新位置,将图标设置到鼠标的位置,重新绘图最后在Mouse_Up事件关闭”拖动”标志,标志鼠标已经弹起实现如下:首先,在Visual Studio 2010创建一个“Windows窗体应用程序”项目,在Form上任意拖入一个控件(比如Button,Label等,为了看得明
        
阅读全文
摘要:携手Delphi,保护我们的.NET程序大家都知道,对于用.NET开发的应用程序而言,是很容易被反编译的。如果我们的应用程序中有一些比较隐秘的东西(如注册算法),我们是很不希望被其它人知道的,所以我们需要保护自己写的.NET程序。目前保护.NET应用程序主要还是靠混淆,并且也不乏一些很强大的混淆软件,本文主要是从另外一个方向下手,基于文件的保护,而不是代码层面的。话不多说,我们从实际操作开始,边操作我会边解释为什么是基于文件的保护。1、首先我们打开Visual Studio,建立一个解决方案 slnNProtect 。2、在解决方案中添加一个 Windows窗体应用程序项目 Client,这个
        
阅读全文
摘要:数据库文档CHM生成器(附文档原件与截图)背景: 在做项目的时候,当时的数据库文档是txt格式,后来晋升为doc格式。在开发过程中,依旧觉得不方便。后来用动软生成器,发现它可以生成html和doc格式的数据库文档,html用起来相对轻松些。有一天突发奇想,若是弄成CHM文档就好了。期间用过CHM工具一段时间。人是难以满足的,懒惰是永无止尽的。后来嫌弃操作太反锁,在博客园上一位牛人博客中学习了CHM编程。此后一直以代码的方式生成CHM文档。 现在我将它做成了一个相对通用的工具,支持SQL2005及以上,Oracle。易拓展,方便有需要的朋友。资源下载: 文档生成器 示例文档预览 源码(...
        
阅读全文
摘要:VS项目整体重命名工具,不再为重命名项目,命名空间,文件夹,相互引用关系而烦恼VS项目整体重命名工具 不再为项目重命名和修改命名空间而烦恼,简单几个字,但是开发加上测试大量项目,前前后后竟然跨越了1个月,汗。。。不过真正的开发时间可能2-3天的样子。一.介绍 1.虽然说我们平常不会经常出现项目重命名的情况,但是一旦出现,修改起来还是一项比较大的工程,并且还不一定修改完整。 2.当团队发展到一定程度的时候,基本上都有了自己固定的一些WEB/Winform开发框架和通用项目模版,这样就会出现修改项目名称,命名空间等结构的情况。 3.哒哒哒哒哒哒,不说第三了。亲,没了。@_@二.功能 1....
        
阅读全文
摘要:关于.NET下开源及商业图像处理(PSD)组件我的博客其他文章链接:【原创】.NET开源压缩组件介绍与入门【原创翻译】C#开源轻量级对象数据库NDatabase介绍【转载总结】关于泛型基类的相关知识NewLife.Xcode组件资源目录Newlife.XCode对象容器与接口操作实例拥有自己的代码生成器—NewLife.XCode代码生成器分析拥有自己的代码生成器—Newlife.XCode模板编写教程1 前言这篇博客的背景是:为了完成吉日嘎拉的“PSD文件损坏检测和图层检测”任务,查找了目前.NET各种开源的及商业的图像处理资料,在完成任务之后,进行总结。此次任务主要是用C#操作PSD(Ph
        
阅读全文
摘要:一次网络程序Debug过程起因最近在用C#实现一个安全通信软件,基本思想是发送方在发送数据时先对数据进行加密再发送,同样接收方从网络上收到数据后先对数据进行解密再把解密后的数据递交到上层应用。 实现方式是通过封装TCPCLient类的一些方法,向外提供封装好的安全SOCKET,自动完成数据的加解密。上层应用只需调用安全SOCKET进行原始数据的发送与接收并不用关心底层数据的加解密,使用方式与使用系统原始的SOCKET一样。 public int Send(byte[] data) { try { int len = 0; ...
        
阅读全文
摘要:利用反射从程序集dll中动态调用方法(附demo下载)在某些应用场景下我们需要动态调用某些程序集中的方法,例如某些大型产品中集成子产品、子项目或第三方产品的功能,有一种方式是通过数据持久化的形式来,数据持久化可能是用关系数据库或XML等存储程序集名称、命名空间、类名、方法名、参数类型及值等,这样通过反射结合业务逻辑就可以做出非常好的解耦的组件,这里暂时不考虑持久化和业务逻辑,只是单纯的引入一个demo来实现利用反射动态调用dll中的方法。主要步骤总结如下:1、获取程序集的文件名或路径,加载程序集; Assembly assembly = null; ...
        
阅读全文
摘要:WebAPI返回数据类型解惑最近开始使用WebAPI,上手很容易,然后有些疑惑 1.WebAPI默认返回什么数据类型,json还是xml? 2.怎么修改WebAPI的返回数据类型,我用IE浏览器请求返回的数据都是JSON格式的,用Firefox和Chrome返回数据格式是XML,然后自己用HttpWebRequest请求返回的是JSON格式的,我就纳闷了,咋同样的程序、同样的配置文件,输出数据格式为啥还带不一样的,就算你默认输出json或者xml都可以理解,咋还不同浏览器,输出格式不同,经过一番研总算搞懂了原因 经过测试发现使用IE浏览器返回的数据是json,而使用Firefox和Chr...
        
阅读全文