Redis Cluster 初探(1) - 集群搭建与扩容

Redis Cluster是Redis官方的集群实现方案,在此之前已经有一些民间的第三方Redis集群解决方案,如Twitter的Twenproxy,豌豆荚的Codis,与其不同的是,Redis Cluster并非使用Porxy的模式来连接集群节点,而是使用无中心节点的模式来组建集群,有一定性能优势也有缺点,本文主要是我调研Redis Cluster的一些知识整理与经验汇总。

more >>

Android 封装SDK时常用的注解

工作中,我们经常需要将功能模块封装成库供合作厂商调用, 如何写好一个健壮的Android Library有很多讲究,使用注解可以对SDK暴露给开发者的接口做出一些限制,从而尽可能地避免开发者错误地使用API。 下面我们介绍几种封装SDK时常用到的注解。

more >>

MySQL解决插入emoji表情失败的问题

一直以为UTF-8是万能的字符集问题解决方案. 直到遇到这个问题.
最近在做新浪微博的爬虫, 在存库的时候, 发现只要保持emoji表情, 就回抛出以下异常

Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...'

众所周知UTF-8是3个字节, 其中已经包括我们日常能见过的绝大多数字体. 但3个字节远远不够容纳所有的文字, 所以便有了utf8mb4, utf8mb4是utf8的超集, 占4个字节, 向下兼容utf8. 我们日常用的emoji表情就是4个字节了.
所以在此我们像utf8的数据表插入数据就会报出Incorrect string value这个错误.

more >>

使用Spring Test编写单元测试

在编写单元测试的时候,特别是涉及数据存储的单元测试环境中,我们需要保证测试环境的整洁,避免测试数据污染正常使用的数据库.
通常的做法是, 创建一个测试数据库, 使用配置文件控制在测试环境下, 数据持久化到测试环境. 这种方法比较笨拙.
如果使用Spring Test的话, 就可以指定在测试用例执行完毕后,对数据库进行回滚操作.

more >>