MySQL
SQL:DDL,DML
DDL:Data Defination Language mysql> HELP Data Definition
1 | CREATE, ALTER, DROP |
DML: Data Manipulation Language mysql> HELP Data Manipulation
1 | INSERT/REPLACE, DELETE, SELECT, UPDATE |
数据库:
对于MySQL而言,每个数据库(DATABASE)其实就是对应数据目录(datadir)下的一个目录(db_name),用于规定一个项目或者方案的集合,因此DATABASE也被称为SCHEMA;
1 | CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name CHARACTER SET [=] charset_name COLLATE [=] collation_name |
未命名
Git清理删除历史提交文件
1.垃圾回收
先进行垃圾回收,并压缩一些文件
1 | $ git gc --prune=now |
Git最初向磁盘中存储对象使用松散
的格式,后续会将多个对象打包为一个二进制的包文件
(packfile
),以节省磁盘空间
.pack
文件存储了对象的内容
.idx
文件存储了包文件
的偏移信息
,用于`索引具体的对象
打包对象时,查找命名和大小相近的文件,保留文件不同版本之间的差异
(最新一版保存完整内容
,访问频率最高)
2.查找大文件
使用git rev-list --objects —all
显示所有commit及其所关联的所有对象
:
1 | $ git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -3 | awk '{print$1}')" |
verify-pack -v *.idx
:查看压缩包内容
3.删除指定的大文件
1 | $ git filter-branch --force --index-filter "git rm -rf --cached --ignore-unmatch bigqin" --prune-empty --tag-name-filter cat -- --all |
filter-branch
命令通过一个filter来重写历史提交,这个filter针对指定的所有分支(rev-list
)运行。
--index-filter
:过滤Git仓库的index,该过滤命令作用于git rm -rf --cached --ignore-unmatch bigqin
。不checkout
到working directory
,只修改index
的文件,速度快。
--cached
会删除index中的文件
--ignore-unmatch
:如果没匹配到文件,不会报错,会继续执行命令
最后一个参数file/directory
是要被删除的文件的名字
--prune-empty
:指示git filter-branch
完全删除所有的空commit。
-–tag-name-filter
:将每个tag指向重写后的commit。
cat
命令会在收到tag时返回tag名称
–-
选项用来分割 rev-list 和 filter-branch 选项
--all
参数告诉Git我们需要重写所有分支(或引用)。
注意:git rm 这一行命令使用双引号
"git rm -rf --cached --ignore-unmatch bigqin"
4.删除缓存
移除本地仓库中指向旧提交的剩余refs,git for-each-ref
会打印仓库中匹配refs/original
的所有refs,并使用delete
作为前缀,此命令通过管道传送到 git update-ref
命令,该命令会移除所有指向旧commit的引用。
1 | $ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin |
以下命令会使reflog到期,因为它依然包含着对旧commit的引用。使用--expire=now
参数,确保它在目前为止到期了。如果没有该参数,只会移除超过90天的reflog。
1 | $ git reflog expire --expire=now --all |
现在本地仓库依然包含着所有旧commit的对象,但已经没有引用指向它们了,这些对象需要被删除掉。此时可以使用 git gc
命令,Git的垃圾回收器会删除这些没有引用指向的对象。
1 | $ git gc --prune=now |
gc
使用--prune
参数来清理特定时期的对象,默认情况下为2周,指定now
将删除所有这些对象而没有时期限制。
1 | $ du -sh .git |
此时,.git文件的大小只有104k了。
7.提交重写的历史到远程
如果确认所做的删除大文件操作没有问题,就可以提交到远程仓库了,一旦提交,再也没有办法恢复到原来的状态,一定要小心谨慎!一定要小心谨慎!一定要小心谨慎!
先进行备份工作,以免出现问题:
1 | $ cd ~/Desktop/ |
再回到刚才做的已经瘦身的Git仓库
1 | $ cd ~/Desktop/gitthin/gitthin |
把已瘦身的仓库同步到远程仓库,使用—mirror
参数:
1 | $ git push --mirror git@gitee.com:coderhony/gitthin.git |
为了确保都已同步,再执行以下命令:
1 | $ git push --all --force |
8.更新其他的clone
在过滤存储库,并重写提交历史后,将更改强制推送到远程服务器之后。现在要更新该存储库的每一份clone,仅靠常用的pull
是无法做到这一点的。
第一步是从远程服务器获取存储库,使用git reset
将存储库从 origin/master
切换到旧存储库状态。
1 | $ git fetch origin |
和上面的一样,需要删除旧提交,清理本地仓库
1 | $ git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin |
未命名
Manjaro_xfce实验机初始化配置
1 | # 启动 sshd 服务 |
1 | #设置笔记本合上盖子不黑屏 |
同时:
1 | #设置笔记本合上盖子不休眠 |
参考:
[[Ubuntu实验机初始配置]]
[[K.nowledge/Linux_OS/A-lINUX-BOX/SSH~Firewalliptablesufw~SELinux/SSH密钥注入远程主机]]
未命名
npm安装:
官网下载nodejs安装包并安装:https://nodejs.org。nodejs自带npm,实际上npm是nodejs的包管理器。
npm配置:
使用说明
你可以使用我们定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm
:
1 | $ npm install -g cnpm --registry=https://registry.npmmirror.com |
或者你直接通过添加 npm
参数 alias
一个新命令:
1 | alias cnpm="npm --registry=https://registry.npmmirror.com \ |
安装模块
1 | $ cnpm install [name] |
同步模块
直接通过 sync
命令马上同步一个模块, 只有 cnpm
命令行才有此功能:
1 | $ cnpm sync express |
当然, 你可以直接通过 web 方式来同步: /sync/express
1 | $ open https://npmmirror.com/sync/express |
其它命令
支持 npm
除了 publish
之外的所有命令, 如:
1 | $ cnpm info express |
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
Run server
1 | $ hexo server |
More info: Server
Generate static files
1 | $ hexo generate |
More info: Generating
Deploy to remote sites
1 | $ hexo deploy |
More info: Deployment
未命名
npm安装:
官网下载nodejs安装包并安装:https://nodejs.org。nodejs自带npm,实际上npm是nodejs的包管理器。
npm配置:
1 | $ npm install -g cnpm --registry=https://registry.npmmirror.com |
Hexo安装:
1 | cnpm install hexo-cli -g |
未命名
无效或已损坏的软件包 (PGP 签名)
现象
提示:无效或已损坏的软件包 (PGP 签名)。出现Keys错误,签名失败,导致 ArchLinux/Manjaro 无法正常升级或者安装软件。
方法1:
1 | sud vim /etc/pacman.conf |
方法2:
1,移除旧的keyssudo rm -rf /etc/pacman.d/gnupg
2,初始化pacman的keyssudo pacman-key --init
3,加载签名的keyssudo pacman-key --populate archlinux archlinuxcn manjaro
4,刷新升级已经签名的keyssudo pacman-key --refresh-keys
5,清空并且下载新数据sudo pacman -Sc
6,更新sudo pacman -Syu
common Hexo post Steps
common Hexo post Steps:
Server preview:
hexo server
Deploy to Gh-pages:
hexo clean && hexo g -d && hexo clean
Hexo insert images into Mardown
Hexo 向 Mardown 中插入图片
安装插件
1 | npm install hexo-renderer-marked |
修改配置:
1 | vim _config.yaml |
1 | ... |
编辑 Mardown
- 图片文件名不能存在特殊字符,文件名中的空格最好用下划线或横杠代替。
- 所有图片需放到与 Mardown 同名的文件夹下,然后引用。
- 使用
hexo deploy
发布之前需要确保引用时不加路径,因为发布后由该 Mardown 生成的index.html
和图片位于同一目录下。
两种最佳实践:
使用 typora 编辑 Mardown:
偏好设置 -> 图像 -> 插入图片时:“复制到指定路径” 选择 “./$(filename)”
勾选:对本地位置的图片应用上述规则
勾选:对网络位置的图片应用上述规则
勾选:优先使用相对路径
这样,在插入图片时 typora 会在 Mardown 文件当前目录下自动新建同名的文件夹。
编辑完成后,再将引用的相对路径全部替换为空。
然后再发布。
使用 obsidian 编辑 Mardown:
设置 -> 文件与链接:内部链接类型:”以尽可能简短的形式插入”
新附件的默认位置:当前文件夹下指定的子文件夹中
子文件夹名称:assets
这样,在插入图片时 obsidian 会在 Mardown 文件当前目录下自动新建名为 assets
的文件夹。
编辑完成后,再将之前定义的 assets
的文件夹改名为 Mardown 文件同名的文件夹。
然后再发布。