liangfeng0828

liangfeng0828 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

liangfeng0828 提出了问题 · 2月22日

php正则表达式++什么意思?

preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)

php正则表达式++什么意思?

关注 4 回答 3

liangfeng0828 提出了问题 · 1月29日

ssh登陆 ls 结果卡住,朋友们有遇到这种情况吗?

image.png

ll一次回车就卡住了,如上图。然后我再按一次回车,就变成下图这样:

image.png

还有一个现象,按右移动键会删除字符。最近才出现的,大神们,这是什么原因?

关注 1 回答 0

liangfeng0828 报名了系列讲座 · 2020-10-05

liangfeng0828 赞了回答 · 2020-09-21

php curl_multi_exec 官网例子里面为啥有两次 do while

效率不同。
官方的demo通过

do {
    $mrc = curl_multi_exec($mh, $active);//位置1
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

去循环,去确保所有进程都被开始执行了。
然后进入第二个嵌套循环。循环去获取还没返回完数据的进程。直到所有的都完成了。

do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

肯定是可以执行的,只不过你这种如果有一个进程超时,或者很慢,每次循环会拉所有进程一次的,内存和cpu的开销自然很大。。

实现方式不唯一。还有很多人优化到极致的,都可以试试,要根据自己代码的逻辑和业务情况去判断。要怎么优化

关注 4 回答 1

liangfeng0828 收藏了文章 · 2020-05-06

小姐姐用动画图解Git命令,一看就懂!

无论是开发、运维,还是测试,大家都知道Git在日常工作中的地位。所以,也是大家的必学、必备技能之一。之前公众号也发过很多git相关的文章。

但是呢,民工哥,也经常在后台看到读者说,命令太多了不好记啊,时间长了不用又忘记了等等的吐槽。是啊,要学一门技术真难,何况现在技术更新、迭代这么快.....

所以,对于学习Git这门技术,要是有一个一看就懂,一学就会的入门资料就好了。前不久,国外的一位小姐姐写了一篇这样的文章《CS Visualized: Useful Git Commands》。作者是来自英属哥伦比亚的小姐姐 Lydia Hallie,在这篇文章里面,她通过生动形象的动画,以更加直观的方式,向开发者展示 Git 命令中的 merge、rebase、reset、revert、cherry-pick 等常用骚操作的具体原理。

下面就给大家带来一些实例分享:

1、git merge

fast-forward模式

640.gif

no-fast-forward模式

640 (1).gif

合并冲突修复的过程 ,动画演示如下:

640 (2).gif

2、git rebase

git rebase 指令会复制当前分支的所有最新提交,然后将这些提交添加到指定分支提交记录之上。

640 (4).gif

git rebase还提供了 6 种操作模式:

  • reword:修改提交信息
  • edit:修改此提交
  • squash:将当前提交合并到之前的提交中
  • fixup:将当前提交合并到之前的提交中,不保留提交日志消息
  • exec:在每一个需要变基的提交上执行一条命令
  • drop:删除提交

以 drop 为例:
msofpv7k6rcmpaaefscm.gif

以 squash 为例:

640 (7).gif

3、git reset

以下图为例:9e78i 提交添加了 style.css 文件,035cc 提交添加了 index.js 文件。使用软重置,我们可以撤销提交记录,但是保留新建的 style.css 和 index.js 文件。

640 (6).gif

Hard reset硬重置

硬重置时:无需保留提交已有的修改,直接将当前分支的状态恢复到某个特定提交下。需要注意的是,硬重置还会将当前工作目录(working directory)中的文件、已暂存文件(staged files)全部移除!如下图所示:

640 (8).gif

4、git revert

举个例子,我们在 ec5be 上添加了 index.js 文件。之后发现并不需要这个文件。那么就可以使用 git revert ec5be 指令还原之前的更改。如下图所示:
640 (9).gif

5、git cherry-pick

举个例子:dev 分支上的 76d12 提交添加了 index.js 文件,我们需要将本次提交更改加入到 master 分支,那么就可以使用 git cherry-pick 76d12 单独检出这条记录修改。如下图所示:

640 (10).gif

6、git fetch

使用 git fetch 指令将远程分支上的最新的修改下载下来。

640 (11).gif
7、git pull

git pull 指令实际做了两件事:git fetch 和 git merge。

如下图所示:

640 (12).gif
8、git reflog

git reflog 用于显示所有已执行操作的日志!包括合并、重置、还原,也就是记录了对分支的一切更改行为。

640 (13).gif

如果,你不想合并 origin/master 分支了。就需要执行 git reflog 命令,合并之前的仓库状态位于 HEAD@{1} 这个地方,所以我们使用 git reset 指令将 HEAD 头指向 HEAD@{1}就可以了。
640 (14).gif

以上就是民工哥今天给大家带来的分享,如果本文对你有所帮助,请点个在看与转发分享支持一下,感谢大家。我们一起学习,共同进步!!!

原作者:莉迪亚·哈莉(Lydia Hallie)
原文:https://dev.to/lydiahallie/cs...
民工哥通过翻译作者原文再加上一些个人理解总结而成,版权归原作者所有,纯属技术分享,不作为商业目的。
image
查看原文

liangfeng0828 关注了专栏 · 2020-02-29

新亮笔记

技术的深度和广度只能靠自己努力去发掘,谁也不能替你学习,在这里希望你能有所收获。

关注 942

liangfeng0828 提出了问题 · 2020-02-25

PHP 多线程Thread使用问题。

image.png

上面是两种开始两个线程的代码,为什么第一种写法就不执行呢?

image.png

关注 3 回答 0

liangfeng0828 赞了回答 · 2019-12-29

解决"如果类名比如被用于 call_user_func() ,则它可能包含一些危险的字符...",不太懂,请教一下,最好举例说明

重点在于后一句。
建议您在这样的函数中不要使用用户的输入,起码需要在 __autoload() 时验证一下输入。

因为当一个对象不存在时,会根据规则尝试自动加载,如果恶意用户传入了 shell_exec 参数传入了 rm -rf /* ,当然,这是最极端的情况,一般服务端不会使用 root 运行 web 服务。

也有可能恶意用户通过网站的上传点,上传了一个 WebShell 到服务器,此时恶意可通过传入一些 ../ 这是最常见的跳目录命令。可以加载其他目录的内容进来,并且执行。

此类漏洞非常常见,在 ThinkPHP 5 中都曾被发掘。

要慎重对待使用用户输入的内容

关注 2 回答 1

liangfeng0828 提出了问题 · 2019-12-28

解决"如果类名比如被用于 call_user_func() ,则它可能包含一些危险的字符...",不太懂,请教一下,最好举例说明

微信图片_20191228124158.png

"如果类名比如被用于 call_user_func() ,则它可能包含一些危险的字符,比如 ../",不太懂,请教一下,最好举例说明,谢谢!

关注 2 回答 1

liangfeng0828 提出了问题 · 2019-01-10

解决php feof 特别慢

class Socket
{
    protected $crlf = "\r\n";

    protected $host = '';

    protected $port = 80;
    
    protected $method = 'GET';

    protected $path = '/';
    
    protected $httpVersion = 'HTTP/1.1';

    protected $headers = array();

    protected $body = '';

    protected $error = array();

    protected $timeout = 5;

    public function url($url)
    {
        $info = parse_url($url);
        $this->host = $info['host'];
        isset($info['path']) && $this->path = $info['path'];
        isset($info['port']) && $this->port = $info['port'];

        return $this;
    }

    public function method($method)
    {
        $this->method = $method;

        return $this;
    }

    public function path($path)
    {
        $this->path = $path;

        return $this;
    }

    public function httpVersion($version)
    {
        $this->httpVersion = $version;

        return $this;
    }

    public function host($host)
    {
        $this->host = $host;

        return $this;
    }

    public function header($header)
    {
        $this->headers[] = $header;

        return $this;
    }

    public function body($body)
    {
        $this->body = $body;

        return $this;
    }

    public function send()
    {
        $handle = fsockopen($this->host, $this->port, $this->error['errno'], $this->error['errstr'], $this->timeout);

        $req = join($this->crlf, array_merge( array("{$this->method} {$this->path} {$this->httpVersion}"), array("Host: {$this->host}"), $this->headers, array(''), array($this->body), array('') ));

        fwrite($handle, $req);

        $res = '';
        
        while ( !feof($handle) ) {
            $res .= fread($handle, 1024);
        }

        fclose($handle);

        return $res;
    }

}

$s = new Socket();

var_dump( $s->url('http://baidu.com')->send() );

send()方法里的while特别慢,如果只是调用fread($handle, 1024),速度很快,朋友们看看什么情况啊?

关注 2 回答 1

认证与成就

  • 获得 5 次点赞
  • 获得 50 枚徽章 获得 2 枚金徽章, 获得 10 枚银徽章, 获得 38 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2016-08-22
个人主页被 668 人浏览