H5页面生成长图实践总结

最近这一两年,长图分享突然悄无声息的兴起了。刚在产品上增加了这一功能,发现确实是一种极好的分享传播方式。
生成的效果图太长,下拉在文末可以查看到

结合之前的调研,以及尝试走不通的路,以下整理了这个功能点相关的方案,希望提供你有用的参考。
继续阅读

浅谈Trie

提到敏感词过滤,经过简单思考,你没有想到Trie的话,那么你就不要思考了,这篇文章很适合你。如果你想到了,这篇文章也不失一篇很好的参考。

有经验的开发者都会说到用字典树来实现敏感词检测过滤等功能,字典树即本文所谈论的对象Trie。

他的别名除了字典树,还有很多:前缀树、单词查找树、键树。跟很多人一样,我也格外喜欢前缀树(Prefix Tree)这个昵称。
继续阅读

PHP基于Trie实现敏感词检索

算法:
* 0、构建Trie树
* 1、遍历目标字符串中的每一个字符,如果字符不存在,继续下一个。
* 2、如果字符存在,从该字符下一个字符开始遍历,匹配成功后直接返回匹配字符长度,然后跳过这个长度并不是+1, 算是优化了【匹配到一个词后直接返回,没有往下找最长】,否则回到第1步
* 3、重复1-2
继续阅读

ECharts导出图片

好多年没碰过前端了,最近要弄一些前端的东西(H5生成长图),甚是反感。然鹅,当我了解到ECharts的时候,被百度这个开源的图形库深深折服了,瞬间就有了动力。

手册比较详尽,一时间没有翻到这个功能。这里简单总结下用ECharts导出图片的功能。
注: 这里是在页面加载后自动导出,你也可以通过点击按钮事件来触发导出。
继续阅读

排序之插入排序

一、原理
插入排序原理,通过构建有序序列,对于未排序的数据部分,在已排序的序列中从后往前扫描,找到相应的位置,逐个元素插入。类似于打扑克牌,取牌的过程。

二、算法
0、从第一个元素开始,认为该元素已被排序。
1、取下一个元素,在已经排序的元素序列中从后往前扫描。【取下一个元素这个表述特别赞,如果用第二个元素就不好表达后面的插入了】
2、如果该元素大于新元素,则后移该元素。
3、重复步骤2,直到找到小于、等于新元素的位置。
4、将新元素插入到该位置后。
5、重复步骤1-4。
继续阅读

PHP引用理解之神奇的foreach面试题

最近面试了一些各种背景的同学,发现下面这题鲜有人答出来。题目看起来刁钻,实际上是对引用很好的考察。

一、题目和答案
题目如下(要求写出两次输出的结果):

    $value = ['foo', 'bar', 'cat'];
    foreach($value as &$val) {
        // nothing to do
    }

    var_dump($value);

    foreach($value as $val) {
         // also nothing to do
    }

    var_dump($value);
// the end of the script

继续阅读

Git常用命令整理三(Git配置)

命令清单:

  • 配置信息git config
  • 查看仓库地址git remote -v
  • git clone 提示
    The project you were looking for could not be found

    git clone默认使用的用户名是在哪

    git config设置的只是昵称
    git config –global user.name “salmonl”
    git config –global user.email “chuanbo7@staff.weibo.com”

    git log -l 5
    commit b78c72ec12ae62b76c7db5fd1a4101894b918de7
    Author: salmonl <chuanbo7@staff.weibo.com>
    Date:   Thu May 9 12:16:22 2019 +0800
    
        del debug code
    

    git config –list
    继续阅读

    PHP实现括号匹配检查

    思考这样一个经典的问题,检查一个字符串中的括号(只有括号)是否匹配?

    很多年前在面试的时候被问到这个问题,自己想到的是用正则来处理,具体实现的时候又无法兼容全部情况。

    事后知道用栈就能很容易的处理。栈是一种特殊的线性表,只能在一端进行插入和删除操作,具有后进先出的特点。

    实现算法:
    0、遍历字符串,判断括号类型
    1、如果是左括号,添加到数组中
    2、如果是右括号,从数组中取出最后一个元素,没有元素或不匹配验证失败;匹配这删除元素,继续
    3、遍历完后,检查数组是否为空,为空则验证成功,否则验证失败。
    继续阅读

    PHP保留固定位小数

    这个是常用功能了,网上很多文章写的都不完整。特整理。

    首先说明,round()函数并不能总是起作用, 故而不能实现本题的要求,比如:

    # 不起作用
    php -r "echo round(10000, 2), PHP_EOL;" // 10000
    # 起作用
    php -r "echo round(10000.256, 2), PHP_EOL;" // 10000.26
    

    继续阅读