用2的n次方标识单个的权限 如

0 无权限
1 可读(read)
2 可新增(insert)
4 可修改(update)
8 可删除(delete)
16 可审核
...
权限的组合

read +insert = 1+2=3
read +insert +delete = 1+2+8=11
read + update+delete =1+4+8=13


(value = 2的n次方)
增加权限
power = power | value

删除权限
power = power &~ value

btw:  可以一次增加或删除多个权限的组合
power = power | 13   同时增加 read + update+delete
power = power &~ 3   同时删除 read + insert


判断权限
可以同时判断单个权限,也可以同时判断多个组合权限

power & value = value

posted @ 2011-05-05 18:04 每天积累一点 阅读(59) 评论(0) 编辑

锁机制

NOLOCKREADPAST的区别。

1.       开启一个事务执行插入数据的操作。

BEGIN TRAN t

INSERT INTO Customer

SELECT 'a','a'

2.       执行一条查询语句。

SELECT * FROM Customer WITH (NOLOCK)

结果中显示”a””a”。当1中事务回滚后,那么a将成为脏数据。(:1中的事务未提交) NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修改。

SELECT * FROM Customer

这条语句将一直死锁,直到排他锁解除或者锁超时为止。(:设置锁超时SET LOCK_TIMEOUT 1800)

SELECT * FROM Customer WITH (READPAST)

这条语句将显示a未提交前的状态,但不锁定整个表。这个提示指明数据库引擎返回结果时忽略加锁的行或数据页。

3.       执行一条插入语句。

BEGIN TRAN t

INSERT INTO Customer

SELECT 'b','b'

COMMIT TRAN t

这个时候,即使步骤1的事务回滚,那么a这条数据将丢失,而b继续插入数据库中。 

 

NOLOCK

1. 执行如下语句。

BEGIN TRAN ttt

SELECT * FROM Customer WITH (NOLOCK)

WAITFOR delay '00:00:20'

COMMIT TRAN ttt

注:NOLOCK不加任何锁,可以增删查改而不锁定。

INSERT INTO Customer SELECT 'a','b' –不锁定

DELETE Customer where ID=1 不锁定

SELECT * FROM Customer 不锁定

UPDATE Customer SET Title='aa' WHERE ID=1 不锁定

 

ROWLOCK

1.       执行一条带行锁的查询语句。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- (必须)

BEGIN TRAN ttt

SELECT * FROM Customer WITH (ROWLOCK) WHERE ID=17

WAITFOR delay '00:00:20'

COMMIT TRAN ttt

注:在删除和更新正在查询的数据时,会锁定数据。对其他未查询的行和增加,查询数据无影响。

INSERT INTO Customer SELECT 'a','b' –不等待

 

DELETE Customer where ID=17 –等待

DELETE Customer where ID<>17 –不等待

 

SELECT * FROM Customer –不等待

 

UPDATE Customer SET Title='aa' WHERE ID=17–等待

UPDATE Customer SET Title='aa' WHERE ID<>17–不等待

 

 

HOLDLOCKTABLOCKTABLOCKX

1.       执行HOLDLOCK

BEGIN TRAN ttt

SELECT * FROM Customer WITH (HOLDLOCK)

WAITFOR delay '00:00:10'

COMMIT TRAN ttt

注:其他事务可以读取表,但不能更新删除  

update Customer set Title='aa' 要等待10秒中。

SELECT * FROM Customer —不需要等待

2.       执行TABLOCKX

BEGIN TRAN ttt

SELECT * FROM Customer WITH (TABLOCKX)

WAITFOR delay '00:00:10'

COMMIT TRAN ttt

注:其他事务不能读取表,更新和删除

update Customer set Title='aa' 要等待10秒中。

SELECT * FROM Customer —要等待10秒中。

3. 执行TABLOCK

BEGIN TRAN ttt

SELECT * FROM Customer WITH (TABLOCK)

WAITFOR delay '00:00:10'

COMMIT TRAN ttt

注:其他事务可以读取表,但不能更新删除  

update Customer set Title='aa' 要等待10秒中。

SELECT * FROM Customer —不需要等待

UDPLOCK

1.       A连接中执行。

BEGIN TRAN ttt

SELECT * FROM Customer WITH (UPDLOCK)

WAITFOR delay '00:00:10'

COMMIT TRAN ttt

2.       在其他连接中执行。

update Customer set Title='aa' where ID=1—要等10

SELECT * FROM Customer –不用等

insert into Customer select 'a','b'不用等

注:对于UDPLOCK锁,只对更新数据锁定。

 

注:使用这些选项将使系统忽略原先在SET语句设定的事务隔离级别(SET Transaction Isolation Level)

 

事务隔离级别

脏读:READ UNCOMMITTED

脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。

1.       A连接中执行。

BEGIN TRAN t

INSERT INTO Customer

SELECT '123','123'

WAITFOR delay '00:00:20'

COMMIT TRAN t

2.       B连接中执行。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SELECT * FROM Customer

这个时候,未提交的数据会’123’会显示出来,当A事务回滚时就导致了脏数据。相当于(NOLOCK)

提交读:READ COMMITTED

1.       A连接中执行。

BEGIN TRAN t

INSERT INTO Customer

SELECT '123','123'

WAITFOR delay '00:00:20'

COMMIT TRAN t

2.       B连接中执行。

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

SELECT * FROM Customer

这个时候,未提交的数据会’123’不会显示出来,当A事务提交以后B中才能读取到数据。避免了脏读。

不可重复读:REPEATABLE READ

不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。

例如:

1.       A连接中执行如下语句。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

BEGIN TRAN ttt

SELECT * FROM Customer WHERE ID=17

WAITFOR delay '00:00:30'

SELECT * FROM Customer WHERE ID=17

COMMIT TRAN ttt

2.       B连接中执行如下语句,而且要在第一个事物的三十秒等待内。

UPDATE Customer SET Title='d' WHERE ID=17

这个时候,此连接将锁住不能执行,一直等到A连接结束为止。而且A连接中两次读取到的数据相同,不受B连接干扰。

注,对于Read CommittedRead UnCommitted情况下,B连接不会锁住,等到A连接执行完以后,两条查询语句结果不同,即第二条查询的Title变成了d

序列化读:SERIALIZABLE

 

1.       A连接中执行。

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

BEGIN TRAN t

UPDATE Customer SET Title='111'

WAITFOR delay '00:00:20'

COMMIT TRAN t

2. B连接中执行,并且要在A执行后的20秒内。

BEGIN TRAN tt

INSERT INTO Customer

SELECT '2','2'

COMMIT TRAN tt

A连接的事务提交之前,B连接无法插入数据到表中,这就避免了幻觉读。

注:幻觉读是指当事务不是独立执行时发生的一种现象,例如 第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好像发生了幻觉一样。

共享锁

共享锁(S 锁)允许并发事务在封闭式并发控制(请参阅并发控制的类型)下读取 (SELECT) 资源。资源上存在共享锁(S 锁)时,任何其他事务都不能修改数据。读取操作一完成,就立即释放资源上的共享锁(S 锁),除非将事务隔离级别设置为可重复读或更高级别,或者在事务持续时间内用锁定提示保留共享锁(S 锁)。

更新锁

更新锁(U 锁)可以防止常见的死锁。在可重复读或可序列化事务中,此事务读取数据 [获取资源(页或行)的共享锁(S 锁)],然后修改数据 [此操作要求锁转换为排他锁(X 锁)]。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排他锁(X 锁)。共享模式到排他锁的转换必须等待一段时间,因为一个事务的排他锁与其他事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排他锁(X 锁)以进行更新。由于两个事务都要转换为排他锁(X 锁),并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。

若要避免这种潜在的死锁问题,请使用更新锁(U 锁)。一次只有一个事务可以获得资源的更新锁(U 锁)。如果事务修改资源,则更新锁(U 锁)转换为排他锁(X 锁)。

排他锁

排他锁(X 锁)可以防止并发事务对资源进行访问。使用排他锁(X 锁)时,任何其他事务都无法修改数据;仅在使用 NOLOCK 提示或未提交读隔离级别时才会进行读取操作。

数据修改语句(如 INSERTUPDATE DELETE)合并了修改和读取操作。语句在执行所需的修改操作之前首先执行读取操作以获取数据。因此,数据修改语句通常请求共享锁和排他锁。例如,UPDATE 语句可能根据与一个表的联接修改另一个表中的行。在此情况下,除了请求更新行上的排他锁之外,UPDATE 语句还将请求在联接表中读取的行上的共享锁。

 

posted @ 2010-07-06 23:23 每天积累一点 阅读(57) 评论(0) 编辑
Embedding the Remote Desktop ActiveX Control in a Web Page

You can embed the Remote Desktop ActiveX control in a Web page by inserting the HTML OBJECT element, as in the following example.

<OBJECT language="vbscript" ID="MsRdpClient"
    onerror="OnControlLoadError"
    onreadystatechange="OnControlLoad"
    CLASSID="CLSID:4eb89ff4-7f78-4a0f-8b8d-2bf02e94e4b2"
    WIDTH=800
    HEIGHT=600>
</OBJECT>

The CLSID is for the ActiveX control that is hosted by Remote Desktop Connection (RDP) 6.0. This ActiveX control implements MsRdpClient5.

 

 

Send comments about this topic to Microsoft

Build date: 5/27/2010

Community ContentAdd
Annotations
<OBJECT language="vbscript" ID="MsRdpClient"

<OBJECT language="vbscript" ID="MsRdpClient"
CLASSID="CLSID:9059f30f-4eb1-4bd2-9fdc-36f43a218f4a"
CODEBASE="msrdp.cab#version=5,1,2524,0"
WIDTH=<% resWidth = Request.QueryString("rW")
if resWidth < 200 or resWidth > 1600 then
resWidth = 800
end if
Response.Write resWidth %>
HEIGHT=<% resHeight = Request.QueryString("rH")
if resHeight < 200 or resHeight > 1200 then
resHeight = 600
end if
Response.Write resHeight %>>
<PARAM NAME = property1 value = property1value>
<PARAM NAME = property2 value = property2value>
...
</OBJECT>

posted @ 2010-07-01 16:13 每天积累一点 阅读(247) 评论(0) 编辑

由于项目需要,打开窗体的位置要位于屏幕的右下方,所以默认的位置解决不了,那就自定义显示位置,可以设置显示到任意位置
我的窗体大小为240×109,在显示器的右下角打开。


int WidthLocation= System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Width - 240;
int HeightLocation =System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Height - 109;
this.SetDesktopLocation(WidthLocation,HeightLocation );

根据自己的窗体大小,可以任意设置显示位置

窗体显示屏幕下边,窗体显示屏幕左边,窗体显示屏幕右边,窗体显示屏幕上边都可以自定义解决

posted @ 2010-05-24 16:09 每天积累一点 阅读(209) 评论(0) 编辑

 

转载http://news.csdn.net/a/20100519/218442.html

 

几乎所有的富 Web 应用都基于一个或多个 Web UI 库或框架,这些 UI 库与框架极大地简化了开发进程,并带来一致,可靠,以及高度交互性的用户界面。本文介绍了 15 个非常强大的 JavaScript Web UI 库,非常适合各种各种规模的富 Web 应用的开发。

LivePipe

LivePipe UI 基于 Prototype Javascript 框架,包含了一整套经严格测试并高度可扩展的 UI 控件,拥有很好的文档,在不支持 JavaScript 的环境中,可以无缝降级使用。包括 Tab, 窗体,文本框,多选框,评分控件,进度条,滚动条,右键菜单等多种控件。

LivePipe 首页与下载
LivePipe 演示与示例

 

UKI

UKI 是一套简单的 JavaScript UI 工具集,用于快速创建桌面风格的 Web 应用。包含的控件从滑动条,到分栏视图,不一而足。熟悉 jQuery 的开发者会发现这个工具很容易上手,非常简洁,无需安装框架,不依赖 CSS 引用。

UKI 主页与下载
UKI 控件,演示,示例

 

MochaUI

MochaUIMooTools Javascript 框架 与 ExplorerCanvas 的一个备受欢迎的扩展,可以用来快速创建 Web 应用,Web 桌面,网站,饰件,独立 Windows,Modal 对话框等等。

MochaUI 主页与下载
MochaUI 控件,演示,示例

中文编译来源:锐商企业CMS 网站内容管理系统 官方网站

Sigma Ajax UI Builder

SigmaVisual 是一套基于 Web 的,所见即所得的 AJAX UI 创建工具,包含超过40个不见,如 Tab,对话框,树形图,时间线等,基于 JavaScript 和 PHP。

Sigma Ajax UI Builder 主页和下载
Sigma Ajax UI Builder 控件,演示和示例

 

JxLib based MooTools

JxLib 是一个基于 MooTools 的 JavaScript UI 框架,包含多数 Web 程序都需要的基本空间,如按钮,Tab,菜单,树形结构,对话框等等。JxLib 还支持换肤功能。

JxLib 主页与下载
JxLib 控件,演示与示例

 

Dijit – The Dojo Toolkit

Dijit 基于 Dojo,也是学习 Dojo 扩展的一个好起点。可以用来创建非常漂亮的 Web 2.0 GUI。支持多语种,甚至支持不同语种的文字书写方向以及本地化数字,日期等等。

Dijit 主页,下载
Dijit 控件,演示,示例

 

jQuery TOOLS

jQuery Tools 是一个非常轻量(2.5kb)的常用 UI 库,支持以下 jQuery 对象,Tabs, 工具提示,滚动条,层,表单以及 Flash 嵌套。

jQuery TOOLS 主页与下载
jQuery TOOLS 控件,演示,示例

 

jQuery UI

jQuery UI 基于 jQuery,包含 3 个大类,饰件,一些内置的 UI 对象;效果,对各种网页对象施加动画效果(如爆炸效果);鼠标交互,如拖放操作。

jQuery UI 首页与下载
jQuery UI 控件,演示与示例

 

Prototype UI

Prototype UI 基于 PrototypeScript.aculo.us,包括多个模块(旋转木马,Modal 窗口,阴影,右键菜单等),每个模块可以单独安装使用。

Prototype UI 主页与下载
Prototype UI 控件,演示与示例

 

Jitsu

Jitsu 功能包括 XML 标记,页面编译,动画引擎,Ajax 以及运行时检测等等,它的 Ajax 功能使消费级 Web 应用的创建变得非常简单,支持客户端数据绑定,还可以将页面编译成 JavaScript,Jitsu 在 Firefox 和 IE 中运行最佳。

Jitsu 主页与下载
Jitsu 控件,演示与示例

 

Qutensil

Qutensil 仍在开发中,但其路线图已经显示出某些引人注目的东西,基于 PrototypeScriptaculous ,包含消息,调色板,滑动条,工具提示,可拖放窗口以及警告,确认,提示等窗口。

Qutensil 主页,下载
Qutensil 控件,演示,示例

 

Script.aculo.us

script.aculo.us 是一个备受欢迎的 UI 工具集,基于 Prototype 框架,提供了诸如视觉效果,UI 控件以及面向 DOM 的工具。

Script.aculo.us 首页与下载

Alloy UI

AlloyUI 是一套功能丰富的 UI 框架,基于 YUI 3,部分基于 YUI 2,包含一套丰富的(超过60)UI 部件,如图片库,对话框,树形结构,面板,自动完成,按钮,日历控件,工具条等。

Alloy UI 首页和下载
Alloy UI 控件,演示与示例

 

iUI: iPhone UI 框架

IUI 包含一套 JavaScript 库,CSS 式样表及图片,是一个轻量级 iPhone UI 库,包含 iPhone 风格导航菜单,设备方向,iPhone 风格切换等功能,可以为你的 Web 程序带来 iPhone 般的体验。

iUI 主页与下载

XUI

XUI 是一个用于移动 Web 应用的轻量,极简,高度模块化的框架。它之所以非常轻量的原因是,它只支持移动浏览器,所有跨浏览器支持的代码都被剥离。它面向一线移动 Web 浏览器,如 Webkit,Fennec 以及 Opera,并有意将来对移动 IE 和黑莓提供支持。

XUI 首页,下载

Yahoo! YUI Library

Yahoo! YUI Library 可谓所有 Web UI 之父,可靠,功能丰富,目前已经发展到第 3 版。它拥有一个很庞大的开发团队,推出了非常丰富的功能,就功能而言,无可匹敌。

YUI Library 主页与下载
YUI2 入门
YUI3 入门
YUI3 控件,演示与示例

posted @ 2010-05-19 16:27 每天积累一点 阅读(57) 评论(0) 编辑
摘要: 远程桌面连接的确很方便,但是在Windows XP中只支持单一用户的连接,当第二个用户连接时,第一个用户就被迫断开并回到用户登录界面了,这可和多任务的操作系统理念不符啊,或许微软是为了突出Server系统的特点吧! 不过没关系,网上早就有用2055测试版的termsrv.dll替换的方法,不过对于最新的SP3来说,还有更好的办法: 1. 下载破解的termsrv.dll(下载地址),版本:5.1....阅读全文
posted @ 2010-05-18 12:01 每天积累一点 阅读(244) 评论(0) 编辑
摘要: 1、在开始-》运行中打入dcomcnfg.exe,启动组件服务。 2、在组件服务中,选择控制台根目录-》组件服务-》计算机-》我的电脑-》DCOM配置-》Microsoft Excel应用程序,右击属性,打开属性窗口。 3、在安全页签中,对配置启动和激活权限进行自定义,加入Everyone 的完全权限。 4,改为交互式方式,以上设置完成后,会发现打印生效了。阅读全文
posted @ 2010-05-14 10:22 每天积累一点 阅读(80) 评论(0) 编辑
摘要: 转载http://blog.csdn.net/yearafteryear/archive/2010/04/19/5503749.aspx在安装好WinCE 6.0 R3开发环境后我们就可以通过下列步骤向定制的系统添加微软的silverlight示例程序:XAMLPERF。 关于XAMLPERF的介绍大家可以参考微软MSDN的说明http://msdn.microsoft.com/en-us/lib...阅读全文
posted @ 2010-04-29 17:50 每天积累一点 阅读(399) 评论(0) 编辑
摘要: 1、下载虚拟网卡驱动程序2、在PC上安装虚拟网卡驱动3、在VisualStudio2005中配置仿真器启动参数4、配置PocketPC2003SE设备仿真器网卡参数5、配置PocketPC2003SE设备仿真器虚拟网卡绑定6、要求配置完后软启动一次仿真器,之后测试仿真器网络配置是否成功。第一步,要求下载虚拟网卡驱动程序。微软官方下载地址:http://www.microsoft.com/downl...阅读全文
posted @ 2009-11-27 15:07 每天积累一点 阅读(479) 评论(0) 编辑
摘要: 新装的SQL SERVER 2008,打开原来SQL SERVER 2008中建立的表,现在想增加一些字段,在保存时提示错误,无法保存。 刚开始以为是SQL SERVER 2008与2005的不兼容,后来发现在SQL SERVER 2008中新建的表也存在无法修改表结构,也就是无法修改字段名和增加字段名。 提示是:不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改...阅读全文
posted @ 2009-11-26 10:26 每天积累一点 阅读(272) 评论(0) 编辑