zhegexiaohuozi 发布的文章

最近服务器要过期了,操作系统版本也太低了,包管理官方都不维护了,是时候重新折腾下了。便于日后同样的迁移场景,博客系统做了如下改动:

  • 基于php5.6+fpm构建了一个自定义docker镜像,并可以完美跑现有的老blog的源码,以后迁移就方便了。(PHP版本只能用5.X的,新版PHP的MySQL连接方式改变了,老代码没法跑)
  • 站点顺便全部https化,顺应时代
  • typecho 从0.9升级到1.2(基于7.4-fpm-alpine3.14官方镜像构建自定义镜像),升级过程略曲折

前言

向量检索的方案库里图一多,存储和计算成本还是实打实的,有没有更极致的压缩?有,就是把图片直接压成一串二进制指纹,检索变成数比特位的事。这就是图像哈希检索,从去重到以图搜图都有它的一席之地。

先从最土的感知哈希说起

有个非常经典的小玩意叫感知哈希(pHash),思路简单到令人发指:

- 阅读剩余部分 -

文本检索那套为什么直接搬不过来

文本搜索有现成的成熟套路:分词、倒排索引、BM25打分。核心前提是文本天然带着"词"这个离散单元,词相同就能命中。图片没有这个运气,一张jpg在计算机眼里就是几百万个像素值,两张内容一样的图,只要分辨率差一档或者jpeg质量参数不同,像素层面对不上号。所以图像检索的第一步,也是灵魂一步,是把图片压成一个能代表它内容的特征向量,让"看起来像"变成"向量距离近"。

特征向量的两代方案

- 阅读剩余部分 -

简介

JsoupXpath 是一款纯Java开发的使用xpath解析提取html数据的解析器,针对html解析完全重新实现了W3C XPATH 1.0标准语法,xpath的Lexer和Parser基于Antlr4构建,html的DOM树生成采用Jsoup,故命名为JsoupXpath.
为了在java里也享受xpath的强大与方便但又苦于找不到一款足够好用的xpath解析器,故开发了JsoupXpath。JsoupXpath的实现逻辑清晰,扩展方便,
支持完备的W3C XPATH 1.0标准语法,W3C规范:http://www.w3.org/TR/1999/REC-xpath-19991116 ,JsoupXpath语法描述文件Xpath.g4

Change Log

https://github.com/zhegexiaohuozi/JsoupXpath/releases

- 阅读剩余部分 -

前言

上回把三重循环换了下顺序,矩阵乘法从9秒干到1.5秒,当时对照的OpenBLAS成绩是0.05秒,中间还隔着三十倍,这三十倍总不能全赖人家多线程吧。翻了一堆资料把这笔账算明白了,大头其实藏在两个地方:CPU的指令级并行,和矩阵的分解策略。

CPU早就不是一次算一个数了

写代码的人很容易有个惯性思维:一行 a[i]*b[i] 就是做了一次乘法,CPU老老实实算完一个再算下一个。这是指令串行的想象,真实情况是现代CPU一条SIMD指令一次就能算一批:AVX2的寄存器256位宽,塞得下4个double,一条乘加指令(FMA)出发就是4乘4加;再加上主流CPU有两个FMA运算端口,一个时钟周期理论吞吐是16个浮点操作。标量代码再怎么优化,每个周期也就吃掉这一小口,理论峰值的大餐一口没动。

- 阅读剩余部分 -