Vue 3 兄弟组件间传值

Vue 3 中兄弟间传值可以使用 Vuex,但小项目使用过于庞大,我们可以使用 mitt 进行兄弟组件间传值。

操作步骤

第一步:安装 mitt

npm i mitt

第二步:创建文件(例如:eventBus.js

import mitt from 'mitt'

const emitter = mitt()
export default emitter

第三步:将该文件引入至需要进行发送及接受的 .vue 文件中

import emitter from "../untils/bus";

第四步:发送端写入下列代码

emitter.emit("response", response)

前面是事件,后面是要传入的参数

第五步:接收端写入下列代码

emitter.on("response", (response) => {
    console.log(response)
})

这样两个组件间就可以进行传值通信了。

Docker 下 MySQL 8 自动备份

MySQL logo

root@debian:~# crontab -e 进入crontab,添加以下内容:

0 2 * * * find /var/backup/ -mtime +5 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -u<username> -p<password> --all-databases' > /var/backup/bcksql_`date +\%F`.sql

0 2 * * *:crontab 每天 2 点

find /var/backup/ -mtime +5 -name "*.sql" -delete:查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本

-u<username> -p<password>:数据库的用户名及密码

/var/backup/bcksql_`date +\%F`.sql:将备份文件保存到该路径下并命名为“bcksql_日期.sql”(以上路径需要有对应权限,否则无法正常存储)

mysqldump 常用操作示例

备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

备份单个数据库的数据和结构(数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

Vue 3 锚点实现方式

当我们使用 Vue 3 有时候需要做业内锚点跳转,使用传统的 a href 已经不是很推荐了,我们可以尝试采用以下方法来进行替代

标题锚点

<div class="cardTagContainer">
    <div class="cardTag" v-for="(cardGroup,index) in card.cardInfo" :key="cardGroup" @click="goAnchor('#tag' + index)">
        {{ cardGroup.title }}
    </div>
</div>

跳转内容

<h1 :id="'tag' + index">
    {{ cardGroup.title }}
</h1>

相关方法

// 标题锚点
function goAnchor(selector) {
    // console.log(selector)
    document.querySelector(selector).scrollIntoView({
        behavior: "smooth",
        block: "start"
    });
}

.scrollIntoView 属性方法

scrollIntoView() 方法将调用它的元素滚动到浏览器窗口的可见区域。

PS:根据其他元素的布局,元素可能无法完全滚动到顶部或底部。

TIPS:页面(容器)可滚动时才有用!


element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // 布尔参数
element.scrollIntoView(scrollIntoViewOptions); // 对象参数

Scoop 包管理工具

安装步骤

打开 PowerShell远程权限

Set-ExecutionPolicy RemoteSigned -scope CurrentUser;

若出现提示是否要更改执行策略?,输入 Y 回车

自定义 Scoop 包安装路径

$env:SCOOP='自定义路径'
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')
iwr -useb get.scoop.sh | iex

如果跳过该步骤,Scoop 将默认把所有用户安装的 App 和 Scoop 本身置于 C:\Users\\scoop

安装 Scoop

iwr -useb get.scoop.sh | iex
scoop update

或者使用国内镜像:

iwr -useb https://gitee.com/glsnames/scoop-installer/raw/master/bin/install.ps1 | iex
scoop config SCOOP_REPO 'https://gitee.com/glsnames/Scoop-Core'
scoop update

如果提示错误,说明 PowerShell 需要调整进行一些配置。这时按照提示,输入:

Set-ExecutionPolicy RemoteSigned -scope CurrentUser

然后重新运行第一条指令即可。

如果发现安装速度极慢,导致安装错误,但再次安装仍提示 scoop 已安装,那么可以输入下面这一行指令来强制删除,然后再重新安装:

del .\scoop -Force

安装 Scoop 的 bucket

安装完毕,但是我们还要再安装一个 scoop 的 bucket。scoop 默认自带的 bucket 是 main,包含大量的没有 GUI 的程序,比如 Node.js,Aria2,Git,FFmpeg 等。如果想要安装带有 GUI 的程序,可以安装名为 extras 的 bucket。

安装 extras 很简单,只需要一行指令:

scoop bucket add extras

如果出现问题,或者不想用这个 bucket 了,那么可以用下面这条语句来删除:

scoop bucket rm extras

操作命令

帮助语法

scoop help

安装操作

scoop install 软件名

安装指定Bucket中的应用

scoop install extras/sumatrapdf

安装指定版本

scoop install python@3.7.9

版本切换

scoop reset python
scoop reset python27

更新指定应用

scoop update python

禁止更新指定应用

scoop hold python

解除禁止更新指定应用

scoop unhold python

更新所有已安装应用

scoop update *

更新 bucket 库

scoop update

清理所有旧版本

scoop cleanup *

卸载操作

scoop uninstall 软件名

全局卸载(包括persist)

scoop uninstall 软件名 -p

常用软件表

01.aria2:scoop install aria2
02.everything:scoop install everything
03.cmder:scoop install cmder
04.notepad2:scoop install echo/notepad2
05.q-dir:scoop install q-dir
06.vim:scoop install vim
07.keepass:scoop install keepass
08.chrome:scoop install googlechrome
09.firefox:scoop install firefox
10.vivaldi:scoop install vivaldi
11.opera:scoop install opera
12.python:scoop install python
13.nodejs:scoop install nodejs
14.go:scoop install go
15.trafficmonitor:scoop install trafficmonitor
16.notepadplusplus:scoop install notepadplusplus
17.sublime-text:scoop install sublime-text
18.vscode:scoop install vscode
19.pycharm:scoop install pycharm
20.intellij-idea:scoop install intellij-idea
21.goland:scoop install goland
22.fscapture:scoop install echo/fscapture
23.snipaste:scoop install snipaste
24.synctrayzor:scoop install synctrayzor
25.telegram:scoop install telegram
26.notion:scoop install notion
27typora:scoop install typora

青龙任务库

KingRan/KR(集合库)

ql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"

Zy143L/wskey(wskey转换库)

ql repo https://github.com/Zy143L/wskey.git "wskey"

Yiov

ql repo https://github.com/Yiov/wool.git "" "COOKIE"

Yun-City/City(集合库)

ql repo https://github.com/Yun-City/City.git "jd_|jx_|gua_|jddj_|getJDCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendnotify|ZooFaker_Necklace|jd_Cookie|JDJRValidator_|sign_graphics_validate|ql|magic|cleancart_activity"

gys619/Absinthe(集合库)

ql repo https://github.com/gys619/Absinthe.git "jd_|jx_|jddj_|gua_|getJDCookie|wskey" "activity|backUp" "^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_|sign_graphics_validate|jddj_cookie|function|ql|magic|JDJR|JD" "main"

zero205/JD_tencent_scf

ql repo https://github.com/zero205/JD_tencent_scf.git "jd_|jx_|jdCookie" "backUp|icon" "^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign|ql" "main"

6dylan6/jdpro(集合库)

ql repo https://github.com/6dylan6/jdpro.git "jd_|jx_|jddj_" "backUp" "^jd[^_]|USER|JD|function|sendNotify"

smiek2121(开卡库)

ql repo ql repo https://github.com/smiek2121/scripts.git "jd_|gua_" "" "ZooFaker_Necklace.js|JDJRValidator_Pure.js|sign_graphics_validate.js|cleancart_activity.js|jdCookie.js|sendNotify.js"

Docker 部署青龙面板

部署青龙面板

docker pull qinglong

在相关目录创建 docker-compose.yml

mkdir ql
cd ql
touch docker-compose.yml

然后输入 vi docker-compose.yml 并填写以下内容

version: "3"
services:
  qinglong:
    image: whyour/qinglong:latest
    container_name: qinglong
    restart: unless-stopped
    tty: true
    ports:
      - 5700:5700
      - 5701:5701
    environment:
      - ENABLE_HANGUP=true
      - ENABLE_WEB_PANEL=true
    volumes:
      - ./config:/ql/config
      - ./log:/ql/log
      - ./db:/ql/db
      - ./repo:/ql/repo
      - ./raw:/ql/raw
      - ./scripts:/ql/scripts
      - ./jbot:/ql/jbot
      - ./ninja:/ql/ninja
      - ./damei:/ql/damei
    labels:
      - com.centurylinklabs.watchtower.enable=false

保存后退出,在窗口输入:

docker-compose up -d

等待下载完成

下载完成后提示 Creating qinglong *** done并返回root输入提示

Docker 常用命令

Docker logo

Docker 安装

curl -sSL https://get.daocloud.io/docker | sh

Docker-Compose 安装并设置权限

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

配置 Docker 镜像源

创建 daemon.json 文件

sudo mkdir -p /etc/docker

写入镜像源

sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}

赋予普通用户执行 Docker 命令

gpasswd -a username docker

Docker 使用

搜索镜像

docker search debian

拉取镜像

docker pull debian

查看镜像文件

docker images

查看镜像层级关系

docker images tree

查看 Docker 所有进程

docker ps -a

查看 Docker 内存占用

docker stats

开启容器

docker start debian

开启所有容器

docker start $(docker ps -aq)

进入正在运行中的容器

docker exec -it debian /bin/bash

重启容器

docker restart 容器 ID

文件传输

docker cp 本地文件路径 ID全称:容器路径
或
docker cp ID全称:容器文件路径 本地路径

卸载

停止容器

docker stop debian

停止所有容器

docker stop $(docker ps -aq)

删除指定容器

docker rm 容器 ID

删除所有已停止容器

docker rm $(docker ps -aq)

删除所有镜像

docker rmi 镜像 ID

Linux init 详解

什么是 init

init 进程是一个由内核启动的用户级进程

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序 init 的方式,完成引导进程。所以,init 始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对 Linux 系统来说)是 /sbin/init 。如果内核找不到 init,它就会试着运行 /bin/sh ,如果运行失败,系统的启动也会失败。

运行级别

init 一共分为 7 个级别,这 7 个级别的所代表的含义如下:

#init 0 - 停机(千万不能把initdefault 设置为 0)
#init 1 - 单用户模式,只由 root 用户进行维护
#init 2 - 多用户,不能使用NFS(Net File System)不联网
#init 3 - 完全多用户模式(标准的运行级)
#init 4 - 安全模式
#init 5 - X11 (xwindow) 图形化界面模式
#init 6 - 重新启动 (千万不要把 initdefault 设置为6 )

开机默认模式设置方法

系统下有个根文件目录:/etc/inittab

.  # inittab       This file describes how the INIT process should set up
.  #               the system in a certain run-level.
.  #
.  # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
.  #               Modified for RHS Linux by Marc Ewing and Donnie Barnes
.  #
.  # Default runlevel. The runlevels used by RHS are:
.  #   0 - halt (Do NOT set initdefault to this)
.  #   1 - Single user mode
.  #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
.  #   3 - Full multiuser mode
.  #   4 - unused
.  #   5 - X11
.  #   6 - reboot (Do NOT set initdefault to this)
.  #
.  id:3:initdefault:

如果设置为 id:3:initdefault: 这代表默认启动为命令行模式。如果设置为 id:5:initdefault: 这代表默认 xwindow 图形化界面模式

Debian 系没有 /etc/inittab 文件

使用命令实现,使用 apt install sysv-rc-conf 安装

然后再次执行命令运行:sysv-rc-conf

如何查看当前运行级别

使用 runlevel 命令查看

root@debian:~# runlevel
N 5

MySQL 5.7 安装

MySQL logo

配置环境变量

变量名为:MYSQL_HOME,添加你的 MySQL 文件夹所在位置

编辑 Path,复制 ;%MYSQL_HOME%\bin 到原有值的后面

配置 my.ini 文件

在 MySQL 目录下新建 my.ini 文件,my.ini 文件的内容为:

[mysqld]
#端口号
port = 3306
#mysql-5.7.27-winx64的路径
basedir=D:\Program Files\mysql-5.7.36-winx64
#mysql-5.7.27-winx64的路径+\data
datadir=D:\Program Files\mysql-5.7.36-winx64\data 
#最大连接数
max_connections=200
#编码
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]

#编码
default-character-set=utf8 

安装 MySQL

以管理员身份运行命令提示符,一定要以管理员的身份运行,否则在安装过程中会出现因为管理权限不够而导致的 Install/Remove of the Service Denied!(安装/卸载服务被拒绝)

在命令提示符中进入到 D:\Program Files\mysql-5.7.36-winx64\bin 目录

输入安装命令:mysqld -install

若出现 Service successfully installed,证明安装成功;如出现 Install of the Service Denied,则说明没有以管理员权限来运行命令提示符

然后继续输入命令:mysqld --initialize,此时不会有任何提示

再输入启动命令:net start mysql,出现提示证明 MySQL 启动成功

D:\Program Files\mysql-5.7.36-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

设置 MySQL 密码

在这里设置密码主要是为了解决 ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) 的问题

首先停止 MySQL 服务,输入命令行 net stop mysql

D:\Program Files\mysql-5.7.36-winx64\bin>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。

在 D:\Program Files\mysql-5.7.36-winx64 目录下找到 my.ini,在 [mysqld] 字段下任意一行添加 skip-grant-tables ,保存即可

重启 MySQL,输入启动命令:net start mysql,出现提示证明 MySQL 启动成功

D:\Program Files\mysql-5.7.36-winx64\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

在输入命令 mysql -u root -p,不需要输入密码,直接回车

D:\Program Files\mysql-5.7.36-winx64\bin>mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

输入命令行 use mysql,进入数据库

mysql> use mysql
Database changed

输入命令行 update user set authentication_string=password("××××××") where user="root"; ××××××是你设置的新密码,敲击回车后若出现信息,证明修改成功

mysql> update user set authentication_string=password("123456") where user="root";
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

启动任务管理器,在“服务”中找到 MySQL,点击右键,然后点击停止即可

然后在刚刚的 my.ini 文件中删除 skip-grant-tables 这一行并保存关闭

再次以管理员身份运行命令提示符,输入启动命令:net start mysql,再输入 mysql -u root -p,再输入刚刚设置的密码,出现以下信息证明设置成功

D:\Program Files\mysql-5.7.36-winx64\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

输入命令行 use mysql 验证一下,结果报错

mysql> use mysql
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql>

既然没有重置密码,那就重置密码,键入命令行 alter user user() identified by "××××××";

mysql> alter user user() identified by "123456";
Query OK, 0 rows affected (0.00 sec)

再次输入命令行 use mysql 验证,成功

mysql> use mysql
Database changed

至此,MySQL 5.7 安装及配置完成

Debian Bullseye 更新源

Debian Bullseye 网易镜像站

#http://mirrors.163.com/debian/为软件源也可以为其他的 bullseye为版本代号 main non-free contrib区别如下
deb https://mirrors.163.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye main non-free contrib
deb https://mirrors.163.com/debian-security/ bullseye-security main
deb-src https://mirrors.163.com/debian-security/ bullseye-security main
deb https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.163.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-backports main non-free contrib

Debian Bullseye 腾讯云镜像站

deb https://mirrors.tencent.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye main non-free contrib
deb https://mirrors.tencent.com/debian-security/ bullseye-security main
deb-src https://mirrors.tencent.com/debian-security/ bullseye-security main
deb https://mirrors.tencent.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.tencent.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye-backports main non-free contrib

Debian Bullseye 阿里云镜像站

deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

Debian Bullseye 华为云镜像站

deb https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.huaweicloud.com/debian/ bullseye main non-free contrib
deb https://mirrors.huaweicloud.com/debian-security/ bullseye-security main
deb-src https://mirrors.huaweicloud.com/debian-security/ bullseye-security main
deb https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.huaweicloud.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.huaweicloud.com/debian/ bullseye-backports main non-free contrib

Debian Bullseye 清华大学镜像站

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free