你笑了

你的笑,是星星跳跃浪花的笑

0%

文件上传

服务端

  • 通过 multer 处理 formdata

  • 接口签名验证

    不能通过 SignGuard 验证签名,因为 Guards are executed after all middleware, but before any interceptor or pipe。而 multer 是在 Interceptors 中才解析上传数据的,因此在 SignGuard 中无法获取到 req body

阅读全文 »

  • 当临界区代码包含异步操作时,对共享数据的访问跨越多个事件循环,此时会出现数据不一致情况

  • libuv主要执行IO任务,其线程池不是线程安全的,需要在JS层面维护

    多个异步操作(多次调用临界区代码)同时处于临界区内

    参考 Why do you need locking on single threaded nodejs?

  • 下面根据共享数据的来源和编程模型讨论

    阅读全文 »

nextTick queue

  • 由 node 本身维护
  • 通过 process.nextTick() 添加任务
  • 可以递归调用,不会触发 call stack 的 RangeError: Maximum call stack size exceeded from v8 错误
    阅读全文 »

ChatGPT

  • 基于 OpenAI 的 GPT 系列模型开发的一个具体应用,主要用于文本聊天。ChatGPT 能够理解用户的输入,并生成有意义的、人类般的回复。它是生成式AI的一个实际应用实例。
    阅读全文 »

策略

Directed Rounding to an integer

  • 定向舍入

    原始值x到舍入值y的舍入方向是固定的:指向或远离限制值(0 或 +-无穷大)

    1
    y=f(x)

Round up

up 有两种解释

阅读全文 »

db_bak.exp 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/expect -d
# add -d enable debug info
# 删除10天之前的备份
exec find /path/to/bak -type f -mtime +10 | xargs rm -rf
set timeout 30
set date [clock format [clock seconds] -format {%Y-%m-%d}]
set channel [open "/path/to/log/db_bak.log" w]
set devfile $date\_dev.dump
puts $channel "$date backup dev db start..."
spawn pg_dump -h [host] -U [db user] -d [db name] -p 5432 -x -Fc -f /path/to/bak/$devfile
# 这里根据系统语言调整
expect "*口令:"
send "[db pwd]\r"
expect eof
set date2 [clock format [clock seconds] -format {%Y-%m-%d %H:%M:%S}]
puts $channel "$date2 backup dev db end!"

JSON

[1] DOC https://www.json.org/json-zh.html

  • 基于文本的、独立于编程语言的、结构化数据表示格式

    文本上下文中存在的一种数据表示格式(对应用JS编程语言就是字符串类型中存在的一种数据表示格式)

    • 狭义上指表示结构化数据的格式(本质)

    • 广义上指用该格式表示的数据(外延)

  • 通常用于数据交换

    在编程语言层面处理时,都是以字符串(文本)形式存在

阅读全文 »

字符集

一组文本和图形符号,每个符号都映射到一个非负整数

给每个字符分配一个唯一的数值,并建立字符和数值之间的双向映射关系,即字符集、编码表

同一个数值在不同的字符集中对应不同的字符

有了字符集需要定义其编码方式,只有转换为字节才能读取、存储、传输

通常所说的 xxx编码 指的是 用xxx字符集表示数据

计算机中的数据都是二进制形式,xxx编码,就是用二进制对应的xxx字符集中的字符表示数据

阅读全文 »