0%

KMP

https://www.zhihu.com/question/21923021/answer/37475572

28. 找出字符串中第一个匹配项的下标

模式串:abababzababab

第一步:一边遍历模式串,一边构造next数组。

  • next[i]表示字符串s[0:i+1]的前缀和后缀最大的公共长度
  • 初始化j=0,i从1遍历到n-1。j的位置表示,此时s[:j]是公共前后缀
  • 遍历时,如果此时有公共前后缀,不断比较s[i]和s[j],一旦发现他们不同,则在循环中回退j,直到s[:j]成为公共前后缀。回退到此时的次长公共前后缀,将j移动到next[j-1]即可
  • 再次比较s[i]和s[j],如果相同,则移动j,并且为next[i]赋值

第二步:比较两个字符串
abeababeabf
abeabf

Docker

Dockerfile

Usage: select base image(usually with python), install dependencies using pip

drawback: need command line to assign port number

docker compose

easy to assign port mapping

volumes

1
volumes: - ./mlflow-artifacts:/mlflow-artifacts

将本地的 ./mlflow-artifacts 目录映射到容器内的 /mlflow-artifacts 目录,实现:

数据持久化:容器重启/删除后,数据不会丢失

推理模型的 prompt

  1. 保持简洁
  2. 不用提供太多示例,示例会降低推理效果

常见prompt

  1. markdown 格式(任务指令提示和系统提示)
  2. 角色扮演(任务指令提示和系统提示)
  3. 奖励机制/情绪激励(任务指令提示)
  4. 具体的示例
  5. 隐式思维链:让它输出思考过程:“请一步一步地思考”(任务指令提示和系统提示)
  6. 要求LLM给出置信度或对结果的信心/概率分数(适用于任务指令提示和系统提示)

system prompt

角色设定、提供示例、设计工作流程

755. 倒水

时间顺序

2534. 通过门的时间

  1. 模拟的结束条件为所有人都进入/离开
  2. 内层循环里放时间

Project 1

project setup

src,config, untils需要被视作为 package,因此在它们的folder里创建一个名为__init__.py的文件。

setup.py

setup.py 是一个用于配置 Python 项目分发的脚本。它使用 setuptools 库来定义项目的元数据和依赖项。

Alt text

TCP 重传

  1. 超时重传:设置一个计时器,时间应略长于RTT。如果超时了还没有收到ACK,则立即重传
  2. 快速重传:当连续收到三个相同的 ACK 时,立即重传
  3. SACK(选择性确认):接收方可以告诉发送方接收到了哪几个消息,还缺哪个消息
  4. DSACK(重复确认):接收方收到两个2,就会用DSACK告诉发送方,它有两个 2,别重传了。只是因为网络延迟问题。

TCP流量控制

慢启动

刚开始传输时,发送方每收到一个ACK确认,就把发送窗口翻倍(指数增长)。初始窗口长度为 1.

CAP

Consistency:所有节点同时看到相同的数据(强一致性)。

Availability: 99.999%的成功率,一年之内只有5分钟系统不可用

Partition Tolerance:系统在网络分区时仍能继续工作。

300. 最长递增子序列

灵神视频

定义 g[i] 表示长为 i+1 的上升子序列的末尾元素的最小值。

反证法可证明:g是一个严格递增的数组

659. 分割数组为连续子序列

tail[i]用来表示,以i结尾的子序列个数。这样在遇到i+1时,就可以放进去了。