背景:PHP学Java的jar文件一样可以打包,有点意思。
——
简单来说,Phar就是把Java界的jar概念移植到了PHP界。
Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式。
下面举例说明如何创建和使用Phar:
假设我们的项目名称是user,包含三个文件:
user/user.class.php

user/user.func.php

user/test.php

然后我们使用如下PHP程序创建Phar文件:
make_phar.php

执行 php make_phar.php后,可以在当前目录发现一个叫做user.phar的文件。
我们可以直接执行user.phar文件:
php user.phar,这个相当于执行user/test.php
我们还可以引用此文件:
test_phar.php

摘自:
http://xmgu2008.blog.163.com/blog/static/1391223802014225101912694/
参考资料:
https://php.net/manual/en/book.phar.php
背景:对于大公司的同步,可能会采用zoomkeeper作肿裁加agent下发shell命令实现,而对于小公司,大都采用linux下有一个叫rsync这样的加上notice作同步。
如何杀死rsync的同步进程d:



阅读全文
背景:群里说到,没有注意,自己升级了下自己的vps服务器,后来公司要求也升级下线上服务器,才知事情严重,为过好国庆升级是必要 的,听说苹果系统说自己系统尽管也用这个bash,如果没有设置高级什么的,不存在此漏洞。

Bash 远程任意代码执行安全漏洞(最严重漏洞)
US-CERT 意识到 Bash 存在一个安全的漏洞,该漏洞直接影响基于 Unix 的系统(如 Linux、OS X 等)。该漏洞将导致远程攻击者在受影响的系统上执行任意代码。
US-CERT 建议用户和管理员重新检查这篇红帽的安全博客。更多的详情只能参考相应 Linux 发行商以获取相应补丁。
你可以使用如下命令来检查系统存在此漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
受影响的系统包括:
CentOS
Debian
Redhat
Ubuntu
红帽系可通过更新 bash 并重启系统来解决这个问题:
# yum update bash
或者:
# yum update bash-4.1.2-15.el6_5.1
此举只是更新了 bash 包,还需要重启系统才能生效。

Ubuntu 用户可以通过如下命令打补丁,无需重启:
apt-get update
apt-get install bash

______________________________
[root@jackxiang ~]# rpm -qa|grep bash
bash-4.1.2-15.el6_5.1.x86_64

背景:php-fpm一般来说是够用,难免不够用,一是怎么样看,二是怎么样判断是否真够用,博主用了一个命令:netstat -anpo | grep "php-cgi" | wc -l 去和自己配置php-fpm.conf作对比,再者是对nginx出现各种错误都出现502揽在自己身上了,于其说nginx是为了安全,还不如说是也给排查问题增加了难度,再就是超时等,nginx有nginx的超时,php有php配置的超时,双方都是一个相互关联的问题,这些都是对于lnmp架构里经常遇到的问题。

统计Nginx日志里有502的行数有一个大体的了解,如下:
cat a.txt
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 502
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302
183.60.235.59 - - [31/Jan/2015:00:00:06 +0800] "GET /forum/0/index.html HTTP/1.1" 302

cat a.txt |awk '{print "line:"NR " status:"$9}'|grep 502
line:3 status:502

——————————————————————————————————————————————
Nginx 502的触发条件

  502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:

proxy_next_upstream error timeout invalid_header http_500 http_503;  不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……
阅读全文
背景:马云不会写代码,也就是说淘宝网站的建设过程,他没有写过一行。那么他凭什么拥有淘宝?而不是那些参与编码的程序员拥有淘宝呢?
答案很有意思:
——————————————————————————————————————————————————————
答案一:阅读全文
背景:当用popen打开多个command时会出现重用变量,二是会用连字符进行连接command返回的变量,两次popen会有两个地方出现问题。
$handle = popen($command, "r");
        do {
            $excuteResult = fread($handle, 2024);
            if (strlen($excuteResult) == 0) {
                pclose($handle); //关闭pipe
                break;
            }
            $excuteResultAll .= $excuteResult;
        } while (true);
//这儿用到的$excuteResultAll 变量,下面还要用,防止污染,则需要给NULL值清空,用unset后需要再定义一次相同的变量,否则会出现:
Undefined variable: excuteResultAll in /data/htdocs/jackxiang.com/index.php on line 354
        do {
            $excuteResult = fread($handle, 2024);
            if (strlen($excuteResult) == 0) {
                pclose($handle); //关闭pipe
                break;
            }
            $excuteResultAll .= $excuteResult;
        } while (true);

______________________________小demon实践如下:______________________________
php null.php
<?php
$foo = "";
$foo = "jack";
unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();

通过unset后,$foo变量用点连接时运行如下:
[22-Sep-2014 14:29:59 Asia/Shanghai] PHP Notice:  Undefined variable: foo in /tmp/null.php on line 6
[foo] => xiang
而不用unset而用NULL后:
<?php
$foo = "";
$foo = "jack";
$foo = NULL;
//unset($foo);
$foo .= "xiang";
$vars = get_defined_vars();
print_r($vars);
解决了这个变量的问题:
[foo] => xiang

说明这样做是可行的,完毕。
MySQL的用户密码可以为特殊字符么?  
不能出现"!" 其它都可以的。(MySQL用户密码中的特殊字符叹号(!)的妙用,把!后面的字符串做为命令执行了,在本文最后讲。)
但是当出现有* &号时,在登录时会出现:
mysql -uroot -pjack&*vac //这样是不行的(-p后不能有空格,否则还得输入密码,认为是db。),用双引号引起来也不行,最后,只能单引号,才能成功:
mysql -uroot -p'jack&*vac'
[root@jackxiang cache]#  mysql -uroot p'jack&*vac'
mysql>

登录成功!


_______________________Mysql密码里包含叹号,其!后面的字符串做为命令执行了_______________________________
MySQL用户密码中的特殊字符叹号(!)的妙用:
这篇文章主要介绍了MySQL用户密码中的特殊字符叹号(!)的妙用,本文介绍的是如果你的密码中含有叹号(!),那么在控制台登录时会出现错误哦,需要的朋友可以参考下

使用叹号(!)禁止用户终端进入的一个方法。

mysql> grant all privileges on wubx.* to ‘wubx'@'172.16.100.185′ identified by ‘fd52!wubx&,';
Query OK, 0 rows affected (0.00 sec)
mysql>quit;
#mysql -h 172.16.100.185 -u wubx -pfd52!wubx&,
-bash: !wubx@,: event not found

仔细看一下,原来他把!后面的字符串做为命令执行了。又试了一个Navicat的管理端,也一样存在密码不正常的问题。

在测一下程序方面是不是可以用,写一个PHP测一下。

$link = mysql_connect('172.16.100.185′,'wubx','fd52!wubx&,');
if (!link){
die(‘Could not connect:'.mysql_error());
}
echo ‘Connected successfully';mysql_close($link);
?>
#php testdb.php
Connected successfully
还看程序中能正常识别。
PHP还是可以OK通过的。

摘自:http://www.jb51.net/article/52526.htm
《汉书·韩安国传》:“强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。”—一即使是强弓射出的利箭,射到极远的地方,力量已尽时,就连极薄的鲁缟也射不穿了;即使是狂暴的烈风,刮过去后,剩下最后的一丝微力,就连极轻的羽毛都吹不起来。(缟,是一种白色的薄绢,以古时鲁国所产为最薄最细,故称鲁缟。)

应该是势,因为古文中前省略是最常见的,第一句已经说了“即使是最强劲的弓射出的箭,到了最后”(其)势:势解释为力量,前面承前省略“其”指箭。就连极薄的鲁缟也射不穿了

《汉书·韩安国传》:“强弩之末,不能入鲁缟;冲风之衰,不能起毛羽。”—一即使是强弓射出的利箭,射到极远的地方,力量已尽时,就连极薄的鲁缟也射不穿了;即使是狂暴的烈风,刮过去后,剩下最后的一丝微力,就连极轻的羽毛都吹不起来。(缟,是一种白色的薄绢,以古时鲁国所产为最薄最细,故称鲁缟。)

韩安国,字长孺,汉初人。汉武帝时,为御史大夫。当时,北方的匈奴,派人到汉朝来要求和好,武帝就同大臣商议对策。有一个名叫王恢的,曾在靠近匈奴的边境地区当过许多年地方官,很熟悉匈奴的情况,他说:“跟匈奴和好,总是长久不了,不出三几年,它就又要背约,不如不理它,干脆爱兵,把其彻底征服。”
韩安国竭力反对,道:“人家派人来同我们和好,我们反而进攻,这怎么说得过去?况且,千里远征,路途跋涉,战线拉得很长,人马拖得很累,强弩之末,不能入鲁缟,冲风之衰,不能起毛羽,我们未必能打胜仗!”
大臣们都认为韩安国说得有理,汉武帝也表示同意,于是接受匈奴要求,进行和好谈判,建立和好关系。
这段故事,在《史记·韩长孺列传》也有记载,不过文字稍有不同,其中“强弩之末”两句,写作“强弩之极,矢不能穿鲁缟;冲风之末,力不能漂鸿毛。”意思完全相同。
《三国志·蜀志·诸葛亮传》载,曹操大举南下时,诸葛亮访问东吴,请孙权出兵,同刘备一起,合力抗御曹操。诸葛亮谈到,曹操兵力虽强,却已相当疲劳:“曹操之众,远来疲敝,闻追豫州(指刘备)轻骑一日一夜行三百余里,此所谓‘强弩之末,势不能穿鲁缟’者也!”
比喻力量已极度衰竭、毫不中用,就常用“强弩之末”来形容。
参考资料:http://lyh.wlnw.gov.cn/asp/Book_G.asp?lyhid=1323,
背景:想加个内存,Mysql服务器上的内存不够了,就算可以插(插槽都有,现在是4条4G内存,还有空闲八个槽。),不知道兼不兼容,否则不稳定的,不兼容的话,死的更惨,这个不一定了,停产了,就没有办法了。怎么办?得看内存的品牌及型号。
[root@jackxiang ~]# rpm -qa|grep dmidecode
dmidecode-2.11-2.el6.x86_64
[root@jackxiang ~]# dmidecode    
查看服务器型号、序列号:
[root@jackxiang ~]# dmidecode|grep "System Information" -A9|egrep  "Manufacturer|Product|Serial"  
        Manufacturer: VMware, Inc.
        Product Name: VMware Virtual Platform
        Serial Number: VMware-42 18 c8 32 77 c6 ec 16-3f 31 94 e9 d0 34 a6 ac
Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大:
[root@jackxiang ~]# dmidecode|grep -A5 "Memory Device"|grep Size|grep -v Range
        Size: 4096 MB
        Size: 2048 MB
        Size: No Module Installed
        Size: No Module Installed

Linux 查看内存的频率:
[root@localhost htdocs]# dmidecode|grep -A16 "Memory Device"|grep 'Speed'
        Speed: 667 MHz (1.5 ns)
        Speed: 667 MHz (1.5 ns)
        Speed: 667 MHz (1.5 ns)
        Speed: 667 MHz (1.5 ns)
        Speed: Unknown

在linux查看内存型号的命令:
dmidecode -t memory

查看主板型号:
dmidecode |grep -A16 "System Information$"

内存槽及内存条:
dmidecode |grep -A16 "Memory Device$"

硬盘:
fdisk -l
smartctl -a /dev/sda

网卡:
mii-tool
————————————————————————————————————————————————————
dmidecode|grep -P 'Maximum\s+Capacity'    //最大支持几G内存
# cat  /proc/cpuinfo //查看cpu个数与频率
# dmidecode  |grep  "Product Name"  //查看服务器品牌和型号
# dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range       //总共几个插槽,已使用几个插槽
Size: 1024 MB       //此插槽有1根1G内存
Size: 1024 MB       //此插槽有1根1G内存
Size: 1024 MB       //此插槽有1根1G内存
Size: 1024 MB       //此插槽有1根1G内存
Size: No Module Installed       //此插槽未使用
Size: No Module Installed       //此插槽未使用

# dmidecode -t 17        //数字17是dmidecode的参数,本文最后有其他数字参数
dmidecode 2.7
SMBIOS 2.4 present.
Handle 0x0015, DMI type 17, 27 bytes.
Memory Device
  Array Handle: 0x0013
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 2048 MB 【插槽1有1条2GB内存】
  Form Factor: DIMM
  Set: None
  Locator: DIMM00
  Bank Locator: BANK
  Type: Other
  Type Detail: Other
  Speed: 667 MHz (1.5 ns)
  Manufacturer:
  Serial Number: BZACSKZ001
  Asset Tag: RAM82
  Part Number: MT9HTF6472FY-53EA2
Handle 0x0017, DMI type 17, 27 bytes.
Memory Device
  Array Handle: 0x0013
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 2048 MB 【插槽2有1条2GB内存】
  Form Factor: DIMM
  Set: None
  Locator: DIMM10
  Bank Locator: BANK
  Type: Other
  Type Detail: Other
  Speed: 667 MHz (1.5 ns)
  Manufacturer:
  Serial Number: BZACSKZ001
  Asset Tag: RAM83
  Part Number: MT9HTF6472FY-53EA2
Handle 0x0019, DMI type 17, 27 bytes.
Memory Device
  Array Handle: 0x0013
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 2048 MB 【插槽3有1条2GB内存】
  Form Factor: DIMM
  Set: None
  Locator: DIMM20
  Bank Locator: BANK
  Type: Other
  Type Detail: Other
  Speed: 667 MHz (1.5 ns)
  Manufacturer:
  Serial Number: BZACSKZ001
  Asset Tag: RAM84
  Part Number: MT9HTF6472FY-53EA2
Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
  Array Handle: 0x0013
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 2048 MB 【插槽4有1条2GB内存】
  Form Factor: DIMM
  Set: None
  Locator: DIMM30
  Bank Locator: BANK
  Type: Other
  Type Detail: Other
  Speed: 667 MHz (1.5 ns)
  Manufacturer:
  Serial Number: BZACSKZ001
  Asset Tag: RAM85
  Part Number: MT9HTF6472FY-53EA2

实践来源:
http://www.jbxue.com/LINUXjishu/10053.html
http://www.linuxsir.org/bbs/thread309696.html
http://xclinux.diandian.com/post/2013-04-16/40049844350
背景:MYSQL多实例配置、dc提到在实际开发中,其实在生产环境上也有类似的运用,因多种原因,1.存储技术飞速发展,IO不再是瓶颈  2.MySQL对多核CPU利用率低 3.NUMA对MySQL性能的影响等,链接在:http://blog.csdn.net/hylongsuny/article/details/7892488 。
在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi
1.修改my.cnf
  
如一个定义两个实例的参考配置:

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = your_user
password = your_password

[mysqld1]
datadir = /data/db/my1

#连接
port = 3306
socket = /tmp/mysql3306.sock

#binlog
log-bin=/data/db/mylog1/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 30

[mysqld2]
datadir = /data/db/my2

#连接
port = 3307
socket = /tmp/mysql3307.sock

#binlog
log-bin=/data/db/mylog2/mysql-bin
binlog_format=mixed
binlog_cache_size = 32M
expire_logs_days = 3



2.创建数据目录
mkdir -p /data/db/my21
mkdir -p /data/db/my2
chown mysql.mysql /data/db/my1 -R
chown mysql.mysql /data/db/my2 -R


3.初始化DB
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my1/ -uroot (mysql_install_db也是MYSQL官方自带工具)
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/db/my2/ -uroot
chown mysql.mysql /data/db/my1/ -R
chown mysql.mysql /data/db/my2/ -R



4. 安装工具
cp /usr/local/mysql/bin/my_print_defaults /usr/bin/
cp /usr/local/mysql/bin/mysqld_multi /usr/bin/



5.创建、授权用户
CREATE USER "your_user"@"192.168.1.%" IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO "your_user"@"192.168.1.%";
flush privileges;



至此,mysql多实例配置已经完毕。我们看到多个不同的MYSQL实例是共用my.cnf的。多实例命令行管理:
1.mysql启动
mysqld_multi start 1 启动实例1
mysqld_multi start 1-2 启动实例1,2



2.mysql重启
mysqld_multi restart 1 重启实例1
mysqld_multi restart 1-2 重启实例1,2



3.mysql关闭
mysqld_multi stop 1 关闭实例1
mysqld_multi stop 1-2 关闭实例1,2



4.命令行登陆实例2
mysql -u your_user -p your_password -P3307 -S /tmp/mysql3307.sock


摘自Dc(施俊伟)兄弟的唐品blog:
http://www.dcshi.com/?p=410#more-410
手机用的Andoried手机,发现拍照片特别是从电脑上屏幕上拍(本来想用豌豆荚传到手机相册里,但是手机版本的微信没有显示出来,不知为什么,难道其只显示里面通过手机镜头的照片?没细研究),但这样搞主要是手机镜头不行,再就是电脑屏有闪光,拍出来的效果不好。
怎么在电脑上修改微信头像?如下Url实践没有问题:
http://jingyan.baidu.com/album/1612d5007f3ae7e20e1eee06.html?picindex=1
FreeBSD 在 RPi 2上的用户名和密码:
默认的密码是 freebsd/freebsd 和 root/root

FreeBSD系统中无线网络连接无线网卡:
http://www.111cn.net/sys/freebsd/59534.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2015-12/126724.htm

FreeBSD 11-CURRENT on Raspberry Pi Apache 2.4/MySQL 5.6/PHP 5.6, 如何在树莓派 2B 上安装 FreeBSD及网络配置:
http://jackxiang.com/post/8455/

定制Raspberry Pi网站:
http://www.embest-tech.cn/pi-customization/

FreeBSD has supported Raspberry Pi since November 2012, and the current production version (FreeBSD 10) is available as a pre-built image which can be copied onto a memory card.

Download the latest image file from the official FreeBSD ARM page. This page has images for other ARM-based boards like the Beaglebone and the Pandaboard. You need to download an image for the “RPI-B”: for example “FreeBSD-10.0-RELEASE-arm-armv6-RPI-B-20140131-r260789.img.bz2”
摘自 : https://www.maketecheasier.com/freebsd-on-raspberry-pi/

DRAM:  944 MiB
WARNING: Caches not enabled
RPI 2 Model B
MMC:   bcm2835_sdhci: 0
reading uboot.env

修改raspberry pi上安装的freebsd可用内存大小:
http://blog.sina.com.cn/s/blog_a0aacb430101mj69.html


background:Freebsd是真正的Unix血统的Os,其稳定性是顶级的,真正的坚如磐石。在树莓派下也有ARM版本了,最新稳定版本:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0//FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340.img.bz2  
CheckSum:
ftp://ftp6.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/10.0/CHECKSUM.SHA256-10.0-STABLE-arm-armv6-RPI-B-20140822-r270340




三、FreeBSD 11 on Raspberri pi 2(树莓派 2 安装 FreeBSD 11)  :
A note for my own installation.(树莓派 2 安装 FreeBSD 11)
I tried compiling the FreeBSD 11 by myself, but I found there are ready-to-use systems here.
1. Identify your SD card:
# df -h
you will see the result as
de>/dev/mmcblk0p1de> or de>/dev/sdb1de> or something is different from /sda.

2. Unmount the card
# umount de>/dev/mmcblk0p1de> or de>/dev/sdb1de>

3. Copy your image file to the card, (Very important! DO NOT add the partition number p1 or 1, just use the whole card de>mmcblk0 or sdbde>)
# dd bs=4M if=your-freebsd-rpi2-image.img of=/dev/de>mmcblk0de>

4. First boot
After the raspberry pi 2 is powered on, you need login using user name : root, you need also set the password
# passwd

5.Increase swap space
# dd if=/dev/zero of=/usr/swap0 bs=1m count=1024
# chmod 0600 /usr/swap0
# echo 'md99 none swap sw,file=/usr/swap0 0 0' >> /etc/fstab
# swapon -aq

*系统目前很卡,还是不建议安装。感觉Raspbian 还是最流畅的。
来自:http://rhuta.blog.163.com/blog/static/17757006220154129421478/
阅读全文
背景:用爱奇艺网页播放电视剧,发现用那个遨游浏览器神马跳过能跳过的,这货好像不行,一看,它有一个请求在做时间记录着呢,返回204,这样就能像一个对时功能一样,防止用户跳过。
HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。
HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。

使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。

例子:ajax提交用户名、文章id,记录用户访问过该文章
[html] view plaincopy
$(document).ready(function(){  
  $.get("api.php", {name:'fdipzone',article_id:'100'});  
})  

HTTP 状态码header输出:
[php] view plaincopy
/**
* HTTP Protocol defined status codes
* @param int $num
*/  
function HTTPStatus($num) {  
    
   static $http = array (  
       100 => "HTTP/1.1 100 Continue",  
       101 => "HTTP/1.1 101 Switching Protocols",  
       200 => "HTTP/1.1 200 OK",  
       201 => "HTTP/1.1 201 Created",  
       202 => "HTTP/1.1 202 Accepted",  
       203 => "HTTP/1.1 203 Non-Authoritative Information",  
       204 => "HTTP/1.1 204 No Content",  
       205 => "HTTP/1.1 205 Reset Content",  
       206 => "HTTP/1.1 206 Partial Content",  
       300 => "HTTP/1.1 300 Multiple Choices",  
       301 => "HTTP/1.1 301 Moved Permanently",  
       302 => "HTTP/1.1 302 Found",  
       303 => "HTTP/1.1 303 See Other",  
       304 => "HTTP/1.1 304 Not Modified",  
       305 => "HTTP/1.1 305 Use Proxy",  
       307 => "HTTP/1.1 307 Temporary Redirect",  
       400 => "HTTP/1.1 400 Bad Request",  
       401 => "HTTP/1.1 401 Unauthorized",  
       402 => "HTTP/1.1 402 Payment Required",  
       403 => "HTTP/1.1 403 Forbidden",  
       404 => "HTTP/1.1 404 Not Found",  
       405 => "HTTP/1.1 405 Method Not Allowed",  
       406 => "HTTP/1.1 406 Not Acceptable",  
       407 => "HTTP/1.1 407 Proxy Authentication Required",  
       408 => "HTTP/1.1 408 Request Time-out",  
       409 => "HTTP/1.1 409 Conflict",  
       410 => "HTTP/1.1 410 Gone",  
       411 => "HTTP/1.1 411 Length Required",  
       412 => "HTTP/1.1 412 Precondition Failed",  
       413 => "HTTP/1.1 413 Request Entity Too Large",  
       414 => "HTTP/1.1 414 Request-URI Too Large",  
       415 => "HTTP/1.1 415 Unsupported Media Type",  
       416 => "HTTP/1.1 416 Requested range not satisfiable",  
       417 => "HTTP/1.1 417 Expectation Failed",  
       500 => "HTTP/1.1 500 Internal Server Error",  
       501 => "HTTP/1.1 501 Not Implemented",  
       502 => "HTTP/1.1 502 Bad Gateway",  
       503 => "HTTP/1.1 503 Service Unavailable",  
       504 => "HTTP/1.1 504 Gateway Time-out"          
   );  
    
   header($http[$num]);  
}  

来自:http://blog.csdn.net/fdipzone/article/details/12322575
iframe跨域传值超过2M的问题解决
使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。


还需要注意2个问题:

1 tomcat下post不能超过2M的问题
这个需要将tomcat的配置文件server.xml修改一下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>
maxPostSize为0时,表示不用限制长度。

2 跨域的问题
跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。

来自:http://housen1987.iteye.com/blog/1695065
背景:我查一些按顺序的uuid,后用select in(uuid,uuid2...),查出来的顺序是按uuid ,uuid2么?会不会出现不一致的情况。

select * from table_name where id in ()的时候,MySQL会自动按主键自增排序,要是按给定的顺序来取,如何实现呢?

select * from table_name where id in (122,1,5,323,23,1200) order by find_in_set(id, '122,1,5,323,23,1200')
这样读取出来的顺序为 122,1,5,323,23,1200

来自:http://blog.163.com/zhaoyingzhaoying@yeah/blog/static/168024152201110149140931/
示例:


Mysql FIND_IN_SET 语句原始排序:
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')

来自:http://jianzhong5137.blog.163.com/blog/static/9829049201201421430839/


注意,这个find_in_set单条记录没问题,比如唯一id的in。多条记录order会失效(instr也不全行,大部分可以,不过对于特殊的,比如CD是会认为C也在里面的情况。):
select * from act_log where answer in ('B','C','CD') order by instr( "'B','C','CD'",answer)
正确排序: B,B,C
select * from act_log where answer in ('B','C','CD') order by find_in_set( answer,"'B','C','CD'")
排序错误:CD,C,BB,C。
美化桌面快捷图片的小键头
如果你之前改过这个,发现桌面的快捷方式不能放在超级任务栏上,那说明你的那种方法不正确。以下是我找到的正确方法可以去掉快捷方式图标的小键头:
找一透明ico图标,保存到C:\windows文件夹中,文件名为Empty.ico
新建一文本文档,粘贴以下内容,另存为扩展名reg的注册表文件,
双击导入,注销后重新登录即可
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons]
"29"="C:\\Windows\\Empty.ico,0"
分页: 68/339 第一页 上页 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 下页 最后页 [ 显示模式: 摘要 | 列表 ]