博文

目前显示的是 六月, 2020的博文

Docker 多階段構建示例 + Docker Hexo

多階段構建 (multi-stage build) ,如可使用 `alpine` ,再 `apk add` 一些相關編譯包進行編譯,最後縮小鏡像 。使用 Hexo 作為示例 前期準備 拉取 hexo source/_post 的分支 hexo  分支為 hexo markdown 源碼分支 git pull origin hexo 1 2 3 4 mkdir -p ~/hexo/source cd ~/hexo/source git init git pull https://github.com/yanzhe919/yanzhe919.github.io.git hexo:hexo 順便解釋一下,  git pull origin hexo  相當於  git fetch origin hexo  +  git checkout -b hexo origin/hexo cd ~/hexo  ,以下操作都在  ~/hexo  下執行 以前正常使用 Dockerfile ,如 node:lts 編輯並創建 Dockerfile , vim Dockerfile_lts vim Dockerfile_lts 1 2 3 4 5 6 7 FROM node:lts as build LABEL maintainer= "yan zhe < [email protected] >" WORKDIR /hexo VOLUME [ "/hexo" ] RUN npm install hexo-cli -g EXPOSE 4000 CMD [] 構建鏡像 docker build -t hexo-blog:0.0.1 -f ~/hexo/Dockerfile_lts . 鏡像大概 933MB 安裝插件, package.json docker run -it --rm -v ~/hexo/source:/hexo hexo-blog:0.0.1 sh -c "cd /hexo;npm install" 有些插件可能需要從源碼編譯,但是 lts 版本帶了很多編譯工具 測試,生成並顯示頁麵 docker run -it --rm -p 80:4000 -v ~/...

MySQL 中 utf8 和 utf8mb4 的使用以及字符集相關

MySQL 中 utf8 編碼最長使用 3 字節,在 5.5.3 新增的 utf8mb4,才是兼容四字節的。Java 的 UTF-8 是支持 4 字節的,所以不需配置 mb4 。而 Java 驅動會自動檢測服務端的 character_set_server,為 utf8mb4,驅動在建立連接時設置 SET NAMES utf8mb4。utf8mb4_general_ci 在比較和排序的時候更快,utf8mb4_unicode_ci 更精確。 原文 概述 以前一般在 MySQL 開發了,就實際上轉向 Oracle 了,沒留意一些東西,碰到了就回頭過來看看。 有小夥伴在安裝 MySQL 後設置編碼為 utf8,我們以前都是會直接設置 utf8mb4,這背後又隱藏著什麼?這一切的背後,究竟是人性的扭曲還是道德的淪喪? 其實隻是因為  Unicode 委員會還做著 “65535 個字符足夠全世界用了”的美夢。   參考  我比較喜歡這句。 也就是指的 Unicode 最初的 基本多文本平麵  (BMP)(U+0000 至 U+FFFF),BMP 已經包含了控製符、拉丁文,中、日、韓等絕大多數國際字符,但並不是所有,最常見的就算現在手機端常用的表情字符 Emoji(Emoji 是一種特殊的 Unicode 編碼,常見於 ios 和 android 手機上)一些不常用的漢字,如 “墅” ,這些需要四個字節才能編碼出來。後來的補充字符 (U+10000 至 U+10FFFF),則將 Unicode 擴充到了 (U+0000 至 U+10FFFF)。 注:QQ 裏麵的內置的表情不算,它是通過特殊映射到的一個 gif 圖片。一般輸入法自帶的就是。 MySQL 在  5.5.3  之後 (查看版本:select version ();) 增加了這個  utf8mb4  的編碼,mb4 就是  most bytes 4  的意思,支持的字節數最大為 4,即專門用來兼容四字節的 unicode。 而我們通常在 MySQL 中所說的  utf8  編碼,其實就是指的  utf8mb3  。utf8mb4 是 utf8mb3 的超集並完全兼容 utf8mb3...