06 2011 档案

摘要:http://www.360doc.com/content/10/0310/22/959016_18292002.shtml教程。1. 过滤source的写法:ip.src eq 192.168.1.112如果是并列,就是ip.src eq 192.168.1.112 andip.src eq 192.168.1.112 阅读全文
posted @ 2011-06-30 16:14 董雨 阅读(236) 评论(0) 推荐(0)
摘要:关注C++/Java/C#技术, 致力于安防监控/移动应用/WEB方面开发http://www.cnblogs.com/peterzb/category/55905.html(张辰)socket 即时通信,数据库,c#,javahttp://www.cnblogs.com/zc22/archive/2010/06/27/1766007.html阿良.net ADO.net , VisualStudio ,WinForm,算法,Ajax,数据库,多线程,设计模式等http://www.chenjiliang.com/Article/Default.aspx?TypeID=73网名:webabcd 阅读全文
posted @ 2011-06-28 13:57 董雨 阅读(188) 评论(0) 推荐(0)
摘要:http://dotcpp.iteye.com/blog/599268本文在别人的文章基础上(http://foxhack.blog.51cto.com/96963/25908),自己稍加改动,希望对初学者有所帮助。老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~一:select模型老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~在这种情况下,"下楼检查信箱"然后回到楼上耽误了老陈太多的时间,以 阅读全文
posted @ 2011-06-28 12:52 董雨 阅读(229) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518148“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型。要记住的一个基本准则是,假如要为Windows NT或Windows 2000开发高性能的服务器应用,同时希望为大量 阅读全文
posted @ 2011-06-28 10:36 董雨 阅读(211) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/795497Socket中可以使用select设置连接超时,需要先将socket设置为非锁定模式,这样,在connect时,才会立马跳过,同时,通常也会产生一个WSAEWOULDBLOCK错误,这个错误没关系。再执行select则是真正的超时。C++代码WSADATAwsd;SOCKETcClient;intret;structsockaddr_inserver;hostent*host=NULL;if(WSAStartup(MAKEWORD(2,0),&wsd)){return0;}cClient=socket(AF_IN 阅读全文
posted @ 2011-06-28 10:34 董雨 阅读(319) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/513272sqlite3封装类sqlite3_wrapper.rar(195.4 KB)评论1 楼SpitFire2009-11-10引用ado.net风格的,这个比较推荐,封装得比较好http://int64.org/projects/sqlite-c-wrapperado风格的http://www.codeproject.com/KB/database/CppSQLite.aspx 阅读全文
posted @ 2011-06-28 10:33 董雨 阅读(226) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518134OVERLAPPED结构主要用于异步I/O操作,其数据结构定义如下:typedef struct _OVERLAPPED { DWORD Internal; // 系统保留,存放系统设置的状态 DWORD InternalHigh; // 系统保留,存放被传输数据的长度 DWORD Offset; // 指定文件的位置,文件位置是相对文件开始处的字节偏移量。 DWORD OffsetHigh; // 指定开始传送数据的字节偏移量的高位字 HANDLE hEvent; // 标识事件,数据传送完成时把它设为信号状态}OVE 阅读全文
posted @ 2011-06-28 10:31 董雨 阅读(306) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518135在windows平台构建网络应用,必须了解socket I/O模型。windows提供了选择(select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I /O(overlapped I/O)和完成端口(completion port)。一、客户端代码C++代码#include"stdafx.h"#include<WINSOCK2.H>#include<stdio.h>#pragmacomment(lib,"ws2_32. 阅读全文
posted @ 2011-06-28 10:30 董雨 阅读(189) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518141用异步选择模型,应用程序可在一个套接字上,接收以Windows消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。服务器端代码:C++代码//writebylarry//2009-8-20//ThisisaserverusingWSAAsyncSelectmodel.#include"stdafx.h"#include<winsock.h>#include<tchar.h>#definePORT5150#defineMSGSIZE10 阅读全文
posted @ 2011-06-28 10:29 董雨 阅读(230) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518142WSAEventSelect和WSAAsyncSelect模型类似,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。对于WSAAsyncSelect模型采用的网络事件来说,它们均可原封不动地移植到事件选择模型上。在用事件选择模型开发的应用程序中,也能接收和处理所有那些事件。该模型最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递至一个窗口例程。服务器端代码:C++代码//writebylarry//2009-8-20//ThisisaserverusingWSAEventSelectmode 阅读全文
posted @ 2011-06-28 10:26 董雨 阅读(284) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518146Winsock2的发布使得Socket I/O有了和文件I/O统一的接口。我们可以通过使用Win32文件操纵函数ReadFile和WriteFile来进行Socket I/O。伴随而来的,用于普通文件I/O的重叠I/O模型和完成端口模型对Socket I/O也适用了。这些模型的优点是可以达到更佳的系统性能,但是实现较为复杂,里面涉及较多的C语言技巧。例如我们在完成端口模型中会经常用到所谓的“尾随数据”。一、用事件通知方式实现的重叠I/O 模型C++代码//writebylarry//2009-8-20//Thisisas 阅读全文
posted @ 2011-06-28 10:25 董雨 阅读(299) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/twodays/archive/2011/06/09/whats-new-in-mango-for-dev-4.html偷懒了一个星期了,还是把作业补完的好。今天是我们“你不可不知的Mango — 开发者篇”的最后一个章节。在前边的一些章节(一、二、三)中我们已经给大家介绍了有关Mango中新增加的一些新功能,今天我们就开始带领大家进入真正的Mango之旅。在开始安装Mango的SDK之前,我们需要提醒大家的是虽然Mango的开发工具(WPDT 7.1 Beta)和7.0的兼容,但是千万不要将它安装在您的生产环境机器上以免造成不必要的损害。Mang 阅读全文
posted @ 2011-06-22 14:34 董雨 阅读(202) 评论(0) 推荐(0)
摘要:http://www.wpmind.com/dev/2011/06/dev/2011/05/31/whats-new-in-mango-for-dev-3.html在前两节《你不可不知的Mango》中我们介绍了Mango中新增的Sensor API、多任务处理机制和Live Agents。今天我们看看剩下的一些内容。4. Framework & RuntimeSockets无疑是许多网络应用(尤其是联网类游戏)所迫切需要的一个功能,但是很遗憾在Windows Phone 7的SDK中并没有提供这部分的接口。你要想访问网络资源只能通过HTTP协议来做。对于没有实时性要求的应用还好,对于游 阅读全文
posted @ 2011-06-22 14:31 董雨 阅读(214) 评论(0) 推荐(0)
摘要:在上一篇《你不可不知的Mango — 开发者篇(1)》中我已经给大家介绍了在Mango中新的Sensor API和多任务处理机制,今天我们接着聊聊Live Agents。3。Live Agents首先我们看看Local Live Tiles。Live Tiles是Windows Phone 7提出来的一个概念,用户可以将多种内容固定在主界面上。例如程序的快捷方式,音乐专辑,网页等等。由于你可以通过Push Notification机制来动态的更改Tiles上的数字、背景图片以及文字。所以称之为Live Tiles,也就是希望给用户带来一些“活”的感觉,而不止是简单的快捷方式。但是更新这个Til 阅读全文
posted @ 2011-06-22 14:30 董雨 阅读(215) 评论(0) 推荐(0)
摘要:http://www.wpmind.com/dev/2011/05/26/whats-new-in-mango-for-dev-1.html昨天微软对外公布了Windows Phone的下一个代号为Mango的重要更新的更多细节,并在同时也发布了Mango的开发工具,Windows Phone Developer Tools 7.1(Beta)。本文将从开发者角度简单谈谈Mango带来哪些改变。What’s New首先让我们从上面这张图片来简单的看看Mango中都有啥让你心动不已的新玩意儿呢?1。Sensor API:增强了的各种传感器API。首先,在Mango中终于增加了指南针传感器的API 阅读全文
posted @ 2011-06-22 14:29 董雨 阅读(274) 评论(0) 推荐(0)
摘要:http://www.wpmind.com/dev/2011/06/news/2011/04/14/deep-in-mango.htmlMIX11大会上抛出的Mango的一则又一则消息已经让你眼花缭乱了吧!嘿,是的,在Mango中加入了非常多的新特性,让我们从Joe Belfiore的一张PPT说起仔细的刨析一下Mango中都带来了些啥好东西吧。这张PPT列出了部分在Mango中得到增强的内容,不过不要被这些密密麻麻的单词吓到哦~1. Push Notifications:推送通知是微软提供的一种从服务器端向Windows Phone手机主动推送消息的机制。Push Notification有 阅读全文
posted @ 2011-06-22 14:15 董雨 阅读(319) 评论(0) 推荐(0)
摘要:评论:你必须知道的Windows Phone 7开发http://www.phonebeta.com/thread-642-1-1.html本文首发自www.WPMind.com:http://www.wpmind.com/dev/2010/03/29/what-you-should-know-for-windows-phone-7-development.html.windows phone论坛托管代码是你唯一的选择对于.普通的ISV和开发者来说,托管代码将是唯一的选择。你将不能使用c++来编写程序,同时,也不能对已有的.native dll或者系统函数进行P./Invoke调用。也就是说, 阅读全文
posted @ 2011-06-22 10:53 董雨 阅读(191) 评论(0) 推荐(0)
摘要:Posted on 2010-06-01 19:48 被遗弃的小指 http://www.cnblogs.com/twodays/archive/2010/06/01/Windows_Embedded_Compact_7.html6月1日,儿童节,或许对我们是一个已经非常遥远的日子。但是对于嵌入式的开发人员来说,它是一个大日子,因为今天在台北的COMPUTEX大展上 微软正式公布了其嵌入式产品线最新的一员,Windows Embedded Compact 7。Windows Embedded Compact 7的前身就是家喻户晓的Windows Embedded CE(简称WinCE)系统了, 阅读全文
posted @ 2011-06-22 10:20 董雨 阅读(201) 评论(0) 推荐(0)
摘要:本文为DevDiv移动开发社区创始人吴学友在Windows Phone 7发布之际写得了一篇观感文章。从Windows Phone 7与对比Windows Mobile6.5到Windows Phone 7与对比主流操作系统,详尽描述Windows Phone 7的优缺点,进步与退步。从3月份的CTP(Community Technical Preview,社区技术预览版本),到4月的CTP Refresh,然后是7月的Beta版本,正式版本的Windows Phone 7的SDK终于和大家见面了。下面我就从开发者的角度谈谈Windows Phone 7:首先,从对比Windows Mobil 阅读全文
posted @ 2011-06-22 10:15 董雨 阅读(200) 评论(0) 推荐(0)
摘要:MSDN for 2010的那些麻烦事 Visual Studio 2010正式版己于4月13日开放公众下载。我迫不及待地在自己的电脑上安装并试用,与RC版本相比,新版变化不大,安装也顺利。但没想到,为了将我原先在RC版本中下载的高达3.25G的MSDN文档在正式版中“复用”,却弄得我焦头烂额! 微软在VS2010中将随机文档MSDN Library换成了Web版,想必有他的考虑,但就我这一普通用户看来,实在是一个退步。 其原因是——Web版的MSDN Library 太难用了! (1)最大的缺点是没有索引。 (2)左侧的目录树各级别缩进太小,很难分清当前所看的文档在目录树的级别 (3)搜索功 阅读全文
posted @ 2011-06-22 10:09 董雨 阅读(180) 评论(0) 推荐(0)
摘要:.net用工厂模式开发多数据库连接类http://www.diybl.com/ http://www.cublog.cn/u1/38200/showart_1982199.html用工厂模式开发多数据库连接类,是工厂模式最好的应用方式,也是很多初级使用设计模式的程序员都会涉及到的,下面是具体代码:A、创建一个类库,里面有如下这些类一、设计一个抽象类using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Configuration;//工厂模式连接数据库names 阅读全文
posted @ 2011-06-16 21:55 董雨 阅读(523) 评论(0) 推荐(0)
摘要:CDMA猫用AT命令发中文短信(C#)http://www.cublog.cn/u1/38200/showart_2211241.htmlCDMA猫,只能发文本短信。发中文短信居然是UNICODE而不是PDU,无法在超级终端里输入。只能写程序。网上这个问题谈论地比较多,做起来比较累,还偶尔会出乱码。还是将C#的成功代码帖一下吧。转载请注明来源void SendCHNSms(string content,string phone){ //中文CDMA发送,UNICODE编码字节 byte[] b = Encoding.BigEndianUnicode.GetBytes(content); //C 阅读全文
posted @ 2011-06-16 21:51 董雨 阅读(1388) 评论(0) 推荐(0)
摘要:下面是 GPS命名空间里面 的 NMEAProtocol 的这个类的代码 using System;using System.Collections.Specialized;using System.Text;using System.Text.RegularExpressions;using System.IO;namespace GPS{public class NMEAProtocol {private const int NP_MAX_CMD_LEN =8;// maximum command length (NMEA address)private const int NP_MAX_ 阅读全文
posted @ 2011-06-16 11:32 董雨 阅读(491) 评论(0) 推荐(0)
摘要:这几天在搞wm上面的gps 想获取到卫星数据 找了些资料 大概的就是这两种方式:一,传统的gps编程方式 通过串口读取到gps设备的数据,解析,处理二,应用windows mobile 提供的gpsid函数库下面试 gps传统编程1 串口通信,首先打开gps设备的port并接收数据命名空间using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.IO.Ports;u 阅读全文
posted @ 2011-06-16 11:31 董雨 阅读(705) 评论(0) 推荐(0)
摘要:Notification此类提供 Windows CE 通知功能的托管实现。只有 Pocket PC 上支持此类。您可以创建通知,然后使用 Visible 属性来根据需要显示它们。InitialDuration 属性设置消息气球最初显示的时间。如果将 InitialDuration 设置为零,并将 Visible 设置为 true,则消息气球不会显示,但是标题栏中会有它的图标,单击可以重新激活它。每当显示或隐藏气球时,无论是使用 Visible 属性以编程方式进行此操作,还是通过用户交互方式进行此操作,都会发生 BalloonChanged 事件。除了纯文本之外,您还可以在消息气球中创建 HT 阅读全文
posted @ 2011-06-16 11:26 董雨 阅读(279) 评论(0) 推荐(0)
摘要:额,就直接说了,前面就不废话了!(装好之后到论坛下载软件吧 http://meego.info/bbs)准备:intel 电脑(原则上说)AMD也可以试一下,官网上说只有酷睿2,阿童木,可以装。但我的X41t 很久以前的机子了,完美运行!!U 盘 2G 以上!软件:Win32DiskImager.exe(windows下)下载地址:http://www.srui.cn/soft/12686.htm 应该可以下 下不了的 直接Google!!!然后下 meego v 1.0下载地址 http://meego.com/downloads/releases/1.0/meego-v1.0-netboo 阅读全文
posted @ 2011-06-16 11:23 董雨 阅读(556) 评论(0) 推荐(0)
摘要:AT指令介绍及用法AT 指令AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本 阅读全文
posted @ 2011-06-16 11:22 董雨 阅读(479) 评论(0) 推荐(0)
摘要:在Windows Mobile窗体上,有“OK”和“X”两种形式按钮。 1、 在Form的属性里,设置“MinimizeBox=false”,则窗体显示”OK”,点击该按钮窗体销毁并退出; 2、设置“MinimizeBox=true”,则窗体显示”X”,点击该按钮,窗体隐藏但不销毁; 但有时我们希望在点击“X”按钮的时候能够销毁窗体,而不是隐藏该窗体,那么如何实现呢? 首先,点击“X”按钮的时候,并不激发窗体的closed方法,所以我们不能在该方法里将窗体销毁,但我们可以通过另外一种途径实现。 当点击“X”按钮的时候,该窗体隐藏,所以该窗体将失去焦点,这时,有两种事件将发生: 1)LostFo 阅读全文
posted @ 2011-06-16 11:19 董雨 阅读(162) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/aoyihuashao/archive/2010/01/18/1650865.html0 Makefile概述--------------------------------------------------------------------------------什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 阅读全文
posted @ 2011-06-16 10:37 董雨 阅读(303) 评论(0) 推荐(0)
摘要:http://hi.baidu.com/wgscd/blog/item/401bcf08fbc035810a7b8292.htmlwindows mobile 播放声音C#2011-02-22 17:12Recently I created a Smart Device application called SightReader. There is a virtual piano keyboard in it and I need to play sound when the user clicks a key on keyboard. I was trying to use the Wav 阅读全文
posted @ 2011-06-15 16:34 董雨 阅读(522) 评论(0) 推荐(0)
摘要:http://www.smgblog.cn/article/mywork/74.htm为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。目前在数据链路层广泛使用了循环冗余检验CRC(Cylic Redundancy Check)的检错技术。CRC运算的文字描述这里不再介绍。用C#语言编写的CRC-16编码程序如下:程序界面:程序代码(算法部分)://C#代码,genPoly为生成多项式(16进制)private int genPoly = 0x18005;private void byteFCS(ref int FCS, char ch){FCS ^= (ch< 阅读全文
posted @ 2011-06-14 14:28 董雨 阅读(316) 评论(0) 推荐(0)
摘要:由于 Windows 窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用和死锁的情况。于是在调试器中运行应用程序时,如果创建某控件的线程之外的其他线程试图调用该控件,则调试器会引发一个 InvalidOperationException本文用一个很简单的示例来讲解这个问题(在窗体上放一个TextBox和一个Button,点击Button后,在新建的线程中设置TextBox的值)解决办法一: 关闭该异常检测的方式来避免异常的出现经过测试发现此种方法虽然避免了异常的 阅读全文
posted @ 2011-06-14 10:10 董雨 阅读(233) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/sunrack/articles/1077551.html#1861535一、LINQ查询符列表Query Operators Meaning in Life from, in Used to define the backbone for any LINQ expression, which allows you to extract a subset of data from a fitting container. where Used to define a restriction for which items to extract fr 阅读全文
posted @ 2011-06-13 22:19 董雨 阅读(211) 评论(0) 推荐(0)
摘要:API与C#数据结构类型对应关系表 API与C#的数据类型对应关系表 API数据类型类型描述C#类型API数据类型类型描述C#类型WORD16位无符号整数ushortCHAR字符charLONG32位无符号整数intDWORDLONG64位长整数longDWORD32位无符号整数uintHDC设备描述表句柄intHANDLE句柄,32位整数intHGDIOBJGDI对象句柄intUINT32位无符号整数uintHINSTANCE实例句柄intBOOL32位布尔型整数boolHWM窗口句柄intLPSTR指向字符的32位指针stringHPARAM32位消息参数intLPCSTR指向常字符的32 阅读全文
posted @ 2011-06-13 22:18 董雨 阅读(692) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/sunrack/articles/1077173.html#1999991LINQ查询符是用来调用System.Linq.Enumerable 定义的扩展函数的速记符号。LINQ表达式在编译时,编译器会将查询操作符转换为对 System.Linq.Enumerable 类型中若干函数的调用(或者其他类型)。这些函数大部分都需要代理作为参数,特别的是,定义在 System.Core.dll 中的 泛型代理 Func<>,比如下面的几个Enumerable 成员函数:// Overloaded versions of the Enumera 阅读全文
posted @ 2011-06-13 22:16 董雨 阅读(242) 评论(0) 推荐(0)
摘要:1.1 本教程的学习内容 在本教程中,你将学会如下内容:如何创建一个ASP.NET MVC的工程。 如何创建ASP.NET MVC的控制器(controller)与视图(view)。 如何使用Entity Framework code-first 范例来创建一个新的数据库。 如何获取和显示数据。 如何编辑数据并且进行数据的有效性验证。 1.2 创建工程 如果要创建一个ASP.NET MVC3的工程时,首先运行Visual Web Developer 2010 Express(本教程中简称“Visual Web Developer”),并且在起始页(start page)中选择“新建项目”。Vi 阅读全文
posted @ 2011-06-11 16:07 董雨 阅读(202) 评论(0) 推荐(0)
摘要:http://blog.sina.com.cn/s/blog_6ad539a90100orxv.html本教程主要介绍ASP.NET MVC 3的一些基本知识,以及如何使用Microsoft Visual Web Developer Express来建立一个ASP.NET MVC 3的Web应用程序。在开始之前,请确保你已经安装了如下几个开发工具,这些开发工具可以使用Web Platform Installer来统一进行安装。 Visual Studio Web Developer Express with SQL ExpressASP.NET MVC 3SQL Management Stud 阅读全文
posted @ 2011-06-11 16:06 董雨 阅读(149) 评论(0) 推荐(0)
摘要:■ Task类相关的时间点 Task类可以被用来执行多个处理。这个时候,想知道的时间点一般有两个。一个是单独一个任务结束的时刻。还有一个是全部任务结束的时刻。这两个时间点可以很容易地被确定。 Task.WaitAny方法与Task.WaitAll方法的参数是一个或多个Task对象。这两个方法的功能分别为返回单个任务结束的时刻与返回所有任务结束的时刻。使用这两个方法,可以很简单的书写代码来创建多个任务并等待它们结束的时刻。task3.cs using System;using System.Threading.Tasks;class Program{ static void Main(strin 阅读全文
posted @ 2011-06-11 16:03 董雨 阅读(305) 评论(0) 推荐(0)
摘要:PLINQ为查询的并行处理提供了可能性。要并行处理查询操作只要插入AsParallel方法就可以了。 但是问题就出现在并行本身。也就是说,如果没有很好的关于同步的设计的话,出来的数据的顺序可能是乱的,没有经过排序的。因为并行执行的时候,可以同时处理很多数据,但并不确保哪些数据是首先处理结束的。所以,象下面的例子中,如果在查询表达式中插入AsParallel方法,查询出来的结果有可能会发生改变。不经过并行处理的查询操作 using System;using System.Linq;using System.Threading.Tasks;class Program{ static void M. 阅读全文
posted @ 2011-06-11 16:03 董雨 阅读(295) 评论(0) 推荐(0)
摘要:■ Task类的基本使用方法 Task类为把线程类进行改良,使之更简便,使用起来更加容易的类。因此,虽然功能相似,但属于两个概念,使用方法也不相同。 要想利用Task类,开始任务,只要调用Task.Factory.StartNew方法就可以了。 task1.cs using System;using System.Threading.Tasks;class Program{ static void Main(string[] args) { // 子任务 var task = Task.Factory.StartNew(() => { for (int i = 0; i < 100 阅读全文
posted @ 2011-06-11 16:02 董雨 阅读(423) 评论(0) 推荐(0)
摘要:这里有一张单色(2值)的PNG的图片(1024*1024)。因为是单色,所以只有黑跟白两个值(实际上使用了只有黑跟白两色的8位PNG格式的图片文件)。到底,哪些像素是黑色的,我们编写一个程序来查点一下。同时用它来进行单任务和2~4任务分别进行查点时性能的比较。比较单任务与多任务 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Threading.Tasks;class Program{ public static IEnumerable<Co 阅读全文
posted @ 2011-06-11 16:01 董雨 阅读(223) 评论(0) 推荐(1)
摘要:迄今为止,使用多内核的多核计算机还并没有得到广泛的应用。尽管在高端领域,高端服务器的世界里,应用着很多多核计算机系统,但在广大的低端世界里,还是使用着单核或双核。但是另一方面,在笔记本电脑的世界里,也出现了多核笔记本。 “尽管多核时代还只是对未来的预测,但不再是空想了。已经一点点地逐步靠近我们这个世界了”。 当然,还有很多单核,单处理器的计算机被利用着,但这并不单纯是C#等开发语言的应用环境。今天,主CPU的内核数量的增加趋势越来越明显,所以我们已经可以预见广大用户使用多核计算机时代的即将到来,同时以此为目标,开始我们现在的程序开发了。 首先,让我们看一下现实情况,因为只使用到双核,所以对内核 阅读全文
posted @ 2011-06-11 16:00 董雨 阅读(261) 评论(0) 推荐(0)
摘要:■ 真的活用了内核吗? 对于想确定是不是真正地活用了内核的人,准备了如下的验证程序。这个程序为,把简单循环所花费的时间分两次进行计算。但是,第一次使用传统方法,第二次使用并行方法。验证程序 using System;using System.Threading.Tasks;class Program{ private const int count = 1000000000; private static void taro() { Console.WriteLine("Taro is busy now"); for (int i = 0; i < count; i+ 阅读全文
posted @ 2011-06-11 16:00 董雨 阅读(187) 评论(0) 推荐(0)
摘要:■ dynamic类型与匿名类型 匿名类型是指没有名字,也没有单独定义的类型。严格说来,该类型还是有名字的,只是在C#的源代码中我们看不到这个名字。但是,在4.0版本之前,匿名类型可以被有效利用的范围并不是很大。因为要想在一个方法之外要利用匿名类型并不是不可能的,但是要想在方法之外利用匿名类型,就一定要使用反射。 但是,dynamic类型把这个问题很容易地就给解决了。如果作为dynamic类型来返回,访问它的内容就很简单了。访问使用dynamic类型与匿名类型的对象 using System;class Program{ private static dynamic GetObject() { 阅读全文
posted @ 2011-06-11 15:59 董雨 阅读(327) 评论(0) 推荐(0)
摘要:■ dynamic类型 C#从1.0版开始,就可以即使不知道一个对象的类型,在编译时也可以动态访问这个对象的信息。只要使用反射就可以了。使用反射访问对象的成员信息 class A{ public readonly string MyName = "陆凌牛"; public static object GetObjectA() { return new A(); }}class Program{ static void Main(string[] args) { object a = A.GetObjectA(); var name = a.GetType().GetFiel 阅读全文
posted @ 2011-06-11 15:53 董雨 阅读(258) 评论(0) 推荐(0)
摘要:两个问题是:◆写程序时少了智能感知;◆运行程序时速度变慢(反射)。今天看完New features in CSharp 4.docx才恍然明白,趁着没事,把东西整理一下,希望能对暂时还不明白dynamic有什么用的朋友提供一些参考。当然,由于本人才疏学浅,不保证所有的观点都是正确的,希望大家用辩证的眼光来看这篇文章,如有错误之处,请大伙批评指正。言归正传,dynamic关键字用于声明一个动态对象,然后通过该动态对象去调用方法或读写属性。在使用C# 2.0或3.0的时候,如果一个对象需要在运行时才能确定,并且没有接口和基类方面的信息,那我们一般使用反射技术来调用这个未知对像的方法或属性,而C# 阅读全文
posted @ 2011-06-11 14:42 董雨 阅读(360) 评论(0) 推荐(0)
摘要:<!--[endif]--> .NET 4.0引入了一个新概念,叫动态绑定。所谓绑定,就是对类型、成员和操作的解析过程。动态绑定意味着与编译器无关,而与运行时有关。 <!--[endif]--> 一、 基本概念<!--[endif]-->C# 4.0之前的变量声明,在编译时已经决定其类型,虽然C# 3.0提供了var关键字来声明隐式类型,但用var声明的变量终究逃不过编译器的法眼。用dynamic声明变量的好处是,编译器在编译时并不知道它引用对象的确切类型,而要到运行时才知道。因此,我们可以通过动态绑定在运行时来操作一些类型的属性、方法等(如与IronPyt 阅读全文
posted @ 2011-06-11 14:40 董雨 阅读(393) 评论(0) 推荐(0)
摘要:【C#4.0】中的dynamic与var的区别注意:var与dynamic这两个关键字,只是看起来很相 似,仅此而已!var表示“变量的类型是在编译时决定的”,但是dynamic表 示“变量的类型是在运行时决定的”。因此,dynamic与var具有截然不同的含义。var让 你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型。dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行 时再推断不迟。var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参 数类型定义成var。dynamic就没有这些局限了。dynamic类型并没有跳过类型 阅读全文
posted @ 2011-06-11 14:39 董雨 阅读(375) 评论(0) 推荐(0)
摘要:在C#2.0中引入了匿名方法,允许在期望出现委托的时候以“内联”的代码替代之。尽管匿名方法提供了函数式编程语言中的很多表达能力,但匿名方法的语法实在是太罗嗦了,并且很不自然。Lambda表达式为书写匿名方法提供了一种更加简单、更加函数化的语法。实际上Lambda表达式的本质是匿名方法,也即是当编译我们的程序代码时,编译器会自动帮我们将Lambda表达式转换为匿名方法。20.5.1创建Lambda表达式Lambda表达式的书写方式是一个参数列表后跟“=>”记号,然后跟一个表达式或一个语句块,即Lambda表达式的语法格式为:参数列=>语句或语句块Lambda表达式例子如下所示:del 阅读全文
posted @ 2011-06-10 16:04 董雨 阅读(198) 评论(0) 推荐(0)
摘要:C# 3.0新功能• 隐式类型的本地变量和数组• 对象初始值设定项• 集合初始值设定项• 自动实现的属性• 匿名类型• 扩展方法• 分部方法定义• Lambda 表达式隐式类型的数组var a = new[] { 1, 10, 100, 1000 }; // int[]var b= new[] { "hello", null, " world" }; string[] 型的数组使用方括号var c = new[]{new[]{1,2,3,4},new[]{5,6,7,8}};var d = new[]{new[]{"Luca", &q 阅读全文
posted @ 2011-06-10 16:04 董雨 阅读(200) 评论(0) 推荐(0)
摘要:20.1隐式类型在C#3.0中增加了一个变量声明var,这个声明和JavaScript的var类似,但也有不同。相同之处是它可以用var来声明任何类型的局部变量;而不同之处在于它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。20.1.1隐式类型局部变量的声明与使用在C# 3.0中,引进了一个新的关键字叫做var。var允许你声明一个新变量,它的类型是从用来初始化器变量的表达式里隐式的推断出来的,即在声明时,你不需要给它定义类型,它会根据它的初始化器表达式来推断出它的类型。因此,我们称它为隐式类型。如你可以这样来声明变量:vari = 10;//声明一个局部 阅读全文
posted @ 2011-06-10 16:03 董雨 阅读(186) 评论(0) 推荐(0)
摘要:上面我们向读者讲解了隐式类型,接下来我们继续来讨论C#3.0另一个新特性:匿名类型。20.2.1引入匿名类型在很多情况下,我们需要一种能够临时将一批具有一定关联的数据存放起来的对象;或者在某些情况下,我们对仅一个对象的“形状”(如属性的名字和类型等)比较感兴趣。例如Book类,当它和其他商品放在一起进行查询时,我们可能仅对其名称和价格感兴趣,并且希望将这两种属性放在另外一个单独的临时对象中以备今后使用。这时,我们关注的仅仅是这个临时对象具有Name和Price的属性感兴趣,至于它究竟是什么类型就无关紧要了。然而,为了使这样一个对象得以存在,我们不得不为这个无关紧要的类型写上一大堆“样本代码”, 阅读全文
posted @ 2011-06-10 16:02 董雨 阅读(198) 评论(0) 推荐(0)
摘要:http://kenchell.blog.163.com/blog/static/26088309200971611491146/当我们需要对已有类的功能进行扩展时,我们通常会想到继承,继承已有类,然后为其加入新的行为。而C# 3.0中加入的扩展方法(Extension Methods)特性,则提供了另一种实现功能扩展的方式。扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上像调用实例方法那样进行调用。因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充,这种方法并不会产生新的类型,而是采用向已有类中加入新方法的方式来完成功能扩展;同时,也可 阅读全文
posted @ 2011-06-10 15:46 董雨 阅读(206) 评论(0) 推荐(0)
摘要:http://kenchell.blog.163.com/blog/static/260883092009716114946383/在C#3.0中,一个对象创建表达式可以包含一个对象或集合初始化器,用于初始化新创建的对象的成员或新创建的集合的元素。对象创建表达式:newtype(argument-list(可选))对象或集合初试化器(可选)newtype对象或集合初试化器一个对象创建表达式可以省略构造器参数列表,并将其连同圆括号一起替换为一个对象或集合初始化器。省略构造器参数列表并将其连同圆括号一起替换为一个对象或集合初始化器等价于指定一个空的参数列表。在执行一个带有对象或集合初始化器的对象创 阅读全文
posted @ 2011-06-10 15:45 董雨 阅读(218) 评论(0) 推荐(0)