再见2016

图片alt

2016马上就要结束了,风雨飘摇的一年,充满收获的一年。

刚刚过了年就跟前女友分手了,但是高兴的是立刻发现了更好的人。也许人无完人,我们在将来都有可能遇到更好的人。但是我想说的是,我很懒就坑你了,只要不放弃我,我愿意努力给你个美好的未来,我的口号还是以前那样,不求大富大贵腰缠万贯,起码衣食无忧。

正式毕业2年整,人更成熟了,更加平淡的看事情了,最终我还是回到了北京,算命的说我不能离家太远,最后我还是要回到哈尔滨。但是呢,我又一次出来了,我坚信自己的努力会得到相应的回报,只不过时间早晚的问题,多变的工作经历,让我有了更丰富的经历。都说2016是寒冬,但是在我看来,工作依然是给准备好的人的,在哈尔滨的时候就准备了几家面试。最终被pass了几家,我也pass了几家,最后挑选offer的时候没有选择58,而是选择了现在的公司,在面试的时候就聊了很多,大公司的利弊,小公司的利弊也都说的很清晰。而且自己也有一些方向,所以最后我更有倾向性的一家公司。说实话到现在也没有体会过大公司的感觉,小公司倒是工作了很多家,看看在有机会的吧,能够体会一下大公司的感觉,也许下次挑选公司就是以一个高级程序员或者更高的的身份直接杀向bat这样的公司了,近几年估计不会乱动,不过现在看来还是有难度的,小公司的好处就是什么都能接触到,但是由于小公司的限制不能够在某一领域深入进去,毕竟有更多的任务等待去解决,不过方向到现在我也没个目标,所以还是在小公司厮混。再有一个就是小公司的隐性福利必然没有大公司的完备,毕竟资金流有限。

做一个事情要坚持,坚持下去才会成功,知道的越多迷茫越多,方案就是不挺的学下去,在一个基础要牢靠,我就觉得我的基础有些差,现在也在不停的补充基础知识,还有就是知识让人分369等。既然出身不好,我就努力吧。

2017我还会在这个地方战斗下去,加油。学习,keep study。

我所理解PHP中的container

又用了一次老图片,这个图片我个人真的炒鸡喜欢呢。

说正事吧,10天前,我开始着手写自己的php框架,目前仅仅把路由和mvc中的vc实现了出来,说实话写框架真的不是那么简单的事情,需要考虑的东西要比平时写逻辑多得多。也可能是我考虑的太多,就是那些有的没的很容易中断我的思路,而且总想用上最新的东西,让自己的框架看起来高达上一些,所以最先想实现出来的就是这个container了。框架也许会中断一阵,然后从小的组建弄起,先准备弄一个pdo的封装,然后这个pdo的封装就成为我框架重的m了。

好吧,又跑偏了,继续说container,以前弄java的时候ssh框架就多次提到了ico啊di啊什么的,也许是当时自己的知识不够吧,仅仅是那么用而已,具体为什么却没有去考究,做开发3年多了,现在我也算是理解了。下面就说说我们为什么需要一个container作为全局容器呢。就是为了ioc/di。

那么ioc/di是什么呢,这两个其实是一个意思,就是什么控制反转,依赖注入,这两个词描述的是一个事情,只不过是从不同的方向说的而已。以前我们在开发的时候需要一个什么东西,构造好,传递进去,为什么不说在类里面初始化呢,这也是解耦嘛。现在为什么要依赖注入呢,早年的php框架各自为政没有太多的需求,现在psr标准出来了,composer有了很多的组件让我们来使用,标准就越来越凸显了,大家的选择就有很多,我们在各种标准接口上实现自己的类,就可以无缝替换了。也许有朋友会说。上面的方式也ok啊,改个代码就行了,但是不得不说的是这是极度危险的,当有一处忘记改动了,就会有很大的问题。所以,有一个容器统一管理我们的各种组件就是很重要的了。然后我们修改config中的相关项就可以了,这样就会很安全。

好吧,上面就是我的理解,没有一个代码,真的不愿意贴代码啊。

btw,美好的周六这么过去了,没写代码,现在写点吧,开始弄pdo

在网页上增加角标

<div style="height:50px;position: absolute; top: 0px;right: 0px; overflow: hidden;">
    <div style="font-size: 12px;text-align: center;position: relative; top: -5px;right: -52px; z-index: 999; background: #ff0000;color: #f3f3f3;transform:rotate(45deg);padding: 12px 50px 3px 50px;">Beta</div>
</div>

单纯是公司用到了,需要记录下,具体参数可以自行调整,外部 div 就是为了防止溢出用的了

[转载] php正则表达式实现@某人

PHP正则表达式实现@某人 if(preg_match_all('#@\w+#u', '@张全蛋 含泪质检@三星Note7 被炸飞,听说@炸机 跟@啤酒 更配哦!', $matches)) { var_export($matches); } //输出 array ( 0 => array ( 0 => '@张全蛋', 1 => '@三星Note7', 2 => '@炸机', 3 => '@啤酒', ), ) 正则表达式 #@\w+#u 中:

是分隔符.

u是修饰符,表示Unicode. \w是元字符,在ASCII下等价于[A-Za-z0-9_],在Unicode下表示字符(包括汉字)和数字和下划线. +是量词,表示1个或多个,等价于{1,}

PHP归并排序

<?php

function sortArr($arr) {
    if (count($arr) < 2) {
        return $arr;
    }
    $mid = count($arr) / 2;
    $arr1 = array_slice($arr, 0, $mid);
    $arr2 = array_slice($arr, $mid, count($arr));
    $arr1 = sortArr($arr1);
    $arr2 = sortArr($arr2);

    return mergeArr($arr1, $arr2);
}

function mergeArr($arr1, $arr2) {

    if (!is_array($arr1)) {
        $arr1[] = $arr1;
    }
    if (!is_array($arr2)) {
        $arr2[] = $arr2;
    }

    $i =0;
    $j = 0;
    $arr1Length = count($arr1);
    $arr2Length = count($arr2);
    $returnArr = [];
    while($i < $arr1Length && $j < $arr2Length) {
        if($arr1[$i] > $arr2[$j]) {
            $returnArr[] = $arr2[$j];
            $j++;
        } else {
            $returnArr[] = $arr1[$i];
            $i++;
        }
    }
    for($tmp = $i; $tmp < $arr1Length; $tmp++) {
        $returnArr[] = $arr1[$tmp];
    }
    for($tmp = $j; $tmp < $arr2Length; $tmp++) {
        $returnArr[] = $arr2[$tmp];
    }
    return $returnArr;
}

$arr = [1,3,2,5,7,9,3,1];

$sortableArr = sortArr($arr);

foreach ($sortableArr as $a) {
    print_r($a . "\n");
}

说实话,算法这东西,挺好玩的,以前还搞过快排,但是忘却了,今天这个归并排序应该很难忘记了,毕竟理解起来要比快排好得多,但是快排回来后面补充