记录生活和工作的点滴
0

删除数据表

删除以test开头的表,自己更改下条件就可以了可以试试看
declare @name varchar(20)
while(exists(select * from sysobjects where name like 'test%'))
begin
select @name=name from sysobjects where name like 'test%'
exec ('drop table '+@name)
end

 

若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。

与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:

  • 所用的事务日志空间较少。

    DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。
     
  • 使用的锁通常较少。

    当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。
     
  • 如无例外,在表中不会留有任何页。

    执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。
     

与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义与其索引和其他关联对象一起保留在数据库中。

0

DOS是怎样进行内存管理的

 

342.DOS是怎样进行内存管理的?
内存是计算机中存储程序代码以及数据的地方,是程序赖以运行的舞台。内存在计算机中编址,形成了内存地址空间,既包括了RAM内存,也包括了ROM内存。通常的内存
编址方法是按字节(8bit进行的,1M内存便是指大小为1兆字节的内存空间。以PC机为例,早期的8086/8088系统共有20根地址线,则可寻址2^20=1M字节;80286系统则有
24根地址线,相应可寻址2^24=16M字节,到了386、486,地址总线宽度扩大到了32根,可寻址的内存空间也扩大为4G字节。
内存地址空间又称为物理地址空间,它是实际主存储器的大小;相对有虚拟地址空间的概念,也称逻辑地址空间,它指的是应用程序的编级地址空间。二者有时等同,有时相互区别,这取决于系统的内存管理策略。
无论是早期的DOS版本,还是最近的6.22;DOS下直接使用的都是物理地址空间。如果要使用逻辑地址空间,你必须自己编程。这一点,我们后面还要讲到。
DOS是单用户单作业操作系统,因此采用的是固定分区内存管理技术,把内存低端部分(1M以下)固定地分成系统区和用户区(TPA),见图4-3。
当前版本的MS—DOS可以管理1MB的物理地址空间。在IBMPC及其兼容机上,由MS-DOS和其他程序所占的内存在地址0000H处开始,并可达地址09FFFFH,此640KB的RAM区域有时称为“常规内存区”。此地址以上的内存区是为ROM硬件驱动程序、视频刷新缓冲区等所保留的。非IBM兼容机有可能使用其他内存区段。在MS—DOS控制下的RAM区可分成两个主要部分:
操作系统区域
临时程序区域(TPA)


操作系统区域在地址0000H处开始,即它占用RAM的最低部分。该处有中断向量表、操作系统模块及其所拥有的表(table)和缓冲区,以及 config.sys)文件中指定的附加可安装设备驱动程序及command.com命令解释程序的驻留部分。操作系统区所占的内存量随MS-DOS版本、磁盘缓冲区数、可安装设备驱动程序个数与大小而改变。
临时程序区为RAM中所存操作系统区上面的剩余部分,是动态可分配的内存。DOS将在应用程序运行时总是试图把这部分内存分配给它,必要时系统区1(参见图4—3)将腾出以扩大TPA区。如果此区过小,则会出现。out of memory内存不够的错误,你的应用程序将无法运行。 
当出现此错误时,在低版本DOS中将是一筹莫展,在8086/8088中亦是如此,最多能做到的是不装载任何TSR程序。这意味着你甚至需要牺牲鼠标器支持;而高版本DOS则可以利用将要讲到的两点功能(1)把DOS自身一部分装载到HMA中,(2)把TSR程序和驱动程序装载到UMB,从而达到扩大 TPA,供应用程序运行的目的。
对于1M以上的内存,DOS将无能为力,除了下面将要讲到HMA以外。


================================================================
343.为什么在386、486的计算机上虽然有4M或更多的内存配置,却总是会出现“内存不够”的错误?

这正是DOS的局限性所带来的。从前面的问题中我们可以看出,在DOS中,真正供应用程序运行区域是TPA。DOS为了保持与8086/8088系统兼容性,把TPA限制在1M以下.所以有时计算机虽有4M或更多内存,你也无法直接使用。当然,1M以上的内存也还是可以利用的。

(1)在保护模式下,你可以直接寻址1M以上空问。DOS是无法做到这一点,而Windows或OS/2等其他操作系统可以做到。
(2)利用DOS提供的工具,间接访问1M以上空间,如EMS或XMS技术。关于EMS和XMS请参见《如何使用扩充内存(Expanded)》和《如何使用扩展内存Extended)》。


===============================
346.什么是常规内存、扩充内存、扩展内存?

常规内存(Conventional Memory)是指从00000H到9FFFPH这640k的内存空间,它是DOS的传统势力范围.DOS对这一段的划分和管理请参阅《DOS是怎样进行内存管理的》。

扩充内存(Expanded Memory)是一种不参与存储器统一统址的内存。其使用规范称作EMS(Expanded Memory Sepecfication),因为是由Lotus,Intel和Microsoft三家公司联合开发的,故也称作LIM EMS。早期XT机型上扩充内存以内存卡的物理形式出现,后来的高档微机上则可以由扩展内存(Extended Memory)来仿真扩充内存,这是CPU开始支持内存映射的结果。

扩展内存是原1MB内存空间的纵向延伸.这种内存只存在于80286以上的机型之中。这种内存,只是在“保护(protected)”方式时是可寻址的; DOS运行于real方式(实模式),仿真8086寻址空间,因此标准的DOS应用程序是不能直接访问它的。对286来说,CPU共有24根地址线,其扩展内存可达15MB,而在386,486或更高档机器上。扩展内存可拥有4GB-1MB的大小,这是因为它们的地址总线宽度为32位。

===============================
347 如何使用扩充内存(Expanded Memory)?

因为扩充内存没有统一编址,所以CPU不能象访问普通的主存那样通过地址线来直接访问它。这中间就需要扩充内存管理程序EMM,也既是软件技术的支持。
对扩充内存的访问有些像日常去图书馆借书。你是没有权力进入书库象查检自己的书柜那样进行“访问”的,只有去到柜台那儿,交给管理员小姐您的索书单,她便进库去找寻您要的书,找到之后回来再为您办理手续——如果把书库看作您自家书柜这一主存的扩充内存的话,管理员小姐便是EMM,您便是CPU。柜台呢,则称作页框.
页框的大小是64K,为什么是64K呢?您一定记得8086的段式访问机制,一个段的大小便是64k。这样,只要知道了页框起始处的段地址,就可以通过一个偏移量指针遍历整个页框,如果超过64K,那就需要调整段地址了.
或许EMS的设计者考虑到内存的使用效率而把扩充内存以16k为单位进行组织划分,而不是一个页框的大小。现在EMS内中的每16k就称作一页,那么 CPU同时也就只能“看见”扩充内存其中四页,虽然程序可以申请到不止四页的扩充内存。这自然类似于图书馆的制度,您可以“借”图书馆的许多书,甚至全部的书,但一次您只能“惜到”十本书,看
完归还之后再来借.
编程中对扩充内存进行访问的步骤大致如下:
(1)EMM安装了没有?
无论是EMM386.EXE还是QEMM386.SYS等EMM程序,具有统一的设备名“EMMxxxx”,我们可以通过判断此设备是否安装来判断EMM存在与否?
(2)页框起始地址在何处?
这是判断EMM已安装后的第二个步骤。页框是我们“看到”EMS内存的窗口,当然首先要找到它。
(3)申请EMS内存

如果您估计您的程序数据量不会超过1MB,那就申请64页的扩充内存好了(当然要实际存在如此多的扩充内存才可以,EMM不可能无中生有),申请到的EMS内存由一个称作句柄的整数来标志管理.
当然您可以随时根据需要多次申请EMS内存,只不过处理多个句柄总是要多些麻烦。
(4)映射EMS内存
申请到了一些EMS内存页面,意味着你可以“看”它们,但迄今为止它们并不“可见”,还需要进行映射。映射的意思,也就告诉EMM,让它把哪一个句柄的哪四页(少一些页自然可以),放到页框这个窗口中来。
做完映射工作之后,您就可以往页框中存放,读取数据了.当这几页用完之后.再映射其它几页到页框中,而原来的四页则不再‘可见’。如此这般,您就可以把您大量的数据存放到EMS内存中。
(5)释放EMS内存
当工作完成之后,还需要把申请到的EMS内存加以释放,因为EMM无法判断程序的结束而主动地来完成这项工作。
这一系列步骤使得EMS内存的使用看起来有些麻烦。的确,EMS内存的使用在一定程度上降低了系统性能.但这是值得的,要知道世界上没有免费的午餐.
。。。。。。

==================================
   348.如何使用扩展内存(Extended Memory)?

早期在DOS下访问扩展内存,必须通过BIOS中断INT l5H,但是因为该接口功能不够严谨,各软件之间容易因为使用扩展内存而发生冲突.有鉴于此,1988年底Microsoft,
Intel,Lotus和AST四家公司共同开发出了关于存取扩展内存的标准,这就是扩展内存规范XMS(Extended Memory Specification).
为了兼容性,大多数XMS驱动程序都可以为INT l5H保留一席之地.
DOS及DOS应用程序无法直接访问扩展内存,必须通过XMS功能接口达到目的.
XMS编程大致可分以下几个步骤:
(1)判断XMS是否已安装
这一点可以通过调用INT 2FH的4300H 号子功能来实现,通常INT 2FH以其“假脱机打印”功能而闻名。
功能调用之后,若寄存器AL=80H 表示XMS驱动程序已安装,反之则否.
(2)申请XMS内存块 ’
XMS编程接口有一点很特殊,不同于一般的中断调用,就是各子功能的执行是要对XMS驱动程序入口点进行远调用,而不是中断调用.
XMS驱动程序的入口地址可以通过INT 2FH的子功能4310H号来得到.调用完毕后,ES:BX即为入口点.
。。。。。。

(3)数据的存取
申请到了扩展内存,但我们并不能直接使用它,仍需要先把数据存放在一个常规内存缓冲区内,待恰当时机再把数据从缓冲区移到扩展内存之中.这一点对应XMS的0BH 号子功能:移动扩展内存块。

(4)释放扩展内存
该子功能号为0AH,入口参数为要释放的扩展内存块的句柄.
对于上面的讨论,请进一步阅读有关资料,以得到更详尽的信息.
下面给出一个完整的例子,供你参考。
。。。。。。


==================================
349.什么是UMB? 如何使用UMB?

640K~1MB这一段地址空间是微机的设计者保留下来给系统以及外部扩展设备来使用的,因此在这一段之中没有系统板上的RAM.如果您的机器配置了 1MB的内存,并且机器没有打开明SHADOW功能的话,将会有384k的扩展内存,此时RAM最高地址为1408K。
这一段地址空间某些部分的分配是比较固定的:
。。。。。。
其他部分的地址空间则没有固定地被占用,由其他硬件扩展设备,如汉卡、网卡等等来选择.一般情况下,这些空闲地址空间可用来再生成上位内存块UMB,供DOS利用.
让我们来看一个VGA配置的PC兼容机有多大的空闲空间。首先B000—B7FF这一段32k的空闲,再就是从C800开始到EFFF结束的这一段,大小为160k——所以我们总共可以有192KB的空间提供给DOS。如果再算上HMA 64K的话,就意味着DOS拥有
了896k=(640+192+64)K 的空间!
事情总要打点折扣,首先如果你安装了网卡,便只有牺牲16K的大小(通常情况);如果您的应用程序需要扩充内存,或者通过扩充内存卡获得,或者通过 EMM386.exe等类似的EMM程序利用扩展内存来仿真得到,但都必须在640k--1MB这一段的空闲区内生成一个EMS页框,又会占去64K的大小.
另外一个问题是保留内存中的空闲区并不连续,在插入其他插卡后有可能被再次分割.如果一个网卡占用了E000~E3FF这16K,原选160k的连续空闲区将被分割为两块,一块96K,一块48K。这就使得DOS在把驱动程序、内存驻留程序装载到UMB运行时,不可避免地造成空间浪费,不能充分利用.
这儿是用MSD察看保留内存区的一个例子。
。。。。。。
保留内存区又称上位内存区UMA,所以利用其间的空闲地址再生成的RAM块被称作UMB,也就是上位内存块的意思。
为了使DOS能够利用UMB,仅仅在CONFIG.SYS中加载EMM386.exe之类的UMB Provider程序还是不够的,必须再通过命令DOS=UMB在二者之间建立起联系,这样DOS的DEVICEHIGH、LH命令才起作用,DOS的中断功能调用也才能够访问UMB。如果没有在CONFIG中运行DOS=UMB,则利用MSD、MEM等实用程序将无法看到UMB的影子,但此时应用程序可以直接向UMB Provider程序申请使用UMB。

==================================
350,什么是HMA?如何使用HMA?

高位内存区HMA可能是最近人摸不着头脑的东西,它是1MB以上的第一个64K,其实要少16个字节,也就是65520字节的大小.这一段可以为DOS直接访问。
不是说DOS只能直接访问1MB以下的内存区域吗? 
我们已知道,DOS的寻址方式是8086/8088的段式机制,16位段地址左移四位再加上16位的偏移量形成20位的地址。这样问题便来了,1MB的绝对地址可以写成段:偏移量的形成为FFFF:000FH,也就是该段起于1MB空间的最后一小节FFFF0H 处;如图4-4所示,很明显,该段还有一部分的空间在1MB以上,也就是扩展内存之内.为FFFF:000FH只是该段的第一个小节结束的地方;偏移量还有FFF0的“余量”,
   这“余量”确定的空间显然可以由DOS直接访问,只得把编移量累加上去就行了.该段的1MB以上区域便是HMA,很显然其大小为64K-16B.
从绝对地址的角度看,HMA的第一个字节地址FFFF:0010H 已是21位地址宽度:1000000H.这在8086/8088中将产生地址绕回错误,因为8086/8088只有20根地址线,
第21根子虚乌有,所以1000000H 处即为0000OH 处.这样,“HMA”便成了0000:0000H至0OOO:FFEFH这一段!
早期的一些应用程序利用这一点来作为特殊技巧,达到所需的编程效果,也就是说,它们依赖于地址回绕.所以,到了后来的286、386等机器,虽然CPU拥有了24根、32根的地址总线,解决了8086/8088中16位地址进位超出总线宽度的问题,却为了保持兼容性,并没有把HMA区直接向DOS开放,而是通过—个“开关”进行控制.
这个“开关”便是我们常常见到的A20 line。A20便是第21根地址线,众所周知,计算
机中的总线都是从0开始编号的.
DOS下HMA区的管理由HIMEM.SYS来提供。程序可以控制A20 line的开、关,可以申请使用HMA,但有一点,HMA不能分割使用,也就是说一次只能有一个程序在其间运行.如果在CONFIG.SYS文件中加载了 HIMEM.SYS驱动程序并且同时有DOS=high命令时,MS-DOS将使A20线有效,并为HMA直新定位系统代码.
。。。。。。
笔者建议在编程中不要试图去使用HMA,免得遇到很多不必要的麻烦,利用HMA的最理想方法便是通过在CONFIG.SYS中加载HIMEM.SYS并运行DOS=high命令,把MS-DOS系统代码加载至其中,从而腾出更多的常规内存来.在DOS 6.2版本中,
DOS=high命令可腾出约49K的空间出来.
关于HMA的使用和编程,请进一步阅读有关的详细资料.


=============================
351.如何使用HIMEM.SYS?
HIMEM.SYS是一扩展(Extended)内存管理程序,也就是常说的XMM,它为扩展内存的使用提供了统一接口标准XMS,避免了早期扩展内存使用当中存在的冲突问题;同时HIMEM.SYS还提供对HMA的管理.
HIMEM.SYS必须在CONFIG.SYS中首先加载,这一点很容易理解,在EMM386.EXE加载之后,保留内存区持有UMB出现, HIMEM.SYS也提供对UMB进行管理的接口.如果在CONFIG.SYS没有运行DOS=UMB命令,也即没有建立起DOS和UMB之间的联系时,应用程序可以直接向HIMEM.SYS申请使用UMB.

=============================
       352.如何使用EMM386.EXE?
EMM386.EXE利用扩展(Extended)内存来仿真扩充(Expanded)内存,以提供对需要扩充内存的应用程序的支持,同时它还提供UMB功能,使得一些设备驱动程序和内存驻留程序能够加载至UMB中,从而腾出更多的常规内存。
EMM386.EXE在CONFIG.SYS中必须位于HIMEM.SYS之后来加载,因为它依赖于HIMEM.SYS的扩展内存支持。这二者也都必须使用DEVICE来加载,而不是DEVICEHIGH,这是因为DEVICEHIGH依赖于EMM386.EXE提供的UMB功能。同理,
要在AUTOEXEC.BAT中使用LOADHIGH(LH)命令也必须在CONFIG.SYS中已加载EMM386.EXE前提之下,并使用DOS=UMB命令在DOS和UMB之间建立起联系。

0

在MS SQL Server数据库批量查看表的大小的三种方法

1.查看单表大小:

sp_spaceused '表 '
如果不写表名,就是看整个库的!

2.察看数据库所有表的大小:
 
方法一:内置存储过程法:

EXEC sp_MSforeachtable @command1="print '?'",@command2="sp_spaceused '?'"

方法二:Transact-SQL语句:

--Transact-SQL语句——列表输出
SET NOCOUNT ON
DECLARE @db VARCHAR(20)
--获取当前数据库
SET  @db=db_name()
DBCC  UPDATEUSAGE(@db) WITH NO_INFOMSGS
GO
 
CREATE TABLE #tblSpace
(
数据表名称   varchar(250)   null,
记录笔数   int   null,
保留空间   varchar(15)   null,
数据使用空间   varchar(15)   null,
索引使用空间   varchar(15)   null,
未使用空间   varchar(15)   null
)
DECLARE @tblname varchar(250)
DECLARE curTbls CURSOR FOR
SELECT TABLE_NAME FROM Information_Schema.TABLES
--BASE TABLE很重要
WHERE TABLE_TYPE= 'BASE TABLE '
 
OPEN CurTbls
FETCH NEXT FROM curTbls INTO @tblName
 
WHILE @@FETCH_STATUS=0
BEGIN
INSERT #tblSpace EXEC sp_spaceused @tblName
FETCH NEXT FROM curTbls INTO @tblName
END
CLOSE CurTbls
DEALLOCATE curTbls
 
SELECT * FROM #tblSpace ORDER BY 记录笔数 DESC
 
DROP TABLE #tblSpace

方法三(与方法二类似,但运行效率更高)

 

EXEC sp_MSforeachtable @command1="print '?'",@command2="sp_spaceused '?'"
 
 
create table tmp (name varchar(50),rows int,reserved varchar(50),
 
data varchar(50),index_size varchar(50),unused varchar(50))
 
insert into tmp (name,rows,reserved,
 
data,index_size,unused) exec sp_msforeachTable @Command1="sp_spaceused '?'"--sp_spaceused 't_vehicle'
 
select *,left(data,len(data)-3)  from tmp order by left(data,len(data)-3)/1 desc

 

0

iframe背景透明

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>父页面</title>
</head>

<body bgcolor="#FF0000">
<iframe src="index.htm"  allowTransparency="true"></iframe>
</body>

</html>


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>子页面</title>
<style type="text/css">
body
{
    background-color: transparent;
}

</style>
</head>

<body>

</body>

</html>

0

触屏方法2

屏上用的网站,过程中遇到了几个问题,花了不少时间才解决,发现网络上对这几个问题的解决方案很凌乱,决定自己整理一下,希望能给遇到同样问题的朋友提供一些帮助。

    主要问题有几个,下面分别说明:

   (1)网页自动全屏显示。

   (2)window.close()命令自动关闭网页时不出现提示关闭的对话框。

   (3)在一段时间无操作后自动返回指定页面。

 

一、首先来解决网页自动全屏显示的问题。

网站做好了,要在触摸屏上显示,首先遇到的就是如何让网页自动全屏显示的问题目前网络上也有不少供触摸屏使用的浏览器,可以实现网页开机自动全屏运行,也可以定时返回首页,添加背景音乐等等功能,偷懒的朋友可以考虑一下,此处推荐一个Toucher浏览器。

不希望使用软件,而是自己动手,用代码来解决问题的朋友可以借鉴我的方法,如下:

 

新建一个网页作为引导页,网站由此引导页来进行全屏显示,首页全屏显示后,引导页随即自动关闭:

 

代码如下,写在引导页<body></body>之间。

==================================================================

<script>

window.opener=null;    //解决关闭时是否提示的问题。

window.open('首页URL','my_win','fullscreen=yes, scrollbars=auto','_self','location=no');

//引导你的首页真正全屏显示,只有ALT+F4才能关闭。

window.open('','_self')   //这行代码用来实现引导页自动关闭时不提示是否关闭用的。

window.close();  //引导页自动关闭。

</script>

==================================================================

 

    当你做好这个引导页之后,也许你会发现IE7在运行你的网页时还是无法全屏显示,不用怀疑这段代码有问题。问题在于IE7本身的一些限制,要通过更改IE7的一些设置来解决。

    需要设置的地方有以下两个:

    第一个是:IE7的选项卡功能,在此功能开启时,你的网页在IE7下是无法实现真正的全屏显示的,具体表现情况不做描述,只写出如何取消选项卡功能。

    打开Internet选项,常规面板下找到选项卡功能,

  

                 IE7网页全屏显示,做触摸屏网站的几个问题    

   

     打开设置面板,将启用前面的勾取消,即可关闭选项卡功能。

                 IE7网页全屏显示,做触摸屏网站的几个问题

     通过设置,选项卡功能成功关闭。

 

     第二个需要设置的地方,在Internet选项里的安全选项卡内进行更改,如图:

                IE7网页全屏显示,做触摸屏网站的几个问题

    在这里选择自定义级别,会看到多项安全设置:

 

                IE7网页全屏显示,做触摸屏网站的几个问题

        如上图,将“允许网站打开没有地址或状态栏的窗口”以及“允许有脚本初始化的窗口,不受大小和位置限制”两项设置修改改为启用,IE7默认是禁用的。

 

 

       把这两处设置好之后,再打开你的引导页试试,此时可以实现真正的网页全屏显示了,这时候的网页只有通过ALT+F4才能关闭。

 

   二、引导页自动关闭时不出现提示的问题[window.close()不提示]。

       网络上对这个问题的解决办法多是标题为window.close()不提示,针对IE7的也有很多,但是个人认为没有说的很清楚,还是之前那段代码中的window.close()起作用,但是务必在之前多加一行

       window.open('','_self')  ,使引导页自动关闭而不出现提示起作用的就是这一句。

即如下所示:

==================================================================

<script>

window.opener=null;    //解决关闭时是否提示的问题。

window.open('首页URL','my_win','fullscreen=yes, scrollbars=auto','_self','location=no');

//引导你的首页真正全屏显示,只有ALT+F4才能关闭。

window.open('','_self')   //这行代码用来实现引导页自动关闭时不提示是否关闭用的。

window.close();  //引导页自动关闭。

</script>

==================================================================

 

 

   三、在一段时间无操作(鼠标键盘无动作)后,自动返回指定页面的问题。

   个人觉得比较不错的一段代码如下:

===============================================================================

<script>
var flag = true;
document.onmousemove = new Function("flag = false;");
function judgeMouse() {
 if(flag) {
  location.href = "引导页URL";
 } else {
  flag = true;
 }
}
setInterval("judgeMouse()", 5000);//超时返回时间数(毫秒)
</script>

=================================================================================

    将这段代码复制到网页中<head>部分,即可实现在一段时间无操作后自动返回某个指定页面的功能。

但前提是你的页面没有使用【框架结构】。

    如果你的网站没有使用框架结构,相信你的几个问题至此已经基本解决,但是如果使用了框架结构,因为一个页面由多个框架页组成,所以用这个代码,估计这个超时返回的功能无法解决。

 

 

0

触摸屏网页要领知识

第一部分 代码部分
首先要考虑的是硬件的分辨率问题。现在主流的触摸屏大小是17寸的,所以,我们可以使用1024*768来

设计我们的触摸屏网页
触摸屏和普通的网页还是有一定的区别的,如:
触摸屏使用时不可能每天都有人点IE后在输入网址访问。所以,我们得想个办法,让计算机开机后。自己来读这个网页并显示。
最简单的办法:做个单独页加入以下代码

 程序代码
<script type="text/javascript" language="javascript">
window.open( "index.htm", "ts", "fullscreen=1" );
</script>


然后把这个页复制个快捷方式到系统启动项里面,这样就实现了,计算机启动后,启动IE网站的目的
如果您对JavaScrpt有一定的了解,那么通过上面的代码,你可以看到,这是全屏幕读入Index.htm文件

,也就是我们网页的主页
这个问题解决后,我们看看一般的触摸屏播放音乐实现的过程,播放音乐可以在没有使用触摸屏的时候

,播放歌曲。
下面是实现音乐播放的代码

 程序代码
<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="0"

height="0" codebase="index/muic/hai.mp3">
        <param name="Appearance" value="0">
        <param name="AutoStart" value="1">
        <param name="AllowChangeDisplayMode" value="-1">
        <param name="AllowHideDisplay" value="0">
        <param name="AllowHideControls" value="-1">
        <param name="AutoRewind" value="-1">
        <param name="Balance" value="0">
        <param name="CurrentPosition" value="0">
        <param name="DisplayBackColor" value="0">
        <param name="DisplayForeColor" value="16777215">
        <param name="DisplayMode" value="0">
        <param name="Enabled" value="-1">
        <param name="EnableContextMenu" value="-1">
        <param name="EnablePositionControls" value="-1">
        <param name="EnableSelectionControls" value="0">
        <param name="EnableTracker" value="-1">
        <param name="Filename" value="index/muic/hai.mp3">
        <param name="FullScreenMode" value="0">
        <param name="MovieWindowSize" value="0">
        <param name="PlayCount" value="0">
        <param name="Rate" value="1">
        <param name="SelectionStart" value="-1">
        <param name="SelectionEnd" value="-1">
        <param name="ShowControls" value="0">
        <param name="ShowDisplay" value="0">
        <param name="ShowPositionControls" value="0">
        <param name="ShowTracker" value="0">
        <param name="Volume" value="-320">
                        </object>


这个只需放在您的主页的第一个页里就可以了。

下面这个代码很重要,呵呵,您可以想一下这样的情况,如果一个浏览者在浏览完信息后,他离开时不

会把网页退到触摸屏的主页,这样就会影响下一位用户的浏览。所以,我们要在信息页里都加上这句

 程序代码
<meta http-equiv="refresh" content="300; url=http://www.cnblogs.com/index.htm">

就是多少秒以后,自动退回首页   

0

用Xcopy命令实现文件备份

 

目前有这样一个需求,windows服务器,有一个目录用来存放文件,该目录下的文件时刻都在不停的增长,为了实现高可靠性,要求对目录进行时效性高的备份,之前的项目中有做过使用cwRsync进行目录同步的,不过其性能实在不够理想,一个几十个G的目录每执行一次同步检测需要半个小时到一个小时的时间,这样就无法实现高密度的文件差异检查并实现时时同步,在寻找的过程中发现了一个比较好用的东东xcopy,其检查速度非常快,文件同步检测速度大约为每分钟6G,效率实现方式比cwRsync高出不少

其实现方式很简单,backup.bat文件内容如下
net use \\192.168.1.100\backup\teset   sharepassword /user:mytestdc\backup
xcopy E:\test \\192.168.1.100\backup\teset /d/s/e/y
net use \\192.168.1.100\backup\teset /delete

本来这样就完成了
但是做的过程中还是要对比小效率很功能撒,这样做的效率是提高了,但是cwRsync的一个很有用的功能同步日志这里却实现不了,怎么办呢?用重定向符号将其执行过程输出到文本文件记录不就可以了吗?但是xcopy的过程不会将每个文件的记录下来,经过一番探索,找到了用bat文件调用bat文件的方式将执行的过程输出。并在日志中记录每次执行的时间等信息,挺完美的了。具体脚本如下:
before.bat内容:
set date = date /T
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo .  >> D:\Service\backup\log\%date%.log
echo ==========================================================================================>> D:\Service\backup\log\%date%.log
echo %date% %time% >> D:\Service\backup\log\%date%.log
backup.bat >> D:\Service\backup\log\%date%.log
这里每天以日期为文件名记录日志,所以用到一个变量,为了方便查看,在每次执行前先在日志中输入多行空行,以及一个以多个等号组成的分割符,输出执行的日期与时间后就可以执行同步脚本了,将同步脚本执行的所有过程全部用重定向符号输出到日志。
看了日志后又找到了一个需要完善的地方,备份脚本中的共享用户名和密码信息都被输出到日志了,存在安全隐患,将backup.bat修改如下。
echo off
net use \\192.168.1.100\backup\teset   sharepassword /user:mytestdc\backup
echo on
xcopy E:\test \\192.168.1.100\backup\teset /d/s/e/y
echo off
net use \\192.168.1.100\backup\teset /delete

OK,这样比较完美了~~~~手动执行过程正常。
直接将before.bat添加了2008系统的佳话任务中,计划每间隔半个小时执行一次,但是执行时发现计划任务的状态为 0x1,并非正常完成,备份日志日志中也没有backup.bat的执行过程,微软计划任务错误信息说明如下:
代码   0   或   0x0:   操作成功完成。      
代码   1   或   0x1:   调用的函数不正确或调用了未知函数。     
代码   10   或   0xa:   环境不正确。     
代码   0x8009000f:常规访问被拒绝     
猜测其将backup.bat作为一个函数调用了,但是该函数并没有在系统环境变量中指定的路径中,所以错误吧,于是在该文件其加上完整的路径,即将原来before.bat中的行
backup.bat >> D:\Service\backup\log\%date%.log
修改为
D:\Service\backup\backup.bat >> D:\Service\backup\log\%date%.log
再执行尝试OK
终于完美地完成了~~~ 敲字还真是累~~~~

2010.03.29补充,在做2008系统另外一个计划任务也是bat文件,发现任务执行成功,但是实际bat文件要实现的目的未达到,发现日志信息如下:
任务计划程序已成功完成任务“\mytime”、实例“{508f189a-d5a4-4b8e-9139-c896af7a82c9}”、操作“C:\Windows\SYSTEM32\cmd.exe”,返回代码 2。
后发现该bat中有调用其他资源,而默认情况下对该资源没有访问权限,修改配置好!
0

建立和使用不可删除文件夹

教大家建立一个别人既无法进入又无法删除的文件夹相信大家都遇到过自己的一些隐私文件不愿意让
别人看到的情况吧,怎么解决呢?隐藏起来?换个名字?或者加密?这些办法都可以办到,其实还有
一种方法,就是建立一个别人既不能进入又不能删除的文件夹,把自己的隐私文件放进去,别人就看
不到啦,下面讲讲如何实现,很简单的。^_^

  第一步:在运行中输入cmd,回车,打开命令行窗口
  第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如d盘
  第三步:输入md 123..\回车,注意文件夹名后有2个小数点和\

  ok,搞定,看看你的d盘下面是不是多了一个名为123.的文件夹了?它是既不能进入又不能被删
除的!不信你就试试看吧^_^
  那么,如果自己想删除或者进入这个文件夹,又应该如何操作呢?同样也很简单。
如果想删除,在命令行窗口中输入rd 123..\回车,即可删除,当然删除前请确认里面的文件都
是不需要的,不要删错了,呵呵。
  如果想进入,在命令行窗口中输入start d:\123..\(注意这里一定要是文件夹的绝对路径,否则
无法打开即可打开此文件夹,你就可以随心所欲的把不想让别人看到的资料放进去啦!
 
 
1/1, 8«1»
Processed in 0.1460 second(s), 6 queries