为你的php应用加个速

虽然从事php开发较长时间,但是一直没有太关注自己博客的php使用,因为我在博客的使用中更注重内容输出。对应用的关注来源于一次博客的访问超时,看报错是因为内存超出,服务器是学生时代就开始使用的(1核1G)的阿里云服务器。秉承着高效快速的处理方案,我优先选择了提高配置,为服务器新加了1G内存。内存不够的问题,就这样先暂时解决了。

继续阅读为你的php应用加个速

vue学习与实践——后端猿采坑记

本周帮助公司进行后台项目的前端改造,之前采用的是后端模板渲染页面的方式。该方式的优点是后端工程师开发简便,易于上手,前端开发成本低。但他同时也有着不小的局限,比如前后端无法分离,无法实现页面的局部刷新,无法进行对数据进行双向绑定等,所以本周我接下了这个有趣又有挑战的新任务。

之前的工作经历中有一段的前端开发经验,所以本次开发开始前没有太多的抵触心理,按套路先打开vue.js的文档,简单的通读一下便开始上手了。

下面附上官网链接

https://cn.vuejs.org/v2/guide/index.html

第一步,引入Vue。

官网提供了引入Vue的很多种方式,比如现在比较流行的npm包管理,webpack等,我这里因为是只做vue的使用所以,简单粗暴的使用了<script>的标签引入方式。 这个版本包含了Vue的报错与提示 。

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

线上版本推荐使用Vue.min,这个版本更小,但是没有包含报错信息。

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>

引入js文件之后,我们就可以投入到vue.js的开发了。 根据官网的指引首先进行vue的声明,也就是实例化。

继续阅读vue学习与实践——后端猿采坑记

关于laravel 数据库事务使用的一个小坑

事情大概发生在几个月前,在开发过程中遇到了事务无法回滚的情况,前后排查了1小时没有找到问题的原因,最后我觉得从这个业务的每一个model去排查,最后发现了事务开启过程中的细微差别。

在我们线上的业务应用中,为了缓解数据库的访问压力,我们通常会为数据库设置主从数据库,主数据库用于写,从数据库用于读。而在我们的model配置中如果不设置连接主数据库的话,通常会走default配置。而如果你的default配置是读库,那么在进行数据库回滚的时候就会出现问题。

相当于你在主数据库开启了失误,而在从数据库进行commit或roallback,而避免出现这种情况的最好方式就是在model使用的过程中,加上强制连接主库,这样就不会出现与我类似的问题。

lua学习笔记

本周入职了新公司,经过了短暂的入职,很快就投入到热火朝天的工作当中,领导帮忙开了虚拟机,就可以开干了。

lua也是一门脚本语言,在学些了一段时间之后,感觉比php更自由。

1.首先变量的默认声明 将 声明为 全局变量 ,局部变量将通过 local var 进行声明。

2.lua的语句结束之后,不需要分号做为结束,换行后即代表语句的结束。

3.lua的table结构与php数组结构类似,它同时支持数组和键值存储的形式。

4.lua的判断只有 nil和false为假 ,0和空字符串也会为真,这点与php也是有不晓得区别。

5.lua的table循环 需要使用到迭代器 对于数组性质的table 采用ipairs迭代器 ,对于 键值性质的table采用pairs迭代器。

6.lua if for 和function 的开始结束 没有{} 结束是通过end进行。

7.关于字符串的拼接 需要时使用 .. 而不是一般语言的 . 或者 + ,这也会对一些其他语言的使用者造成困扰。

8.关于正则模式匹配问题。OpenResty 中并行着两套字符串匹配方法,

Lua 自带的 sting 库,以及 OpenResty 提供的 ngx.re.* API。

php实现冒泡排序

冒泡排序

上一次我们用php实现了快速排序算法,今天我们就用php来实现一下冒泡排序算法,首先我们来介绍一下冒泡排序。

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
下面是代码的实现过程:

<?php
$a = [3,5,2,8,6] ;
public function soap_soft($array){
$length =count($array);
$temp = 0;
for($i=1;$i<$length-1;$i++)
{
 for($j=0;$j<$length-$j;$j++)
 if($array[$j] < $array[$j-1])
     {
          $temp = $array[$j-1];
          $array[$j-1] = $array[$j];
          $array[$j] = $temp;
     }
}
return $arr;
}
print_r(sort_soap($a));

 

php实现快速排序

 

<?php

$a = [6,10,3,8,15,28,2];//待排序数组;
public function quickSort($a){
    if(!is_array($a)){
         return false;
    }
    $length = count($a);
    if($length<=1){
        return $a;
     }
    $left=$right=[];
    for($i=1;$i<$length;$i++)
     {
        if($a[$i]<$a[0]){
          $left[]=$a[$i];
        }else{
          $right[]=$a[$i]'
        }
     }
    $left=quickSort($a);
    $right=quictSort($a);
    return array_merge($left,[$a],$right);
}
echo quickSort($a);



 

php 将字数串打散为数组

今天在学习算法的过程中遇到了一道试题 :找出无重复字符串的长度。

在使用php解答的过程中需要将字符串的每个字符存入数组当中,因为很多小的函数长时间未使用所以有些遗忘,一番寻找之后找到了这个函数。

str_split — 将字符串转换为数组

说明

str_split ( string $string [, int $split_length = 1 ] ) : array

将一个字符串转换为数组。

参数

string

输入字符串。

split_length

每一段的长度。

返回值

如果指定了可选的 split_length 参数,返回数组中的每个元素均为一个长度为 split_length 的字符块,否则每个字符块为单个字符。

如果 split_length 小于 1,返回 FALSE。如果 split_length 参数超过了 string 超过了字符串 string 的长度,整个字符串将作为数组仅有的一个元素返回。

通过这个函数就可以将我们的字符串存入到数组中了。

线上服务器排错

今天公司主站出现了宕机,一段时间内大家都没有找到问题原因。因为线上做了错误的隐藏,并且错误日志没有打印成功,给大家的问题排查造成了一定困难,最终找到原因是因为刚上线的代码因认为操作原因,收到了预发布代码的污染。导致还在测试中的其他项目被代入了发布项目中,线上数据库字段缺失,造成了服务不可用。

因为项目历史比较久,还是使用的PHP ci框架的模板渲染,未进行前后端分离,所以导致了页面整个挂掉。这个事情引起我的一些思考:首先,如果代码发布后,出现问题应该首先即时回滚代码到上个版本,确保服务的可用性,其次,网站首页应该做到纯静态,因为公司的首页是一个展示公司形象的地方,作为一个互联网公司更不能让长时间的服务不可用。最后要经常进行日志的检查,确保错误信息能够及时的输出到日志文件,今天的问题给我们日后处理相关事件提供了宝贵的经验。

& 和 && 的区别

& 符 大家经常使用,不过有些基础不牢的同学能会误用它。

一个&表示位运算,如果有运算 $a&$b,那么首先会将两个变量转换为2进制数,然后进行位于算。两个&&表示逻辑运算,首先判断&&左边是否为真,如果未假则不进行右边的运算,所以当我们进行 if判断是推荐大家使用&&。