分类:软件服务

mysql中utf8和utf8mb4的区别

一、简介
MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。
二、内容描述
既然utf8应付日常使用完全没有问题,那为什么还要使用utf8mb4呢? 低版本的MySQL支持的utf8编码,最大字符长度为 3 字节,如果遇到 4 字节的字符就会出现错误了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP)。也就是说,任何不在基本多文平面的 Unicode字符,都无法使用MySQL原有的 utf8 字符集存储。这些不在BMP中的字符包括哪些呢?最常见的就是Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和一些不常用的汉字,以及任何新增的 Unicode 字符等等。
三、问题根源
理论上将, UTF-8 格式使用一至六个字节,最大能编码 31 位字符。最新的 UTF-8 规范只使用一到四个字节,最大能编码21位,正好能够表示所有的 17个 Unicode 平面。关于UTF编码,请阅读《常见编码总结》一文。
而utf8 则是 Mysql 早期版本中支持的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面。这可能是因为在MySQL发布初期,基本多文种平面之外的字符确实很少用到。而在MySQL5.5.3版本后,要在 Mysql 中保存 4 字节长度的 UTF-8 字符,就可以使用 utf8mb4 字符集了。例如可以用utf8mb4字符编码直接存储emoj表情,而不是存表情的替换字符。

文章加工自【OurMySQL小谢的小站


Git避免每次push都需要输入passphrase for key

在 OSX 中,可以以使用 ssh-add -K ~/.ssh/id_rsa 实现

参考 github 的帮助

Adding your SSH key to the ssh-agent
Before adding a new SSH key to the ssh-agent to manage your keys, you should have checked for existing SSH keys and generated a new SSH key.When adding your SSH key to the agent, use the default macOS ssh-add command, and not an application installed by homebrew, or some other external source.
1.Start the ssh-agent in the background.
2.If you’re using macOS Sierra 10.12.2 or later, you will need to modify your ~/.ssh/config file to automatically load keys into the ssh-agent and store passphrases in your keychain.
3.Add your SSH private key to the ssh-agent and store your passphrase in the keychain. If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_rsa in the command with the name of your private key file.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa

Note: The -K option is Apple’s standard version of ssh-add, which stores the passphrase in your keychain for you when you add an ssh key to the ssh-agent.
If you don’t have Apple’s standard version installed, you may receive an error. For more information on resolving this error, see “Error: ssh-add: illegal option — K.”
4.Add the SSH key to your GitHub account.


git 的 pull 和 fetch

使用git 直接提交的话 直接 push
在 git 中,想获取最新版本有两种方式 pull 、 fetch
查看帮助
git pull 从远程拉取最新版本到本地 自动合并 merge
git fetch 从远程获取最新版本到本地 不会自动合并 merge
从实现原理来看使用 git fetch 会更安全 因为在merge之前可以了解到更新情况,然后再决定是否合并


CentOS下搭建Git服务(SSH协议)

1,我们选择最简单的安装方式 YUM

yum install git

2,创建git用户

adduser git
su git
cd ~
mkdir .ssh
touch authorized_keys

3,创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。如果 git 用户没有.ssh 目录,创建就好
4,初始化Git仓库
设定一个目录作为Git仓库,这里假设是/data/sample.git,在/data目录下输入命令

git init --bare sample.git

这里用 –bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。
然后,把owner改为git

chown -R git:git sample.git

5,禁用 git 用户的 shell 登录
出于安全考虑,git用户不允许登录shell,编辑/etc/passwd文件:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6,客户端拉取代码
第一台客户端

# 在第一台客户端的电脑上
cd myproject(客户端的仓库目录)
git init
git add .
touch Readme.md
git add Readme.md
git commit -m 'initial commit'
git remote add origin git@gitserver(git 服务器地址):/data/sample.git(服务器上面的仓库目录)
git push origin master

第二台以上客户端

$ git clone git@gitserver:/data/sample.git
cd project
vim README
git commit -am 'fix for the README file'
git push origin master