针对有网友说看不见文章内容, 现提示如下: 点击每一个标题行任一地方都会展开和隐藏此文章内容(不要点击标题). 目前展开隐藏功能只支持IE浏览器,虽然可以改成支持FF浏览器,不过现在一直没时间去弄,等有时间再修改了。 |
blog名称:乱闪Blog 日志总数:267 评论数量:1618 留言数量:-26 访问次数:2654442 建立时间:2005年1月1日 |
|

| |
电脑初学者必备之Windows进程大全
|
是否为系统进程: 否
frontpage.exe
进程文件: frontpage or frontpage.exe
进程名称: Microsoft FrontPage
描述: Microsoft FrontPage是一个HTML编辑器用于创建站点和其它类别的HTML文档。
是否为系统进程: 否 G——O
gmt.exe
进程文件: gmt or gmt.exe
进程名称: Gator Spyware Component
描述: Gator Spyware是一个广告插件,随Gator安装和启动。
是否为系统进程: 否
hh.exe
进程文件: hh or hh.exe
进程名称: Gator Windows Help
描述: Windows Help程序用以打开帮助文件和文档,包括在很多Windows程序中。
是否为系统进程: 否
hidserv.exe
进程文件: hidserv or hidserv.exe
进程名称: Microsoft Human Interface Device Audio Service
描述: 后台服务,用来支持USB音效部件和USB多媒体键盘。
是否为系统进程: 否
QQ.exe
进程文件: QQ or QQ.exe
进程名称: QQ
描述: QQ是一个在线聊天和即时通讯客户端。
是否为系统进程: 否
iexplore.exe
进程文件: iexplore or iexplore.exe
进程名称: Internet Explorer
描述: Microsoft Internet Explorer网络浏览器透过HTTP访问WWW万维网。
是否为系统进程: 否
kodakimage.exe
进程文件: kodakimage or kodakimage.exe
进程名称: Imaging
描述: Kodak Imaging是一个图片察看软件。包括在Windows,用以打开图像文件。
是否为系统进程: 否
loadqm.exe
进程文件: loadqm or loadqm.exe
进程名称: MSN Queue Manager Loader
描述: MSN Queue Manager Loader被随着MSN Explorer和MSN Messenger安装。他在一些时候会占用很多系统资源。
是否为系统进程: 否
loadwc.exe
进程文件: loadwc or loadwc.exe
进程名称: Load WebCheck
描述: Load WebCheck用以定制一些Internet Explorer的设定,添加、删除或者更新用户profiles设定。
是否为系统进程: 否
mad.exe
进程文件: mad or mad.exe
进程名称: System Attendant Service
描述: System Attendant Service是Microsoft Exchange Server的后台程序。它用以读取Microsoft Exchange的DLLs文件,写log信息和生成离线地址薄。
是否为系统进程: 否
mcshield.exe
进程文件: mcshield or mcshield.exe
进程名称: McAfee VirusScan
描述: McAfee VirusScan是一个反病毒软件用以扫描你的文件和email中的病毒。
是否为系统进程: 否
mgabg.exe
进程文件: mgabg or mgabg.exe
进程名称: Matrox BIOS Guard
描述: Matrox BIOS守护进程。
是否为系统进程: 否
mmc.exe
进程文件: mmmc or mmc.exe
进程名称: Microsoft Management Console
描述: Microsoft Management Console管理控制程序集成了很多的系统控制选项。例如设备管理(系统、硬件
)或者计算机权限控制(Administrative管理工具)。
是否为系统进程: 否
mobsync.exe
进程文件: mobsync or mobsync.exe
进程名称: Microsoft Synchronization Manager
描述: Internet Explorer的一个组成部分,用以在后台同步离线察看页面。
是否为系统进程: 否
mplayer.exe
进程文件: mplayer or mplayer.exe
进程名称: Windows Media Player
描述: Windows Media Player是一个用以打开音乐、声音和视频文件的软件。
是否为系统进程: 否
mplayer2.exe
进程文件: mplayer2 or mplayer2.exe
进程名称: Windows Media Player
描述: Windows Media Player是一个用以打开音乐、声音和视频文件的软件。
是否为系统进程: 否
msaccess.exe
进程文件: msaccess or msaccess.exe
进程名称: Microsoft Access
描述: Microsoft Access是一个数据库软件包括在Microsoft Office。
是否为系统进程: 否
msbb.exe
进程文件: msbb or msbb.exe
进程名称: MSBB Web3000 Spyware Application
描述: MSBB Web3000 Spyware是包括在一些adware产品中,利用注册表随Windows启动。
是否为系统进程: 否
msdtc.exe
进程文件: msdtc or msdtc.exe
进程名称: Distributed Transaction Coordinator
描述: Microsoft Distributed Transaction Coordinator控制多个服务器的传输,被安装在Microsoft Personal Web Server和Microsoft SQL Server。
是否为系统进程: 否
msiexec.exe
进程文件: msiexec or msiexec.exe
进程名称: Windows Installer Component
描述: Windows Installer的一部分。用来帮助Windows Installer package files (MSI)格式的安装文件。
是否为系统进程: 否
msimn.exe
进程文件: msimn or msimn.exe
进程名称: Microsoft Outlook Express
描述: Microsoft Outlook Express是一个Email和新闻组客户端包括在Microsoft Windows。
是否为系统进程: 否
msmsgs.exe
进程文件: msmsgs or msmsgs.exe
进程名称: MSN Messenger Traybar Process
描述: MSN Messenger是一个在线聊天和即时通讯客户端。
是否为系统进程: 否
msoobe.exe
进程文件: msoobe or msoobe.exe
进程名称: Windows Product Activation
描述: Windows XP License的Product Activation产品激活程序。
是否为系统进程: 否
mspaint.exe
进程文件: mspaint or mspaint.exe
进程名称: Microsoft Paint
描述: Microsoft Paint画图是一个图像编辑器包括在Microsoft Windows,它能够编辑bmp图像。
是否为系统进程: 否
mspmspsv.exe
进程文件: mspmspsv or mspmspsv.exe
进程名称: WMDM PMSP Service
描述: Windows Media Player 7需要安装的Helper Service。
是否为系统进程: 否
mysqld-nt.exe
进程文件: mysqld-nt or mysqld-nt.exe
进程名称: MySQL Daemon
描述: MySQL Daemon控制访问MySQL数据库。
是否为系统进程: 否
navapsvc.exe
进程文件: navapsvc or navapsvc.exe
进程名称: Norton AntiVirus Auto-Protect Service
描述: Norton Anti-Virus扫描你的文件和email中的病毒。
是否为系统进程: 否
navapw32.exe
进程文件: navapw32 or navapw32.exe
进程名称: Norton AntiVirus Agent
描述: Norton Anti-Virus扫描你的文件和email中的病毒。
是否为系统进程: 否
ndetect.exe
进程文件: ndetect or ndetect.exe
进程名称: ICQ Ndetect Agent
描述: ICQ Ndetect Agent是ICQ用来侦测网络连接的程序。
是否为系统进程: 否
netscape.exe
进程文件: netscape or netscape.exe
进程名称: Netscape
描述: Netscape网络浏览器通过HTTP浏览WWW万维网。
是否为系统进程: 否
notepad.exe
进程文件: notepad or notepad.exe
进程名称: Notepad
描述: Notepad字符编辑器用于打开文档。在Windows中附带。
是否为系统进程: 否
ntbackup.exe
进程文件: ntbackup or ntbackup.exe
进程名称: Windows Backup
描述: Windows备份工具用于备份文件和文件夹。
是否为系统进程: 否
ntvdm.exe
进程文件: ntvdm or ntvdm.exe
进程名称: Windows 16-bit Virtual Machine
描述: Windows Virtual Machine是为了兼容旧的16位Windows和DOS程序而设置的虚拟机。
是否为系统进程: 否
nvsvc32.exe
进程文件: nvsvc32 or nvsvc32.exe
进程名称: NVIDIA Driver Helper Service
描述: NVIDIA Driver Helper Service在NVIDA显卡驱动中被安装。
是否为系统进程: 否
nwiz.exe
进程文件: nwiz or nwiz.exe
进程名称: NVIDIA nView Control Panel
描述: NVIDIA nView控制面板在NVIDA显卡驱动中被安装,用于调整和设定。
是否为系统进程: 否
osa.exe
进程文件: osa or osa.exe
进程名称: Office Startup Assistant
描述: Microsoft Office启动助手,随Windows启动,增强启动、Office字体、命令和Outlook事务提醒等特性。
是否为系统进程: 否
outlook.exe
进程文件: outlook or outlook.exe
进程名称: Microsoft Outlook
描述: Microsoft Outlook是一个Email客户端包括在Microsoft Office。
是否为系统进程: 否
P——Z
photoshop.exe
进程文件: photoshop or photoshop.exe
进程名称: Adobe Photoshop
描述: Adobe Photoshop是一个图像编辑软件,能够打开和编辑照片和其它更多类型格式的图片。
是否为系统进程: 否
point32.exe
进程文件: point32 or point32.exe
进程名称: Microsoft Intellimouse Monitor
描述: Microsoft Intellimouse Monitor添加一个鼠标设定图标在工具栏。
是否为系统进程: 否
powerpnt.exe
进程文件: powerpnt or powerpnt.exe
进程名称: Microsoft PowerPoint
描述: Microsoft PowerPoint是一个演示软件包括在Microsoft Office。
是否为系统进程: 否
pstores.exe
进程文件: pstores or pstores.exe
进程名称: Protected Storage Service
描述: Microsoft Protected Storage服务控制保密的内容密码。
是否为系统进程: 否
qttask.exe
进程文件: qttask or qttask.exe
进程名称: Quick Time Tray Icon
描述: Quick Time任务栏图标在你运行Quick Time的时候启动。
是否为系统进程: 否
realplay.exe
进程文件: realplay or realplay.exe
进程名称: Real Player
描述: Real Player是一个媒体播放器用来打开和播放音乐、声音和Real Media格式的视频文件。
是否为系统进程: 否
rnaapp.exe
进程文件: rnaapp or rnaapp.exe
进程名称: Windows Modem Connection
描述: Windows Modem连接控制用以控制拨号modem连接。
是否为系统进程: 否
rtvscan.exe
进程文件: rtvscan or rtvscan.exe
进程名称: Norton AntiVirus
描述: Norton Anti-Virus用以扫描你的文件和email中的病毒。
是否为系统进程: 否
rundll32.exe
进程文件: rundll32 or rundll32.exe
进程名称: Windows RUNDLL32 Helper
描述: Windows Rundll32为了需要调用DLLs的程序。
是否为系统进程: 否
sndrec32.exe
进程文件: sndrec32 or sndrec32.exe
进程名称: Windows Sound Recorder
描述: Windows录音机用以播放和录制声音文件(.wav)。
是否为系统进程: 否
sndvol32.exe
进程文件: sndvol32 or sndvol32.exe
进程名称: Windows Volume Control
描述: Windows声音控制进程在任务栏驻留用以控制音量和声卡相关。
是否为系统进程: 否
spoolss.exe
进程文件: spoolss or spoolss.exe
进程名称: Printer Spooler Subsystem
描述: Windows打印机控制子程序用以调用需要打印的内容从磁盘到打印机。
是否为系统进程: 否
starter.exe
进程文件: starter or starter.exe
进程名称: Creative Labs Ensoniq Mixer Tray icon
描述: 状态栏图标在Creative Sound Mixer中被安装。为了Creative声卡 (Soundblaster)。
是否为系统进程: 否
systray.exe
进程文件: systray or systray.exe
进程名称: Windows Power Management
描述: Windows电源管理程序用以控制节能和恢复启动。
是否为系统进程: 否
tapisrv.exe
进程文件: tapisrv or tapisrv.exe
进程名称: TAPI Service
描述: Windows Telephony (TAPI) 的后台服务程序。
是否为系统进程: 否
userinit.exe
进程文件: userinit or userinit.exe
进程名称: UserInit Process
描述: UserInit程序运行登陆脚本,建立网络连接和启动Shell壳。
是否为系统进程: 否
visio.exe
进程文件: visio or visio.exe
进程名称: Microsoft Visio
描述: Microsoft Visio是一个图形化管理软件。
是否为系统进程: 否
vptray.exe
进程文件: vptray or vptray.exe
进程名称: Norton AntiVirus
描述: Norton Anti-Virus扫描你的文件和email中的病毒。
是否为系统进程: 否
vshwin32.exe
进程文件: vshwin32 or vshwin32.exe
进程名称: McAfee VirusScan
描述: McAfee VirusScan是一个反病毒软件用以扫描你的文件和email中的病毒。
是否为系统进程: 否
vsmon.exe
进程文件: vsmon or vsmon.exe
进程名称: True Vector Internet Monitor
描述: True Vector Internet Monitor是ZoneAlarm个人防火墙的一部分,用以监视网络流经数据和攻击。
是否为系统进程: 否
vsstat.exe
进程文件: vsstat or vsstat.exe
进程名称: McAfee VirusScan
描述: McAfee VirusScan是一个反病毒软件用以扫描你的文件和email中的病毒。
是否为系统进程: 否
wab.exe
进程文件: wab or wab.exe
进程名称: Address Book
描述: 在Outlook中的地址薄。用来存放email地址、联系信息。
是否为系统进程: 否
webscanx.exe
进程文件: webscanx or webscanx.exe
进程名称: McAfee VirusScan
描述: McAfee VirusScan是一个反病毒软件用以扫描你的文件和email中的病毒。
是否为系统进程: 否
winamp.exe
进程文件: winamp or winamp.exe
进程名称: WinAmp
描述: WinAmp Media Player是一个用来打开音乐、声音和视频文件以及用以管理Mp3文件的软件。
是否为系统进程: 否
winhlp32.exe
进程文件: winhlp32 or winhlp32.exe
进程名称: Windows Help
描述: Windows帮助文件察看程序,用来打开帮助文档。该程序被包括在很多的Windows程序中。
是否为系统进程: 否
winoa386.mod
进程文件: winoa386 or winoa386.mod
进程名称: MS-DOS Console
描述: Windows MS-DOS控制台用以DOS命令和脚本。
是否为系统进程: 否
winproj.exe
进程文件: winproj or winproj.exe
进程名称: Microsoft Project
描述: Microsoft Project是一个项目计划编制程序。
是否为系统进程: 否
winroute.exe
进程文件: winroute or winroute.exe
进程名称: WinRoute
描述: WinRoute是一个基于Windows的防火墙/路由/连接共享软件。
是否为系统进程: 否
winword.exe
进程文件: winword or winword.exe
进程名称: Microsoft Word
描述: Microsoft Word是一个字处理程序包括在Microsoft Office。
是否为系统进程: 否
winzip32.exe
进程文件: winzip32 or winzip32.exe
进程名称: WinZip
描述: WinZip是一个文件压缩工具,用于创建,打开和解压zip文件。
是否为系统进程: 否
wkcalrem.exe
进程文件: wkcalrem or wkcalrem.exe
进程名称: Microsoft Works Calendar Reminder
描述: Microsoft Works Calendar Reminders工作日程提醒,在后台处理和显示弹出计划的工作日志提醒。
是否为系统进程: 否
wkqkpick.exe
进程文件: wkqkpick or wkqkpick.exe
进程名称: WinZip traybar icon
描述: WinZip的状态栏图标,被允许在Winzip启动时启动。
是否为系统进程: 否
wmplayer.exe
进程文件: wmplayer or wmplayer.exe
进程名称: Windows Media Player
描述: Windows Media Player是一个用来打开和播放音乐,声音和视频的软件。
是否为系统进程: 否
wordpad.exe
进程文件: wordpad or wordpad.exe
进程名称: Wordpad
描述: Wordpad是一个字符编辑器用以打开和编辑txt和rtf档。
是否为系统进程: 否
wowexec.exe
进程文件: wowexec or wowexec.exe
进程名称: Windows On Windows Execution Process
描述: Windows On Windows Execution Support Process和ntvdm.exe作用类似,为了兼容16位应用程序。
是否为系统进程: 否
ypager.exe
进程文件: ypager or ypager.exe
进程名称: Yahoo Messenger Helper
描述: Yahoo Messenger的状态栏图标,随Yahoo Messenger运行,是其一部分。
是否为系统进程: 否 |
|
SQL Server 连接基础知识
|
引言
该堆栈的顶部是 API 或对象库层。应用程序通过对象库公开的 API 函数或接口连接到 Microsoft® SQL Server。用于访问 SQL Server 的 API 示例包括 ODBC 和 DB-Library。用于访问 SQL Server 的对象库示例包括 OLE DB、ADO 和 ADO.NET。由于 ADO 最终使用 OLE DB 与服务器通信,因此 Windows 应用程序在与 SQL Server 通信时实际上只使用两个常用的对象库,即 OLE DB 和 ADO.NET。由于通过 ADO 或 ADO.NET 进行连接通常比通过 ODBC 进行连接更普遍(但 SQL Server 的查询分析器和企业管理器仍通过 ODBC 进行连接),因此本文将从 ADO/OLE DB 和 ADO.NET 的角度介绍 SQL Server 连接体系结构的客户端。如今,大多数应用程序均通过对象库(而非 ODBC 或类似 API)连接到 SQL Server。
ADO 和 OLE DB
OLE DB 客户端(也称作使用者)通过客户端提供程序与服务器以及其他后端程序进行通信。此提供程序是一组 COM 组件(一个或多个),用于将应用程序请求转换为网络进程间通信 (IPC) 请求。在使用 SQL Server 的情况下,最常用的 OLE DB 提供程序是 SQLOLEDB,它是 Microsoft 为 SQL Server 提供的 OLE DB 提供程序。SQLOLEDB 随附于 SQL Server 中,并作为 Microsoft 数据访问组件 (MDAC) 库的一部分安装。
为了使用 ADO 与 SQL Server 进行通信,应用程序首先使用 Connection 对象建立与服务器的连接。ADO 的 Connection 对象接受一个连接字符串,该字符串指定要使用的 OLE DB 提供程序以及传递给它的参数。如果应用程序使用 SQLOLEDB 提供程序连接到 SQL Server,则该字符串中将显示“SQLOLEDB”。
ADO 应用程序还可以通过 ODBC 连接到 SQL Server。为此,应用程序将使用适用于 ODBC 的 OLE DB 提供程序,并指定在其连接字符串中引用目标 SQL Server 的 ODBC 数据源。这种情况下,应用程序与 OLE DB 进行通信,同时 ODBC 的 OLE DB 提供程序调用相应的 ODBC API,以便与 SQL Server 进行会话。
ADO.NET
ADO.NET 应用程序通常使用 .NET Framework Data Provider for SQL Server 连接到 SQL Server。该本机提供程序使 ADO.NET 对象能够与 SQL Server 直接进行通信。通常,应用程序使用 SqlConnection 对象建立连接,然后使用 SqlCommand 对象向服务器发送命令,并接收服务器返回的结果。SqlDataAdapter 和 SqlDataReader 类通常与 SqlCommand 一起使用,以便通过托管的代码应用程序与 SQL Server 进行交互。
通过 OleDbConnection 类,ADO.NET 应用程序还可以使用 SQLOLEDB OLE DB 提供程序与 SQL Server 进行交互。此外,它们可以通过 OdbcConnection 类使用 ODBC 访问 SQL Server。因此,仅通过托管代码,您就有三种不同的方法从应用程序访问 SQL Server。从故障排除的角度而言,了解这些方法是非常有用的,因为它可以帮助您将遇到的与连接相关的问题归结到特定的数据访问层或库。 客户端 Net-Library
该堆栈中的下一层是 Net-Library。Net-Library 在 API 或对象库(应用程序使用它与 SQL Server 进行通信)与网络协议(用于与网络交换数据)之间提供了一个通道。SQL Server 为所有主要的网络协议提供了 Net-Library。这些库以透明方式将客户端发出的请求发送到 SQL Server,并将服务器发出的响应返回给客户端。可以使用 SQL Server 的客户端网络实用程序配置适用于特定客户端的 Net-Library。支持的客户端协议包括 TCP/IP、命名管道、NWLink、多协议 (RPC) 和其他一些协议。
尤其值得一提的 Net-Library 是共享内存 Net-Library。顾名思义,该 Net-Library 使用 Windows 的共享内存功能在 SQL Server 客户端与服务器之间进行通信。显然,这意味着客户端与服务器必须位于同一台物理计算机上。
由于它能够绕过物理网络堆栈,因此共享内存 Net-Library 要比其他 Net-Library 快得多。对共享内存区域的访问受到同步对象的保护,因此客户端与服务器之间的通信速度主要受限于 Windows 对内核对象进行调度的能力,以及进程与共享内存区域之间进行数据复制的能力。
可以在连接时将某个时间段或(本地)指定为您的计算机名,来指示使用共享内存 Net-Library。也可以在连接时为计算机实例名加上前缀 lpc:,来指示要使用共享内存 Net-Library。
注意,即使连接到同一台计算机上的 SQL Server,共享内存 Net-Library 也未必就是最佳的连接选项。在某些情况下,客户端与服务器之间的直接连接可能限制它的扩展性。与应用程序整体体系结构中的其他元素一样,应始终对给定技术解决方案进行全面的测试,然后才能判断它是否有良好的扩展性以及是否比其他方法更快。
连接
客户端进行连接时,SQL Server 的用户模式计划程序 (UMS) 组件将它指定给特定的计划程序。启动时,SQL Server 为系统上的每个 CPU 创建一个单独的 UMS 计划程序。当客户端连接到服务器时,这些客户端将指定给具有最少连接数的计划程序。连接后,客户端将不会更换计划程序 - 它将始终受到指定计划程序的控制,直到连接断开。
这对与服务器建立多个连接的应用程序很重要。如果应用程序性能较差,或无法在它的多个连接上平均分配工作,则在该应用程序的某些连接之间可能造成不必要的 CPU 资源争用,而其他连接实际上却处于空闲状态。
例如,应用程序与双处理器计算机上运行的 SQL Server 建立了四个连接,连接 1 和 3 隶属于处理器 0,连接 2 和 4 隶属于处理器 1。如果应用程序的大部分工作通过连接 1 和 3 执行,则这两个连接将争用 CPU 0,而 CPU 1 实际上可能仍处于空闲状态。这种情况下,应用程序只能断开某些连接或重新连接某些连接,并希望连接 1 和 3 隶属于不同的 CPU (连接时无法指定处理器隶属关系),或在它的连接上重新分配工作负荷,以便每个连接的工作负荷更加均衡。当然,后一种情况要远好于前一种情况。
连接内存
SQL Server 为客户端请求的每个连接保留三个数据包缓冲区。每个缓冲区的大小取决于 sp_configure 存储过程指定的默认网络数据包大小。如果默认网络数据包大小小于 8 KB,则这些数据包的内存将由 SQL Server 的缓冲池提供。否则,该内存将由 SQL Server 的 MemToLeave 区域分配。
值得一提的是,.NET Framework Data Provider for SQL Server 的默认网络数据包大小为 8KB,因此,与托管代码客户端连接关联的缓冲区通常由 SQL Server 的 MemToLeave 区域提供。而典型的 ADO 应用程序却不同,它们的默认数据包大小为 4 KB,因此缓冲区将由 SQL Server 缓冲池分配。 事件
连接后的客户端请求通常分为两种广泛类别:语言事件和远程过程调用。尽管还存在其他类别,但大多数由 SQL Server 客户端发送到服务器的请求由以下两种类型之一构成:语言事件是从客户端发送到服务器的 一组 T-SQL。例如,如果调用 ADO Command 对象(其 CommandText 属性设置为 T-SQL 查询,CommandType 属性设置为 adCmdText)的 Execute 方法,则查询将作为语言事件提交给服务器。同样,如果将 CommandType 设置为 adCmdTable 并调用 Execute 方法,则 ADO 将生成一个内部查询(它将选择 CommandText 属性标识的表中的所有列),并将它作为语言事件提交给服务器。另一方面,如果将 CommandType 设置为 adStoredProc,则调用 Execute 将使 ADO 向服务器提交一个远程过程调用请求,以执行 CommandText 属性中列出的存储过程。
为何要关心将请求作为语言事件还是作为 RPC 提交给服务器呢?通常,这是因为 RPC 的功能更为出色,特别是在重复调用具有不同筛选值的同一查询时。尽管 SQL Server 可以自动将普通的语言事件请求参数化,但这种能力非常有限。它从不尝试自动将某些类型的查询参数化。这可能会导致基本相同的查询产生不同的执行,从而只因为这些不同的执行提供不同的值,而导致在服务器上白白浪费计划编译的成本。这通常不是您所希望的结果 - 您希望针对查询的第一次执行编译一个新的计划,然后将该计划重复用于具有不同参数的执行。
而 RPC 则通过显式参数化查询(而不是依赖服务器参数化查询)来支持计划重复使用。为过程的第一次执行生成一个计划后,随后的执行将自动重复使用该计划,即使它们提供的参数值不同。与通过语言事件调用存储过程相比,使用 RPC 调用存储过程不仅节省了计划编译所需的执行时间和 CPU 资源,还增强了 SQL Server 内存资源的利用率,因为它避免了冗余执行计划所浪费的内存。
在执行动态 T-SQL 时,通常首选 sp_executesql 而不是 EXEC() 也出于同样的原因。Sp_executesql 的工作方式是:使用指定的查询创建一个存储过程,然后使用提供的参数调用它。与 EXEC() 不同,sp_executesql 提供了一个允许您参数化动态 T-SQL 并支持计划重复使用的机制。使用 sp_executesql 执行的动态查询比使用 EXEC() 的查询能够在更大程度上避免不必要的编译和资源消耗。
TDS
从客户端发送到 SQL Server 的 RPC、语言事件和其他类型的请求被格式化为称作表格数据流 (TDS) 的 SQL Server 特定数据格式。TDS 是 SQL Server 客户端和服务器之间使用的“语言”。对于它的确切格式将不作介绍,但是,如果客户端要与 SQL Server 进行通信,就必须使用 TDS。
目前,SQL Server 支持三种版本的 TDS:TDS 8.0(适用于 SQL 2000 客户端)、TDS 7.0(适用于 SQL Server 7.0 客户端)和 TDS 4.2(适用于 SQL Server 4.2、6.0 和 6.5 客户端)。完全支持所有 SQL Server 2000 功能的版本只有 TDS 8.0。其他版本保持向后兼容。
服务器端 Net-Library
在服务器端,客户端请求最初由 SQL Server 为侦听特定网络协议而建立的侦听器接收。这些侦听器由服务器上的网络库以及服务器端的 Net-Library(在它们与服务器之间提供管道)构成。您可以使用 SQL Server 网络实用程序配置服务器侦听的协议。SQL Server 与客户端支持同样范围的网络协议(处理群集的情况除外)。对于群集化的 SQL Server,只有 TCP/IP 和命名管道可用。
SQL Server 为侦听客户端请求所使用的每个网络协议设置一个线程,并使用 Windows 的 I/O 完成端口机制等待和有效处理请求。从网络接收到 TDS 数据包时,Net-Library 侦听器将其重新汇编为它们的原始客户端请求,并将这些请求传递到 SQL Server 的命令处理层,即开放式数据服务 (ODS)。 将结果返回到客户端
服务器在准备将特定客户端请求的结果返回时,将使用最初接收请求时所用的网络堆栈。它通过服务器端 Net-Library 将结果发送到相应的网络协议,随后这些结果将通过网络以 TDS 格式返回到客户端。
在客户端上,客户端 Net-Library 将从服务器接收的 TDS 数据包从 IPC 层重新汇编,并将其继续转发到初始化该请求的 API 或对象库。
小结
尽管涉及了所有组件,但 SQL Server 客户端与服务器之间的往返过程却相当快 - 特别是在使用内存 Net-Library 时,亚秒响应时间非常普遍。构建和调整您自己的 SQL Server 客户端应用程序时,以下几个与数据相关的问题值得注意:
• 如果应用程序与 SQL Server 运行在同一台计算机上,则建议您使用共享内存 Net-Library(如果尚未使用它)。基于共享内存 Net-Library 的连接通常比其他类型的连接快很多。在注意上述内容的同时,还应:始终全面测试解决方案并将它与其他可行方案进行对比,这样才能判断它是否确实更好或更快。事实胜于雄辩。
• 由于客户端在第一次连接时将指定给特定的 UMS 计划程序,并只有在断开连接后,才会摆脱该计划程序的控制,因此确保在应用程序与服务器建立的连接上均衡分配工作负荷非常重要。工作负荷不均衡可导致不必要的 CPU 争用并降低资源使用率。
• 在服务器上配置的默认网络数据包大小以及客户端在连接时指定的网络数据包大小将直接影响它们在服务器上所需的内存量和分配内存的池。对服务器进行扩展性和速度配置时,应记住这一点。还应记住,默认情况下,ADO.NET 应用程序的网络数据包大小比 ADO 应用程序的更大。
• 通常,在向服务器发送请求时,应首选 RPC 而非语言事件。为此,应在使用的 ADO 或 ADO.NET 对象中设置相应的属性。
• 执行动态 T-SQL 时,应在可能的情况下使用 sp_executesql 代替 EXEC()。唯一例外的情况是,当使用 EXEC() 的功能将查询片断连接而成的动态查询字符串的大小超过单个本地变量的存储大小时(这种情况非常少见)。
• 当遇到客户端问题,并且怀疑它可能和连接服务器时所用的对象库或 API 有关时,可以使用的一个故障排除技巧就是更改所用的客户端机制,这样可以将问题归结为特定的组件。例如,假设您升级 MDAC 并开始在 SQL Server 错误日志中看到 17805 错误,这表明客户端 ADO 应用程序发送的 TDS 数据包的格式不正确。您可能尝试让应用程序转为使用 ODBC 的 OLE DB 提供程序,如果您可以较为容易地做到这一点,应看看该问题是否与 SQLOLEDB 提供程序有一定的关系。相反,如果基于 ADO 的应用程序一直通过 ODBC 进行连接,则可以切换到 SQLOLEDB,看看这是否能解决问题,或至少帮助您缩小问题的范围。
• 同样,在对连接问题进行故障排除时,更改正在使用的 Net-Library 有时会有所帮助。如果使用 TCP/IP,命名管道也许值得一试。例如,如果 DHCP 服务器出现问题,并且没有有效的 IP 地址,则您将无法使用 TCP/IP 连接到 SQL Server。通过切换到命名管道,可以快速地将问题归结为 TCP/IP 特定的因素上。另一方面,如果在切换 Net Library 后仍存在同样的问题,则可以排除 Net-Library 方面的问题。问题的原因可能是服务器已关闭,或在您与服务器之间的某处网络基础设施无法正常工作。最后,还可以容易地更改应用程序使用的 Net-Library,而不必更改应用程序本身,这样就为您提供一个帮助缩小问题范围的工具。尽管从长远角度而言,使用某一特定 Net-Library 并不可行,但让客户端临时使用它可以帮助您缩小连接相关问题的范围。 |
|
ASP应用之模板采用
|
所以,梦想着那么大段的程序代码变成几个简单的字符代替,这样只要设计好页面把该功能插入就OK了。其实这也简单,只需将实现该功能的程序代码做成子程序,然后主页调用就可以了。
很多时候,在博客中国,你会选择到很多的模板,甚至有可能自己来设计;或者采用猪飞飞BLOG的各大站长都将其站点改得不近相同……这些,我们都归功于ASP采用模板的功能。
那下面偶就借花献佛,将模板拿来分析,以馈各位朋友。
首先,模板需要在线修改,则应采用数据库保存模板代码
所谓的模板,就是设计完工的标准的HTML代码,其中需要由程序实现的功能部分将采用特殊字符串代替。然,这些特殊字符串需要在显示的时候被编译为对应的功能。
2,假设第一模板内容代码
将下列代码拷贝到m_html字段中
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>testmb</title>
</head>
<body leftmargin="0" topmargin="0">
<table width="100%" height="100%" border="0" cellpadding="5" cellspacing="2">
<tr align="right" bgcolor="#CCCCCC">
<td height="20" colspan="2">$cntoplt;/td>
</tr>
<tr valign="top">
<td width="25%" bgcolor="#e5e5e5">$cnleftlt;/td>
<td width="74%" bgcolor="#f3f3f3">$cnrightlt;/td>
</tr>
</table>
</body>
</html>
注意$cntop$、$cnleft$、$cnright$,它们将要实现某些具体的程序功能
3,建立数据库连接文件conn.asp
<%
set conn= Server.CreateObject("ADODB.Connection")
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("testmb.mdb")
conn.Open connstr
%>
4,建立特殊字符串转换所需要的库文件lib.asp
该文件的主要作用是将实现某些功能的ASP程序做成字程序,以方便调用。
<%
dim topcode
sub cntop()
topcode="现在时间是:"
topcode=topcode&now()
end sub
dim leftcode,i
sub cnleft()
for i = 1 to 5
leftcode=leftcode&"<p>cnbruce.com"
next
end sub
dim rightcode
sub cnright()
for i = 1 to 9
rightcode=rightcode&"<hr color="&i&i&i&i&i&i&">"
next
end sub
%>
5,最后,调用数据库中的模板代码,将特殊字符串转换。
<!--#include file="conn.asp" -->
<!--#include file="lib.asp" -->
<%
sql="select * from moban where m_id=1"
set rs=Server.CreateObject("adodb.recordset")
rs.open sql,conn,1,1
mb_code=rs("m_html")
rs.close
set rs=nothing
cntop()
mb_code=replace(mb_code,"$cntop$",topcode)
cnleft()
mb_code=replace(mb_code,"$cnleft$",leftcode)
cnright()
mb_code=replace(mb_code,"$cnright$",rightcode)
response.write mb_code
%>
该页主要作用是将模板代码进行显示,并将其中的特殊代码转变为相对应子程序功能。
至此,ASP的模板功能基本完成,剩下的就是:建立具备编辑模板功能的程序页面,将库文件改变为自己所需要程序功能……
|
|
C与C++之区别
|
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。 对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。 再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。 所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。
几点学习建议: 1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。 2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。 3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。 4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。 5.几本好书: 机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,一应俱全,都TMD是经典中的经典,而且价格公道,童叟无欺。 国内也有几本好书,谭老爷子的书好倒是好,就是程序错误太多。强烈推荐清华周之英的《现代软件工程》(上、中、下),它是我所见到的国内少有的一本好书,精华的精华,要点的要点,细细品来,至少也属降龙十八掌等级的东东。
如果还是有人想学习C/C++的话, 有一些小问题我还是乐意解答的. 但是我认为学习C/C++是不重要的, 重要的是如何锻炼你的思路. 不要找一些连自己都搞不清的问题去做.
我认为虽然 "潭浩强" 同志有骗钱的嫌疑( 我手头就有一本几乎一模一样的英文书 ), 但是, 是他把这本入门手册引入中国, 使无数程序员了解了C语言, 我想他的功劳也是不可磨灭的. 在< C语言程序设计 >这本书中所有的例子都可以用做锻炼思路的基石, 他对大家的编程是很有帮助的. 我认为是值得一买的. 去思考课后的例子对你的编程很有帮助. 不要小看一个一个简单的例子, 他们是你通往成功的道路.
当你基本能够掌握了上一本书中例子后, 你就要自己找一些例子程序去看. 开始可能是看不懂, 但是只要努力就没有什么问题. 当你看过几个较大的例子之后, 你会茅塞顿开, ( 大量阅读例子程序是学习C/C++的捷径 ). 你会发现, 你的水平有了显著的提高. 你看的例子越多, 你对 Windows/DOS 了解的越多. 最好能够再看一些关于系统知识的书籍. 他会对你的编程很有帮助的.
这是我学习C/C++的一点心得, 希望对没有被我吓到而要继续学习C/C++的朋友们有一些帮助. 免得有些同志说我破坏中国软件人才的发展.
在最后我祝愿所有坚持学习C/C++的朋友们成功! 同时感谢阅读过我文章的同志们.
=========================
想学好C++,非学C不可!!!
今天我这么肯定的在这里讲这番话,是不想初学者陷入到语言越新越好的误区,本来这个题目就不是很严谨,但是我有几句话必须讲讲,为C平反!!
C++与C有什么不同呢?我们现在一步步地来分析一下 一、类,类我并不说它有什么不好,但是对于初学者,它是一个累赘。类的封装使得初学者对程序产生厌倦,感到不适和麻烦。 二、引用,引用是C++中最臭屁的东西了,最好尽量不要用它,我就是从来不用引用,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪个是引用,哪个是变量。 三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。 四、流操作符,和上面同样的道理,使得对变量类型的重要性产生淡化,况且,cin这个东东有点儿不怎么方便,有时会产生使初学者莫名其妙的结果。 五、操作符重载,典型的高级应用,初学者可能根本用不着,这个东东会让他们觉得C++很难,门槛高,看不懂…………。 六、继承,以及虚函数,典型的模仿四不象,这种狗屁东西除了看起来深奥,实用价值很低………………。我怎么可能把某个类的类型的指针去指向另一个不同类型但是是继承关系的类,来实现什么动态联编,晕………… ………………还有些东东我就不发表评论了,如:new,delete操作符等…………
七、误区:以问答形式: 问:C++是面向对象化的而C是面向过程化的? 答:第二对,第一问错,C++并非完全面向对象化,真正的面向对象化的语言恐怕只有Java才算得上。 问:C++能实现C所不能的功能吗? 答:至少我还没有发现…… 问:学了C再学C++有障碍吗?比如程序设计思想…… 答:至少我还没有看见谁有此症状。 问:学了C再学C++又要重头开始吗? 答:不,C++下可以实现C语言的一切功能。 问:我学完了C一定还要学C++才能编程吗? 答:完全没必要。 问:C++比C好在哪里? 答:更加符合软件工程学 问:学完了C再学C++是不是很容易? 答:那要看你是不是真正的学完了C语言,我从C到C++就一个星期的睡觉前的时间看两眼书,然后就大彻大悟。再跑到这里来发表些狗屁文章了。
最近在网上看到了很多人的学习方法,本人非常不赞同。很多人都想一口吃个胖子,要学就想学最新的,好象没有人愿意再去学那些老的,旧的编程语言了。但你们能学的懂吗?不学TC2。0等那些较早的优秀编程语言,你们能理解的了VC6。0?如果你真的能,我宁愿做你的徒弟!真是奇怪,那些最基本的语言都不懂的人,怎么可能去理解那些最新的编程语言?我学编程有三年了吧。成绩也不算多,只有一个计算机四级证和一个高程证,但我觉得我在学VC的时候还有很多的不明白的地方。没有人来教我,只能靠我自己,包括所有的成绩在内,我都是靠自己,我从不报班。学VC的半年多来,我想我已经基本入门,但依然有很多的困惑。刚开始学VC,就面临一个项目,我真的犹如笨蛋一般,四处吓摸,毫无头绪,最后勉勉强强才算做个差不多。学好VC再去学其他的高级WINDOWS编程,我想那真是轻而易举,毕竟WINDOWS的内部的很多东西都能直接被VC调用,你首先就可以对WINDOWS有个全新的认识,再去学其他的语言岂能不简单?
我的感觉是,面向过程和面向对象,其实都很重要的,在VC里也依然需要面向过程,很多东西都是一环扣一环,没有面向过程的思想,怎么可能去编程呢?建议多去看看有关WINDOWS编程的书,但多数都是比较老的书呦!我依然记得当年整天进行TC编程的辛苦,但我依然很怀念当年的劳动付出,毕竟我获得了我想获得的一切——编程思想。我觉得一个好的编程思想,绝对比你去学一门计算机语言好重要的多。要形成自己的编程风格。一个好的编程思想在你的头脑中一旦形成,学习什么语言都会很轻而易举,因为此时的你不在是简简单单的学习,而是来验证! |
|
ASP高手是怎样练成的?
|
开发特区最新改版后,将重点突出目前流行的技术和语言,既注重低端的入门类别教程,又兼顾实例讲解,源代码讲解等。在改版顺利完成后,将对以前的内容进行一次较为全面的总结和回顾,做出相关的专题回顾。
那么今天我们的开发专题是面向目前最流行的WEB开发语言ASP的。ASP其实是一套微软开发的服务器端脚本环境, ASP 内含于 IIS 3.0 和 4.0 之中 , 通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。 我们希望通过本ASP专题,可以使您由浅到深,从理论到实例,从常见问题到相关技巧,彻彻底底,完完全全的了解ASP,在开发专区完成从菜鸟到高手的质的飞跃。
百丈高楼从地起,那么首先让我们对ASP有个初步的了解,看看我们的ASP入门教程:
ASP入门教程
第一篇 Are you ready
第二篇 ASP简介
第三篇 ASP基础
第四篇 ASP脚本基础
第五篇 脚本变量、函数、过程和条件语句
第六篇 ASP脚本循环语句
第七篇 ASP内建对象Request
第八篇 ASP内建对象Response
第九篇 ASP内建对象Application 和 Session
第十篇 Global.asa文件的使用及Chat程序
第十一篇 ASP内建对象Server
第十二篇 数据库查询语言(1)
第十三篇 数据库查询语言(2)
第十四篇 ActiveX 组件
第十五篇 常用的 ASP ActiveX 组件
第十六篇 其它的ASP常用组件
第十七篇 ADO 存取数据库时如何分页显示
第十八篇 堵住ASP漏洞
第十九篇 最新的ASP、IIS安全漏洞
数据库初级操作
一、ASP的对象存取数据库方法
二、连接数据库和打开数据表
三、程序清单
四、实例(存取Excel数据表)
OK,学完以上内容,你对ASP有了一个初步的了解了么?什么?那些都太浅显了,一看就会?没问题没问题,下面我们为大家介绍的是ASP.NET,即我们常说的ASP+,当你有了一定的ASP网络编程经验后,看看这个非常有用。
亲密接触ASP.NET
第一篇 ASP+的配制环境
第二篇 ASP+的语法
第三篇 ASP+中的控件
第四篇 WEB控件
第五篇 DataBind数据核心
第六篇 Namespace(命名空间)的使用
第七篇 数据库的应用
第八篇 DataSet
第九篇 在一个DataSet中储存多个数据表
第十篇 增加修改删除数据
第十一篇 如何分页
第十二篇 DataGrid的分页(2)
第十三篇 实现个性化分页
第十四篇 个性化分页(2)
第十五篇 状态保存
第十六篇 Cookie 怎么样,在学习的过程中有没有遇到疑问呢?没关系,我们就为大家总结了一些常见的问题和相关的编程技巧。
ASP设计常见问题
ASP设计常见问题及解答精要(1)
ASP设计常见问题及解答精要(2)
ASP设计常见问题及解答精要(3)
ASP设计常见问题及解答精要(4)
ASP编程技巧
ASP编程要点ABC(1)
ASP编程要点ABC(2)
ASP提速技巧五则
Urldecode 方法补遗
错误80004005信息处理方法
查看服务器Application/Session变量工具
ASP经典实例
用Asp.net实现基于XML的留言簿(1)
用Asp.net实现基于XML的留言簿(2)
用Asp.net实现基于XML的留言簿(3)
用Asp.net实现基于XML的留言簿(4)
用asp.net实现的把本文推荐给好友功能
用纯ASP代码实现图片上传并存入数据库中
>ASP中关于帖子分页显示的基本方法
一个显示原代码的asp程序
使用ASP生成HTML文件
史上最强的数据分页方法
防止新闻系统里产生垃圾图片的方法
ASP中的主页广告轮换大法
很好,如果你认真的完成了以上的学习的话,那么现在的你已经是一个准高手了。下面我们将进入ASP的高级应用阶段:
ASP高级应用
让ASP应用系统成为跨平台的系统(1)
让ASP应用系统成为跨平台的系统(2)
让ASP应用系统成为跨平台的系统(3)
让ASP应用系统成为跨平台的系统(4)
WAP中的ASP技术之一
WAP中的ASP技术之二
WAP中的ASP技术之三
WAP中的ASP技术之四
WAP中的ASP技术之五
WAP中的ASP技术之六 好了,如果你完整的看完以上内容并且熟练掌握了,那么现在我宣布,你已经是一个ASP高手了。 |
|
学习c++的50条忠告(初学者必看)
|
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++! |
|
学编程的人不能不看的好文章
|
看了下面的这篇文章,深有感触,枣子碰到的问题也是我们大多数程序员的通病,也许我们大多数人都只是在做一些比较小型的软件,对软件运行的效率不在乎,就算对速度和效率在乎的也可能是一些在数据库操作方面的。大家看完了,也许会有很多感想,但这只是我同意枣子的个人观点。 〔枣子www.vcroad.net wutao8@263.net〕; 作为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以 在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net 1.面试经过 大约在年前我接到了台湾瑞晟〔Realtek〕苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的! 21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的: 〔由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换〕; 1〕; 写一个函数计算当参数为n〔n很大〕;时的值 1-2+3-4+5-6+7......+n 哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来! 于是很快我给出我的解法: long fn〔long n〕; { long temp=0; int i,flag=1; if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } for〔i=1;i<=n;i++〕; { temp=temp+flag*i; flag=〔-1〕;*flag; } return temp; } 搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案! long fn〔long n〕; { long temp=0; int j=1,i=1,flag=1; if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } while〔j<=n〕; { temp=temp+i; i=-i; i>0?i++:i--; j++; } return temp; } 虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序! long fn〔long n〕; { if〔n<=0〕; { printf〔"error: n must > 0〕;; exit〔1〕;; } if〔0==n%2〕; return 〔n/2〕;*〔-1〕;; else return 〔n/2〕;*〔-1〕;+n; } 搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题: 2〕;,他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1〔n〕;=n/2!+n/3!+n/4!+n/5!+n/6! fn2〔n〕;=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn〔int n,int flag〕;实现,当flag为0时,实现fn1功能,如果flag为1时实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路: 定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环: for〔i=0;i<6;i++〕; { temp=temp+n/t[flag]; } 最后得到计算值!呵呵,典型的空间换时间的算法! 这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了, 因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过! 2.由面试想到的 真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想: 不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员〔注意我指的是优秀,只会编几个糟烂程序的人算不上〕;的比例应该是100:0.1 在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外! 我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前www.vcroad.net做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函数名比如:void chushihua〔〕;,好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊! 还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它! 3.我打算做的! 其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来! 真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师! (下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是www.vcroad.net原创,谢谢您的支持) 作者:金蝶中间件公司CTO袁红岗 不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。 2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。 4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。 5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。 6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。 7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。 8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。 这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。 |
|
一部感人好文章 (推荐阅读)
|
序 跨入二十一世纪的中国,依然持续而平稳地发展着,然而发展的脚步已显出些许沉重和蹒跚。 失业、贫富差距、腐败,一个又一个日益严峻的问题面前,人们继续歌舞升平着,纸醉金迷着,劳劳碌碌着,浑浑噩噩着,苟延残喘着。 对于即将过去的中国二十一世纪头五年而言,平平淡淡,大事小事乏善可陈。 而大事件终于还是发生了。 事件已过去很久了,随着各种秘密文件的解密,事件中各个细节也水落石出。作为事件亲历者的我,回想那些惊心动魄的瞬间,却仍然感觉得到浴火重生,仍然感觉得到热血激荡。 在当时,谁也想不到,这惊天大事件的主角,竟然是一个普通人,一个恐怖分子。 第一章粽子的威胁 2005年3月28日; 当电话铃声响起时,我正在梦里大嚼母亲亲手做的湖州粽子。用全力睁开眼,“今年端午节一定要下定决心不怕下岗,排除万难争取回家. ..”胡思乱想中却一时想不起身在何处。 伸手擦了擦嘴边的口水和粽子的余香,才想起自己已经两年没回家了。“姥姥的!这记者我他妈真不想干了!”随着牢骚出口,短路的大脑恢复正常,各种信息如滔滔江水连绵不绝,试图搜索出自己在哪里。 我是一名记者,央视记者,CCTV二十四小时新闻频道里众多三流马仔小记中的一员。CCTVNEWS自2003年开播便立志成为中国CNN,再不济也要B BC。这可苦了一帮老小记们,驱牛赶马般被轰到世界各地,哪儿乱钻哪儿,都成一群苍蝇了。我不幸赶上这大好时机,整天鸡飞狗走刨根问底。而一旦寻到宝贝或刚闻到丁点油腥味,总部便会派出大牌或准大牌的名记接手进行报导和直播, 我则被踢到另外的地方继续当矿工。 好不容易熬到能偶尔露一小脸,可分派的活儿——唉!不提也罢。这不,大过年的去西伯利亚吹了二十来天地狱的寒风,调查俄罗斯核弹头失踪内幕,到处碰壁不说,差点让老毛子驱逐出境。回到国内气还没顺过来,又被派来报导《联合国气候变化框架公约》缔约方第五次会议。不过这次居然给我租了卫星直播车,配了摄像、采编,嘿嘿,看来我快混入准大牌行列了。 可成天看着那些发达国家代表叽叽歪歪长篇大论说什么也不让步一脸的为富不仁,憋气得紧!更可气的是美国以“减少温室气体排放将会影响美国经济发展”和“发展中国家也应该承担减排和限排温室气体的义务”为借口,宣布拒绝执行这《京都议定书》. ..对了!我在东京! 手机铃声响到第三声时,我终于想起自己身在东京。 摁下接听键时,我看见时间,6:27AM。天!我昨晚上网查资料顺便考察了一下日本成人网站,泡到4点半才睡啊!怪不得大脑会短路。 未等开口,一个急促的声音炸响:“CCTV的李记者吗?” “嗯...”我将手机稍微拿开。 “我是中国大使馆秘书,昨天我们见过面的。现在有一个紧急事件,东京警视厅通知我们,一名怀疑为中国籍的男子身缠爆炸物挟持三名人质与警方对峙,该男子要求,只要C CTV和CNN的转播车到现场直播他的声明,就释放人质。大使已派人赶赴现场,大使请你们立刻赶到现场,全力配合日本警方。” “哦,我们立刻出发!” 不到五分钟,我们几人已跳上转播车。翻译兼司机回头问到:“去哪你还没说呐!”MyGod!看来我今天还不是一般的大脑短路。幸好昨天和那位秘书交换了名片! 放下电话我足足楞了一分钟,才挤出四个字:“靖国神社!” 车在飞奔,车上的人都默默无语。这鬼地方太敏感了!我拨通北京总编家里的电话,刚起床的顶头上司显然和我一样处于大脑短路中,半天才说:“好吧,你们尽量配合。至于转播,我要请示上面后才能安排。对了,你们注意安全啊!” 哼,不出所料。这种敏感地方的敏感新闻在国内多半是要被Cut。不知什么时候开始,中国政府对日本都采取了这种奇怪的鸵鸟政策,不论老鬼子小鬼子怎么折腾,不管日本民间如何歧视、仇视中国,总是拿“中日友好”这床锦被遮着捂着,实在遮掩不住,才不痛不痒地喊两嗓子。 到了。手表显示,7:07。我的手表是北京时间,而东京时间则是8:07了。日本警察已将道路封锁,警戒线前一个小头目跳上我们的车,检查证件后将我们带到神社前的停车场。 绕过两辆防暴车,一眼就看到100米外神社白色门楼下停着一辆装甲运钞车,车尾有三个身着校服的女学生被捆在一起,在她们身后,从车尾探出半个身子的,应该就是恐怖分子了。围绕在前面约三十米则是十几辆警车,二十多个警察以警车作掩护持枪待命;外围还有一些警车、防暴车,再往后停着两辆转播车,分别打着C NN和NHK的标志。靠!总是比他们晚一步。我们的车停在CNN旁边,小头目态度生硬地请我们不要下车,然后去汇报了。我看了看三个同事:“不管他!你马上拍摄周围环境和事态发展,你马上开启设备随时准备卫星传送,你立刻联系总部值班人员搜集这鬼社的相关资料,包括围绕它发生的事件!我和翻译去联络警方!” 跳下车就看见小头目带着一个穿西装的中年男人匆匆走来,而旁边CNN车门打开,出来一个金发美女——我认识,CNN大牌萝丝,原来她们也刚到。 几个人在防暴车后围成一堆,西装鬼子开始介绍情况,态度还不错,可能是美女当前吧。萝丝和我的翻译则比赛似的开始干活。 “给你们添麻烦了!我是片山,隶属东京警视厅反恐特别小组,这里由我负责。 “情况是这样,今天七时左右,一名男子驾驶运钞车撞开停车场围栏冲到神社前,神社保安员上前察看,该男子突然亮出胸前捆的炸药状物,并从车上拖下三个被捆绑的女学生,威胁其他人退后。警方接报于7 :07时赶到,我的小组和特警于7:12时到达,局面形成对峙。爆破专家通过观察,初步判断男子胸前是黄色炸药和雷管,而缠在三个人质身上的是拆房子用的爆破索。 “我们一边安排狙击手和拆弹小组,一边和他对话,发现他只会一点点日语,主要是用英语和我们交流,他要求CNN和CCTV直播他的声明,然后就释放三名人质。因此我们请两位来,如果我们没有别的可行方案,只有麻烦两位了,拜托了!”说着一个鞠躬。 “他到底是那里人?”为节约时间,我用英语问到,让两个翻译彻底下岗。 “不好确定。不过对话中他说了几句什么,我的同事认为是中国话。因此我们猜测他可能来自中国。”片山的英语还算流利,不过发音怪怪的,C hina被他说出来怎么听都像“支那”。 萝丝轻启红唇,刚欲发言,就被一个声音打断了:“让记者过来!别耽误时间!” 我们——包括两台摄像机从车后探出,只见那人高举着什么。“我手上是起爆器,套着我的手和手臂的是用钛合金和多层凯夫拉订作的防弹铠甲,我头上戴着警用防弹头盔。不论你们的狙击手打哪里,我都可以在最后一刻起爆!” 一个警察拿着小喇叭用英语喊道:“请相信我们,我们不会伤害你,不要做傻事!放了人质,我们可以和你好好谈谈。” “我不想伤害任何人,只要记者过来转播,我就放人!” “不要激动,记者刚到,可能需要时间调试设备,请等一下!” 对话结束片山一回头,看见两个摄像已站到空旷处拍得起劲,连忙把他们拉回车后,遮住镜头,“危险!还有,没有我同意,请暂时不要拍摄和发新闻,拜托了!请先回车上吧,那里安全一点。”“那为什么N HK可以拍?”我抗议道。“我们需要你们配合我们的行动。而且,”他犹豫了一下“在事态没有明朗以前消息扩散,可能会引起国家间的误会。总之请谅解我们。我去布置一下,失陪了。” 萝丝一脸茫然嘀咕:“为什么这种事会影响国家关系?”看来这名记也只是绣花枕头,我懒得理她,扭头回到车上。不过也难怪,一个美国小妞怎么可能理解靖国神社在中国人心中意味什么,她也难以预测一个中国人在靖国神社前这么做会演变成什么。 拨通总部电话,老编已赶到了。听完叙述老编指示:“尽量配合,见机行事,注意安全。将已拍到的图像先传过来进行制作,我会安排卫星线路供你们使用。至于发不发,待会儿台里领导到齐后开会研究。”“还要研究啊?人家C NN可不会等,说不定现在已经直播了。”我对这些官僚已经没什么脾气了。“不要着急嘛,看事态的发展再说。”“我有预感,这是一个大新闻!”“好了好了,你就把现场报导实时传过来,我会看情况插播的。” 东京时间8:45时。西装鬼子片山终于召集我们:“看来要想不伤害人质,只有请你们两位试试了。我们派人装作你们的摄像师,保护你们。这是防弹背心请穿上。”哪里是要保护我们,明明就是不许我们拍摄,而且可以摸清状况,看有没有机会下手。我眼珠一转,拎着防弹背心回到车上。“我们的针孔摄像机和发送器呢?快给我装上!” “记者过来了,请你不要伤害他们!”喊话声中,我和萝丝穿过警察包围圈,慢慢靠拢,身后跟着扛摄像机的两名特工。我注意到萝丝的腰间防弹背心下和我一样鼓起一块,不禁微笑,这妞反应也不慢。 十米,五米,两米,我的手心在出汗,不知道是因为终于捞到大新闻的激动,还是因为害怕,我全身在微微战抖。“StopPlease!”随着声音,终于和恐怖分子零距离了。这男人身高约1.75米,戴着头盔,看不清脸;引人注目的左手整个套在一个炮弹壳一样的筒子里,筒子表面覆盖着黑色织物,看来他没说假话,筒子里面应该就是起爆器,不可能远距离破坏的起爆器。 他一身黑衣,可衣服鼓鼓囊囊,缠着各种各样的导线,看着别扭,也不好判断他的胖瘦。他整个人看起来就像... “抱歉我今天看起来像个粽子,”他一口懒洋洋的牛津英语。“为了这次行动我不得不穿了三件凯夫拉。”我居然笑了。 “还好我已经把它脱了,”他指着脚边一件绑满炸药的背心,“要不看起来会更糟。”这次连萝丝也不禁微笑。
他的话语和声音仿佛是在和朋友喝下午茶,一下化解了剑拔弩张的戾气。 “请问你是哪里人?您这么做有什么目的?您要发表什么申明?”这回让萝丝抢了先。 “先别着急,亲爱的小姐。我需要验证一下。”粽子掏出手机拨了个号码。 “喂,大刘吗?”标准的普通话,他是中国人! “好久不见了...我在东京...来你家聚聚?我有事啊。请你帮个忙好吗?...请你看看电视,你那儿能收到CCTVNEWS吧?...在播什么?.. .财经新闻?”我感觉到他盯了我一眼,我真恨不得暴扁老编一顿。 “嗯,我没事,你再看一下CNN,...哦...哦,NHK呢?...哦...好的,谢谢你...你别问了,看下去就知道了。可能一会儿日本警察会找你麻烦,不好意思给你添乱了。”他迅速合上手机,从头盔里扯出耳机,一起扔回车上,转向我:“怎么回事?C NN和NHK都在直播了!”“我也没办法,播不播我控制不了啊,粽子大哥。”我有些慌乱,旁边三个人都茫然地看着我俩,他们听不懂。 “怎么才能让他们直播?”“大哥,你是知道国内的新闻控制的...不过,也许,发生了爆炸性的大事他们就会直播...” 粽子有点烦躁,来回走了两步。“我不能等了!爆炸性新闻?哼!我看他们播不播!” 他站住了,头转向警察包围圈,那个西装片山正拼命打手势,两个扛摄像机的特工也拖住我和萝丝的手臂,看来他们也发现自己上电视了,所以要拖我们回去。 “都住手!我现在宣布,”所有人都安静下来看着粽子。“我要毁掉身后的这个地方!” “而且,”他掏出表看了一下,“现在是9:03时,还有14小时57分钟,日本将再次成为核打击的受害者!”他拉开运钞车的尾门。 第二章交锋 车尾箱里纵横交错焊了许多钢管支架,而支架中央所包围的是一个大铁箱子,箱子里布满复杂而有序的导线和各种不知名的仪器,这堆东西下面露出一个墨绿色的圆柱体,上面有一些编号和文字,是——俄文。 我极度震惊之余,看到箱子上一个倒计时正显示到14:56:15。 所有人都呆了,现场安静之极,只听见那三个捆在一起的女孩子在低泣。 粽子走过去,解开她们身上的爆破索和胶带。“去吧,让你们受惊了。”三个女孩子迟疑了一下,跑向警察。警察包围圈这时炸了窝了,西装鬼子和其他几个头头声嘶力竭地打电话,几个警察上前接应人质,那个小头目挥舞着手向其他警察喊着什么,那些警察听到后将枪慢慢放下。 而这场混乱的制造者仿佛无视这一切,淡淡地对我们说:“我是个信守诺言的人。” “不错,你是放了三个女孩。可现在我们,在场的所有人,全东京的市民,都是你的人质了!”这小妞居然没有歇斯底里,那么快就镇定下来,让我不由得佩服。 “你错了,亲爱的小姐,不是全东京,这颗只是五千吨级的战术核弹,杀伤半径1500米,而且污染较小,是所谓的‘干净的核弹’,它原本属于. ..” “它原本属于俄罗斯第79导弹部队,”我插话道,“根据美俄削减导弹的进度,本来应该于去年底销毁,可在送往西伯利亚的途中,和另外两枚弹头一起失踪。没想到在这里出现了。” “完全正确。我看了你前几天的跟踪报道,做得不错,资料很丰富。”我似乎感到他口气里的讽刺。 “好了,咱们待会再聊。”他转身指着打电话的西装片山喊到:“你!请你过来一下!” 片山满头大汗,脸色铁青,嘴角不停抽搐:“你怎么能这样!你怎么能这样!” 粽子还是懒洋洋的:“请冷静。我现在通知你,这枚核弹将于今晚24时准时起爆。你们有十四个小时的时间,也就是说,今天23:00时,你们必须撤出方圆十公里内的所有人员,包括你们在内。我不是恐怖分子,更不是刽子手,我不希望哪怕一个人的伤亡。 “我希望日本政府完全配合我的行动,不要试图阻止我的行动。更不要试图拆除核弹、破坏核弹,因为不会成功的。我手中的遥控可以随时引爆,我身上和车上装了多个传感器,只要触动立刻起爆。比如说我突然摔倒、车门车身被撬动、我和车周围温度气压突然变化等,换句话说,我不能中枪,车不能乱动,不要试图轰炸。 “即使解决了遥控器和传感器,还有定时起爆控制系统。这是我花了二十万美元请最好的专家设计的。完成后专家说就是他自己来拆,如果不知道密码,也得十多个小时还不一定成功。 “都听明白了吗?” “是,是...可你行动的目的是什么?你有什么要求?是要钱吗?” “看来你是昏头了。我再重复一遍,我的目的是毁灭这里,我的要求是不要阻止我,我不是来勒索你们。我,不是恐怖分子!” 片山连滚带爬回去继续打电话了,两个特工也扔下摄像机跑了。而我的摄像趁警察六神无主跑了过来,对我说:“播了播了,老编自作主张,全播了!”“好!拿起你的摄像机!”老编毕竟没有丧尽天良啊。 “你们开始直播了吗?”粽子凑过来用中国话问。“你确定吗?” “当然!”我的摄像说,“我们车上可以看见后方导播室,可以收到卫星信号。哥们儿,我支持你!” “好,把你们的车开上来。” 片山已经完全崩溃了,我没怎么费口舌就把车开到运钞车前。中国大使馆的人也到了,不过是个小角色,不敢乱说话,只是捧着电话汇报。 萝丝也不甘示弱,于是我们两辆车和运钞车形成个三角,我们车门拉开,监视器上CCTV、CNN、NHK的直播一览无遗。两台摄像机架起,背景则是运钞车和里面的核弹。天啊,再没有比这更刺激更完美的直播现场了! 我们手脚利索地搞好这些后,我和萝丝站到各自镜头前开始正式的开场白。“各位观众,这是CCTV李涛为您现场报道。”在我简要叙述事件始末时,粽子在一旁静听,不时看看监视器。“接下来我们要采访这一事件的主角。” 粽子站到镜头前:“对不起萝丝小姐,我不想再说英语了。我想李先生应该可以为你翻译的。”我立刻说:“不用我来,我的翻译英语也很好。” “这样更好。”这时突然开进几辆轿车,跳下七八个身着黑西装的人,为首的走到片山面前噼里啪啦几个耳光,大声咆哮着。我不禁可怜起这个很合作的西装鬼子了。“不管他们鬼打鬼,我们开始吧。” “六十年前,1945年8月15日,日本战败投降。结束了给中国和亚洲人民带来大灾难的‘大东亚圣战’;可是,日本人从不愿叫这天为‘战败日’、‘投降日’,只称这天为‘终战日’。他们不承认战败,更不愿讨论战争的罪责。1 978年,日本政府偷偷把东条英机等多名甲乙丙级战犯的牌位以‘昭和殉难者’的名义放进我身后的‘靖国神社’,从而使这地方增加了宣扬‘扩张有理、侵略合情’的新内容,为战争罪犯翻案!屠杀他国人民的刽子手竟成为‘英灵’,日本政要争相对他们顶礼膜拜,还辨称是‘追悼保卫祖国的阵亡者’。 “日本长期坚持的是‘不反省、不道歉’的立场,日本军国主义阴魂不散,蠢蠢欲动,随时企图卷土重来!这决不是空洞的威胁!作为曾深受日本皇军荼毒的中国人,我们不能再听之任之,不能再麻木不仁了! “我叫江伟。我是中国人,确切的说,是新西兰国籍的中国人。我今天是替所有中国人民和亚洲人民来讨回六十年前的债的!我要摧毁日本军国主义的大本营!” “江先生,我想问你几个问题。”萝丝插话。这小妞真讨厌,不过得承认她对采访对象和话题的控制能力,在她的很多节目中,被采访人往往不知不觉就被她牵着鼻子钻进套子。 粽子——江伟点头。“您这么做有意义吗?战争结束很久了。” “萝丝小姐,你去过珍珠港亚利桑那号战列舰纪念馆吧?你们为什么修建它?” “为了纪念死去的两千六百多水兵,让人们不要忘记那次耻辱的失败。” “那么这些水兵的亲人恨发动偷袭杀害他们的日本军人吗?” “他们不宣而战卑鄙偷袭,确实可恨。不过那是战争,他们是军人得执行命令。” “很好,可这个卑鄙偷袭的命令是由山本五十六发出的,对民用机场、救援船、医院自由攻击的第三波攻击命令是由南云忠一发出的。而这两个战犯的牌位,就在里面被当作英雄供奉着。你怎么想?那些死者的亲人怎么想?” “我...” “如果说他们作为将军,命令向敌人军队攻击是天经地义的话,那么同样是将军的松井石根、本间雅晴、武藤章、植田谦吉、香月清司、土肥原等等,他们下的命令却是针对平民的屠杀、***、释放毒气细菌!而他们的牌位也在里面! “平顶山万人坑的冤魂、731部队的‘木头’、缅甸被虐待杀害的二十万盟军战俘、南京城四十三万尸骨、中国三千六百万受难者、亚洲五千四百万条人命,他们怎么想?他们会因为战争结束六十年就瞑目了吗?! “所以,我今天,就是要为他们,讨回公道!” 萝丝憋红了脸。相信此刻我的脸也涨得通红,因为我浑身热血奔流,胸口被一团火焰灼烧着。 这时,现场涌进大批军车。车上跳出全副武装的士兵,他们身着防化服,头带防毒面具,迅速接管了警察的包围圈。而警察则全部撤走,只留下片山可怜巴巴地跟在黑衣人后面。这时是东京时间9 :35时。 NHK的报道画面上东京街头已出现骚乱了,警察和自卫队士兵也出现在各主要路口。 为首的黑衣人拿起喇叭:“这里已实施军事管制,请记者停止转播,立即撤离!否则我们将采取必要手段强迫离开!” “你们大概忘记这里谁说了算数吧?”江伟又恢复了他那懒洋洋的语调。“这些记者是我请来的客人,什么时候送客得听我的。” 黑衣人尴尬之余,只得对江伟说:“江先生,我能和你单独谈谈吗?” “要谈请过来谈,没必要躲躲藏藏的。想必你们很想看看这枚炸弹吧?你可以带一名专家一起过来。其他人不许再往前,而且,我警告你,如果你想用电磁干扰中断现场直播的话,”他扬起左手,“我将用它来发言!” “我是黑田,日本防卫厅长官助理。” “好了,”江伟一挥手,“我们待会再谈,让你的专家先工作。我给你五分钟时间,不许碰炸弹,不许上车。” 那专家全套防辐射服,头戴防辐射面罩,拿出一个嗒嗒作响的小仪器慢慢走近车门。越接近炸弹,那仪器的嗒嗒声越来越急促。我看见萝丝俏脸发白,便安慰她:“这是盖革计数器,嗒嗒声还没变成报警声,说明这里有辐射污染,存在放射源,但还没超出安全界限。”那专家又是记录又是拍照,手忙脚乱折腾了五分钟回去了。 “那么黑田君,你想和我谈什么?你现在应该关心撤离市民才对啊。” “我代表日本政府想请江先生放弃行动,您? 您的其他要求日本政府会认真考虑的。”黑田嘴里客气,眼里却闪过一丝怨毒。 “认真考虑?!中国人民和全世界已经让你们考虑了六十年了,现在需要行动来让你们反省了!” 黑田又一次尴尬,可他不得不坚持:“只要您不引爆炸弹,我们会考虑您今天的声明,您的任何要求我们都可以尽量商谈。” “我的要求?你又错了。应该是中国人民,和所有深受日本军国主义迫害的人们的共同要求!多少年来,我们要求你们正视历史,反省过去,认真道歉。可你们呢?置若罔闻!而且公然篡改历史,美化侵略,祭拜战犯! “我听说日本崇尚武士道精神,而武士道给人印象最深的就是勇于承担责任,如有过错不能挽回就剖腹谢罪。如果你们真有武士道精神,那么我们的要求不难实现。而你们的所作所为,看不到任何武士道精神。或者,你们这个民族标榜的精神根本就是谎言! “一个被宣判有罪的、残忍的杀人凶手,非但不忏悔谢罪,还无视事实强词夺理,那么只有两种解释:要么这人是精神病,要么他根本是禽兽! “如果你们的天皇能向德国勃兰特总统学习,跪在世界人民面前,真心忏悔,诚意谢罪,那么等我毁灭这靖国神社后,我再考虑用不用核弹!” 铿锵激昂,掷地有声!江伟越说越激愤,一把将头盔摘下。 东京初春的寒风中,一张极为平凡的面孔,微微冒着热气。国字脸,胖瘦适中,年纪三十出头;不大但有神的双眼,清秀的眉毛,略低的鼻梁,双唇紧抿着,尽力压抑着心中的激动。就是这张非常普通的脸庞,在这刻,却是全世界瞩目的焦点。 我心醉神迷,热泪盈眶。萝丝也深受震撼。而黑田瞠目结舌,过了半天才回过神来,通过耳咪低声说着什么。我们都沉默了。我在回味江伟的话,被压抑太久的声音,被压抑太久的情感,今天终于爆发了,痛快淋漓地爆发了。 黑田结束通话,脸色越发难看了。“江先生,我们已经下令疏散市民,可时间太紧了,十四个小时根本不够啊。” “看来你的专家对核弹的真伪作出判断了,”江伟恢复了平静,用他那懒洋洋的语气嘲弄道。“可时间是不会延长的。23:00必须全部撤离,0 :00准时起爆。大和民族不是号称最有效率、最有纪律的民族吗?” “可你看看已经引起了多大的恐慌了?”黑田指着监视器气急败坏地嚷道。 NHK的画面上,街道一片混乱,人们四处乱跑,还有人则发狂一般哭喊着;交通陷于瘫痪,汽车横七竖八堵在一起,拼命按喇叭。警察和士兵徒劳地指挥着,更多的士兵出现在街头。 “哼!”江伟冷笑。“如果不是因为日本皇宫也在爆炸范围内,你们也不会那么快下令疏散吧?你们紧挨着靖国神社安置了十所学校、两家医院,真是做贼心虚!如果不是这样,你们连恐慌的机会都没有!” “不管你的主张是否有道理,这些人们是无辜的啊!”黑田大喊。 “无辜?也许是有小部分人是无辜的,所以我才给他们十四小时逃命。但更多的日本人,跟着你们抹煞事实,认为日军当年的暴行都是被逼无奈,甚至不承认日军的兽行,认为我们无理取闹,为的是诈骗日本的援助。这些人能捡回性命已经是我的宽恕了。”黑田语塞。 过了一会,江伟指着监视器:“还有这些人,你能说他们是无辜吗?” 画面上,一群日本人,有老有少,头上缠的布带写着“武运长久”,有的还穿着六十年前的皇军军服,举着“保卫神社”、“杀光支那猪”的标语;有的手持棍棒,与警戒的士兵发生冲突。这是日本右翼团体分子。“这些右翼分子和军国主义狂徒,在你们日本,每年正以十二万人的速度递增!” “黑田,我们的谈话结束了。你可以回去认真考虑了。”
第三章风萧萧兮我心悲狂 “我需要安静一会,失陪了两位。” 说完江伟钻进运钞车,关上所有车门。 现在大概10点40分,我们也回到车里。几乎所有主要媒体都在报导这一惊天动地的消息。 CNN和CCTV请了一些专家教授到演播室,对事件进行背景简介和分析,以及事件的发展态势等等。CCTV还插播了一些反映日本侵华的资料片。 NHK除了对现场和街道进行报导外,还反复播放一个简短的东京市政府紧急通告,大意是谴责恐怖活动,宣布警戒区域,劝告市民保持镇定,服从军警指挥,迅速疏散云云。 接下来的一个多小时,各国政要纷纷发表声明,几乎都是对事件表示震惊,谴责恐怖分子的行动,希望日本政府能尽快解决危机。美国总统还表示已经派出最顶尖的危机控制小组和核弹专家协助日本方面行动。而韩国和几个亚洲国家的声明,除了震惊和谴责的套话外,还加了一句希望日本政府正视历史,反省过去,避免类似事件的发生。 中国政府则保持沉默。 日本也保持沉默。只有石原慎太朗那疯狗以个人名义对着镜头一通歇斯底里的漫骂,称这是战争行为,中国要为此负责等等。当他旁边的记者忍不住提醒他江伟的国籍是新西兰时,他先是愣了一下,然后扯其它的问题去了。 江伟始终没有出来。黑田几次要求对话,都被冷冷地拒绝了。 CNN的演播室内几个专家教授在讨论着核弹爆炸的后果和日本可能采取的行动。俄罗斯的发言人称从现有资料图像判断,不能确定这枚核弹是否就是失踪弹头。而C CTV的画面上,北京上海等城市街头行人稀少,人们都聚集在有电视的地方,默默地关注着。 老编来电:“上面要求我们只作客观报导,不要评论,配合日本政府解除危机的行动。江伟的资料也找到了。如果事态恶化,你们必须立刻撤离。” 资料显示在屏幕上:江伟,男,35岁未婚汉族,原籍大连。无犯罪记录。2004年投资移民新西兰。唯一亲人母亲75岁,现居北京,父亲兄长亡于文革期间。 黑田派人送来水和面包。 13时30分,江伟出来了,他又戴上了头盔。我递过一瓶水。 “这水我不喝,我车里有。我有些工作要完成,抱歉让你们守在这半天。天下大乱了吗?”他指着监视器问。 我微笑。简短叙述了各方动态,我问:“可以继续我们的谈话吗?”“当然可以。” “可以谈谈你的经历吗?” “没什么特别的。大学毕业不甘心在单位混,就出来闯荡,吃了些苦头。后来慢慢有钱了,可又不知该干什么了,空虚堕落了几年。” “那你怎么想到要进行这次行动呢?” “三年前一名爱国青年在这门口喷漆以抗议日本首相参拜的事件还记得吧?我灵魂深处的某种东西苏醒了,我觉得那是一种使命感,我必须做这件事。我开始搜集资料,等待时机。” “那你想过这样做的后果吗?” “后果?这个问题我现在不想谈!” 我只有转换话题:“我注意到你说南京四十三万尸骨,可中国官方只是说三十万人遇难,这是怎么回事?” “1946年9月,中国检察官陈光虞根据十四个团体的调查,向国际法庭提出‘南京大屠杀’确定的被杀害者为391171人,未确定者4至6万人。因此‘南京大屠杀’最少有四十三万人遇难。可南京市政府不知出于什么考虑,纪念碑上只刻了3 00000的数字。我不知道那屈死的十三万冤魂什么时候才能超升...” 我们陷入沉默。 “江先生,中国大使馆的人想请李涛先生过来一下。”黑田在远处喊道。 找我干什么?过去一看,原来是大使亲自到了。 “小李,日本方面希望我们协助解决危机,他们提出一个方案,希望我们找到江伟的母亲,通过她来作江伟的工作让他放弃行动。他们想通过你和C CTV的连线让他们母子见面。国内已经同意这个请求了。” “这...这样做,不就意味着拿他母亲来要挟他让他有所顾忌?会不会刺激他?而且...怎么帮日本人啊?” “小李同志!注意你的立场!我们怎么会用他母亲要挟他?我们是负责任的大国!这是国家的决定,是命令,你必须执行!” “除非现场直播,否则我不参加这次连线!”江伟听完我的转达后,沉默半天,咬着牙留下这句话,便再也不说什么了。 东京时间15时,几番磋商交涉,大使和日本方面终于同意直播。连线开始了。全世界关注此事的电视台都转用了CCTV的信号。 北京演播室。主持人和一名护士搀扶着老人就座。这是一个普通的北方老太太,衰老且虚弱,头发全白了,身穿一套崭新的浆得硬硬的棉袄,只是样式已古老得有些古怪了。岁月的沧桑全刻在她慈祥而又平和的脸上,脸色异常的苍白。 江伟摘下头盔,嘴唇哆嗦着:“娘,我连累您了...” 老人眯着眼睛,努力想看清屏幕上的儿子。 “儿啊,你好像瘦了。” “娘,我很好。您身体怎么样?血糖控制得好吗?”江伟极力让语调轻松。 “别担心我。我没想到你会做这样的事啊...” 江伟嘴唇咬得发白,不说话。 “去年你带着我去了好多外国,边治病边看西洋景儿,那日子多开心啊。” “娘,我还会带您去的...” 老人仿佛没听到,继续说着:“妈最大的心事就是没给你娶上一房媳妇儿,生几个大胖小子...这段日子你老不回家,我想你啊...” “我也想您,可...” “我做梦老梦见你带着媳妇回来看我...我没想到你会做这样的事啊...我也梦见你爹啦,我们一起回老家...” “娘,我这么做...” 老人已完全沉浸在自己的世界里,梦呓般继续说:“我没跟你说过,咱们老家可美了,那山那小河,那房子...你姥爷姥姥,你舅舅,他们都来接我了. ..真想家啊...回不去喽。” “娘,我跟您去。我从来没听您提过,我也想看看老家。”江伟眼中的泪终于流下来。 老人抬起眼,脸上泛起红色,话语变得清晰而急促:“回不去了。我十岁那年村子没了,亲人全死了,全村活下来的只有你爹和我。你爹拉着我钻在粪堆里才逃了命。 “儿啊,全村几百口人啊,全让小鬼子杀光了。我不和你说,是怕你心头恨呐,我没想到你会做这样的事,这都是天意,也是天理儿!” 所有人全呆了,谁也没想到老人会有这血泪斑斑的秘密。 “这里领导找到我,跟我说你干的事儿,要我劝劝你。我答应了,我是要好好劝你。这小鬼子是你江家的仇人!灭门之仇啊!” 老人越说越激动,脸色更红了。盯着上前想说什么的主持人,眼里竟闪出寒光,“我还没说完呢!” “儿啊,你这么做了,不愧是江家子孙。我老了,没几天好活了,你不要挂着我。能在死前看你给全村人报了仇,我高兴。我可以高高兴兴去见你姥爷姥姥,去见你爹,去见村里乡亲了,我和他们会在九泉下等着你. ..” 老人声音越来越低,脸上呈现出不正常的樱桃红,主持人和护士慌忙扶住,江伟急得大叫:“医生!快叫医生!” 老人微笑着摇头:“傻孩子,没用的...我刚才自己注射胰岛素,把二十天的全用了。儿啊,你没见妈把寿衣都穿好了吗?妈死也瞑目了啊。” 江伟五雷轰顶,扑通跪下。 演播室里乱作一团。老人任由人们围着她忙乱,始终死死盯着屏幕上的江伟,眼中满是慈爱和柔和的光芒,但这光芒正一点点黯淡,消失. .. “儿啊,妈真想你...” 信号中断。
第四章地狱里的哀嚎 我也跪下了,任脸上泪水奔流。 屏幕上出现了主持人,双眼含泪,哽咽着:“各位观众,由于发生特殊状况,直播现在结束。我们正全力抢救江伟的母亲...” 远处黑田大声发布着命令,士兵们如临大敌,严阵以待。 江伟动也不动地跪着,头顶着地,左手的遥控器无力地支在地上,空着的右手捂着脸,头盔扔在脚边。我脑子里飞快闪过一个念头:“狙击手的好机会!” 我来不及多想,扑上去跪在他面前挡住他的头。我轻轻的扶起他,这才发现他满脸泪水,双目血红,嘴张着,却一声也哭不出来。 强忍悲痛,我把他的头靠在我胸口的防弹背心上,轻轻在他耳边说:“你必须坚强!不能让老人死不瞑目!” 他浑身一震,撕心裂肺地喊道:“娘——”终于哭出声来。 萝丝从震惊中回过神来,在一旁对着镜头履行着她的职责:“谁也没想到一场充满亲情的见面会变成永别,但愿这不会让江伟按下核按钮。”她沉吟片刻。“我不能想象一个人能把心中的伤痛和仇恨埋藏六十年,我从没见过一个人的眼中包含着那么多爱和恨,我也不敢想象一个民族六十年的伤痛和仇恨一旦爆发出来是什么样子. ..我只能肯定一点,面对这样的母亲,面对这样的民族,日本,也许你应该反思!” 江伟静静地跪着,可我感觉到一股巨大的能量在涌动。我叹口气:“也许你不该给他们时间,这样你母亲也不会...死的应该是那个狗天皇!” 他抬起头,异样地看着我。我轻声提醒:“小心狙击手。这时你中枪我可不知道是该扶着你,还是让你倒下触动核弹。” 他凄然一笑,戴上头盔站起,无力地靠到车后。 我坐在地上。疲惫而悲伤。刚到现场时那种挖到大新闻的兴奋早已无影无踪,而幻想着一炮走红升职加薪的念头现在想想都觉得羞愧。心里满是一些沉甸甸的东西。 CCTV主持人沉重的宣布,江伟的母亲抢救无效。 我不顾一切拨通老编的电话:“你告诉那些官僚们!是他们的软弱逼死了一位伟大的母亲!是他们的鸵鸟政策逼死了一位可敬的老人!” “你冷静点儿,怎么说话呢!”老编气急败坏。 “我告诉你们,大不了我不干了,跳出你们这些条条框框,我要堂堂正正的挺直腰杆做中国人!” “你冲我嚷什么?别以为只有你是中国人!你看看画面!”我发现老编的声音突然嘶哑哽咽了。 画面上的北京街头,人们在电视前默默流泪。天安门广场,人群开始聚集。越来越多的人在胸前戴上了白花。 江伟仿佛对这一切无动于衷。 16点了,离最后的审判还有八小时。东京街头的骚乱渐渐平息,看来大部分人已疏散。军警开始挨家挨户搜索。 中国政府终于发布了一个书面声明。大意是中国历来谴责任何形式的恐怖行为,中国政府打击恐怖活动的努力从来没有停止过,对于这一事件,由于其特殊的历史原因,希望日本政府能妥善解决,并吸取教训,不要再做伤害中国人民和亚洲人民感情的事。同时呼吁全国人民,理智的看待这一事件,不要有过激行为。 值得注意的是,播报这个声明的CCTV第一新闻播音员,胸前别着一朵白花。 就像事前安排好的,中国的声明刚发布,日本首相出现在NHK镜头前。 “我代表日本政府对这一恐怖行为表示最强烈的谴责和无比震惊。日本政府和日本人民不会向恐怖主义低头,我们会采取一切必要手段解除恐怖威胁。但同时,我们正在和恐怖分子展开对话,希望尽可能和平解决危机。关于六十年前的战争问题,日本曾多次就日中战争给中国人民带来的不便表示歉意. ..” “别看了!我带你们进去开开眼界!”江伟不知什么时候站到我身后。 “黑田!我现在要胁迫这两台转播车和我一起开进这神社。里面不能有其他人,你的人更不许进入一步!”他看了看我们的转播车,又打量一下那门楼的门洞,“得请你帮个忙,派辆清障车把这门洞撞开一些。当然,我偷的这车经过我的改装也能胜任,如果你不担心震动核弹的话。” 他又恢复了懒洋洋的腔调。 二十分钟后,16:43时,我们三辆车大摇大摆闯入了日本军国主义的圣殿。 这里环境十分清幽,松竹苍翠,庭院一尘不染。我们停在模样古怪的正殿前。 江伟下了车,手里拎着一把消防斧,看来杀气腾腾。但出乎意料,他没进大殿,也不让我们跟着。殿后传来敲击声,一会他回来了,“我把这里的消防水管总闸解决了。” 他长出一口气,说:“我们进去!” “这里是‘灵玺簿奉安殿’,供奉着‘明治维新’以来250万为国战死者的牌位。日本政要甘冒天下之大不违而要前来参拜的正是这里。” 我们跟着他猛拍。“中国人恩怨分明,从来不会无故恨什么。像这里,是东乡平八郎,那边还有丰臣秀吉和伊藤博文等,他们同样是中国的敌人,同样打败了中国军队杀过中国人,可现在中国没有人恨他们。为什么?就像萝丝小姐说的,那是战争,他们手上没有沾满平民百姓的鲜血,虽然他们带给中国人深重的苦难。中国人真是很宽容的。” “可是这些,”他快步走了一圈,摘下十多个木牌,上面写着东条英机、松井、武藤等,“这些人永远不会得到中国人的宽恕!” “我来过这里三次,我能找到的只有这些。不知道日本政府究竟把多少侵华战犯的牌位偷放进来。” 他又领着我们去了“御本殿”、“拜殿”,手里又多了八九块牌位。 他把手里的木牌扔在地上,指着右侧的两层楼:“这叫游就馆,也叫宝物展示馆,来神社的人大多都会去此馆参观。这里展示了山本五十六的遗像、遗物,还有据说是二战时仅存的一面太阳军旗及日本自制的枪支等武器。我们进去把这破旗拿出来。” “这块石塔名叫‘武功伟业塔’,上有刻有‘皇运进展’、‘鏖战奋进’的浮雕,16面浮雕中有10面与侵华战争有关,又是‘奉天入城’、又是‘占领南京’。” 他让我们站远一点,从车上取出一大捆爆破索和炸药,开始围绕塔身布置炸药。 我兴奋得浑身战抖。 炸药安放完他将爆破索一圈一圈缠在塔身,同时将那些牌位也捆在爆破索上。最后,将那面残破的太阳军旗展开塞在爆破索下。 “现在这塔不再是‘武功伟业塔’了,而是历史的耻辱柱!这些战犯,如果他们有灵魂的话,将永远被钉在这历史的耻辱柱上!” 江伟拿出一个大可乐瓶,里面装满黑色液体。 “这是黑狗血,是中国民间最恶毒的驱鬼法宝,我要让他们永远在地狱里受煎熬,永远永远!” 他把狗血撒在牌位上、军旗上、塔身上。 一阵风吹过。大殿檐角的风铃发出哀鸣。风吹过树梢的呜咽声,在我听来,是来自地狱的哀嗥。 17:37分,“轰”的一声,牌位、军旗灰飞烟灭。而塔并没有粉碎,只是倾斜着,表面的浮雕被爆破索炸得支离破碎,只有高处还有一两幅稍微看得出一点原来面目。 江伟摇头。显然对此结果十分不满意。“怎么搞的,我还混进一家爆破公司学了三个月呢。” 看了一会,他仿佛自言自语道:“这样也好。总得给小日本留点纪念品,以后就让他们来参拜这‘历史的耻辱柱’吧。” 第五章我以我血荐轩辕 现实就是这么有趣,你如果老老实实依足规矩想对别人说什么,很少有人理你;可如果你以特别的不守常规的去说,比如刀架在某人脖子上,那么不但某人会老老实实听你说,连周围的人都会静静的听你说。 现在就是这样。全世界都在听江伟的声音,关注江伟的行动。 而且各地民间的反应也很有趣。 美国一历史教授:“江伟就像堂吉珂德,独力对抗日本军国主义这大风车,不过他手中不是长矛,而是代表正义和复仇的大炮...” 美国二战老兵:“...二战时,小日本战斗力很强,得使劲打,不然他随时会反咬你一口...这次要彻底打垮他!” 日本青年:“我不清楚发生了什么,恐怖分子说的那些名字我都不知道,只有东条好像是我们日本一个战斗英雄吧...” 犹太青年:“中国人真是善良。他们救过我们五万人民。但他们对待敌人的态度太宽容了,应该像我们一样,从来没有停止追杀战犯...” 韩国青年:“...要解决这个危机,我看只有日本天皇跪下谢罪。当年对着麦克阿瑟,每天请安鞠躬,现在再多跪一下也没什么嘛。” 而中国百姓的反响是复杂的。他们为失去一位伟大的母亲悲伤流泪,他们为江伟的行动震撼深思,他们更为战犯受到万劫不复的惩罚而高兴。北京已响起鞭炮声,而南京,所有车辆鸣响喇叭,鞭炮声此起彼伏。 江伟看着这一切,突然说:“你刚才不是问我这样做带来的后果吗?我们现在来谈谈这个问题。” 我们把镜头架好,而屏幕也切换到现场直播。 在我花天酒地空虚堕落的那段时光,我发觉我周围的人都如行尸走肉一般活着。他们不再相信任何理想和信念,只是唯利是图。当时我想,这个国家怎么了? “三年前,我开始策划这次行动。我的想法就是,如果这个国家已经没有了血性,没有了脊梁,那么我将用爆炸为这个古老民族留下最后的呐喊! “日本,不是我们最大的敌人。我们最大的敌人是我们自己! “我们的政府领导人平庸,这很无奈;我们的政党失去号召力,这令人心寒;我们的官员腐败了,这是危机的预兆;而如果我们每个人对一切都麻木了,如果我们每个人的热血都冷却了,如果我们每个人的精神都被金钱欲望腐蚀了,这才是最可怕的。因为这个民族的魂已经死了,这个民族的生命力已经枯竭。 “我记得一位作家说过:一个国家的未来,不是在于她有多么有力的政权,多么发达的经济,或者多么强大的军队,而在于她和她的人民所拥有的,是怎样的民族魂!” 江伟再次摘下头盔,凝视着镜头。 “我虽然改变了我的国籍,那是为了这次行动的需要。我始终是一个中国人。因此请允许我呼唤你们一声,我的同胞们。 “靖国神社是否能毁灭,我不关心;日本天皇是否会下跪,我不在乎;而你们,我的同胞们,还有我们的政府我们的党,如果你们能感受到一个普通中国人用心对你们发出的呼喊,而有所深思,而有所行动,这才是我最希望的后果!” 江伟说不下去了。 过了一会,萝丝字斟句酌的说:“您一个人要唤醒整个民族,您不觉得您背负得太沉重了吗?您是不是把自己当成了...救世主?” 江伟思索了片刻,“我没想过这个问题,也从来没想当救世主。也许你不了解中华民族,从屈原,到邹滔奋,我们从来不缺少用生命呐喊的勇士。也许有人认为他们是疯子狂人,可就是这些人,撑起了中华民族的脊梁!我不敢自比先贤,我只是做我应该做的。” 我们都不再说话。 18:34时。黄昏来临。晚霞在天边燃烧,一切渐渐笼罩在暮霭中,变得朦朦胧胧。 “咦?疏散完啦?小日本动作挺快...”我的一个伙计打破了沉默。 NHK的屏幕上,东京街头在黄昏中那么的凄凉冷清,已看不见平民,只有满地的丢弃物,和正在撤退的军车。 “疏散完了...不对头!”江伟脸色变了,戴上头盔,转身向运钞车冲去。 “什么...”我话未说完,只觉得什么地方“嗡”的一声闷响,我立刻觉得头晕目眩,而监视器同时变成雪花点。 我挣扎着想跟上江伟,刚冲出几步,只听见“噗”、“噗”两声轻响,两颗子弹准确命中江伟的头盔,冲击力使他扑到在地。 他艰难的站起,踉跄着继续扑向核弹。他的手握住了车门把手,又是“噗”的轻响,他的左腿上血花飞溅,他被打得单膝跪地。 我来不及细想,动作夸张地摔倒在他身上。第四声枪响,子弹穿过我的右臂,击中江伟的后背。但我的举动显然出乎狙击手的预料,他们犹豫了几秒钟。 就是这几秒钟,江伟已拉开车门,钻了进去。 他们失去了目标。 “全部停下!我的手指已经放在核按钮上!” 听到他的话,我松了一口气,这才觉得右臂火辣辣的。而我们周围,不知何时已出现了十来个幽灵一般的突击队士兵。 “你们的突击失败了!马上停止电磁干扰!退后!” 突击队员慢慢后撤。 监视器画面一个个恢复了,头晕也停止了,只是觉得恶心想吐。 “黑田!我知道你在指挥!叫他们留下两个急救包,马上消失!” 萝丝他们这才狼狈地从地上爬起,这次她可是花容失色了。我胡乱地裹好手臂,拿着急救包来到运钞车前,江伟开门接过急救包。 他坐在核弹旁,头盔放在一边,鲜血从头侧流下,染红了半边脸。而左腿的裤子已浸透血,车箱地板上也沾染了一滩。他苦笑一下,“我特别加强了这头盔,总算挡住子弹。这只是被破片划伤的。” 我这才看到头盔上凹下去两大块。“背后那一枪呢?重不重?” “你这傻瓜帮我挡了一下,加上三层凯夫拉,没射穿。不过肋骨可能断了一根。”他一边包扎一边说。“腿上就没那么幸运了,好在我定做了凯夫拉裤,要不骨头都得断。” 包扎完,他有些疲惫,毕竟流了那么多血。他闭上眼,喃喃说:“他们是早有预谋的,对我一忍再忍...提前疏散减少行动风险,用大功率全频电磁干扰使我的遥控和传感器失效,制服我后即使无法拆弹,也有时间运走,好计划啊. ..幸好他们没用12.7mm重狙,也许是怕当着两位大记者的面,把我打得四分五裂太过血腥吧,呵呵...哈哈...”他笑得那么开心,仿佛被打得四分五裂是什么可笑之极的事,直到一阵剧烈的咳嗽打断他的笑声。 我关上车门让他休息。 惊魂未定的萝丝在镜头前绘声绘色地描述刚才的一幕。 我已经没兴趣履行我的职责了。让我的同事去继续报道吧。 我靠着运钞车滑下,无力的坐在地上。在我眼前地上,是几滴飞溅的鲜血,在白色大理石上是那么殷红。就像傲雪绽放的红梅,那么的生机勃勃,那么的活力四射。 我不知道这是江伟的血,还是我的血。 我只知道,这是—— 中国人的血! 第六章 那一声心中的爆炸 一切重归安静。 监视器上各大媒体都以最快的速度播报着日本突击行动失败的消息。 联合国秘书长发表谈话,呼吁江伟放弃行动,通过和平的对话和外交手段来达到目的。最后,他敦促日本:“1948年,国际法庭由十四国法官宣判‘南京大屠杀’确实存在,并强烈谴责日本陆军的野蛮行为是无可原谅的;1 952年盟国与日本缔结和约,《和约》第十一条明确规定:‘日本接受远东国际军事法庭之判决,并将执行该法庭对日本国民之处刑。’日本政府签署了这一和约,表明其承认国际法庭审判的正当性和合法性,并接受判决。历史是不能忘记的,更不容抹煞篡改。希望日本政府拿出对历史负责任的态度,解决这一危机。” 19:27时。江伟出来了。他开着车门,站在门后。头盔上的弹痕、腿上渗血的绷带都令人心惊。他不敢离车太远。 “我宣布,由于日本政府试图以武力夺取核弹,以及考虑到我的伤势,我已经将起爆时间提前到东京时间21时整。所有军队、警察必须立即撤退。我们的直播也将告一段落,因为两位记者也要撤到安全地带才能继续工作。” 没有人感到惊讶。 萝丝走到江伟面前,握住他的手。“无论您的行动是否正确,您都是一个了不起的人。无论您的观点是否正确,您的声音不会被世界遗忘。”萝丝有点动情。 江伟改用英语:“离别总是忧伤的,谢谢你和你的评语。再见了。” 江伟转向我,等着我和他告别。我对他笑笑,转身看着我的同事们,“能和你们一起工作是我的荣幸。你们可以坐CNN的车离开,我要留下完成我的工作。” 车消失在神社门楼外。我送走了他们。虽然我的几个年轻同事也闹着要留下,萝丝也一再劝我离开。 雪亮的摄像照明灯只能照亮这诺大庭院的一角,光圈的中心是一辆运钞车,和一个受伤的人。我觉得有点冷。 我走近江伟,我决定留下后他还没说过话。 “我留下你好像并不惊讶。” “嘿嘿,我说过你是个傻瓜。” 我也笑了。 不知怎么我突发雅兴,四句诗脱口而出: “慷慨同仇日, 谈笑破虏时; 携手同赴义, 杀贼恨太迟。” “好诗!好兄弟!”江伟揽住我的臂膀。我不再觉得冷了,热血重新奔流。 20时整。周围已听不到人声。从NHK的画面看,他们的转播车也随着最后一队军车撤出了。方圆十公里只剩下我们两个了。 至少表面如此。 “我们得快!他们已经没什么好顾忌的了。打开你的摄像机,开车跟着我!” 我们逐个拜访三殿一馆。每到一处,江伟拉开车门手持一个自制的火焰喷射器,里里外外狂喷。 他左腿的绷带不停地渗血。我见他行动越来越吃力,想上去帮他。他拒绝了,“你继续转播,这是我的工作。” 靖国神社燃起了冲天大火。一切的罪恶,一切的丑陋,都在熊熊烈焰中呻吟,扭曲,倒塌。门楼点燃前,我们退出了这邪恶的中心。 门楼下半部分是坚固的砖石结构,只有上半部分的木结构在燃烧。我们停在门楼前。静静的看着江伟的杰作,静静的等待最后的时刻。 NHK的画面上,日本首相在说着什么。我俩都不懂日文,从画面下的英文字幕才知道,他愿意就六十年前日本的战争行为表示歉意,希望江伟不要引爆核弹造成生态灾难。那家伙边说边鞠躬。 “不见棺材不掉泪!可这样的道歉一点诚意都没有!”江伟冷笑,对着镜头说。 “日本,我对你们已经无话可说。只想请你们记住一段话。这是东西德统一时,德国总理科尔在国会的宣言:‘德国人承认历史是整体的,我们并未忘却历史中黑暗的部分。在本世纪,德国人犯了什么罪,给人类和各民族带来了什么痛苦,我们决不能忘记。不负起这个历史重担,我们便没有资格享受自由!’” 这时,CCTV的画面上,华灯初上的天安门广场已聚集了四、五万人。没有喧哗,他们只是静静地站在北京凛冽的寒风中。胸前插着白花,手中捧着一支小小的蜡烛。四、五万个小小的火苗,就像四、五万颗勃勃跳动的心。这些火热的心所围绕的,是我们的——人民英雄纪念碑! 我关上摄像机,痴痴的看着,感受着千里之外的祖国传来的心跳。 叹了一口气,我轻轻地说:“快结束了。”江伟不说话。他脱下已变形碍事的头盔,凝视着画面上的人民英雄纪念碑。 “结束前,我有两个私人的问题想问你。”我实在忍不住,打断了他的凝视。 他点头。 “你是怎么破解俄罗斯弹头的保护锁密码的?” 他笑笑:“还有一个问题呢?” “这样一个弹头在黑市上至少要一千万美元,你怎么那么有钱?嘿嘿,下辈子我好学学怎么赚钱。” 他出神地看着画面,好像忘了我的存在。 好一会儿,轻轻的,仿佛叹息一般的说道: “根本没有核弹!” 第七章 结束,是为了开始 他看着我。我此刻的表情一定可笑极了,他“咯咯”地笑出声来,最后哈哈大笑。 他的笑声突然停止,他的脸因痛苦而扭曲:“我如果有核弹,是不会给他们时间的,我娘也不会...” 我这才从梦中醒来,可笑地冒出一句:“你出老千!” 他对我苦笑:“是啊,这里面也有你的功劳。” “我原计划在8月15日那天行动,可俄罗斯核弹头的失踪让我提前了。你的报道非常详细,失踪弹头的照片、数据应有尽有,我照着仿冒一点破绽也看不出来。可以说,如果没有俄罗斯弹头失踪这个突发事件,我的这个骗局不会那么逼真和顺理成章,小日本会不会上当很难说。我不能等到日本投降日,就是怕失踪核弹被找到。” “那么辐射呢?那个日本专家...怎么日本人没怀疑?”我语无伦次。 “那个墨绿色的圆柱里和铁箱下面只是普通的烈性炸药。我花了三万美元,从东京国立医院放射科偷偷搞了点钴60的废料放在圆柱里面。那个起爆装置和传感器倒是货真价实,我用了几乎全部积蓄才搞来的。 “日本是唯一一个遭受过核爆炸的国家,他们对核弹的恐惧深入骨髓。一听有核爆炸,腿先软了,自己先心虚混乱了,哪里还管是真是假;即使有人有怀疑,还是要以防万一。这个计划如果换个国家,不会那么成功。” “那么...那么...就这么算啦?”我还是没有从震惊中恢复。 “你看这里,”他指着身后燃烧的靖国神社,“这是一颗无声的核弹,在日本军国主义分子和日本人心中爆炸!” “你再看这里,”他指着天安门广场上的人群,“这也是一颗无声的核弹,在我的同胞们心中爆炸!” 我努力思前想后,渐渐露出会心笑容。 “好一个惊天的骗局!好一个无声的核弹!” “我们的时间不多,是时候揭开谜底了,我也该谢幕了...” “你想...不!你不要死!现在你也不用死...” 江伟神色黯然的摇了摇头,“我什么都计划好了。可我没想到我母亲...” 我急得口不择言:“现在周围十公里只有我们俩,这是你的机会...你要求中国人为了祖国行动起来,可你呢?不错,一死了之,你青史留名。可你看看天安门广场上你的同胞,他们在思索在行动,你却要逃避!你母亲牺牲了,可你的祖国母亲还需要你. ..” 江伟深深地看着我,一言不发。 门楼上部建筑开始倒塌。可下半部分仍然完整。 江伟转过身去,叹口气,“你让我把我的使命完成吧...炸了这最后的堡垒,再来向世界宣布核危机的解除。” 他让我撤到二百米外的停车场。 我架好摄像机,开始进行最后的直播。 长焦镜头中,我发现江伟已将身上臃肿的防弹衣裤脱下。他身着黑衣,修长挺拔的身躯在烈火的映衬下,摇曳缥缈仿佛天神,浴火的复仇之神! 由于逆光,我看不清他的脸,但我分明感觉到他的目光在注视着我。 他向我一挥手,回身上车。 20:39时。江伟驾车冲开门楼前坠落燃烧的瓦砾,消失在门洞里。 我已无泪。 我知道这也许就是永别,他也许不会再出来,可我无法阻拦他。 他的死能让一个古老民族浴火重生吗?我不知道。 已经快三分钟了,江伟还是没有出现。 空中巨大的呼啸声突如其来,我毫无防备。脑中刚反应过来是战机低空突袭,一串火球从神社门楼中升起。 冲击波把我高高抛起... 失去知觉前的一刹那,我像看无声电影一般,看着巨大的火球,由太阳般的白色,变成血红,最后变成一团黑色的火焰... 相传古时候有一只神鸟。 在她生命枯竭的时候,身上的羽毛会变成火焰。 黑色的火焰。 而她,将会在黑色的火焰中得到重生。 凤凰的涅盘。
七天后,2005年4月5日。清明节。 按民俗,是江伟的“头七”。 我溜出医院。走在黎明前的北京街头。 我是第二天才醒过来。日本方面对我进行了三十多个小时的盘问,虽然他们挺客气地称之为了解事件细节。 他们曾制定了几十个行动方案,但都不能万无一失而放弃了。最后时刻才下决心放手一博,出动了两架“雷电”,发射了四枚铝热剂高爆燃烧弹。 我告诉他们根本没有核弹。他们没有我想象中的吃惊,神社废墟已经被搜索了很多遍了。但是他们的脸上分明写着失败和沮丧。 我没有问他们江伟的下落。我不想让他们看到我脸上的悲伤。 我要求回国。中国大使馆这次强硬得出乎我的意料,几乎是把我抢了出来。 电视、报纸都在继续报道这个事件。靖国神社已不复存在。废墟的清理仍在继续。由于铝热弹的威力,砖石成为粉末,运钞车也熔成一块块废铁。日本宣布,恐怖分子已被烧死,并公布了防弹衣碎片的照片。同时还吹嘘,日本成功地解决了恐怖威胁,现场未发现核弹和核污染。 清明节。我走在黎明前的北京街头。 我胸中的酸楚不断弥漫。 我想念我们的国旗,我想念我们的人民英雄纪念碑。 我来到天安门广场。 这里,我们共和国的心脏,已经是白色鲜花的海洋。白色鲜花中,肃立着几万中国人。 他们有的已经守候了一夜,有的从天南海北赶来;他们有的臂缠黑纱,有的胸佩白花。更多的人还在涌进天安门广场。 他们,血仍未冷! 东方出现曙光。 国旗护卫队迈着铿锵的步伐,走过金水桥。 跟在他们后面的,是胸佩白花的共和国元首和第四代领导集体。 雄壮的国歌声中,第一缕阳光照亮冉冉升起的国旗和人民英雄纪念碑。 透过朦胧的泪眼,我看到纪念碑上熟悉的大字—— 人民英雄永垂不朽! 尾声 大事件已过去了将近一年了。 中国依旧持续而平稳地发展,人们依旧忙忙碌碌。 中国发展的脚步,明显感觉得到多了一份坚毅和果敢。 我没有辞职。 我成为了大牌名记。我要求留在国内。 我把我的关注投入到贫困山区,我把我的镜头对准造假窝点,我把我的追踪指向贪官污吏。 大事件还给我带来了一个东西:普利策新闻奖。 我没去领奖。 CCTV直播了颁奖仪式。当屏幕上老编代我上台时,我的手机响了。 没有来电显示。 “怎么不去领奖?你这傻瓜...” 怒发冲冠,凭栏处、潇潇雨歇。拾望眼、仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。莫等闲、白了少年头.空悲切。靖康耻,犹未雪。臣子恨,何时灭?驾长车踏破,贺兰山缺。壮志饥餐胡虏肉,笑谈渴饮匈奴血。待从头、收拾旧山河,朝天阙。 |
|
在HTML中傳送中文到Flash研究
|
在HTML中傳送中文到Flash研究
在HTML中傳送參數到Flash,常用的方法有兩種:路徑參數(foo.swf?par=123)或FlashVars(<param name="FlashVars" value="par=123" />),參數又可以再分為是否URLEncoded;對於傳送中文,又再分為非Unicode(Big5/GB2312)和Unicode。最後IE和Mozilla處理上又有分別,換句話說,總共有2*2*2*2=16種可能性。
再加上SWF格式為Flash5或以前,Flash是用使用者系統編碼處理中文(非Unicode),Flash6或以後,Flash是用Unicode處理中文。因此,在HTML中傳送中文到Flash,看似很簡單的事,其實包含很多複雜的變化。(16*2=32種可能!!)
在新技術湧現的時代,要將參數傳送到Flash,可以用LoadVars、XML、Flash Remoting和Web Services等,但是在非Browser和連線的環境下,例如嵌入裝置、Flash嵌入其他程式和Server-side的Flash執行環境,仍然需要靠「路徑參數」這方法傳送參數到Flash。
以下講解會以Big5和Unicode為例,比較處理非Unicode和Unicode中文的分別,對於GB2312處理方法,跟Big5相同。第二,例子會用一個中英文混合句子來示範:
可以支援非Unicode的URLEncoded中文了!
Big5 URLEncoded為:
%A5i%A5H%A4%E4%B4%A9%ABDUnicode%AA%BAURLEncoded%A4%A4 %A4%E5%A4F%A1I
UTF-8 URLEncoded為:
%E5%8F%AF%E4%BB%A5%E6%94%AF%E6%8F%B4%E9%9D%9EUnicode %E7%9A%84URLEncoded%E4%B8%AD%E6%96%87%E4%BA%86%EF%BC %81
路徑參數
一個SWF格式為Flash6或以後,以路徑參數傳送中文,有以下結果:
Big5: debugTxt.swf?inTxt=%A5i%A5H...
Big5: debugTxt.swf?inTxt=可以...
UTF-8: debugTxt.swf?inTxt=%E5%8F...
UTF-8: debugTxt.swf?inTxt=可以...
Unicode當然沒有什麼問題,只是Big5 URLEncoded會出現亂碼,在Mozilla情況更壞,無論是否URLEncoded,都是亂碼。
Big5: debugTxt.swf?inTxt=%A5i%A5H...
Big5: debugTxt.swf?inTxt=可以...
第一個本能反應,當然是在Flash裡加上
System.useCodepage = true;
打開swfpath\original\debugTxt.fla看看,其實早已加了,但不起作用。因為所有參數都是在任何ActionScript執行前,已經進入了Flash,所以Flash是用Unicode去解碼這些URLEncoded的Big5,結果發生亂碼。
解決方法,當然是使Flash預設不是Unicode解碼,怎可能?將SWF發佈成Flash5就可以!Flash5的SWF只是一個加載器,主要用作接收參數,然後將真正的Flash加載到_level0,並傳入參數,這樣真正的Flash已經完全取代了Flash5的SWF,只要Flash Player是6/7,仍然可以執行Flash6/7支援的ActionScript。
loadMovieNum("debugTxt2.swf?inTxt="+inTxt, 0);
不過,唯一要留意,由於Flash接收時已經將參數URLDecoded,再傳入真正的Flash時,也是用Unicode去接收/解碼Big5的參數,仍有危機出現亂碼,因此應該將參數兩次URLEncoded,變成普通的英文字元:
loadMovieNum("debugTxt2.swf?inTxt="+escape(escape(inTxt)), 0);
到了真正的Flash時,先解除Flash預設的Unicode解碼,才去URLDecode接收的參數:
System.useCodepage = true; debugtxt.text = unescape(inTxt);
[範例下載]
FlashVars
改用FlashVars傳送參數,無論IE/Mozilla,只有Big5 URLEncoded會出現亂碼,其他Big5 URLDecoded, UTF-8 URLEncoded/URLDecoded都是正常:
Big5: debugTxt.swf?inTxt=%A5i%A5H...
Big5: debugTxt.swf?inTxt=%A5i%A5H...
用剛才方法去解決,結果出現了亂碼:
Big5: debugTxt.swf?inTxt=%A5i%A5H...
Big5: debugTxt.swf?inTxt=%A5i%A5H...
在Flash5的SWF進行URLEncode時字與字之間多了%C2:
%C2%A5i%C2%A5H%C2%A4%E4%B4%A9%C2%ABDUnicode%C2%AA %C2%BAURLEncoded%C2%A4%C2%A4%C2%A4%EF%BF%BD%C2%A1I
因此在真正的Flash,要將%C2弄走才進行URLDecode:
System.useCodepage = true; inTxt = unescape(inTxt.split("%C2").join("")); debugtxt.text = inTxt
遺憾的是,有一些字元,在FlashVars傳到Flash時,已經被破壞了,最後仍然是亂碼,例如「文」字:
Big5: debugTxt.swf?inTxt=%A5i%A5H...
Big5: debugTxt.swf?inTxt=%A5i%A5H...
[範例下載]
URLEncoding其他參考資料
Flash TechNote - URL Encoding: Reading special characters from a text file
本文章由luar發表。 |
|
flash as
|
//mc大小 變代函數 var xscale:Number = 0; var yscale:Number = 0; var scales:Number =100; function MCScale(mc_name:MovieClip, w:Number, h:Number, speed:Number) { mc_name._width += speed*(w-mc_name._width); mc_name._height += speed*(h-mc_name._height); if (mc_name._width>=w && mc_name._height>=h) { delete _root.onEnterFrame; } } //mc大小彈性變代函數 function MCflex(mc_name:MovieClip, r:Number, speed:Number) { xscale = xscale*speed+(scales-mc_name._xscale)*r; yscale = yscale*speed+(scales-mc_name._yscale)*r; mc_name._xscale += xscale; mc_name._yscale += yscale; }
//============================
img_mc.onEnterFrame = function() { this.useHandCursor = false; this.onRollOver = function() { scales = 115; }; this.onRollOut = function() { scales = 100; }; MCflex(this, 0.2, 0.9); };
//==========================
_root.onEnterFrame = function() { MCScale(bg_mc, 770, 300, 0.08); };
<SCRIPT language=JavaScript>
var filename="123.gif";
var uid="123";
document.write("<A href='user_uploadfile.asp?del="+filename+"&userid="+uid+"'>"+filename+"</A><br/>");
//for(i=0;i<10;i++){
//document.write("<A href='user_uploadfile.asp?del="+filename+"&userid="+i+"' id=a"+i+">"+i+"</A><br/>");
//}
//for(j=0;j<10;j++){
//c=eval("a"+j);
//c.click();
//}
</SCRIPT>
|
|
一个中国特种兵的故事!
|
老蔫儿是个普通的中国男人,人过中年,头发花白。谈起老蔫儿认识他的人都语含同情,老蔫儿的日子过得很辛酸。 为什么呢?老蔫儿这人太老实,中国人的温良恭谦让在他身上发挥到了极致,所以他 也就有了这个绰号。老蔫儿蔫在何处?比如说单位分房子,他多少年前就该分到了,可他 从不争取,名额也就让别人给抢了去。被抢了,他也不生气,笑说道:“人家比我更需要 吧!” 于是老蔫一家三口到现在还挤在鸽子窝似的单位宿舍里,每每想到此处,他的那些同事只能哀其不幸怒其不争,叹道:“老实人呐!” 但老实人也曾有过一段被人羡慕的日子——他娶了个漂亮老婆,让所有认识他的男人都郁闷了把,“咋被老蔫给娶到了呢?” 但令人扼腕而叹的是:倒霉鬼常是老实人,老蔫的老婆给老蔫生下个漂亮女儿没几年就出了车祸,唉,一向乐观的老蔫从此也就没了笑容。 看到这,诸位可能就有了疑问:他家怎么是一家三口啊,难道老蔫又娶了?现在这社 会哪个女的愿意嫁给这么蔫的老实人呐!再说了,老蔫这孩子厚道着呢,再娶他压根没想 过。 那第三口是谁啊?老蔫的姐夫。对于这个姐夫,老蔫也摸不着头脑,他就没听自己老 婆提过有什么姐姐,可这姐夫来的那天,自己老婆就是叫他姐夫的,随后躲到房里哭得涕泗滂沱。 老蔫的悲惨日子也就从那天开始的,他老婆在上街给姐夫买酒的路上出了车祸,本来 该是老蔫去买的,可两人抢着去的时候,老蔫老婆的眼泪禁不住又流了下来,老蔫心一软 … 老蔫是个老实人,他总觉得自己配不上老婆,自己亏欠老婆太多,他也就时常在心中 懊悔:“那天我去该多好。”每每此时老蔫常蹲在自家门口前望着远方,在某一刻他的意 识或许回到了那天,潜意识里他应该渴求着奇迹的发生,但冰冷无情的事实花白了老蔫的 头发。老蔫老婆临出门前交待的那句话:“照看好菲菲和姐夫。”便时常回响在老蔫耳边了。 老蔫也就不苟的执行着老婆的最后一句交待,以作为自己对老婆的补偿,希望在心中 寻得份安心和慰籍。 ※※※ 老蔫的姐夫也就住了下来,照中国传统的说法,老蔫的姐夫对老蔫来说就是颗灾星, 要不是这所谓姐夫的来到,要不是这所谓的姐夫爱喝酒,要不是…老蔫的老婆也不会就这么去了。 但老蔫并没怨恨他姐夫,因为他是个老实人,而且他并不笨,他看得出来姐夫比自己 还要伤心,再看自己妻子看见姐夫的反应,老蔫便猜出姐夫和妻子肯定有什么伤心事瞒着自己。 伤心事加伤心事,换谁也不好受啊,所以老蔫一直怀疑姐夫精神上有问题,否则怎么 会一天到晚没事就傻坐在那呢,一坐就是个十几年,害得家里一切开销都得靠老蔫那点工资,日子过得倍苦。 日子就这样熬了过来,菲菲也快高中毕业了,出落得比她妈还漂亮,打小想对她动歪 主意的坏胚就不少,但让老蔫欣慰的是精神失常的姐夫派上了用场,菲菲上学一直就是姐夫接送的,只要菲菲尖叫一声,壮实的姐夫就跟影子一样刷得声出现,学校的老师看菲菲都是一脸的敬畏,都以为是哪位大老板的女儿。24小时有专人保护。 有时老蔫常常疑惑:姐夫精神未失常前到底是干什么的?咋就跟中南海保镖一样呢! 但最近老蔫也郁闷了起来,厂里决定下岗一批工人,第一个就是好处从不想苦活就他 干的老蔫,这样一来,菲菲的大学是肯定上不起了,再过几星期估计家里锅都揭不开了,唉…老蔫蹲在家门口叹气着。 快吃晚饭的时候,姐夫回来了,但与往常不同的是菲菲并没一起回来,“菲菲同学聚会去KTV 唱歌,叫我先回来。”说完,姐夫便进屋呆坐着去了。 老蔫摇了摇头,姐夫被菲菲使唤得言听计从指哪打哪,就跟一佣人似的,唉,天底下竟有这样的姨父和侄女!老蔫在心中叹道。 太阳渐渐告别地平线以上,老蔫有点着急了,“管不住的儿子看不住的女儿,唉,又玩疯了不是!”老蔫蹲着自语道。 “…叔叔,菲…菲出事了。”菲菲的闺中密友上气不接下气的跑了过来。吓得两个男人立马慌了,老蔫都哆嗦了起来,“怎么了,到底怎么了?” “我们在KTV 唱歌,有一帮小痞子过来调戏菲菲,我们班的几个男生上去阻拦,结果被痞子打伤了,菲菲气坏了便打了为首的一耳光。” 姐夫的脖子都粗了起来,一把抓住那女生摇晃着问道:“菲菲现在怎样了?” 吓得那小女孩欲哭道:“被他们堵在包厢里了,为首的那个好像是市委书记的儿子, 据说还是个***.” 听到市委书记这四个字,老蔫的腿就开始发软,似乎都站不稳了,口中念叨着:“这 可怎么办,怎么办…” 在老蔫没了主意的时候,老蔫的姐夫已冲了出去,等二人跟着出去,却眼见着姐夫的身影消失在远处。 ※ ※※ KTV房。学生们早已不在,估摸着找人的找人去医院的去医院了,老蔫的姐夫迅速的一层层的找将开来,很快,他便看到七八个黄毛绿毛嬉笑着站在一个包厢外。 走近,便听到一个熟悉的声音在喝骂:“放开我…”“给我让开。”老蔫的姐夫喝道。 黄绿毛们讥笑的看了他一眼随后放肆的笑骂了起来,“老东西,瞎狗眼了。”接着又是一阵哄笑。 看到老蔫的姐夫不吊他们,说话的那位又开骂了,“老…”但他没说完就发现自己半 边脸开始麻木了起来,口腔中也好像少了一半什么,当他倒地的时候,才发现自己的一帮哥们全在地上躺着呢。 老蔫的姐夫也没干什么,只是用脚一人赏了一耳光。 嘭的声,包厢门被踹开。一股烟酒之气扑面而来,老蔫的姐夫皱了皱眉头。本来撕打着一对男女停了下来,女孩看见来人不禁哭了出来,“姨父。” 此时的老蔫的姐夫被这声姨父弄红了眼,他这姨侄女从小就没受过半分委屈,更何况 像今天这样子被人欺负,一天天看着菲菲长大,她出落得很像她的姨娘,一想到菲菲的姨娘,他感到自己又回到了那个战火纷飞的年代。 在老蔫的姐夫出神的那刻,市委书记的0儿子一把扼住了菲菲,菲菲的尖叫把老蔫的姐夫拉回了现实。 当看到菲菲被人扼住几近无法呼吸,他的血液加速了也加热了,他已经有点无法控制 自己的愤怒了。他似乎看到是菲菲的姨娘在被人扼住。 “放开她。”老蔫的姐夫有点歇斯底里的喝道。那人紧张之下竟拔出了把枪。当看到 枪指着菲菲的时候,愤怒彻底的燃烧了他。 可能是由于一直以来的张狂,市委书记的儿子并未觉察到危险的逼近,一时事情的突 发,他根本没来得急注意到门外躺着的那一堆混仔。 “操,哪来的老东西,坏你大爷的好事。”说着扬着手中的枪,按他往常的经验,正 常人看到枪都得吓趴下,他以为已镇住了那个闯进来坏了自己好事的中年人。唉,只可惜 包厢里太黑了,再加上浑浊的空气使他晕乎乎的,事实上他才是应该被镇住的。如果他能 看清老蔫姐夫脸上的神色,他的这辈子就不会这么毁了。但历史从不用如果这两个字。 就在他扬来扬去的那刻,他感到自己的手好像被什么打断了,手枪也掉在地上了,当 他醒悟过来的时候,两腿膝盖传来剧痛,接着他便看到那中年人的脚如蝴蝶翻飞般的在他身上踢着,踢得煞是好看,可惜伴奏的是自己骨节碎裂声。 此时的市委书记公子才看清对方的神态——霸气横溢,骇得他连忙后悔自己刚才眼瞎,可已与事无补… 菲菲没敢回头看那色狼,她爹不知道姨父的脚力,她可是见识过,碗口粗的树那都是 被一脚扫断,踢人身上不废也得残。 老蔫的姐夫拉着菲菲回了家,他似乎什么事也没发生过,没有焦虑没有担忧。 “姨父,他不会死吧,他万一真是市委书记的儿子怎么办?”看到姨父并没理她,那位被称作菲菲的女孩无奈下撅起了小嘴,担心了起来。 ※※※市第一人民医院高干病房内,一堆人围着个病人。 市委书记铁青着脸望着他半昏迷的儿子,手上青筋暴起,此时的他已经被怒火燃烧, 他无法想象到底是谁那么有种敢在自己治下废了自己儿子。 看着市委书记凶冷的眼神,医院院长焦急的小声对着一个医生命令道:“快看看去,董老怎么还没来?” 就在此时,门被推开,一个白头老者在别人搀扶下蹒跚进来,院长看见老者迎了上去,市委书记脸色也缓和下来。 老者没搭理二人,径直走向病人,当看见病人的伤口时,老者发现了什么的珍宝似的,眼中露出惊喜的光芒。 老者慢慢流下了眼泪,喃喃自语道:“五十多年了,没想到临死前,我还能看到柳派 谭腿踢出来的骨伤。” 老者抚弄着伤口,欣慰着念道:“没失传啊,这脚力…”老者嘴里发出啧啧的惊叹声, 全然不顾旁边人的焦急。 医院院长看着脸又阴沉下来的市委书记,心中暗叫不好,凑到老者身边,“董老,您看这伤…” “这伤,没三四十年的功底踢不出来,想来中国现在能踢出来的不会超过这个数。” 老者竖起五个指头。 “是个什么样的人踢伤的?”老者问道。医院院长望着市委书记支支吾吾说不出来, 市委书记却是等不及,生怕再拖沿下去,他宝贝儿子就废在那了,回道:“是个中年人。” 听到这话,老者一直昏暗着的眼睛亮了一下随即暗淡下来,“我知道是谁了。”接着就向门外走去。 院长一看就急了,“董老,你这是?”老者语气中实起来,“这伤是我一位故交踢的, 我知道他的为人,不为点事,他不会踢这么重的。所以这伤我不能治,你们另外请人吧。” 院长一听更急了,直接拉着老者袖子,“董老,董老…”老者不客气的拂开院长的手,回到病人的面前。 院长和市委书记提起来的心又松了下来。“这年轻人,身体早被酒色掏空了,就是做 了手术,也恢复不了,就是恢复得了他还得过以前的酒色生活,这样一来也挺不了几年, 就这样躺着反能活到60开外。”说完,老者又要开走。 这次市委书记也急了,“董老…”可怜兮兮地望着老者,老者回望了他一眼,长叹了 一口气,“我老了,像这种手术已经没精力做了也没胆量做了。”接着推开门,走掉。 再接着,高干病房里一阵东西摔砸声。 那个董老是刚从北京回来养老的,以前可是只给首长看病的,中南海的路比谁都 熟,强横如一省省委书记也奈他不何。 这位市委书记也只有含血吞了断齿,但他绝不会咽下这口气的。他把碰壁的怨气全发 在那个踢伤自己儿子的中年人身上。 市委办公室里。 “给我把李四找来。”市委书记对着电话另一头命令道。一旁倒茶的秘书听了愣住了, “那可是市里出了名的杀神,一人追着十几个人砍的狠角,那人没事惹市委书记儿子干嘛, 唉…”秘书在心中叹道。 ※※※是夜,老蔫厂子家属区门前停下辆面包车,七八个彪型大汉跳将下来,提着砍 刀便向家属区里面冲,门卫探出头看了眼,看到这架势连忙缩了回去。“哎呀我的妈呀, 不知谁家要倒霉了。”赶忙拨了110 和120. 此时,老蔫和菲菲正在家中发愁呢,万一真是市委书记儿子,那可怎么办,就是不是, 那医药费也赔不起啊。可把老蔫愁得一佛出世二佛生天。 老蔫瞅了眼他姐夫,他姐夫没事人样的呆坐在那,“精神出问题就这好,出再大的事, 他也不会觉得有啥可担心的。” 就在三人干坐着的时候,门被踢开了,光看到为首的那张脸,老蔫的魂魄就飞得差不多了,那位刀疤从眉角一直拉到下巴,一看就知道绝非善类。 就在老蔫绝望的感到末日来临的时候,他发现为首的那位从一脸杀气腾腾转为一脸诚 惶诚恐,“师叔,是您老呐!”这话可把所有人吓得不轻。 直到那帮流氓走了许久,老蔫神还是没回得过来,他第一次感到自己得重新审视自己 姐夫了,菲菲则是用敬仰的眼神看着自己的姨父,她可认出为首的那位是传说中的徐四了, 看到全市最出名的流氓头子见自己姨父都毕恭毕敬的叫师叔,她唯有用敬仰的眼神看着自 己的姨父了。 当徐四一帮人走到家属区门口时,110 也到了,领头的*** 拉开车门笑说道:“请吧, 徐四什么事犯得着你亲自动手啊。” 徐四一脸的讪笑,“今天可没砍人,到一朋友家坐坐而已,不信,您自己进去看。” 看到120 车空手而回,*** 们知道没出事,“去哪儿啊,要不我顺道载你一程。” 徐四陪笑道,“我带车来了,您那车坐多了,我晦气。” 为首的*** 也笑了,“嘿,你小子还挺讲究的啊。”警车和匪车绝尘而去,扔下门卫 在那郁闷着,“咋就没砍成呢?” 市委书记在办公室里来回踱着,焦急的等待回音。 铃声响了下,是短信,秘书知趣的拿起手机,“是徐四的,他说要砍的是他的师叔, 他不能砍也不敢砍,劝您就这么算了,否则玩到底吃亏的只能是你。” 秘书把手机递给了市委书记,市委书记接了过来,一把扔了出去,“放他娘的屁!” 面包车内。 “四哥,那人没多大啊,真是你师叔?”徐四颤抖抖的点起根烟,“你们说我能打吗?” 旁边人回道:“谁不知道你四哥是我们市最能打的啊,一人砍十几个的主。” “你们见过我怕过什么人没?”“没,道上没听说过谁敢跟你叫板的,就是公安局长 见你还得客气点打招呼啊,您怕过谁啊?”另一人回道。 徐四长吐了口烟气,“刚才我被吓得腿都发软了,差点跪下。”车厢里人都乐了, “四哥,你就别忽悠我们了。” “忽悠你们做啥,当年我见到他的时候,都尿裤子上了。”徐四说得一本正经的,其 他人来兴趣了,“四哥,给讲讲。” “知道胡司令吗?*** 时市里最吊的那个zfp头头,号称铁手铁胳膊,碗口粗的石 柱子一撸就断了,那才叫真功夫。”众人听得一脸神往。 “知道胡司令这功夫哪学来的吗?”众人听得更起劲了。“你们出道晚,砍砍人就算 混开了,我出道那会得拜师,别以为这师没拜头,那时候道上的人的功夫都是跟自己师傅学的,所以那时候尊师啊。” “所以道上也就讲究辈分,见了前辈得行礼,否则,就别再想在道上混,我们这城里 当时道上的都是清帮一脉,清静道德、文成佛法、能仁智慧、本来自性、圆名行理、大通俗学,那都是按辈来的。” “四哥,那你什么辈分啊?”“俗字辈,胡司令也是,嘿,我们俩一个师傅带出来的, 我入的迟,没学到什么师傅就翘了,我只好跟着胡师兄混。” “我师兄那时候道上名头响,绰号胡铁臂,附近几个市老青帮的都知道我们市出了个 胡铁臂,我师兄那时候好不威风,可他也有怕的人。”众人露出不可置信的神色。 “那时候,城里有一老头,清帮的,辈份可真高,大字辈比我师傅还高一辈,我师傅 在的时候我师兄那功夫已经练出来了,我师傅一再告诫我师兄不要去惹老头,我师兄哪听 得进去,我师傅没办法就把老头的事情讲给我们听了。” 那几位听得张大了嘴巴,全神贯注的听着生怕漏了一个字。“那老头真是吊得不得了,年轻的时候号称清帮第一打手,知道清帮第一打手这几个字份量吗?那可是用上千颗人头 堆出来的,上千颗人头呐!”徐四说得自己长虚短叹,唉,谁听了不感叹呢? “你们是不是疑问老头怎么来我们这了?”众人点头。“我师傅跟老头关系还不错, 老头也就谈了些过去,当年*** 一位高层落到了日本黑龙会手里,落到黑龙会手里可比什么地方都难弄出来了,*** 的高手一时调不过来,便找到了老头。” “老头一出手,嘿,日本那些黑龙会高手只配舔鞋底,人是肯定救出来了,可老头在 救人的时候撞见黑龙会的人在做些禽兽都做不出来的事,可把老头火的。杀了个回马枪, 杀光了,整整黑龙会一个分部啊,七八百号人,一晚上杀的半个也没留。” “听说日本猪们赶来的时候鬼嚎了半天,黑龙会的头们自己切自己切了一大半, 嘿,被杀的里面据说有一个日本大官,嘿,他们也有今天,哈哈…” “然后就是疯狂追杀啊,还好老头的儿子和儿媳被那个高层带走了,老头也就带 着孙子隐居在我们这了。” “听完后,我师兄再也不敢提去会那老头了,不敢也没了那心了,那老头可是民族英 雄级别的,再流氓的痞子他也是中国人啊,他也懂爱国。我师兄也就没再混了,安心当了个工人。” “四哥,后来呢?”旁人追问道:“后来就*** 了,我师傅和老头*** 前就相继翘了, 我师兄也就熬出头,那时候乱,派别林立,我便跟着我师兄混出了些名堂,成了市里最出名的一帮造反派,能打嘛!”徐四说到这的时候,脸上露出了些自豪。 “可我师兄真不是个好胚,得势便张狂,那时候乱,他又色, “我师兄也就犯下了些伤天害理的事,照例说没人管,可老头的孙子听到了些传闻, 便捎话给我师兄了,叫我师兄收手否则他出来清理门户。他是通字辈,按理说是我们长辈 是我们师叔。”徐四叹了口气,又说道:“我师兄哪听得进去,一毛孩子,能有多大能耐 啊。我当时也这么想。” “唉,又过了些时日,一天我师兄瞄上一女孩子,那女孩子可真漂亮,我这辈子再也 见过有这么漂亮的女人了,钱市长那中戏毕业的儿媳漂亮吧?” “漂亮、漂亮。”那几个连忙点头称是,并在脸上露出不怀好意的笑容 “嘿,跟那女孩比,那就是一乡下柴禾妞,那就是一泡牛大便。”徐四陷入回忆的迷 茫。 “当把那女孩抢到总部的时候,那女孩倒也没惊慌,她很镇定的告诉我师兄她 是那个老者孙子的女朋友,在帮里这可是大忌,可*谁还管帮里的规矩啊,但我师兄 一开始也没敢动手,关键那女孩的气质,让人看了不忍侵犯,就跟一仙女似的。”徐四的 嘴角抽搐了两下,接着长叹口气。 “现在想来,我那师兄真浑啊,那么好的女孩他都忍心去侵犯,我也是一混, 我怎么就上去搭手了呢。”徐四一脸的羞愧,说得那几个孩子也一脸羞愧,都没干什么好 事过。 “就在我们扒那女孩衣服的时候,那少年来了,一个人,还没带家伙,当时那地方我 师兄的人足足有两百多,每人手里都操着家伙。” “当时我们在二楼,我师兄叫我去窗口望着,他自己动手,我就站到了窗口一边望着我师兄一边望着楼下,当那少年动起手来我就没再回望我师兄,因为我不敢相信发生在我 眼前的那是事实。” “两百多人,唉,就跟沙包样一个个被踢飞,都是一脚,踢哪地方的都有反正结果一 样,没见有起来的,太快了,根本都没来得及有反应,当时感觉就眨了下眼,人全趴下了。 到最后就剩下个两米多高的东北汉子守在楼梯口,那汉子近四百斤重提着根碗口粗的铁棒,平常几个人推都推不动,唉,就一脚,铁棒和人一起弯了、飞了,撞了进来,当时 我就尿裤子上了,瘫倒在地。当时我还望了我师兄一眼,嘿,才扒了一件衣服下来。“ “唉,什么铁手铁胳膊,当我们抬着我师兄去医院的时候,医生直接问是不是被压路 机碾过了,全碎了,粉碎粉碎的那种。”众人听得一脸骇然,有两位口水都出来了。 “当时听说市委书记儿子是被踢伤的,我心里就犯难了,生怕再碰到他,唉,可惜碰 到就是他,你们说我能怎么办,我出来的时候冷汗都把内衣湿透了,还好进去的时候看了 眼,否则我们再去百十号人也得全折在那。” “不信,摸摸我内衣,还湿着呢。”徐四长吸了口烟,扔掉烟蒂。“给道上放话吧, 别去惹那一家子,特别是那帮被打的小子,谁再动那女孩一下子,我就挑了他手筋!” 不到两天,老蔫姐夫的故事传遍了整个城市,在这缺乏英雄的年代,这种传闻比什么 都热销,给老蔫带来的唯一好处是:他被通知不需要下岗了。厂长还专门找了老蔫一趟, 一改以前的盛气临人,客气多了的说道“老蔫啊,啊,不,×××,家里有困难,怎么不 向厂里反映呢?要相信组织嘛,你是厂里的元老了,说什么也得照顾,就这么说定了,下 次分房第一家就你,你可不能再推了,这不伤我们领导的心嘛。”老蔫只有唯唯诺诺的点 头。 菲菲处境的变化是学校里什么人都对她特别客客气气的,特别是那帮学人家混着的体 育特长生,走路都远远见着了躲着走,也不敢在学校里生事了,其他以前饱受其苦的普通 学生都暗地喊菲菲叫雅典娜——女神,驱走黑暗带来光明。 当然这些都传入市委书记的耳朵中了,可把他气得牙痒,徐四也就被通缉了,当然市 委书记也知道没用,只能出出气,这种流氓头子都有有钱的大老板罩着,奈他不何。但市 委书记哪能咽下这怨气,他堂堂一个市委书记的儿子被人废了,岂能就这么算了。 ※※ ※他能怎么办?他毕竟是市委书记啊,他就是雄霸一方的土皇帝,他掌握着国家 专政机关的领导权。但他不能为所欲为,毕竟这还是*** 的天下,而不是国民党的。 作为一个能爬到市委书记岗位的人,我们绝不能小瞧他的智商和能力,一个一直作恶 的笨蛋对社会的危害和一个偶尔作恶的聪明人对社会的危害,那就如拿着ak的伊拉克抵抗 者和操着战斧导弹的美军的战斗力比对。不是一个档次滴!
也是一个夜晚,市委书记自己开车光临了市公安局长的家,在这净秘的夜,他们开了 共和国的先河:上级向下级行贿——30万美元。我们只能这样评点:盛怒之下的聪明人是 失去理智的,他们用自己绝佳的才智论证着自己罕见的愚蠢。 “老赵,我知道你是特种兵出身,身手好得很,这次抓捕,你亲自带队一定要保证成 功,还市里一个安定团结的大好局面。”公安局长只有点头。 老蔫家。 唉,老蔫辛辛苦苦修起来的门又坏了不,一群特警从各个方向跃了进来,在老蔫的惊 恐和绝望中特警们等待着公安局长的命令,在那么多渴求的眼睛的注视下,局长稍息、立 正,然后有力的行了个军礼,“首长好!” 当他做完这些后,他才意识到呆坐在沙发上的是他的老上级,看了看老上级住的像鸽 子窝般房子,再看了看神情呆滞的老上级,他真的不敢相信,这就是他的老上级——共和 国最精锐的特种部队“××”的第一任大队长(××,国家机密,恕我不能写出)。 “队长。”换来的是迷茫的眼神,公安局长的眼睛红了,他无法把眼前这个人联系到 当年的偶像全军的楷模身上… 当市委书记在办公室里苦等消息无果后,他派出了自己的秘书亲临现场,他秘书看到 的是本来去抓捕的特警正在那修门窗,本该进拘留所的老蔫姐夫还呆坐在那,公安局长却不知所踪。
市委书记的肺气炸了,死打公安局长的手机回音是已不在服务区。随后几个小时后, 省军区。 “还活着!”省军区的司令员坐不住了,他站了起来来回的走动着,紧张兴奋的搓着 双手,话也说得结巴起来了,“你,你,你,给我带一个连先回去,死也要把人给我看好了。” “回去后立马整理个材料出来,如果没出问题人再过来一趟,这30万美元我替你先交 到省纪委去。” 公安局长敬了个军礼,就要出去,司令员还是不放心, “把人给我看周全了,千万别 出差错。”公安局长又敬了个军礼,“指导员,我保证完成任务。”两人都有点伤感和激 动。“去吧,路上小心。” 当老蔫看到公安局长带着一队士兵回来的时候,他自己也不知道自己该作何想法了, 等到那些士兵开始架构火力点的时候,他开始掐自己大腿了,在心中自语道:“要打仗了吗?” 市委书记的消息也算灵通,当30万美金到了省纪委的时候,他明白了一切,公安局长 的那一句“首长好。”也早已传遍了大街小巷。 那个家属区站岗的军人小半天功夫在市里已不再是新闻,市委书记瘫坐在沙发上,他 在脑中想象着盘算着,公安局长的车离省城还有多远,在盘算着省纪委的人什么时候双规自己。 他开始在大脑中幻想起来,要是自己儿子不去调戏那女孩,要是…但不该发生的一切 都的发生了。他便开始幻想起尚未发生的了,他幻想到了公安局长的车翻出了高速公路, 燃烧了起来… 就在市委书记恍恍惚惚的时候电话响了,电话的那头急促的说着什么。市委书记痴痴呆呆地听着,突然他蹦了起来,恢复了往常的干练,“什么,你再大声的说遍。” 电话中断,接着办公室响起市委书记的狂笑,“哈,车祸,哈,死了,哈哈…”笑声 中无尽的是重获新生的喜悦,市委书记的大脑重新运转起来,他开始细细分析起来。 ※※※ 新上任的市公安局代局长是市委书记的亲信,因为市委书记把他从一个派出所所长直接提拔成市公安局代局长,只要能让市委书记满意,那正式的局长也就是迟早的事。 老蔫居住的那个家属区来了一批*** ,领头的正是刚上任的市公安局代局长。中国人 总是喜欢感恩图报的,枉不枉法那就放一边去了。 面对*** 的询问,两位哨兵哗得声拉响了枪栓,当*** 再次询问时,哨兵便把枪口对 向了他们。*** 们无奈下离去。(中国军人最实在,俺佩服。著者语。) 对此,两位要人一个书记一个局长郁闷了半天,当然同时省军区的司令员也在郁闷着, 他反映的情况未被省纪委受理,因为他举报市委书记行贿下级的那个夜晚,一位省主要领 导同志出来证明那个市委书记当晚在他家,在加上公安局长出了车祸,死无对证,只能不了了之。 在省军区司令员束手无策的时候,公安局代局长想出了对策,一番耳语让市委书记感 到自己好运不断也庆幸起自己没看错人。 当天夜里,家属区发生火灾,所幸的是那连军人发挥了作用,让家属区的居民再次感 受到了解放军的温暖。 但与居民的喜笑开颜相比对的是官兵们的愁眉苦脸,老蔫一家失踪了,随后该连连长 在向军区汇报的时候,他在电话这头切实的感受到了司令员的震怒,“你个榆木脑袋,我叫你干什么去的?救个火,你就不知道留两个人,你个2.5 基数急速射也轰不开的死榆木 脑袋,12个小时内给我把人找回来,找不回来唯你是问…” 人生地不熟,到哪找啊,可把官兵们愁的,但老蔫一家已成为这个城市的名人,一个 看上去很蔫的中年男人,一个看上去痴呆的中年男人,再加上个异常漂亮的女孩,嘿,老 蔫一家呗。不知道消息怎么传出来的,但当省军区的援军赶到时,那一个连的官兵已把某公安分局围个水泄不通。 当特种兵们冲进审讯室的时候,老蔫的姐夫呆呆地坐在审讯桌上,地上几个*** 被击 昏在那。特种兵们看着这位传奇人物,敬仰了半天。 当市委书记赶到的时候,军队的人已带着老蔫一家开赴省城了,市委书记得到仅是百 姓的嘘声和鸡蛋。 接下来,事情就闹到了省里,市委书记这边坚持说是刑事犯,当然他得到省里面强力人士的支持,有点有恃无恐。军队这边说是失踪已久的战斗英雄,军区司令员好像从没怕 过什么,因为军队里支持着呢,特别是特种部队那帮孩子,都准备动手了,24小时整装待发。 在省委办公室里,两帮人发生了争吵,司令员讥笑道:“不就是废了你儿子嘛,调戏 妇女妇女未遂的不该打?那叫见义勇为。” 市委书记倒是语气平常,“且不提他打伤人,据我所知,他在军队的时候不听令擅 自行动,最后直接失踪,这样的人应该视作逃 兵,送上军事法庭。” 他这话可激怒了司令员,作为曾经一起出生入死的战友,最忌讳就是自己的战友声名 被侮辱,逃兵,可把那火爆脾气的司令员气的。他哗的声把枪掏了出来,“你再给老子说 遍逃兵试试,信不信老子毙了你个狗的。” 【 这玩笑可开大了,可把旁边的政委吓坏了,连忙夺下枪,安慰道“老李,消消气,别 跟那王八蛋计较。”听得某中间派的省领导直摇头,唉,这批军队领导都是越战下来的, 那脾气那嘴没话说他们了。 省里解决不了,只有到中央了,两帮人搞足材料,开赴北京。 ※※※ 军队的人快了一步,毕竟他们去老首长们那边方便的很,军队里上下级感情很深的, 特别中国的军队,那就是父子兄弟。当老蔫和菲菲随着姐夫被带到一个个军队宿老家中的 时候,老蔫第一次见识了自己姐夫真实面目,基本上每一个老将军都有和姐夫的合影,照 片上的姐夫真是英拔挺立。 当来到杨得志杨老家时,一直呆呆的姐夫看到杨老——他的老上级竟回忆起什么,行 了个军礼,并喊了“首长好。”(杨曾任对越反击战最前线指挥官)把杨老感动的老泪纵 横,拿出了与老蔫姐夫的合影,令众人意外的那是一张三人照,另一人就是菲菲的姨娘。 老蔫第一次看到了自己老婆姐姐的样子,很像,她们姐妹俩和菲菲三个人彼此都很像, 但菲菲姨娘的气质最好,仅仅是张照片就让人的眼睛不忍离去。那样的女子真是不忍心有 丝毫冒犯和侵犯,要不是亲眼所见,都无法想象世间竟有这样的女子存在。 众人都被照片吸引了,谁都没注意到老蔫姐夫的神态,他呆立了半天,渐渐回忆起什 么又抗拒着不想回忆,身体抖动起来,最终无法忍受,一把把照片夺了过来,眼睛贴着照 片看了许久,嘴中发出呜呜的声音,渐渐变大,最终嚎啕大哭起来。 让老蔫无法相信,因为他无法想象到一个大男人会这么大声的哭出来,哭得这么肆无 忌弹哭得这么伤心,因为就他目前了解的情况来说,姐夫应该是个铁汉,钢铁铸就的特种 兵战士,从血肉到心。 但接着老蔫看到司令员、政委、杨老也跟着哭了出来,同样的大声同样的肆无忌弹同 样的伤心,“他们该为一件事哭得吧。”菲菲在心中自语道。 支持市委书记的省领导和市委书记灰溜溜回到了省城,因为他们发现他们面对的是整 个中国军方,他们虽然得知了老蔫姐夫的一些情况:特种部队的大队长,立下些军功,擅 自行动,最后失踪,但老蔫姐夫对他们来说还是一个迷,因为就是老蔫和姐夫一起生活了 十几年,姐夫对他来说也还是个谜,姐夫的历史好像就是无法揭开锅盖的锅,除了他的战 友,没人知道里面是什么。 老蔫一家就暂时住在杨老的家里,杨老对菲菲很是疼爱,因为他以前一直把菲菲的姨 娘当自己女儿看待的,菲菲也就能自由出入杨老的书房,那是一个有着温暖春风的午后, 菲菲准备找些书看看,她一进书房就被桌上一本发黄薄册吸引。 那是一本内参,有些年头了,没有标题,一开始就是一个人的简历:××,父:×× ×;母:×××。我党历史上著名的夫妻烈士……曾任国家领导人×××贴身卫士,面对 越共特工部队渗透袭击,军委决定组建精锐特种部队“××”以打击越共猖狂气焰,×× 被抽调任命为该部队第一任大队长。 看到这,菲菲便知道讲的是她姨父了,她便接着往下看了下去。由于出身在武林世家, ××擅长传统武术格斗,迅速培养出一批身手矫捷的特种战士。 与越共特工相比,我们特种战士强在徒手格斗能力上,特种部队“××”的战士往往 能在伏击战中一瞬间徒手格毙越方三名特工,该部队大队长××更被越方称为铁腿死神, 以至后期越方不可一世的特种部队往往需要躲着我军特种部队行动,在被我军特种部队连 续无情打击后,越共迁怒与我军其他部队,便发生了“野战医院惨案”。 ××××年××月×日,越军特种部队袭击了我×××号野战医院,残忍杀死我数百 名伤兵和医生,并掳走所有护士。 其中一名护士正是特种部队大队长××的妻子,越共得知其身份后,针对性采取了报 复行动。值得一提的是越共对待我军女战虏往往是一种号称“海豹人”极为残忍的手段。 越共对我军女战虏往往采取有计划的反复强奸,当中国女兵们怀孕后,便被锯掉四肢, 让她们仅能像海豹一样蠕动,越军籍此取乐。 当我军女战俘绝食求死的时候,越军就强行注射葡萄糖,以便交换战俘的时候交还给我方。 在××的妻子被俘后,我方提出用越方高级战俘交换,越方并未理睬,而是施以他们 一贯的禽兽行为,并且更加狠毒残忍,每天锯下她的肢体的一小截,通过前方哨所送与我 特种部队“××”,企图动摇我军士气,却不知激起我全体特种战士的怒火。 在随后数天内,我特种部队在大队长××领导下对越共进行了疯狂打击,越共便采取 另一种无耻手段,以××妻子性命作要挟,让××单人赴死局。虽然××仅仅一人赴约,但越共设下的伏击徒增越特工的伤亡罢了,以至越特工产生 恐惧压力,提到××人人变色,再不复初开战时极端民族主义思想下的不畏生死了,当时 我军特种部队“××”战士全部陷入狂怒,每天早上看着越军送来的惨肢和地址,每天晚 上看并等着大队长××的归来。 至此前线总指挥部失去对该部队控制,该部队疯狂出击,过处不留活口,常渗透到越 军后方数百里定点清除越高级指挥所,往往在一分钟之类用无声武器击毙所有对手,收缴 文件,随后实施爆破,据统计越军5 个师级以上高级指挥所被清除。 另有传闻越共两高干在视察前线途中遭遇该部队,被击毙,越共高层震动。以至越军 高级将领提到前线视察,都畏如赴死。都怕遭遇我军“死神兵团”,越共高层便产生一批反对黎笋集团的高级干部。 一系列打击后,越共停止对××的要挟,并在前线通过广播要求双方停止特工战,但 直到一个月后,特种部队“××”攻占距河内仅35公里的一个据点后,我军才停止特工战。 “××”大队长××就在斯役宣告失踪,据后来调查结果,那个据点正是敌人虐待我 军女战俘的主要据点,当“××”部队赶到时,××妻子已遭毒手,死状惨不忍睹。 据越军俘虏交待,一切兽行都是在黎笋次子亲自命令下干的,在报复和要挟无望后, 越共把愤恨全出在中国女战俘身上了,越共运来一桶桶蚂蟥,将中国的“海豹人”一个个 放入桶中,直至蚂蟥全部钻进中国女战俘身体。不敢想象,她们死得时候是何等的痛苦。 那一声声刻意压抑的悲鸣和哭声,那些娇柔的女子那些本该窃窃私语欢笑着的女子… 唉,泪流下。 当我军特种部队攻占该据点的时候,看到的仅是一具具失去四肢肿胀不堪失去人形的 尸体,当时特种战士们都傻了,他们没有想到自己善待俘虏换来竟是战友被这样对待,都 抱着尸体哭了一夜,据说这个部队从此就有了个严格执行的传统,绝不称越南人作人的。 ××据说在那哭了一天一夜,抱着自己残缺不全的妻子,让所有是配称人的动物都悲 愤流泪的是他妻子腹腔是割开的…菲菲再也看不下去,在她扔下书时,她的衣服早已哭湿 透。她感到自己好像掉入了漆黑冰窖里,不见灯火也感觉不到丝毫温暖。 关于越共对菲菲姨娘的暴行,我不忍心再叙述,当天晚上老蔫也知道了,坐在那呆立 半天,杨老怕他也出问题拿了另一份内参给他。 这一份是越南特工叛逃过来后交待的材料。越南籍男子×××,原黎笋卫士,黎笋集 团下台后叛逃我国。下面是他交待材料的一部分:“××”大队长××事在我们特工间一 直流传,初开始我们都不服中国的“××”部队,都想上去和他拼一把,毕竟美国的特种 部队遇到我们也只有败的份。 但到后来,越来越多特工部队被“××”打掉了,高层就害怕了,不敢把特工部队拉 上去硬拼,关键中国人“手太重”,伏击战打起来吃亏大都是我们。 ××的名字我们也就听多了,对他又恨又怕,但我们卫士中身手好的还是不服气,但也没办法单挑啊。袭击医院那是违反国际公约的事,但当时我们特工队伍被中国的“××” 部队压制着打,上头为出气硬下命令。 但没想到那次竟抓到了××的老婆,黎笋也惊动了,还派了他小儿子亲自负责,我们都以为这次能够整垮“××”部队,先是吓阻却迎来中国“××”部队更大规模的攻击后来就抽调我们卫士组的人,准备去伏击××,连续几批人,都没回来,也就没人再敢去了,事情不了了之了,黎笋的儿子便将那女的“放了风筝(剖开腹腔,取出肠头拴在 高处将人扔下,人在下落的时候,内脏被扯出而死。 再后来听说,中国“××”部队疯狂渗透,好几个高级指挥部被端了,谈到“××” 和××基本上人人变色 ,接着就有了那一晚,当时我们知道中国“××”部队渗透的利害,加强了防备,但我们没预计到他们会渗透到河内来,而且还是一个人。 那晚,正好我当正值,贴身护卫黎笋,黎笋和他一家子在吃饭,无声无息的门就开了, 当我们都往门口看的时候,一个中国男的出现在黎笋的旁边,并挟住了黎笋勒令我们把枪扔出门外 ,当时,我们屋里共有十几个卫士,但都没发觉注意到他是怎么进来的,当时我心里就 闪了一下,“不会是××吧。”真不敢相信,不谈河内的防卫,就是在屋外我们也还有三百多卫士,那是越南最精锐的特工部队。 当枪扔完后,他就用越南语问我们谁是黎笋的次子,我们都没敢说。就在这个时候, 他被蛇缠住了,那是两条专门训练的蟒蛇,专门训练出来护卫黎笋的,我曾看过这两条蛇 生生勒死过一头水牛,都以为制住他了,黎笋的次子就站了出来问他是谁。 他说他是××要为自己的老婆报仇,我们都笑了,蟒蛇越缩越紧,他一会就得被勒死,都在看着他死,黎笋的次子笑得最大声,毕竟一直杀而不死的敌人自己送上门来了。 就在我们以为他死定的时候,蟒蛇被他用手撕裂了,我们以前得到资料,××都是用腿的,没想到他的手比腿还厉害,那可是两条巨蟒啊,没有枪我们十几个卫士就上去硬打了,关键我们当时都以为他是潜进来的而没想到他是杀光外面的人才进来,谁会这么想啊,三百多最精锐的特工,一个人杀!还以为十几个人能制服他,毕竟我们是越南身手最好的一批人。 都是一下子,现在回忆起来都后怕,都是被踢被打在脑壳,踢的还好直接死掉,被手 打到的一下子脑壳就碎了,上去几个就碎几个,我们一看就知道不妙了,那哪还是人啊! 赶忙护着黎笋从暗门走了。 黎笋的次子没走得掉,暗门关上的那刻,大厅里就剩下他俩了,××的眼神我瞥见了, 那就是死神呐! 第二天,等我们回去的时候才发现,外面的三百多卫士全死光了,黎笋的次子尸体则 是直接找不到了,最后算尸体的时候,才发现多了块肉泥,团在某个墙角,这时我们才注意到那面墙上全是肉沫和血迹。看了没有不吐的,那天的当值的卫士后来大都不干了,黎笋听说他儿子死的惨状也就 被吓出毛病来了,直接到后来不敢出地下室半步,越共中央一批人便夺了权。 老蔫看完默然无语,杨老缓缓的说道:“当时,我们看到内参的时候,政治局的和军 委的同志很多都哭了,你姐夫父母是我们党一对著名的烈士,再加上你姐夫俩口子,唉, 伤心呐,你姐夫后来没了音讯不知生死,我们部队在边界等了近10年啊,没办法,最后中央秘密的开了追悼会。” “97年邓老临走前,曾捶床长叹他平生的遗憾,其中就有没能见到你姐夫的遗体,不知他的生死,邓老这样说的,‘他父母为党牺牲,他夫妻俩为国捐躯,他爷爷还曾救过我们的×××同志,这个家庭我们党亏欠的太多!’‘我们国家不妄自开战,不逼不得已不 要打,但是打了就要狠狠的打,让它痛上个三十年,要不怎能对得起像××这样的烈士家庭!’” ……菲菲大学里谈了个男友,带回来见家长,中午,饭桌上 菲菲说道:“夏陨,给姨父敬酒啊。”菲菲男朋友斟满酒,敬上,“怎么是水啊?” 菲菲含着淡淡忧愁与伤心的回道:“这不是水,是爱情的眼泪!” |
|
大家这样形容你长得丑
|
1、长的惊险.....有创意啊 2、你小时候被猪亲过吧? 3、你长的很 爱国 很 敬业 很 有骨气 4、长得真有创意,活得真有勇气! 5、你长的真tm后现代 6、你长的好象车祸现场 7、你长的外形不准 比例没打好 8、你干嘛用屁股挡住脸啊! 9、我觉得世界上就只有两种人能吸引人,一种是特漂亮的 一种是你这样的 10、你的长相很提神的说!! 11、你需要回炉重造 12、他们怎么能管你叫猪呢 这太不像话了!总不能人家长的像什么就叫人家什么吧!怎么能说你长得像猪呢?那是侮辱了猪。 13、*,你TMD长得太好认了。 14、长的很科幻,长的很抽象! 15、见过丑的,没见过这么丑的。乍一看挺丑,仔细一看更丑! 16、长的很无辜,长的对不起人民对不起党。 17、你长的拖慢网速,你长的太耗内存 18、你光着身子追我两公里 我回一次头都算我是流氓! 19、大哥,把你脸上的分辨率调低点好吗? 20、你长的违章! 21、国际脸孔世界通用 22、很惋惜的看着他说:“手术能整回来吗?“ 23、你的长相突破了人类的想象... 24、你张的很野兽派嘛!! 25、你还没有进化完全,长的象人真的难为你了。 26.我想看着你说话,可你为什么把脸埋在你的屁股里?...哦?对不起,我不知道那是你的脸,那你的屁股哪儿去了? 27.我也不想打击你了。你去动物园看看有没有合适的工作适合你,你这样在街上乱跑很容易被警察射杀的。 28、MMD,我从没见过长的这么有考古价值的. 29、长的飞沙走石 鬼斧神工 |
文章收藏 乱闪 发表于 2005/1/31 23:57:47 |
| |
老婆給老公的信及老公的回信
|
亲爱的丈夫:
你生活惬意,日子舒心,快乐似神仙。可是,不知道你有没有发现,你的老婆我,过得一点都不好。为什么呢?我这就告诉你。现在请你把耳朵洗干净了,好好听我说。记住,一定要把耳朵洗干净了,也就是古人说的洗耳恭听。听好了。
从前,是妈妈给我洗衣服;现在,是我给你洗衣服。结婚前,我连什么叫“奥妙”都不知道;现在,我知道十几个牌子的洗衣粉,还知道哪个便宜又好用。
从前,我不会做饭;现在,我是高级厨师。结婚前,我连蛋炒饭都不会,而且经常分不清盐和味精,偶尔还会把糖不小心放进汤里;现在,满汉全席的108道菜我差不多都会了,剩下的菜式,不是我不会,只是因为你买不起做菜的材料,比如驼掌。
从前,吃饭时你抢着买单;现在,吃完饭你等我付账。结婚前,我的钱用来买衣服和化妆品;现在,我的钱全贡献给了伙食费。
从前,看你抽烟的样子很帅;现在,看你抽烟特别讨厌,整一个烟鬼。从前看你喝酒的模样很酷;现在,看到你的将军肚,简直让我受不了。
从前,你总是赖在我家不走;现在,打几遍手机你也不回。结婚前,你像蚊子一样围着我转,烦都烦死了;现在,我结蜘蛛网已经是大虾级的了,却仍然逮不到你这个小虫子。
从前,你英俊潇洒,西装笔挺,穿上牛仔更是迷死人;现在,你邋里邋遢,尤其是打完篮球,那双袜子臭死人了。
从前,你是我逛街的最好跟班,从东街一直逛到西街,两手提满东西也不嫌累;现在,购物是我自己去,买了新衣服穿给你看,你连头也不抬就说好看。其实,你是嫌陪我去时装店调换太麻烦。
从前,你说充分尊重我,给我所有的自由;现在,你说男人风流是潇洒,女人风流是堕落,你可以随便出去应酬,我最好大门不出,二门不迈,家就是我的天地。
从前,……
唉,我真的是很想不通,像我这样优秀的女性为何会跟你这样的人生活在一起,而且还生活了那么多年。
-----爱你又讨厌你的老婆
=======================================================
亲爱的妻子:
看到你的信了。很感人。但是,我仔细想一想,觉得你缺乏辩证唯物主义思想,缺乏一分为二看问题的基本能力,看事情过于片面,只见树木,不见森林。为了纠正你的缺点,补充你的不足,让你看见一整片森林。很爱很爱你的老公决定写如下的一封信,敬请参阅。
结婚前,工资我自己花,是个标准的小款;结婚后,工资通通交给你,买包烟都要计算半天,经常是一角当成两角用。
结婚前,你可以随便骂我;结婚后,你还是可以随便骂我,而且现在已经升级到可以随便打我了。不管结没结婚,骂你我都不敢,打你更是学都不敢学。
结婚前,我是自由的;结婚后,我的一切都是你的,信可以随便看,兜可以随时翻,你时刻睁大警惕的双眼,以迅雷不及掩耳之势没收我那点儿可怜的私房钱。而你的信我不能看,你的包我不能随便翻,否则,就是侵犯了你的隐私权,妇女儿童权益委员会打电话找我谈谈,纠正我的错误。
结婚前,你想散步我必须去,因为你需要保镖和谈话对象;结婚后,你想散步我还是必须去,原因雷同。结婚前,我约你要等到你非常有空;结婚后,我想散步你可以不去,我硬拽你去,就会侵犯了妇女儿童的合法权益。
如果有一个苹果,那么你和儿子一人一半;如果有两个苹果,那你和儿子就一人一个;三个苹果呢,才可能轮到我,不过一定是那个最小最难吃的。
你可以随时买衣服,不论多少钱,你眼皮眨都不眨一下;我的衣服,你买打折的,而且还是三折以下的,五折的衣服,你看都不看,嫌贵。
你出差时,不给我捎东西是正常的,天经地义;我外出时,买纪念品是首要任务。如果空着手回来,你会生气的,而且好几天。
你回娘家,大包小包买得理直气壮;我回我家,你说:人那么多,不用买了。而我不敢有丝毫的反抗。
你高兴时可以叫我亲爱的,你不高兴时,会叫我混蛋;我高兴不高兴都要叫你小甜甜、亲爱的。 你还经常问我一些很棘手的问题,比方说,“如果我爱上别人,你会怎么做?”我回答:“拿把刀把他杀掉。”你就使劲捶我,说我“自私、狭隘,还那么残暴。”我急忙改口说:“如果你真的爱他,我成全你们。”你却哭了起来:“原来你根本不爱我,想借机甩掉我。”我实在不知道应该怎么回答你才对。现在我还是弄不明白,你好像任何时候都有理。
但是,不管怎样,我都爱你,很爱你。娶到你是我这一生最大的幸福。
------- 不是很懂你但是很爱你的老公
|
文章收藏 乱闪 发表于 2005/1/31 12:25:09 |
| |
图片马赛克的另一个变化Pix slideshow
|
点击可进入相应的地址! 制作方法: 将下面的代码复制到<head>后: <script language="JavaScript1.1"> <!-- //指定轮显的间隔时间 (in mili seconds) var slidespeed=2000 //指定图片路径 var slideimages=new Array("photo1.jpg","photo2.jpg","photo3.jpg") //指定图片的超链接 var slidelinks=new Array("http://www.dynamicdrive.com","http://wsabstract.com","http://www.geocities.com")
var imageholder=new Array() var ie55=window.createPopup for (i=0;i<slideimages.length;i++){ imageholder[i]=new Image() imageholder[i].src=slideimages[i] }
function gotoshow(){ window.location=slidelinks[whichlink] } //--> </script> 注意代码中的描述文字,用户可相应改动代码! 在页面<body>的相应位置,加入代码: <a href="javascript:gotoshow()"><img src="photo1.jpg" name="slide" border=0 style="filter:progid:DXImageTransform.Microsoft.Pixelate(MaxSquare=15,Duration=1)"></a> 并加入Script代码: <script language="JavaScript1.1"> <!-- var whichlink=0 var whichimage=0 var pixeldelay=(ie55)? document.images.slide.filters[0].duration*1000 : 0 function slideit(){ if (!document.images) return if (ie55) document.images.slide.filters[0].apply() document.images.slide.src=imageholder[whichimage].src if (ie55) document.images.slide.filters[0].play() whichlink=whichimage whichimage=(whichimage<slideimages.length-1)? whichimage+1 : 0 setTimeout("slideit()",slidespeed+pixeldelay) } slideit() //--> </script>
|
|
用JAVASCRIPT来进行页面各表单之间的数据传递的问题
|
一,最简单的就是同一个网页里的表单的数据传递。
举个实例,一个网页上有两个表单,每个表单里一个文本框,一个按钮。点按钮互相对操作对方的文本框的值。我们举的例子是把一个文本框付给另一个文本框。具体的HTML代码如下:
<html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <form name="form1" method="post" action=""> <input type="text" name="textfield"> <input type="button" name="Submit" value="1--------->2" onClick="ok()"> </form> <form name="form2" method="post" action=""> <input type="text" name="textfield2"> <input type="button" name="Submit" value="2----->1" onClick="ok1()"> </form> </body> </html>以上为HTMl的代码,大家可能注意到了onclik的代码了,有两个函数,接下来就是JAVASCRIPT的代码了:
<script language="JavaScript"> function ok() { document.form2.textfield2.value=document.form1.textfield.value; } function ok1() { document.form1.textfield.value=document.form2.textfield2.value; } </script>
二,第二种是两个窗口之间的表单的文本框之间数据传递。
其实这个可以在原来的基础上进行一些扩展就可以了。关于如何创建弹出窗口,窗体里的表单的代码, 在这里就不多说了,现在在这里说一下如何操作父窗口的表单里的文本框的数据。具体代码如下:
<script language="JavaScript"> function ok() { opener.document.form2.textfield2.value=document.form1.textfield.value } </script>
三,第三种就是框架网页之间的表单的文本框之间数据传递.
注意的地方是框架的写法:
<frameset cols="505,505"> <frame src="test.htm" name="leftr" id="leftr">//定义框架的名称 <frame src="test2.htm" id="right" name="right"> </frameset> <noframes> <body> </body> </noframes>体的实现代码如下:
<script language="JavaScript"> function ok() { parent.leftr.document.form2.textfield2.value=document.form1.textfield.value } </script> 这三种窗口之间的文本框数值互相操作的简单方法就实现了,其它需要注意的就是他们之间的关系。
在设计网站的时,我们可能会想把链接做成按钮的样子,按钮做成链接的样子。下面说一下我的方法。 1、按钮做成链接(图片)的样子 提交按钮<input type="submit" value="提交"> 提交链接<a href="#" onclick="表单名字.submit()">提交</a>
重置按钮<input type="reset" value="重置"> 重置链接<a href="#" onclick="表单名字.reset()">重置</a>
普通按钮<input type="button" value="按钮" onclick="函数()"> 普通链接<a href="#" onclick="函数()">链接</a>
至于图片也一样把a标签换成img
2、链接做成按钮的样子 <a href="reg.asp">注册</a> =><input type="button" value="注册" onclick="location.href='reg.asp'">
----------------------------------- 有的时候我们完全可以手工做一个get方式的表单,至于用按钮还是链接随心所欲。 <form action="xx.asp" method="get" name="form1"> <input name="aa" type="text" id="aa"> <input name="bb" type="text" id="bb"> <input type="submit" name="Submit" value="提交"> </form> => <input name="aa" type="text" id="aa"> <input name="bb" type="text" id="bb"> <input type="button" value="按钮" onclick="location.href='xx.asp?aa='+document.all['aa'].value+'&bb='+document.all['bb'].value"> ----------------------------------- 进一步说我们还可以做一个按钮(链接)来同时传递js变量,表单input的值,asp变量,Recordset值 <script language="javascript"> var id1=1; </script> <% id3=3 .... rs.open exec,conn,1,1 假设有rs("id4")=4 ... %> <input name="id2" type="text" id="id2" value="2"> <input type="button" value="按钮" onclick="location.href='xx.asp?id1='+id1+'&id2='+document.all['id2'].value+'&id3=<%=id3%>&id4=<%=rs("id4")%>'"> 我们按下按钮会看到浏览器的url是xx.asp?id1=1&id2=2&id3=3&id4=4 在xx.asp中我们就可以用request.querystring来得到所有变量,这样是不是变相的客户端js和服务器段的变量传递? |
|
可以得到图片尺寸大小,并且限制格式的程序
|
以下是代码: <table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%" height="30">
<script>
function gigi(hh)
{
var kk
urll=hh.ftpname.value
if (urll==""){alert("请从你的硬盘中选取你的头像文件...");return false;}
kk=urll.substring(urll.length-4,urll.length)
kk=kk.toLowerCase();
if (kk!=".jpg"){
if (kk!=".gif"){
if (kk!=".bmp"){
if (kk!=".swf"){
alert("对不起,只能上传JPG,GIF,BMP,swf格式的文件")
return false;
}
}
}
}
ss=1
while (ss<=15)
{
ss++
}
alert("图象的尺寸:\n宽度"+tp1.width+"\n高度"+tp1.height)
return false;
}
function lll()
{
urll2=for3.ftpname.value
re=/\\/g
urll2=urll2.replace(re,’/’);
tp1.src="file://"+urll2
}
</script>
<form method="POST" action="" enctype="multipart/form-data" onsubmit="return gigi(this);" name="for3">
<input type="file" name="ftpname" size="23"> <input type="submit" value="上 传" name="B1" onmouseover="lll();this.focus();">
</td></form>
</tr>
</table>
<img border="0" src="" name="tp1"> [Ctrl+A 全选 Ctrl+C 复制,如不能正常显示请刷新一下] |
|
网页加载时的Loading(七种)
|
方法一:
<HTML> <BODY> <P> </P><P> </P><P> </P><P> </P><P> </P> <table border="0" cellpadding="0" cellspacing="0" width="50%" align=center> <tr> <td width="51%" noWrap> <p align="right"><FONT face=宋体 color=navy size=2>正在加载:</FONT></p> </td> <td width="4%" bordercolor="#000000"> <marquee align="middle" direction="right" scrolldelay="1" bgcolor="gainsboro" scrollamount="2" style="BORDER-RIGHT: black 1px outset; BORDER-TOP: black 1px outset; FONT-SIZE: xx-small; BORDER-LEFT: black 1px outset; WIDTH: 133px; COLOR: #000080; BORDER-BOTTOM: black 1px outset; HEIGHT: 13px" behavior="slide">███████████████████████████████████████████████████████████████████████████████</marquee> </td><td width="45%" align=left><div id=per></div></td></tr></table> <SCRIPT> var myTime=0 function counter(){ myTime++ per.innerHTML="<font size=2 color=darkblue> "+myTime+"%</font>" if(myTime<100) setTimeout("counter()",40); else{ location.href="http://download.pchome.net" }} counter() </SCRIPT> </BODY> </HTML>
<HTML> <BODY> <P> </P><P> </P><P> </P><P> </P><P> </P> <table border="0" cellpadding="0" cellspacing="0" width="50%" align=center> <tr> <td width="51%" noWrap> <p align="right"><FONT face=宋体 color=navy size=2>正在加载:</FONT></p> </td> <td width="4%" bordercolor="#000000"> <marquee align="middle" direction="right" scrolldelay="1" bgcolor="gainsboro" scrollamount="2" style="BORDER-RIGHT: black 1px outset; BORDER-TOP: black 1px outset; FONT-SIZE: xx-small; BORDER-LEFT: black 1px outset; WIDTH: 133px; COLOR: #000080; BORDER-BOTTOM: black 1px outset; HEIGHT: 13px" behavior="slide">███████████████████████████████████████████████████████████████████████████████</marquee> </td><td width="45%" align=left><div id=per></div></td></tr></table> <SCRIPT> var myTime=0 function counter(){ myTime++ per.innerHTML="<font size=2 color=darkblue> "+myTime+"%</font>" if(myTime<100) setTimeout("counter()",40); else{ location.href="http://download.pchome.net" }} counter() </SCRIPT> </BODY> </HTML> 方法二:
<html> <head> <title>欢迎光临网易多广告站</title> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT type=text/javascript> <!-- var ie5 = (document.all && document.getElementsByTagName); var step = 0; function setSB(v, el, inforEl, message) { if (ie5 || document.readyState == "complete") { filterEl = el.children[0]; valueEl = el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup = filterEl.style.filter; filterEl.style.filter = ""; filterEl.style.filter = filterBackup; } filterEl.style.width = v + "%"; valueEl.innerText = v + "%"; inforEl.innerText = message; } } function setSBByStep(v, el, inforEl, message) { if (ie5 || document.readyState == "complete") { step = step + v; filterEl = el.children[0]; valueEl = el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup = filterEl.style.filter; filterEl.style.filter = ""; filterEl.style.filter = filterBackup; } filterEl.style.width = step + "%"; valueEl.innerText = step + "%" inforEl.innerText = message; } } function fakeProgress(v, el) { if (v >= 101) location.href="http://www.163.com"; else { setSB(v, el, infor, "Loading... please wait"); window.setTimeout("fakeProgress(" + (v + 1) + ", document.all['" + el.id + "'])", 60); } } //--> </SCRIPT> </head> <BODY onload="fakeProgress(0,sb)" topmargin=100 bgcolor="#999999"> <br><br><br><br><br><br><br><br> <!-- Status Bar Starts --> <div align=center> <DIV id=sb style="BORDER-RIGHT: white 0px inset; BORDER-TOP: white 0px inset; BACKGROUND: #cccccc; BORDER-LEFT: white 0px inset; WIDTH: 200px; BORDER-BOTTOM: white 0px inset; HEIGHT: 20px; TEXT-ALIGN: left"> <DIV id=sbChild1 style="FILTER: Alpha(Opacity=0, FinishOpacity=80, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0); WIDTH: 0%; POSITION: absolute; HEIGHT: 20px"> <DIV style="FONT-SIZE: 1px;BACKGROUND:#ffffff; WIDTH: 100%; HEIGHT: 100%"></DIV></DIV> <DIV style="FONT-SIZE:11px; WIDTH: 100%; COLOR:#000000; FONT-FAMILY:verdana; POSITION: absolute; TEXT-ALIGN: center"></DIV></DIV> <!-- Status Bar Ends --> <br> <DIV id=infor style=" FONT-SIZE:11px; WIDTH: 100%; COLOR:#000000; FONT-FAMILY:verdana; POSITION: relative; TEXT-ALIGN: center"> </DIV> </div> </BODY> </html> 方法三:
<html> <head> <style type="text/css"> td { font-size: 12px} </style> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT type=text/javascript> var ie5=(document.all && document.getElementsByTagName); var step=0; function setSB(v, el, inforEl, message) { if (ie5 || document.readyState == "weicool") { filterEl=el.children[0]; valueEl=el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup=filterEl.style.filter; filterEl.style.filter=""; filterEl.style.filter=filterBackup;} filterEl.style.width=v + "%"; valueEl.innerText=v + "%"; inforEl.innerText=message;}} function setSBByStep(v, el, inforEl, message) { if (ie5 || document.readyState == "weicool") { step=step + v; filterEl=el.children[0]; valueEl=el.children[1]; if (filterEl.style.pixelWidth > 0) { var filterBackup=filterEl.style.filter; filterEl.style.filter=""; filterEl.style.filter=filterBackup;} filterEl.style.width=step + "%"; valueEl.innerText=step + "%" inforEl.innerText=message;}} function fakeProgress(v, el) { if (v >= 101) location.href="http://www.333v.com"; else { setSB(v, el, infor, " 网页加载中 ......"); window.setTimeout("fakeProgress(" + (v + 1) + ", document.all['" + el.id + "'])", 20)}} </SCRIPT> </head> <BODY onload="fakeProgress(0,sb)" topmargin=100 bgcolor="#4678B0" link="#FF0000" vlink="#FF0000"> <p align="center"> <font size="6" color="#FFFFFF"><b>伟COOL网络</b></font> <p align="center"> <!-- Status Bar Starts --> <div align=center> <DIV id=sb style="BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #c0c0c0 1px solid; BACKGROUND: #4678B0; BORDER-LEFT: #fffffff 1px solid; WIDTH: 400px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 14px; TEXT-ALIGN:left"> <DIV id=sbChild1 style="FIlTER: Alpha(Opacity=0, FinishOpacity=80, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=0); WIDTH: 100%; POSITION: absolute; height:12px; overflow: hidden"> <DIV style="BACKGROUND:#000000; WIDTH: 100%";height:12px; overflow: hidden></DIV></DIV> <DIV style="font-size: 10px; width: 403; color: white; font-family: arial; position: absolute; text-align: center; height: 14; left: 11; top: 210"> </DIV> </DIV><!-- Status Bar Starts --> <DIV id=infor style="font-size: 11px; width: 402; color: #999999; font-family: arial; position: relative; text-align: center; height: 19"> </DIV> </div> <p align="center"> </p> <p align="center"> </p> <p align="right"> </p> <p align="right"><font color="#FF0000"><a href="http://www.333v.com"><b>进入主页>>></b></a></font></p> </BODY> </html> 方法四:
<body style="background:black"> <div style="position:absolute;width:322;height:14;border:1 #707888 solid;overflow:hidden"> <div style="position:absolute;top:-1;left:0" id="pimg"> </div> </div> <div style="position:absolute;top:30;left:120;font-size:9pt;color:#f4f4f4" id="abc"> Loading............. </div> <script> s=new Array(); s[0]="#050626"; s[1]="#0a0b44"; s[2]="#0f1165"; s[3]="#1a1d95"; s[4]="#1c1fa7"; s[5]="#1c20c8"; s[6]="#060cff"; s[7]="#2963f8"; function ls(){ pimg.innerHTML=""; for(i=0;i<9;i++){ pimg.innerHTML+="<input style=\"width:15;height:10;border:0;background:"+s[i]+";margin:1\">"; } } function rs(){ pimg.innerHTML=""; for(i=9;i>-1;i--){ pimg.innerHTML+="<input style=\"width:15;height:10;border:0;background:"+s[i]+";margin:1\">"; } } ls(); var g=0;sped=0; function str(){ if(pimg.style.pixelLeft<350&&g==0){ if(sped==0){ ls(); sped=1; } pimg.style.pixelLeft+=4; setTimeout("str()",1); return; } g=1; if(pimg.style.pixelLeft>-200&&g==1){ if(sped==1){ rs(); sped=0; } pimg.style.pixelLeft-=4; setTimeout("str()",1); return; } g=0; str(); } function flashs(){ if(abc.style.color=="#ffffff"){ abc.style.color="#707888"; setTimeout('flashs()',500); } else{ abc.style.color="#ffffff"; setTimeout('flashs()',500); } } flashs(); str(); </script> 方法五:
<SCRIPT>cnease=window.open("","etangWHSAD","top=2000");cnease.close(); focus() self.resizeTo(800,600) self.moveTo(-3,-3)</SCRIPT> <html> <head> <title>一千经典特效</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> td,form,select,input,textarea,body {font-family: 宋体;font-color:#000000;font-size: 12px;line-height:150%;letter-spacing:2px} a:link { font-size: 9pt; text-decoration: none; color: #666666} a:visited { font-size:9pt; text-decoration: none; color: #666666} a:hover { text-decoration: none; font-size: 9pt; color: #666666} a:active { font-size: 9px; text-decoration: none; color: #666666} </style> <script> var url='../4/11.htm'; </script> </head> <body onLoad="location.href=url;" style='overflow:hidden;overflow-y:hidden'> <div align=center> <table height=70% valign=middle align=center> <tr> <td align="center" disabled> <!-- Displaytext--> <div align="center">一千经典特效</div> <p></p> <font class=fontbig>页面读取中,请等待......<br> </font> <p></p><p></p> <style><!--.proccess{border:1px solid;width:8;height:8;background:#ffffff;margin:3}--></style> <p></p><p></p> <div align="center"> <form method=post name=proccess> <script language=javascript> for(i=0;i<30;i++)document.write("<input class=proccess>") </script> </form> </div></td></tr></table> <div align="center"> <script language=javascript>var p=0,j=0; var c=new Array("lightskyblue","white") setInterval('proccess();',100) function proccess(){ document.forms.proccess.elements[p].style.background=c[j]; p+=1; if(p==30){p=0;j=1-j;}} --></script> </div> </div> <div align="center"> <script> <!-- if (document.layers) document.write('<Layer src="../3/' + url + ' " VISIBILITY="hide"> </Layer>'); else if (document.all || document.getElementById) document.write('<iframe src="../3/' + url + '" style="visibility: hidden;"></iframe>'); else location.href=url; //--> </script> </div> 方法六:
<html><head><title>网页欣赏</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta http-equiv="Page-Exit" content="revealTrans(Duration=3,Transition=12)"><style> body,td{font-size:12px;color:#FFFF00;text-align:center}</style> </head><body bgColor="#32A348" text="#000000" scroll=no leftmargin="0" topmargin="0"> <script>l=Array(6,7,8,9,'a','b','b','c','d','e','f') U="82.htm" //网址 Pic="../3/2/1000.jpg" //图片 Nx=5;Ny=35 t="<table height=95% cellspacing=0 cellpadding=0><tr><td><tr>" for(x=Nx;x<Nx+Ny;x++)t+="<td width=20 id=a_mo"+x+"> </td>" t+="</tr><tr><td width=20 id=a_mo"+(Nx-1)+"> </td><td colspan="+(Ny-2)+" rowspan="+(Nx)+">"+ "正在载入,请稍候.......<div align=left style=\"border:black 1px solid;width:401px\">"+ "<img src=../3/"+Pic+" height=22 id=chart width=0></div><div id=percent></div>"+ "<a href="+U+"><font color=#808080>进入</font></a></td><td width=20 id=a_mo"+(Nx+Ny)+"> </td></tr>" for(x=2;x<=Nx;x++)t+="<tr><td width=20 id=a_mo"+(Nx-x)+"> </td><td width=20 id=a_mo"+(Ny+Nx+x-1)+"> </td></tr>" t+="<tr>" for(x=Ny;x>0;x--)t+="<td width=20 id=a_mo"+(x+Nx*2+Ny-1)+"> </td>" document.write(t+"</tr></td></tr></table>") var N=Nx*2+Ny*2 function f1(y){for(i=0;i<N;i++){c=(i+y)%20;if(c>10)c=20-c document.all["a_mo"+(i)].bgColor="'#00"+l[c]+l[c]+"00'"}y++ setTimeout('f1('+y+')',50)}f1(1) a_mo=0 function count(){a_mo++ chart.width=4*a_mo percent.innerText=a_mo+"%" if(a_mo<100)setTimeout("count()",50) else window.location=U}count() document.write("<iframe width=98% height=1 src=../3/"+U+"></iframe>")</script></body></html> 方法七:
<SCRIPT>cnease=window.open("","etangWHSAD","top=2000");cnease.close(); focus() self.resizeTo(800,600) self.moveTo(-3,-3)</SCRIPT> <html> <head> <title>一千经典特效</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style type="text/css"> td,form,select,input,textarea,body {font-family: 宋体;font-color:#000000;font-size: 12px;line-height:150%;letter-spacing:2px} a:link { font-size: 9pt; text-decoration: none; color: #666666} a:visited { font-size:9pt; text-decoration: none; color: #666666} a:hover { text-decoration: none; font-size: 9pt; color: #666666} a:active { font-size: 9px; text-decoration: none; color: #666666} </style> <script> var url='../4/11.htm'; </script> </head> <body onLoad="location.href=url;" style='overflow:hidden;overflow-y:hidden'> <div align=center> <table height=70% valign=middle align=center> <tr> <td align="center" disabled> <!-- Displaytext--> <div align="center">一千经典特效</div> <p></p> <font class=fontbig>页面读取中,请等待......<br> </font> <p></p><p></p> <style><!--.proccess{border:1px solid;width:8;height:8;background:#ffffff;margin:3}--></style> <p></p><p></p> <div align="center"> <form method=post name=proccess> <script language=javascript> for(i=0;i<30;i++)document.write("<input class=proccess>") </script> </form> </div></td></tr></table> <div align="center"> <script language=javascript>var p=0,j=0; var c=new Array("lightskyblue","white") setInterval('proccess();',100) function proccess(){ document.forms.proccess.elements[p].style.background=c[j]; p+=1; if(p==30){p=0;j=1-j;}} --></script> </div> </div> <div align="center"> <script> <!-- if (document.layers) document.write('<Layer src="../3/' + url + ' " VISIBILITY="hide"> </Layer>'); else if (document.all || document.getElementById) document.write('<iframe src="../3/' + url + '" style="visibility: hidden;"></iframe>'); else location.href=url; //--> </script> </div> |
|
通过地址栏传递参数.通过url传递参数
|
<script language="javascript"> var goUrl="index.asp?schooltype=&area="; function getType(vl) {var stno,arno,tmpurl; stno=goUrl.indexOf("schooltype="); arno=goUrl.indexOf("area="); if (stno!=-1 && arno!=-1 & stno<arno) {tmpurl=goUrl.substr(0,stno+11); tmpurl=tmpurl+vl+goUrl.substr(arno-1); goUrl=tmpurl; } } function getArea(vl) {var arno,tmpurl; arno=goUrl.indexOf("area="); tmpurl=goUrl.substr(0,arno+5); goUrl=tmpurl+vl; } function goNext() {//最好判断用户是否已经选择,可以用gourl的长度来判断 window.location=goUrl; } </script>
<td width=23% valign=top ><input onCLICK='getType(1);' type=radio name=schooltype value='1'> 小学</td> <td valign=top ID=ID_177><br><input type=radio name=area onCLICK='getArea(177);' ID=IDC_177 value='177'>福州市</td> <td valign=top ID=ID_177><br><input type=radio name=area onCLICK='goNext();' ID=IDC_177 value='177'>下一步</td>
可以根据你的选择江参数加到url 中。可以用来替代form 的提交。 |
|
vbscript 与 javascript如何传递变量(包括服务器端与客户端)
|
1:vbscript与javascipt传变量(客户端) <HTML> <HEAD> <META name=VI60_defaultClientScript content=javascript> <SCRIPT LANGUAGE=vbscript> <!-- dim strTemp '首先,我们在这里用vbscript定义一个变量 strTemp=10 '紧接着,在这里给其负值。 --> </SCRIPT>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <!--
function document_onclick() { window.alert(strTemp); /**在这里,我们不经过定义就可以直接用刚才vbscript里的遍量了。**/ }
//--> </SCRIPT> <SCRIPT LANGUAGE=javascript FOR=document EVENT=onclick> <!-- document_onclick() /** 此时,你可以通过点击网页就可以看到vbscript中的变量已经传过来了。 **/ //--> </SCRIPT> </HEAD> <BODY>
说明:其实,如果你在vbscript中定义的变量。如果不是在函数里或是过程中的,他就都是全局变量。这个全局也就是从此刻到网页执行完毕。所以,在javascript中就可以拿来直接用了。但这里可要注意顺序。脚本执行过程是逐行解释执行的,如果你把vbscirpt中定义变量的部分放在javascript之后,可能就得不到正确结果了。道理就很清楚了。
2:javascript与vbscript传变量(客户端) 其实,这个就不用讲了,也可以的。但还是给个简单的例子吧。自己看看就明白了。 <HTML> <HEAD> <META name=VI60_defaultClientScript content=javascript> <script language=javascript> var strTemp=10; </script>
<script language=vbscript> msgbox(strTemp) </script>
</HEAD> <BODY>
3:服务器端与客户端传变量。 首先,我要说的是,服务器端与客户端脚本是可以传的。传什么先不要管。但是,服务器端与客户端传变量与上面讲的不太一样。或者不叫传变量。我们还是结合例子吧。 <%@ Language=VBScript %> <% dim strIp strIp=Request.ServerVariables("remote_addr") Response.Write "你的IP是:"&strIp %> <html> <body> <SCRIPT LANGUAGE=vbscript> <!-- msgbox(strIp) '请注意:这里是错的! --> </SCRIPT> </body> 执行完上面的句子,可能不会报错。但答案是错的。原因就是我说的,这里面是不可能吧变量传过来的。如果我们把流程搞清楚就不会犯这样的错误了。 首先,服务器端先解释<% %>直接的代码。如果有,就把他解释执行完毕,得到值后直接传化为html的形式扔给客户端。至于客户端脚本,服务器端会动也不动就扔过来。所以我们看上面的例子。客户端的脚本不被服务器端解释。而服务器端的脚本已经转化为固定的值了,所以,strIp里什么也没有。故得不到你想要的答案。 那如何才能将ip址传过来呢。这个就要稍微动一下脑子,其实不用动。呵呵。直接把msgbox(strIp)改成这样。msgbox("<%=strIp%>")就可以了。注意,要加上""号的,因为这时,strIp已经被解释执行为字符串了。看到这里,相信大家都明白了,服务器端与客户端严格上,是不可能传递变量的。但可以变通的传值。(叫不叫传值,不用管他,反正已经得到正确答案了。呵呵)至于可不可以与客户端的javascript传值。我不说你也明白了。当然可以。
二:说在最后的话,脚本语言中vbscript与javascript功能上不分上下。说不上谁好谁差,可能vbscript中错误处理好一些。javascript中字符串处理好一些,但随着vbscript中正则表达式的引入,javascript中错误处理不断增强。所以,用那一种我认为都可以了。关键是看你的习惯与爱好,说这些的原因如果你用一种就可以完成,就最好不要用另一种。因为这样从速度和效率来说都是最佳的。因为浏览器不用同时调用。
|
|
vbscript和javascript互相调用方法
|
ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。
脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。
此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBScript脚本和JScript脚本交互以最大限度地获得两种脚本语言的特色支持。
一、VBScript和JScript的内置函数
在VBScript和JScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和格式化数据的函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。
那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?
二、异种脚本的互相调用
如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。
例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> Function Formatvalue(value) Formatvalue = FormatCurrency(value) End Function </SCRIPT>
接下来在JScript代码中就可以象普通JScript函数一样调用Formatvalue()了。用类似的方法也可以实现VBScript代码调用JScript函数。
应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。
三、数据共享
在某些情形下混合运用VBScript和JScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。
对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript中调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。
四、数组管理
数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。
VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:
var Temp = new VBArray(myVBArray) var myJSArray myJSArray = Temp.toArray()
上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把一个多维的VBArray转换为一维的JScript数组。
从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性,但没有直接访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取JScript数组的长度属性,如下所示:
x = myJSArray.length
但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:
x = myJSArray(3)
解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省的脚本语言:
<% Dim Temp Dim myVBArray Temp = myJSArray.join(", ") myVBArray = Split(Temp, ", ") %>
此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JScript数组到VBScript数组的转换。
五、小结
在同一个ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于VBScript也可用于JScript环境的通用脚本库成为可能。 |
|
|