Mysql事务

事务是一组的逻辑操作,该操作只有执行成功和失败两种状态。

事务的特征

  • 原子性:执行的最终状态只有成功和失败这两种;
  • 一致性:事务执行之前和执行之后,数据始终处于一致的状态;
  • 持久性:事务提交完成后,对数据的操作会被持久化到数据库中,且不会被回滚;
  • 隔离性:并发执行的多个事务之间互不干扰。

事务的类型

  • 扁平事务:常见的使用begin/start transaction 开始,commit/rollback结束的事务。事务全部执行成功,或全部执行失败;
  • 保存点扁平事务:在扁平事务的基础上,添加有事务保存点,可以进行回滚至保存点的操作(也就是事务的部分回滚);
    • 设置事务保存点:savepoint pointName
    • 回滚至保存点:rollback to pointName
    • 删除保存点:release savepoint pointName
  • 链式事务:事务的提交操作与下一个事务的开始操作为原子不可分,没有间隔;
  • 嵌套事务:事务操作包含内部子事务,子事务提交后,顶层事务不会全部提交,只有顶层事务提交完成后,整个事务才算提交完成;
  • 分布式事务:不同数据库不同服务器的各个分支事务要全部提交成功,或全部提交失败。

Trilium笔记

https://github.com/zadam/trilium

一、安装

  • 1.docker本地运行
    docker run -d --name trilium -p 8080:8080 -v /home/xxx/docker/trilium-data:/home/node/trilium-data zadam/trilium:latest
    
  • 2.域名dns解析:https://dns.console.aliyun.com/
  • 3.配置反向代理:宝塔面板
  • 4.域名证书:https://freessl.cn/certlist
  • 5.wss协议升级(使内容实时生效)
    location /
    {
      ...
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      ...
    }
    

PVE使用

🎣

一、显卡直通

https://www.youtube.com/watch?v=5ce-CcYjqe8 https://www.youtube.com/watch?v=BoMlfk397h0&t=915s https://www.youtube.com/watch?v=_JTEsQufSx4 https://gitlab.com/risingprismtv/single-gpu-passthrough/-/wikis/1

# 更新:
nano /etc/apt/sources.list.d/pve-enterprise.list 
# 注释掉 deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise

echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list

gpg --keyserver keyserver.ubuntu.com --recv-keys 0D9A1950E2EF0603
gpg --export --armor 0D9A1950E2EF0603 | apt-key add -
apt update

echo "options vfio-pci ids=10de:2486,10de:228b  disable_vga=1" > /etc/modprobe.d/vfio.conf
nano /etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist radeon
blacklist nvidia

nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1

update-initramfs -u

reboot

直通: 1. https://blog.51cto.com/u_12242014/2382885

容器日常

🎣

零、安裝

或者直接安装官网安装:https://docs.docker.com/engine/

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
archlinux
# https://wiki.archlinux.org/title/Docker

sudo pacman -S docker docker-compose
yay -S docker-rootless-extras

sudo echo "your_username:165536:65536" > /etc/subuid
sudo echo "your_username:165536:65536" > /etc/subgid

sudo systemctl enable docker
sudo systemctl start docker

export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock

ArchiveBox使用

ref:

当你遇见他,感悟他,细心珍藏他,然后毫无疑问地,最终会遗忘了他,我说的是书签,浏览器上保存的那些成白上千的、杂乱的书签。

每次翻起都不自觉的瑟瑟发抖,不仅是忘了拿来干啥,主要还有很多经过岁月洗礼后已经GG咧,404,总会给你意外的惊喜,为啥是惊喜,因为你有了借口删掉它。💩

偶然在网上找到ArchiveBox,一个Open-source self-hosted web archiving(自建的内容存档?),是基于python的爬虫系统,可以把链接内容完整地保存到本地(包括文章文字、样式,甚至音视频),还提供了存档的管理后台。就非常银性化,很符合在下要求。😏 那么,搞起:)

Jenkins使用[Ubuntu]

ref:

零、开场白

Jenkins是一款自动化的项目持续集成工具。

所谓持续开发大概就是每完成/改动一个功能就触发一次项目构建和测试,能帮助开发人员及早发现项目出现的各种问题。如果没有自动化操作的话,当项目比较大、比较复杂时,构建+测试这一套流程下来,会花费不少成本😏。类似ci工具还有Travis CI、Github-actions ...,她们都可以让项目集成、部署、测试等操作更自动化,简单化。

可参考阅读:https://xie.infoq.cn/article/4c227056798692962f4d43aef

Jenkins 主要是执行设置好的逻辑顺序工作,把jenkins当作一个可视化的脚本编辑软件就行。官方支持多种类型的脚本编辑:freestyle、pipeline、maven等,用户可以按照自己需求、习惯选择。

Jenkins官方主要以pipeline为规范,pipeline也就是工作流(也叫管道流,但感觉还是工作流比较直白点),可以通过Web ui(Classic uiBlue ocean)或Jenkinsfile文件的形式编写项目的构建、测试甚至交付等流程内容。(工作流直接理解为执行步骤就行)

一、java安装

目前(2021-12-26)Jenkins仅支持Java8/Java11和Docker版Java17 Jenkins镜像(jenkins/jenkins:jdk17-preview)。

sudo apt update
sudo apt install openjdk-11-jdk

Github Action

ref:

用法和概念基本都是参考 阮一峰 的那篇文章,所以在这里纯粹是记录下使用。

一、概念介绍

workflow

工作流。持续集成一次运行的过程,就是一个 workflow。

job

任务。一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。

step

步骤。每个 job 由多个 step 构成,一步步完成。

action

动作。每个 step 可以依次执行一个或多个命令(action)。 部署项目过程中的服务器登录、运行环境的部署、代码拉取、运行部署脚本等操作,在github action中都被看作为是一个个的action。

其中的大部分action都是可以被复用的:比如环境部署,基本就只有软件对应系统和版本的区别。 所以Github Action中使用到的action是可以直接引用他人写好的 action滴,可以在下面列出的仓库中找找: