LOADING

2019年3月

php版本7.1

<?php

$n=1;
$time=time();
while($n<100000000){
    $n=$n+1;
}
echo time()-$time;
3秒

python版本3.7

8.27714991569519秒


python版本2.7
import time
n = 1
time_start = time.time()
while n < 100000000:
    n = n+1
time_end = time.time()
print time_end - time_start
10.3120000362秒

斐波那契 php版本 7.1
<?php
/**
 * Created by PhpStorm.
 * User: dn
 * Date: 2018/10/18
 * Time: 17:17
 */

$startTime = time();
function f($a)
{
    if ($a == 0 || $a == 1) {
        return 1;
    }
    return f($a-1) + f($a-2);
}
for($i = 0; $i < 40; ++$i) {
    echo f($i).' ';
}
$endTime = time();
echo $endTime-$startTime;
101秒

斐波那契 php版本 5.6

177秒

斐波那契 python2.7

182秒

今天在做jenkins的时候遇到了脚本中需要用到scp的情况
yum install expect
然后做个脚本
vi scp.sh

!/usr/bin/expect

set timeout 60

spawn scp "百度scp格式"

expect "*password"

send "12345/r" #注意!!!如果密码中包含特殊字符 则需要在前面加 最后的r是必带的

expect eof
:wq

chmod +x scp.sh
./scp.sh
就齐活了

jenkins是准备用来做和gitlab自动部署的,jenkins依赖于java所以我们需要先配置java环境

yum install java-1.8.0-openjdk* -y直接安装java1.8的所有文件
如果报错 请切换至阿里yum源

第一步:备份你的原镜像文件,以免出错后可以恢复。
(使用mv命令,mv有两个作用一个是移动,一个是重命名,这里用到的是重命名的作用)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/

要查看自己CentOS版本命令
[root@localhost ~]# lsb_release -a

阿里云
CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

执行
yum clean all
yum makecache
可以重新执行安装java jdk yum install java-1.8.0-openjdk*
java -version 查看是否安装成功
接下来安装jenkins
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

设置jenkins 根目录位置(linux centos 默认安装在/root/.jenkins目录下)

  1. 编辑 bash_profile 文件

vi /root/.bash_profile

  1. 添加如下内容(设置jenkins根目录) export JENKINS_HOME=/opt/jenkins
  2. 生效更改

source /root/.bash_profile

启动jenkins(默认启动是8080 手动启动改为8888,避免端口冲突)
java -jar jenkins.war --httpPort=8888 &
查看启动情况
ps aux | grep jenkins
接下来就可以访问了
http://ip:8888
剩下的按照操作走就可以了中文的,稳得不行

Laravel中对数据库的连贯操作叫做 查询构造器,我本人是比较推荐使用查询构造器的,方便易读好交接,而且可以使用tp的思想进行操作
例子如下

$map['aggratepage_game_statistic.channel'] = $channel;
$data = DB::table('a')
    ->leftJoin('b','a.ad_id','=','b.task_id')
    ->where($map)
    ->whereBetween('a.date',[$startTime,$endTime])
    ->select('a.*','b.task_name')
    ->paginate($row);

具体使用上跟TP5很相似只不过需要注意的是Laravel的select 就是TP的field,使用了一周Laravel 我至今觉得TP5的Db类使用方便程度上略胜Laravel,TP5的page简直就是碾压Laravel!
切入正题
Laravel DB类取出的数据都是对象

LengthAwarePaginator{#460 ▼
  #total: 2
  #lastPage: 1
  #items:Collection{#458 ▼
    #items: array:2 [▼
      0 => {#454 ▼
        +"date": "2018-09-18"
        +"channel": "123"
        +"haha_id": 1
         }    ]  }
  #perPage: 10
  #currentPage: 1
  #path: "http://localhost/youzhuan/public/Admin/Statistics"
  #query: []
  #fragment: null
  #pageName: "page"}

这种对象内是否有数据是不能用!来分辨的,如果你想判断这个对象中是否有数据可使用

if($data->count()){

}

来进行判断,如果想获取数据可以使用
$data->items();这样获取出来的数据还是对象
如果你想在使用中直接在查询中就获取到$data->items()这样的对象的话 你可以在连贯操作后加->toArray();
你在使用Laravel中会发现数据库取出来的都是对象,真的超级难用,至少我是这么觉得的,我还是觉得从数据库取出来的直接就是数组比较爽

因为移动端传来的emojo表情是4个字节的unicode 而UTF-8编码最多只能识别3位的unicode编码 所以需要把数据表中的字段 修改成utf-8mb4格式才能进行存储
注:此方法只能让其他数据正常存储, 并不能让前端直接显示表情
ALTER TABLE tb_case MODIFY COLUMN content VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

主要实现逻辑是页面跳转前记录下滚动条坐标到cookies,跳转后回复坐标

.onbeforeunload = () {

   ;
   (.pageYOffset != ) {
       = .pageYOffset;
   }
   (.compatMode != && .compatMode != ) {
       = .documentElement.scrollTop;
   }
   (.body != ) {
       = .body.scrollTop;
   }
   .cookie = + ; }

.onload = () {

   (.cookie.() != ) {
       = .cookie.(); .documentElement.scrollTop = ([]);
       .body.scrollTop = ([]);
   }

}