2015年1月

IK分词器原理与源码分析

引言

做搜索技术的不可能不接触分词器。个人认为为什么搜索引擎无法被数据库所替代的原因主要有两点,一个是在数据量比较大的时候,搜索引擎的查询速度快,第二点在于,搜索引擎能做到比数据库更理解用户。第一点好理解,每当数据库的单个表大了,就是一件头疼的事,还有在较大数据量级的情况下,你让数据库去做模糊查询,那也是一件比较吃力的事(当然前缀匹配会好得多),设计上就应当避免。关于第二点,搜索引擎如何理解用户,肯定不是简单的靠匹配,这里面可以加入很多的处理,甚至加入各种自然语言处理的高级技术,而比较通用且基本的方法就是靠分词器来完成,而且这是一种比较简单而且高效的处理方法。

- 更多 -

Java实现LRU缓存

1.Cache

Cache对于代码系统的加速与优化具有极大的作用,对于码农来说是一个很熟悉的概念。可以说,你在内存中new 了一个一段空间(比方说数组,list)存放一些冗余的结果数据,并利用这些数据完成了以空间换时间的优化目的,你就已经使用了cache。
有服务级的缓存框架,如memcache,redis等。其实,很多时候,我们在自己同一个服务内,或者单个进程内也需要缓存,例如,lucene就对搜索做了缓存,而无须依赖外界。那么,我们如何实现我们自己的缓存?还要带自动失效的,最好还是LRU(Least Recently Used)。


- 更多 -

Android 系统电量统计

本文主要通过跟踪 Android 设置 APP 的源码分析如何统计手机各个软件的电量。

·PowerProfile 简介

PowerProfile 这个类对手机的各个子系统运行时的平均电流(mA)和基本状态做了初步统计,所有信息都存放在 sPowerMap 这个 Map 里,这个 Map 实际是从 power_profile.xml 文件中读取的,PowerProfile 提供接口如 getAveragePower(String type) 之类,供我们去取该XML里的各项的value,是个很短的类,也很容易理解。

- 更多 -

银河系跑步指南

从准备考研的那年夏天开始跑步到现在研究生即将毕业,陆陆续续已经三年多。当初只是当做一种强身健体的手段,后来慢慢演变成了习惯,不跑会觉得不爽。被帝都的雾霾憋在屋里一段时间后开始在健身房跑,跑了也快一年了。期间对跑步速度成绩从不怎么关心,每次都是按自己的节奏跑半小时结束。曾经去过奥森跑五公里,那边算是帝都跑者的一个圣地了,跑完很畅快。作为一个前端码农,15年打算调整一下自己的技能树结构,点亮跑步这个除编码以外的第二技能。有机会再去认真跑一次马拉松(大一的时候曾经去跑过一次北马的十公里)。

- 更多 -