测测你对C#概念性的东西了解多少
摘要:1.在C#中,关于ArrayList和Hashtable的说法,错误的是()A ArrayList通过索引访问集合元素,Hashtable通过Key访问集合元素B ArrayList和Hashtable 都可以用RemoveAt方法删除其中的元素C ArrayList和Hashtable获取集合中的元素时,都需要类型转换D 在同一个ArrayList或者Hashtable中,可以存储不同类型的元素2.下面关于泛型集合List<String> list = new List<String>()的操作代码错误的是()A list.Remove(0)B list.Remove
阅读全文
Active Directory 开发
摘要:概要活动目录(Active Directory)是面向Windows Standard Server、Windows Enterprise Server以及 Windows Datacenter Server的目录服务。(Active Directory不能运行在Windows Web Server上,但是可以通过它对运行Windows Web Server的计算机进行管理。)Active Directory存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。Active Directory使用了一种结构化的数据存储方式,并以此作为基础对目录信息进行合乎逻辑的分层组织。M
阅读全文
线程
摘要:引言本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。其中委托的BeginInvoke方法以及回调函数最为常用。而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽可能地减少IIS的压力。并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。希望本篇文章能对各位的学习研究有所帮助,当中有所错漏的地方敬请点
阅读全文
C# Socket tcp 发送数据大小问题
摘要:TCP/IP是可靠性传输协议,它能保证数据能按顺序的方式到达目的地.看到以上描述在写TCP/IP应用的时候似乎就可以放心了,只要程序不出意外就数据输传就是正确.但最近在做一个文件传输工作的时候确得到的结果并不是这样,发现网络环境和一次发送数据大会影响整个输传结果.以下是这两晚的测试情况测试内容描述: 每个文件块信息包大概是120k左右 采用异步5连接输传,双方的Socket.SendBufferSize和Socket.ReceiveBufferSize都设置为64K 测试服务器分别有: 局域网:ServerA 在美国机房:ServerB...
阅读全文
跟我做WinForm开发
摘要:2012-01-07 12:03 by 空逸云, 3710 visits,收藏,编辑前言前阵子,学英文的时候听发音,意外之中发现Google的发音相比大部分TTS发音更准确,而且读句子也没有普通TTS那种一听就是机器人的声音,心血来潮,想利用Google发音做一个小软件,所以就有了本文。这是最后的UI成品图,可以看到,没有了常见的按钮,也没有了常见的Title框,整个布局随心所欲,GDI+?No。下面,就带大家跟我一起来用最简单的方式开发你所期望的UI吧!自定义窗体WinForm开发中,我们都知道窗体和控件的作用,实际上,以上的UI实现也是通过自定义窗体和用户控件实现,那该如何做,才能让窗体变
阅读全文
委托Delegate +事件Event
摘要:委托就是面向对象函数指针 能指向静态方法和对象的实例 委托必须跟预委托(方法)具有相同的返回值 参数类型 委托的本质是一个类 任何声明类的地方都可以声明委托。我们习惯于把数据作为参数传递给方法,如上面的例子所示。所以,给方法传递另一个方法听起来有点奇怪。而有时某个方法执行的操作并不是针对数据进行的,而是要对另一个方法进行操作。更麻烦的是,在编译时我们不知道第二个方法是什么,这个信息只能在运行时得到,所以需要把第二个方法作为参数传递给第一个方法事件的四个步骤:1:在事件发行者中定义一个事件2:在事件发行者中触发事件3:在事件订阅者中定义事件处理程序4:向事件发行者订阅一个事件事件设计准则:1:命
阅读全文
通过监听Windows消息对复合控件进行整体控制
摘要:在开发Winform复合控件时,有很多时候需要对控件进行整体的控制,比如监听鼠标的进入、移出而对控件进行渲染,对键盘事件时行控件,而这些对一个复合控件来说,实现起来是相当困难的,假如一个复合控件里面有10子控件,很难对每个控件进行事件监听,而且逻辑也不好做。在本人开发的控件中,起先曾试过对每个控件的事件时行监听,一大堆地代码和实现算法,最终也达不到效果,后来决定放弃这种做法。有一次,做一个模仿VS的IDE的设计器功能,最初没有探索到使用VS自带的DesignSurface的类,就通过监听Windows的消息来实现,完成后虽然没有VS的IDE设计器的效果好,但使用的感觉也比较接近(后几次改进,最
阅读全文
我的C#全能Excel操作(无需Office,不使用XML)
摘要:其实我也清楚,这并不是全能,这样写标题也就是只有等待拍砖的份了。不过话又说回来,对Excel的操作,方法多得很,有的还真不敢用,现在这个是在我的项目中使用着的,今天等放假(下班就开始放年假),总结总结。我说的全能非所谓的全能也,只是我自己的功能已满足罢了。话题未放正,正经一点。有时候,Excel操作会成为我们程序员的痛处。COM的方式处理?杀进程?需要安装Office?No,nononono!这些都不想了。我只要OleDb就够用了。读取内容产生DataSet? 没问题!创建Excel文件? 没问题!在Excel文件中创建Sheet? 没问题!我要取出Excel文件中的所有表名? 没问题!我要以
阅读全文
实战 CruiseControl.NET+NAnt(三)- NAnt及NAntContrib常用任务
摘要:作者:Tony QuNAnt的脚本引擎非常强大,bat能干的事,它都能干,绝对是有过之而无不及。本文中将列出一些常用任务,其他的我就不一一例举了,大家可以通过http://nant.sourceforge.net/release/0.85/help/tasks/index.html自学。NAnt常用任务a. 声明变量参考:http://nant.sourceforge.net/release/0.85/help/tasks/property.html当我们声明完一个变量之后需要引用它的时候,我们可以用${propertyname}来获得它的值,这与php中的变量引用$a是类似的。b. 创建目录
阅读全文
.net 2.0下的OOXML神器:NPOI.OpenXml4Net
摘要:作者:Tony QuNPOI官方博客:http://tonyqus.sinaapp.com| 官方QQ群:189925337可能很多人已经习惯了使用.Net 3.0下的System.IO.Packaging(WindowsBase.dll)来操作Office 2007/2010的文件格式,以至于大家都默许了.net 2.0下无法操作OOXML文件的观点,尽管也有人使用第三方zip类库来操作OOXML文件,但是遇到关系维护之类的问题,就开始纠结了,你必须自己去不断地维护.rels文件(OOXML中用于维护文件内关系的文件,这里不是后缀名,这个文件就叫这个名字。),而且文件的内容越复杂,关系维护就
阅读全文
小试一下Google App Engine
摘要:这两天关心了一下云,所以也看到google app engine了,今天小小试了一下,做下记录。主页登录http://code.google.com/intl/zh-CN/appengine/,下载App Engine SDKGoogleAppEngine-1.6.1.msi使用入门:Python本来想用Java的,不过我的Eclipse是HELIOS版本,可能插件还不支持,所以就看查看Python的使用入门了。使用Python之前安装python-2.5.4.msi,所以都按照默认即可。Agile Me建立一个agile-me目录,(注意:父目录最好不要空格),并在目录下生成两个文件:agi
阅读全文
C#继承小结——面向对象编程的三大机制之一
摘要:继承反应了类和类之间的关系。 世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结构清晰易读,而且易于代码的扩展和维护。 C#的继承只能继承自一个基类,这一点不同于C++的继承。 C#的继承具有传递性,即B继承自A,C继承自B,则C具有A的所有特性。 C#的继承隐式为public的。 假如不在派生类构造器中显示调用一个基类构造器,编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码,如果基类没有默认的构造器,会造成编译错误。 举例:动物的共性:有嘴巴,有眼睛,有鼻子,可以移动,能够吃东西 所以定义...
阅读全文
为什么System.Attribute的GetHashCode方法需要如此设计?
摘要:昨天我在实现《通过扩展改善ASP.NET MVC的验证机制[使用篇]》的时候为了Attribute 的一个小问题后耗费了大半天的精力,虽然最终找到了问题的症结并解决了问题,但是我依然不知道微软如此设计的目的何在。闲话少说,我们先来演示一下我具体遇到的问题如何发生的。目录:一、问题重现二、通过Attribute的Equals方法和GetHashCode方法进行对等判断三、Attribute对象和Attribute类型的HashCode四、倘若为FooAttribute添加一个属性/字段五、Attribute的GetHashCode方式是如何实现的?一、问题重现如下面的代码片断所示,我们定义了两个
阅读全文
使用KTM(内核事务管理器)进行文件事务处理
摘要:这样的代码是不会提升为DTC管理的,我们加一行代码:?public static void StartCopy(){using (TransactionScope transcope = new TransactionScope()){IDtcTransaction idtc = TransactionInterop.GetDtcTransaction(Transaction.Current);transcope.Complete();}}先解释一下TransactionInterop类的作用,来自MSDN的说明:“促进System.Transactions 和以前编写的用于与 MSDTC、C
阅读全文
【译著】Code First :使用Entity. Framework编程(8)
摘要:Chapter 8What’s Coming Next for Code First第8章Code First将走向哪里?So far, this book has covered all of the Code First components that reached their final release at the time of writing. There are, however, some notable features that are still in preview at this time that you should be aware of. You’ll ga
阅读全文
线程池[ThreadPool]
摘要:C#多线程学习 之 线程池[ThreadPool]在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒 这一般使用Timer(定时器)来解决;本篇文章单单讲线程池[ThreadPool]ThreadPool类 MSDN帮助信息: http://msdn.microsoft.com/zh-cn/library/system.threading.threadpool.aspx#Y0将任务添加进线程池:ThreadPoo
阅读全文
Asp.net MVC突然变慢,缓存消失的一种原因
摘要:今天使用Sqlite数据库时,在插入数据后,网站变慢。仔细检查代码,没有发现异常,只有一点:缓存莫名消失。缓存策略没有设置依赖性,百思不得其解:数据库改变,导致缓存消失?起初以为是sqlite的问题,Google后没有答案!于是想写一个测试程序,写到一半,发现了问题:自己为了图省事将Sqlite数据库放在了bin目录下。现在看来bin是asp.net进程重点监视目录,只要此目录中的文件改变了,就会导致应用程序重新编译,不但缓存丢失,还导致asp.net程序重新预热,访问自然变慢!由此看来asp.net MVC还是动态编译的。测试环境是asp.net mvc2.0+3.5框架+iis6.0+wi
阅读全文
【C#.NET】利用FastDFS打造分布式文件系统
摘要:关于分布式文件系统 之前已经写过一些随笔 不过没怎么用心 本篇详细的整理一下背景 海量存储、系统负载的迁移、服务器吞吐的瓶颈等等 让文件系统独立于业务系统 提高整个项目的扩展性以及可维护性 目前主流的方案 MFS FASTDFS GFS LUSTRE HADOOP等等 我选择的是FASTDFS 用一句广告语来说 “免费、快速、找得到”。FASTDFS的作者是淘宝的资深架构师余庆,很诙谐、很有爱!!!其他方案还没玩过 暂不评论。简介 FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有...
阅读全文
12篇学通C#网络编程——第二篇 HTTP应用编程(上)
摘要:12篇学通C#网络编程——第二篇 HTTP应用编程(上) 我们学习网络编程最熟悉的莫过于Http,好,我们就从Http入手,首先我们肯定要了解一下http的基本原理和作为,对http的工作原理有一定程度的掌握,对我们下面的学习都是有很大帮助的。一: 工作方式 ①:client和server建立可靠的TCP连接。 ②:然后client通过Socket向server发送http请求。 ③:server端处理请求,返回处理数据。 ④:在http1.0中,client与server之间的tcp连接立即断开。 但在http1.1中,因为默认支持“tcp的长连接”,所以server端采用超...
阅读全文
可视化组件库(The Visual Component Library)
摘要:基于窗体的编程(form-based)这一概念是首先由Microsoft的Visual Basic推广而来的。但与Visual Basic不同的是,Delphi是由Pascal的派生作为它的编程语言,这种新语言叫做Object Pascal,它把OOP引入到Pascal中。Delphi和Object Pascal标志着面向对象编程和基于窗体编程的有机结合。此外,Delphi还可产生单独可执行文件。对于实际程序,是不需要运行阶段DLL来运行的程序,是编译而不是解释的程序,运行起来要比Visual Basic程序 要快几十倍,这在编程领域是很有影响的。Delphi不只是引进了Object Pasc
阅读全文