Tuesday, August 28, 2007

Javascript floating Ad.

var delta=0.15
var collection;
function floaters()
{
this.items = [];
this.addItem = function(id,x,y,content)
{
documen_t.write('
'+content+'
');
var newItem = {};
newItem.object = documen_t.getElementById(id);
newItem.x = x;
newItem.y = y;
this.items[this.items.length] = newItem;
}
this.play = function()
{
collection = this.items
setInterval('play()',10);
}
}
function play()
{
if(screen.width<=800) { for(var i=0;i0?1:-1)*Math.ceil(Math.abs(dx));
followObj.style.left=followObj.offsetLeft+dx;
}
if(followObj.offsetTop!=(documen_t.body.scrollTop+followObj_y))
{
var dy=(documen_t.body.scrollTop+followObj_y-followObj.offsetTop)*delta;
dy=(dy>0?1:-1)*Math.ceil(Math.abs(dy));
followObj.style.top=followObj.offsetTop+dy;
}
followObj.style.display = '';
}
}
var theFloaters = new floaters();
theFloaters.addItem('followDiv1','documen_t.body.clientWidth-100',80,''); theFloaters.addItem('followDiv2',10,80,'');
theFloaters.play();

Monday, August 27, 2007

农历七月十五:怀念家乡的鬼节

无题
(怀念家乡的鬼节,作此诗一篇。)

七月鬼魂遍地游,
都在今夜全走空。
人生在世需尽孝,
莫待身后把纸烧。

Best Practices for Creating DLLs

Best Practices for Creating DLLs
Updated: May 19, 2006

Download
Best Practices for Creating DLLs

DLL_bestprac.doc
152 KB
Microsoft Word file
Updated: May 19, 2006

Get Office File Viewers

A dynamic link library (DLL) consists of shared code and data that an application can load at run time, rather than statically link at compile time. Advantages of using DLLs include reduced code footprint, lower memory utilization due to single-copy-sharing, flexible development and testing, modularity and functional isolation, and so on.

This paper provides guidelines for developing robust, portable, and extensible DLLs for the Windows family of operating systems.

Included in this paper:

• The Library Loader, DLLMain, and the Loader Lock

• Interactions Between the Loader, the Loader Lock, and DLLMain

• Best Practices for Implementing DLLMain

Download: Dll bestprac.doc

《士兵突击》的几句台词

列兵许三多:“好好活就是有意义,有意义就是好好活。”
连长高诚:“明明是个强者,却天生一幅熊样。”
队长袁朗:“你太好于表现了,我要什么你就给什么,哪怕你没有。”

Wednesday, August 22, 2007

SQL SERVER - T-SQL Paging Query Technique Comparison - SQL 2000 vs SQL 2005

I was doing paging in SQL Server 2000 using Temp Table or Derived Tables. I decided to checkout new function ROW_NUMBER() in SQL Server 2005. ROW_NUMBER() returns the sequential number of a row within a partition of a result set, starting at 1 for the first row in each partition. I have compared both the following query on SQL Server 2005.

SQL 2005 Paging Method

USE AdventureWorks
GO
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 120
SET @EndRow = 140

SELECT FirstName, LastName, EmailAddress
FROM (
SELECT PC.FirstName, PC.LastName, PC.EmailAddress,
ROW_NUMBER() OVER(Order BY PC.FirstName, PC.LastName,PC.ContactID) AS RowNumber
FROM Person.Contact PC) PersonContact
WHERE RowNumber > @StartRow AND RowNumber < @EndRow
ORDER BY FirstName, LastName, EmailAddress
GOSQL 2000 Paging Method

USE AdventureWorks
GO
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 120
SET @EndRow = 140

CREATE TABLE #tables (RowNumber INT IDENTITY(1,1),
FirstName VARCHAR(100), LastName VARCHAR(100), EmailAddress VARCHAR(100))
INSERT INTO #tables (FirstName, LastName, EmailAddress)
SELECT PC.FirstName, PC.LastName, PC.EmailAddress
FROM Person.Contact PC
ORDER BY FirstName, LastName, EmailAddress

SELECT FirstName, LastName, EmailAddress
FROM #tables
WHERE RowNumber > @StartRow AND RowNumber < @EndRow

DROP TABLE #tables
GOWhile running both the query at same time in query analyzer and comparing execution plan I have discovered that SQL 2005 query method cost is 46% and SQL 2000 query method cost is 54%. Looking at client Statistics I noticed significant improvement in Time Statistics.

Update (6/11/2007) : Extention of this article is published SQL SERVER - 2005 T-SQL Paging Query Technique Comparison (OVER and ROW_NUMBER()) - CTE vs. Derived Table

Reference : Pinal Dave (http://www.SQLAuthority.com)

Monday, August 20, 2007

CS里有用的全部命令

banid 几分钟 #编号 kick.......踢人Wonid让他换名字后也进不来,除非他换计算机,时间0=永远
deathmatch 1..................开dm模式,一个人一组,把其它人解决掉
decalfrequency 30.............玩家的logo多久可喷一次(秒)
kick #编号....................踢人(server专用,踢编号需加#,踢名字不用,但大小写要一样)
mapcyclefile mapcycle.txt.....选择地图切换的设定档,内定为mapcycle.txt,可准备好几份设定档
mp_autokick 1.................睡死和TK三次后自动被系统踢掉
mp_autoteambalance 1..........自动队伍平衡,0为准许双方人数不平均和Bot玩时的好参数!
mp_buytime 1.5................以分钟计,即90秒内均可回基地买东西
mp_c4timer 45.................设定C4炸弹的爆炸时间。最低15秒,最高90秒
mp_chasecam 0.................设定观察员模式的玩家只能跟在别人的屁股
mp_consistency 1..............限制某些模型被更改,大的C4或大的别人的武器容易让人发现...
mp_decals 250.................贴图分辨率,降低可减少lag
mp_fadetoblack 1..............这样死后画面变黑 活人可以看得到尸体
mp_falldamage 1...............会不会摔伤
mp_flashlight 1...............开启/关闭可否使用手电筒。1是开启,0是关闭
mp_footsteps 1................开启/关闭脚步声。1是开启,0是关闭
mp_forcechasecam 0............死掉的人:0自由模式、1只能跟着自己队友走动、2尸体视线留在原地
mp_forcerespawn 0.............死后立即重新出发
mp_freezetime x...............每一场开始前的购物静止秒数
mp_friendly_genrade_damage 0..............设定同队的是否可以手榴弹丢伤队友
mp_friendlyfire 0.............设定会不会杀伤队友。1是会,0是关闭
mp_ghostfrequency 0.1.........鬼魂每秒钟更新的频率,越高越不会Lag
mp_hostagepenalty 13..........杀了多少人质或队友后会被踢
mp_limitteams 2...............队伍最大相差人数,太多人便不能再加入
(如mp_autoteambalance 1则相差到此人数server便会自动平衡)
mp_logfile 1..................开不开纪录文件(那要怎么存盘???)
mp_logmessages 0..............控制是否把游戏进行间玩家的对话也记录到log文件中,
此项设定必需同时设定"log on""mp_logfile 1"才可生效
mp_lowlag 0...................子弹打在墙上的效果,速度快用0,慢用1
mp_mapvoteratio 0.6...........票选地图的人数达60%以上才会换地图,0.0-1.0
mp_roundtime 5................设定每回合的时间。(只能3~15分钟)
mp_tkpunish 1.................TK者下回合会自杀
mp_weaponstay 0...............保留落下的武器
nightvision 1.................夜试镜能否使用
pauseble 0....................可以战斗中按暂停(Pause键,在F12键的右边第三颗)
status........................列出玩家IP编号等
sv_accelerate 5.0.............加速
sv_aim 0......................自动瞄准头部
sv_airaccelerate 10...........空中移动的速度
sv_airmove 1..................可否在空中移动&转向
sv_bounce 1...................各种奖励金开启???
sv_cheats 0...............可不可以使用内定秘技
sv_clienttrace 1..................可能是有关网络封包的设定...
sv_clipmode 0..................Server端切换是否允许Client端穿墙?
sv_clipmode 0.................应该是对象是否用3D表示...like mp5...?
sv_friction 40................3D画面方面的东东
sv_gravity 800................控制重力,800是正常重力,-999到999999
sv_maxrate 0.............限制网络传输的资料最大值
sv_maxspeed 320...............最大速度
sv_minrate 0.........限制网络传输的资料最小值
sv_password 0.................进入游戏的密码
sv_restartround 0.............设定每隔几分钟回复分数/武器/金钱的初始值。(没效...?)
sv_sendvelocity 0.............设定1开启较复杂的花样以及物理设定,适用较快的Server
sv_stepsize 18................脚步大小..-_-; 越大爬坡越快吧...
sv_waterfriction 10...........水中的阻力...
users................列出线上使用者名称及Userid(Server产生)及Uniqueid(WON server产生)
changelevel 地图名............立刻换地图,所有USER不会离开游戏
map 地图名....................立刻换地图,但所有USER会离开游戏。
mp_maxrounds X................X→几回合之后换地图
mp_winlimit X.................任一队胜X场便换图,例5战3胜制,X=3
mp_timelimit 45..........每隔多少时间换一次地图
(以上三个只能选一个,因此要"mp_maxrounds 20"前要先"mp_timelimit 0")
sv_rcon_maxfailures 5..........试图取得管理员权限失败超过几次,CDKEY即被BAN
sv_rcon_minfailuretime 30......单位秒。如果在此时间内试图取得管理员权限.又失败了
sv_rcon_minfailures指定的次数,该CDKEY即被BAN
sv_rcon_banpenalty 0...........指定在试图取得管理员权限中如果BAN CDKEY,BAN多久。0=永远
=====================================================================================
玩家用参数
adjust_crosshair..............每打一次准心就会换颜色,共有五种颜色,选个亮一点吧!!
ah 1..........................设定是否开始自动说明(戏中给玩家引导)
cl_allowupload 1..............允许用户方上传自己的资料如logo
cl_allowdownload 1............允许用户方自动下传sever的资料如map
cl_download_ingame 1..........允许用户方在game中自动下传sever的资料,如logo,map
cl_cmdrate 30.................modem用户设30,宽频设40~50,Lan=50
cl_lw X.......................有无武器的动画,最好设x=1
cl_lb 0.......................此项与血渍有关,设1比较真实,但会减低速度
cl_lc 1.......................和cs的新的网络技术有关,最好设x=1
cl_hidefrags 1................设定是否隐藏除了自己以外其它人的杀敌数与死亡数
cl_observercrosshair 1................设定在观察员模式的时候是否要开起准星
cl_updaterate 20..............上传速度,如果是宽频设30~40,如果在比较多人的站设25,modem=15,Lan=50
con_color 255 155 50..........HUD的颜色(RGB)
dm 1..........................设定1来开启游戏开始时的讯息介绍
drawradar.....................显示雷达,有时雷达会突然消失,就可以用(有时候SERVER关掉了你按也没用)
fastsprites 0.................烟雾特效,0逼真,1像超任,2像GameBoy
fps_max X.....................x=1~100,游戏输出给显示卡的最大fps数,内定为72
有不顺或鼠标一动就滑来滑去的情形时,把他设低会有很大的改善
hideradar.....................关闭雷达(测试你懂不懂得辨认队友,以免tk)
hud_centerid 0................设定为1时,玩家ID会出现在屏幕的正中央。否则会出现在画面的左下角。
hud_fastch 0..............快速换武器,按数字直接换不用再按鼠标
keys..........................显示自己的CD-KEY信息(CS没效???)
kill..........................自杀!!死定的时候……了断自已吧…
lefthand 0....................设定屏幕上的玩家是左撇子,或是右撇子。
listmaps....................显示server的地图排程
listplayers.................显示大家的编号与姓名
maps 开头.....................列出已安装之地图档名,(只列出指定字母开头的文件名,*为所有地图)
max_shells 50.................子弹的最大显示数量(太多会lag...)0-500
max_smokepuffs 50.............烟雾弹的最大显示数量,0-500
name 新名字...................换名字,活着的时候才能用
nightvision...................开关夜视镜
r_speeds 0....................以console文字方式显示平均fps,draw speed及polygon info??
r_speeds 0....................强制工作!!对网速能稍做改善!有没有效果……自已看吧!??
rate 2500.....................从server接受信息的速度,太大太小都会lag,要选适合的
setinfo ah 1...............是否提供自动说明的功能
setinfo dm 1................换地图后开启地图的简介
setinfo ghosts 0..............观察模式时是否鬼魂关掉,对lag有帮助
setinfo lefthand 0............设定屏幕上的玩家是左撇子,或是右撇子。
setinfo vgui_menus 1..........图形化选单开关
sizedown......................缩小屏幕
sizeup........................放大屏幕
timeleft..........让你知道还有几分钟换地图
version.......................显示版本信息
vote 编号.....................对TKer,Camper还有Cheater投票,过6成的人投票就行
votemap 地图名.........玩家可以投票投下一张地图
sensitivity X.................鼠标速度0.1-不限?(20是config的最大值)
zoom_sensitivity_ratio........设定使用狙击镜时鼠标移动速度
ping..................显示Server ping client值
pingservers............显示Client ping server值
net_graph x...................打开测FPS与联机速的工具 x=1开 x=0关,开起此项多少会减少fps
net_graphpos x................工具的位置 x=1,2,3
net_graphwidth 192............工具的大小
volume 0.8....................调整音量大小,实际音量为(volume/hisound)
hisound 1.000000..............设定音量最大值,实际音量为(volume/hisound)
bgmvolume 1.000000.........背景音效音乐之音量大小
disconnect..........离开游戏,保持在CS console状态
exit.....................离开游戏,关闭CS,回到桌面
quit..........................离开游戏,关闭CS,回到桌面
reconnect.....................不离线直接重组联机
retry.........................离线并重新联机
connect IP....................联机到指定Server
=====================================================================================
console本身
developer X........X=0时关闭developer(开发者)模式,X=1时打开
使用developer(开发者)模式,可以使用较多的指令(如秘技),且游戏加载过程及进行中左上角会显示console讯息(游戏中讯息会干扰雷达)
cmdlist............列出所有console指令,(可在后面加上叙述,只列出指定字母开头的指令)
clear..............清除console上的文字
scr_conspeed 600...设定console文字卷动速度
=====================================================================================
注意:以下部分为增加图象质量,如欲提高显示速度请使用相反设置
命令 默认值 建议更改值 说明
cl_himodels 0...........0,使用较低细节的人物皮肤,提高显示速度
gl_playermip 2..........0,渲染质量,越高数字质量越差显示也越快
max_smokepuffs 0........30,设定同时间可显示的烟雾数量(服务器端用)
fps_max 52..............100,显示最大FPS数,高性能机器可改大
mp_decals 20............300,最大同时显示贴图
hisound 0...............1,高质量声音
loadas8bit 1............0,使用8bit音质(较低质量)
s_a3d 0.................0,使用A3D系列声卡设置为1
s_eax 0.................0,使用创新系列声卡设置为1
bgmvolume 0.............1,播放CD音乐
cl_download_ingame 1....下载其它玩家LOGO、贴图等
gl_smoothmodels 1.......3,人物动作更平滑
gl_round_down 1.........3
setinfo "ah" 0..........1
setinfo "ghosts" 0......1,是否显示鬼魂
setinfo "vgui_menus" 0..1,是否显示图形购买界面
cl_gaitestimation 1.....0,衔接人物两个动作
cl_nopred 0.............0
gl_picmip 0.............2,渲染质量,越大的数字图象质量越低速度越快
r_drawviewmodel 0.......1,显示武器
=====================================================================================
录像类命令
首先你必须拥有CS
激活游戏的时候请修改快捷方式内的参数
\\hl.exe -console -game cstrike -condebug
此为范例请将路径更改为你自己游戏安装的路径
如果没有hl.exe使用cstrike.exe也可以。
进入游戏,并正常开始一场游戏
当您想录像时请按~键呼叫出控制台,在控制台输入以下命令:
record filename...............开始记录一个录像,录像保存在\\cstrike\\filename.dem
demos.........................循环播放使用 startdemos命令播放的录像
listdemo demoname.............列出录像信息
playdemo filename.............使用正常速度播放 filename.dem 录像
playvol 9.....................设置录像回放次数
removedemo demo sgmt..........移除录像中设置的片断位置
setdemoinfo demo sgmt info....增加一个录像信息,例如一段文字,渐进渐出或者快进快退
startdemos....................循环播放一段录像
startmovie filename...........播放一段录像
stop..........................停止录像
stopdemo......................同上
swapdemo demo seg seg.......交换录像中两处片断位置
imedemo demoname..............播放一段录像,同时显示最大fps(每秒显示帧速)及平均fps
appenddemo demoname...........在该录像文件后继续录像, 不覆盖原录像
removedemo....................从DEMO中剪掉一个片段,先用listdemo 看录像的信息
edgefriction 2............3D画面方面的东东
hpk_maxsize 0.5...........在custom.hpk多大时, 系统自动砍掉, 以MB为单位
=====================================================================================
远程遥控
先在Server.cfg 加上Rcon_password 密码
游戏中player 再以Rcon_password 密码 登入
Player 即摇身一变为AMD,可下达Server指令
但指令前需加rcon空一格。
rcon addip 0 ...........拒绝某个IP进入游戏,0表是永久,以分钟计,IP之取得由rcon status
rcon addid 0 kick....设定某个WON ID不准进入游戏,时间设定同上
rcon kick xxx...............把某个玩家踼掉,xxx可以是玩家id,不过由于有些人会加些特殊码,有时会失效,则必需改用玩家编号,(编号由rcon users可取得,每个id最前方的数字即为玩家编码,用rcon kick # yyy #)
rcon listid.................(看bannd id)
rcon restart................server地图重玩
rcon say ID:................server talk
rcon say xxxx...............由server发生公告,不管死掉还是活着的都看的到,若是发出来讯息很怪,每个字会被"夹住,可改用rcon say "xxxx"即可改善,不过1.1版应该不会有这现象了
rcon status.................看Info
rcon users..................看所有人资料
rcon writeip................将Ban掉的ID存入server
rcon writeid........将Ban掉的WON ID存入server
rcon_address IP.............Server满人时候用,只可以进行管理,不能Play
rcon_password 密码..........AMD登入密码
在使用addip和addid的同时, 建议最好做一个autoexec.cfg档, 里面写下exec listip.cfgexec banned.cfg
这样子在Server重新激活时, 才会把上一次存下的记录Load到新激活的Server里, 而名字最好就用Toexec.cfg,因为valve.rc里设定是找这个档来跑, 或是自行修改那个档去捉别的也行, 其中, listip.cfg是ban掉的ip记录文件, banned.cfg是ban掉的won id记录文件, 最后, 不建议把exec listip.cfg和exec banned.cfg放入server.cfg, 这 样会使每次换地图时就load一次, 由rcon listip和rcon listid很快就会发现被重复的记录塞满
=====================================================================================
秘技,sv_cheats 1(developer 1)时才能使用以下指令
impulse101...............加16000元
god......................无敌模式................(试不出来)
lambert -1.01...........看到人们在黑暗中发亮
notarget x...............使计算机玩家忽略你的存在..(...没用)
noclip x.................穿墙模式................(试不出来)

cl_backspeed 999.........加快后移速度
cl_forwardspeed 999......加快前移速度
cl_sidespeed 999.........加快侧移速度

gl_zmax 0................可看及射穿墙壁
gl_zmax 100..............看穿墙壁
gl_zmax 3600.............让墙壁恢复原状

sv_clienttrace 9999......超级自动瞄准
clienttrace 0000.........切回手动瞄准

givespaceweapon_awp......得到Arctic Sniper Rifle
GIVE 物品名..............取得物品................(试不出来)
GIVE WEAPON_武器名.......取得武器...............(试不出来)
武器名称如下:
GRAPPLE
KNIFE
PIPEWRENCH
EAGLE
M249
SNIPERRIFLE
DISPLACER
SHOCKRIFLE
SPORELAUNCHER
投票换地图指令 admin_vote_map XXX(地图名)
投票踢人指令 admin_vote_kick XXX(ID)

Tuesday, August 14, 2007

A standard way to detect memory leak.

_CrtMemState s1,s2,s3;
_CrtMemCheckpoint( &s1 );
{
if (inputs.size() == 0)
TestSimpleWorkflow();
else if (inputs[0] == L"Standard")
TestStandardSimpleWorkflow();
else if (inputs[0] == L"ListNameSpaces")
TestListNameSpaces();
else if (inputs[0] == L"TestLock")
TestObjectLock();
}
_CrtMemCheckpoint( &s2 );
_CrtMemDifference( &s3, &s1, &s2);
_CrtMemDumpStatistics( &s3 );
_CrtMemDumpAllObjectsSince(&s1);

Thursday, August 9, 2007

SQL Storage Procedure Example 1: Generate string randomly

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <4/29/2007>
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[SP_GenerateString](
@useNumbers bit,
@useLowerCase bit,
@useUpperCase bit,
@length as smallint,
@randomString varchar(100) OUT
)
AS

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

IF (@length <= 0)
raiserror('Cannot generate a random string with zero length', 16, 1)
DECLARE @characters varchar(100)
DECLARE @count int
SET @count=0
SET @characters = ''

IF(@useNumbers = 1)
BEGIN
SET @count = 48
WHILE(@count <= 57)
BEGIN
SET @characters = @characters + CAST(CHAR(@count) as char(1))
SET @count = @count + 1
END
END

IF(@useLowerCase = 1)
BEGIN
SET @count = 65
WHILE(@count <= 90)
BEGIN
SET @characters = @characters + CAST(CHAR(@count) as char(1))
SET @count = @count + 1
END
END

IF(@useUpperCase = 1)
BEGIN
SET @count = 97
WHILE(@count <= 122)
BEGIN
SET @characters = @characters + CAST(CHAR(@count) as char(1))
SET @count = @count + 1
END
END

SET @count = 0
SET @randomString = ''
WHILE(@count < @length)
BEGIN
SET @randomString = @randomString + SUBSTRING(@characters, CAST(1000000*RAND(@count)
as int)%LEN(@characters) + 1, 1)
SET @count = @count + 1
END
END

SQL Storage Procedure Example 1: Append rows to table

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <4/29/2007>
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[SP_PT_029]
@rowNumber [bigint] = 1000
AS

BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DECLARE @int64Val bigint
DECLARE @int32Val int
DECLARE @strVal nchar(20)
DECLARE @dtVal DATETIME
DECLARE @blobVal binary(16)
DECLARE @i int
DECLARE @duration INT
DECLARE @begin DATETIME
DECLARE @end DATETIME
DECLARE @execTime DATETIME
SELECT @i=0
DECLARE @beginAll DATETIME
select @beginAll = GETDATE()
-- Insert a row to table Result_PT_029
BEGIN
SELECT @execTime = GETDATE()
BEGIN TRANSACTION
INSERT INTO [TestSTCClient].[dbo].[RESULT_PT_029]
([ExecTime], [RowNumber])
VALUES (@execTime, @rowNumber);
COMMIT TRANSACTION
END
-- Drop table PT_029
PRINT 'Dropping table ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
DROP TABLE [dbo].[PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Delete] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Create table PT_029
CREATE TABLE [dbo].[PT_029](
[Column_Int64] [bigint] NOT NULL,
[Column_Int32] [int] NULL,
[Column_String] [nchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Column_DateTime] [datetime] NULL,
[Column_Blob] [binary](16) NULL
)
-- Set values and append rows
PRINT 'Importing data ...'
BEGIN
select @begin = GETDATE()
DECLARE @transRows bigint
SET @transRows = 50000 -- 50000 rows in a time.
DECLARE @remainingRows bigint
DECLARE @rowNo bigint
SET @rowNo = 0
SET @remainingRows = @rowNumber
WHILE(@remainingRows > 0)
BEGIN
DECLARE @rowsImporting bigint
IF(@remainingRows >= @transRows)
SET @rowsImporting = @transRows
ELSE
SET @rowsImporting = @remainingRows
BEGIN TRANSACTION
SET @i=0
WHILE(@i < @rowsImporting)
BEGIN
SELECT @int64Val = @rowNo
SELECT @int32Val = CAST(RAND(@rowNo+1) * 1000000 AS int)
exec SP_GenerateString 1, 1, 1, 20, @strVal OUT --Generate a random string
--SELECT @strVal = 'abcdefghijabcdefghij'
SELECT @dtVal = GETDATE()
DECLARE @randomString varchar(16)
exec SP_GenerateString 0, 1, 1, 16, @randomString OUT
SELECT @blobVal = CAST(@randomString AS binary(16))
INSERT INTO [TestSTCClient].[dbo].[PT_029]
([Column_Int64]
,[Column_Int32]
,[Column_String]
,[Column_DateTime]
,[Column_Blob])
VALUES (@int64Val, @int32Val, @strVal, @dtVal, @blobVal);

SELECT @i=@i+1
SELECT @rowNo = @rowNo + 1
END
SET @remainingRows = @remainingRows - @transRows
DECLARE @status varchar(200)
IF (@remainingRows > 0)
SET @status = 'Imported ' + CAST((@rowNumber - @remainingRows) as varchar(20)) + ' rows.'
ELSE
SET @status = 'Imported ' + CAST(@rowNumber as varchar(20)) + ' rows.'
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Status] = @status
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
PRINT 'Building index ...'
--Build index for each column.
BEGIN TRANSACTION
Alter TABLE PT_029 ADD PRIMARY KEY(Column_Int64)
CREATE INDEX IX_PT_029_INT64 ON dbo.PT_029(Column_Int64)
CREATE INDEX IX_PT_029_INT32 ON dbo.PT_029(Column_Int32)
CREATE INDEX IX_PT_029_String ON dbo.PT_029(Column_String)
CREATE INDEX IX_PT_029_DateTime ON dbo.PT_029(Column_DateTime)
CREATE INDEX IX_PT_029_Blob ON dbo.PT_029(Column_Blob)
COMMIT TRANSACTION

select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [AppendRows] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Count on Column_Int64
PRINT 'Agg_Count on Column_Int64 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(column_int64) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Count_Int64] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Count on Column_Int32
PRINT 'Agg_Count on Column_Int32 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(column_int32) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Count_Int32] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Count on Column_String
PRINT 'Agg_Count on Column_String ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(column_string) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Count_String] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Count on Column_DateTime
PRINT 'Agg_Count on Column_DateTime ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(column_datetime) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Count_DateTime] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Count on Column_Blob
PRINT 'Agg_Count on Column_Blob ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(column_blob) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Count_Blob] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END

-- Agg_DistinctCount on Column_Int64
PRINT 'Agg_DistinctCount on Column_Int64 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(distinct column_int64) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_DistinctCount_Int64] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_DistinctCount on Column_Int32
PRINT 'Agg_DistinctCount on Column_Int32 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(distinct column_int32) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_DistinctCount_Int32] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_DistinctCount on Column_String
PRINT 'Agg_DistinctCount on Column_String ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(distinct column_string) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_DistinctCount_String] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_DistinctCount on Column_DateTime
PRINT 'Agg_DistinctCount on Column_DateTime ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(distinct column_datetime) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_DistinctCount_DateTime] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_DistinctCount on Column_Blob
PRINT 'Agg_DistinctCount on Column_Blob ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT COUNT(distinct column_blob) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_DistinctCount_Blob] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END

-- Agg_Max on Column_Int64
PRINT 'Agg_Max on Column_Int64 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MAX(column_int64) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Max_Int64] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Max on Column_Int32
PRINT 'Agg_Max on Column_Int32 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MAX(column_int32) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Max_Int32] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Max on Column_String
PRINT 'Agg_Max on Column_String ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MAX(column_string) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Max_String] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Max on Column_DateTime
PRINT 'Agg_Max on Column_DateTime ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MAX(column_datetime) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Max_DateTime] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Max on Column_Blob
PRINT 'Agg_Max on Column_Blob ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MAX(column_blob) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Max_Blob] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END

-- Agg_Min on Column_Int64
PRINT 'Agg_Min on Column_Int64 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MIN(column_int64) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Min_Int64] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Min on Column_Int32
PRINT 'Agg_Min on Column_Int32 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MIN(column_int32) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Min_Int32] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Min on Column_String
PRINT 'Agg_Min on Column_String ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MIN(column_string) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Min_String] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Min on Column_DateTime
PRINT 'Agg_Min on Column_String ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MIN(column_datetime) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Min_DateTime] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Min on Column_Blob
PRINT 'Agg_Min on Column_Blob ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT MIN(column_blob) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Min_Blob] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Sum on Column_Int64
PRINT 'Agg_Sum on Column_Int64 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT SUM(column_int64) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Sum_Int64] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
-- Agg_Sum on Column_Int32
PRINT 'Agg_Sum on Column_Int32 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT SUM(CAST(column_int32 AS BIGINT)) FROM PT_029
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Agg_Sum_Int32] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 1 row, all columns
PRINT 'Select 1 row, all columns ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT * FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 2
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_1_row] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 10 row, all columns
PRINT 'Select 10 row, all columns ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT * FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 11
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_10_row] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 100 row, all columns
PRINT 'Select 100 row, all columns ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT * FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 101
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_100_row] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 1000 row, all columns
PRINT 'Select 1000 row, all columns ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT * FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 1001
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_1000_row] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 10000 row, all columns
PRINT 'Select 10000 row, all columns ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT * FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 10001
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_10000_row] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 10000 row, only column string
PRINT 'Select 10000 row, only column string ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT [Column_String] FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 10001
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_10000_row_string] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 100000 row, only column string
PRINT 'Select 100000 row, only column string ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT [Column_String] FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 100001
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_100000_row_string] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select 1000000 row, only column string
PRINT 'Select 1000000 row, only column string ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT [Column_String] FROM [PT_029] WHERE [Column_Int64] > 0 and [Column_Int64] < 1000001
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_1000000_row_string] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 1
PRINT 'Select top 1 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 1 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_1] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 10
PRINT 'Select top 10 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 10 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_10] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 100
PRINT 'Select top 100 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 100 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_100] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 1000
PRINT 'Select top 1000 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 1000 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_1000] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 10000
PRINT 'Select top 10000 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 10000 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_10000] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
--Select top 100000
PRINT 'Select top 100000 ...'
BEGIN
select @begin = GETDATE()
BEGIN TRANSACTION
SELECT top 100000 * FROM [PT_029]
COMMIT TRANSACTION
select @end = GETDATE()
SELECT @duration = DATEDIFF(millisecond, @begin, @end)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Select_top_100000] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
DECLARE @endAll DATETIME
select @endAll = GETDATE()
BEGIN
SELECT @duration = DATEDIFF(hour, @beginAll, @endAll)
BEGIN TRANSACTION
UPDATE [TestSTCClient].[dbo].[Result_PT_029]
SET [Duration] = @duration
WHERE [ExecTime] = @execTime;
COMMIT TRANSACTION
END
END

关于CS里的专业术语

关于CS里的专业术语

  呵呵,由于有一部分读者是女性朋友,可能对CS里的一些专业术语感到陌生,读起来十分吃力,听取了大家的意见后,老边在这里把书中常出现的术语简单翻译一下,顺便介绍一下世界顶级赛事。
  术语篇:

  Cser:统称CS玩家,选手。

  CT: 警察

  T: 匪徒

  Eco:经济局,比赛中为积累资金而放弃的局数,一般不会买重型武器,也就是所谓的长枪

  Camper:阴谋家,暗杀者,一般都指CS中那些从背后偷袭,专门阴人的家伙

  C4:匪徒的专用烈性炸药,在固定的区域埋下(通常是每幅地图的A区B区),埋下35秒后爆炸,威力非常惊人,爆炸后即算任务完成,取得胜利。

  GG:good game 比赛后的习惯性问候语,表示友好,同时也失败方表示承认失败的友好用语。

  GL:good luck开局问候语句,表示好运。

  Hf:have fan 玩得开心。

  r3:表示开局的3次刷新,刷新3次后比赛正式开始。

  Headshot:爆头,CS里的各种枪支威力是不一样的,除了AWP外,其他枪支都是不能一击毙命的,但每把枪都可以爆头,注意爆头是一击毙命的。

  HP:体力值。

  FPS:这是显示器的帧数,显示器的帧数一般稳定在99-100左右是画面最流畅的,如果下降到很低,比如下降到20-30,那么画面就显得很卡,很不流畅,像电影里播放慢镜头一样,注意CS里的烟雾弹不但起到阻碍视线的作用,最大的好处就是降低对方的显示器帧数。

  AWP:狙击枪,威力强大,一击毙命,但有10%的概率一枪打不死人。

  AK:匪徒主力长枪,价格2500,威力强大。

  M4:警察主力长枪,价格3100,威力强大。

  Sg552:匪徒主力长枪,有瞄准镜,穿透威力强大。

  Aug:警察主力长枪,有瞄准镜,穿透性能最好的一把枪。

  De:沙漠之鹰,简称沙鹰,威力最大的手枪,可穿墙,子弹威力仅次于AWP,行走ECO局,杀人翻盘,必备工具。

  USP:警察原配专用手枪,性能适中,容易上手,好用。

  Golck18:匪徒原配专用手枪,可三连射,威力比较小。

  BOT:机器人,电脑。

  Rush:以最快速度攻击一个区域,有强冲的意思。

  PUB:公众服务器。

  Demo:比赛录象

  枪械篇:

  CS里的常用地图:

  De_dust2:沙漠2,这个地图基本上是中国人都应该知道,沙漠里的场景,中国玩家最典型的PUB地图,比赛地图。

  De_Aztec:吊桥,古埃及的城墙,到处都在打雷下雨,给人恐怖阴森的感觉,比赛地图。

  De_Nuke:核能发电厂,一座位于山谷里的废弃工厂,红色山石,兰色的墙面,分上下三层,比赛地图。

  De_Cbble:城堡,场景很大,古罗马式的建筑,比赛地图。

  De_Train:火车站,场景也非常大,火车货运站,匪徒以炸毁火车为任务,比赛地图。

  De_prodigy:地下研究室,场景相当复杂,一个埋藏在地下的研究院,以前是比赛地图,后面好象取消了。

  as_oilrig:石油化工厂,保护VIP登上直升飞机,沿途会遭遇匪徒的拦截与袭击,非比赛地图。

  Ab_BloodStrike,血池,也称血战,场景非常小,杀光对方取得胜利,非比赛地图。

  de_cpl_mill.bsp:这个地图是好象05年CPL开始的时候才新加入的比赛地图,场景也很大,不过个人觉得没有沙漠2这些地图经典。

  赛事篇:

  WCG:

  赛事全称:World Cyber Games

  中文全称:世界电子竞技大赛

  主办国家:韩国

  奖金总额:40万美元

  WCG每年举办一次。从2001年至今WCG大赛已成为引领数码娱乐文化的先锋,号称电子竞技世界的奥运会。WCG是全球范围内第一个最具规模的游戏文化节,大赛一直以“beyond the game”为口号,以推动电子竞技的全球发展为目标,旨在促进人们在网络时代的沟通、互动和交流,促进人类生活的和谐与愉快。WCG的主办方将其定位在全球性的电子竞技奥运盛会,是一个以奥林匹克运动会形式筹办的电子运动会,承担着沟通全球顶尖电子竞技运动选手,进行国际间交流的责任,成为新体育形式的开创者。经过几届WCG大赛的成功举办,三星电子杯WCG世界电子竞技大赛已经在中国得到肯定与支持。

  WEG:

  赛事全称:World E-sports Games

  中文名称:世界电子竞技联赛

  主办国家:韩国

  奖金总额:40万美元

  WEG是韩国2005年斥重金打造的一项顶级联赛。其主办方便是韩国最专业的游戏电视媒体Ongamenet,比赛全程由Ongamenet独家转播。其计划在2005年将WEG打造为全球最正规的职业化电子竞技联赛。再以巨额的奖金吸引全世界顶尖战队和选手的参与,在此前提下,把一年分为四个赛季最终将每个赛季的冠军集合起来进行World Chanpionship(世界锦标赛)。毫无疑问,WEG是2005年最能够对传统三大赛事(CPL、ESWC、WCG)发起冲击的一项赛事。

  ESWC:

  赛事全称:Electronic Sport World Cup

  中文全称:电子竞技世界杯

  主办国家:法国

  奖金总额:30万美元

  ESWC起源于法国,前身为欧洲传统电子竞技赛事Lan Arena,是由包括中国在内的11个理事国发起、超过60个合作伙伴的国际文化活动。1998年到2002年共组织过7届Lan Arena,拥有7次赛事经验之后,在Lan game赛事逐渐成为主流的驱使下,2003年ESWC应运而生。

  虽然ESWC起步于2003年,但是却依靠出色的媒体和商业投资迅速扩大其影响力,并且连续取得成功,跃居三大赛事之列。可以说ESWC在2003年的诞生是非常符合时机的,法国人出色的领导才能再次显露无遗,在吸取了CPL,以及WCG的优点之后,ESWC在2004年便将ESWC2004推广到了49个国家,并计划在2005年推广至60个国家。整个比赛在一个综合性场地中举行,无论开幕式、闭幕式,或者比赛结束之后都会为选手和全球伙伴举行免费的舞会,每个比赛日都有世界最优秀的DJ,将电子音乐和室内音乐在室外舞台上演奏;向公众开放的国际村,提供互动动画观赏和户动娱乐体验,这一切的一切让ESWC看起来都更像是一个电子竞技的大party。

  CPL

  赛事全称:Cyber athlete Professional League

  中文全称:电子竞技职业联赛

  主办国家:美国

  奖金总额:100万美元

  CPL创办于1997年10月31日,从1997年到2005年,CPL已经走过了一段相当长的历程,一步一步的成为电子竞技业内最著名的赛事。CPL 每年主办的CPL 夏季锦标赛和冬季锦标赛一直被认为是世界上最专业,最规范的电竞联赛,因为在韩国的星际联赛化联赛还未成熟的时候,远在北美的CPL已经依靠《Quake》系列的游戏举办过数次的比赛,因此在最初一段时间内,CPL也被视为电竞组织的典范,至今我们所使用的赛制规则都是由CPL 规则演变而来。而因为CS的魅力,CPL才开始醒目地进入我们的视野,这也正是为什么国内大部分玩家最先知晓的电竞赛事是WCG而非CPL。

  顺便说一句,CPL的号称死亡大赛,非常残酷。

  ACON:

  中文名称:世界电脑游戏大赛

  主办单位:电脑配件厂商

  奖金总额:5万美元

  ACON是全球第一个由电脑配件厂商发起并创办的游戏赛事,已经成为世界游戏爱好者走向成功的摇篮,至今已经举办了五届。2004年的ACON4是第一个在中国举办总决赛的世界性游戏大赛,由全球一线IT厂商的合力打造,18位来自世界各地的顶尖魔兽高手的精彩表演,给所有游戏玩家留下了深刻的记忆,也是到目前为止中国唯一一个全球性的游戏大赛。而目前正在进行的ACON 5是一个在全球20多个国家和地区举行的全球性赛事,赞助商包括商业领域各大知名厂商升技、英特尔、ATI、LG、Corsair、Apple等,比赛遍及全球各地150个城市,吸引了上万名游戏高手报名参赛,参赛选手来自包括中国、美国、英国、日本等21个国家和地区。

  个人觉得这项赛事奖金底了,所以显得不太激烈。

  这几项大赛基本上可以这样分配,WCG代表荣誉颠峰,CPL代表个人实力,ESWC代表战队俱乐部国家荣誉,WEG可说是代表了最先进最规范的职业比赛。

  历年冠军与名次:

  WCG2001 韩国汉城

  冠军:[:LnD:] (加拿大)

  亚军:[mTw] (德国)

  CPL2001

  冠军:Nip(瑞典)

  亚军:X3 (美国)

  WCG2002

  冠军:M19 (俄罗斯)大冷门

  亚军:Alvaro Romero(西班牙)

  季军:ason Sylka(美国)

  CPL2002

  冠军:SK(瑞典)

  亚军:GOL

  WCG2003 韩国汉城

  冠军:SK(瑞典)

  亚军:3D (美国)

  季军:Team9(瑞典)

  CPL2003

  冠军:SK(瑞典)

  亚军:Team9(瑞典)

  WCG2004 美国旧金山

  冠军:3D(美国)

  亚军:The Titans(丹麦)

  季军:Maven(韩国)大冷门,击败了SK

  COL2004:

  冠军:EYE(瑞典)

  亚军:SK(瑞典)

  冬季:

  冠军:NOA

  亚军:EYE

  WCG2005 新加坡

  冠军:3D (美国)

  亚军:K23(哈萨克斯坦)

  季军:EG(加拿大)

  CPL2005 美国

  冠军:SK(瑞典)

  亚军:EG(加拿大)

  不知道有没有问题,有错误的请大家指出!QQ群可通知我

Monday, August 6, 2007

Saying Good-bye to Cambridge Again(再别康桥)

Saying Good-bye to Cambridge Again

Very quietly I take my leave

  As quietly as I came here;

  Quietly I wave good-bye

  To the rosy clouds in the western sky.

  The golden willows by the riverside

  Are young brides in the setting sun;

  Their reflections on the shimmering waves

  Always linger in the depth of my heart.

  The floating heart growing in the sludge

  Sways leisurely under the water;

  In the gentle waves of Cambridge

  I would be a water plant!

  That pool under the shade of elm trees

  Holds not water but the rainbow from the sky;

  Shattered to pieces among the duckweeds

  Is the sediment of a rainbow-like dream?

  To seek a dream? Just to pole a boat upstream

  To where the green grass is more verdant;

  Or to have the boat fully loaded with starlight

  And sing aloud in the splendor of starlight.

But I cannot sing aloud

  Quietness is my farewell music;

  Even summer insects heap silence for me

  Silent is Cambridge tonight!

  Very quietly I take my leave

  As quietly as I came here;

  Gently I flick my sleeves

  Not even a wisp of cloud will I bring away

再别康桥

  轻轻的我走了,

   正如我轻轻的来;

  我轻轻的招手,

   作别西天的云彩。

  那河畔的金柳

   是夕阳中的新娘

  波光里的艳影,

   在我的心头荡漾。

  软泥上的青荇,

   油油的在水底招摇;

  在康河的柔波里,

   我甘心做一条水草

  那树荫下的一潭,

   不是清泉,是天上虹

  揉碎在浮藻间,

   沉淀着彩虹似的梦。

  寻梦?撑一支长篙,

   向青草更青处漫溯,

  满载一船星辉,

   在星辉斑斓里放歌

  但我不能放歌,

   悄悄是别离的笙箫;

  夏虫也为我沉默,

   沉默是今晚的康桥!

悄悄的我走了,

   正如我悄悄的来;

  我挥一挥衣袖,

   不带走一片云彩。