笔记

遍历数组的方式:
1.定义循环数组
$arr = array('website'=>'http://www.poluoluo.com','webname'=>'脚本之家')
while(list($k,$v) = each($arr)){
echo $k.'=>'.$v.'<br />';
}
2.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $k=>$v){
echo $k."=>".$v."<br />";
}
3.定义数组
$arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
foreach($arr as $value){
echo $value.'<br />';
}  
4.for 循环
arr = array('http://www.poluoluo.com','脚本之家','PHP教程');
$num = count($arr);
for($i=0;$i<$num;++$i){
echo $arr[$i].'<br />';
}

公密钥的获取方式:
windows:
1: 首先检查php.ini中;extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘;', 如果不存在这行,那么添加extension=php_openssl.dll。
2: 讲php文件夹下的: php_openssl.dll, ssleay32.dll, libeay32.dll 3个文件拷贝到 WINDOWS\system32\  文件夹下。
3: 重启apache
linux:
# 下载到/var/www/php5目录下
cd /var/www/php5
wget http://mirrors.sohu.com/php/php-5.2.14.tar.gz
# 解压
tar zxvf php-5.2.14.tar.gz
# 进入PHP的openssl扩展模块目录
cd php-5.2.14/ext/openssl/
/var/www/php5/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找
# 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
mv config0.m4 config.m4
/var/www/php5/bin/phpize
./configure --with-openssl --with-php-config=/var/www/php5/bin/php-config
make
make install
# 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
# 编辑php.ini文件,在文件最后添加
extension=openssl.so
# 重启Apache即可
/usr/local/apache2/bin/apachectl restart

php编码转换iconv
$data = "I love";
$newData = iconv(mb_detect_encoding($data),'GBK',$data);


app 接口封装(json)
class Response{
 /**
 *按json方式输出通信数据
 *@param string $code 状态码
 *@param string $massage 提示信息
 *@param array $data 数据
 *return string
 */
 public static function json($code,$message='',$data=array()){
    if(!is_numeric($code)){
       return '';
    }
     $result = array(
        'code' => $code,
        'message'=>$message,
        'data'=>$data
     );
    echo json_encode($result);
    exit;
   }
 public static function xml(){
   header("Content-Type:text/xml");
   $xml="<?xml vesion='1.0' encoding='utf-8'?>\n";
   $xml.="<root>\n";
   $xml.="<code>200</code>\n";
   $xml.="<message>数据返回成功</message>\n";
   $xml.="<data>\n";
   $xml.="<id>200</id>\n";  
   $xml.="<name>haiming</name>\n";
   $xml.="</data>\n";
   $xml.="</root>";

   echo $xml;
 }
 public static function xmlEncode($code,$message,$data=array()){
     if(!is_numeric($code)){
       return'';
     }
     $result = array(
        'code'=>$code,
        'message'=>$message,
        'data'=>$data,
     );
     header("Content-Type:text/xml);
     $xml ="<?xml version ='1.0' encoding='UTF-8'?>\n";
     $xml.="<root>\n";
     $xml.=self::xmlToEncode($result);
     $xml.="</root>";
     echo $xml;
 }
  public static function xmlToEncode($data){
    $xml = '';
    foreach($data as $key=>$value){
       $xml.="<{$key}>";
       $xml.=is_array($value)?self::xmlToEncode($value):$value;
       $xml.="</{$key}>\n";
    }
   return $xml;
 }
}
$data = array(
    'id'=>1,
    'name'=>'haiming'
);

Response::xmlEncode(200,'success',$data);


require_once('./response.php');
$arr = array(
   'id'=>1,
   'name'=>'haiming'
   );
 Response::json(200,'数据返回成功',$arr);

linux定时任务crontab例子
*/1 **** php /data/www/cron.php  意思是每分钟执行cron.php
50 7 *** /sbin/server sshd start  意思是每天7:50开启ssh服务
linux运行php文件   /user/bin/php
linux   tar -tzvf test.tar.gz demo.php    //压缩文件
linux   tar -tzvf test.tar.gz   //列出压缩文件内容
linux   tar -xzvf test.tar.gz demo.php  //解压文件

.zip格式压缩
zip  压缩文件名   源文件  
zip -r 压缩目录名 源目录
unzip  解压缩
.gzip格式压缩
gizp  源文件
gzip -c 源文件 > 压缩文件
gzip -r (压缩目录下的所有子文件,但不压缩目录)
.bzip2格式压缩
bzip2 源文件 (不保留源文件)
bzip2 -k 源文件 (保留源文件)  *bzip2命令不能压缩目录
.tar.gz格式压缩
直接压缩 tar -zcvf jp.tar.gz jp   把jp压缩成jp.tar.gz
直接解压缩 tar -zxvf jp.gz   把jp.tar.gz解压成jp
直接压缩 tar -jcvf jp.tar.bz2 jp  把jp压缩成jp.tar.bz2
直接解压到指定位置 tar -jxvf jp.tar.bz2  -C/tmp/
挂载命令  mount
设置别名alias  如果是命令临时生效  alias vi='vim'   如果是文件永久生效 vi /roo/.bashrc 必须重启系统才能生效
删除别名unalias
常用快捷键   ctrl+c  强制终止当前命令   ctrl+l   清屏                         ctrl+a   光标移动到命令行首
             ctrl+e  光标移动到命令行尾 ctrl+u   从光标所在位置删除到行首     ctrl+z  把命令放入后台
             ctrl+r  在历史命令中搜索   cat 查看文件   history历史命令  history -c 清空历史命令
netstat -an | grep ESTABLISHED | wc -1  查看当前服务器的登录个数



命令  ls -l(长格式显示)
      ls -h(人性化显示文件大小)
      ls -a(显示所有文件,包括隐藏文件)
      ls -d(查看目录属性)
      ls -i(显示inode)
mkdir(创建目录)     -p(递归创建)   quit(退出)  touch(递归创建目录)
ctrl+l(清屏)      cd 和cd ~ (进入当前用户的家目录)  cd - (进入上次目录)  cd .. (进入上一级目录)  cd .  (进入当前目录)
 rm (删文件) rm -r (删除目录)  rm -rf(递归强制删除目录)
 cp  (复制文件)    cp -r (复制目录)  cp -p (递归复制目录)  cp -a (复制源文件一模一样的)  mv (剪切或改名)
文件搜索命令locate (在后台搜索,搜索速度慢)
命令搜索命令whereis与which    whereis(系统命令所在位置) whoami(我是谁) whatis (干生么的)
文件搜索命令find(整个文件里去搜索)  find . size 25k(搜索等于25KM的文件,其中-25k是小于25KM的文件,+25k大于25KM的文件)   find . -inum  262422 (查找i节点是262422的文件)
字符串搜索命令grep  


linux  硬盘分区表MBR分区(主分区不超过4个;单个分区容量最大2TB)   (工具 fdisk)
       硬盘分区表GPT分区(主分区个数几乎没有限制;单个分区容量几乎没有限制) (工具 parted)
       1EB = 1024PB    1PB = 1024TB    1TB = 1024GB  

       parted  可以用MBR分区   指定分区表类型命令 mklabel msdos
               可以用GPT分区   指定分区表类型命令 mklabel gpt

       查看分区表类型  print
       parted分区分为交互模式和命令模式
             交互模式:添加分区命令(mkpart) (设置分区名称和类型大小)
             命令模式:添加分区命令(mkpart test 2000 3000)
             删除分区(rm 分区序号)
             设置分区单位 (unit GB)
       磁盘分区格式化命令:(mkfs)例如:(mkfs.ext3  /dev/sdb1) 把sdb1格式化成了ext3
                                         (mkfs -t ext4 /dev/sdb2) 把sdb2格式化成了ext4


       挂载 :必须挂载到存在的文件夹中
            建文件夹:mkdir -p /mnt/test
            挂载命令(mount /dev/sdb1 /mnt/test)
            卸载命令(umount /mnt/test)
            系统重启想执行自动挂载必须编辑etc/fstab  (vim + etc/fstab)
            在fstab中加配置:
            /dev/sdb1       /mnt/test     ext3      defaults

       修改分区(t)->选择分区(通过分区编号)->选择16进制编码(用L查看)
                     格式化交换分区:mkswap /dev/sdb3
                     启用交换分区:swapon /dev/sdb3
                     查看交换分区:free
                     关闭交换分区:swapoff /dev/sdb3
                     

       用户组:添加一个用户组:groupadd shichaobu
               修改用户组名:groupmod -n market shichaobu
               修改用户组编号:groupmod -g 668 market
               添加一个用户组指定编号:groupadd -g 888 boss
               删除一个用户组:groupdel market
      查看服务是否安装:chkconfig --list | grep atd    
      查看是否运行:service atd status
      查看服务是否安装:chkconfig --list | grep cron
      查看是否运行:service atd status



正则表达式
.    匹配除换行符意外的任意字符 [x]  匹配x字符,如匹配字符串的a、b和c字符
\w   匹配字母或数字或下划线     \W   匹配任意非字母,数字,下划线和汉字的字符
\s   匹配任意的空白字符         \S   匹配任意非空白的字符
\d   匹配数字                   \D   匹配任意非数字的字符
\b   匹配单词的开始或结束       \B   匹配不是单词开头或结束的位置
^    匹配字符串的开始           [^x] 匹配除了x意外的任意字符
$    匹配字符串的结束


验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^\S+[a-z A-Z]$
验证账号,不能有空格,不能非数字:^\d+$
验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]\w{5,17}$
验证是否含有 ^%&',;=?$\ 等字符:[^%&',;=?$\x22]+
匹配Email地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是 2004-10-22 格式:^\d{4}\-\d{1,2}-\d{1,2}$
匹配国内电话号码:^\d{3}-\d{8}|\d{4}-\d{7,8}$
评注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567
匹配中国邮政编码:^[1-9]\d{5}(?!\d)$
匹配身份证:\d{14}(\d{4}|(\d{3}[xX])|\d{1})
评注:中国的身份证为 15 位或 18 位
不能为空且二十字节以上:^[\s|\S]{20,}$
字符匹配
匹配由 26 个英文字母组成的字符串:^[A-Za-z]+$
匹配由 26 个大写英文字母组成的字符串:^[A-Z]+$
匹配由 26 个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^\w+$
匹配空行:\n[\s| ]*\r
匹配任何内容:[\s\S]*
匹配中文字符:[\x80-\xff]+ 或者 [\xa1-\xff]+
只能输入汉字:^[\x80-\xff],{0,}$
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配数字
只能输入数字:^[0-9]*$
只能输入n位的数字:^\d{n}$
只能输入至少n位数字:^\d{n,}$
只能输入m-n位的数字:^\d{m,n}$
匹配正整数:^[1-9]\d*$
匹配负整数:^-[1-9]\d*$
匹配整数:^-?[1-9]\d*$
匹配非负整数(正整数 + 0):^[1-9]\d*|0$
匹配非正整数(负整数 + 0):^-[1-9]\d*|0$
匹配正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
匹配负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
匹配浮点数:^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
匹配非负浮点数(正浮点数 + 0):^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
匹配非正浮点数(负浮点数 + 0):^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
其他
匹配HTML标记的正则表达式(无法匹配嵌套标签):<(\S*?)[^>]*>.*?</\1>|<.*? />
匹配网址 URL :[a-zA-z]+://[^\s]*
匹配 IP 地址:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
匹配完整域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?



1. ps  链接: https://pan.baidu.com/s/1i5oUJbv 密码: 9qjc
 2.html5 + css3 链接: https://pan.baidu.com/s/1dFen9uD 密码: h636
 3.javasript 链接: https://pan.baidu.com/s/1o76Lpv8 密码: m3cq
 4.jquery 链接: https://pan.baidu.com/s/1bQg6Ii 密码: w7wv
 5 bootstrap 链接: https://pan.baidu.com/s/1hsQQ1Ys 密码: wgsr
 6. vue.js 链接: 链接: https://pan.baidu.com/s/1mhMywNQ 密码: vprt
 7. Angular.js 链接: https://pan.baidu.com/s/1skCKMIT 密码: vxhs
 8.node.js 链接: https://pan.baidu.com/s/1dERwwcp 密码: 9vsq
 9.webpack 链接: https://pan.baidu.com/s/1jIKGNH0 密码: xs4f
10. Backbone 链接: https://pan.baidu.com/s/1dE7dAxz 密码: 863y
11. KnockOut 链接: https://pan.baidu.com/s/1o8Bfpjk 密码: 7bya
12.ECMAScript6  链接: https://pan.baidu.com/s/1skKSrCh 密码: 2esg
13. meteor 链接: https://pan.baidu.com/s/1pKIU48V 密码: 7jis
14 php 基础.链接: https://pan.baidu.com/s/1mhZp8YO 密码: 7xqv
15.mysql数据库 链接: https://pan.baidu.com/s/1dE3FMKD 密码: dgdc
16.memcached缓存优化 链接: https://pan.baidu.com/s/1o7U1RLK 密码: brfi
17. ThinkPHP 链接: https://pan.baidu.com/s/1qYfTbHi 密码: f7k6
18. Yil 链接: https://pan.baidu.com/s/1jIMcJhc 密码: rhv2
19 smarty 链接: https://pan.baidu.com/s/1c1OaEJ2 密码: 8jxq


Mysql 优化:
    
    1 , 为查询缓存优化查询语句
    2 , Explain 查看select语句
    3 , 当只要一行数据时 , 用limit1
    4 , 为搜索条件字段建立索引
    5 , join查询的时候  , on关联的字段最好同类型
    6 , 不要order by rand() , 打乱返回结果集
    7 , 避免select *
    8 , 为每张表都设置主键自增unsigned id
    9 , 使用定长而不是边长 , 定长表就是static的
    10 , 避免字段为null
    11 , 可使用无缓冲字段mysql_unbuffered_query() , 每次执行就返回结果 , 不用等全部执行完
    12 , 特定字段 , 特定存 , 比如ip varchar(12)可用int(32)
    13 , 拆分大的delete和insert , 会锁表 , 影响其他进程堆积操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值