代码改变世界

随笔档案-2012年09月

通过SQL Server的位运算功能巧妙解决多选查询

2012-09-29 12:24 by C#与.NET探索者, 316 阅读, 收藏,
摘要: 项目中很多业务对象的数据表中都具有Status字段,有人使用int型保存Status,有人使用varchar型。无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下: [Serializable] public enum CustomerStatus { New = 0, Active = 1, Overdue = 2, Suspended = 3, Closing = 4, Closed = 5}在数据库中以int形式存储了Status值。如果我在页面中想一次搜索状态为Active,Overdue和Sus 阅读全文

位运算设置权限续(转)

2012-09-28 17:10 by C#与.NET探索者, 179 阅读, 收藏,
摘要: 0124816,32,64,128,256,512,1024,2048,4096,8192--2的n次方tinyint类型就够用了--0无权限--1可读(read)--2可新增(insert)--4可修改(update)--8可删除(delete)--16可审核...权限的组合read+insert=1+2=3read+insert+delete=1+2+8=11read+update+delete=1+4+8=13select1|2权限的加法就是逻辑[或]运算--结果:3select3&(~1)权限的减法,使用[与]运算+[非]运算来实现--结果:2select1|13一次添加n个权 阅读全文

位运算设置权限

2012-09-28 17:09 by C#与.NET探索者, 403 阅读, 收藏,
摘要: 我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到"位运行符"操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。它的权限值是这样的2^0=1,相应2进数为"0001"(在这里^我表示成"次方",即:2的0次方,下同)2^1=2,相应2进数为"0010"2^2=4,相应2进数为"0100"2^3=8,相应2进数为"1000"要判断一个数在某些数范围内就可以使用 & 运算符 阅读全文

Windows Server 2008 R2下配制负载均衡

2012-09-27 16:38 by C#与.NET探索者, 278 阅读, 收藏,
摘要: 两台web 服务器,操作系统是Windows Server 2008 R2,申请三个IP地址及要做负载平衡的域名(www.test.cn),其中一个IP地址为虚拟IP地址,另外两个分别配置在两台服务器上,例:虚拟IP: 11.1.6.13 两台的地址分别为11.1.6.11, 11.1.6.12两台服务须安装的内容如下:服务器(11.1.6.11): 1. 安装负载均衡服务 2. 在此服务器上配制负载均衡操作(以下以此台服务器为例)服务器(11.1.6.12):1. 安装负载均衡服务负载平衡种类: 1。同一台机子打开不同页面时连接的服务器都不同(存在Session共享问题) 2. 一台机子连接 阅读全文

负载均衡(续)

2012-09-27 16:38 by C#与.NET探索者, 307 阅读, 收藏,
摘要: 环境: 2台电脑,操作系统均为windows server 2003,单网卡。2台电脑经路由器连接,路由器连猫拨号上网。路由地址:192.168.0.1,在路由器设置80端口映射到192.168.0.10 电脑A手动设置ip 192.168.0.100,电脑B手动设置ip 192.168.0.101 每台电脑上建一测试网站。网站的ip地址绑定为192.168.0.10(与后面设置的集群ip相同) A电脑上网站放上一个内容为192.168.0.100 的index.html B电脑上网站放上一个内容为192.168.0.101 的index.html第一步,先设置电脑A确认后... 阅读全文

jQuery复习(转)

2012-09-25 18:31 by C#与.NET探索者, 156 阅读, 收藏,
摘要: addClass()向匹配的元素添加指定的类名。after()在匹配的元素之后插入内容。append()向匹配的元素内部追加内容。appendTo()向匹配的元素内部追加内容。attr()设置或返回匹配元素的属性和值。before()在每个匹配的元素之前插入内容。clone()创建匹配元素集合的副本。detach()从 DOM 中移除匹配元素集合。empty()删除匹配的元素集合中所有的子节点。hasClass()检查匹配的元素是否拥有指定的类。html()设置或返回匹配的元素集合中的 HTML 内容。insertAfter()把匹配的元素插入到另一个指定的元素集合的后面。insertBefo 阅读全文

jquery中datatables插件学习续(转载)

2012-09-22 16:27 by C#与.NET探索者, 377 阅读, 收藏,
摘要: jquery表格插件datatables应用实例DataTables的主页是http://www.datatables.net/先上个这个demo的截图,设想的操作是输入客户名称,按检索后进行模糊检索进行分 页显示,每页显示8条记录。1 页面部分使用DataTables时,html需要如下书写,其中tfoot部分是表表格的下部标题,可以不要。Html代码< table class = "display" id = "customerInfo" > < thead > < tr > < th > ID < 阅读全文

jquery中datatables插件学习笔记(转载)

2012-09-22 16:09 by C#与.NET探索者, 312 阅读, 收藏,
摘要: DataTables是一个jQuery的表格插件。这是一个高度灵活的工具,依据的基础逐步增强,这将增加先进的互动控制,支持任何HTML表格。官方网站及其下载:http:/www.datatables.net 下载的1.6版本里面内容很全面。自动分页处理 即时表格数据过滤 数据排序以及数据类型自动检测 自动处理列宽度 可通过CSS定制样式 支持隐藏列 易用 可扩展性和灵活性 国际化 动态创建表格 免费的 使用:首先。<title>DataTables example</title><style type="text/css" title=&quo 阅读全文

Jquery中datatables插件的使用示例

2012-09-22 15:45 by C#与.NET探索者, 1231 阅读, 收藏,
摘要: datatables fnServerData进行服务器端分页$(function(){$('#manageDataTable').dataTable({"bJQueryUI":true,"iDisplayLength":20,"bProcessing":true,"bServerSide":true,"sPaginationType":"full_numbers","aLengthMenu":[[20,50,100],["20& 阅读全文

sql语句参数化模糊查询的问题

2012-09-20 16:58 by C#与.NET探索者, 591 阅读, 收藏,
摘要: 1、使用参数化SQL语句进行模糊查找的正确方法://定义sql语句 string sql = "SELECT StudentID,StudentNO,StudentName FROM Student WHERE StudentName like @StudentName"; //给参数赋值command.Parameters.AddWithValue("@StudentName", txtStudentName.Text+"%");2.错误做法1://定义sql语句 string sql = "SELECT StudentI 阅读全文

我的WCF之旅(12):使用MSMQ进行Reliable Messaging(转载)

2012-09-10 13:21 by C#与.NET探索者, 224 阅读, 收藏,
摘要: 一、为什么要使用MSMQ在一个分布式的环境中,我们往往需要根据具体的 情况采用不同的方式进行数据的传输。比如在一个Intranet内,我们一般通过TCP进行高效的数据通信;而在一个Internet的环境中,我们则通 常使用Http进行跨平台的数据交换。而这些通信方式具有一个显著的特点,那就是他们是基于Connection的,也就是说,交互双方在进行通信的时候 必须保证有一个可用的Connection存在于他们之间。而在某些时候,比如那些使用拨号连接的用户、以及使用便携式计算机的用户,我们不能保证在他们 和需要访问的Server之间有一个的可靠的连接,在这种情况下,基于Messaging Que 阅读全文

我的WCF之旅(13):创建基于MSMQ的Responsive Service(转载)

2012-09-10 13:21 by C#与.NET探索者, 185 阅读, 收藏,
摘要: 一、One-way MEP V.S. Responsible Service我们知道MSMQ天生就具有异步的特性,它只能 以One-way的MEP(Message Exchange Pattern)进行通信。Client和Service之间采用One-way MEP的话就意味着Client调用Service之后立即返回,它无法获得Service的执行结果,也无法捕捉Service运行的 Exception。下图简单表述了基于MSMQ的WCF Service中Client和Service的交互。但是在有些场景 中,这是无法容忍的。再拿我在上一篇文章的Order Delivery的例子来说。Cli 阅读全文

我的WCF之旅(10): 如何在WCF进行Exception Handling(转载)

2012-09-10 13:20 by C#与.NET探索者, 195 阅读, 收藏,
摘要: 在任何Application的开发中, 对不可预知的异常进行troubleshooting时,异常处理显得尤为重要。对于一般的.NET系统来说,我们简单地借助try/catch可以很容 易地实现这一功能。但是对于 一个分布式的环境来说,异常处理就没有那么简单了。按照面向服务的原则,我们把一些可复用的业务逻辑以Service的形式实现,各个Service处于 一个自治的环境中,一个Service需要和另一个Service进行交互,只需要获得该Service的描述(Description)就可以了(比如 WSDL,Schema和Strategy)。借助标准的、平台无关的通信构架,各个Service 阅读全文

我的WCF之旅(11):再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯(转载)

2012-09-10 13:20 by C#与.NET探索者, 238 阅读, 收藏,
摘要: 在一个基于面向服务的分布式环境中,借助 一个标准的、平台无关的Communication Infrastructure,各个Service通过SOAP Message实现相互之间的交互。这个交互的过程实际上就是Message Exchange的过程。WCF支持不同形式的Message Exchange,我们把这称之为Message Exchange Pattern(MEP), 常见的MEP包括: Request/Reply,Request/Forget(One-way)和Duplex。通过采用Duplex MEP,我们可以实现在Service端Callback Client的操作。虽然WCF为 阅读全文

我的WCF之旅(8):WCF中的Session和Instancing Management(转载)

2012-09-10 13:19 by C#与.NET探索者, 220 阅读, 收藏,
摘要: WCF中的Session我们知道,WCF是MS基于SOA建立的一套在 分布式环境中各个相对独立的Application进行Communication的构架。他实现了最新的基于WS-*规范。按照SOA的原则,相对独自 的业务逻辑以service的形式封装,调用者通过Messaging的方式调用Service。对于承载着某个业务功能的实现的Service应该具有 Context无关性、甚至是Solution无关性,也就是说个构成Service的operation不应该绑定到具体的调用上下文,对于任何调用, 具有什么样的输入,就会有与之对应的输出。因为SOA的一个最大的目标就是尽可能地实现重用,只有 阅读全文

我的WCF之旅(9):如何在WCF中使用tcpTrace来进行Soap Trace(转载)

2012-09-10 13:19 by C#与.NET探索者, 144 阅读, 收藏,
摘要: 无论对于Web Service还是WCF,Client和Service之间交互的唯一形式是通过发送和接收Soap Message。在我们对Web Service和WCF进行深入学习的时候,借助一些Soap Trace 工具对Soap Message进行深入剖析是非常有必要的。在这些工具之中,我觉得最好用的就是Microsoft Soap Toolkit中的Soap Trace Utility和tcpTrace。我们今天就来讲讲如何在WCF中使用tcpTrace这个工具。首先我们来讲讲tcpTrace实现的基本原 理。说的简单点TcpTrace就是一个监听/转发器(Listening/Forwa 阅读全文

我的WCF之旅(6):在Winform Application中调用Duplex Service出现TimeoutException的原因和解决方案(转载)

2012-09-10 13:18 by C#与.NET探索者, 166 阅读, 收藏,
摘要: 几个星期之前写了一篇关于如何通过WCF进行 双向通信的文章([原创]我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication) ), 在文章中我提供了一个如果在Console Application 调用Duplex WCF Service的Sample。前几天有个网友在上面留言说,在没有做任何改动得情况下,把 作为Client的ConsoleApplication 换成Winform Application,运行程序的时候总是出现Timeout的错误。我觉得这是一个很好的问题,通过这个问题,我们可以更加深入地理解WCF的消息交 换的机制。1.问题 阅读全文

我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承(转载)

2012-09-10 13:18 by C#与.NET探索者, 275 阅读, 收藏,
摘要: 当今的IT领域,SOA已经成为了一个非常时髦的词,对SOA风靡的程度已经让很多人对 SOA,对面向服务产生误解。其中很大一部分人甚至认为面向服务将是面向对象的终结,现在的面向对象将会被面向服务完全代替。在开始本Blog之前,我先 来谈谈我对SOA和OO的区别,首先申明,这只是一家之言,欢迎大家批评指正,并且关于SO的谈论不是本Blog的主题,只是主题的引子,在这里只是简单 讨论而已 。OO和SO之间具有共同的部分,在运用的领域上存在交集,只有在基于他们交集层面上谈论谁是谁非才有意义,下面是我对SO和OO的区别。OO关注的是如何通过对实体属性和行为的封装来 重塑模拟软件环境的真实实体。对SO关注 阅读全文

我的WCF之旅(4):WCF中的序列化(Serialization)- Part II (转载)

2012-09-10 13:17 by C#与.NET探索者, 188 阅读, 收藏,
摘要: ... ...续Part I([原创] 我的WCF之旅(4):WCF中的序列化(Serialization)- Part I)XMLSerializer提到XMLSerializer,我想绝大多数人都知道这是asmx采用的Serializer。首先我们还是来看一个例子,通过比较Managed Type的结构和生成的XML的结构来总结这种序列化方式采用的是怎样的一种Mapping方式。和DataContractSerialzer Sample一样,我们要定义用于序列化对象所属的Type——XMLOrder和XMLProduct,他们和相面对应的DataContractOrder和DataCont 阅读全文

我的WCF之旅(5):Service Contract中的重载(Overloading)(转载)

2012-09-10 13:17 by C#与.NET探索者, 214 阅读, 收藏,
摘要: 对于.NET重载(Overloading) ——定义不同参数列表的同名方法(顺便提一下,我们但可以在参数列表上重载方法,我们甚至可以在返回类型层面来重载我们需要的方法——页就是说,我们可以 定义两个具有相同参数列表但不同返回值类型的两个同名的方法。不过这种广义的Overloading不被我们主流的.NET 语言所支持的——C#, VB.NET, 但是对于IL来说,这这种基于返回值类型的Overloading是支持的)。相信大家听得耳朵都要起老茧了。我想大家也清楚在编写传统的XML Web Service的时候,Overloading是不被支持的。原因很简单,当我们用某种支持.NET的高级语 言 阅读全文

我的WCF之旅(4):WCF中的序列化(Serialization)- Part I(转载)

2012-09-10 13:16 by C#与.NET探索者, 204 阅读, 收藏,
摘要: SOA 和MessageWindows Communication Foundation (WCF) 是基于面向服务架构(Service Orientation Architecture——SOA)的一种理想的分布式技术(Distributed Technology), 相信在今后在建立基于SOA企业级别的解决方案和进行系统集成方面将会大有作为。一个基于SOA结构的互联系统(Connected System)通常由若干相互独立的子系统(Sub-System)组成,这些子系统可能一个独立的Application,也可能是由若干Application相互集成共同完成一组相关的任务的小系统。这些子系 阅读全文

我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication)(转载)

2012-09-10 13:15 by C#与.NET探索者, 224 阅读, 收藏,
摘要: 双工(Duplex)模式的消息交换方式体现在消息交换过程中,参与的双方均可以向对方发送消息。基于双工MEP消息交换可以看成是多个基本模式下 (比如请求-回复模式和单项模式)消息交换的组合。双工MEP又具有一些变体,比如典型的订阅-发布模式就可以看成是双工模式的一种表现形式。双工消息交 换模式使服务端回调(Callback)客户端操作成为可能。一、两种典型的双工MEP1.请求过程中的回调这是一种比较典型的双工消息交换模式的表现形式,客户端在进行服务调用的时候,附加上一个回调对象;服务在对处理该处理中,通过客户端附加的回调对 象(实际上是调用回调服务的代理对象)回调客户端的操作(该操作在客户端执行 阅读全文

我的WCF之旅(2):Endpoint Overview(转载)

2012-09-10 13:14 by C#与.NET探索者, 196 阅读, 收藏,
摘要: WCF实际上是构建了一个框架,这个框架实现了 在互联系统中各个Application之间如何通信。使得Developers和Architect在构建分布式系统中,无需在考虑如何去实现通信相关 的问题,更加关注与系统的业务逻辑本身。而在WCF Infrastructure中,各个Application之间的通信是由Endpoint来实现的。Endpoint的结构Endpoint包含以下4个对象:Address: Address通过一个URI唯一地标识一个Endpoint,并告诉潜在的WCF service的调用者如何找到这个Endpoint。所以Address解决了Where to locate 阅读全文

我的WCF之旅(1):创建一个简单的WCF程序(转载)

2012-09-10 13:12 by C#与.NET探索者, 154 阅读, 收藏,
摘要: 为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一 样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端和服务端进程互相调用的关系。图1 计算服务应用运行环境WCF的服务不能孤立地存在,需要寄 阅读全文

C#中Attribute特性的用法(转载)

2012-09-07 10:37 by C#与.NET探索者, 880 阅读, 收藏,
摘要: Attribute 类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。目标元素可以是程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植可执行文件模块、参数、属性 (Property)、返回值、结构或其他属性 (Attribute)。属性所提供的信息也称为元数据。元数据可由应用程序在运行时进行检查以控制程序处理数据的方式,也可以由外部工具在运行前检查以控制应用程序处理或维护自身的方式。例如,.NET Framework 预定义属性类型并使用属性类型控制运行时行为,某些编程语言使用属性类型表示 .NET Framework 公共类型系统不直接支持的语言功能。所有属性类型都直 阅读全文

jQuery插件编写3(转载)

2012-09-05 18:51 by C#与.NET探索者, 156 阅读, 收藏,
摘要: jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就两种函数的开发做详细的说明。1、类级别的插件开发类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。关于类级别的插件开发可以采用如下几种形式进行扩展:1.1 添加一个新的全局函数添加一个全局函数,我们只需如下定义:Java代码jQuery.f 阅读全文

jQuery扩展方法2(转载)

2012-09-05 16:08 by C#与.NET探索者, 139 阅读, 收藏,
摘要: 我们先用最常用的插件方法创建一个库jQuery.fn.redhome = function() { //库的内容};那么,如果要调用redhome这个方法,直接可以$obj.redhome(args)这里解释下jQuery.fn是啥东西jQuery = window.jQuery = window.$ = function( selector, context ) {// The jQuery object is actually just the init constructor ‘enhanced’return new jQuery.fn.init( selector, context ) 阅读全文

jQuery插件开发方法(转载)

2012-09-05 15:23 by C#与.NET探索者, 159 阅读, 收藏,
摘要: jQuery为开发插件提拱了两个方法,分别是:jQuery.fn.extend(object);jQuery.extend(object);jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。jQuery.fn.extend(object);给jQuery对象添加方法。fn 是什么东西呢。查看jQuery代码,就不难发现。jQuery.fn = jQuery.prototype = { init: function( selector, context ) {//.... //......};原来 jQuery.fn = jQuery.proto... 阅读全文

自定义jQueryUI Widget(转载)

2012-09-01 18:59 by C#与.NET探索者, 472 阅读, 收藏,
摘要: 又是第一次,现在的感受是jQueryUI Widget能让你代码组织得更好,风格更一致。如何开始使用首先用$.widget()方法开始定义你的组件,它只接收三个参数:第一个是组件名称,第二个是可选的基类组件(默认的基类是$.Widget),第三个是组件的原型。组件名称必须包含命名空间,要注意的是,官方组件的命名空间是以‘ui’开头的,比如:‘ui.tabs’。我在下面的用‘我’的拼音(‘wo’)。$.widget("yourNamespace.yourWidgetName",[yourBaseWidget],yourWidgetPrototype)$.Widget基类含有一 阅读全文

C#基础:委托之Action<T>和Func<T>的用法(转)

2012-09-01 12:04 by C#与.NET探索者, 225 阅读, 收藏,
摘要: 我们在使用委托的过程中,除了为每个参数和返回类型定义一个委托之外,也就是说为每一个方法(作为参数的方法)定义一个委托,我们还可以使用Action<T>和Func<T>委托。 泛型Action<T>委托表示引用一个void返回类型的方法。Action<T>委托类存在不同的变体,可以传递至多16种不同的参数类型,没有泛型参数的Action类可以调用没有参数的方法。例如:Action<in T1>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法等 Func<T>的用法和Action&l 阅读全文

Action<T>和Func<T>的使用(转)

2012-09-01 11:58 by C#与.NET探索者, 246 阅读, 收藏,
摘要: 泛型Action<T>委托和Func<T>委托是系统定义的两个泛型委托。 Action<T>委托表示引用一个返回类型为Void的方法。这个委托存在不同的变体,可以传递之多16个不同的参数类型。同时,没有泛型 参数的Action类可以调用没有参数的方法。例如,Action<in T>表示有一个输入参数的方法,Action<in T1,in T2>表示有两个输入参数的方法。 Func<T>可以以类似的方法使用。不过Func<T>允许调用带返回参数的方法。Func<T>也有不同的变 体,之多可以传递16个 阅读全文

C#中Action<T>委托的简单使用(转)

2012-09-01 11:53 by C#与.NET探索者, 468 阅读, 收藏,
摘要: 在使用 Action<T> 委托时,不必显式定义一个封装只有一个参数的方法的委托。以下代码显式声明了一个名为 DisplayMessage 的委托,并将对 WriteLine 方法或 ShowWindowsMessage 方法的引用分配给其委托实例。usingSystem;usingSystem.Windows.Forms;delegatevoid DisplayMessage(stringmessage);publicclass TestCustomDelegate{ publicstatic void Main() { DisplayMessage messageTarget; 阅读全文

javascript将网页表格导出Word(转载)

2012-09-01 00:56 by C#与.NET探索者, 725 阅读, 收藏,
摘要: javascript将网页表格导出Word<script>function AllAreaWord() { if(document.all("tab").rows.length==0) { alert("没有内容可导!"); return; } try{ var oWD = new ActiveXObject("Word.Application"); }catch(e) { alert("无法调用Office对象,请确保您的机器已安装了Office并已将本系统的站点名加入到IE的信任站点列表中!"); 阅读全文