快乐冲浪与生活

多体验、多体会、多体悟

0%

Casbin 是一个基于声明式访问控制引擎,用于在应用中实现访问控制策略。

Casbin 只负责授权,不负责认证。

基础概念

Casbin 包含 5 个核心组件:

  1. 模型(Model):定义一套权限“语法框架”,规定请求长什么样、策略字段有哪些、怎么匹配、命中后怎么算结果。
  2. 策略(Policy):具体的权限记录,是填充到 Model 模板里的实例数据。
  3. 执行器(Enforcer):调度中心,绑定 Model + Adapter,对外提供鉴权、策略管理 API。
  4. 适配器(Adapter):隔离 Enforcer 和存储介质,负责 Policy 的读。
  5. 匹配器(Matcher):定义了主体和资源的匹配规则,用于判断是否命中策略。

Enforcer 不是线程安全。生产一般全局单例;写策略的时候建议加锁。

什么是 useCallback

区别于 useMemo,useCallback 缓存函数引用,依赖不变时,多次渲染返回同一个函数对象,不是缓存函数执行结果。

格式如下:

1
2
3
4
5
6
const memoFn = useCallback(
  (...args) => {
    // 你的逻辑
  },
  [deps]
)
  • 参数 1:要缓存的函数
  • 参数 2:依赖数组,依赖不变时,函数引用不变
  • 返回值:缓存后的函数引用

与 useMemo 的等价写法:

什么是 useMemo

useMemo 是 React 提供的一个 Hook,用来将计算结果缓存起来,只有当依赖项发生变化时才会才会重新计算。

useMemo 不保证一定缓存命中,在内存压力、并发渲染等情况下,React 可能丢弃缓存并在下次渲染时重新计算。

stream_mode=checkpoints

  • 触发时机:每一次 super-step(超步)生成 checkpoint 之后,就产出一个 chunk
  • 适用场景:
    • 拿到 checkpoint_id 就可以从这个快照恢复执行
    • 长时间运行的任务、故障恢复

stream_mode=tasks

按单个 Task 的生命周期推送事件:Task Start、Task Finish,一般返回的 chunk 两个为一个 Task。