PHP修改图片大小

<?php
function resizeImage($sourceImage, $targetImage, $maxWidth, $maxHeight) {
list($sourceWidth, $sourceHeight, $sourceType) = getimagesize($sourceImage);
switch ($sourceType) {
case IMAGETYPE_JPEG:
$sourceResource = imagecreatefromjpeg($sourceImage);
break;
case IMAGETYPE_PNG:
$sourceResource = imagecreatefrompng($sourceImage);
break;
case IMAGETYPE_GIF:
$sourceResource = imagecreatefromgif($sourceImage);
break;
default:
return false;
}
$targetWidth = $sourceWidth;
$targetHeight = $sourceHeight;
if ($sourceWidth > $maxWidth || $sourceHeight > $maxHeight) {
$aspectRatio = $sourceWidth / $sourceHeight;
if (($maxWidth / $maxHeight) > $aspectRatio) {
$targetWidth = $maxHeight * $aspectRatio;
$targetHeight = $maxHeight;
} else {
$targetWidth = $maxWidth;
$targetHeight = $maxWidth / $aspectRatio;
}
}
$targetResource = imagecreatetruecolor($targetWidth, $targetHeight);
imagecopyresampled($targetResource, $sourceResource, 0, 0, 0, 0, $targetWidth, $targetHeight, $sourceWidth, $sourceHeight);
switch ($sourceType) {
case IMAGETYPE_JPEG:
imagejpeg($targetResource, $targetImage, 80); // 80 是图片质量,可根据需求调整
break;
case IMAGETYPE_PNG:
imagepng($targetResource, $targetImage);
break;
case IMAGETYPE_GIF:
imagegif($targetResource, $targetImage);
break;
default:
return false;
}
imagedestroy($sourceResource);
imagedestroy($targetResource);
return true;
}

//这个命令尝试修改图片大小,注意要启用GD库。
resizeImage(’11.png’, ’22.png’, 1000, 600);

王维《菩提寺》诗两首

王维《菩提寺》诗两首

其一:

《菩提寺禁裴迪来相看说逆贼等凝碧池上作音乐供奉人等举声便一时泪下私成口号诵示裴迪》

万户伤心生野烟,
百官何日再朝天。

秋槐叶落空宫里,
凝碧池头奏管弦。

 

其二:

《菩提寺禁口号又示裴迪》

安得舍罗网,拂衣辞世喧。
悠然策藜杖,归向桃花源。

 

细赏之,蛮有趣。

有意深入了解其义者,请百度百科。

ADODB 入门

1. 前言

ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件。现在 SFS3 系统 (校园自由软件交流网学务系统) 计划的主持人陈莹光老师,决定采用此一组件,为了让更多有心参与该项目的伙伴们能够顺利加入发展的行列,小弟认为有必要把 ADODB 的中文入门介绍写出来,以方便伙伴们参考备查。

虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易。

目前 ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC (其中 PostgreSQL、Informix、Sybase 的driver 是由自由软件社群发展之后贡献出来的)。

使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。

其实 ADODB 这样的发展理念,并不是首创的,DBI 比 ADODB 出现得更早,它提供 Perl 存取数据库时,使用一致的 API 呼叫接口。相信用过 Perl + DBI 的朋友,再来用 ADODB 时,会有一种似曾相识的感觉。

另外,ADODB 对用过 ASP 的人而言,应该不陌生,这类朋友对 ADODB 应该很容易接受。

我们来看一下,ADODB 的简单用法:

<?php
// 引入 adodb 的 inc 档,才能呼叫 adodb 提供的函式
include(‘adodb/adodb.inc.php’);

// 选择连接的数据库种类,以建立联机对象,
// 一旦对象建立,即可使用其成员函式来处理数据库。
// 以下 $conn 即此一物件(object)
$conn = &ADONewConnection(‘mysql’);

// 要不要显示侦错讯息,false 不要,true 要。
// $conn->debug = false;

$conn->debug = true;

// 连接数据库
// 用法:$conn->Connect(‘主机’, ‘使用者’, ‘密码’, ‘数据库’);
// 用例:
$conn->Connect(‘localhost’, ‘piza’, ‘ooo123’, ‘test’);

// 若欲采用持续性连接,上式可换用 PConnect:
// $conn->PConnect(‘localhost’, ‘piza’, ‘ooo123’, ‘test’);

// 设定 sql 命令
$sql = “insert into t values (‘abcde’, 18)”;

// 执行 sql 命令
$rs = $conn->Execute($sql);

// 检查执行结果,若 $rs == false,则呼叫 $conn 对象的成员函式 ErrorMsg()
if (!$rs) print $conn->ErrorMsg(); else print “OK!”;

?>

结果如下:

———————————————
(mysql): insert into t values (“abcde”,18)
———————————————
OK!

若把侦错关掉,即 $conn->debug=false,则结果如下:

OK!

以下,逐步为各位介绍:使用 ADODB 的重点方法。

2. 安装

ADODB 的首页在:http://php.weblogs.com/ADOdb,目前(2002/10/24)最新版是:2.42 版,可至 ADODB 下载或至台南县教网中心 FTP 下载。

安装 ADODB 的方法超极简单,只要下载、解压、放入适当位置,即可完成 ! 如下所示:

1. 下载:

$ ncftp ftp.tnc.edu.tw

cd sysop/ADODB

get adodb242.tgz

2. 解压:

假设我把 adodb242.tgz 放入 /var/www/html 中

$ cp adodb242.tgz /var/www/html

$ tar xvzf adodb242.tgz

如下所示:

adodb/adodb-cryptsession.php
adodb/adodb-csvlib.inc.php
adodb/adodb-errorhandler.inc.php
adodb/adodb-errorpear.inc.php
adodb/adodb-lib.inc.php
adodb/adodb-pager.inc.php
….以下省略….

现在,您在 /var/www/html/adodb 已安装好 ADODB 了。

3. 引入 ADODB

一旦安装好 ADODB,使用前,应把 ADODB 相关的含入文件引入您的程序中。adodb 目录放在任何位置无所谓,只要能指向正确路径文件名即可。一般而言,您的程序代码只须引入 adodb.inc.php。

作法如下:

在您的 PHP 程序中:

include(‘路径/adodb/adodb.inc.php’);

include_once(‘路径/adodb/adodb.inc.php’);

例:

若您的程序和 adodb 在同一目录下:

.
..
adodb/
something.php*

则:

include(‘adodb/adodb.inc.php’);

即可。

若位置是在某一个目录 somedir 中:

.
..
adodb
somedir/something.php

则必须使用:

include(‘../adodb/adodb.inc.php’);

除了 adodb.inc.php 这个含入档,ADODB 还提供许多 adodb-*.inc.php 的含入档,这些多半是为驱动某些数据库的特殊用法而设的。

若是引入 adodb-session.php 则可让您将 session 存入数据库中来维护运用。

若是引入 adodb-pager.inc.php,可方便您做分页显示。

若是引入 adodb-errorhandler.inc.php,可让您自订错误处理讯息。

若是含入 adodb-pear.inc.php,可让您使用 PHP4 的 PEAR DB 语法来使用 ADODB。此时,尚可使用 DSN 连接数据库的字符串设定。如 $dsn=”mysql://piza:ooo123@localhost/test”;

若是引入 tohtml.inc.php,可帮您在程序代码中,方便将取出的记录,转成 HTML 的表格(table)来显示。

若是引入 toexport.inc.php,可让您方便地输出 CSV 档或以 tab 分隔字段的数据文件。

若是引入 rsfilter.inc.php,可让您在使用记录之前,预做过滤处理。

若是引入 pivottable.inc.php,可让您使用 pivot table 功能(俗称 cross-tabulations)。

注意 ! adodb.inc.php 是一定要引入的,其它,则视您要使用那一个功能,再引入该含入档即可。

4. 选用数据库种类,建立联机对象

由于 ADODB 使用对象导向的作法,因此您在引入档之后,接着请视您后端数据库的种类,建立一个联机对象。作法如下:

以 MySQL 数据库为例:

$conn = &ADONewConnection(‘mysql’);

注:NewADOConnection 和 ADONewConnection 是一样的,二者皆可使用。

上例中的 ‘mysql’ 是指数据库的 drvier 的种类,ADODB 会据此呼叫对应的数据库 driver。

其它常用的 driver 有:access、ado、ado_access、ado_mssql、db2、vfp、ibase、borland_ibase、informix、imformix72、mssql、oci8、odbc、postgres、postgres64、postgres7、sqlanywhere、sybase….等等。

我们称建立的对象 $conn 为一 ADOConnection 对象,它代表与数据库的连接事务,皆透过这个对象来处理。ADOConnection 对象会提供许多处理的方法,以对象导向的说法,这些方法称为成员函式,这是外界存取此一对象的接口。

一旦联机对象建立之后,就有许多对象函式可供您使唤啦 ! 请看下一节的介绍。

5. 侦错模式

程序开发的过程,为了方便查出出现问题可能的地方,通常我们会打开侦错模式,俟程序功能确实稳定之后,再将它关闭。ADODB 提供侦错模式,存取数据库时,能显示其运作方式。

打开侦错模式,使用法:

$conn->debug=true

关闭侦错模式,使用法:

$conn->debug=false

6. 连接数据库

接着,使用 $conn 联机对象的 Connect 或 PConnect 函式来连接特定的数据库,此时必须提供 DSN (Data Source Names)相关数据,DSN 可能包括:主机名称、数据库使用者、数据库密码、数据库名称。不同的数据库种类,DSN 可能可以省略其中若干项。以 MySQL 而言,则上述四者都要提供。

该函式会传回 true 或 false,用以表示是否连接成功。

用例:

// 格式:$conn->Connect(‘主机’, ‘使用者’, ‘密码’, ‘数据库’);

$conn->Connect(‘localhost’, ‘piza’, ‘ooo123’, ‘test’);

或者,采持续性连接:

// 格式:$conn->PConnect(‘主机’, ‘使用者’, ‘密码’, ‘数据库’);

$conn->PConnect(‘localhost’, ‘piza’, ‘ooo123’, ‘test’);

若欲探查是否有联机成功,可用一个变量来接取传回值:

$mch=”localhost”;
$user=”piza”;
$pwd=”ooo123″;
$database=”test”;

$cok = $conn->Connect($mch, $user, $pwd, $database);

或者,采持续性连接:

$cok = $conn->PConnect($mch, $user, $pwd, $database);

if (!$cok) { echo “无法连接数据库 $database”; exit; }

7. 设定 sql 命令语法、执行 sql 命令

接下来,您就可以设计您要执行的 sql 命令语法,然后付诸执行。

$sql = “这里放 SQL 的命令语法”;

$rs = $conn->Execute($sql);

其中,$rs 为回传的结果,若 $rs == false,则表示执行失败,您必须仔细检查一下。

您不一定要把命令语法放在 $sql 变量中,也可以直接放入 Execute( ) 括号中。若命令较短无妨,若命令较长,我建议您还是用一个变量 $sql 来设定命令字符串吧 !

下一节开始,为各位介绍 SQL 的基本命令,如:Insert、Select、Update、Delete 等等的用法。

8. 插入记录(Insert)

Insert 的用法如下:

// $name 为字符串,$year 为数字
$name=’abcde’;
$year=18;

// 插入一笔记录,命令的大小写无妨,但数据表 t 及变量则大小写有分别 !
$sql = “INSERT INTO t VALUES (‘$name’, $year)”;

// $sql = “insert into t values (‘$name’, $year)”; 亦可。

// 执行
$rs = $conn->Execute($sql);

// 检查执行结果,进行错误处理;若正常,则继续其它动作….
if (!$rs) print $conn->ErrorMsg();

….以下省略….

ErrorMsg() 是错误显示的函式,它会取出错误讯息,并显示出来。

另外,ADODB 提供一种 记录集(RecordSet) 函式 GetInsertSQL(),可帮您产生 Insert 的语法。

例子如下:

<?php

// 引入 ADODB
include(‘adodb/adodb.inc.php’);

// 建立联机对象
$conn = &ADONewConnection(‘mysql’);

// 侦错
$conn->debug=true;

// DSN 四项基本数据设定
$mch=”localhost”;
$user=”root”;
$pwd=”jack168″;
$database=”test”;

// 连接至数据库 test
$conn->PConnect($mch, $user, $pwd, $database);

// 产生一笔空记录
$sql = “select * from t where year=-1”;

$rs = $conn->Execute($sql);

// 用一个空数组来装要更新的数据
$r = array();

$r[‘name’]=’john’;
$r[‘year’]=28;

// 用 GetInsertSQL 函式来制作一个完整的 sql 命令,此 sql 命令放在 $insertSQL 中
$insertSQL = $conn->GetInsertSQL($rs, $r);

// 执行插入
$conn->Execute($insertSQL);

$conn->Close();
?>

侦错讯息如下:

———————————————————–
(mysql): select * from t where year=-1
———————————————————–
(mysql): INSERT INTO t ( name, year ) VALUES ( ‘john’, 28 )
———————————————————–

9. 取出记录(Select)

Select 的用法如下:

<?php

// 引入 ADODB
include(‘adodb/adodb.inc.php’);

// 建立联机对象
$conn = &ADONewConnection(‘mysql’);

// 不侦错
$conn->debug=false;

// DSN 四项基本数据设定
$mch=”localhost”;
$user=”piza”;
$pwd=”ooo123″;
$database=”test”;

// 连接至数据库 test
$conn->PConnect($mch, $user, $pwd, $database);

// 执行 Select 由表格 t 取出数据,
// 它会传回一个 ADORecordSet 记录集对象 $rs (RecordSet)
// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录(row 或称 record),
// 该记录的所有字段数据的内容,存放在 fields 这个数组之中
// ,以数字为索引,第一个由 0 开始
$rs = &$conn->Execute(‘select * from t’);

// 若 $rs 为 false,则秀出错误讯息
if (!$rs) {
print $conn->ErrorMsg();
} else {

// 当尚未到达 记录集 $rs 的结束位置(EOF:End Of File)时,(即:还有记录尚未取出时)
while (!$rs->EOF) {
// 秀出所有字段,$FieldCount() 会传回字段总数
for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) {
print $rs->fields[$i] . ” “;
}

// 移至下一笔记录
$rs->MoveNext();

// 换列
echo “<br>\n”;
}
}

$rs->Close(); // 可不用
$conn->Close(); // 可不用
?>

$rs->fields[] 数组是由 PHP 的数据库扩展功能产生的,某些扩展功能并不支持使用字段名称当作索引。

若欲使用名称当作索引,也就是俗称的 hash 或 associative arrays,则需使用全域变量 $ADODB_FETCH_MODE 加以指定。

以下设定:使用数字索引 $ADODB_FETCH_MODE= ADODB_FETCH_NUM;

以下设定:使用名称索引 $ADODB_FETCH_MODE= ADODB_FETCH_ASSOC;

下面是使用名称索引的例子:

<?php

// 引入 ADODB
include(‘adodb/adodb.inc.php’);

// 建立联机对象
$conn = &ADONewConnection(‘mysql’);

// 不侦错
$conn->debug=false;

// DSN 四项基本数据设定
$mch=”localhost”;
$user=”root”;
$pwd=”jack168″;
$database=”test”;

// 连接至数据库 test
$conn->PConnect($mch, $user, $pwd, $database);

// 执行 sql 之前,指定使用名称索引
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

// 执行 Select,它会传回一个 ADORecordSet 记录集对象 $rs
// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录内容,
// 该记录存放在 fields 这个数组之中
$rs = &$conn->Execute(‘select * from t’);

// 若 $rs 为 false,则秀出错误讯息
if (!$rs) {
print $conn->ErrorMsg();
} else {

// 当尚未到达记录集结束位置(EOF)时,
while (!$rs->EOF) {
// 秀出所有字段

print $rs->fields[‘name’] . ” ” . $rs->fields[‘year’];

// 移至下一笔记录
$rs->MoveNext();

// 换列
echo “<br>\n”;
}
}

$rs->Close(); // 可不用
$conn->Close(); // 可不用
?>

10. 取出记录(使用 FetchRow)

这里示范 FetchRow 的用法:

$sql = “select * from t”;

$rs = $conn->Execute($sql);

if ($rs) {
while( $ar = $rs->FetchRow() ) {
print $ar[‘name’] .” ” . $ar[‘year’];
print “<br>\n”;
}

}

FetchRow() 会将取出的记录传回,您可用一个 array 来接取。

注意 ! 使用 FetchRow() 就不必再用 MoveNext(),FetchRow 内部会自动完成移至下一笔记录的动作。

 

 

https://www.xp.cn/b.php/21544.html

常用的adodb使用方法

 

常用的adodb使用方法

返回的记录集形式

define(‘ADODB_FETCH_DEFAULT’,0);

define(‘ADODB_FETCH_NUM’,1);

define(‘ADODB_FETCH_ASSOC’,2);

define(‘ADODB_FETCH_BOTH’,3);

以上的常量,是在adodb.inc.php里定义的,也就是$ADODB_FETCH_MODE 这个变量可以设置的值

常用的是:ADODB_FETCH_NUM 或 ADODB_FETCH_ASSOC

ADODB_FETCH_NUM 返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值

ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名

ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回 ADODB_FETCH_NUM, ADODB_FETCH_ASSOC的值,某些数据库不支持

An example:

$ADODB_FETCH_MODE = ADODB_FETCH_NUM;

$rs1 = $db->Execute(‘select * from table’);

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

$rs2 = $db->Execute(‘select * from table’);

print_r($rs1->fields); # 返回的数组是: array([0]=>’v0′,[1] =>’v1′)

print_r($rs2->fields); # 返回的数组是: array([‘col1′]=>’v0’,[‘col2′] =>’v1’)

< ?php

/*

常用的ADODB使用方法

整理:飞豹游侠 QQ:8527385 E-mail:liuchengcn # 163.com

如有错误之处,敬请谅解,并QQ或E-mail通知我,谢谢

*/

//定义数据库变量

$DB_TYPE = “mysql”;

$DB_HOST = “localhost”;

$DB_USER = “root”;

$DB_PASS = “”;

$DB_DATABASE = “ai-part”;

require_once(“../adodb/adodb.inc.php”);

$db = NewADOConnection(“$DB_TYPE”);//建立数据库对象

$db->debug = true;//数据库的DEBUG测试,程序开发期,可设置为true,正式版要注释掉这行,(默认值是false)

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

/*

返回的记录集形式

define(‘ADODB_FETCH_DEFAULT’,0);

define(‘ADODB_FETCH_NUM’,1);

define(‘ADODB_FETCH_ASSOC’,2);

define(‘ADODB_FETCH_BOTH’,3);

以上的常量,是在adodb.inc.php里定义的,也就是$ADODB_FETCH_MODE 这个变量可以设置的值

常用的是:ADODB_FETCH_NUM 或 ADODB_FETCH_ASSOC

ADODB_FETCH_NUM 返回的记录集中的索引,是数字形式,即数据库字段的排序顺序值

ADODB_FETCH_ASSOC 返回的记录集中的索引,是原数据库字段名

ADODB_FETCH_BOTH 和 ADODB_FETCH_DEFAULT 是同时返回 ADODB_FETCH_NUM, ADODB_FETCH_ASSOC的值,某些数据库不支持

An example:

$ADODB_FETCH_MODE = ADODB_FETCH_NUM;

$rs1 = $db->Execute(‘select * from table’);

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

$rs2 = $db->Execute(‘select * from table’);

print_r($rs1->fields); # 返回的数组是: array([0]=>’v0′,[1] =>’v1′)

print_r($rs2->fields); # 返回的数组是: array([‘col1′]=>’v0’,[‘col2′] =>’v1’)

*/

//连接数据库,方法有Connect,PConnect,NConnect,一般使用Connect. NConnect是连接特殊的数据库时才用

if (!@$db->Connect(“$DB_HOST”, “$DB_USER”, “$DB_PASS”, “$DB_DATABASE”)) {

exit(‘服务器忙,请稍候再访问’);

}

/*

$db-> $rs-> 此类的使用方法

Execute($sql,$inputarr=false),执行参数中的$sql语句,后面的那个$inputarr参数,一般情况下不需要

SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false) $numrows:取几条记录,$offset,从第几条开始取,SelectLimit,一般是用于分页,或只取出几条记录的时候用

*/

//Example: 取出多个记录

$sql = “SELECT * FROM table ORDER BY id DESC”;

if (!$rs = $db->Execute($sql)) {//执行SQL语句,并把结果返回给$rs变量

echo $db->ErrorMsg();//这个是打印出错信息

$db->Close();//关闭数据库

exit();

}

while (!$rs->EOF) {//遍历记录集

echo $rs->fields[‘username’] . ‘

‘;//print_r($rs->fields)试试,$rs->fields[‘字段名’],返回的是这个字段里的值

$rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!

}

$rs->Close();//关闭它,以便释放内存,每次操作完都进行一次关闭,养成编程的好习惯

//插入新记录

$sql = “INSERT table (user_type,username) VALUES (3, ‘liucheng’)”;

$db->Execute($sql);

//更新记录

$sql = “UPDATE table SET user_type=3 WHERE ;

$db->Execute($sql);

//删除记录

$sql = “DELETE FROM table WHERE ;

$db->Execute($sql);

// 取单个记录

//$db->GetRow($sql), 取出SQL中的第一条记录,并返回一个数组,如果出错,则返回false

$sql = “SELECT username,password,user_type FROM table WHERE ;

$data_ary = $db->GetRow($sql);

if ($data_ary == false) {//如果用===,可能不是你想要的结果

echo ‘没有找到此记录’;

exit();

} else {

echo $data_ary[‘username’] . ‘ ‘ . $data_ary[‘password’] . ‘ ‘ . $data_ary[‘user_type’] . ‘

‘;

}

//这里没有用到$rs,则不需要$rs->Close();

//另一种方法 (使用上面的方法比较好,又方便)

$sql = “SELECT username,password,user_type FROM table WHERE ;

if (!$rs = $db->Execute($sql)) {

echo $db->ErrorMsg();

$db->Close();

exit();

}

if (!$result = $rs->FetchRow()) {

echo ‘没有找到此记录’;

exit();

} else {

echo $result[‘username’] . ‘ ‘ . $result[‘password’] . ‘ ‘ . $result[‘user_type’] . ‘

‘;

}

//$db->GetOne($sql) 取出SQL中的第一条记录的第一个字段的值,如果出错,则返回false

$sql = “SELECT COUNT(id) FROM table”;

$record_nums = $db->GetOne($sql);

echo $record_nums;

$sql = “SELECT username,password,user_type FROM table WHERE user_;

$result = $db->GetOne($sql);

echo $result;//此值为记录中的username的值

/*

在进行添加,修改,删除记录操作时,要对字符串型的字段,使用$db->qstr()对用户输入的字符进行处理,对数字型字段,要在之前,进行数据判断

更新记录,注意:这是针对php.ini中,magic_quotes被设置为Off的情况,如果不确定,可以使用

$db->qstr($content,get_magic_quotes_gpc())

注意:content= 等号右边,没有单引号

*/

$sql = “UPDATE table SET content=” . $db->qstr($content) . ” WHERE ;

$db->Execute($sql);

/*$db->Insert_ID(),无参数,返回刚刚插入的那条记录的ID值,仅支持部分数据库,带auto-increment功能的数据库,如PostgreSQL, MySQL 和 MS SQL

*/

//Example:

$sql = “INSERT table (user_type,username) VALUES (3, ‘liucheng’)”;

$db->Execute($sql);

$data_id = $db->Insert_ID();

echo $data_id;

/*$db->GenID($seqName = ‘adodbseq’,$startID=1),产生一个ID值.$seqName:用于产生此ID的数据库表名,$startID:起始值,一般不用设置,它会把$seqName中的值自动加1.支持部分数据库,某些数据库不支持

Insert_ID,GenID,一般我用GenID,使用它的目的,是在插入记录后,要马上得到它的ID时,才用

*/

/*Example:

先创建一个列名为user_id_seq的表,里面只有一个字段,id,int(10),NOT NULL,然后插入一条值为0的记录

*/

$user_id = $db->GenID(‘user_id_seq’);

$sql = “INSERT table (id, user_type,username) VALUES (” . $user_id . “, 3, ‘liucheng’)”;

$db->Execute($sql);

/*

$rs->RecordCount(),取出记录集总数,无参数

它好像是把取出的记录集,用count()数组的方法,取得数据的数量

如果取大量数据,效率比较慢,建议使用SQL里的COUNT(*)的方法

$sql = “SELECT COUNT(*) FROM table”, 用此方法时,不要在SQL里加ORDER BY,那样会降低执行速度

Example:

*/

$sql = “SELECT * FROM table ORDER BY id DESC”;

if (!$rs = $db->Execute($sql)) {

echo $db->ErrorMsg();

$db->Close();

exit();

}

$record_nums = $rs->RecordCount();

/*

如果想对某一结果集,要进行两次同样的循环处理,可以用下面方法

以下,只是一个例子,只为说明$rs->MoveFirst()的使用方法

*/

$sql = “SELECT * FROM table ORDER BY id DESC”;

if (!$rs = $db->Execute($sql)) {

echo $db->ErrorMsg();

$db->Close();

exit();

}

$username_ary = array();

while (!$rs->EOF) {

$username_ary[] = $rs->fields[‘username’]

echo $rs->fields[‘username’] . ‘

‘;//print_r($rs->fields)试试,$rs->fields[‘字段名’],返回的是这个字段里的值

$rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!

}

$username_ary = array_unique($username_ary);

$rs->MoveFirst();//将指针指回第一条记录,无参数

while (!$rs->EOF) {

echo $rs->fields[‘password’] . ‘

‘;//print_r($rs->fields)试试,$rs->fields[‘字段名’],返回的是这个字段里的值

$rs->MoveNext();//将指针指到下一条记录,不用的话,会出现死循环!

}

$rs->Close();

/*

当本页程序,对数据库的操作完毕后,要$db->Close();

*/

$db->Close();

/*一个不错的方法 */

if (isset($db)) {

$db->Close();

}

?>

菜鸟工具–AI等网址集

AI 应用 | 更多
ChatGPT
一款功能丰富、智能化、易用性强的人工智能工具,适用于各种内容创作者
文心一言
百度出品的人工智能语言模型
Notion AI
这是真人工智能,不是人工智障
Stable Diffusion
AI 绘画,输入关键字生成图片
Civitai
训练好的模型分享网站
讯飞星火
科大讯飞大语言模型
Nijijourney
魔法般的二次元绘画生成
Midjourney
是一款搭载在 Discord 上的人工智能绘画聊天工具
Tome AI
由AI驱动的讲故事形式
Character AI
是一个神经语言模型的聊天机器人网络应用
Jasper
文本生成器,使用 AI 制作出令人惊叹的文案
Tabnine
是一个AI代码助手
Copilot X
GitHub 和 OpenAI 合作开发的一个代码自动生成工具
Clipdrop
AI 技术处理图像的工具
Writesonic
创作的最佳AI作家
Copy.AI
营销软文,自媒体稿件小助手
Fireflies
该工具可插入 Zoom、Teams 或 Webex 等流行的视频会议工具,并自动执行做笔记和创建转录的过程
Artbreeder
创建令人惊叹的插画和艺术
dreamlike.art
在几秒钟内创造出令人惊叹的原创艺术
getimg.ai
创造出令人惊叹的头像
stockimg
可帮助用户在几分钟内生成徽标、书籍封面、横幅等
Phygital+
让创作者在没有代码的情况下使用神经网络
Papercup
人工智能驱动的配音
Voice Mode
免费即时变声器
Soundraw
全新的AI音乐平台
LALAL
提供音乐源分离服务,使用ai技术从任何音频中提取人声,伴奏和多种乐器
Boomy
在几秒钟内创作出原创歌曲
Mubert
为内容创作者、品牌和开发者提供的新的免版税音乐生态系统
Riffusion
一个基于AI生成音乐的项目
polyAI
语音助手,企业智能客服语音服务
Cascadeur
最简单的AI辅助关键帧动画制作软件
Synthesia
该平台提供了一个直观的界面,可以简化任何人的视频创作
Fliki
用AI语音将文字变成视频
pollinations
您的引擎 个性化的媒体
Autodraw
人工智能画画平台
Palette.fm
一个照片上色神器
通义千问
阿里开发的大语言模型
Bard
Google 推出的 AI 聊天对话机器人 Bard
Codeium
人工智能编码及检索
Codiga
AI 代码实时分析
文心一格
百度 AI 产品,创意和艺术辅助产品
盘古大模型
华为盘古大模型,重塑千行百业

十大赛区初赛作文试题

第十七届全国中学生创新作文大赛各赛区初赛试题

川渝赛区

(包括四川、重庆)

“背后”一词,本义有二:一是指人或事物的背面,与“前面”是一体两面的关系;一是指人或事物的后面,与“前面”不属一体,而有距离。在不同的语境中,“背后”被赋予了不同的引申意义:

1.“当事人不在场的情况下”,或者“背地里”。譬如周而复《上海的早晨》:“台上一套,台下一套;当面一套,背后一套。” 再如越王勾践的“卧薪尝胆”,面对宿敌是韬晦和忍辱,“背后”却在暗自努力,“十年生聚,十年教训”。

2.“没有其他人在场的情况下”,“一个人的时候”。譬如古人讲“慎独”,不仅在人前严格要求自己,而且在人后依然严格地规范自己而不逾矩,不放纵。

3.“地理空间上的后方”,或者“大后方”。譬如在“九一八”之后,日寇先后侵占我国东北、华北、华东、华中,那时候,四川(包括今天的重庆和四川)被称作大后方。川军战士王建堂背着父亲王者成制作的“死字旗”,出川抗日:“惟有慷慨直前,勇赴国难,断无退后之理。背后是四川吾乡,是吾乡父老,是吾国存续的希望”。

4.抽象意义上的后方,常常与依靠或支持的语义相关。在英文中,back一词也有支持的意思。巴金的《利娜·第四封信》写道:“他们又能干,又聪明,背后又有很大的靠山。”再如,饱受美国制裁的华为公司推出Mate 60 Pro以后,媒体评论道:“华为这次凭什么‘捅破天’?它背后是强大的中国!”

请以“背后”为题写一篇文章,不限题材,不限文体,字数在1200-1500字之间。

山东赛区

无论从哪方面说起,途中是认识人生最方便的地方。车中,船上和人行道可说是人生博览会的三张入场券,可惜许多人把它们当做废纸,空走了一生的路。我们有一句古话:“读万卷书,行万里路。”所谓行万里路自然是指走遍名山大川,通都大邑,但是我觉得换一个解释也是可以的。一条路你来往走了几万遍,凑成了万里这个数目,只要你真用了你的眼睛,你就可以算是懂得人生的人了。

——摘自梁遇春《途中》

    这段话引发了你怎样的思考和感悟,请自拟题目,写一篇文章,不限题材,不限文体,字数在1200-1500字之间。

广东赛区

以“_________我在_________”为题,写一篇文章。

要求:

1. 把题目补充完整,可以在“我在”的前面或后面补充,也可以前后都补充;

2. 不限题材,不限文体,不要套作,不得抄袭,不得泄露个人信息;

3. 字数在1200-1500之间。

江浙沪赛区

(包括江苏、浙江、上海)

南北朝时期,丘迟在给友人的信中写道:“暮春三月,江南草长,杂花生树,群莺乱飞。”

唐代白居易有一首脍炙人口的词:“江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝,能不忆江南?”

宋代王安石的几句诗朴素而动人:“草色浮云漠漠,树阴落日潭潭。三十六陂流水,白头想见江南。”

朱自清在北京看到荷塘,想到莲花虽然“过人头”了,却不见一些流水的影子,“这令我到底惦着江南了”。

华裔新加坡歌手林俊杰的一首歌中则有这样的句子:“离愁能有多痛 痛有多浓/当梦被埋在江南烟雨中/心碎了才懂”。

在一代代中国人的心中,所谓江南真是乡愁之所系,它显然不只是地理性的存在。2023年的你,对于江南,是否仍然能与古人产生共鸣,又是否有自己独到的体验、发现与想象呢?

试以江南为题眼(可与若干辅助性的字眼组成题目,如“我**江南”或“江南的**”等等),写一篇1200-1500字的文章,让人更懂江南(而不只是某个特定的地方),也更懂身在江南的你。不可写成诗歌。

北京赛区

共情,又叫同理心,指站在对方的角度去理解其感受。共情能力较强的人,往往能够设身处地地体验他人处境,从而较为深切地理解他人心情。共情,可以表现在人际交往中,可以体现在阅读欣赏中,也可以显现在文化交流中……有人说,共情有助于解决很多问题;也有人说,只有共情是不够的……

请以“共情”为内容,自拟标题,写一篇文章。不限题材,不限文体,字数在1200-1500 字之间。

云南赛区

“云”,在汉语词典中有以下几种解释。

①说:曰。如:人云亦云。《论语·子罕》:“子云:吾不试,故艺。”

②为;是。《后汉书·袁术传》:“虽云匹夫,霸王可也。”

③有。《荀子·法行》:“事已败矣,乃重太息,其云益乎?”

④友善。《诗·小雅·正月》:“洽比其邻,昏姻孔云。”

⑤如此。《左传·襄公二十八年》:“子之言云,又焉用盟?”

⑥或许。《列子·力命》:“仲父之病疾矣,不可讳,云至于大病,则寡人恶乎属国而可?”

⑦作语助,无义。(1)用于语首。《诗·邺风·简兮》:“云谁之思?西方美人。”等。

⑧大气中的水蒸气。例,云,云彩。

⑨网络。狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取“云”上的资源,按需求量使用,并且可以看成是无限扩展的,只要按使用量付费就可以。从广义上说,云计算(cloud computing)是与信息技术、软件、互联网相关的一种服务,这种计算资源共享池叫做“云”,云计算把许多计算资源集合起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。也就是说,计算能力作为一种商品,可以在互联网上流通,就像水、电、煤气一样,可以方便地取用,且价格较为低廉。

⑩教育云。实质上是指教育信息化的一种发展。具体的,教育云可以将所需要的任何教育硬件资源虚拟化,然后将其传入互联网中,以向教育机构和学生老师提供一个方便快捷的平台。现在流行的慕课就是教育云的一种应用。慕课MOOC,指的是大规模开放的在线课程。现阶段慕课的三大优秀平台为Coursera、edX以及Udacity,在国内,中国大学MOOC也是非常好的平台。

 请以“云”为题写一篇文章,不限题材,不限文体,字数在1200-1500字之间。

湖南赛区

 

瞬间作为一个汉语词语,一指船行如箭,瞬间来到近旁,二指形容刹那间,须臾,一眨眼的工夫。也可以作为文学描写中形容时间流逝迅速的单位。

请以“瞬间之美”为题写一篇文章,不限题材,不限文体,字数在1200-1500 字。

福建赛区

拨开你长睫上重重的夜

就发现神话很守时

星空,非常希腊

—— 摘自余光中《重上大度山》

 

上面诗句出自福建永春籍著名诗人余光中的《重上大度山》,其中“星空,非常希腊”一句,曾因“西化”的句法,在文坛引起不小争议。有人批评说这是西化严重的“病句、劣句”,有人则赞赏这是使中文写作更加鲜活多样的“善性西化”。这不禁让人联想起荷兰后印象派画家文森特·梵高最富盛名的油画作品《星空》(又名《星月夜》)——同样在问世之初遭遇了毁誉参半的命运。

请结合你对文艺创新及创意写作的理解,以“星空”为题,完成一篇文章,不限题材,不限文体,字数在1200-1500字之间。

东北赛区

(包括黑龙江、吉林、辽宁)

“原来”是汉语中的一个常用词。它在古代白话中也有偶见,但在现代的意义更加丰富微妙。综合起来,可作以下几种用法和理解:

1.作为名词、形容词或副词,表示原本、起初,本来的、没有改变的,以往某个时期、当初……这是最寻常的意义;

2.作为副词,用于发现从前不知道的情况,含有恍然醒悟的意味,例如:“我以为是谁呢,原来是你”;

3.“原”有推求本源的意思,因此就词语结构来说,“原来”含有“探究本来、原其来处”的意思,这时带有动词性质。

在变动不居的时间长河中,“原来”也往往引起人的复杂意绪。

对你来说,“原来”意味着什么?引起你的哪些事实的回忆、情感的激荡、情节的想象、哲理的品味与思索?

请以“原来”为题写一篇文章,题材、体裁均不限,字数在1200-1500字之间。

综合赛区

(包括天津、安徽、河北、山西、内蒙古、江西、河南、湖北、广西、海南、贵州、陕西、甘肃、青海、宁夏、新疆、西藏、香港、澳门、台湾)

请以“诗歌里的秋季”为题写一篇文章,不限题材,不限文体,字数在1200-1500字之间。

 

https://www.cxzwds.cn/school/competition_process

生机育生命,生命寓生机

生机育生命,生命寓生机

张珑献 河南财经政法大学

 

生机里有生命的影子,生命长大是生机的样子。

——题记

 

篱笆扎成的小院,围起了属于农人的温馨。家家户户,便成了村落。村落里有啄米的母鸡,有织布的妇人,有戏耍的孩童。映着村落的江河上,有渔人,他们或打鱼,或收网,或归家,或闲聊。一动一静、一呼一吸,无不是生命,无不是生机。

远山重叠中,是飘起炊烟的人家,青青绿绿下,是掩不住生机,是人间的烟火气。自然给予了人类以生存的条件,而人类又带给了自然满满的、无可替代的生机。

渔船远了,飘向浩渺的江面。离了山中的家,绕过重重山水,便见了江面上精巧又阔大的楼台。木桥长长,连接了江心与陆地,也连接了现实与向往,“勾心斗角”的亭台可供贵族赏游。远离了官场,身处于盎然之中,不知他们是否也会想过归隐山林,过起日出而作、日落而息的农家生活,成为这天地间的一粒沙。虽渺小,却幸福;虽微弱,却生机。金碧辉煌的楼台可以望见山中质朴的村落。用浮生荣华换一世安宁。

郁郁葱葱里,有错落人家。院中的小路,一直延伸到江边。江边有山树,用矿石色点染,格外明丽。山间树林,生机勃勃。林荫自山脚而始,沿山路而上,到山顶而终。生动了山石,点染了人家。村落的炊烟,在山间袅袅升起,勾着半山腰的浮云,唱出了生命与自然的绝响。清溪淙淙,细笔勾勒出的水流,以瀑布的姿态,飞驰急下,既而汇入澜澜江水,山崖上,跑出家院的孩童也为这景色倾倒。望这山,这树,是满眼的生机,盎然的绿色中有江山的秀丽和盛世的太平。

青山与天空相照应,是天地的辽阔。以天空为背景,村落成了缀在江山上的明珠,散发着生命的光芒。旷野的鸟,在《千里江山图》中找到了天空。浅浅淡淡,没有工笔勾勒,随性自然中是飞鸟的自由。或形单影只,或成群结队,但都无比真实。小小的鸟,点在不加修饰天空中,映着缭绕的云,真真是一幅绝佳的旷野飞鸟图,铺开在天幕上,也闯入了小院中妇人的织机里。

其实,村落就是生命,置于自然中,就是最好的生机。

王希孟接过宋徽宗的画笔,泼墨写意。将大宋的江山万里,浓缩进这幅《千里江山图》,青矿赭石的山水,永不暗淡,正寓意这太平人间万世长留,这村落的烟火气生生不息。《千里江山图》的重山峻岭中,是作者画不尽的意气风发,十八岁的年纪,天下至尊的赏识,让王希孟无法不自傲。这样的少年意气,被淋漓尽致地画进了山水中。所以,无处不明快,无处不生机。开朗的心情,阔大的境界,更让这幅江山图成为千古一绝。

村落人家,成了画中最生动的线索。平远、高远、深远,在画中都得到了最独特的诠释。《千里江山图》是宋人对当时太平盛世最真诚的告白,是生机中的生命,生命中的生机。

 

作者简介:张珑献,河南财经政法大学学生。河南省青少年作家协会会员、河南省报告文学学会会员、洛阳市作家协会会员、洛阳市隋唐史学会会员。河南省三好学生、洛阳市优秀共青团员。曾获得叶圣陶杯现场决赛“全国一等奖”等多种奖项。出版个人散文集《到远方去》。

我的留守童年

我的留守童年

●陈西莹(绥化学院文学与传媒学院2010级)

 

三岁那年,我成了留守儿童。

家里穷,父母要去打工赚钱,爷爷奶奶嫌我是女娃儿,不愿养我,于是,我被送到了姥姥家。

 

我的留守乐园——老房子

 

姥姥家在农村,一所破旧的土房就是姥爷姥姥生活的地方。从外面看,厚厚的土墙,由于没有精细打磨凹凸不平,棱棱角角,指不定哪处年久未修便会出现片片干裂,耗子洞常常会从这些裂缝中冒出来。还有一个连着一个的燕子窝,燕子屎经常拉得哪都是。就是这个破旧的老房子成了我童年的乐园。

走进屋里,地面也是泥土地,同样凹凸不平。姥姥说我刚来时,不熟悉,不知道被绊倒过多少回。

整个土房子就两个房间,一个屋子里一铺大火炕,三个人在大炕上住,大到无论横着睡竖着睡都不会掉下地。另一个屋子是做饭的地方,一口大黑锅,一些厨具,一个木质的四脚炕桌。最吸引我的是立在酸菜缸旁边的一个足有一米长的擀面杖,姥爷说我那时就不像个小女孩,顽皮得很,每次邻家的瘸腿曹爷爷拄着拐棍来找姥爷,我就进屋拿着擀面杖跑出去,把擀面杖当作拐棍学曹爷爷走路,这时姥爷总是一把抓住我,让我趴在炕桌上用擀面杖打我的屁股。那时挨打了也不怕,因为姥爷从未真正打疼过我,但我每次总会故意挤出眼泪哭起来,姥爷就会心疼得马上住手,让我骑脖梗儿。可嘴里还不住地唠叨“下次不许那样淘气了”,我就在他的背上偷笑。

在老房子里,我还能看到独特的真实版“动画片——《猫和老鼠》。”姥姥家有一只瘦瘦的老猫,是姥姥要回来养着抓耗子用的。土房子的墙壁干裂的地方多,耗子洞也多,经常会有耗子爬进土房子里。这个瘦瘦的老猫于是成了家里的功臣,一旦看见老鼠出现,它那瘦身子便轻灵地飞过去逮住耗子,按倒撕咬。这真实版的《猫和老鼠》动画片给我的童年带来了无穷的乐趣。

天气变暖时,我经常会和姥姥坐在院墙旁边的老树下乘凉。有时,发现墙边长出了牵牛花的小嫩芽,姥姥就找到很多长树枝并排立在墙边。几天过去,院墙下就长出了一株一株的牵牛花。它们匍匐在墙头,朝阳下开着粉红色的小花儿,绕着枝条攀援而上,那么美,那么鲜艳,绽放了我留守童年的所有快乐。

 

我的留守伙伴——二傻子舅舅

 

四姥爷有个小儿子,只比我大四岁,我却要叫他小舅。

小舅不乐意说话,无论你跟他说什么,他只会呵呵呵呵地傻笑。于是我就给他起了个外号:二傻子。二傻子舅舅乐意跟我玩,天天早早地就来到姥姥家门口的石凳那坐着等我出来。

二傻子舅舅遇事没啥主意,一般都听我的。邻居家小园子里种了几株草莓,结的草莓通红,看着就眼馋。姥爷说来年种些给我吃。我心里想象着透红草莓的香甜,馋得流口水,于是开始盘算着怎样能吃到。

一天午饭后,姥爷姥姥饭睡觉了,我就叫来二傻子舅舅,让他帮我去偷几个草莓回来。本以为他会不敢,没想到我说完之后,他憨憨地傻笑着点点头,一点儿都没迟疑。

两家院中间隔着土墙,比我高很多。二傻子探探头看见园里没人就跳过去,麻利地摘了几个通红的草莓,我在墙这头接着,一共六个。他爬回来时一不小心摔了个屁股朝天,我赶紧扶起他,他擦了擦额头的汗依然傻笑着。

我那时真是贪吃,也没洗,一口一个地眨眼就吃光了,竟然一个都没给二傻子舅舅留。最后一个吃下去后,我看到他深深地咽了一下口水。不过,他什么都没说,还是呵呵地傻笑着。

偷吃草莓的事很快就被发现了,原因在于邻居家一共就结了六个通红的草莓都被我的二傻子舅舅摘回来了。邻居奶奶来找我姥姥问是不是我这个淘气的丫头偷的,奶奶抓起擀面杖要来揍我,不爱说话的二傻子舅舅竟然拦在我前面大声地说:“不是丫儿偷吃的,是我偷吃的!”结果他替我挨了五下子擀面杖。

那以后我就不再叫他二傻子了,而是叫他舅舅。

 

我的留守趣事——抓家雀儿,做冰灯

 

我喜欢冬天,因为冬天有许多开心的事。

头一件就属抓家雀儿了。家雀儿的学名是麻雀,很多农村孩子都不陌生。

抓家雀儿最好的时候就是冬天大雪之后,田野里家雀儿的食物都被大雪覆盖得严严实实,找不到食物的家雀儿会自觉地跳入姥爷设的陷阱里。

我经常缠着姥爷带我抓家雀儿。每每这时,姥爷就会用扫帚在院里扫出一块空地,在上面撒一些小米,找一个大一点的筐,用一根小木棍儿把它支起来,小棍儿的底端拴上一条足够长的绳,手牵着绳子的一头躲在柴火垛后面,等着家雀儿来啄食。不一会儿就有家雀儿从树上飞过来,慢慢地向筐靠近,它小心地观察,自认确实没有危险的时候,就会到筐下对准小米猛啄。这时姥爷手一拉绳子,家雀儿便进了筐。我稍大些,就吵着要牵绳子,结果,每次不是拉早了,就是拉晚了,总是让狡猾的家雀儿逃脱了。姥爷就笑着说我连个家雀儿都耍不过。

另一件有趣的事就是做冰灯。每年三十晚上姥爷都要去远处田野那边的坟圈子上坟,因此差不多腊月二十七八就开始准备冻冰灯。姥爷拿一小桶水倒入桶中,拿到外面先冻着,时不时地留意着,要在水没冻实之前把桶拿入屋里,稍微缓缓外面的冷气,再轻轻地拔出只冻了外层的冰坨,拿个小锤子轻轻凿开冰坨中心,把里面没冻实诚的水倒出来,这样就做成了一个内空外实的冰灯外罩。三十当天姥爷就会拿着这个冰灯外罩、一根蜡烛和一包火柴去上坟。在一片银白雪地下闪着一点又一点的红光,这是淳朴人们对过世人的怀念。姥爷常说:“冰灯要冻得实诚的,免得漏风吹灭蜡烛,那样你太姥爷和太姥姥就找不到回家的路了。”为了让姥爷冻出最好的冰灯,我就充当了跑腿报信儿的,我一趟一趟地跑到门外去看冰灯冻没冻好,还常常把手探进桶里去摸冻没冻实,有一次竟然手粘到冰上拿不下来。姥姥笑说:“我看没等冰灯冻好,你倒要冻成冰了。”年三十的晚上坟圈子那边点燃了无数个自制的冰灯。我总是穿着棉袄,戴着姥爷的狗皮帽子,在门口放一凳子,爬上去看着远处,等着姥爷回来。

我总感觉冬天充满了活力,田野里白雪一片,那是我看过的最洁净的一片土地了。

我的留守童年没有悲伤,没有孤独,有的是无尽的快乐与温暖。感谢那片土地,感谢那些纯朴的人……

(发表于《中国校园文学》2013年第10期)

芦苇与少年

芦苇与少年

●李思阳(绥化学院文学与传媒学院2014级)

 

城外有大片的湿地,湿地里有连天的芦苇。以前,这是穷得活不下去的男人救命的东西。

割芦苇,晒干,卖钱。

从城里到湿地路途遥远,湿地常常涨水,深得可以没了矮个子的脖子。那里的狼成群结队,晚上可以看见它们绿油油的眼睛,不是穷得活不下去的男人不会去吃这份苦,遭这份罪。

他就是这些男人中的一个,可他算不上男人,刚刚十四岁,瘦,矮,大脑袋,跟着一帮人去割芦苇。

同去的人都是壮汉,没人愿意和他搭伴,也没人愿意搭理他,他是个半大孩子嘛。于是他就跟着,也不说话,给跑跑腿,做做饭。

慢慢地,同去的人接纳了他,支使他去骑马买个酒或是炖一大锅鱼。鱼是在水泡子里现捞的,也不刮鳞,抓一把辣椒,一把盐,满满地炖一锅。

他们继续赶路,要去芦苇最多最好的地方,可是下雨了,暴雨夹杂着冰雹,涨水了。

他个子矮小,根本过不去,其他人年纪大,个子高,过得去,谁也不愿意带着他这个累赘。

他们说:“你在这等着,等俺们打完苇子回来接你。”给他留了几瓶劣质烧酒和一些干粮,走了。

他没办法,可谁叫自己个矮呢。他不想住在前两天他们搭的简易棚子里,棚子是用树皮和树枝胡乱搭的,不遮风也不挡雨,他想找个安全的地方住。

他一边走,一边胡思乱想,突然,他觉得身后有响动,他不敢动了。他感到有两个毛茸茸的爪子搭在自己肩上,沉甸甸的。

是狼!

他怕,但却不敢停下,也不敢回头去看。他听人说,狼把爪子搭在人肩上的时候,人是不能回头的,人要回头,狼就会一口咬断你的喉咙!

他只得慢腾腾地往前走。

他在前面走,狼把两只爪子搭在他的肩上跟着他走,或者说,他是背着狼走的。

他太紧张了,紧张得甚至冷静下来。他感觉到狼嘴里腥臭的热气喷在他的脖子上,这种感觉很多年后他还记得很清楚。

走了很久很久,他远远地听见有个人说:“那是个什么玩意儿?”

“啪!”

这是鞭子抽到肉上的声音,凛冽得让他耳膜发痛。

他听见狼跑了,听见一个老头说:“这孩子,胆真大!”

老头是个猎人,独居,靠打猎捕鱼为生,住在附近的小屋里。

他求老人,能不能让他在小屋里住一宿。

老头毫不犹豫地拒绝了。

他只得回到自己的简易棚子里。

天已经黑透了,星星很亮,一闪一闪的。

他没睡,即使困得要死,他不敢睡,因为只有他一个人,太静了。可很快,就不静了,因为狼来了。

可能是白天那只狼带了伙伴来,也可能是新的狼群,他不知道。透过棚子的缝隙,他看到外面的狼群,看到一双又一双绿莹莹的眼睛。他攥紧了手里的刀,盯着外面绿油油的眼睛,  听着狼嚎的声音,坐了整整一夜,一动不动。

第二天一大早,狼群退了,他也跑了。他把所有的酒和干粮都拿着,跑到昨天救他的老头那里。他把烧酒都送给老头,老头看在酒的份上,松口了,允许他在屋里住几天。

老头出门打渔去了,小屋里只剩了他一个人。没有狼,有吃的,他很满足。小屋的不远处就是河,河里有芦苇,他是来割芦苇卖钱的,他没忘。

割芦苇嘛,要赤脚踩在水里,一手握着把锋利的刀,另一只手拢住芦苇,一刀下去,就有了一把割好的芦苇。他干活麻利,转眼间地上就堆了大把大把的芦苇。刚割下的芦苇有水分,得晒。于是他不停地割芦苇,晒芦苇,晒芦苇,割芦苇,割了半个月。

这天晚上,他煮鱼的时候,老头回来了,很惊奇:“孩子,你咋还在这?”

他说:“打苇子的人让我等他们回来啊。”

“涨水了,还等啥?快吃饭,吃完饭我送你走!”

芦苇卖了钱,一小叠毛票,他仔仔细细揣好。他高兴坏了,有钱了,可以坐火车回家, 他是走着来的。

车是夜车,半夜,他坐在火车站的椅子上等车。铁警来来回回地巡逻,来,看他一眼,回,看他一眼,来来回回,看了他一眼又一眼。

不怪铁警看他,太吓人了嘛。大热天,一个半月不洗澡,浑身上下脏兮兮的,像是从山里跑来的野猴子。

铁警终于在他面前站住了:“哎,你跟我来一趟。”

他和我讲到这的时候自己都笑了,那个时候齐齐哈尔监狱里跑了个犯人,到处流窜,铁警以为是他呢。

他把事情和铁警说清楚,铁警说:“你咋跑那地方去了?你能活着回来就是命大,哎,你吃饭了吗?”

他摇头,太晚了,火车站的小卖部都关门了。

铁警带着他去了小卖部,“咣咣”地敲窗户,窗户打开,里面的人哈气连天:“干啥干啥?大晚上的!”

铁警嬉皮笑脸:“有个小孩还没吃饭呢,卖他个面包哈!”

这是他一个半月以来吃的最符合人类饮食标准的食物。

他像个野人似的回了家,他妈正坐在炕上,昏昏欲睡。他把挣来的钱交给他妈,他妈一把把钱抢过来,数了一遍,出门打牌去了。

问也没问自己一个半月杳无音讯,造得像野人似的儿子,一个字都没问。他应该很伤心吧,那些一同割芦苇的人早回来了,他妈也没去问一问儿子怎么没回来。不过,他应该习以为常了,他妈一直这样。比起以后到处借钱打纸牌,比起他给他妈还打牌欠下的债,一直还到五十岁,这又算得了什么呢?

他和我讲的时候,我问他:“你是她亲生的吗?不是抱养的吧?”

“亲生的。”他说。

后来有一天,他遇见了当时说回来找他的那些人,那些人见到他很惊奇:“哎?你没死啊?俺们都以为你死了呢!”

“你们去找我了吗?”他问。

“没有,俺们走的时候就以为你肯定得死,就没去找你!”

姥爷现在是个高大的老人,每天早上逛逛菜市场,晚上跳跳广场舞,吃饭的时候会倒上一杯北大仓白酒,慢悠悠地喝一中午。

有时候,他会讲他的故事,我想,那是一个属于普通人的传奇

(发表于《百花园》2017年第3期)