0%

在 FastAPI JWT Auth 中,Refresh Token(刷新令牌)和 Access Token(访问令牌)是两种不同的令牌,用于实现认证和授权机制。

  1. Access Token(访问令牌):Access Token 是一个短期的令牌,用于验证用户的身份并授权用户访问受保护的资源。Access Token 是通过用户提供的凭证(如用户名和密码)进行身份验证后生成的,通常具有较短的有效期(例如几分钟或几小时)。客户端在每次请求受保护的资源时,需要在请求的头部或请求参数中携带 Access Token,以证明其有权访问该资源。
  2. Refresh Token(刷新令牌):Refresh Token 是一个长期有效的令牌,用于在 Access Token 过期后重新获取新的 Access Token。当 Access Token 过期时,客户端可以使用 Refresh Token 向服务器发送请求来获取新的 Access Token,而无需重新提供用户名和密码等凭证。通常情况下,Refresh Token 的有效期要比 Access Token 更长。

使用 Refresh Token 的主要目的是增强安全性和减少频繁的身份验证操作。通过将 Access Token 的有效期设置较短,可以降低令牌泄露的风险。当 Access Token 过期时,使用 Refresh Token 获取新的 Access Token,这样可以减少频繁地要求用户重新提供凭证的情况。

一般的流程是,客户端在进行身份验证后会收到一个 Access Token 和一个 Refresh Token。客户端使用 Access Token 来访问受保护的资源,当 Access Token 过期时,客户端使用 Refresh Token 向服务器请求新的 Access Token。

FastAPI JWT Auth 提供了相应的功能和装饰器来处理 Access Token 和 Refresh Token 的生成、验证和刷新等操作,以方便实现 JWT 认证和授权。

refresh tokens cannot access an endpoint that is protected with jwt_required(), jwt_optional(), and fresh_jwt_required()

access tokens cannot access an endpoint that is protected with jwt_refresh_token_required().

Refresh Tokens

These are long-lived tokens which can be used to create a new access tokens once an old access token has expired.

vimdiff

进入冲突解决窗口

1
git mergetool

窗口显示四部分内容

  • LOCAL – this is file from the current branch

  • BASE – common ancestor, how file looked before both changes

  • REMOTE – file you are merging into your branch

  • MERGED – merge result, this is what gets saved in the repo

移动窗口方法

1
2
3
4
Ctrl w + h   # move to the split on the left 
Ctrl w + j # move to the split below
Ctrl w + k # move to the split on top
Ctrl w + l # move to the split on the right

处理冲突

  • 可移动到merge窗口去手动改

  • 使用命令

    1
    2
    3
    :diffg RE  # get from REMOTE
    :diffg BA # get from BASE
    :diffg LO # get from LOCAL

保存退出

1
:wqa

Meld

todo

机器学习术语表

机器学习类型

什么是机器学习?

根据机器学习系统学习进行预测或生成内容的方式,机器学习系统可分为以下一个或多个类别:

  • 监督式学习
  • 非监督式学习
  • 强化学习
  • 生成式 AI
  • 实现机器学习的一般步骤:
  1. 数据收集
  2. 数据准备
  3. 数据分析
  4. 训练算法
  5. 测试算法
  6. 应用算法

数据

训练集、验证集、测试集

虚拟环境

在 Linux 中配置 Python 项目的运行虚拟环境通常使用 venv(虚拟环境)模块。以下是一般的步骤:

  1. 安装 venv 模块(如果尚未安装):

    检查你的 Python 版本并确保安装了 venv 模块。

  2. 创建虚拟环境:

    在项目目录中,运行以下命令创建一个名为 myenv 的虚拟环境:

    1
    python3 -m venv myenv

    这将在当前目录创建一个名为 myenv 的虚拟环境文件夹。

  3. 激活虚拟环境:

    激活虚拟环境可通过以下命令:

    1
    source myenv/bin/activate

    这将激活名为 myenv 的虚拟环境。激活后,你的终端提示符可能会显示虚拟环境的名称。

  4. 安装项目依赖:

    在激活的虚拟环境中,使用 pip 安装项目所需的依赖:

    1
    pip install -r requirements.txt

    其中 requirements.txt 是包含项目依赖项的文件。

  5. 退出虚拟环境:

    当你完成项目工作后,可以通过以下方式退出虚拟环境:

    1
    deactivate

    这将使虚拟环境退出,并恢复到系统默认环境。

使用虚拟环境有助于隔离项目的依赖,避免与系统其他项目的依赖冲突,并提供更干净的开发环境。

uvicorn

正常情况下虚拟环境 /path/to/venv/bin/ 下面是有 uvicorn 的启动命令的,即 /xxx/venv/bin/uvicorn

如果当前虚拟环境不识别uvicorn,可通过

  • 方式一
1
python -m uvicorn xxx:app --reload
  • 方式二
1
pip install --force-reinstall uvicorn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看当前版本
pyenv version

# 查看所有版本
pyenv versions

# 查看所有可安装的版本
pyenv install --list

# 安装指定版本
pyenv install 3.6.5
# 安装新版本后rehash一下
pyenv rehash

# 删除指定版本
pyenv uninstall 3.5.2

# 指定版本
pyenv shell <version> -- select just for current shell session
pyenv local <version> -- automatically select whenever you are in the current directory (or its subdirectories)
pyenv global <version> -- select globally for your user account

# 指定多个全局版本, 3版本优先
pyenv global 3.6.5 2.7.14

# 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的
  • 当前项目使用的pyenv版本会在 .python-version文件中体现

reference



配置文件

spring.config.additional-location

不会使项目默认的配置文件失效,使用该命令行参数添加的外部配置文件会与项目默认的配置文件共同生效,形成互补配置,且其优先级是最高的,比所有默认配置文件的优先级都高。

spring.config.location

使用该参数指定配置文件后,会使项目默认配置文件(application.properties 或 application.yml )失效,Spring Boot 将只加载指定的外部配置文件。

  • session
    功能 macos linux
    新建session tmux new -s 一样
  • 窗口
功能 macos linux
  • 窗格
功能 macos linux
调整窗格大小 Ctrl + b, Esc + 方向键 Ctrl + b, Ctrl + 方向键
窗格内容翻页 Ctrl + b, Fn + 上下键 Ctrl + b, Ctrl + 上下键
  • 其它
    功能 macos linux
    内嵌tmux操作 按着 ctrl,点击两次 b 键 一样

命令模式

ctrl + b 然后按下:

会话

  • 创建会话

    new-session -s <session name>

  • 切换会话

    switch-client -t <session name or id>

窗口

  • 交换窗口位置

    1
    2
    3
    4
    5
    # 交换编号3与编号1窗口的位置
    swap-window -s 3 -t 1

    # 把当前窗口放到指定编号1的位置
    swap-window -t 0
  • 新建窗口

    new-window -n <window name>

  • 切换窗口

    select-window -t <window id>

    select-window -n <window name>

窗格

  • 分割窗格

    split-window -h 水平

    split-window -v 垂直

Tmux Plugin Manager (TPM)

  • 配置文件地址~/.tmux.conf

    修改配置生效 tmux source-file ~/.tmux.conf

  • 使用快捷键插件管理
    1
    2
    3
    4
    # prefix表示是Tmux的快捷键前缀
    prefix shift-i # 安装件列表中的插件
    prefix shift-u # 更新件列表中的插件
    prefix alt-u # 删除/卸载不在插件列表中的插件
  • 使用命令行插件管理
    1
    2
    3
    ~/.tmux/plugins/tpm/bin/install_plugins                  # 安装件列表中的插件
    ~/.tmux/plugins/tpm/bin/update_plugins all|plugname # 更新所有插件或指定插件
    ~/.tmux/plugins/tpm/bin/clean_plugins # 删除/卸载不在插件列表中的插件
  • 保存/恢复会话 tmux-resurrect

    默认会话数据路径 /.local/share/tmux/resurrect

    1
    2
    3
    4
    保存Tmux会话:前缀键 + Ctrl-s
    还原Tmux会话: 前缀键 + Ctrl-r

    Tmux Resurrect 会将 Tmux 会话的详细信息以文本文件形式保存到 ~/.tmux/resurrect 目录;