怎么样用left join 把行改成列
怎么样用left join 把行改成列
有如下表a1
学号 姓名 课程类型 学分数
2001 李四 公共课 2
2001 李四 专业课 1
2001 李四 公共课 3
2001 李四 专业课 2
通过查询器查询成
学号 姓名 公共课学分数 专业课学分数
2001 李四 5 3
用下面语句
select 学号,姓名,sum(学分数) as 公共课学分数 from A1 where 课程类型='公共课' group by 学号
left join .......
后面怎么写呢,请指教.要不要建个临时表. 20 回复次数:6
第1个回答
SQL code
--------------------------------------------------------------------------------/*
普通行列转换
(爱新觉罗.毓华 2007-11-18于海南三亚)
假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
*/
-------------------------------------------------------------------------
/*
想变成
姓名 语文 数学 物理
---------- ----------- ----------- -----------
李四 74 84 94
张三 74 83 93
*/
create table tb
(
Name varchar(10) ,
Subject varchar(10) ,
Result int
)
insert into tb(Name , Subject , Result) values('张三' , '语文' , 74)
insert into tb(Name , Subject , Result) values('张三' , '数学' , 83)
insert into tb(Name , Subject , Result) values('张三' , '物理' , 93)
insert into tb(Name , Subject , Result) values('李四' , '语文' , 74)
insert into tb(Name , Subject , Result) values('李四' , '数学' , 84)
insert into tb(Name , Subject , Result) values('李四' , '物理' , 94)
go
--静态SQL,指subject只有语文、数学、物理这三门课程。
select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理
from tb
group by name
/*
姓名 语文 数学 物理
---------- ----------- ----------- -----------
李四 74 84 94
张三 74 83 93
*/
--动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql varchar(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)
/*
姓名 数学 物理 语文
---------- ----------- ----------- -----------
李四 84 94 74
张三 83 93 74
*/
-------------------------------------------------------------------
/*加个平均分,总分
姓名 语文 数学 物理 平均分 总分
---------- ----------- ----------- ----------- -------------------- -----------
李四 74 84 94 84.00 252
张三 74 83 93 83.33 250
*/
--静态SQL,指subject只有语文、数学、物理这三门课程。
select name 姓名,
max(case subject when '语文' then result else 0 end) 语文,
max(case subject when '数学' then result else 0 end) 数学,
max(case subject when '物理' then result else 0 end) 物理,
cast(avg(result*1.0) as decimal(18,2)) 平均分,
sum(result) 总分
from tb
group by name
/*
姓名 语文 数学 物理 平均分 总分
---------- ----------- ----------- ----------- -------------------- -----------
李四 74 84 94 84.00 252
张三 74 83 93 83.33 250
*/
--动态SQL,指subject不止语文、数学、物理这三门课程。
declare @sql1 varchar(8000)
set @sql1 = 'select Name as ' + '姓名'
select @sql1 = @sql1 + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql1 = @sql1 + ' , cast(avg(result*1.0) as decimal(18,2)) 平均分,sum(result) 总分 from tb group by name'
exec(@sql1)
/*
姓名 数学 物理 语文 平均分 总分
---------- ----------- ----------- ----------- -------------------- -----------
李四 84 94 74 84.00 252
张三 83 93 74 83.33 250
*/
drop table tb
---------------------------------------------------------
---------------------------------------------------------
/*
如果上述两表互相换一下:即
姓名 语文 数学 物理
张三 74 83 93
李四 74 84 94
想变成
Name Subject Result
---------- ------- -----------
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 74
张三 数学 83
张三 物理 93
*/
create table tb1
(
姓名 varchar(10) ,
语文 int ,
数学 int ,
物理 int
)
insert into tb1(姓名 , 语文 , 数学 , 物理) values('张三',74,83,93)
insert into tb1(姓名 , 语文 , 数学 , 物理) values('李四',74,84,94)
select * from
(
select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
union all
select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
union all
select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
) t
order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '总分' then 4 end
--------------------------------------------------------------------
/*加个平均分,总分
Name Subject Result
---------- ------- --------------------
李四 语文 74.00
李四 数学 84.00
李四 物理 94.00
李四 平均分 84.00
李四 总分 252.00
张三 语文 74.00
张三 数学 83.00
张三 物理 93.00
张三 平均分 83.33
张三 总分 250.00
*/
select * from
(
select 姓名 as Name , Subject = '语文' , Result = 语文 from tb1
union all
select 姓名 as Name , Subject = '数学' , Result = 数学 from tb1
union all
select 姓名 as Name , Subject = '物理' , Result = 物理 from tb1
union all
select 姓名 as Name , Subject = '平均分' , Result = cast((语文 + 数学 + 物理)*1.0/3 as decimal(18,2)) from tb1
union all
select 姓名 as Name , Subject = '总分'
, Result = 语文 + 数学 + 物理 from tb1 ) t order by name , case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 when '平均分' then 4 when '总分' then 5 end drop table tb1
--------------------------------------------------------------------------------
第2个回答
有如下表a1
学号 姓名 课程类型 学分数
2001 李四 公共课 2
2001 李四 专业课 1
2001 李四 公共课 3
2001 李四 专业课 2
通过查询器查询成
学号 姓名 公共课学分数 专业课学分数
2001 李四 5 3
用下面语句
select 学号,姓名,sum(学分数) as 公共课学分数 from A1 where 课程类型='公共课' group by 学号
left join .......
后面怎么写呢,请指教.要不要建个临时表.
SQL code
--------------------------------------------------------------------------------select 学号,姓名,
sum(case 课程类型 when '公共课' then 学分数 else 0 end) 公共课学分数,
sum(case 课程类型 when '专业课' then 学分数 else 0 end) 专业课学分数
from tb
group by 学号,姓名
--------------------------------------------------------------------------------
第3个回答
SQL code
----------------------------------------------------------------------------------静态SQL,指课程类型只有公共课,专业课
select 学号,姓名,
sum(case 课程类型 when '公共课' then 学分数 else 0 end) 公共课学分数,
sum(case 课程类型 when '专业课' then 学分数 else 0 end) 专业课学分数
from tb
group by 学号,姓名
--静态SQL,指课程类型不止公共课,专业课
declare @sql varchar(8000)
set @sql = 'select 学号,姓名'
select @sql = @sql1 + ' , sum(case 课程类型 when ''' + 课程类型 + ''' then 学分数 else 0 end) [' + 课程类型 + '学分数]'
from (select distinct 课程类型 from tb) as a
set @sql = @sql + ' from tb group by 学号,姓名'
exec(@sql)
--------------------------------------------------------------------------------
第4个回答
SQL code
--------------------------------------------------------------------------------create table tb(学号 int,姓名 varchar(10),课程类型 varchar(10),学分数 int)
insert tb select 2001,'李四','公共课',2
union all select 2001,'李四','专业课',1
union all select 2001,'李四','公共课',3
union all select 2001,'李四','专业课',2
select 学号,姓名,
公共课=sum(case 课程类型 when '公共课' then 学分数 else 0 end),
专业课=sum(case 课程类型 when '专业课' then 学分数 else 0 end)
from tb
group by 学号,姓名
--动态SQL
declare @sql varchar(4000)
select @sql='select 学号,姓名'
select @sql=@sql+',['+课程类型+']=sum(case 课程类型 when '''+课程类型+''' then 学分数 else 0 end)'
from tb group by 课程类型
exec(@sql+N' from tb group by 学号,姓名')
drop table tb
/*
学号 姓名 公共课 专业课
----------- ---------- ----------- -----------
2001 李四 5 3
*/
--------------------------------------------------------------------------------
第5个回答
select 学号,姓名,
sum(decode(课程类型,'公共课', 学分数, 0) 公共课学分数,
sum(decode(课程类型, '专业课',学分数, 0) 专业课学分数
from tb
group by 学号,姓名
posted @
2008-04-08 21:49 jadmin 阅读(111) |
评论 (0) |
编辑 收藏
// 第一步:创建一个TableViewer对象。
TableViewer tv = new TableViewer(shell, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
// 第二步:通过表格内含的Table对象设置布局方式
Table table = tv.getTable();
table.setHeaderVisible(true); // 显示表头
table.setLinesVisible(true); // 显示表格线
TableLayout layout = new TableLayout(); // 专用于表格的布局
table.setLayout(layout);
// 第三步:用TableColumn类创建表格列
layout.addColumnData(new ColumnWeightData(13));// ID列宽13像素
new TableColumn(table, SWT.NONE).setText("ID号");
layout.addColumnData(new ColumnWeightData(40));
new TableColumn(table, SWT.NONE).setText("姓名");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("性别");
layout.addColumnData(new ColumnWeightData(20));
new TableColumn(table, SWT.NONE).setText("年龄");
layout.addColumnData(new ColumnWeightData(60));
new TableColumn(table, SWT.NONE).setText("记录建立时间");
// 第四步:设置内容器和标签器
tv.setContentProvider(new TableViewerContentProvider());
tv.setLabelProvider(new TableViewerLabelProvider());
// 第五步:用TableViewer的setInput方法将数据输入到表格
Object data = PeopleFactory.getPeoples();
tv.setInput(data);
其中:
TableViewerContentProvider.java 内容器
TableViewerLabelProvider.java 标签器
PeopleFactory.java 产生TableViewer的数据源
从整体上把握以上5点,TableViewer用起来就简单了
Tags:java,rcp,jface,swt,ibm,eclipse,ui,gui
posted @
2008-03-31 11:53 jadmin 阅读(571) |
评论 (0) |
编辑 收藏
近来看了很多程序员的言论……感觉都是满腹牢骚,一肚子愤懑。我想要说的是,程序员不是神。时下一些程序员所能作的,其实大多数普通人通过一段时间的培训和学习都可以作。编程工具已越来越容易使用,编程思想越来越成熟,计算机书籍更是琳琅满目,开发过程中的规范性也已经越来越重要。作为一个普普通通的程序员,只是几个通宵的投入,1-2个月囫囵吞枣的学习,又能有什么理由能奢求太多?
其实当很多人计算着自己一行代码值几毛钱的时候,或许他从来没有踏踏实实去考虑自己的能力和水平究竟如何。坦诚的讲,大多数程序员的代码质量和设计质量充其量只能算入门水平,学什么东西也只是皮毛而已,尽管可能简历上写得是精通……
这社会是现实的,发展的。十多年前,程序员是个真正的有门槛的行业。因为那时候没那么多漂亮的开发工具,没有高级语言的支持,甚至连面向对象的开发思想都还仅仅是萌芽,更不用说什么质量控制体系。那时候要掌握开发技术远比其他行业的技术困难得多,只有少数精英才能做到,而且还需要有过人的智力、耐心与毅力。要付出很多很多。这些“精英”,自然也能得到社会足够的尊重。而现在,在前辈的辛苦耕耘下,进入这个行业几乎已经没有了门槛。当你怀着对前人获得的财富、荣誉和使命感走上程序员这条路的时候,可能你根本就不知道等待自己的将是什么……其实,而今在自己公司一小群程序员里“冒充”某某方面专家的时候,很多人却不知道甚至根本无法想像,在不很久远的过去,自己或许只能选择中途放弃。
虽然不是每个人都这样,但是我还是要说:有人根本没毅力,他们只想轻轻松松的赚钱,却从来不想承担自己该承担的责任;有人根本没创造性,他唯一会作的就是把别人的代码抓来抄袭一下;有人始终自以为是,代码能编译通过和运行了就觉得可以OK完工了;有人的设计和代码糟糕冗余,可被其他人精简2-3倍长,性能也可优化数十倍;有人技术视野狭隘,搞C++的就觉得Java是个Sun的新式玩具,搞Java就鄙夷C++为洪水猛兽和怪物;更有人还把用别人发现的漏洞、别人开发的工具去黑黑别人的电脑当做自己已经是牛人和所谓的“黑客”。这些“程序员”真的能算程序员么?如果这也算程序员,我认为他们也只是现在这个时代最平庸的一群程序员而已……
其实任何行业、任何职业都会面临这样或那样的机遇,总有不知道的困难、烦恼在前面等着你。大家羡慕的只是成功时的鲜花和啤酒,又有几个人真正去羡慕成功背后的艰辛和苦楚呢?作销售好,作管理好,作老板好,作XX好……这样类似的话我听得都厌烦了。要我说,作自己最好。
在这社会上,我们或许习惯了用社会的、他人的标准去衡量、去比较,比如什么女朋友好不好、老婆好不好、工作好不好、老板好不好之类的。诚然,人不能脱离现实、脱离社会,人需要生存。但今天社会给我们所提供的机会,已经比我们的父辈开阔了许多许多。我不认为一个有才能、肯吃苦的人会失去谋生的机会,或者说会生存得比我们的父辈还要艰辛,我们还有什么可抱怨的?也许我们没有搭上某趟快速致富的列车,也许我们看到其他搭上列车的人的成功心理难以平衡,但是不是说我们就因此无法自信的在朋友面前抬起头,无法博得一份属于自己的爱情,无法获得其他人的尊重,无法去作一份有意义的工作,无法享受一份美好的生活呢?
其实,没人能剥夺别人的快乐,没人能总结出一条适用于所有人的所谓“成功”标准,没人能鱼和熊掌兼得。有些人茫然的来,如同另外一些人茫然的走,没有带来什么,更没有留下什么,这就是而今大多数浮躁的程序员的道路。或许,我们的国家现在还没有美国那样重视知识、重视科学、重视创新,然而除非你自己拒绝所有的机会,不然社会也同样不会让有开发知识、有创新能力的人都被逼得当街卖烧烤。
不懂得珍惜现在的人,永远不可能把握未来……没有好的心态,就已经先失败了一半。作什么其实不重要,然而智慧的人知道怎么踏踏实实的去走脚下的路,平庸的人却只知道羡慕和抱怨,从来不留意脚下的路。
最后用一句话来总结:程序员不是神,心态决定一切,成功在你脚下。
posted @
2008-03-28 19:01 jadmin 阅读(81) |
评论 (0) |
编辑 收藏
Carlos Perez(著名的Java技术人员)最近发表了他认为值得在2008学习五种的JAVA技术,它们是:OSGi(基于Java的动态模型规范)注:OSGi(Open Service Gateway Initiative)指OSGi Alliance组织制定的一个基于Java语言的服务(业务)规范——OSGi服务平台(Service Platform)。 该规范和核心部分是一个框架 ,其中定义了应用程序的生命周期模式和服务注册。这个框架实现了一个优雅、完整和动态的组件模型。应用程序(称为bundle)无需重新引导可以被远程安装、启动、升级和卸载(其中Java包/类的管理被详细定义)。API中还定义了运行远程下载管理政策的生命周期管理。服务注册允许bundles去检测新服务和取消的服务,然后相应配合。Java内容仓库,最早于2002年2月由JCP发布注:JCP(Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。JCP维护的规范包括J2ME、J2SE、J2EE,XML,OSS,JAIN等。组织成员可以提交JCR(Java SpECification RequESts),通过特定程序以后,进入到下一版本的规范里面。Google Web Toolkit(最早发布于2006年5月)注:GWT(Google Web Toolkit) 是 Google 推出的一个开发 Ajax 应用的框架,它支持用 Java 开发和调试 Ajax 应用。Groovy(最早发布于2004年5月)注:Groovy是一种面向对象的程序设计语言,作为Java程序设计语言的一种可选替代品,并增加了Python,Ruby和Smalltalk中的一些特性。云雾计算(用于虚拟服务器的设计理念,或无需EJB的分布式计算)注:“云雾计算”的英文即Cloud Computing。自谷歌发展起来之后,极大规模的服务器集中在一起,统一管理,形成了“云雾计算”(“Cloud Computing”)的物质基础。“云雾计算”是社会计算能力的大集中,也是所谓“SaaS”的客观基础。有趣的是,其中有几种技术已经成熟,或者说是过时,并且正在其被推荐应用的项目中有成熟的应用。当然,这五种技术都很有价值。OSGi是Eclipse的建模系统,Goovry因其正式的规范说明和频繁的改进版发布赢得支持。GWT也算是成熟稳定,云雾计算正在受到更为广泛市场的接受。JRC和云雾计算是最近才被广泛接受的技术,但是厂商正在利用竞争和商业关系猎取支持来发布相关的产品(比如GridGain,Gigaspaces,和Terracotta),而有的厂商还正在对此进行策划(TSS计划在TSSJS2008发布JCR相关的声明)。
posted @
2008-02-12 16:30 jadmin 阅读(61) |
评论 (0) |
编辑 收藏
一些基本的命令往往可以在保护网络安全上起到很大的作用,下面几条命令的作用就非常突出。
一、检测网络连接
如果你怀疑自己的计算机上被别人安装了木马,或者是中了病毒,但是手里没有完善的工具来检测是不是真有这样的事情发生,那可以使用Windows自带的网络命令来看看谁在连接你的计算机。
具 体的命令格式是:netstat -an这个命令能看到所有和本地计算机建立连接的IP,它包含四个部分——proto(连接方式)、local address(本地连接地址)、foreign address(和本地建立连接的地址)、state(当前端口状态)。通过这个命令的详细信息,我们就可以完全监控计算机上的连接,从而达到控制计算机 的目的。
二、禁用不明服务
很多朋友在某天系统重新启动后会发现计算机速度变慢了,不管怎么优化都慢,用杀毒软件也查不出问题,这个时候很 可能是别人通过入侵你的计算机后给你开放了特别的某种服务,比如IIS信息服务等,这样你的杀毒软件是查不出来的。但是别急,可以通过“net start”来查看系统中究竟有什么服务在开启,如果发现了不是自己开放的服务,我们就可以有针对性地禁用这个服务了。
方法就是直接输入“net start”来查看服务,再用“net stop server”来禁止服务。
三、轻松检查账户
很 长一段时间,恶意的攻击者非常喜欢使用克隆账号的方法来控制你的计算机。他们采用的方法就是激活一个系统中的默认账户,但这个账户是不经常用的,然后使用 工具把这个账户提升到管理员权限,从表面上看来这个账户还是和原来一样,但是这个克隆的账户却是系统中最大的安全隐患。恶意的攻击者可以通过这个账户任意 地控制你的计算机。
为了避免这种情况,可以用很简单的方法对账户进行检测。
首先在命令行下输入net user,查看计算机上有些什么用户,然后再使用“net user+用户名”查看这个用户是属于什么权限的,一般除了Administrator是administrators组的,其他都不是!如果你发现一个 系统内置的用户是属于administrators组的,那几乎肯定你被入侵了,而且别人在你的计算机上克隆了账户。快使用“net user用户名/del”来删掉这个用户吧!
联网状态下的客户端。对于没有联网的客户端,当其联网之后也会在第一时间内收到更新信息将病毒特征库更新到最新版本。不仅省去了用户去手动更新的烦琐过程,也使用户的计算机时刻处于最佳的保护环境之下。
posted @
2008-01-19 19:48 jadmin 阅读(73) |
评论 (0) |
编辑 收藏
1.avi格式代码片断如下:
<object id="video" width="400" height="200" border="0" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">
<param name="ShowDisplay" value="0">
<param name="ShowControls" value="1">
<param name="AutoStart" value="1">
<param name="AutoRewind" value="0">
<param name="PlayCount" value="0">
<param name="Appearance value="0 value=""">
<param name="BorderStyle value="0 value=""">
<param name="MovieWindowHeight" value="240">
<param name="MovieWindowWidth" value="320">
<param name="FileName" value="/Mbar.avi">
<embed width="400" height="200" border="0" showdisplay="0" showcontrols="1" autostart="1" autorewind="0" playcount="0" moviewindowheight="240" moviewindowwidth="320" filename="/Mbar.avi" src="Mbar.avi">
</embed>
</object>
2.mpg格式代码片断如下:
<object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="239" height="250">
<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="/mpeg/halali.mpg" valuetype="ref">
<param name="FullScreenMode" value="0">
<param name="MovieWindowSize" value="0">
<param name="PlayCount" value="1">
<param name="Rate" value="1">
<param name="SelectionStart" value="-1">
<param name="SelectionEnd" value="-1">
<param name="ShowControls" value="-1">
<param name="ShowDisplay" value="-1">
<param name="ShowPositionControls" value="0">
<param name="ShowTracker" value="-1">
<param name="Volume" value="-480">
</object>
3.smi格式代码片断如下:
<OBJECT id=RVOCX classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA width=240 height=180>
<param name="_ExtentX" value="6350">
<param name="_ExtentY" value="4763">
<param name="AUTOSTART" value="-1">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="-1">
<param name="SRC" value="rm.rm">
<param name="CONTROLS" value="ImageWindow">
<param name="CONSOLE" value="console1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000"><embed src="real.smi" type="audio/x-pn-realaudio-plugin" console="Console1" controls="ImageWindow" height="180" width="240" autostart="true"></OBJECT>
4.rm格式代码片断如下:
<OBJECT ID=video1 CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" HEIGHT=288 WIDTH=352>
<param name="_ExtentX" value="9313">
<param name="_ExtentY" value="7620">
<param name="AUTOSTART" value="0">
<param name="SHUFFLE" value="0">
<param name="PREFETCH" value="0">
<param name="NOLABELS" value="0">
<param name="SRC" value="rtsp://203.*.*.35/vod/dawan-a.rm">
<param name="CONTROLS" value="ImageWindow">
<param name="CONSOLE" value="Clip1">
<param name="LOOP" value="0">
<param name="NUMLOOP" value="0">
<param name="CENTER" value="0">
<param name="MAINTAINASPECT" value="0">
<param name="BACKGROUNDCOLOR" value="#000000"><embed SRC type="audio/x-pn-realaudio-plugin" CONSOLE="Clip1" CONTROLS="ImageWindow" HEIGHT="288" WIDTH="352" AUTOSTART="false">
</OBJECT>
5.wmv格式代码片断如下:
<object id="NSPlay" width=200 height=180 classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject" align="right" hspace="5">
<param name="AutoRewind" value=1>
<param name="FileName" value="http://192.168.1.71/verypower/shichang.wmv">
<param name="ShowControls" value="1">
<param name="ShowPositionControls" value="0">
<param name="ShowAudioControls" value="1">
<param name="ShowTracker" value="0">
<param name="ShowDisplay" value="0">
<param name="ShowStatusBar" value="0">
<param name="ShowGotoBar" value="0">
<param name="ShowCaptioning" value="0">
<param name="AutoStart" value=1>
<param name="Volume" value="-2500">
<param name="AnimationAtStart" value="0">
<param name="TransparentAtStart" value="0">
<param name="AllowChangeDisplaySize" value="0">
<param name="AllowScan" value="0">
<param name="EnableContextMenu" value="0">
<param name="ClickToPlay" value="0">
</object>
6.wma格式 放在 里面。下面是部分解释:
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" >
<param name="Filename" value="/blog/1.Wma"> <!--你文件的位置-->
<param name="PlayCount" value="1"><!--控制重复次数: “x”为几重复播放几次; x=0,无限循环。-->
<param name="AutoStart" value="0"><!--控制播放方式: x=1,打开网页自动播放; x=0,按播放键播放。-->
<param name="ClickToPlay" value="1"><!--控制播放开关: x=1,可鼠标点击控制播放或暂停状态; x=0,禁用此功能。-->
<param name="DisplaySize" value="0"><!--控制播放画面: x=0,原始大小; x=1,一半大小; x=2,2倍大小。-->
<param name="EnableFullScreen Controls" value="1"><!--控制切换全屏: x=1,允许切换为全屏; x=0,禁用此功能。-->
<param name="ShowAudio Controls" value="1"><!--控制音量: x=1,允许调节音量; x=0,禁止音量调节。-->
<param name="EnableContext Menu" value="1"><!--控制快捷菜单: x=1,允许使用右键菜单; x=0,禁用右键菜单。-->
<param name="ShowDisplay" value="1"><!--控制版权信息: x=1,显示电影及作者信息;x=0,不显示相关信息-->
</object>
7.Windows Media Player 系列(不同面板样式)综合型:
<object classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,1,5,217"id=MediaPlayer type=application/x-oleobject width=210 height=340 standby="Loading Microsoft Windows Media Player components..." VIEWASTEXT align=MIDDLE>
<param name=AudioStream value=-1>
<param name=AutoSize value=0>
<param name=AutoStart value=1>
<param name=AnimationAtStart value=0>
<param name=AllowScan value=-1>
<param name=AllowChangeDisplaySize value=0>
<param name=AutoRewind value=0>
<param name=Balance value=0>
<param name=BaseURL value="">
<param name=BufferingTime value=5>
<param name=CaptioningID value="">
<param name=ClickToPlay value=0>
<param name=CursorType value=32512>
<param name=CurrentPosition value=-1>
<param name=CurrentMarker value=0>
<param name=DefaultFrame value=1>
<param name=DisplayBackColor value=0>
<param name=DisplayForeColor value=16777215>
<param name=DisplayMode value=0>
<param name=DisplaySize value=0>
<param name=Enabled value=-1>
<param name=EnableContextMenu value=-1>
<param name=EnablePositionControls value=0>
<param name=EnableFullScreenControls value=0>
<param name=EnableTracker value=1>
<param name=Filename value="http://flash.jninfo.net/swf/y1271.swf">
<param name=InvokeURLs value=-1>
<param name=Language value=-1>
<param name=Mute value=0>
<param name=PlayCount value=1>
<param name=PreviewMode value=0>
<param name=Rate value=1>
<param name=SAMILang value="">
<param name=SAMIStyle value="">
<param name=SAMIFileName value="">
<param name=SelectionStart value=0>
<param name=SelectionEnd value=true>
<param name=SendOpenStateChangeEvents value=-1>
<param name=SendWarningEvents value=-1>
<param name=SendErrorEvents value=-1>
<param name=SendKeyboardEvents value=0>
<param name=SendMouseClickEvents value=0>
<param name=SendMouseMoveEvents value=0>
<param name=SendPlayStateChangeEvents value=-1>
<param name=ShowCaptioning value=0>
<param name=ShowControls value=1>
<param name=ShowAudioControls value=1>
<param name=ShowDisplay value=1>
<param name=ShowGotoBar value=1>
<param name=ShowPositionControls value=1>
<param name=ShowStatusBar value=1>
<param name=ShowTracker value=1>
<param name=TransparentAtStart value=0>
<param name=VideoBorderWidth value=0>
<param name=VideoBorderColor value=0>
<param name=VideoBorder3D value=0>
<param name=Volume value=-1070>
<param name=WindowlessVideo value=1>
</object>
8 FLASH系列
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="266" height="240">
<param name="movie" value="http://user.net163.com/zjqz/mtv/fskl.swf">
<param name="quality" value="high">
<embed src="http://flash.jninfo.net/swf/y1271.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="266" height="240"></embed></object>
简易型:
<EMBED src=http://vod.alibaba.com/50/06/71/71/50067171_56.asf style="HEIGHT: 45px; WIDTH: 190px" type=audio/mpeg AUTOSTART="1" loop="0">
</EMBED>
标签型:
<embed width=240 height=140 transparentatstart=true animationatstart=false autostart=true autosize=false volume=100 displaysize=0 showdisplay=true showstatusbar=true showcontrols=true showaudiocontrols=true showtracker=true showpositioncontrols=true balance=true src="http://vod.alibaba.com/50/06/71/71/50067171_56.asf">
</embed>
引用内容:媒体播放器的外观界面
在网页中,你可以通过相关属性来控制媒体播放器的哪些部分出现,哪些部分不出现。
媒体播放器包括如下元素:
Video Display Panel:视频显示面板;
Video Border:视频边框;
Closed Captioning Display Panel;字幕显示面板;
Track Bar;搜索栏;
Control Bar with Audio and Position Controls:带有声音和位置控制的控制栏;
Go To Bar:转到栏;
Display Panel:显示面板;
Status Bar:状态栏;
下面的属性用来决定显示哪一个元素:
ShowControls 属性:是否显示控制栏(包括播放控件及可选的声音和位置控件);
ShowAudioControls 属性:是否在控制栏显示声音控件(静音按钮和音量滑块);
ShowPositionControls 属性:是否在控制栏显示位置控件(包括向后跳进、快退、快进、向前跳进、预览播放列表中的每个剪辑);
ShowTracker 属性:是否显示搜索栏;
ShowDisplay 属性:是否显示显示面板(用来提供节目与剪辑的信息);
ShowCaptioning 属性:是否显示字幕显示面板;
ShowGotoBar 属性:是否显示转到栏;
ShowStatusBar 属性:是否显示状态栏;
□播放列表
媒体播放器提供下面的方法来访问播放列表中的剪辑:
Next 方法,跳到节目(播放列表)中的下一个剪辑;
Previous 方法,跳回到节目中的上一个剪辑;
媒体播放器的一个特性是能够预览节目中的每一个剪辑,使用如下属性:
PreviewMode 属性,决定媒体播放器当前是否处于预览模式;
CanPreview 属性,决定媒体播放器能否处于预览模式;
在windows 媒体元文件中,可以为每一个剪辑指定预览时间——PREVIEWDURATION,如果没有指定,那么默认的预览时间是10秒钟。
你也可以用Windows 媒体元文件来添加 watermarks 与 banners,元文件也支持插入广告时的无间隙流切换。
□节目信息
使用 GetMediaInfoString 方法可以返回相关剪辑或节目的如下信息:
文件名:File name
标题:Title
描述:Description
作者:Author
版权:Copyright
级别:Rating
URLs:logo icon、watermark、banner的地址
剪辑信息可以放在媒体文件中,也可以放在Windows 媒体元文件中,或者两者都放。如果在元文件中指定了剪辑信息,那么用 GetMediaInfoString 方法返回的就是元文件中的信息,而不会返回剪辑中包含的信息。
在元文件中,附加信息可以放置在每一个剪辑或节目的 PARAM标签中。你可以为每个剪辑添加任意多个 PARAM 标签,用来存储自定义的信息或链接到相关站点。在 PARAM 标签中的信息可以通过 GetMediaParameter 方法来访问。
下面的属性返回有关大小和时间的信息:
ImageSourceHeight、ImageSourceWidth:返回图像窗口的显示尺寸;
Duration 属性,返回剪辑的长度(秒), 要检测这个属性是否包含有效的数值,请检查IsDurationValid 属性。(对于广播的视频,其长度是不可预知的)。
□字幕
你可以用 .smi 文件来为你的节目添加字幕。媒体播放器支持下面的属性来处理字幕:
SAMIFileName 属性,指定 .smi 文件的名字;
SAMILang 属性,指定字幕的语言(如果没有指定则使用第一种语言);
SAMIStyle 属性,指定字幕的文字大小和样式;
ShowCaptioning 属性,决定是否显示字幕显示面板;
□脚本命令
伴随音频、视频流,你可以在流媒体文件中加入脚本命令。脚本命令是多媒体流中与特定时间同步的多对Unicode串。第一个串标识待发命令的类型,第二个串指定要执行的命令。
当流播放到与脚本相关的时间时,控件会向网页发送一个 ScriptCommand事件,然后由事件处理进程来响应这个事件。脚本命令字符串会作为脚本命令事件的参数传递给事件处理器。
媒体播放器会自动处理下面类型的内嵌脚本命令:
1)URL型命令:当媒体播放器控件收到一个URL型的命令时,指定的URL会被装载到用户的默认浏览器。如果媒体播放器嵌在一个分帧的HTML文件中,URL页可以装载到由脚本命令指定的帧内。如果脚本命令没有指定一个帧,将由 DefaultFrame 属性决定将 URL 页装入哪一帧。
你可以通过设置 InvokeURLs 属性来决定是否自动处理 URL 型的脚本命令。如果这个属性的值为 false ,媒体播放器控件将忽视 URL型命令。但是脚本命令事件仍会触发,这就允许你有选择地处理 URL 型命令。
URL 型命令指定的是 URL 的相对地址。基地址是由 BaseURL属性指定的。媒体播放器控件传送的脚本命令事件的命令参数是链接好的地址。
2)FILENAME型命令:当媒体播放器控件收到一个FILENAME型的命令时,它将 FileName属性设置为脚本命令提供的文件,之后媒体播放器会打开这个文件开始播放。 媒体播放器控件总是自动处理 FILENAME 型命令,不象 URL 型命令,它们不能被禁止。
3)TEXT型命令:当媒体播放器控件收到一个 TEXT型的命令时,它会将命令的内容显示在控件的字幕窗口。内容可以是纯文本的,也可以是 HTML。
4)EVENT型命令:当媒体播放器控件收到一个 EVENT型的命令时,它会在媒体元文件中搜索 EVENT 元素的 NAME 属性。如果 NAME 属性与脚本命令中的第二个字符串匹配,媒体播放器控件就执行包含在 EVENT 元素中的条目。
5)OPENEVENT型命令:当媒体播放器控件收到一个 OPENEVENT型的命令时,它会在媒体元文件中检查 EVENT 元素,并打开匹配的标题,但不播放,直到收到来自 EVENT型命令的同名真实事件。
□捕捉键盘和鼠标事件
EnableContextMenu 与 ClickToPlay 属性为用户提供了在图像窗口进行操作的方法。
如果 EnableContextMenu 属性为 true ,在图像窗口右击鼠标可以打开关联菜单,如果将ClickToPlay 属性设为 true ,用户可以单击图像窗口进行播放与暂停的切换。
要接收鼠标移动和单击事件,请将 SendMouseMoveEvents 和 SendMouseClickEvents 属性设为 true 。鼠标事件有:
MouseDown,当用户按下鼠标时产生;
MouseUp,当用户释放鼠标时产生;
MouseMove,当用户移动鼠标时产生;
Click,当用户在媒体播放器上单击鼠标按钮时产生;
DbClick,当用户在媒体播放器上双击鼠标按钮时产生;
要接收键盘事件,请将 SendKeyboardEvents 属性设为 true 。键盘事件有:
KeyDown,当用户按下一个键时产生;
KeyUp,当用户释放一个键时产生;
KeyPress,当用户按下并释放一个键时产生;
□监测流状态与网络链接
流状态属性包括:
PlayState:播放状态;
OpenState:打开状态;
Bandwidth:带宽;
支持的事件有:
OpenStateChange:打开状态改变(仅当SendOpenStateChangeEvents属性为true时触发)
PlayStateChange:播放状态改变(仅当SendPlayStateChangeEvents属性为true时触发)
EndOfStream:流结束时触发;
NewStream:打开新流时触发;
网络接收属性包括:
ReceptionQuality:接收质量;
ReceivedPackets:已经收到的包;
LostPackets:丢失的包;
监测缓冲的属性有:
BufferingTime:缓冲时间;
BufferingCount:缓冲次数;
BufferingProgress:缓冲进程;
Buffering:缓冲事件;
□错误处理
媒体播放器提供了内建的错误处理功能——在对话框或状态栏显示错误信息。 另外,你可以自己添加错误处理程序。如果 SendErrorEvents 属性设置为 true,将不会显示错误框,而是发送错误事件;如果 SendErrorEvents 属性设置为 false,将显示错误框,而是发送错误事件。
媒体播放器支持下面的错误处理事件:
Error 事件,指有危险性错误发生;
Warning 事件,指发生了非危险性的错误;
当你的应用程序接收到一个错误事件,你可以检测下面的属性来确定具体的错误信息:
HasError:检测目前的媒体播放器是否有错误;
ErrorCode:提供与该类型错误相关的代码值;
ErrorDescription:提供错误的描述信息;
ErrorCorrection:指定媒体播放器对该类型的错误进行校正;
posted @
2008-01-19 19:41 jadmin 阅读(74) |
评论 (0) |
编辑 收藏
2008年1月16日这天,IT界最大的新闻是SUN 收购了MySQL.
Sun宣布已经与MySQL AB达成协议,以大约10亿美元收购MySQL AB,其中8亿美元现金收购MySQL AB的全部股权,另外的2亿美元作为期权。MySQL负责开发社区的副总裁 Kaj,在他的blog中分析了这单交易对于MySQL的用户、核心社区以及公司员工会带来哪些影响,还发表了他与MySQL的两位创始人Monty和David关于此事的交谈。这次收购使了Sun在IT企业中的地位进一步巩固,现在甚至包括了150亿美元的数据库市场,Sun不仅是一个领先的网络平台和环境的提供商,而且也是最大的开源商业贡献者。
SUN公司现已成为当今世界上产品经最为丰富的IT公司之一。软硬件统吃,从操作系统、到中件间、到数据库、再到应用软件。去年跟SUN中国工程院一位博士在聊天,他说SUN公司的产品线唯一就是缺少数据库。没想到时隔一年就把这个缺口给补上了。
现在很多用户关心的是MYSQL今后会怎么样?对于这个问题MYSQL的创始人给出了积极的态度:对于用户来说,MYSQL将会更加美好,MYSQL的开放理念与SUN公司的开放完全相同。MYSQL将会更加强大。
posted @
2008-01-19 19:25 jadmin 阅读(63) |
评论 (0) |
编辑 收藏
有些道理总要等到适当的年纪才能明白,人生的哲理总是来得太迟。回想曾经让我们激动万分的事情,竟是如此微不足道,为什么当初就不能领悟?冤冤相报 何时了,这个道理谁都明白,可我们为什么还在沉溺于过去的痛苦无法自拔?如果你知道一个人能做的最大的冒险事情,就是乐意在公共场合经常暴露自己的愚昧。 你现在愿意这么做吗?-psytopic.com
许多人不遗余力地学习,遗憾的是真知往往来得太迟,以至于我们没法充分利用它。的确,我现有的知识在我早年的生活中肯定会更实用,这些知识能让我少走弯路,避免过去那些年受过的痛苦,而这些痛苦,我也让别人承受过。
我不相信生活会无故地变得富裕而有情趣,那只是浪漫的妄想。因为我一生都充满动荡和不安。失败不会主动传授你知识,我通过芸芸众生的无知、胆怯和愚 笨来获取真知。有了它们,生活会变得轻松,也更成功。因此,我要和大家分享一些姗姗来迟的道理,期待能让一些人避免重蹈我的覆辙。
很多事情其实无关紧要
许多令我激动、担忧或殚精竭虑的事情,到最后都变得不值一文。只有很少的事情确实关乎我们一生的快乐。我多么希望早点知道这些,以便能把精力都投入到这些关乎幸福的事,而不是其他。
沉溺于过去的痛苦是最大的痛苦来源
看那些恐怖组织和军事武装集团,往往都是为了陈年旧事,为了索取一小块土地的历史所有权,为了修正一项错误的历史决定。这些都成为了他们将杀戮正义化的基础。
等待有把握时再去做一件事,往往意味着永远的等待
一个人能做的最大的冒险事情,就是乐意在公共场合经常暴露自己的愚昧。没有什么能比这样学得更快。“哎呀”, 也是一种乐趣。
盲目追赶潮流是对精神和智力的扼杀
你可以成为一个廉价的时尚木偶,也可以成为独一无二的你,这些都在于自己的选择。信仰不是群众的鸦片,流行才是。
如果有人抱怨你太特立独行,恭喜你,你正走在正确的路上
谁愿意像动物一样活着?那些强有力的家伙们不希望你按照自己的意愿去做,他们希望你停止给他们制造麻烦并听从他们的命令。但你得知道,你无法做到在卑躬屈膝的同时又能活出自我。
如果你将工作等同于生活,那么你将为工作而生活
和很多人一样,当看到那些艺术家和音乐家的工作几乎是全部的生活,我感到很困惑。其实那不是工作,那是他们的自我。除非你有无法抵挡的激情,恰巧也 能让你从中得以谋生,否则请永远记住,工作只是一种手段,而不是目的,我们的最终目的是享受生活。在实现目的的同时,尽可能地少花时间在手段上。只有傻瓜 才是为工作而生活。
破坏关系的最快最简单的方法就是听信谣言
浪费你时间的最糟糕方式是传播这些谣言。传播流言蜚语的人好比瘟疫的携带者,相比之下,蟑螂都比他们干净、善良。
试图取悦别人是徒劳无益的做法
总有些人会对你发飙。很多你接触的人,在很多时候也会不喜欢、贬低、轻视或忽略你。另外,你永远也不知道别人真正的需要,因此你为此所做的所有努力 都会付诸东流。放松些吧,爱你的人终究会包容你的过失,他们才是值得我们在乎的人。其他那些人,他们甚至都不值得花5分钟去考虑。
没有永久的胜利者
踏上冠军宝座是件好事情。但不要梦想着可以永久占据这个位置,最糟糕的是,你正决定为达此目的而不择手段。
你不可能取悦、平息或改造一个混蛋
你能做的最好方式,是和他们敬而远之。变成混蛋也能传染,你和他们呆的时间越长,你也越有可能染上混蛋的习气或者你就成为混蛋。
努力加倍,期望减半
任何事情都是花掉你计划的两倍时间,最后却只换来你一半的期望结果。没什么好为此沮丧的,(中国俗话说:事倍功半)让它去吧,你要继续前行。
人是奇怪的偏执狂
撒谎者总是撒谎,骗子总要行骗。一个人对你倾诉的时候,通常已在其它人的面前倾诉过,只是可能没有得到想要回应。一位忠诚的朋友,无论遭受多大的冤屈依旧忠诚。
接纳自己
不管你怎么努力,你都无法逃避成为自己。除了自己,你还能成为谁呢?你可以扮演和假装,但进行扮演和假装的人还是你自己。如果你都无法接纳自己,没有努力挖掘自己已有的东西,那么谁有义务接纳你呢?
谈到公众谎言,没有比预算数字更令人震惊的
把时间折腾在这上面,是浪费时间。既使(奇迹中的奇迹!) 你是实事求是并且准确的, 其他人也不会那么愚蠢。
世界上最大的噪音是人们的抱怨
不要再增加了。
I don’t buy the romantic notion that my life has been somehow richer or more interesting because of all the times I screwed up; nor that the mistakes were “put” there to help me learn. I made them myself—through ignorance, fear, and a dumb wish to have everyone like me—and life and work would have been less stressful and more enjoyable (and certainly more successful) without them. So here are some of the things I wish I had learned long ago. I hope they may help a few of you avoid the mistakes that I made back then.
* Most of it doesn’t matter. So much of what I got excited about, anxious about, or wasted my time and energy on, turned out not to matter. There are only a few things that truly count for a happy life. I wish I had known to concentrate on those and ignore the rest.
* The greatest source of misery and hatred in this world is clinging to past hurts. Look at all the terrorists and militant groups that hark back to some event long gone, or base their justification for killing on claims of some supposed historical right to a bit of land, or redress for a wrong done hundreds of years ago.
* Waiting to do something until you can be sure of doing it exactly right means waiting for ever. One of the greatest advantages anyone can have is the willingness to make a fool of themselves publicly and often. There’s no better way to learn and develop. Heck, it’s fun too.
* Following the latest fashion, in work or in life, is spiritual and intellectual suicide. You can be a cheap imitation of the ideal of the moment; or you can be a unique individual. The choice is yours. Religion isn’t the opiate of the masses, fashion is.
* If people complain that you’re too fond of going your own way and aren’t fitting in, you must be on the right track. Who wants to live life as a herd animal? The guys in power don’t want you to fit in for your own sake; they want you to stop causing them problems and follow their orders. You can’t have the freedom to be yourself and meekly fit in at the same time.
* If you make your work your life, you’re making your life into hard work. Like most people, I confused myself by looking at people like artists and musicians whose life’s “work” fills their time. That isn’t work. It’s who they are. Unless you have some overwhelming passion that also happens to allow you to earn a living doing it, always remember that work should be a means to an end: living an enjoyable life. Spend as little time on the means as possible consistent with achieving the end. Only idiots live to work.
* The quickest and simplest way to wreck any relationship is to listen to gossip. The worst way to spend your time is spreading more. People who spread gossip are the plague-carriers of our day. Cockroaches are clean, kindly creatures in comparison.
* Trying to please other people is largely a futile activity. Everyone will be mad at you sometime. Most of the people you deal with will dislike, disparage, belittle, or ignore what you say or do most of the time. Besides, you can never really know what others do want, so a good deal of whatever you do in that regard will go to waste. Be comforted. Those who love you will probably love you regardless, and they are the ones whose opinions are worth caring about. The rest aren’t worth five minutes of thought between them.
* Every winner is destined to be a loser in due course. It’s great to be up on the winner’s podium. Just don’t imagine you can stay there for ever. Worst of all is being determined to do so, by any means available.
* You can rarely, if ever, please, placate, change, or mollify an asshole. The best thing you can do is stay away from every one you encounter. Being an asshole is a contagious disease. The more time you spend around one, the more likely you are to catch it and become one too.
* Everything takes twice as long as you plan for and produces results about half as good as you hoped. There’s no reason to be downhearted about this. Just allow for it and move on.
* People are oddly consistent. Liars usually tell lies. Cheaters cheat whenever it suits them. A person who confides in you has usually confided in several others first—but not got the response they wanted. A loyal friend will stay loyal under enormous amounts of thoughtless abuse.
* However hard you try, you can’t avoid being yourself. Who else could you be? You can act and pretend, but the person acting and pretending is still you. And if you won’t accept yourself—and do the best you can with what you have—who then has any obligation to accept you?
* When it comes to blatant lies, there are none more egregious than budget figures. Time spent agonizing over them is time wasted. Even if (miracle of miracles!) yours are honest and accurate, no one else will have been so foolish.
* The loudest noise in the world is the sound of people whining. Don’t add to it.
posted @
2007-12-20 10:52 jadmin 阅读(51) |
评论 (0) |
编辑 收藏
如果你想出门,但电脑又正在进行工作,这时就要用到自动关机。大多数实现自动关机的方法都是使用一些第三方软件,这样不仅麻烦,而且为实现这个小功 能而专门动用一个软件,显的小题大做了!其实Windows XP(Windows 2000也可以)自身就具备定时关机的功能,下面我们就来看看如何实现Windows XP的自动关机。
Windows XP的关机是由Shutdown.exe程序来控制的,位于Windows\System32文件夹中。如果想让Windows 2000也实现同样的效果,可以把Shutdown.exe复制到系统目录下。
比如你的电脑要在22:00关机,可以选择“开始→运行”,输入“at 22:00 Shutdown -s”,这样,到了22点电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机,可以输入 “Shutdown.exe -s -t 3600”,这里表示60分钟后自动关机,“3600”代表60分钟。
设置好自动关机后,如果想取消的话,可以在运行中输入“shutdown -a”。另外输入“shutdown -i”,则可以打开设置自动关机对话框,对自动关机进行设置。
Shutdown.exe的参数,每个都具有特定的用途,执行每一个都会产生不同的效果,比如“-s”就表示关闭本地计算机,“-a”表示取消关机操作,下面列出了更多参数,大家可以在Shutdown.exe中按需使用。
-f:强行关闭应用程序
-m \\计算机名:控制远程计算机
-i:显示图形用户界面,但必须是Shutdown的第一个选项
-l:注销当前用户
-r:关机并重启
-t 时间:设置关机倒计时
-c "消息内容":输入关机对话框中的消息内容(不能超127个字符)
posted @
2007-12-20 10:40 jadmin 阅读(42) |
评论 (0) |
编辑 收藏
最近discuz发布了新的版本,免费了,用的人更多了,以前使用其它论坛程序和discuz2.5/3.0的纷纷转换或升级到discuz4.0,可见discuz作为中国人开发的php论坛程序,确实是非常优秀的,在大家欣喜若狂的时候,也遇到了一些问题
看到不少用户反映转换完以后是乱码的情况,出现这种现象的主要原因是这类用户使用的都是mysql4.1以上的版本.下面作一个说明,希望出现这个问题的朋友都能耐心的把这个文档看完!!!
MySQL 4.1开始,对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商),MySQL 3、4.0 仍然占主导地位;但 MySQL 4.1 乃至5.0是 MySQL 官方推荐的数据库,已经有主机提供商开始提供并将会越来越多;因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集,成功的蒙蔽了许多 PHP 程序的开发者和用户,掩盖了在中文等语言环境下会出现的问题。
MySQL 4.1开始把多国语言字符集分的更加详细,所以导致数据库迁移,或则dz论坛升级到4.0后(dz4.0开始使用gbk或utf-8编码)出现乱码问题。
MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 7 rows in set (0.00 sec) mysql> SHOW VARIABLES LIKE 'collation_%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin1_swedish_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows in set (0.00 sec) |
MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL,其中的一个数据库,其中的一张表,其中的一栏,应该用什么字符集。但是,传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?
编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的;
此时 character_set_server 被设定为这个默认的字符集;
当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 character_set_server;
当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集下的;
当我们按照原来的方式通过PHP存取MySQL数据库时,就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。
想要进行“正确”的存储和得到“正确”的结果,最方便的是在所有query开始之前执行一下:
SET NAMES 'gbk';
其中gbk是数据库字符集。
它相当于下面的三句指令:
SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = gbk;
4.1和5.0默认使用的是latin1字符集(木头:妈的,老外真霸道,妄想让全世界都是使用瑞典字符集吗)
如果我们只想使用gbk字符集存储和获取数据,
我们在编译mysql 4.1和 5.0的时候,需要注意在my.ini或者my.cnf中添加两处参数
CODE:
[mysqld] default-character-set=utf8 |
CODE:
#settings for clients (connection, results, clients) [mysql] default-character-set=utf8 |
下面我们来说主题,如何转换数据库字符集
两种方法,
第一种----更改存储字符集 主要的思想就是把数据库的字符集有latin1改为gbk,big5,或者utf8; 以下操作必须拥有主机权限。假设当前操作的数据库名为:database 导出 首先需要把数据导为mysql4.0的格式,具体的命令如下: mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse > d4.sql mysqldump的参数参照: MySql数据库备份mysqldump参数选项 --default-characte-set 以前数据库的字符集,这个一般情况下都是latin1的, --set-charset 导出的数据的字符集,这个可以设置为gbk,utf8,或者big5 导入 首先使用下面语句新建一个GBK字符集的数据库(test) CREATE DATABASE `d4` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 然后把刚才导出的数据导入到当前的数据库中就ok了。 mysql -uroot -p --default-character-set=gbk -f d4 通过以上的导出和导入就把数据库的字符集改为正确的存储方式了。 其中d4为新建库的名称,d4.sql为导出文件的名字 但是这种方法,发现数据库数据存储量无端变大30%,真是郁闷 |
另外一种其实原理相同,但是需要手动操作,一般用于第一种方法失败后的选择 不过这种方法如果数据库很大,估计很难做,因为光打开文件就能让你死机 首先还是用phpmyadmin或者用mysql本身的dump导出 .sql文件 然后用UltraEdit打开你备份的所有xxxx.sql文件,查找
CODE:
DEFAULT CHARSET=latin1 |
latin1这里也许是别的,反正是你不想要的,要转成gbk或者big5的字符集 把这个替换为“空” 在查找
CODE:
CREATE TABLE cdb_sessions ( sid char(6) character set latin1 collate latin1_bin NOT NULL default '', ip1 tinyint(3) unsigned NOT NULL default '0', ip2 tinyint(3) unsigned NOT NULL default '0', ip3 tinyint(3) unsigned NOT NULL default '0', ip4 tinyint(3) unsigned NOT NULL default '0', uid mediumint(8) unsigned NOT NULL default '0', username char(15) NOT NULL default '', groupid smallint(6) unsigned NOT NULL default '0', styleid smallint(6) unsigned NOT NULL default '0', invisible tinyint(1) NOT NULL default '0', `action` tinyint(1) unsigned NOT NULL default '0', lastactivity int(10) unsigned NOT NULL default '0', fid smallint(6) unsigned NOT NULL default '0', tid mediumint(8) unsigned NOT NULL default '0', nickname char(15) NOT NULL default '', UNIQUE KEY sid (sid) ) ENGINE=HEAP MAX_ROWS=1000; |
替换为
CODE:
CREATE TABLE `cdb_sessions` ( `sid` char(6) binary NOT NULL default '', `ip1` tinyint(3) unsigned NOT NULL default '0', `ip2` tinyint(3) unsigned NOT NULL default '0', `ip3` tinyint(3) unsigned NOT NULL default '0', `ip4` tinyint(3) unsigned NOT NULL default '0', `uid` mediumint(8) unsigned NOT NULL default '0', `username` char(15) NOT NULL default '', `groupid` smallint(6) unsigned NOT NULL default '0', `styleid` smallint(6) unsigned NOT NULL default '0', `invisible` tinyint(1) NOT NULL default '0', `action` tinyint(1) unsigned NOT NULL default '0', `lastactivity` int(10) unsigned NOT NULL default '0', `fid` smallint(6) unsigned NOT NULL default '0', `tid` mediumint(8) unsigned NOT NULL default '0', `nickname` char(15) NOT NULL default '', UNIQUE KEY `sid` (`sid`) ) TYPE=HEAP MAX_ROWS=2000; |
这一步更为简单的办法就是删除掉关于cdb_sessions表的这一段,将来全新装一个d4,将这个表导出 将其内容复制,粘贴到 sql文件的最后面 保存后,再把这个sql文件导入到你的库中 就OK了 |
用这两种方法就可以很方便的把4.1和5.0的mysql数据库降级到4.0
简单的过程就是
A导出4.1/5.0的库
B进行处理,转换成gbk字符集
C彻底卸载4.1或者5.0
D安装4.0.26
E然后导入处理完的库
降级的时候导出库可以用这个方法
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse --compatible=mysql40 > d4.sql
这样导出的就是4.0的库勒
至于mysql版本的升级,
如果数据文件中有中文信息,那么将MySQL 4.0的数据文件,直接拷贝到MySQL 4.1中就是不可以的,即便在my.ini中设置了default-character-set为正确的字符集。虽然貌似没有问题,但MySQL 4.1的字符集有一处非常恼人的地方,以gbk为例,原本MySQL 4.0数据中varchar,char等长度都会变为原来的一半,这样存储中文容量不变,而英文的存储容量就少了一半。这是直接拷贝数据文件带来的最大问题。
所以,升级的根本,如果想使用“正确”的字符集,还是先用mysqldump导出成文件,然后导入。
这里顺便提一个我的好友深海写的
用于MySQL4.1的论坛数据库字符集整理工具。
刚写的,处理部分代码可能写得有点龌龊,但是不影响使用,
主要用于处理整理MySQL4.1指定数据库、表、字段的字符集。
适用于将非允许的字符集范围内的数据结构(无数据!!)整理为适合Discuz!允许的字符集范围。
posted @
2007-12-16 22:50 jadmin 阅读(46) |
评论 (0) |
编辑 收藏