2012-1-30 18:08 Monday  
网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数。
参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值
以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
escape() 窍门:
采用ISO Latin字符集对指定的字符串停止编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此窍门编码的字符: @ * / +
encodeURI() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
不会被此窍门编码的字符:! * ( ) '

因此,对于汉文字符串来说,假如不期望把字符串编码各式转化成UTF-8各式的(比如原页面和目的页面的charset是一致的时候),只需求应用 escape。假如你的页面是GB2312或者更多有联系的编码,而接受参数parameter的页面是UTF-8编码的,就要采用encodeURI或 者encodeURIComponent。

2012-1-30 18:08 Monday  
Mysql my.ini 配置文件详解[转载]
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置,
# mysql-data-dir/my.cnf 作为服务器指定设置
# (@localstatedir@ for this installation) 或者放入
# ~/.my.cnf 作为用户设置.
#
# 在此配置文件中, 你可以使用所有程序支持的长选项.
# 如果想获悉程序支持的所有选项
# 请在程序后加上"--help"参数运行程序.
#
# 关于独立选项更多的细节信息可以在手册内找到
#
#
# 以下选项会被MySQL客户端应用读取.
# 注意只有MySQL附带的客户端应用程序保证可以读取这段内容.
# 如果你想你自己的MySQL应用程序获取这些值
# 需要在MySQL客户端库初始化的时候指定这些选项
#
[client]
#password = [your_password]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
# *** 应用定制选项 ***
#
#   MySQL 服务端
#
[mysqld]
# 一般配置选项
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
# back_log 是操作系统在监听队列中所能保持的连接数,
# 队列保存了在MySQL连接管理器线程处理之前的连接.
# 如果你有非常高的连接率并且出现"connection refused" 报错,
# 你就应该增加此处的值.
# 检查你的操作系统文档来获取这个变量的最大值.
# 如果将back_log设定到比你操作系统限制更高的值,将会没有效果
back_log = 50
# 不在TCP/IP端口上进行监听.
# 如果所有的进程都是在同一台服务器连接到本地的mysqld,
# 这样设置将是增强安全的方法
# 所有mysqld的连接都是通过Unix sockets 或者命名管道进行的.
# 注意在windows下如果没有打开命名管道选项而只是用此项
# (通过 "enable-named-pipe" 选项) 将会导致mysql服务没有任何作用!
#skip-networking
# MySQL 服务所允许的同时会话数的上限
# 其中一个连接将被SUPER权限保留作为管理员登录.
# 即便已经达到了连接数的上限.
max_connections = 100
# 每个客户端连接最大的错误允许数量,如果达到了此限制.
# 这个客户端将会被MySQL服务阻止直到执行了"FLUSH HOSTS" 或者服务重启
# 非法的密码以及其他在链接时的错误会增加此值.
# 查看 "Aborted_connects" 状态来获取全局计数器.
max_connect_errors = 10
# 所有线程所打开表的数量.
# 增加此值就增加了mysqld所需要的文件描述符的数量
# 这样你需要确认在[mysqld_safe]中 "open-files-limit" 变量设置打开文件数量允许至少4096
table_cache = 2048
# 允许外部文件级别的锁. 打开文件锁会对性能造成负面影响
# 所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)
# 或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表
#external-locking
# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)
# 每个连接独立的大小.大小动态增加
max_allowed_packet = 16M
# 在一个事务中binlog为了记录SQL状态所持有的cache大小
# 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.
# 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中
# 如果事务比此值大, 会使用磁盘上的临时文件来替代.
# 此缓冲在每个连接的事务第一次更新状态时被创建
binlog_cache_size = 1M
# 独立的内存表所允许的最大容量.
# 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
max_heap_table_size = 64M
# 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序
# 如果排序后的数据无法放入排序缓冲,
# 一个用来替代的基于磁盘的合并分类会被使用
# 查看 "Sort_merge_passes" 状态变量.
# 在排序发生时由每个线程分配
sort_buffer_size = 8M
# 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).
# 类似的联合在极大多数情况下有非常糟糕的性能表现,
# 但是将此值设大能够减轻性能影响.
# 通过 "Select_full_join" 状态变量查看全联合的数量
# 当全联合发生时,在每个线程中分配
join_buffer_size = 8M
# 我们在cache中保留多少线程用于重用
# 当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,
# 则客户端线程被放入cache中.
# 这可以在你需要大量新连接的时候极大的减少线程创建的开销
# (一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)
thread_cache_size = 8
# 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.
# 此值只对于支持 thread_concurrency() 函数的系统有意义( 例如Sun Solaris).
# 你可可以尝试使用 [CPU数量]*(2..4) 来作为thread_concurrency的值
thread_concurrency = 8
# 查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果.
# 打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表.
# 查看 "Qcache_lowmem_prunes" 状态变量来检查是否当前值对于你的负载来说是否足够高.
# 注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同,
# 查询缓冲也许引起性能下降而不是性能提升.
query_cache_size = 64M
# 只有小于此设定值的结果才会被缓冲
# 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.
query_cache_limit = 2M
# 被全文检索索引的最小的字长.
# 你也许希望减少它,如果你需要搜索更短字的时候.
# 注意在你修改此值之后,
# 你需要重建你的 FULLTEXT 索引
ft_min_word_len = 4
# 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的mysql在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被swapping out
# 此选项对于性能有益
#memlock
# 当创建新表时作为默认使用的表类型,
# 如果在创建表示没有特别执行表类型,将会使用此值
default_table_type = MYISAM
# 线程使用的堆大小. 此容量的内存在每次连接时被预留.
# MySQL 本身常不会需要超过64K的内存
# 如果你使用你自己的需要大量堆的UDF函数
# 或者你的操作系统对于某些操作需要更多的堆,
# 你也许需要将其设置的更高一点.
thread_stack = 192K
# 设定默认的事务隔离级别.可用的级别如下:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = REPEATABLE-READ
# 内部(内存中)临时表的最大大小
# 如果一个表增长到比此值更大,将会自动转换为基于磁盘的表.
# 此限制是针对单个表的,而不是总和.
tmp_table_size = 64M
# 打开二进制日志功能.
# 在复制(replication)配置中,作为MASTER主服务器必须打开此项
# 如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.
log-bin=mysql-bin
# 如果你在使用链式从服务器结构的复制模式 (A->B->C),
# 你需要在服务器B上打开此项.
# 此选项打开在从线程上重做过的更新的日志,
# 并将其写入从服务器的二进制日志.
#log_slave_updates
# 打开全查询日志. 所有的由服务器接收到的查询 (甚至对于一个错误语法的查询)
# 都会被记录下来. 这对于调试非常有用, 在生产环境中常常关闭此项.
#log
# 将警告打印输出到错误log文件.   如果你对于MySQL有任何问题
# 你应该打开警告log并且仔细审查错误日志,查出可能的原因.
#log_warnings
# 记录慢速查询. 慢速查询是指消耗了比 "long_query_time" 定义的更多时间的查询.
# 如果 log_long_format 被打开,那些没有使用索引的查询也会被记录.
# 如果你经常增加新查询到已有的系统内的话. 一般来说这是一个好主意,
log_slow_queries
# 所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.
# 不要在这里使用"1", 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).
long_query_time = 2
# 在慢速日志中记录更多的信息.
# 一般此项最好打开.
# 打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里
log_long_format
# 此目录被MySQL用来保存临时文件.例如,
# 它被用来处理基于磁盘的大型排序,和内部排序一样.
# 以及简单的临时表.
# 如果你不创建非常大的临时文件,将其放置到 swapfs/tmpfs 文件系统上也许比较好
# 另一种选择是你也可以将其放置在独立的磁盘上.
# 你可以使用";"来放置多个路径
# 他们会按照roud-robin方法被轮询使用.
#tmpdir = /tmp
# ***   复制有关的设置
# 唯一的服务辨识号,数值位于 1 到 2^32-1之间.
# 此值在master和slave上都需要设置.
# 如果 "master-host" 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.
server-id = 1
# 复制的Slave (去掉master段的注释来使其生效)
#
# 为了配置此主机作为复制的slave服务器,你可以选择两种方法:
#
# 1) 使用 CHANGE MASTER TO 命令 (在我们的手册中有完整描述) -
# 语法如下:
#
# CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
# MASTER_USER=, MASTER_PASSWORD= ;
#
# 你需要替换掉 , ,   等被尖括号包围的字段以及使用master的端口号替换 (默认3306).
#
# 例子:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# 或者
#
# 2) 设置以下的变量. 不论如何, 在你选择这种方法的情况下, 然后第一次启动复制(甚至不成功的情况下,
#     例如如果你输入错密码在master-password字段并且slave无法连接),
# slave会创建一个 master.info 文件,并且之后任何对于包含在此文件内的参数的变化都会被忽略
# 并且由 master.info 文件内的内容覆盖, 除非你关闭slave服务, 删除 master.info 并且重启slave 服务.
# 由于这个原因,你也许不想碰一下的配置(注释掉的) 并且使用 CHANGE MASTER TO (查看上面) 来代替
#
# 所需要的唯一id号位于 2 和 2^32 - 1之间
# (并且和master不同)
# 如果master-host被设置了.则默认值是2
# 但是如果省略,则不会生效
#server-id = 2
#
# 复制结构中的master - 必须
#master-host =
#
# 当连接到master上时slave所用来认证的用户名 - 必须
#master-user =
#
# 当连接到master上时slave所用来认证的密码 - 必须
#master-password =
#
# master监听的端口.
# 可选 - 默认是3306
#master-port =
# 使得slave只读.只有用户拥有SUPER权限和在上面的slave线程能够修改数据.
# 你可以使用此项去保证没有应用程序会意外的修改slave而不是master上的数据
#read_only
#*** MyISAM 相关选项
# 关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块.
# 不要将其设置大于你可用内存的30%,
# 因为一部分内存同样被OS用来缓冲行数据
# 甚至在你并不使用MyISAM 表的情况下, 你也需要仍旧设置起 8-64M 内存由于它同样会被内部临时磁盘表使用.
key_buffer_size = 32M
# 用来做MyISAM表全表扫描的缓冲大小.
# 当全表扫描需要时,在对应线程中分配.
read_buffer_size = 2M
# 当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.
# 如果你增高此值,可以提高很多ORDER BY的性能.
# 当需要时由每个线程分配
read_rnd_buffer_size = 16M
# MyISAM 使用特殊的类似树的cache来使得突发插入
# (这些插入是,INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., 以及 LOAD DATA
# INFILE) 更快. 此变量限制每个进程中缓冲树的字节数.
# 设置为 0 会关闭此优化.
# 为了最优化不要将此值设置大于 "key_buffer_size".
# 当突发插入被检测到时此缓冲将被分配.
bulk_insert_buffer_size = 64M
# 此缓冲当MySQL需要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引起重建索引时被分配.
# 这在每个线程中被分配.所以在设置大值时需要小心.
myisam_sort_buffer_size = 128M
# MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
myisam_max_sort_file_size = 10G
# 如果被用来更快的索引创建索引所使用临时文件大于制定的值,那就使用键值缓冲方法.
# 这主要用来强制在大表中长字串键去使用慢速的键值缓冲方法来创建索引.
myisam_max_extra_sort_file_size = 10G
# 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.
# 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.
myisam_repair_threads = 1
# 自动检查和修复没有适当关闭的 MyISAM 表.
myisam_recover
# 默认关闭 Federated
skip-federated
# *** BDB 相关选项 ***
# 如果你运行的MySQL服务有BDB支持但是你不准备使用的时候使用此选项. 这会节省内存并且可能加速一些事.
skip-bdb
# *** INNODB 相关选项 ***
# 如果你的MySQL服务包含InnoDB支持但是并不打算使用的话,
# 使用此选项会节省内存以及磁盘空间,并且加速某些部分
#skip-innodb
# 附加的内存池被InnoDB用来保存 metadata 信息
# 如果InnoDB为此目的需要更多的内存,它会开始从OS这里申请内存.
# 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值.
# SHOW INNODB STATUS 命令会显示当先使用的数量.
innodb_additional_mem_pool_size = 16M
# InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM.
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
# 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
# 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
# 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,
# 所以不要设置的太高.
innodb_buffer_pool_size = 2G
# InnoDB 将数据保存在一个或者多个数据文件中成为表空间.
# 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.
# 其他情况下.每个设备一个文件一般都是个好的选择.
# 你也可以配置InnoDB来使用裸盘分区 - 请参考手册来获取更多相关内容
innodb_data_file_path = ibdata1:10M:autoextend
# 设置此选项如果你希望InnoDB表空间文件被保存在其他分区.
# 默认保存在MySQL的datadir中.
#innodb_data_home_dir =
# 用来同步IO操作的IO线程的数量. This value is
# 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.
innodb_file_io_threads = 4
# 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.
# 从1开始并且增加此值知道你能够成功的导出表.
#innodb_force_recovery=1
# 在InnoDb核心内的允许线程数量.
# 最优值依赖于应用程序,硬件以及操作系统的调度方式.
# 过高的值可能导致线程的互斥颠簸.
innodb_thread_concurrency = 16
# 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上,
# 这提供了完整的ACID行为.
# 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O
# 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
# 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.
innodb_flush_log_at_trx_commit = 1
# 加速InnoDB的关闭. 这会阻止InnoDB在关闭时做全清除以及插入缓冲合并.
# 这可能极大增加关机时间, 但是取而代之的是InnoDB可能在下次启动时做这些操作.
#innodb_fast_shutdown
# 用来缓冲日志数据的缓冲区的大小.
# 当此值快满时, InnoDB将必须刷新数据到磁盘上.
# 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)
innodb_log_buffer_size = 8M
# 在日志组中每个日志文件的大小.
# 你应该设置日志文件总合大小到你缓冲池大小的25%~100%
# 来避免在日志文件覆写上不必要的缓冲池刷新行为.
# 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.
innodb_log_file_size = 256M
# 在日志组中的文件总数.
# 通常来说2~3是比较好的.
innodb_log_files_in_group = 3
# InnoDB的日志文件所在位置. 默认是MySQL的datadir.
# 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能
#innodb_log_group_home_dir
# 在InnoDB缓冲池中最大允许的脏页面的比例.
# 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.
# 这是一个软限制,不被保证绝对执行.
innodb_max_dirty_pages_pct = 90
# InnoDB用来刷新日志的方法.
# 表空间总是使用双重写入刷新方法
# 默认值是 "fdatasync", 另一个是 "O_DSYNC".
#innodb_flush_method=O_DSYNC
# 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.
# InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.
# 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎
# 那么一个死锁可能发生而InnoDB无法注意到.
# 这种情况下这个timeout值对于解决这种问题就非常有帮助.
innodb_lock_wait_timeout = 120
[mysqldump]
# 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# 仅仅允许使用键值的 UPDATEs 和 DELETEs .
#safe-updates
[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
# 增加每个进程的可打开文件数量.
# 警告: 确认你已经将全系统限制设定的足够高!
# 打开大量表需要将此值设高
open-files-limit = 8192

假定您的网络连接已经正确设定好。

  网络主机的 IP: 192.168.0.1

  网络主机的使用者名称: myusername

  网络主机的登录密码: mypassword

  分享中的目录名称: linux

  主机上要挂载的目录: /media/sharename

  要挂载网络共享目录时

  sudo mkdir /media/sharename

  sudo mount //192.168.0.1/...

阅读全文>>

2012-1-30 18:06 Monday  
打开终端,输入以下命令:

cd /etc/fonts/conf.d/
sudo cp 49-sansserif.conf 49-sansserif.conf_backup
sudo rm 49-sansserif.conf

以上命令的功能是先备份 49-sansserif.conf文件,再删除,经测试后有效。
2012-1-30 18:06 Monday  
sudo apt-get install fcitx


im-switch -s fcitx -z default  #设为默认输入法,一般不需要,除非系统有多个输入法

注销或重启就能用
rpm格式包的安装:
alien用于安装rpm格式的包其实还是挺有效的
1.直接安装:
alien -i -c filename.rpm
2.转换成deb包再安装
alien -d -c filename.rpm #会生成一个filename.deb包
alien/dpkg -i filename.deb
deb格式包的安装:
alien/dpkg -i filename.deb
tar.gz格式包的安装:
alien -d -c filename.tar.gz #生成一个filename.deb,安装参见上文
tar.bz2格式包的安装:
将软件包转换为tar.gz,再转成deb,命令熟练后可以一步到位,下面是分解操作
tar -jxvf
FileName  #解压
tar -zcvf FileName(含扩展名tar.gz) 上一步解压的目录名  #创建tar.gz包
alien -d -c FileName(含扩展名tar.gz)#转换为deb包
同理,其他格式的包也可以通过这样最终转换为deb包,然后就可以通过alien -i /dpkg -i安装或是直接在图形界面下安装了
2012-1-30 18:05 Monday  

1.document.write("");为 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)
6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById

("input").value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(""+变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用+号.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],...){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状态栏的设置:window.status="字符";
21.弹出提示信息:window.alert("字符");
22.弹出确认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href="URL"
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符:+=
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i

if (form.elements[i].type == "text"){
form.elements[i].value = "";
}
}
31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中

返回TRUE或FALSE)
32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
33.单选按钮组判断是否被选中也是用checked.
34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加

上.selectedIndex来确定被选中的值)
35.字符串的定义:var myString = new String("This is lightsword");
36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();
37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.
38.取字符串中指定位置的一个字符:StringA.charAt(9);
39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);
40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最

在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor

(Math.random()*(n+1))返回随机数
41.定义日期型变量:var today = new Date();
42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得

到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期

几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到

秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置

月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小

时,dateObj.setMinutes(val) 设置分,dateObj.setSeconds(val)设置秒 [注意:此日期时间从0开始计]
43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames

["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
44.parent代表父亲对象,top代表最顶端对象
45.打开子窗口的父窗口为:opener
46.表示当前所属的位置:this
47.当在超链接中调用JS函数时用:(javascript:)来开头后面加函数名
48.在老的浏览器中不执行此JS:
49.引用一个文件式的JS:

50.指定在不支持脚本的浏览器显示的HTML: 

51.当超链和ONCLICK事件都有时,则老版本的浏览器转

向a.html,否则转向b.html.例:

href="a.html">dfsadf 52.JS的内建对象

有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,

RegExp,String,SyntaxError,TypeError,URIError 53.JS中的换行:\n 54.窗口全屏大小:
55.JS中的all代表其下层的全部元素

56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1
57.innerHTML的值是表单元素的值:如

"how are you"

,则innerHTML的值就是:how are you
58.innerTEXT的值和上面的一样,只不过不会把这种标记显示出来.
59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.
60.isDisabled判断是否为禁止状态.disabled设置禁止状态
61.length取得长度,返回整型数值
62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
63.window.focus()使当前的窗口在所有窗口之前.
64.blur()指失去焦点.与FOCUS()相反.
65.select()指元素为选中状态.
66.防止用户对文本框中输入文本:onfocus="this.blur()"
67.取出该元素在页面中出现的数量:document.all.tags("div(或其它HTML标记符)").length
68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()
69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文

字.';
70.添加到收藏夹:external.AddFavorite("http://www.52blogger.com","龙哥");
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法

为:window.onerror = handleError;
72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.
73.JS中的self指的是当前的窗口
74.JS中状态栏显示内容:window.status="内容"
75.JS中的top指的是框架集中最顶层的框架
76.JS中关闭当前的窗口:window.close();
77.JS中提出是否确认的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
78.JS中的窗口重定向:window.navigate("http://www.52blogger.com");
79.JS中的打印:window.print()
80.JS中的提示输入框:window.prompt("message","defaultReply");
81.JS中的窗口滚动条:window.scroll(x,y)
82.JS中的窗口滚动到位置:window.scrollby
83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或

setTimeout
84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and

hope you will stay longer.";}} window.onbeforeunload=verifyClose;
86.当窗体第一次调用时使用的文件句柄:onload()
87.当窗体关闭时调用的文件句柄:onunload()
88.window.location的属性: protocol(http:),hostname(www.example.com),port(80),host

(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳转到相应的锚记),href(全部

的信息)
89.window.location.reload()刷新当前页面.
89-1.parent.location.reload()刷新父亲对象(用于框架)
89-2.opener.location.reload()刷新父窗口对象(用于单开窗口)
89-3.top.location.reload()刷新最顶端对象(用于多开窗口)
90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回

第几页,也可以使用访问过的URL)
91.document.write()不换行的输出,document.writeln()换行输出
92.document.body.noWrap=true;防止链接文字折行.
93.变量名.charAt(第几位),取该变量的第几位的字符.
94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值.
95.字符串连接:string.concat(string2),或用+=进行连接
96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0开始计算)
97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置.
98.string.match(regExpression),判断字符是否匹配.
99.string.replace(regExpression,replaceString)替换现有字符串.
100.string.split(分隔符)返回一个数组存储值.
101.string.substr(start[,length])取从第几位到指定长度的字符串.
102.string.toLowerCase()使字符串全部变为小写.
103.string.toUpperCase()使全部字符变为大写.
104.parseInt(string[,radix(代表进制)])强制转换成整型.
105.parseFloat(string[,radix])强制转换成浮点型.
106.isNaN(变量):测试是否为数值型.
107.定义常量的关键字:const,定义变量的关键字:var

Linux下的apache出现这种问题,是文件夹权限的问题
设置成如下就可以了,当然,要子文件夹也要应用才可以的咯
// Apache  
//Task: Start Apache 2 Server /启动apache服务  
# /etc/init.d/apache2 start  
//or  
$ sudo /etc/init.d/apache2 start  
//Task: Restart Apache 2 Server /重启apache服务  
# /etc/init.d/apache2 restart  
//or  
$ sudo /etc/init.d/apache2 restart  
//Task: Stop Apache 2 Server /停止apache服务  
# /etc/init.d/apache2 stop  
//or  
$ sudo /etc/init.d/apache2 stop   
// Mysql  
/etc/init.d/mysql start  
/etc/init.d/mysql stop  
/etc/init.d/mysql restart  

服务器电脑速度很慢,打开任务管理器,httpd.exe进程占用cpu%100,关闭掉AppServ服务,cpu应用率立刻下降到0。
   重新启动AppServ又出现占用cpu高的情况。

   原因,httpd.exe和防火墙配置有冲突。
   解决方法如下:

  1.网上邻居->本地链接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉起用LMhosts查询前的勾。

  2.控制面版->windows防火墙->高级标签->本地链接设置->服务的标签里勾选安全Web服务器(HTTPS)即。

  另外在网上有另外一种解决办法。
      
  找到httpd.conf配置文件

  修改ThreadsPerChild 的值为150 默认是250 万一你的服务器或vps内存超过2G 那么就不用设置

  经过修改防火墙设置http.exe占用cpu100%的问题解决!

转载的

MYSQL CPU 占用 100% 的现象描述
早上帮别人一台服务器解决了 Mysql cpu 占用 100% 的问题。稍整理了一下,将经验记录在这篇文章里:《解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记》

朋 友的主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。

MYSQL CPU 占用 100% 的解决过程
今天早上仔细检查了一下。目前此网站的七日平均日 IP 为2000,PageView 为 3万左右。网站A 用的 database 目前有39个表,记录数 60.1万条,占空间 45MB。按这个数据,MySQL 不可能占用这么高的资源。
于是在服务器上运行命令,将 mysql 当前的环境变量输出到文件 output.txt:
d:\web\mysql> mysqld.exe --help >output.txt

发现 tmp_table_size 的值是默认的 32M,于是修改 My.ini, 将 tmp_table_size 赋值到 200M:
d:\web\mysql> notepad c:\windows\my.ini
[mysqld]
tmp_table_size=200M
然后重启 MySQL 服务。CPU 占用有轻微下降,以前的CPU 占用波形图是 100% 一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size 参数对 MYSQL 性能提升有改善作用。但问题还没有完全解决。

于是进入 mysql 的 shell 命令行,调用 show processlist, 查看当前 mysql 使用频繁的 sql 语句:
mysql> show processlist;

反复调用此命令(每秒刷两次),发现网站 A 的两个 SQL 语句经常在 process list 中出现,其语法如下:
SELECT t1.pid, t2.userid, t3.count, t1.date
FROM _mydata AS t1
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
LEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pid
ORDER BY t1.pid
LIMIT 0,15

调用 show columns 检查这三个表的结构 :
mysql> show columns from _myuser;
mysql> show columns from _mydata;
mysql> show columns from _mydata_body;

终于发现了问题所在:_mydata 表,只根据 pid 建立了一个 primary key,但并没有为 userid 建立索引。而在这个 SQL 语句的第一个 LEFT JOIN ON 子句中:
LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid
_mydata 的 userid 被参与了条件比较运算。于是我为给 _mydata 表根据字段 userid 建立了一个索引:
mysql> ALTER TABLE `_mydata` ADD INDEX ( `userid` )
建立此索引之后,CPU 马上降到了 80% 左右。看到找到了问题所在,于是检查另一个反复出现在 show processlist 中的 sql 语句:
SELECT COUNT(*)
FROM _mydata AS t1, _mydata_key AS t2
WHERE t1.pid=t2.pid and t2.keywords = '孔雀'

经 检查 _mydata_key 表的结构,发现它只为 pid 建了了 primary key, 没有为 keywords 建立 index。_mydata_key 目前有 33 万条记录,在没有索引的情况下对33万条记录进行文本检索匹配,不耗费大量的 cpu 时间才怪。看来就是针对这个表的检索出问题了。于是同样为 _mydata_key 表根据字段 keywords 加上索引:
mysql> ALTER TABLE `_mydata_key` ADD INDEX ( `keywords` )
建立此索引之后,CPU立刻降了下来,在 50%~70%之间震荡。

再次调用 show prosslist,网站A 的sql 调用就很少出现在结果列表中了。但发现此主机运行了几个 Discuz 的论坛程序, Discuz论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占用再次降下来了。

解决 MYSQL CPU 占用 100% 的经验总结

增 加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:

tmp_table_size
This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.
对 WHERE, JOIN, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越 大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000 行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档:
索引 index 用于:
快速找出匹配一个WHERE子句的行
当执行联结(JOIN)时,从其他表检索行。
对特定的索引列找出MAX()或MIN()值
如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。

假定你发出下列SELECT语句:

mysql> SELECT * FROM tbl_name WHERE col1=val1 AND col2=val2;
如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。
开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。

window对象有两个主要的定时方法,分别是setTimeout 和 setInt 他们的语法基本上相同,但是完成的功能取有区别。
  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。

  如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要根据使用的方法不同,调用不同的清除方法:

例如:tttt=setTimeout('northsnow()',1000);

clearTimeout(tttt);

或者:

tttt=setInterval('northsnow()',1000);

clearInt(tttt);

setTimeout只有在调用的是自己的时候才跟setInterval一个含义,表示的一种延迟某段时间后的递归调用,如果setTimeout调用的是另一个方法的话,那就不能达到递归的效果了,表示只调用一次,而setInterval表示反复调用

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/courseware/archive/2007/12/10/1926195.aspx

2012-1-30 18:02 Monday  
基本上导出的文件分为两种:
1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。
优点:简单。
缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。
2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。

如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
$yourStr = mb_convert_encoding("gb2312", "UTF-8", $yourStr);

一、PHP导入Excel

1:还是用PHPExcel,官方网站: http://www.codeplex.com/PHPExcel。

2:使用PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader
举例:
<?php
require_once 'Excel/reader.php';

// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();

// Set output Encoding.
$data->setOutputEncoding('utf8');

$data->read(' jxlrwtest.xls');


error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
    for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
        echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
    }
    echo "\n";
}

?>

总结 php导出Excel php导入Excel PhpExcel使用说明 PhpExcel使用手册

方法一:特点,简单,省心,制表符"\t"用户分割同一行中的列,换行符"\t\n"可以开启下一行,还能够自动识别日期格式,货币格式等!

<?php
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test_data.xls");
//输出内容如下:
echo   "姓名"."\t";
echo   "年龄"."\t";
echo   "学历"."\t";
echo   "\n";
echo   "张三"."\t";
echo   "25"."\t";
echo   "本科"."\t";
?>
动态版
<?
$sql = "SELECT * FROM " .$ecs->table('member'). " ";
$classres = $db->Execute($sql);
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment; filename=test_data.xls");
echo 'ID'.chr(9);
echo 'txtPEOClientCode'.chr(9);
echo 'jcompany'.chr(9);
echo 'fcompany'.chr(9);
echo 'ecompany'.chr(9);
echo 'rcompany'.chr(9);
echo 'txtAddress'.chr(9);
echo 'txtCompanyTel'.chr(9);
echo 'txtFax'.chr(9);
echo 'txtPostCode'.chr(9);
echo chr(13);
while ($classrow = $classres->FetchRow())
{
//输出到xls
     echo $classrow['id'].chr(9);
     echo $classrow['txtPEOClientCode'].chr(9);
     echo $classrow['jcompany'].chr(9);
     echo $classrow['fcompany'].chr(9);
     echo $classrow['ecompany'].chr(9);
     echo $classrow['rcompany'].chr(9);
     echo $classrow['txtAddress'].chr(9);
     echo $classrow['txtCompanyTel'].chr(9);
     echo $classrow['txtFax'].chr(9);
     echo $classrow['txtPostCode'].chr(9);
     echo chr(13);
}

现在用的Php-excel(http://code.google.com/p/php-excel/downloads/list),代码也很简单:

require (dirname (__FILE__) . "./class-excel-xml.inc.php");
$sql = "SELECT * FROM " .$ecs->table('member'). " ";
$classres = $db->Execute($sql);

while($classrow = $classres->FetchRow())
{
$doc[] =   array ($classrow['txtPEOClientCode'], $classrow['jcompany'], $classrow['txtBillTo']);
}


$xls = new Excel_XML;
$xls->addArray($doc);
$xls->generateXML("mytest");

我用的utf-8,结果有乱码问题,把class-excel-xml.inc.php utf8_encode($v) 替换成$v就没有乱码问题了。


1:第一推荐无比风骚的PHPExcel,官方网站: http://www.codeplex.com/PHPExcel
导入导出都成,可以导出office2007格式,同时兼容2003。
下载下来的包中有文档和例子,大家可以自行研究。
抄段例子出来:

http://www.codeplex.com/PHPExcel

<?php
ini_set("display_errors",1);//是否显示报错信息
ini_set('include_path', ini_get('include_path').';D:\\PHP\\PHPExcel 1.6.6\\Tests\\classes\\');//设置此页面包含路径

include "classes/PHPExcel.php";
include "classes/PHPExcel/Writer/Excel5.php";

//创建一个excel
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

$objWriter->save("xxx.xls");
?>

--------------------------------------------------------------------------------------
<?
//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .'D:\workspace\biznaligy_eh\dev_src\includes\PHPExcel' . PATH_SEPARATOR . get_include_path());
   
/**
    * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要
   * 打开对应行的注释。
* 如果使用 Excel5 ,输出的内容应该是GBK编码。
   */
   require_once 'PHPExcel.php';
   require_once 'PHPExcel/Writer/Excel5.php';     // 用于其他低版本xls

   require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式

// 创建一个处理对象实例
   $objExcel = new PHPExcel();

// 创建文件格式写入对象实例, uncomment
   $objWriter = new PHPExcel_Writer_Excel5($objExcel);     // 用于其他版本格式
   //or
//$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true);


//设置文档基本属性
   $objProps = $objExcel->getProperties();
   $objProps->setCreator("Zeal Li");
   $objProps->setLastModifiedBy("Zeal Li");
   $objProps->setTitle("Office XLS Test Document");
    $objProps->setSubject("Office XLS Test Document, Demo");
   $objProps->setDescription("Test document, generated by PHPExcel.");
   $objProps->setKeywords("office excel PHPExcel");
    $objProps->setCategory("Test");
   //设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
   $objExcel->setActiveSheetIndex(0);

    $objActSheet = $objExcel->getActiveSheet();

//设置当前活动sheet的名称
    $objActSheet->setTitle('测试Sheet');


//设置单元格内容

//由PHPExcel根据传入内容自动判断单元格内容类型
    $objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容
    $objActSheet->setCellValue('A2', 26);            // 数值
    $objActSheet->setCellValue('A3', true);          // 布尔值
    $objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式

//显式指定内容类型
   $objActSheet->setCellValueExplicit('A5', '847475847857487584', PHPExcel_Cell_DataType::TYPE_STRING);

   //合并单元格
    $objActSheet->mergeCells('B1:C22');

   //分离单元格
    $objActSheet->unmergeCells('B1:C22');
  
//设置单元格样式

   //设置宽度
   $objActSheet->getColumnDimension('B')->setAutoSize(true);
   $objActSheet->getColumnDimension('A')->setWidth(30);

    $objStyleA5 = $objActSheet->getStyle('A5');
  
//设置单元格内容的数字格式。

//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
   //为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
   //修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
   //行代码:
//if($ifmt === '0') $ifmt = 1;

//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
   //都按原始内容全部显示出来。
   $objStyleA5 ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

//设置字体
    $objFontA5 = $objStyleA5->getFont();
    $objFontA5->setName('Courier New');
    $objFontA5->setSize(10);
    $objFontA5->setBold(true);
    $objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
    $objFontA5->getColor()->setARGB('FF999999');

//设置对齐方式
    $objAlignA5 = $objStyleA5->getAlignment();
    $objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    $objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

//设置边框
   $objBorderA5 = $objStyleA5->getBorders();
   $objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
   $objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
   $objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
   $objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
   $objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置填充颜色
   $objFillA5 = $objStyleA5->getFill();
   $objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
   $objFillA5->getStartColor()->setARGB('FFEEEEEE');

//从指定的单元格复制样式信息.
    $objActSheet->duplicateStyle($objStyleA5, 'B1:C22');

//添加图片
   $objDrawing = new PHPExcel_Worksheet_Drawing();
   $objDrawing->setName('ZealImg');
   $objDrawing->setDescription('Image inserted by Zeal');
   $objDrawing->setPath('./zeali.net.logo.gif');
   $objDrawing->setHeight(36);
   $objDrawing->setCoordinates('C23');
   $objDrawing->setOffsetX(10);
   $objDrawing->setRotation(15);
   $objDrawing->getShadow()->setVisible(true);
   $objDrawing->getShadow()->setDirection(36);
   $objDrawing->setWorksheet($objActSheet);

//添加一个新的worksheet
   $objExcel->createSheet();
   $objExcel->getSheet(1)->setTitle('测试2');

//保护单元格
   $objExcel->getSheet(1)->getProtection()->setSheet(true);
   $objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel');

//输出内容

   $outputFileName = "output.xls";
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
   header("Content-Type: application/force-download");
   header("Content-Type: application/octet-stream");
   header("Content-Type: application/download");
   header('Content-Disposition:inline;filename="'.$outputFileName.'"');
   header("Content-Transfer-Encoding: binary");
   header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Pragma: no-cache");
   $objWriter->save('php://output');
?>
2012-1-30 18:02 Monday  

起因:
公司购买的shopex程序取得商业授权认证失败,对方程序员弄了个测试代码来表明是由于我对服务器的设置有问题导致的。

原代码:

$fp = fsockopen(http://www.shopex.cn/, 80, $errno, $errstr, 30);

错误提示:

$fp = fsockopen("http://www.shopex.cn/", 80, $errno, $errstr, 30);
Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.shopex.cn/:80 (Unable to find the socket transport "http" – did you forget to enable it when you configured PHP?) in D:\xampp\htdocs\mediashop_cn\test.php on line 2
Unable to find the socket transport "http" – did you forget to enable it when you configured PHP? (24)

解决:

1.修改代码为:

$fp = fsockopen("www.shopex.cn", 80, $errno, $errstr, 30);

$fp = fsockopen("tcp://www.shopex.cn", 80, $errno, $errstr, 30);

参考:
http://uk.php.net/manual/en/function.fsockopen.php
http://uk.php.net/manual/en/transports.php

2.设置服务器防火墙允许服务器访问外部网站,至少允许访问www.shopex.cn

我是用路由器出现的问题,百度谷歌了好久,终于找到方法了:

原文地址:http://www.jiangmiao.org/blog/505.html

本人路由器不才,长时间使用ubuntu后会发生一奇怪现象,只能访问部份网站,比如baidu可以访问,但google只能ping得通但无限timeout,google后发现,只需修改/etc/sysctl.conf 添加

net.ipv4.tcp_window_scaling=0
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_timestamps = 0

再输入 sysctl -p 重启后即可。

由于ubuntu默认账户不是ROOT,所以执行命令时要加sudo,

两个命令依次为:
sudo gedit /etc/sysctl.conf,修改后保存;

sudo sysctl -p执行后,firefox即可工作正常。