1. 索引的数据结构
mysql中索引默认为为B+树
mysql中索引默认为为B+树
最近进行几个api项目进行合并,发现rest接口原有的Date
类型被转成时间戳,与期望的long
类型不一致,于是引入FastJsonHttpMessageConverter
进行统一转换,复制粘贴一气呵成:
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
//1、定义一个convert转换消息的对象
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastjson的配置信息
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue);
//3、在convert中添加配置信息
fastConverter.setFastJsonConfig(fastJsonConfig);
//4、将convert添加到converters中
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
然后自测中发现有些接口返回值被进行了二次转换,如:
之前做一个诗词相关的网站时,本预想添加拼音,数据来源为hanlp或google翻译,但一直拖着没做。最近看到html对注音的支持,包括和标签,便写个demo看看效果。
数据来源使用google翻译,发现有些排版问题,有些拼音会进行分词并连接在一块,就算在汉字中间添加空格也不行,于是网上找找拼音拆分的算法,基本上都是根据声母和韵母回溯判断,例如:拼音拆分算法,我自己尝试用正则表达式直接拆分,发现效果不错。
See the Pen 拼音拆分 by snowtraces (@snowtraces) on CodePen.
现实需求中,要求支持模糊查询再常见不过,可以直接使用数据库模糊匹配,但数据量百万后瓶颈就很明显,一般的选择是使用如solr/elasticSearch等搜索引擎工具。有时候不想引入更多的模块,或者是懒,可以直接使用mysql实现。
一提起全文索引,大家都知道lucence全家桶,但不知道或没用过mysql的全文索引功能。mysql全文索引即fulltext index,旧版本中,MyISAM存储引擎支持char
、varchar
和text
字段建立;自5.6.24版本起,InnoDB引擎也加入全文索引,详细了解可以去看官方文档:mysql 5.6 document。
在文章图像主题色提取简单实现一文中,对颜色空间八等分,即r/g/b三个方向从128处切分,获取八个小的立方体,对每个立方体像素坐标值求平均数,得到八种颜色,效果还算理想,但限制也很明显。比如颜色数目固定,如果图片颜色单一,可能最后八个小立方体中出现没有值的情况。
针对上一个实现,每次切分前对颜色空间进行排序,选择rank最前的进行切分,每次切分的位置也加入像素数量因素,其中:
上一篇文章分页查询时SQL优化中没有使用索引,但在一般的业务场景中都会涉及到模糊查询,如果模糊查询的条件在多张表中,而且不方便设置冗余字段来调整,就需要使用到索引了。MySql的缺省引擎为InnoDB
,也是最主流的引擎,本文以其上的Btree
索引进行讲解。
关于索引的技术细节,推荐文章:理解MySQL——索引与优化
业务上表数据由百万上升到千万级别,涉及到多表联合分页查询,结果是查询超时。问题在于JOIN
和ORDER
的条件字段不一致,导致一个索引失效,排序时遍历了千万级别的中间表,最终超时。
解决办法有两个:让索引都生效或减小排序时中间表的长度。前者可以通过联合索引实现,各个数据库支持度不详;后者可以通过先查询出一部分结果再JOIN,中间表的长度有限效率就不是问题。项目中使用mysql,本文就以mysql为例说明。
图像主题颜色的应用越来越多,如google相册可以按照颜色对图片进行检索,design-seeds上的色彩设计。相关算法主要有中位切分法、八叉树提取法和KMean clustering 等算法。关于这些算法,推荐这两篇文章,写的非常好:图像主题色提取算法和图片主题色提取算法小结,本文只就中位切分法(Median cut)进行js的简单实现。
RGB色彩模式下,R/G/B的取值分别为0x00~0xff(0~255),将其想象成一个以RGB分别为维度的三维空间,在取值范围内构成一个立方体
正则表达式的用途很多,比如web爬虫数据匹配,各种raw数据的清洗,或者是简单的字符串的截取。如果在写循环体内,正则表达式不够高效,会大幅影响性能。
本文主要介绍java中正则表达式的优化,其中很多内容与其他平台相同。