RBAC(Role-Based Access Control,基于角色的访问控制)是一种通过角色来管理用户访问权限的模型。它的核心思想是将权限分配给角色,再将角色分配给用户,用户通过扮演角色来获得相应的权限。
下面这个表格可以帮你快速抓住RBAC的核心组成部分:
核心组件
说明
生活中的类比
用户 (User)
系统的使用者,如员工、管理员等。
公司里的员工
角色 (Role)
一组权限的集合,代表特定的职责或岗位,如“经理”、“财务”。
员工所在的职位,如“部门经理”
权限 (Permission)
对特定资源(如文件、数据)可执行的操作(如读、写、删)。
该职位被允许处理的工作内容,如“审批10万元以下预算”
会话 (Session)
用户登录系统后建立的临时上下文,用于激活其拥有的角色。
员工在工作时间内履行其职责
RBAC的不同模型基础的RBAC模型(也称为RBAC0)包含了上述所有核心组件。为了满足更复杂的管理需求,RBAC还衍生出几个扩展模型:
RBAC1(角色分层模型):引入了角色继承概念。子角色可以继承父角色的所有权限,这类似于现实中的职位 ...
这是一个全能的python包管理工具【全面掌握UV:Python下一代环境管理懒人工具(Python五分钟)】 https://www.bilibili.com/video/BV15MVdzaEUw/?share_source=copy_web&vd_source=9c987ed6ab5014f976c5bd5305300cc0
安装1234powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# 直接安装到 /usr/local/bin,这样所有用户(pi, root)都能直接用curl -LsSf https://astral.sh/uv/install.sh | sudo INSTALLROOT=/usr/local/bin sh
代替pip12345uv run <main.py> 直接运行python文件uv add --script 添加依赖到单个python文件uv remove --script 删除依赖到单个python ...
NVM
NVM指的是Node Version Manager,是一个Node.js的版本管理工具。它允许用户在同一台机器上安装和管理多个Node.js版本。这对于需要在不同的项目中使用不同Node.js版本的开发者来说非常有用。
以下是NVM的一些主要特点和功能:hexo
版本切换:允许用户在多个Node.js版本之间快速切换。
简易安装:提供了简单的命令行安装脚本,方便用户安装。
独立环境:每个Node.js版本都安装在其独立的目录中,不会干扰系统的其他Node.js安装。
默认版本设置:可以设置一个默认的Node.js版本,每次打开新的终端窗口时都会使用该版本。
兼容性:支持io.js,以及Node.js的各个LTS(长期支持)版本。使用NVM,开发者可以在测试新版本的应用程序的同时,保持生产环境使用稳定的Node.js版本,从而提高了开发的灵活性和便捷性。安装和使用NVM通常涉及以下步骤:
通过终端运行安装脚本。
使用nvm list available命令安装展示所有版本的Node.js。
使用nvm install <version>命令安装特定版 ...
在根目录创建一个store文件夹,里面创建js、ts文件
如果把state比作实体类的属性(如 user 的 name、age),actions比作实体类的方法(如修改属性的 setAge、执行业务逻辑的 login),那么getters可以理解为实体类中带缓存的 “计算属性方法”—— 它依赖属性(state)计算出新的值,并且只会在依赖变化时重新计算。
- **getters**:用于基于 state 的**派生状态**(如过滤、统计、格式化等),且这个派生状态可能被多次使用(比如在组件模板、其他 getters 中)。利用缓存可以避免重复计算,提升性能。
- **方法(actions 或普通函数)**:适合处理**不需要缓存的逻辑**(如单次计算、带参数的动态过滤),或包含**副作用的操作**(如请求接口、修改 state)。
123456789101112131415161718192021222324252627// 导入 defineStore 函数,用于定义 Pinia 存储import { defineStore } from ' ...
scoop.sh中国用户能用的 Scoop 应用库,每日同步 Scoop 的官方库,加速应用的下载速度
123456789101112Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserInvoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression# 国内加速,三选一irm https://gh-proxy.com/https://raw.githubusercontent.com/duzyn/scoop-cn/master/install.ps1 | iexirm https://cdn.jsdelivr.net/gh/duzyn/scoop-cn/install.ps1 | iexirm https://raw.gitmirror.com/duzyn/scoop-cn/master/install.ps1 | iex# 超级一键安装iex (irm https://duzyn.github.io/scoop-cn/install.ps1 ...
在官方插件中配置date属性
YYYY-MM-DDTHH:mm+08:00
安装插件
插件名
作用
Advanced Tables
表格工具
Better Word Count
字数统计
Editing Toolbar
编辑器上方快捷工具栏
Emoji Toolbar
Emoji表情
Excalidraw
超级好用的白板
Git
git同步
Hidden Folder
隐藏文件夹,例如node_modules
Tasks
任务
Templater
模板
Image auto upload
配合本地Picgo自动上传图片
Templater模板12345678---title: <% tp.file.title %>categories: -tags: -date: <% tp.date.now(format="YYYY-MM-DDTHH:mm:ss+08:00") %>---
IntelliJ IDEA 中配置 Live Template 快速生成日志对象在 IntelliJ IDEA 中,你可以通过配置Live Template(代码模板) 来快速生成日志对象的创建语句。以下是具体的配置方法和使用技巧:
步骤 1:创建日志模板
打开设置:File > Settings > Editor > Live Templates
点击右侧的+号,选择Template Group,新建一个分组(例如命名为Custom)
选中新建的分组,再次点击+号,选择Live Template
配置模板:
Abbreviation:设置触发前缀(例如log或logger)
Description:添加描述(例如Create logger instance)
Template Text:输入日志创建代码:
1private static final Logger logger = LoggerFactory.getLogger(\$CLASS\_NAME\$.class);
点击Define,选择适用的上下文(勾选Java > De ...
he—
一、核心调整策略
技术方向聚焦:以 Java(主赛道) 为核心,结合 算法竞赛(蓝桥杯/ACM) 和 软考备考,舍弃原计划中的Python/UE5/ESP32(硬件限制大),改为 Blender(碎片时间创作) 。
设备适配:用 在线IDE(如Replit、CodeSandbox) + 手机SSH工具(Termius) 编程,平板安装 AidLearning 运行Linux环境,解决无电脑问题。
考证优先级:根据考试时间安排优先级:英语四级(12月) > 软考中级(11月) > 计算机三级(9月) 。
体能训练:采用 微习惯法,从每天5分钟HIIT开始,逐步提升至20分钟。
二、每日计划表(打工期:4月底-9月底)【工作日:每天1.5-2小时】
时间段
周一、三、五
周二、四、六
周日(弹性)
早晨20min
四级词汇+听力(百词斩/每日英语听力)
软考知识点速记(信息系统管理/网络技术)
体能训练(Keep初级HIIT)
午休15min
刷LeetCode每日一题(Java实现)
看Blender ...
platformio.ini 配置任选其一
1234567891011121314; Flash: 16MB QD, PSRAM: 8MB OT[env:esp32-s3-devkitc-1]platform = espressif32board = esp32-s3-devkitc-1framework = arduinomonitor_speed = 115200board_build.arduino.memory_type = qio_opiboard_build.flash_mode = qioboard_build.psram_type = opiboard_upload.flash_size = 16MBboard_upload.maximum_size = 16777216board_build.extra_flags = -DBOARD_HAS_PSRAM
12345678910111213[env:esp32s3]platform = espressif32board = esp32-s3-devkitc-1framework = arduino; 指定为16M ...
概念我的理解就是,在整个前端Vue项目中,有需要全局都使用到的对象,例如token,而状态管理就是跨文件、跨域的一个全局变量对象
Vue 使用 Pinia
引用站外地址
pinia官网
123456789import { createApp } from 'vue'import { createPinia } from 'pinia'import App from './App.vue'const pinia = createPinia()const app = createApp(App)app.use(pinia)app.mount('#app')
例子创建 store123456789101112131415161718192021222324252627 ...