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 >>

Git常用命令集

生成SSH Key

ssh-keygen -t rsa -C “committer_email@committermail.com

查看自己拥有的权限

ssh -lgit
exp: ssh -lgit git.jpushoa.com

添加并提交到本地库

git commit -m ‘your comment’

将本地仓库添加到远程库

git remote add origin

分支

git branch -r #查看所有分支
git branch [branch_name] #创建新分支
git checkout [branch_name] #切换到分支
git push origin branch_name #上传分支到远程服务器
git branch –set-upstream master origin/master #将本地分支链接到远程分支

Tag

git tag #显示标签
git tag -a v3.1.1 -m ‘version 3.1.1’ #添加标签
git push origin v3.1.1 #推送到云端
git tag -d v3.1.1 # 删除标签
git push origin :refs/tags/v3.1.1 # 将删除操作更新到远程git库

final, finally, finalize的区别

final, finally, finalize的区别

final

  • 如果一个类被声明为final,此类被能被重载。因此final和abstract不能同时修饰一个类
  • 如果一个方法被声明为final,此方法只能被使用,不能被重载
  • 如果一个变量被声明为final,此变量只能被使用,不能被修改,并且在声明的时候一定要初始化

more >>

String,StringBuffer,StringBuilder的区别

String

String值是不可变的,每次对String的操作都会生出一个新的String对象。如果频繁改动的话,效率会很低,产生太多的垃圾会触发JVM的垃圾回收,影响系统性能。
另外 String s = new String("abc") 会生出两个对象, 因为括号里面的”abc”算一。

more >>