1.十几乘十几:
将这个数加上另一个数的个位数,得数作前积,然后两个个位数相乘得数作后积,满十左进。(口诀:先加后乘)
例如:11*11=121,前积 11+1=12,后积 1*1=1,连写则是 121。
19*19=361,前积 19+9=28,后积 9*9=81,满十左进 28+8=36,1接着写,即 361。
2.一百零几乘一百零几(或一百一十几):
较大的乘数加上较小乘数的个位,得数作前积,两个尾数(包括十位和个位)
相乘得数作后积,没有十位用零补。(口诀:先加后乘)
3.个位是1的两位数相乘:
十位数与十位数相乘得数作前积,十位数与十位数相加得数作后积,得数接着写,满十左进,最后再添加1。(口诀:先乘后加再添1)
4.十几乘几十几:
被乘数的个位乘以乘数的十位所得的积与乘数相加得数作前积,两个位数相乘得数作后积,满十左进。
5.十位数相同的两位数相乘:
一个数加上另一个数的个位得数乘以十位得出的积作前积,两个位相乘得数作后积,满十左进。
6.十位数相同,个位之和等于10的两位数相乘:
十位加1乘十位得数作前积,两个位相乘得数作后积,没有十位用零补。
7.被乘数首尾之和是10,乘数首尾相同的两位数相乘:
被乘数十位加1得数再乘以乘数的十位,得出的积作积前,两个位相乘得出的积作积后,没有十位用零补。
8.两首尾和是10,两尾数相同的两位数相乘:
两首位相乘之积加上一个尾数,得数作前积,两尾数相乘(尾平方)得数作后积,没有十位用零补。
9.两首尾差是1,两尾数和是10的两位数相乘:
(A+B)*(A-B) = A*A -B*B
03/25/2008
0 理解PHP的工作模型
将这个数加上另一个数的个位数,得数作前积,然后两个个位数相乘得数作后积,满十左进。(口诀:先加后乘)
例如:11*11=121,前积 11+1=12,后积 1*1=1,连写则是 121。
19*19=361,前积 19+9=28,后积 9*9=81,满十左进 28+8=36,1接着写,即 361。
2.一百零几乘一百零几(或一百一十几):
较大的乘数加上较小乘数的个位,得数作前积,两个尾数(包括十位和个位)
相乘得数作后积,没有十位用零补。(口诀:先加后乘)
3.个位是1的两位数相乘:
十位数与十位数相乘得数作前积,十位数与十位数相加得数作后积,得数接着写,满十左进,最后再添加1。(口诀:先乘后加再添1)
4.十几乘几十几:
被乘数的个位乘以乘数的十位所得的积与乘数相加得数作前积,两个位数相乘得数作后积,满十左进。
5.十位数相同的两位数相乘:
一个数加上另一个数的个位得数乘以十位得出的积作前积,两个位相乘得数作后积,满十左进。
6.十位数相同,个位之和等于10的两位数相乘:
十位加1乘十位得数作前积,两个位相乘得数作后积,没有十位用零补。
7.被乘数首尾之和是10,乘数首尾相同的两位数相乘:
被乘数十位加1得数再乘以乘数的十位,得出的积作积前,两个位相乘得出的积作积后,没有十位用零补。
8.两首尾和是10,两尾数相同的两位数相乘:
两首位相乘之积加上一个尾数,得数作前积,两尾数相乘(尾平方)得数作后积,没有十位用零补。
9.两首尾差是1,两尾数和是10的两位数相乘:
(A+B)*(A-B) = A*A -B*B
PHP是一种在服务端纯解释执行的动态脚本语言。同时,可以将其视为一种模板语言嵌入HTML,尤其适合开发Web应用程序。应该这样说,PHP是一种专门针对WEB开发而设计的编程语言。
请求一个 PHP 脚本时,PHP 解释器会读取该脚本,并将其编译为 Zend 操作码(opcode),这些操作码是将要执行的代码的一种二进制表示形式。随后,这些操作码由 Zend Engine 执行并丢弃。 PHP脚本在每次被解释时进行初始化,并在执行完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释执行相应的脚本文件;请求结束后,之前脚本中申请的、没有被代码显式释放的外部资源,包括内存、数据库连接、文件句柄、Socket连接等,都会被强行释放。也就是说,PHP无法在语言级别上实现持久运行的进程,也无法创建驻留内存的对象。
PHP这种独特的工作模型的好处是杜绝了内存和资源泄漏问题。Web应用的特点是大量的、短时间内的并发处理,对各种资源的申请和释放工作非常频繁,很容易导致资源泄漏甚至引发应用程序崩溃。PHP的运行机制决定它不存在常规的应用程序崩溃问题(顶多连接超时脚本停止响应),因为请求一结束,随着PHP解释器进程的销毁,所有原先被占用的内存和系统资源均被回收。从这点来讲,可以说PHP应用是比较稳定的。但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。这种缓冲机制缺失造成的影响,可以分成两个方面:
一是对象的缓冲。众所周知,很多设计模式都依赖于对象的缓冲机制,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,对于需要频繁应付大量并发的服务端软件更是如此。因此,对象缓冲的缺失,理论上会极大地降低速度。应尽可能减少创建和销毁对象的次数来提高服务程序的效率,由于 PHP目前还不支持多线程,也就无法像Java一样通过线程池调度来弥补这一缺陷;但可以使用第三方软件如Memcachd来实现PHP的对象缓冲机制,达到减少对象创建和销毁的时间来提高服务程序的效率。Memcachd将PHP编译后的 操作码缓存并在内存中保存这个操作码,并在下一次调用该页面时重用它,这会节省很多时间。比较常用的缓存还有有 eAccelerator,另一种流行的 eAccelerator 替代工具是 Alternative PHP Cache(APC)。
二是数据库连接的缓冲。对于MySQL,PHP提供了一种内置的数据库缓冲机制,即用mysql_pconnect()代替mysql_connect() 来打开数据库而已。PHP会自动回收被废弃的数据库连接,以供重复使用。在实际应用中,这种持久性数据库连接往往会导致数据库连接的伪泄漏现象:在某个时间,并发的数据库连接过多,超过了MySQL的最大连接数,从而导致新的进程无法连接数据库。但是过一段时间,当并发数减少时,PHP会释放掉一些连接,网站又会恢复正常。出现这种现象的原因是,当使用pconnect时,Apache 的httpd进程会不释放connect,而当Apache的httpd进程数超过了mysql的最大连接数时,就会出现无法连接的情况。因此,需要小心地调整Apache和Mysql的配置,以使Apache的httpd进程数不会超出MySQL的最大连接数。笔者经过实践,在PHP5和 Oracle10g的连接中,由于频于数据库连接,有时候还会出现数据库丢失连接的情况(Oracle官方有针对PHP的增强包,不知是否可以解决此问题,笔者未试)。
PHP的工作模型即是缺点也是优势,从本质上说,这就是PHP 的独特之处。
若以FastCGI模式运行php,解析php.ini、载入全部扩展并重初始化全部数据结构这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。Nginx+PHP(FastCGI)是个不错的选择。
09/20/2007
0 Oracle同步序列
请求一个 PHP 脚本时,PHP 解释器会读取该脚本,并将其编译为 Zend 操作码(opcode),这些操作码是将要执行的代码的一种二进制表示形式。随后,这些操作码由 Zend Engine 执行并丢弃。 PHP脚本在每次被解释时进行初始化,并在执行完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释执行相应的脚本文件;请求结束后,之前脚本中申请的、没有被代码显式释放的外部资源,包括内存、数据库连接、文件句柄、Socket连接等,都会被强行释放。也就是说,PHP无法在语言级别上实现持久运行的进程,也无法创建驻留内存的对象。
PHP这种独特的工作模型的好处是杜绝了内存和资源泄漏问题。Web应用的特点是大量的、短时间内的并发处理,对各种资源的申请和释放工作非常频繁,很容易导致资源泄漏甚至引发应用程序崩溃。PHP的运行机制决定它不存在常规的应用程序崩溃问题(顶多连接超时脚本停止响应),因为请求一结束,随着PHP解释器进程的销毁,所有原先被占用的内存和系统资源均被回收。从这点来讲,可以说PHP应用是比较稳定的。但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。这种缓冲机制缺失造成的影响,可以分成两个方面:
一是对象的缓冲。众所周知,很多设计模式都依赖于对象的缓冲机制,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,对于需要频繁应付大量并发的服务端软件更是如此。因此,对象缓冲的缺失,理论上会极大地降低速度。应尽可能减少创建和销毁对象的次数来提高服务程序的效率,由于 PHP目前还不支持多线程,也就无法像Java一样通过线程池调度来弥补这一缺陷;但可以使用第三方软件如Memcachd来实现PHP的对象缓冲机制,达到减少对象创建和销毁的时间来提高服务程序的效率。Memcachd将PHP编译后的 操作码缓存并在内存中保存这个操作码,并在下一次调用该页面时重用它,这会节省很多时间。比较常用的缓存还有有 eAccelerator,另一种流行的 eAccelerator 替代工具是 Alternative PHP Cache(APC)。
二是数据库连接的缓冲。对于MySQL,PHP提供了一种内置的数据库缓冲机制,即用mysql_pconnect()代替mysql_connect() 来打开数据库而已。PHP会自动回收被废弃的数据库连接,以供重复使用。在实际应用中,这种持久性数据库连接往往会导致数据库连接的伪泄漏现象:在某个时间,并发的数据库连接过多,超过了MySQL的最大连接数,从而导致新的进程无法连接数据库。但是过一段时间,当并发数减少时,PHP会释放掉一些连接,网站又会恢复正常。出现这种现象的原因是,当使用pconnect时,Apache 的httpd进程会不释放connect,而当Apache的httpd进程数超过了mysql的最大连接数时,就会出现无法连接的情况。因此,需要小心地调整Apache和Mysql的配置,以使Apache的httpd进程数不会超出MySQL的最大连接数。笔者经过实践,在PHP5和 Oracle10g的连接中,由于频于数据库连接,有时候还会出现数据库丢失连接的情况(Oracle官方有针对PHP的增强包,不知是否可以解决此问题,笔者未试)。
PHP的工作模型即是缺点也是优势,从本质上说,这就是PHP 的独特之处。
若以FastCGI模式运行php,解析php.ini、载入全部扩展并重初始化全部数据结构这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。Nginx+PHP(FastCGI)是个不错的选择。
新增一条记录出错,ORACLE抛出如下异 常:
1 ORA-00001: 违反唯一约束条 件 (OSCHEMA.TABLE_TEST_PK) *INSERT INTO "OSCHEMA"."TABLE_TEST" ("ID", "FIELD2", "FIELD3") VALUES (:ID0, :FIELD21, :FIELD32)
其中表"OSCHEMA"."TABLE_TEST"主键ID已设置唯一值,而插入记录时还是出现此种错误,可用如下PL/SQL语句将表下次递增的其实序列位置调整到先有记录最大主键值,即保证下一条记录的序列为当前最大序列加1,表"OSCHEMA"."TABLE_TEST"的主键字段是ID
declare
SEQ_VALUE number :=0;
Max_PK_VALUE number :=0;
begin
SELECT MAX(ID) INTO Max_PK_VALUE FROM TABLE_TEST;
loop
select OSCHEMA.TABLE_TEST_SEQ.nextval into SEQ_VALUE from dual;
--dbms_output.put_line(i);
exit when SEQ_VALUE = Max_PK_VALUE;
end loop;
commit;
end;
1 ORA-00001: 违反唯一约束条 件 (OSCHEMA.TABLE_TEST_PK) *INSERT INTO "OSCHEMA"."TABLE_TEST" ("ID", "FIELD2", "FIELD3") VALUES (:ID0, :FIELD21, :FIELD32)
其中表"OSCHEMA"."TABLE_TEST"主键ID已设置唯一值,而插入记录时还是出现此种错误,可用如下PL/SQL语句将表下次递增的其实序列位置调整到先有记录最大主键值,即保证下一条记录的序列为当前最大序列加1,表"OSCHEMA"."TABLE_TEST"的主键字段是ID
declare
SEQ_VALUE number :=0;
Max_PK_VALUE number :=0;
begin
SELECT MAX(ID) INTO Max_PK_VALUE FROM TABLE_TEST;
loop
select OSCHEMA.TABLE_TEST_SEQ.nextval into SEQ_VALUE from dual;
--dbms_output.put_line(i);
exit when SEQ_VALUE = Max_PK_VALUE;
end loop;
commit;
end;
White theme designed by Livid, this blog is proudly powered by Project Nexus.