随笔分类 -  C#

1
摘要:经过google加各种百度,终于找到了一个有效的解决方案,下面是两个主要类,方便后人使用1. Win32 API, 需要添加其它内容可以到这个网站从查找对应的c#实现 public class WinApi { public const Int32 CCHDEVICENAME = 32; public const Int32 CCHFORMNAME = 32; public enum DEVMODE_SETTINGS { ENUM_CURRENT_SETTINGS = (-1), E... 阅读全文
posted @ 2013-09-18 17:59 Chris Cheung 阅读(9784) 评论(3) 推荐(0) 编辑
摘要:备忘一下改功能,主要通过WMI来实现,对于监听外接设备的弹出和插入事件一开始使用IntPtr WndProc事件,但是当监听到改事件时,同过WMI来获取设备,有时候还不能获取到,因此还是使用WqlEventQuery 来监听WMI的变化。下列是主要代码片段1. 获取硬盘的固件序列号,盘序列号(由系统指派的唯一ID),总容量,剩余容量, 盘符,盘名称等信息private static List GetDrivers(InterfaceType type, string partitionName) { List drivers = new List(); ... 阅读全文
posted @ 2013-09-18 17:37 Chris Cheung 阅读(11419) 评论(5) 推荐(1) 编辑
摘要:最近一个项目需要通过代码来弹出USB外接硬盘设备,经过google找到了下面这个类库:http://www.codeproject.com/Articles/13530/Eject-USB-disks-using-C不过这个类库只能在x86下使用,因此需要修改以下内容,使其适用于x64平台修改DeviceClass为以下代码:public List Devices { get { if (_devices == null) { _devic... 阅读全文
posted @ 2013-07-22 13:16 Chris Cheung 阅读(6390) 评论(2) 推荐(0) 编辑
摘要:最近有个需求,使用log4net来记录日志,然后将数据保存到服务器端。一开始打算写一个windows service,定期上传日志。后来又因为一些场景下不适应,因此直接改为保存内存中,到一定阀值之后将数据post到服务器。考虑用log4net的MemoryAppender,但是没办法控制这个阀值,同时还需要另外配置服务器接受数据地址。因此也不适用,还好log4net支持自定义Appender,于是,参考MemoryAppender,自定义一个,问题解决。下面是Appender代码。 1 /// 2 /// Customize Appender, save the Log in ... 阅读全文
posted @ 2013-07-10 15:37 Chris Cheung 阅读(5960) 评论(3) 推荐(0) 编辑
摘要:最近玩WP7发现了一个很好玩的框架:Caliburn.Micro。玩了几天,遇到了一些问题,总结备忘一下。关于Caliburn.Micro(简称CM),它官方网站有详细的介绍:http://caliburnmicro.codeplex.com/主要是一个轻量级的MVVM,MVP和MVC框架,可用于WPF,silverlight和WP7在这里我以CM包里面一个简单的例子(Caliburn.Micro.HelloWP7)来介绍遇到过的问题。1. 在这里 http://caliburnmicro.codeplex.com/releases/view/67451 下载CM包,解压2. 打开sample 阅读全文
posted @ 2011-06-23 16:07 Chris Cheung 阅读(3124) 评论(3) 推荐(4) 编辑
摘要:之前一篇文章写了关于使用mongodb来进行replication,然后发现对于fileserver来说,只是单纯的replicate还不够,因为我们不可能只是使用一台机器来作为fileserver。于是尝试试用mongodb的auto-shard来进行分布式存储,搞了一整天终于能够搭好环境,下面贴一下配置信息,备忘一下。主要参考了两篇文章,这里面如何配置都讲得很详细,不过我还是按照自己的方法写一下我的步骤http://www.cnblogs.com/daizhj/archive/2010/09/07/1820528.htmlhttp://www.mongodb.org/display/DOC 阅读全文
posted @ 2011-02-12 02:08 Chris Cheung 阅读(1974) 评论(1) 推荐(0) 编辑
摘要:上篇文章说了一下怎么试用MongoDB来做replication,但是我是通过BSON Object来保存文件,这有个局限,就是如果文件超过4m就会抛出超过最大文件的异常。根据官网介绍,BSON objects in MongoDB are limited to 4MB in size. http://www.mongodb.org/display/DOCS/GridFS因此重新写了那个操作类,使用GridFS来保存文件,代码很简单,但开始接触弄了比较长时间,有一个问题一直解决不了,我希望自己生成一个Guid的 _id 而不是mongodb生成的_id,但是一直解决不了,希望哪个高手看到指.. 阅读全文
posted @ 2011-01-20 23:07 Chris Cheung 阅读(9269) 评论(2) 推荐(0) 编辑
摘要:基于Mongodb的file server最近在抱怨公司的file server,现有的file server通过服务器提供接口,将文件保存到服务器硬盘,按照ID分文件。通过定期备份到其它服务器,运行了这么久出现过一次事故,硬盘被同事格式化导致丢失了一部分数据。因此考虑如果重新设计file server我会怎么做,于是考虑使用Mongodb来设计,进行分布式同步。使用Mongodb好处:1.备份,维护简单2.可以使用Mongodb的分布式同步数据,就算一台服务器挂了,fileserver也不会挂3.速度会比较快(我猜)file server 结构:1. 使用webservice提供添加,删除, 阅读全文
posted @ 2011-01-15 06:06 Chris Cheung 阅读(3407) 评论(1) 推荐(0) 编辑
摘要:Garbage Collection Part 2: Automatic Memory Management in the Microsoft .NET FrameworkGC:.net framework中的自动内存管理Jeffrey Richter本文假设你已熟悉C和C++概要:本文的第一部分已经讲过了GC算法是如何工作的,当GC决定释放资源时是如何正确的回收内存的,以及如何强制释放一个free的内存。这部分将总结了强对象引用和弱对象引用是如何解决管理内存的大对象问题,同时解释了对象的分代以及它们如何提高性能。另外,还讲述了用于控制GC的一些方法和属性,监控回收性能的资源,还包括多线程程序 阅读全文
posted @ 2010-08-31 14:40 Chris Cheung 阅读(986) 评论(0) 推荐(1) 编辑
摘要:哈,又翻译了一篇文章,Jeffrey Richter的GC内存管理。呼,翻译真是不容易啊,利用工作空闲时间,翻译了好几天。Garbage Collection: Automatic Memory Management in the Microsoft .NET FrameworkGC:.net framework中的自动内存管理Jeffrey Richter本文假设你已熟悉C和C++概要 :.net framework通用语言运行时环境完全将开发者从跟踪内存使用和何时释放内存中隔离出来。然而,你可能想了解它是如何工作的。本文的第一部分解释了GC是如何分配和管理的资源的,然后一步一步的详细介绍G 阅读全文
posted @ 2010-08-27 14:31 Chris Cheung 阅读(1492) 评论(0) 推荐(0) 编辑
摘要:今天有继续翻译啦,哈哈,之前看《你必须了解的.net》就了解过一些关于GC回收的机制,通过翻译本文,有增加了一些了解,欢迎大家拍砖:-)原文链接:http://www.codeproject.com/KB/aspnet/DONETBestPracticeNo2.aspx#Conclusion%20about%20generations使用finalize/dispose 提高GC性能本文是否值得继续阅读?介绍和目的假定感谢 Mr. Jeffrey Richter 和 Peter SollichGC--无名英雄“代”算法 --今天,昨天,前天“代”是如何提高优化性能“代”的总结使用“finali 阅读全文
posted @ 2010-08-23 13:55 Chris Cheung 阅读(972) 评论(0) 推荐(1) 编辑
摘要:哈哈,昨天没事做,在CodeProject瞎逛,偶然看到这篇文章,居然读得懂,于是就翻译了一下,当练习英语,同时增强对文章的理解,发现再次翻译对于文章的一些细节问题又有更好的理解。下面是翻译内容,虽然翻译出来后很像小学生写作文,读起来很拗口,希望大家多多提出宝贵意见,谢谢。原文地址:http://www.codeproject.com/KB/aspnet/BestPrctice1.aspx#As%20said%20before%20do%20not%20get%20carried%20away%20with%20execution%20time检查.net代码中占用高内存函数介绍非常感谢 Mr 阅读全文
posted @ 2010-08-20 16:15 Chris Cheung 阅读(3708) 评论(5) 推荐(2) 编辑
摘要:c#类型分为值类型和引用类型值类型赋值或者传递时候,都会复制一分数据,所以改变新数据值的时候并不会改变原来数据而引用类型的赋值与传递时,C#会复制一份引用地址,因此改变新变量值时候,会影响到原来的变量测试如下代码:class Program { static void Main(string[] args) { Person p = new Person { Name = "Chris", Gender = "Male" }; Person p1 = p; p = null; try { Console.WriteLine(p1.Name); } cat 阅读全文
posted @ 2010-08-11 09:33 Chris Cheung 阅读(180) 评论(0) 推荐(0) 编辑
摘要:第一章 加载与执行脚本 这一章主要提供了几个提高脚本加载速度技巧: 1、由于script标签会阻塞html页面的加载,浏览器会等到加载完script后才渲染页面,以防止script 会对页面DOM元素进行操作,因此建议将script标签放在底部前面,同事使用defer属性(支持ie) 2、将多个脚本合并成为一个,减少http请求 3、动态加载脚本,通过ajax或者动态创建script标签第二章 数据访问 这一章主要讲解如果提高访问数据的速度,文章对比了元数据类型,局部变量,数组,对象四种存储数据 方式的性能,其中元数据类型是最高,其次是局部变量,接着就是数组和对象。这里我们可以理解为什么jqu 阅读全文
posted @ 2010-07-05 14:57 Chris Cheung 阅读(280) 评论(0) 推荐(0) 编辑
摘要:这两天弄一个WinForm程序,程序有个界面是由多个Panel组成,一个大的Panel包含N个小Panel,每个子Panel可以隐藏掉,或者显示出来,隐藏的子Pannel,它以下的panel需要顶上去因此就需要通过计算来设置panel.Location.Y的值。我的做法是使用一个成员变量Y来记录距离顶部的高度,也就是每次显示一个Panel的时候加上它的高度,也就是Y += panel.Location.Y;每次隐藏panel的时候,Y -= pannel.Location.Y;但是当界面出现较多Panel,然后界面出现滚动条时,再显示Panel的时候就出现问题。后来请教了同事,终于发现问题的所 阅读全文
posted @ 2010-06-30 21:25 Chris Cheung 阅读(964) 评论(1) 推荐(1) 编辑
摘要:1.2 .NET中的持久化方法 我们已经讨论过如何在一些较大的系统中使用持久层来处理加载和保存数据。现在也有很多方法可以用于实现持久层,每个方法都有各自的优点和缺点。下面是一些流行的方法:手工编写代码DataSetsLINQ-to-SQLNHibernate(或其它类似的)ADO.NET Entity Framework 尽管我们强烈推荐使用NHibernate,但是也可以考虑其它的这些选择。虽然我们知道,使用NHibernate来建立一个系统是非常简单的,但是并不意味着对每个系统来说它都是完美的。在接下来的部分中,我们将详细的测试和对比这几种方法,讨论与数据库访问和用户接口的关联。1.2.1 阅读全文
posted @ 2010-02-10 12:16 Chris Cheung 阅读(828) 评论(0) 推荐(1) 编辑
摘要:第一章 .NET中的对象/关系持久化本章包含:.NET持久化与关系数据库.NET程序的分层.NET持久化分层的方法NHibernate如何实现关系数据库中的持久化对象高级持久化特性 软件开发是一个最新技术与技巧时常更新的学科。作为一个软件开发人员,我们有大量的工具和实践可供选择,选择一个适当的工具往往可以成就一个项目或破坏一个项目。其中一个关键性的选择就是---如何处理持久层的数据---或者简单的说如何加载和保存数据。 几乎有无数可供选择的方法。你可以以二进制形式或者文本形式存储到硬盘中。你也可以选择项CSV,XML,JSON,YAML或者SOAP又或者发明你自己的格式来存储数据。同样的,你也 阅读全文
posted @ 2010-02-09 12:05 Chris Cheung 阅读(678) 评论(1) 推荐(1) 编辑
摘要:概要 第一章描述了一个场景,解释什么是持久层以及如何使它适用于商业应用。我们简单的介绍了一下NHibernate,同时与其它流行的框架如Linq to SQL和Datasets做比较。通过这一章你可以了解到ORM遇到的主要问题已经NHibernate如何去解决这些问题。 第二章给出了一些代码,简单的介绍如何安装NHibernate已经如何建立一个简单的应用。紧接着我们将开始探索NHibernate的主要功能,包括查询,事务处理,用户定制的接口。我们同时展示了基本设置和高级设置,让你可以通过日志更深入的了解NHibernate背后是如何工作的。 第三章以一定的速度告诉你NHibernate的大部 阅读全文
posted @ 2010-02-08 17:43 Chris Cheung 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:最近开始练习英语,试着翻译一下NHibernate in Action,可能已经有人翻译了,不过就当成练习好了。下面的这几天翻译的东西,可能有很多错误,请路过的有心人帮忙指正,谢谢。更动内容请关注:http://docs.google.com/Doc?docid=0Afe2UsUCln8vZGRmZnN0c2dfMWRxbXpmcA&hl=zh_CNNHibernate in ActionPIERRE HENRI KUATÉTOBIN HARRISCHRISTIAN BAUERGAVIN KING献给一直相信我的父母,Henri 和Jeannette Kuate-P.H.K献 阅读全文
posted @ 2010-02-08 17:39 Chris Cheung 阅读(332) 评论(1) 推荐(0) 编辑
摘要:之前了解到EF实例化一个Entity时占用较长时间,刚刚测试了一下,使用代码如下:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Diagnostics;namespaceConsoleApplication1{classProgram{staticvoidMa 阅读全文
posted @ 2009-12-29 16:25 Chris Cheung 阅读(1770) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示