[置顶] CLR Via笔记之ThreadPool/Task

摘要: ThreadPool 是MTA设计,不像STA线程可以支持Com Interop互操作。而Task是ThreadPool的再封装简化,两者都支持异步取消的操作。ThreadPool 通过CancellationTokenSource 取消线程操作private static void CancellingAWorkItem() { CancellationTokenSource cts = new CancellationTokenSource(); ThreadPool.QueueUserWorkItem(o => Count(cts.Token, 1000))... 阅读全文

posted @ 2011-11-18 13:46 小城岁月 阅读(1695) 评论(1) 推荐(4) 编辑

[置顶] CLR Via笔记之.NET 4.0 并行Parallel

摘要: 4.0特性中扩展了并行任务处理,其实就是封装了ThreadPool的Task。园子里有很多介绍Parallel的并行计算,其实我更看好并行查询PLINQ。做过复杂SQL拼接报表的人应该深有体会,当复杂的SQL执行时间过长,你怎么做呢?当存储过程优化后的执行时间还是让人无法接受呢? 之前的解决方案是将复杂的SQL拆分成几段(可能是多张表)分别并行执行,将查询结果加载至内存,利用LINQ处理获取交集数据最终达到目的,当然这个是牺牲内存的方式达到目的,但是如果查询的数据短期不会有太大变化时,这种方式解决查询速度过慢肯定是个较好的方案。而PLINQ在此基础上又进一步扩大了LINQ战果。下面是PLIN. 阅读全文

posted @ 2011-11-16 11:56 小城岁月 阅读(927) 评论(1) 推荐(1) 编辑

[置顶] .NET 序列化与反序化

摘要: 序列化与反序化目的是为了解决对象的传递与持久化操作,如在不同的进程,应用程序哉,服务间传递,对象的保存与状态还原. .net 环境下提供的序列化方式至3.5版本,有二进制,SOAP,XML,DataContract,JavaScript等,开源的有如Json.net等。当然也有自己手动反射实现的,比如利用MemberInfo,或者FormatterServices (二进制,SOAP等方式是封装了FormatterServices 的操作)。以上的几中方式处理序列化的对象都有不同的要求,二进制,SOAP,XML方式要求对象必须属性标记可序列化[Serializable],而DataContra 阅读全文

posted @ 2011-11-13 01:34 小城岁月 阅读(1871) 评论(0) 推荐(3) 编辑

[置顶] CLR VIA反射性能比较的例子

摘要: 在CLR VIA 的Demo中看到关于反射性能的几个例子,演示了反射操作实例及性能表现。反射的过程其实就是根据要查找的反射信息(字段名,方法名,类名等),在元数据中逐字符匹配的查找字段名,类型名等,然后定位到IL代码编译执行(所以会有大小写区分)。由于元数据是记录了程序集所有类型以及成员的描述信息,所以在其中查找指定的信息是件浪费性能的事情。如何快速匹配到对应的元数据信息,然后定位到IL执行代码去执行,这是本身反射性能提升的直接途径,当然这个过程已经很难优化,但是可以通过缓存管理首次的结果提高效率。类似JIT对IL方法指令的编译,首次编译后保存CLR 元数据相关的结构表中,再下一次执行时直接上 阅读全文

posted @ 2011-11-12 02:15 小城岁月 阅读(944) 评论(2) 推荐(4) 编辑

[置顶] 进程/线程/线程安全/静态类 杂谈

摘要: 进程 是应用程序的一个实例要使用的资源的一个集合,每个进程都被赋予了一个虚拟空间,以确保另一个其它进程无法访问。进程在者创建时需要分配大量的内存并且初始化加载EXE以及大量的DLL资源。线程相当于逻辑CPU用以解决进程长时间占用资源的问题,在创建时被分配大约1M的内存。线程以CPU时间片单位运行,当时间片到期后自动切换到另一个线程执行,从而缓解一个进程或线程长期占用资源的情况。线程切换伴随着上下文资源的切换,所以大量的线程切换也是浪费性能的事情。一个进程拥有一个专用线程,理论上有多少进程最少就有多少线程,当然实际情况上一个进程可能拥有很多线程。我们可以通过任务管理器的添加选项列线程数来查看一个 阅读全文

posted @ 2011-11-08 01:05 小城岁月 阅读(2545) 评论(1) 推荐(5) 编辑

[置顶] GC/Windbg/IDisposable/IL/MeteData/JIT 杂谈

摘要: GC工作原理大家都已经知道,简单的说就是按代回收托管对象。哪些托管对象会被回收,是通过每个程序的Root来识记,被Root标记的引用对象以及递归出所有相同的引用对象都是活对象,而未被标记的则意味着要被回收。何时回收对象?对于每个对象,CLR首先尝试把对象分配在0代中,如果0代已满,那么GC才会开始工作,把0代中的对象转移到1代中;如果1代也满,GC将会把1代中的对象转移到2代中。也就是说,CLR会在适当的时机,才开始进行垃圾回收。但是对于非托管对象的处理就显得无能为力,但是GC仍然有自己的解决方式。如果非托管对象实现了Finalize方法,代表此非托管对象可终结。因此在非托管对象被创建时,这. 阅读全文

posted @ 2011-10-27 13:34 小城岁月 阅读(2202) 评论(4) 推荐(3) 编辑

[置顶] JS图片素材及JQueryUI样式设计

摘要: 白菜同志介绍了两个好的JS相关的素材网址,不错赞一个收藏了。http://www.easyicon.cn/ 图片素材网http://jqueryui.com/themeroller/ jqueryUI 样式设计,这个还有FireFox版本的设计器http://apycom.com/ 导航jcDock 防苹果桌面http://ndesign-studio.com/blog/css-dock-menuhttp://www.wizzud.com/jqDock/图片相关的http://leandrovieira.com/projects/jquery/lightbox/ jQuery lightBox 阅读全文

posted @ 2011-10-20 22:42 小城岁月 阅读(1141) 评论(1) 推荐(3) 编辑

[置顶] mongodb/SQL 连接池小记

摘要: 默认情况下,基本所有数据库都是有连接池项的。mongodb也不例外,当我们使用一致的连接字符串时,这些连接都会归到一个池里重复利用,如果没设置最小minpoolsize 连接池会在一定的时间内关闭掉这些连接,当设置了此值时,连接池会保留这个值数量的活动连接以重用利用,从而必免反复创建浪费开销。 这里需要注意的是,连接字符串必段一样的,否则会重新创建另外一个池 。(SQL/Mongodb 都是如此)。在串行过程中,使用同一连接字符串依次创建的连接在一般指向同一个连接(当没有其它并行线程的情况下)。并行过程中,则表现为池中MinimumPoolSize循环利用。而不同的连接字符串创建连接必定都是. 阅读全文

posted @ 2011-10-19 23:00 小城岁月 阅读(5301) 评论(5) 推荐(4) 编辑

[置顶] MongoVUE 客户端工具

摘要: MongoVUE是一个可视化的界面的客户端工具,有点像SQL SERVER,功能目前来说很全了,查询功能,操作功能,浏览功能都很完整,并且GFS文件的查询浏览都可以。不过目前已经收费了。看一下界面,不由的喜欢。1.登录2.操作界面 阅读全文

posted @ 2011-10-19 09:08 小城岁月 阅读(1753) 评论(4) 推荐(4) 编辑

[置顶] SQL/MongoDB 连接并发测试

摘要: 最近一直在搞mongodb 文件服务器大量文件并发上传测试,在官方文档发现mongo是线程安全的,支持单一连接下的并发操作。印象ADO.NET 似乎不支持单一连接并发。于是,测试一下来证实这个疑虑。(前两篇小记一直纠结mongodb吃内存导致并发文件上传变慢问题,经过这两天测试,发现文件并发上传越来越慢的瓶颈是磁盘的IO读写的瓶颈)以10W条/20W条 记录写入测试,下面是测试结果 操作10W w/s20W w/s操作方式备注179.958163.396主线程 有池 单连接 单打开单打开指的一次open close 内执行所有写入操作279.958164.412主线程 有池 单连接 ... 阅读全文

posted @ 2011-10-18 23:26 小城岁月 阅读(12189) 评论(7) 推荐(7) 编辑

[置顶] Quartz.Net 调度框架配置介绍

摘要: 在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等。大家通过windows计划任务,windows服务等都实现过此类任务,甚至实现过自己的配置定制化的框架。那今天就来介绍个开源的调度框架Quartz.Net(主要介绍配置的实现,因为有朋友问过此类问题)。调度的实现代码很简单,在源码中有大量Demo,这里就略过了。Quartz.Net当前最新版本 Quartz.NET 2.0 beta 1 Released一 基于文件配置先看一下简单的实现代码View Code using System;using System.Collections.Generic;u. 阅读全文

posted @ 2011-10-16 22:18 小城岁月 阅读(27554) 评论(16) 推荐(22) 编辑

[置顶] mongodb 64位服务器安装小记

摘要: 今天试着在64位服务器上使用mongodb数据库,服务器硬盘磁盘阵列由10块140G硬盘构成,由于考虑采用Master/Salve机制备份这样就可以充份利用硬盘,所以采用了RAID5阵列。但是64位系统安装mongodb后,local数据库会直接用掉了70G。好浪费啊,赶紧查原因,发现mongodb在64位默认使用5%空间做为日志存储。经过测试发现不采用Master/Salve机制,则不会有这种问题,32位系统下也不会有这种问题。由于mongodb可以循环利用日志空间,加上是做文件器,最后把oplogsize 先定到10G 测试一下了。之前的32位服务器上mongodb收1G物理文件,会用掉. 阅读全文

posted @ 2011-10-11 21:19 小城岁月 阅读(1778) 评论(0) 推荐(2) 编辑

[置顶] .NET MVC权限设计思考之切入点

摘要: .NET MVC权限设计思考之切入点 在WebForm下我们一般会设计个PageBase继承Page,在OnInit方法中实现对基本权限的验证业务,然后所有的页面在继承PageBase直接继承这项基本权验证业务。而在.NET MVC下我们如何再实现这个业务呢?其实无非也是要设计一个ExtController基类来实现这个业务,而这个ExtController基类的权限验证业务切入点选在哪里合适呢?... 阅读全文

posted @ 2011-09-30 00:03 小城岁月 阅读(12956) 评论(40) 推荐(17) 编辑

[置顶] 第六节 MongoDB 状态监控、备份复制及自动分片

摘要: 如果MongoDB仅仅是一个文档型的数据库,那就没有什么亮点了,然而MongoDB最大优点在于读扩展,热备份,故障恢复以及自动分片(写扩展)。这节系列结束篇就把这些功能介绍一下。备份复制实现了数据库备份的同时,实现了读写分离,又实现了读操作的负载均衡,即一台主写服务器,多台从属备份和读服务器,并且支持备份和读的集群扩展。其中Replica Sets方式又支持故障切换,当主服务器down掉后会投票选出一台从服务器接替为主服务器实现写操作。而自动分片功能会将原先的集合(表),自动分片到其它服务器上,实现分布式存储,即缓解单表数据量过大,同时又实现写操作的负载均衡。状态监控Http Consolem 阅读全文

posted @ 2011-07-25 23:54 小城岁月 阅读(20125) 评论(10) 推荐(8) 编辑

[置顶] 项目铺垫系列导航目录

摘要: 整理了最近的学习笔记,之所以写这些,就是想结合这些技术实现一个完整的项目。之后时间会结合JQuery+MVC+Entity FrameWork+Memcached+MongoDB 等技术写个项目应用系列。MVC原理分析通过.net reflector了解asp.net站点的请求与响应过程了解.net MVC的实现原理Controller/Action了解.net mvc实现原理ActionResu... 阅读全文

posted @ 2011-07-20 22:26 小城岁月 阅读(6799) 评论(19) 推荐(22) 编辑

[置顶] Entity Framework之深入分析

摘要: EF虽然是一个晚生畸形的ORM框架,但功能强大又具有灵活性的,给了开发人员一定的发挥空间。因为微软出发点总是好的,让开发变得简单,但实际上不是所有的事情都这么理想。这里顺便推荐马丁大叔的书《企业应架构模式》。本节主要深入分析EF的分层问题,下面是本节的已列出的要探讨内容。领域模型的概念DbContext与Unit of Work 的概念DbContext 创建实例及线程安全问题不要随便using或... 阅读全文

posted @ 2011-07-17 22:24 小城岁月 阅读(50120) 评论(55) 推荐(38) 编辑

[置顶] Entity Framework之查询总结

摘要: 本节针对EF当前支持的查询方式进行分析比较,和简单自定义条件查询的实现。EF的查询方式自定义条件查询一、EF的查询方式EF提供的查询方式有以下几种原始SQL查询LINQ To Entity and LambdaESQL 与 ObjectQueryObjectQuery 查询生成器1.原始SQL查询在EF 4.1 新增加的DbContext 除了支持LINQ与Lambda查询外,新增了支持原始SQL... 阅读全文

posted @ 2011-07-11 14:00 小城岁月 阅读(30869) 评论(38) 推荐(18) 编辑

[置顶] Entity Framework之问题收集

摘要: 本节讨论内容主要针对收集了上篇文章大家碰到问题的讨论解决,会持续收集扩充。DbContext加载原值,当前值,数据库值,属性操作,对象复制,对象值复制(VO,DTO->POCO),复杂对象取值DbContext Local Data与AsNoTracking无跟踪查询 如何提高效率DbContext如何关闭延迟加载DbContext如可使用延迟加载DbContext如何控制并发解除属性映射到数据库中对象失去或没有被跟踪时处理多对多关系之扩展字段字段处理利用模板使模型继承基类如何对象模型中使用枚举值创建或使用代理对象1. DbContext加载原值,当前值,数据库值,属性操作,对象复制,对 阅读全文

posted @ 2011-07-08 11:03 小城岁月 阅读(16300) 评论(30) 推荐(23) 编辑

[置顶] Entity Framework之犹豫不决

摘要: 记得去年初就开始关注Entity Framework,那时只是简单测试了一下,发现较之Nhibernate不太成熟。当时的EF主要表驱动方式开发,过度依赖edm文件,并且数据层耦合了模型层,让一些MVC分层用户痛苦不堪。微软从Oxite1项目发展到Oxite2也在这个DAL与MODEL的理不清的关系上做过徘徊,只好在EDM的基础上直接实现BLL。由于EntityObject模型与ObjectCon... 阅读全文

posted @ 2011-07-07 01:16 小城岁月 阅读(66347) 评论(135) 推荐(43) 编辑

[置顶] Microsoft® Translator Interactive SDK (微软翻译插件)

摘要: 纯酱油篇插件SDK链接:http://sdk.microsofttranslator.com/Widget/UseWebWidget.aspx"; var p = document.getElementsByTagName('head')[0] || document.documentElement; p.insertBefore(s, p.firstChild); }, 0); /* -->MSDN很多未翻译页面都是暂时用这个插件翻译的,微软的很多团队博客也使用了这个插件。看一下ADO.NET 团体博客的效果:翻译前---------------------- 阅读全文

posted @ 2011-07-04 15:36 小城岁月 阅读(3141) 评论(2) 推荐(2) 编辑

2012年1月17日

WCF X.509证书创建与IIS宿主设置

摘要: 首先说明,仅仅使用证书只解决了数据明文安全问题的,但请求是否合法,还要通过其它手段,如:双向证书验证 或者 证书+用户验证的方案VS控制台下创建证书示意:1,默认创建证书 makecert -n "CN=www.ecepdi.com" Wcf_EdocFileService.cer (-n搬发给)2, 创建自签名搬发者证书 makecert -n "CN=www.ecepdi.com" -r Wcf_EdocFileService.cer (-r代表自签署)3,创建带私钥部分.pvk的证书 makecert -n "CN=www.ecepdi. 阅读全文

posted @ 2012-01-17 11:48 小城岁月 阅读(4322) 评论(1) 推荐(0) 编辑

2011年10月29日

EF 最近发展小记

摘要: 最近一直学习硬件负载均衡设备和CLR VIA这本书,没太关注EF的发展。最近可能没时间研究,先做个标记目前EF 已发展4.2版本EF 4.2 Release Candidate Available同时官方博客也推出了Code First的辅助工具用于解决EF Code First Fluent API 手动编码的方案EF Power Tools CTP1 Released确实很方便,生成干净的POCO类以及Map映射类 ,但这种是基于数据库表驱动的方式。Fluent API 类似模型驱动。个人不太喜欢Fluent API ,编码工作多,并且不好维护。简介:NLayerApp项目就是Fluent 阅读全文

posted @ 2011-10-29 14:49 小城岁月 阅读(1679) 评论(1) 推荐(0) 编辑

2011年10月28日

VS IDE 引用.net 项增加其它DLL项方法

摘要: 打开注册表找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\ 这一项创建自己的DLL文件夹 假如Mongo 将注册值指向 自己的DLL文件夹 。保存之后我们VS IDE引用一下试试果然可以了,只要做一个就可以了,有新的DLL 直接扔到指定的文件夹下,在VS .NET 引用项中就可以找到这些DLL。 小技巧,估计控件商都是这么处理的。 阅读全文

posted @ 2011-10-28 17:03 小城岁月 阅读(607) 评论(0) 推荐(1) 编辑

导航

面朝大海,春暖花开!