PHP加速器eAccelerator文档翻译 (PHP心得)
发布于 2007-11-06 11:02 阅读:60677 评论:1 标签: eAccelerator Linux PHP 翻译 文档

  前端时间用到这个,看了一下英文文档觉得还是看最原始的资料看到的东西最全。比如说eAccelerator自带了共享内存管理的程序,这个在我找到的中文资料里面就没有看到过。

  本文翻译的是:Release-0.9.5.2 ,官网是:http://www.eaccelerator.net/。原文附后,英文水平不高,如果您发现有不对的地方,还请告诉我!

--------------------------

PHP的eAccelerator
=====================

什么是eAccelerator?
----------------------
eAccelerator是一个的免费、开源的PHP模块,它能够为提供PHP加速、优化、加码、和动态内容缓存功能。它通过存储PH脚本编译后的状态而加快执行PHP脚本的速度,而不需要频繁的编译这个PHP脚本。而且它能优化PHP脚本,以提高执行PHP的速度。eAccelerator特色是减少了服务器负载、使PHP脚本加速1-10倍。

eAccelerator是TurckMMCache的一个分支
(请详见Dmitry Stogov维护的:http://sourceforge.net/project/turckmm-cache/

eAccelerator把编译好的PHP程序存储在共享内存里面,并直接在这里面执行程序。但在共享内存里面寻找编译好的PHP程序时,会在很短的时间内产生一些锁定,所以一个程序可以被多个进程同时执行。不适合放入共享内存的文件将被缓存到硬盘上。

eAccelerator包含了一个PHP加码器和解释器(loader????)。你可以使用encoder.php对你的程序加码,这样在分发程序的时候就可以不给出源码了。加码后的文件可以在任何机子上运行,只要它装有eAccelerator的PHP。加码后的代码不能被恢复,因为它是以编译完了的形式而存储的,而且存储时不包含源码。当然,程序中一些内部的东西可以使用反编译工具(different  reverse  engineering  tools)还原(例如:disassemblers, debuggers等等),但这并不是重要的。

eAccelerator可以和Zend Optimizer的加码器共存。但是在php.ini中Zend Optimizer必须在eAccelerator配置参数的后面。如果你不使用Zend Optimizer的加码器,我们不推荐同时安装Zend Optimizer

eAccelerator不能在CGI模式下运行,但是它能在一些web服务器下的Fast-CGI模式运行,比如:lighttpd。

下面是一些能提供相同作用的产品:
 - Zend Performance Suite (http://www.zend.com/)
 - Alternative PHP Cache (http://pecl.php.net/package/APC)

下载
--------
最新的eAccelerator版本能在下面的页面下载:
http://sourceforge.net/projects/eaccelerator/
版本控制的快照在:
http://snapshots.eaccelerator.net

要求:
--------
apache >= 1.3, mod_php >= 4.1, linux下工具:autoconf, automake, libtool, m4

兼容性:
--------
eAccelerator能与PHP4、PHP5很好的工作,对PHP5.1版本还没很好的兼容。它能使用在Linux, FreeBSD, MacOS X,
Solaris 和 Windows 下的 apache 1.3 and 2, lighttpd 和 IIS.

快速安装:
-------------

你可以在下面的网站上找到更多的安装信息:
http://eaccelerator.sourceforge.net/

注意:在Microsoft Windows下安装,请参考README.win32文件

第一步:编译eaccelerator

  export PHP_PREFIX="/usr"
 
  $PHP_PREFIX/bin/phpize
 
  ./configure \
  --enable-eaccelerator=shared \
  --with-php-config=$PHP_PREFIX/bin/php-config
 
  make

  你必须使用“export”命令指明PHP的安装路径的前缀,它可能是"/usr" "/usr/local",或其它

第二布:安装 eAccelerator

  make install

第三步:配置 eAccelerator

  eAccelerator能做为Zend或PHP的扩展。

对于大于0.9.1版本的eaccelerator,如果你有/etc/php.d目录,你应该复制eaccelerator.ini到里面去,当然你可以根据你的需要修改它。

如果没有,你需要修改你的php.ini文件(通常是/etc/php.ini)

作为Zend的扩展:

  zend_extension="/usr/lib/php4/eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"

  如果你使用thread safe模式安装的PHP,你应该使用“zend_extension_ts”代替“zend_extension”

作为PHP的扩展:

  extension="eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"
 
第四步:建立缓存目录

  mkdir /tmp/eaccelerator
  chmod 0777 /tmp/eaccelerator

 

配置选项
--------

eaccelerator.shm_size
 eAccelerator使用共享内存的总数。单位是MB.
 设置为“0”,则为操作系统默认值。默认为“0”

eaccelerator.cache_dir
 硬盘缓存的目录。eAccelerator存储预编译代码,session数据,内容数据(content)和使用的入口(entres??)。这些数据也能够存储在共享内存里(为了得到更快的通道)。默认为“/tmp/eaccelerator”。

 yayu:建立这个空目录后,在有人访问php页面后会自动建立二级二维目录(0,1.....e,f)(16进制,晕)

eaccelerator.enable
 决定eAccelerator是否有效。“1”为有效,“0”为无效。默认为“1”

eaccelerator.optimizer
 是否使用内置的优化工具加速代码的执行。“1”为是,“0”为否。默认为“1”

eaccelerator.debug
 是否记录eAccelerator debug log。“1”为是,“0”为否。默认为“0”

eaccelerator.check_mtime
 是否检查php程序更新时间。“1”为是,“0”为否。如果你想改变php程序后重编译程序到共享内存,那就应该设置为“1”。默认为“1”

eaccelerator.filter
 决定哪些php文件被缓存。你可能需要指定哪些文件(如:"*.php *.phtml")需要被缓存。如果在文件前加上“!”,那么符合条件的文件将被忽略。默认为"",这以为着所有php文件都会被缓存。

eaccelerator.shm_max
 设置诸如“eaccelerator_put()”之类的函数能往共享内存里面加载数据的大小。单位为MB。“0”为不限制,默认为“0”。

eaccelerator.shm_ttl
 当共享内存空间已满,将删除在“shm_ttl”秒前没有使用的程序。默认为0,为不删除任何文件。

eaccelerator.shm_prune_period
 共享内存已满。前一次操作是在shm_prune_period秒之前,那么这一次将删除所有的旧程序。默认为“0”,意为不删除任何程序。

eaccelerator.shm_only
 是否把编译后程序缓存到硬盘上。这个选项对session数据和内容(content)缓存无效。默认为“0”,意为同时使用共享内存和硬盘做缓存。

eaccelerator.compress
 是否对缓存内容做压缩。默认为“1”,为不压缩。

eaccelerator.compress_level
 压缩的级别,默认和最高都为“9”。

eaccelerator.name_space
 一个对所有键值假拟的字符串。通过在.htaccess文件中设置的这个值,允许两个应用使用相同的键值运行在同一个主机上。

 yayu:命名空间?

eaccelerator.keys
eaccelerator.sessions
eaccelerator.content
 决定那些键,session数据和内容将被缓存,这些可能的值是:

 "shm_and_disk" - 缓存数据在共享内存和硬盘上(默认值)
 "shm"          - 缓存数据在共享内存,如果共享内存已满或者提交的数据大小超过eaccelerator.shm_max,则存储在硬盘上。
 "shm_only"     - 只缓存数据在共享内存
 "disk_only"    - 只缓存数据在硬盘
 "none"         - 不缓存数据

eaccelerator.allowed_admin_path
 允许得到管理信息和管理操作的脚本路径。


控制面板及反汇编
---------------

如果你要使用控制面板,你需要在编译eAccelerator时加上 --with-eaccelerator-info选项,这个是默认值。

复制control.php文件到你的跟目录下,并且设置这个路径到php.ini 或者 eaccelerator.ini的eaccelerator.allowed_admin_path选项。如果你不这样做,你将看不到更多的相关信息,也不能控制eAccelerator。

你可以在control.php文件中设置用户名和密码以进入控制面板

当你使用--with-eaccelerator-disassembler编译时,你需要把dasm.php和PHP_Highlight.php也放到control.php目录里面。反汇编需要在编译PHP时加上对tokenizer的支持(--enable-tokenizer)
你可以在dasm.php文件的上面得到执行反汇编时的用户名和密码


eAccelerator 函数
-----------------

函数文档请看: http://bart.eaccelerator.net/doc/phpdoc/

联系我们
--------
当你有疑问、需要补丁,提交bug,请发email给 Bart Vanbrabant

--------------------------

以下是英文全文:

eAccelerator for PHP
=====================

What is eAccelerator?
----------------------
eAccelerator is a free open source PHP  accelerator,  optimizer,  encoder  and
dynamic content cache for PHP. It increases  performance  of  PHP  scripts  by
caching them in compiled state, so that the overhead of  compiling  is  almost
completely eliminated. It also optimises  the  script  to speed  up  execution
of PHP scripts. eAccelerator typically reduces server load and  increases  the
speed of your PHP code by 1-10 times.

eAccelerator is a fork of TurckMMCache
( http://sourceforge.net/project/turckmm-cache/  by Dmitry Stogov )

eAccelerator stores compiled PHP scripts in shared memory  and  executes  code
directly from it. It creates  locks  only  for  short  time,  while  searching
compiled PHP script in the cache, so one script can be executed simultaneously
by several engines. Files that can't fit in shared memory are cached  on  disk
only.

eAccelerator contains a PHP encoder and loader. You  can  encode  PHP  scripts
using encoder.php in order to distribute them without sources.  Encoded  files
can be run on any site which  runs  PHP  with  eAccelerator.  The  sources  of
encoded scripts can't be restored because they are stored in a  compiled  form
and the encoded version doesn't contain the source. Of course, some  internals
of the scripts can  be  restored  with  different  reverse  engineering  tools
(disassemblers, debuggers, etc), but it is not trivial.

eAccelerator is compatible with Zend Optimizer's loader. Zend  Optimizer  must
be installed after eAccelerator in php.ini. If you don't use  scripts  encoded
with  Zend  Encoder  we  do  not  recommend  to  install  Zend  Optimizer with
eAccelerator.

eAccelerator does not work in CGI mode but it does work in Fast-CGI mode with
webservers like lighttpd.


Here are some other products that provide the same functionality:

 - Zend Performance Suite (http://www.zend.com/)
 - Alternative PHP Cache (http://pecl.php.net/package/APC)

Download
--------
Latest eAccelerator versions can be downloaded at the sourceforge page:
http://sourceforge.net/projects/eaccelerator/
Development snapshots from cvs can be downloaded at
http://snapshots.eaccelerator.net


Requirements
------------
apache >= 1.3, mod_php >= 4.1, autoconf, automake, libtool, m4


Compatibility
-------------
eAccelerator has been reported working with php4 and php5, php 5.1 support
hasn't been integrated yet. It is being used on Linux, FreeBSD, MacOS X,
Solaris and Windows with apache 1.3 and 2, lighttpd and IIS.


Quick install
-------------

You can find more information about installation on eAccelerator website.
http://eaccelerator.sourceforge.net/

Note(1): for Microsoft Windows installation, please refer to README.win32 file.

Step 1. Compiling eAccelerator

  export PHP_PREFIX="/usr"
 
  $PHP_PREFIX/bin/phpize
 
  ./configure \
  --enable-eaccelerator=shared \
  --with-php-config=$PHP_PREFIX/bin/php-config
 
  make

  You must specify the real prefix where PHP is installed in the "export"
  command. It may be "/usr" "/usr/local", or something else.

Step 2. Installing eAccelerator

  make install

Step 3. Configuring eAccelerator

eAccelerator can be installed both as Zend or PHP extension.

For eaccelerator > 0.9.1, if you have /etc/php.d directory, you should copy eaccelerator.ini inside and modify default value if you need.

If not, you need to edit your php.ini file (usually /etc/php.ini).

To install as Zend extension:

  zend_extension="/usr/lib/php4/eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9"

  If you use thread safe build of PHP you must use "zend_extension_ts" instead
  of "zend_extension".

To install as PHP extension:

  extension="eaccelerator.so"
  eaccelerator.shm_size="16"
  eaccelerator.cache_dir="/tmp/eaccelerator"
  eaccelerator.enable="1"
  eaccelerator.optimizer="1"
  eaccelerator.check_mtime="1"
  eaccelerator.debug="0"
  eaccelerator.filter=""
  eaccelerator.shm_max="0"
  eaccelerator.shm_ttl="0"
  eaccelerator.shm_prune_period="0"
  eaccelerator.shm_only="0"
  eaccelerator.compress="1"
  eaccelerator.compress_level="9" 

Step 4. Creating cache directory

  mkdir /tmp/eaccelerator
  chmod 0777 /tmp/eaccelerator


Configuration Options
---------------------

eaccelerator.shm_size
    The amount of shared memory (in megabytes) that eAccelerator will use.
    "0" means OS default. Default value is "0".

eaccelerator.cache_dir
    The directory that is used for disk cache. eAccelerator stores precompiled
    code, session data, content and user entries  here. The same data  can  be
    stored in shared memory also (for more quick access). Default value is
    "/tmp/eaccelerator".

eaccelerator.enable
    Enables or disables eAccelerator. Should be "1" for enabling  or  "0"  for
    disabling. Default value is "1".

eaccelerator.optimizer
    Enables or disables internal peephole optimizer which may  speed  up  code
    execution. Should be "1" for enabling or "0" for disabling. Default  value
    is "1".

eaccelerator.debug
    Enables or disables debug logging. Should be "1" for enabling or  "0"  for
    disabling. Default value is "0".

eaccelerator.check_mtime
    Enables or disables PHP file modification checking .  Should  be  "1"  for
    enabling or "0" for disabling. You should set it to "1"  if  you  want  to
    recompile PHP files after modification. Default value is "1".

eaccelerator.filter
    Determine which PHP files must be cached. You may specify  the  number  of
    patterns (for example "*.php *.phtml") which specifies to cache or not  to
    cache. If pattern starts with the character "!", it means to ignore  files
    which are matched by the following pattern. Default value is "" that means
    all PHP scripts will be cached.

eaccelerator.shm_max
    Disables putting large values into shared memory by " eaccelerator_put() "
    function. It indicates the largest allowed size in bytes (10240, 10K, 1M).
    The "0" disables the limit. Default value is "0".

eaccelerator.shm_ttl
    When eaccelerator fails to get shared memory for new script it removes all
    scripts which were not accessed  at  last "shm_ttl"  seconds  from  shared
    memory. Default value is "0" that means -  don't  remove  any  files  from
    shared memory.

eaccelerator.shm_prune_period
    When eaccelerator fails to get shared memory for new script  it  tryes  to
    remove  old  script   if   the   previous   try   was   made   more   then
    "shm_prune_period" seconds ago. Default value is "0" that  means  -  don't
    try to remove any files from shared memory.

eaccelerator.shm_only
    Enables or disables caching of compiled scripts on disk. It has  no  effect
    on session data and content caching. Default value is "0" that means -  use
    disk and shared memory for caching.

eaccelerator.compress
    Enables or disables cached content compression. Default value is  "1"  that
    means enable compression.

eaccelerator.compress_level
    Compression level used for content caching.  Default value is "9" which  is
    the maximum value

eaccelerator.name_space
    A string that's prepended to all keys. This allows two applications that
    use the same key names to run on the same host by setting this in .htaccess
    or in the main configuration file for the whole webserver.
   
eaccelerator.keys
eaccelerator.sessions
eaccelerator.content
    Determine where keys, session data and content will be cached. The possible
    values are:
    "shm_and_disk" - cache data in shared memory and on disk (default value)
    "shm"          - cache data in shared memory or on disk if shared memory
                     is full or data size greater then "eaccelerator.shm_max"
    "shm_only"     - cache data in shared memory
    "disk_only"    - cache data on disk
    "none"         - don't cache data

eaccelerator.allowed_admin_path
    The script paths that are allowed to get admin information and do admin
    controls

Control panel and disassembler
------------------------------

If you want to use the control-panel you need to compile eAccelerator with
    --with-eaccelerator-info which is the default value.
You need to copy the control.php file to your webroot and set the path to it
in the php.ini or eaccelerator.ini in the eaccelerator.allowed_admin_path
directive. If you don't do this you wont be able to see much information and
can't control eAccelerator.
You can set the username and password needed to access the control-panel in
the control.php file.

When you compile eAccelerator with --with-eaccelerator-disassembler you need
to place the dasm.php and PHP_Highlight.php file also in the same directory
as the control.php file. The disassembler requires PHP to be compiled with
tokenizer support (--enable-tokenizer).
You can set the username and password needed to access the disassembler at the
top of dasm.php.

eAccelerator API
----------------

API documentation can be found on this website: http://bart.eaccelerator.net/doc/phpdoc/

Contact us
----------
You can contact us with questions, patches or bugs, by sending an email to
Bart Vanbrabant

展开全文  
收起全文  
segmentation fault原因 (C/C++学习)
发布于 2007-10-31 19:18 阅读:37328 评论:0 标签: fault segmentation 方法

  PHP总是和linux/unix、C/C++分不开的,郁闷。继续C/C++的学习吧。

  今天起,要向学习PHP和MySQL一样,把遇见的问题都记录下来,以提醒自己。

  “segmentation fault”是今天遇见的错误。查找资料,说是一些细节错误:
    1。 针没有赋值;
    2。 量赋值类型有错误。
    3。 最主要的错误就是声明了指针,但是没有初始化 ,结果再后来的时候进行间接引用 ,就出现问题了。

  同一个错误的提示总是有多个造成错误的情况的可能。printf输出时,类型有错误便会有这个问题。

       比如:

以下是代码片段:
char *val;
val = (char *)malloc(valsize + 1);
memset(val, 69, valsize);
val[valsize] = '\0';
printf("After memset : %s \n", *val);

  这时便会提示“segmentation fault”了。原因呢,就是多写了一“*”。改成下面的即可。

以下是代码片段:
printf("After memset : %s \n", val);

      参考的资料请看: 程序运行总是提示 segmentation fault (core dumped)是什么错啊?

  一篇更好的文章: 可恶的"Segmentation faults"之初级总结篇

展开全文  
收起全文  
冲天一飞为揽月---偶的母校中北大学 (随便说说)
发布于 2007-10-30 19:25 阅读:19481 评论:1 标签: 测控 母校 中北大学

  自母校从华北工学院更名为中北大学,同学们对这个名字的鄙视延续至今。

  撇开这个,不谈也罢。

  更名以后,除了军工领域,知道的人是越来越少了,就业的时候就可以看出来。但总不能这么下去,饭,总是要吃的,面子,总是要要的。只能靠一些传统的风格了,每次航天领域一有点事,就是中北大学露脸的时候,这不嫦娥上天了么!

  不过这些都是场面上东西。学校的名气,是要靠我们大家出来挣的!

  新闻来源:“山西制造”托起“嫦娥一号”飞天梦(图)

以下是引用片段:

  中北大学成功研制星箭分离冲击传感器

  本报10月24日讯(记者 李爱珍)今晚的“嫦娥”冲天一飞,开始了与月亮的太空“约会”。中北大学研制的星箭分离冲击传感器,准确把握嫦娥一号卫星与长征三号甲运载火箭分离瞬间的 “脉搏”,精度准、可靠性高,为我国航天事业的发展做出了重要贡献。

  在嫦娥一号卫星飞向38万公里外月球的漫长旅途中,需要完成一系列高度复杂又充满风险的动作。在发射后第1473秒完成的星箭分离,就是其中关系本次探月工程成败的十大关节点之一,这一瞬间长征三号甲运载火箭与嫦娥一号卫星成功分离,卫星准确进入近地轨道,“嫦娥”开始了独立奔月的旅程。

  由中北大学微米纳米技术研究中心研制的 “星箭分离冲击传感器”,在嫦娥一号卫星发射过程中,完整准确地测试了爆炸分离瞬间火箭对嫦娥一号卫星所施加的分离推动力,该力过大会导致卫星损坏,过小可能导致分离失败,为精确判断星箭分离质量发挥了重要作用。“星箭分离冲击传感器”是中北大学在微米纳米(MEMS)技术领域研究的最新成果,已被我国长征系列火箭成功应用20多次。在本次火箭发射过程中,中北大学还为火箭遥测系统提供了关键的测试设备――遥测系统数字量变换器测试台,确保了火箭遥测系统的可靠工作。

展开全文  
收起全文  
张朝阳风采依旧 (随便说说)
发布于 2007-10-27 21:52 阅读:9768 评论:0 标签: sina sohu 岳麓书院 张朝阳

  每个人成长中总会收到外界、外人的影响,多少总会有一点,或多或少的。也许你当时没体会到,但是多年后当你看到现在的自己再想起以前的某些事情,总是依稀有点感觉,一种神秘的生命依依相生的感觉,神秘而奇怪且自然。

  千年虫、入世、千禧年,是当年热门的话题,那是公元2000年。公元2000年的1月1日,我和我爸坐在床上看着电视,当时湖南卫视和岳麓书院举办了“千年学府论坛”,张朝阳作为特邀演讲者,做了“跨越三百年的自卑”的新千年演讲。看着张朝阳谦和、表情拘谨的演讲,就觉得互联网这东西挺有意思的。

  当时就觉得这人挺风流倜傥的。现在想来自己的职业依稀也和当时的听讲多少有些关系,sohu随后也就成为我经常上的网站,邮箱什么的,相对其它网站,也是先去注册的。

  晚上看了鲁豫有约之张朝阳不禁很感慨现在的自己。想到前段时间搜狐和新浪的流量事件,不禁觉得相比7年前,张朝阳还是张朝阳,风采依旧。

  在后面附上当年张朝阳的演讲全文:

以下是引用片段:

女士们、先生们、同志们、朋友们,新千年好!

  岳麓书院是中国学术源远流长的圣地,我刚到这儿就感到古朴、悠远的气息扑面而来。那么在新千年的第一天,在这里我们一块儿来探讨未来的生活,这本身就是一种未来的特征。那么未来的特征是什么呢?就是传统与现代的结合,以人为本,返朴归真。感谢岳麓书院和湖南卫视《新青年》栏目,让我们在这里、在新千年的第一天共同分享未来。

  我们搞计算机的最关心的一个问题就是,人类到了2000年的时候,是不是天上的飞机还在飞,地上的火车还在跑,各种各样的计算机系统是不是还在工作。这是几个小时前要担心的问题,尽管很多人认为我们比较好地解决了这个问题,但我这个人比较胆小,从北京到湖南,也不敢在昨天,12310点钟在天上飞,所以就提前来到了湖南。今天早晨我醒来的时候,当迎接新世纪的第一线曙光的时候,我像个外星人一样静静地坐在墙角,倾听地球的声音。地球人是不是已经比较安全地进入了2000年呢?大家知道世界各地进入2000年的时间也不是同时就过了,在东方是昨天晚上的零点,现在是下午两点四十分,那么再过20分钟,美国加州,再过一个小时,地球的最西部也都平安地进入了2000年。当我早上醒来迎接第一缕阳光的时候,首先是打开CNN的报道,或看一些其他电视的报道,看有没有飞机失事的消息--我不是幸灾乐祸,我当然是希望人类平安地度过--然后上到搜狐上,好像电视上也没有传来这类消息。搜狐也像老朋友一样,网页仍能打开。上面有一则报道说印度劫机事件谈判成功,人质已经安全地返回。其次,还有关于登梅林雪山的运动员在云南、西藏摩拳擦掌准备迎接雪山的挑战的消息。好像这一个世界都已平安度过了2000年。

  这个2000年的千年虫问题,使我回想起三年前。1996年我被尼葛洛庞蒂先生叫到伦敦参加"先锋论坛"会议。当时我正在融资的非常艰苦的阶段,这个会议非常重要,如果我在会议上的发言好,可能尼葛洛庞蒂先生就会投资,如果他认为我什么都不懂的话,他就不会给我投资,就没有今天的搜狐了。我经过辗转全球的飞行,也不知道是什么原因,我在会上讲起来特别的困顿。我当然讲起了中国的互联网发展。在19969月份,中国几乎是一片"黑暗",国外的人更不知道中国发生了什么,所以我说起互联网的时候,我无论说中国什么,他们都说不错。不管你讲的是什么,只要你讲得振振有辞,他们都认为你是对的。

  大家都听得很高兴,尽管我很困顿,但讲起中国来还是很兴奋。但是在提问的时候--大家都知道他们都是计算机业的元老,包括苹果机的发明者等。当他们问到,你们国家关于2000年问题怎么解决,我说什么是2000年问题呀?我第一次听说有2000年问题。他们说到这个世纪末的时候,计算机可能会出现故障。我在想,那时候是1996年,世纪末还非常遥远,我从来就没有想过世纪末的事,这反映我是多么的不懂计算机。我居然在三年前连2000年问题都不知道,这是一直使我感到非常羞愧的事情。不过碰巧,尼葛洛庞蒂先生没有赶上我的报告,他后来就问其他人,关于我的这次报告怎么样。也许别人说我的这个报告还不错,说中国的前景非常好,他好像很懂中国似的,他没有谈到这个两千年问题,所以尼葛洛庞蒂先生欣然把一笔资金投给了我,所以才有今天的搜狐。

  时光再向前一年,那是1995年底我刚回到北京的时候--为什么要与大家一起分享搜狐的发展,因为我觉得过去几年中搜狐的发展特别能够折射出中国整个互联网的发展过程。1995年我回到北京的时候,我的记忆中是满街飞跑的黄色面的,和一个寒冷的北京,我是从加州那个温暖的地方回来的。刚开始条件非常艰苦,但我们非常兴奋,因为刚回到中国,回到中国的文化中--我只偶而去麦当劳,当时麦当劳在北京刚刚兴起,只有在那儿才有喝咖啡的地方--而我们的办公室是前不着村,后不着店,非常偏僻。我离开美国前在ISI公司,它的总部设在匹兹堡。我加入ISI只有三天的时间,刚刚加入三天,就被派遣到中国来了。为我送行的时候,ISI的总裁也一块儿在匹兹堡的山上来为我祝酒,说你去的是中国,你将为ISI在中国打下一片天地。当时真有一种"壮士一去不复返"的心情。后来就到了北京,发现这儿除了咖啡、麦当劳和满街跑的黄色面的,还有修得越来越好的三环路。

  我提着一个便携机到北京电报局去注册,当时申请一个互联网账号还是个非常神秘的东西,人们都不知道互联网是什么,上了互联网是不是可以获得很多很多的情报,你这个人是不是可靠。在1995年底,当时我拿着一个便携机。人们都不知道这是一个什么呀,这是一个什么样的盒子,还是挺神奇的,所以我说什么话别人都容易相信。一年以后,当我融资成功之后,我们决定不做基础设施,不做上网的链接,而是做内容。当我们成功地说服电报局,把一个我们用手装起来的服务器搬到电报局的时候,我觉得这是一个重要的历史时刻。电报局的局长也许认为这不算什么,不就是把你们的机器放到网上吗?!我当时心里很清楚这是一个重要的时刻,所以我带了一瓶酒去,准备握手签字以后用来喝酒庆祝。但电报局的局长也许不认为什么,所以那瓶酒始终没有打开。当时只照了一张照片,这张照片现在留在了搜狐的历史博物馆里面--我们会建立一个博物馆把搜狐过去发生的一些事情记录下来--很多过去的情景也许往往当时是非常偶然的事情,或者非常简单的事情,或者非常随意的事情,当你做成了以后,当搜狐让成千上万的人都知道的时候,过去的历史人们往往要用放大镜来看每个细节,研究它的意义。当时的历史意义是人们对网络的理解以为只是联起来的计算机,并不知道它上面能做这么多的活动,放这么多的内容,会逐渐深入我们生活中的各个方面。当我们把服务器放到北京市电报局之后,我们的感觉用当时苏联一部很有名的电影叫做《这里的黎明静悄悄》来形容是最好不过的。当时中国的互联网确实是静悄悄的,还是非常黑的。但是在过去几年中国互联网的发展中搜狐的贡献非常大。我们首先提出的概念是,你必须得开仓放粮,信息必须得免费。虽然大家认为进入信息社会,信息是很宝贵的,但我们还是提出信息要免费。人们的注意力是非常宝贵的,人们把注意力放在看你的网站上,对网站本身就是一种很大的奉献,很大的贡献,所以要免费。

  那么怎么活下去呢?网站就要靠广告来收费,而且我们在做内容的时候,我们把内容打开,准备开仓放粮给别人看的时候,我们认为只是简单地做内容,像传统媒体一样做内容是不行的。我们必须离开媒体发布的模式。如果只是把网站记者写的东西放到网站上,那么只是利用了互联网这个工具,比出版只是稍稍地朝前迈了一步。但我们认为互联网不只是出版,互联网是人们生活方式的革命。于是我们推出了分类搜索,把整个互联网上的全人类内容供大家搜索,供大家享用。大家想一想,互联网这个技术平台,即使有这样一个发达的平台,如果全人类不是有60亿人,而是只有一个人或者几个人的话,互联网还有意义吗?可能一点意思都没有了。之所以说互联网有用,就是因为它是一个公共的平台,让全人类在上面发表自己的东西,实现自己的活动,提出自己的想法等等,这样互联网才因此更加有意义。同样,在过去几年中我们走过了从信息免费到建立网上搜索、到如何创办一个公司的全过程:那就是引入风险投资。关于风险投资的故事有很多很多,当时我们感到是在黑暗中呐喊,别人不会相信我们,当我们去融资的时候,当他们问你们有厂房可以抵押吗?自己又没有厂房可以变卖,我们凭什么相信你的想法,给你投钱来买你的股份呢?如果你要是做不成的话,你是不是要按照高利贷的高利息来归还我呢等等,所以当时的风险投资是一种非常非常困难的过程,但是整个的硅谷、整个的新经济都是建立在风险投资的基础上,建立在投资者愿意购买一片未来,愿意承担一切高风险的基础上,而且这个资金不用还。如果这个公司获得很大的成功,那么这个投资者因为他当时忍受了相当大的风险,他就应得到相应的回报。当时我们确实是在黑暗中呐喊,而现在,如果在街上碰到任何人,如果他口袋里有一点钱的话,他会说我想投资互联网。

  刚才回顾了历史,讲到了千年虫,那么现在是什么情况呢?现在天已大明,人人都想投资互联网,在整个中关村附近或者在中国,有几十亿美元的资金在到处游荡,可能都想投资给中国的互联网。每天都有新网站起来,成千上万的网站!我去清华、北大或者任何一座大学,每一个青年人以前问他长大了想干什么或者说毕业以后想干什么?很多人说,我想出国留学,或者我想经商,等等;但现在你再问他们想干什么,他们会说我想创业,甚至我都等不及了,等等。那么现在是一种什么情况呢?这种现象是不是过热呢?是不是一种肥皂泡呢?是不是心情太浮躁呢?我觉得一点都不过热,因为我们过去习惯于一种持续的缓慢的增长,而历史经常是以一种革命性的增长方式产生。互联网确实给我们带来了一场深刻的革命。这场革命将会创造全新的经济,我们处在一种全新的经济的起点,这个起点可以拿一个曲线来比较。如果你打高尔夫球的话,我们不妨拿高尔夫球杆的底线来比拟。这个球杆的样子是往上一拐再往上伸。我们现在正处在高尔夫球杆拐弯的地方,这就是一个新的经济的起点。现在有幸进入这样一个领域或者跟这个领域挂点边的人,都会成为新经济的缔造者。也许有人会说我们经过了农业文明、工业文明,现在才刚刚到达信息社会,我们是不是应该只管好我们的工业文明、农业文明呢?以及我们进入知识经济是不是时间太早了?我说一点也不早。首先,我们要理解什么叫经济、什么叫财富?我们总以为地里打了多少粮食、炼了多少钢才叫财富。现在我们每一个人愿意花5千、6千块钱去买一个手机,那56千块钱可以买多少斤粮食呢?你每天的生活就满足于吃粮食吗?我们要打手机,我们不只是要打电话;我们不只是走路、骑自行车,我们还要坐面的、坐夏利、坐桑塔那,我们要坐飞机;我们坐的桌椅板凳不只是我们现在在坐着的木板凳,我们还要坐沙发,坐高质量的沙发;我们的生活需要更加丰富多彩。我们不满足一个频道,我们要看更多的电视频道;我们要看很多的电影,我们要上很多的网站,我们要选择多种多样的生活方式、多种交流方式。以前的时候,一个人只跟街坊邻居来往,我们只跟村子里的人来往,我们送一封信可能要花费一上午的时间,而现在我们十分钟可能发几十个EMAIL,而这个电子邮件可以跟世界上任何一个人交流。你跟别人在说话之间就已经跟世界上几十个人--无论这个人是在南非,还是在美国的加州,进行了交流。我们现在的时空拓展,生活的选择,等等,这都是财富。

  我们就要入世了,我们的国门经过缓慢的过程也越开越大。我们刚刚经历了三百年落后的历史,我们对自己的自责往往多于对自我的夸奖。我们总是说,唉!我们中国人就是这样,没办法。但是,我们往往忘记了中国人是多么可爱!我在中国生长了21年,又在美国生活了10年。有时候能够跳出圈外,好像在宇宙飞船上来看、来观察这个宇宙、这个星球,来看我们中国人。我越来越觉得我们中国人是非常非常的可爱。这主要有几点。第一点,我们现在在岳麓书院--这是中国最早的大学--它提醒我们,我们中国有这么悠久的教育的传统,我们对教育的重视是我们文化里最优秀的一点;其次,我们非常具有牺牲精神。我们经常把自己的利益放在最后,为了朋友我们可以两肋插刀,为了朋友什么都可以牺牲。几天前我参加了中央电视台的一个节目叫《商品的故事》,上面讲了一个故事:在二三十年前,当时工作中的两个朋友,一个朋友帮另一个朋友买自行车,历尽周折,辗转千山万水,把自行车从一个地方转到另一个地方;而另一个朋友,为了报答他呢,给他弄了很多猪油、粉条给他寄去,没有任何利益可言,就是为了帮朋友。这就是自我牺牲精神,这就是为了朋友可以两肋插刀的精神。还有我们对家庭的重视。"可怜天下父母心",父母亲为了自己的孩子什么都可以做,而把自己的利益放到最后。不要看这些简单的事情,这些发生在我们家庭中每日每刻的事情,实际上,跟西方文化比较起来它们极为可贵。因为在西方每个人都在谈论个人的利益,自己怎么样,自己的权利怎么样,而往往忘记关心他人,关心父母;父母对小孩也没有像我们的"天下父母"对自己的孩子关心到无微不至的地步。还有我们中国人都有一种要追求成功,要光宗耀祖,要出人头地,不要满足于生活上的富足,而经常要追求一些成功的愿望。天下的父母也要望子成龙,希望自己的孩子特别成功。我们总是在寻求物质生活之上的一种更高的人生意义。这种出人头地,光宗耀祖,要取得成功的精神,能够激发起我们每一代人吃苦的精神,能够整天去想怎样来做事情。这些就构成了中华民族勤奋、善于思考、不断进取、对很多东西都富于研究的特质。因此,我们都特别喜欢做学问,信息在中国的传播速度非常快,即使我们的传播手段不是那么发达。这些都是我们中国人的优秀品质。从这个角度来讲,中国人是非常可爱的。假如我们再吸收了西方的一些形式逻辑,比如说AB就等于C就这么简单的形式逻辑,和对规则的重视,我们就可以结合中国人的优秀品质在更大规模上创造在亚洲四小龙身上已经创造的经济奇迹。而这种奇迹将是比亚洲四小龙十倍十几倍的规模,而且速度上毫不逊色。也就是在21世纪,在现在这样一个世纪,更大规模地在中国大地上产生。

  那么在走向世界,走向繁荣,创造经济奇迹的基础上,我们应该注意一些什么?

  我的最后一个话题就是:我们要跨越三百年的自卑。

  刚才说过了,因为我们刚刚从三百年的落后的谷底开始攀升,我们似乎找到了一条通往富强的道路,我们已经习惯于不相信自己,我们刚刚受到一些鼓励,取得了一些经济上的发展,但是还习惯于自责自愧。我们已经颤微微地站了起来,但是还是有些羞愧、不知所措。面对西方--我们永远相信的西方--代表的质量、信誉、发达,我们又该怎样正视自己?我的一个朋友曾给我讲过一个故事。他是美国一家大公司的老板,而他是一个中国人、美籍华人。当他到中国跟中国的一个单位来谈判的时候,带的助手是个美国人。他发现,当他的助手在发言的时候,我们的中方代表如在接受一段真经似的,助手说什么都唉呀是,是,是,说得很对,都赶快记下来,而当他说话的时候,好像对方却不以为然。直到后来,中方才搞清楚,原来他才是大老板。由此我就想到,在我们每一个人的心里面,因为西方列强在几百年前把中国的国门打破,当他们用稍稍发达一点的科学技术制造的枪炮把我们清朝或者明朝的铁骑军队,轻易地一排排放倒的时候,中国人在那一刻就彻底丧失了拥有五千年文明的一个泱泱大国的自信心。而在过去的几百年的历史的长河中,我们的志士仁人一直在寻求自救,来寻求自我,来建立自己的自信。直到现在我们终于找到了道路。但是我们仍然背负着历史沉重的包袱,沉重的自卑感,这导致我们对很多事情往往不能不亢不卑地来面对世界。实现了一些成就,我们就感到沾沾自喜;能够跟西方人平起平坐,以对西方能够说不而感到扬眉吐气。我们觉得能够挑战西方,觉得我们终于可以做到了。实际上,这里面还是隐隐约约包含着一种自卑感。大到很多大的问题,小到我们每日每时的做人,在跟西方谈判合作,等等,都是如此。

  人们常说一个贵族需要几代人的培养。也许等到在新世纪里面,在几十年以后,中国真正的富强了,发达了,能够跟西方真正在财富上平起平坐的时候,我们的心理才能调整到一种平起平坐、一种不亢不卑的状态。但是要记住:我们中国人是非常聪明的,非常善于思考的。我们为什么不能提前在我们新的世纪、新的经济、真正的财富、经济发达的到来之前,提前跨越这三百年的自卑,以一种儒雅平和的心态,走向世界,走向未来呢?

展开全文  
收起全文  
mysql_select_db的问题 (MySQL学习)
发布于 2007-10-20 14:26 阅读:28926 评论:1 标签: mysql

      现有三个端口:3310(db0,db1),3311(db2,db3),3312(db4,db5)
  括号内为这个端口的数据库

  现处理一个文件,把文件里的数据一行一行插入到数据库中
  每一行数据对应一个表
  相邻行的数据一般属于不同端口的不同数据库的不同的表

  问题情况1:

    .............
    第一条数据为3310端口db0
    第二条数据为3311端口db2
    第三条数据为3310端口db1
    .............

  每条数据处理前均用mysql_select_db($db, $link)选择数据库,$link确定每次正确,且每个端口一个资源符号
  如果mysql_select_db操作失败,则程序中输出警告提示
  在mysql_query($sql)第三条数据时,提示db2的表xxx不存在!由此看来是mysql_select_db失败了,但是并没有因为mysql_select_db出错的提示

      问题情况2:()

    .............
    第一条数据为3310端口db0
    第二条数据为3310端口db1
    .............

  在mysql_query($sql)第二条数据时,提示db0的表xxx不存在!情况同上!

  很奇怪,mysql_select_db就这么没用么?!因为在mysql_query中加上数据库连接资源参数后就没问题了

  如果,每个库都有一个独自的数据库连接资源,也能解决这个问题。

  但是mysql_select_db的作用就是在同一个port下选择数据库用的,是不是偶其它方面出了问题?

展开全文  
收起全文  
我们是如何杀入女生澡堂的 (随便说说)
发布于 2007-10-11 18:24 阅读:47960 评论:6 标签: 生活 澡堂 中北大学

      这是05年09月18号的事了,至今想来仍甚有意思。文章也是那天写的,突然发现这里没有,现在补上以感叹一下大学的生活吧!

      六点钟接到同学电话:是否愿意为老师在新南区教师宿舍帮沙子,四立方的沙子帮到四层工资共300元。

     考虑到家境贫寒囊中无钞,商议之下,一群九个人就为了钱杀过去了。

  弟兄们,苦哇!

  从六点五十五一直到九点五十五我就在干这苦力活了。感觉腰、背肌肉明显加强。原来肌肉是这样练成的!

  累成这样,洗澡是必然的。感觉,这样的洗澡是没几个人经历的!

  都以为新生来嘛,总是要十一点才关门的。结果,很显然,服务集团没这么好。

  但让我们看到希望的是女生澡堂的灯还亮着。这就必然给处于疲劳中的我们带来了幻想……

  在我们苦苦哀求下,看守大门的阿姨终于点了她那高贵的头,在她点第一次头的时候,我们犹如一群乞丐看见满汉全席一样杀了进去!有一点要说明的是,我并不知道,在她点头的后0.1秒她是否还会点另一次头。也就是说我并不知道她当时是答应还是拒绝……过程不是很重要,但重要的是我们杀进了澡堂,这离我们洗一澡的梦想更进了一步。

  最后一关一般由最有实力的人把手。显然,服务集团深得此道。把手女生澡堂的阿姨果然纪律严明:“你们怎么能进女生澡堂呢!出去!出去!”。
   
  在我们苦苦哀求后,阿姨一瞪眼:“里面还有人!”。无语了……

  但是,这并不能熄灭我们洗一个澡的美好幻想。突然,里面走出两个女生,一个竟然是隔壁班的!顿时我们全傻眼了……

  无语中我们蹦出一句:“里面还有人吗?”。对方哧哧一笑:“还有三个人”。

  这无疑又给我们带来了希望!我们向阿姨保证:如果里面的人在十点五十五之前能出来我们进去洗五分钟就出来。阿姨似乎被我们诚心和对洗一次澡的执卓感动了,被迫答应了我们。阿姨还是不错的,呵呵。

  当再一个女生走出来的时候,她显然被我们镇住了,头也不敢抬的往前走。“同学,里面还有几个人呀?”,没有抬头,“同学!”抬高了声量“请问里面还有几个人?”,终于抬头了,显然,她的确无疑是个美女!“还有两个”,听到这回答我们觉得梦想应该是个现实了。

  等待是个漫长的过程,尤其是等待女生。(申明:这话不是我说的)当最后两个女生出来时,我们惊讶的发现其中一个竟然是一个同伴的女友。偷笑的同时我们一致怪罪她是多么的浪费我们的时间然后杀进了女生澡堂……嘿嘿。

  世界是如此的美妙与精彩!以至于我们刚把头抹上洗发膏就停水了。世界上最无奈的事情末过于此!
  
  连女生澡堂都能杀进来的我们难道会被这点困难所打倒?!当然不能!

  热水没有,但冷水总还是有的,而且不只是有,它还出口很大!男人嘛,洗个冷水造算什么,即使是天气已经转凉的现在!

  冒着感冒的危险,我们最后用冷水把我们一直追求的幻想变成了现实。

  最后我要总结的是:恒心和毅力是多么的重要!

     (注:最后洗澡有四个弟兄)

展开全文  
收起全文  
长假期间你敢出去玩么 (随便说说)
发布于 2007-10-04 18:05 阅读:113127 评论:2 标签: 放假 生活

  十一长假,举国同庆。庆,则必要用行动体现。吃喝玩乐,精华在于玩,国人深通此道。

  偶的麻烦也在于此,睡兼看电影了两天,本想出去玩,但一看新闻,立马无语,这出去是看景物呢还是人呢?!

所谓人山人海

虽众人之,吾往亦!

以上图片来自新浪网

展开全文  
收起全文  
(随便说说)
发布于 2007-09-23 19:11 阅读:58314 评论:3 标签: 生活

      今天发现卡里又快没钱了

展开全文  
收起全文  
九一八事变简介 (扩展学习)
发布于 2007-09-19 08:46 阅读:123782 评论:1 标签: 国耻 纪念 九一八 日本

勿忘国耻

      今天才发,忏悔一下!

  1931年9月18日,日本驻中国东北地区的关东军突然袭击沈阳,以武力侵占东北的事件。

  19世纪末至20世纪前半叶,日本逐步确定了征服世界必先征服中国,征服中国必先征服“满蒙”的战略方针。1930年,世界资本主义经济危机波及日本,为了转移日益激化的国内阶级矛盾,日本加快了武力侵华的步伐,于1931年7月和8月在东北制造了“万宝山事件”和“中村事件”。9月18日,日本又制造“柳条湖事件”,发动了侵略中国东北的战争。

  当晚10时许,日本关东军岛本大队川岛中队河本末守中尉率部下数人,在沈阳北大营南约800米的柳条湖附近,将南满铁路一段路轨炸毁。日军在此布置了一个假现场,摆了3具身穿中国士兵服的尸体,反诬是中国军队破坏铁路。日军独立守备队第二大队即向中国东北军驻地北大营发动进攻。次日晨4时许,日军独立守备队第五大队由铁岭到达北大营加入战斗。5时半,东北军第七旅退到沈阳东山嘴子,日军占领北大营。战斗中东北军伤亡300余人,日军伤亡24人。这就是震惊中外的九一八事变。

  国民党政府对日本的侵略采取不抵抗政策。事变发生前,蒋介石于8月16日致电张学良:“无论日本军队此后如何在东北寻衅,我方应予不抵抗,力避冲突。”9月12日,他在河北石家庄召见张学良时说:“最近获得可靠情报,日军在东北马上要动手,我们的力量不足,不能打。我考虑到只有请国际联盟主持正义,和平解决。我这次和你会面,最主要的是要你严令东北全军,凡遇到日军进攻,一律不准抵抗。”事变发生后,国民党政府电告东北军:“日军此举不过寻常寻衅性质,为免除事件扩大起见,绝对抱不抵抗主义。”当时,日本关东军只有1万多人,而中国东北军驻在东北的有16.5万人。东北军部队多次接受不准抵抗的训令,在日军突然袭击面前,除小部分违反蒋介石的命令奋起抵抗外,其余均不战而退。

  9月19日上午8时,日军几乎未受到抵抗便将沈阳全城占领。东北军撤向锦州。全国最大的沈阳兵工厂和制炮厂连同9.5万余支步枪,2500挺机关枪,650余门大炮,2300余门迫击炮,260余架飞机,以及大批弹药、器械、物资等,全部落入日军之手。据统计,仅9月18日一夜之间,沈阳损失即达18亿元之多。此后,东北各地的中国军队继续执行蒋介石的不抵抗主义,使日军得以迅速占领辽宁、吉林、黑龙江3省。

  九一八事变是日本帝国主义长期以来推行对华侵略扩张政策的必然结果,也是它企图把中国变为其独占的殖民地而采取的严重步骤。此后,中日民族矛盾逐步上升到主要地位,使中国国内的阶级关系发生重大变动。在中国共产党的号召下,中国人民掀起了抗日救亡运动。
九一八事变经过


背景:日本的阴谋

  日本帝国主义侵略中国,蓄谋已久。1927年6月27日至7月7日,日本首相田中义一在东京召开东方会议,制订《对华政策纲领》,确立了使“满蒙”脱离中国本土,置于日本势力之下的方针。

  7月25日,田中义一将这次会议讨论的内容奏呈日本天皇,提出“惟欲征服中国,必先征服满蒙;如欲征服世界,必先征服中国”,鼓吹以武力侵占中国东北,进而占领全中国,实现日本的“大陆政策”。

  1929年开始的资本主义世界经济危机波及日本,加速了日本侵略中国的步伐。

  1931年3月31日,日本关东军参谋板垣征四郎在日本陆军步兵学校发表《从军事上所见到的满蒙》的讲话,宣称中国东北是日本“国防的第一线”,“对帝国的国防和国民的经济生活有很深的特殊关系”。认为“必须对控制满蒙资源、改变日本国内产业等进行充分的研究和准备”,但“从目前中国方面的态度来考察,如果单用外交的和平手段,毕竟不能达到解决满蒙问题的目的”。

  6月19日,日本陆军省和参谋本部联合拟订《解决满洲问题方策大纲》,确定了武装侵略中国东北的原则和步骤。

  7月,日本陆军省密召关东军参谋长三宅光治到东京,把这份大纲作为指令,传达给关东军司令官本庄繁。

  8月,本庄繁加紧调整兵力部署,并去关东军驻地巡视,观看军事演习。在这期间,日本为寻找发动侵略战争的借口,蓄意制造了“万宝山事件”。
“九一八”国耻告诉我们……

  70年前的9月18日晚间,随着沈阳北郊柳条湖传出爆破南满铁道的一声巨响,夜幕下日本关东军由重炮掩护倾巢而出,突然发动了占领中国东北的“九一八事变”。对世界而言,日军此举开启了第二次世界大战的序幕;对日本帝国来说,这次冒险行动使其迈上了走向全面侵略战争并自我毁灭之路;对中国而言,如此惨痛的国耻唤起了空前的觉醒,从此迈出了全民族抗战的第一步。


  “九一八事变”开启了第二次世界大战的序幕


  史学界有这样一种观点:第二次世界大战的序幕是由1931年的“九一八事变 ”拉开的。从这时起,日本打破了第一次世界大战后列强划定的国际战略格局, 1年多以后德国法西斯夺取政权步其后尘,于是,东西方的两个战争策源地很快便把世界投入火海。
  发动“九一八事变”是日本夺取中国东北既定国策的产物。不过,这个后起的帝国主义强国迈出的这一步,便成了它对外侵略政策的转折点。1868年明治维新当年,日本天皇确定了“开拓万里波涛”,即向海外扩张的国策。随后,日本发动甲午战争、参加八国联军、发起日俄战争、对德宣战夺取山东,都是与西方列强尤其是英美相互勾结,“参与瓜分”中国和整个东亚;而“九一八”之后,则变“参与瓜分”为“独吞”了。这既引起中华民族的殊死抗战,也逐步激化了它与其他世界强国的矛盾。
  日中甲午战争后,日本已傲慢地不再把中国看成竞争对手,侵华时的最大顾忌是其他西方强国的干涉。在1927年日本的东方会议上,日本那些野心极大的政要们确定了首先征服满蒙、再征服中国和世界的计划,已经做好了全面战争的准备。
  然而,“九一八”之后,出乎东洋侵略狂人意料的是,虽然他们从腐败的中国统治者手里轻易夺取了东北,但白山黑水间的人民武装抗日的烈火却始终在熊熊燃烧;待其再把侵略战火扩大到全中国,更是在中国全民族抗战中深陷泥潭不可自拔;当其发动了太平洋战争,便又为自己加套上了一副绞索。从这个意义上讲,日本军国主义发动的“九一八事变”只是暂时得逞,从长远看,它引来的却是最终的全面崩溃和彻底失败。


  精神上的软骨症是不抵抗丢失东北的重要原因


  从综合国力看,当年中国无疑比日本落后。但在东北局部地区,中国军力却比日本派驻的关东军远占优势。事变爆发时,日军以维护南满铁路之名驻扎在东北的兵力不过一个师团1万多人,加上临时动员“在乡军人”(退伍兵)、满铁武装职员和增援部队亦不足4万人。而东三省却有中国军队25万人,其中正规军15个旅14万人,武器装备也不劣于敌。
  事变前,关东军以“中村事件”为借口,公开在街头向日侨发枪,并不断到东北军营房前演习寻衅。令世人惊愕的是,南京政府竟以“衅不自我开”为由,不许备战;东北当局也通知:遇日军攻击便任其缴械。日军突袭时,东北军中只有少数官兵凭爱国激情自发地进行了有限抗击,多数非逃即降。关东军只用6天时间,便占领了辽宁、吉林两省的全部战略要地。近代中国遇侵略时失败之悲惨,莫此为甚!
  轻易丢失东北,蒋介石的不抵抗政策罪责难逃;处于割据状态的东北当局,事前对日军毫不戒备,事发手中有武器却不敢迎战难辞其咎。精神上的软骨症是不抵抗丢失东北的重要原因。20世纪的中国军阀大都以日本为师,虽然引进了新装备和训练方式,却因精神上媚外,只导致“内战内行,外战外行”。奉系军阀的前辈们因看到“小鼻子”在日俄战争中竟打败了“大鼻子”,政治上便屈辱地承认日本在东北特权,精神上首先成了日本人的俘虏。
  “九一八”后,真正能在东北组织抗日联军并坚持十几年战斗的,只有中国共产党组织下揭竿而起的民众。
  “九一八”的悲惨历史给人们的一个重要启示便是,在落后状态下学习外国的先进东西(包括军事科技)是必要的,但同时必须弘扬民族精神,保持自尊自信。倘拜服于洋人脚下,一味模仿,最终还是摆脱不了挨打受欺凌的命运。


  欲获得国际支援首先要自力更生抗战


  “九一八事变”时南京政府实行不抵抗政策,口号便是“彼有强权,我有公理”,期盼的是国际干预。事变第二天即9月19日,中国便向国际联盟报告日本入侵。国联在1个月内曾三次做出要求“双方”“撤兵”的决议。对这一本身并不公正(要中国撤兵实属荒谬)的要求,日本置之不理,西方列强的措施只是派调查团前来东北。其实,东三省当时面积有80万平方公里,日本侵占如此广大领土的事实举世皆知,何用“调查”?最后的调查结论只是建议共管东北。日本却以退出国联相对抗。南京政府仰仗国际干预的希望完全落空。
  当时驻国联的中国代表顾维钧曾有悲痛的回忆:当他向各国代表逐个求援时,得到的最令他无地自容的回答是:“你们自己都不抵抗,怎么能期望别人替你对付日本?”
  在强权和实力主导国际舞台的状态下,中国在反侵略时只有自己表现出意志和力量,才有可能争得外援,否则别国往往只会趁火打劫。从李鸿章“以夷制夷 ”的失败,到南京政府乞求国联干预落空,都证明了这一点。
  中华民族到了最危险的时刻。中国人民吸取了“九一八”的教训后,在中国共产党抗日民族统一战线旗帜下,终于发出愤怒的吼声:以1937年“卢沟桥事变 ”为标志,停止了妥协退让,从青纱帐到万山丛中,中华大地到处燃起了抗日烽火,原始的大刀也向鬼子们的头上砍去。正是这种持久的英勇抗战,在世界上引起普遍钦佩,一些大国也因感到中国有力量可借用才采取援华政策。毛泽东在争取外援时,特别强调要坚持自力更生的原则。当日本战败,美英苏三强国根据《雅尔塔协定》要在中国特别是在东北划分新势力范围时,中国共产党人以进军东北、展开解放战争的方式,向这一体制提出了坚决的挑战。东北的解放和中国革命随之取得全面胜利,说明同强敌斗争必须以我为主,在强调自力更生的前提下争取外援,这样才是取得胜利的保障。


  民族团结和奋发自强才能避免历史悲剧重演


  当年日本侵略者以少量兵力就敢欺凌中华大国,认定南京政府和东北当局均不敢抵抗,一个重要根据便是中国的分裂和内战不息,民众处于一盘散沙状态。然而,历史辩证法无情地惩罚了侵略者。巨大的民族灾难反而唤起中国空前的民族觉醒和团结,使日本侵略者陷入中国人民战争的汪洋大海之中。事实证明,国家的统一、人民的团结、国内各民族的团结,这是中华民族走向强盛和自立于世界民族之林的重要保证。
  抗日战争胜利已有50多年。然而,在日本仍存在着如何对待当年的侵略历史这一重大问题。温故而知新。历史是现实的镜子,承认和正确说明侵华的事实,对今后日本的走向及中日关系仍有重要意义。当初东洋列岛上的军阀、财团和政客们发动侵略他国的大规模战争,其指导思想便是自认为“天照大神”子孙的大和民族最优秀、理应统治“大东亚”乃至世界的“皇国史观”。而战后日本能获得繁荣发展,恰恰在于实行了和平宪法,改变了侵略政策。如今日本一小撮右翼势力又为过去的“皇国史观”招魂,把侵占他国说成正当行为,鼓吹“大东亚战争”是“正义”之举。日本如果任由这种思想发展,便会有重走军国主义老路的危险。因此,国人需经常回顾历史经验教训,奋发自强,警惕、谴责日本右翼势力的谬论,如此才有助于防止历史的悲剧重演。

来源:http://bbs.nuc.edu.cn/bbscon.php?bid=33&id=11333
更为详细的:http://baike.baidu.com/view/37734.htm

展开全文  
收起全文  
select语句where的作用 (MySQL学习)
发布于 2007-09-14 20:52 阅读:40707 评论:7 标签: mysql select where

      where,是个好东西!

      但你面对千万级的数据,如何更快的所用遍历数据,并根据自己的需要处理数据?where会起到多大的作用?

      当然,前提是数据中的某数据有它的规律。

      假如,有一表有一个字段tableid为int,唯一且索引。在这个时候我们可以使用where字句让遍历加速。

      比较以下两个语句:

以下是代码片段:

select * from `tablename` order by `tableid` limit $numStart, 10000;

select * from `tablename` where `tableid`>'$tableidStart' order by `tableid` limit 10000;

      上面的例子是想根据tableid的顺序来遍历整个表,所以有个排序的字句。显然,对于千万级别的库或表来说排序这个费时间的事情,但是没关系,前面已经假设它有索引了,所以时间相对还是可以承受的。

      索引有这么大的作用么?不信可以看看mysql数据存储目录下的.MYI文件的大小,再看看.MYD文件的大小,一目了然!常言道,不能占着茅坑不拉屎,mysql很好的避免了这一点!

      相信你可以注意到limit子句中,偶限制的条件是“10000”。在损耗内存和操作数据库的权衡中,我还是比较倾向损耗内存。

      言归正传,说一下where子句。如果没有where,只有“$numStart, 10000”,那么这个查询会如何进行呢?mysql会根据“order by `tableid`”以后,再找到前$numStart条数据,然后从第$numStart+1条数据开始返回1000条数据。请注意这个“再找到前$numStart条数据”的时间,它是随着$numStart的增加而增加的!

      时间的损耗,正在于此。没有时间的教训是不会注意到这个的。我曾犯过这个错误,然后认识到了这一点。但是,时间一长......又忘记啦!

      如果在这个时候,我们加上一个“where `tableid`>'$tableidStart'”,时间的损耗立马减少了!这个字段是有索引的,找到一个特定的值的时间几乎可以忽略!在这个时候,对这个有索引的字段排序再找前10000条(“limit 10000”),简直易如反掌!

      在我的测试中,假设没有where子句的语句要跑5个小时,那么加上这个where子句,只需40分钟!这个时间是怎么节省出来的?主要是在“再找到前$numStart条数据”的时间,前面提到这个几乎是个等差数列的方式的增长。而加上where子句,这个时间差几乎为0!

      特以此文,警示自己不再忘记!

      两条语句中使用两个变量,变量怎么来的,大家根据情况而定了。

展开全文  
收起全文