note icon indicating copy to clipboard operation
note copied to clipboard

知识代码笔记

Results 54 note issues
Sort by recently updated
recently updated
newest added

在点评口碑上,经常有类似的场景,搜索 “1公里以内的美食”,那么这个1公里怎么实现呢? 在数据库中可以通过暴力计算、矩形过滤、以及B树对经度和维度建索引,但这性能仍然很慢(可参考 [为什么需要空间索引](https://www.cnblogs.com/LBSer/p/3392491.html) )。搜索里用了一个很巧妙的方法,Geo Hash。 ![image.png](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/14dd678172ea1b6bbb21d07d4bb8dbdd.png) 如上图,表示根据 GeoHash 对北京几个区域生成的字符串,有几个特点: * 一个字符串,代表一个矩形区域 * 字符串越长,表示的范围越精确 (长度为8时精度在19米左右,而当编码长度为9时精度在2米左右) * 字符串相似的,表示距离相近 (这就可以利用字符串的前缀匹配来查询附近的POI信息) ### Geo Hash 如何编码? 地球上任何一个位置都可以用经纬度表示,纬度的区间是 [-90, 90],经度的区间 [-180, 180]。比如天安门的坐标是 39.908,116.397,整体编码过程如下: **一、对纬度 39.908...

Search

Lucene的倒排索引决定,索引内容是一个可排序的字符串,如果要查找一个数字,那么也需要将数字转成字符串。这样,检索一个数字是没问题的,如果需要搜索一个数值范围,怎么做呢? 要做范围查找,那么要求数字转成的字符串也是有序并单调的,但数字本身的位数是不一样的,最简单的版本就是前缀补0,比如 35, 234, 1 都补成 4 位,得到 0035, 0234, 0001,这样能保证: 数字(a) > 数字(b) ===> 字符串(a) > 字符串(b) 这时候,查询应该用范围内的所有数值或查询,比如查询 [33, 36) 这个范围,对应的查询语法是: 33 || 34 || 35 嗯看起来很好的解决了范围查询,但是,这样存在3个问题: 1. 补位多少合适呢?总有一个数字会超出你的补位范围...

Search

搜索结果排序是根据 关键字 和 Document 的相关性得分排序,通常意义下,除了可以人工的设置权重 boost,也存在一套非常有用的相关性得分算法,看完你会觉得非常有意思。 ### TF-IDF TF(词频)-IDF(逆文档频率) 在自动提取文章关键词上经常用到,通过它可以知道某个关键字在这篇文档里的重要程度。其中 TF 表示某个 Term 在 Document 里出现的频次,越高说明越重要;DF 表示在全部 Document 里,共有多少个 Document 出现了这个词,DF 越大,说明这个词很常见,并不重要,越小反而说明他越重要,IDF 是 DF 的倒数(取log), IDF 越大,表示这个词越重要。 TF-IDF 怎么影响搜索排序,举一个实际例子来解释: 假定现在有一篇博客**《Blink...

Search

JDK NIO的臭名昭著的epoll bug,它会导致Selector空轮询,最终导致CPU 100%。官方声称在JDK1.6版本的update18修复了该问题,但是直到JDK1.7版本该问题仍旧存在,只不过该bug发生概率降低了一些而已,它并没有被根本解决。该BUG发生后会导致CPU突然占用1000%以上,示例的堆栈如下: ``` "NettyClientWorker-thread-7" daemon prio=10 tid=0x00007ffbe80c3800 nid=0x3539 runnable [0x00007ffc2cccb000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87) - locked (a sun.nio.ch.Util$2) - locked (a...

官方文档:http://dev.mysql.com/doc/refman/5.5/en/explain-output.html ##### 中文解释笔记(**点击图片看大图**) ![explain](https://cloud.githubusercontent.com/assets/3378278/12509895/df094976-c140-11e5-8be5-39d632eab4af.png) ##### 附上文本,由于markdown 不支持table,固放上图片。 ``` 列名 类型 解释 id SELECT语句的ID编号,优先执行编号较大的查询,如果编号相同,则从上向下执行 select_type SIMPLE 一条没有UNION或子查询部分的SELECT语句 PIMARY 最外层或最左侧的SELECT语句 UNION UNION语句里的第二条或最后一条SELECT语句 DEPENDENT UNION 和UNION类型的含义相似,但需要依赖于某个外层查询 UNION RESULT 一条UNION语句的结果 SUBQUERY 子查询中的第一个SELECT子句 DEPENDENT SUBQUERY...

``` package yh.andr; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.util.Locale; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; /** * @author gudh * 自定义浏览器Client */...

Android

先上代码,具体解释见评论。 ``` /** * 单击 * @param x * @param y */ public static boolean click(int x, int y) { String[] events = getClickEvents(200, 3); return sendEnents(events); } /** *...

Android

```` 脑裂 拜占庭问题 缓存击穿 热点库存扣减 Paxos算法 ````

花了好长时间来看这个算法,网上有很多blog,写得都晦涩难懂。 好不容易找到这篇,简洁明了,图清晰,比较容易看懂,记录一下: http://blog.csdn.net/coraline_m/article/details/10002791

### 问题 我们知道 utf8mb4 是向后兼容 utf8 字符集的,也就是说 utf8mb4 完全包含 utf8。 那么使用 utf8mb4、utf8 字符集的不同表,在 join 时能否用上索引,left join 顺序改变是否能改变结果呢? 如果关联字段的类型和编码集一样,不同的长度能否使用上索引呢? 如果关联字段的编码集一样,不同的类型能否使用上索引呢? ### 分析 下面通过学生表、班级表的例子来 #### DDL 如下: ``` // 班级表 CREATE TABLE...