最小覆盖子串

题目 不定长滑动窗口 + 计数哈希 右指针扩张窗口,直到覆盖了 t 的全部需求 一旦覆盖成功,左指针尽量收缩,变短 在收缩过程中持续更新最优答案 当收缩到不再满足条件时,再继续右扩 Java 解法 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 class Solution { public String minWindow(String s, String t) { int m = s.length(), n = t.length(); if (n > m) return ""; int[] need = new int[128]; for (int i = 0; i < n; i ++) { need[t.charAt(i)] ++; } int missing = n; int bestLen = Integer.MAX_VALUE; int bestL = 0; int l = 0; for (int r = 0; r < m; r ++) { char c = s.charAt(r); if (need[c] > 0) { missing--; } need[c]--; while(missing == 0) { int len = r - l + 1; if (len < bestLen) { bestLen = len; bestL = l; } char leftChar = s.charAt(l); need[leftChar]++; if (need[leftChar] > 0) { missing ++; } l ++; } } return bestLen == Integer.MAX_VALUE ? "" : s.substring(bestL, bestL + bestLen); } } Python 解法 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 27 28 29 30 31 32 33 34 35 36 class Solution: def minWindow(self, s: str, t: str) -> str: if len(t) > len(s): return "" need = [0] * 128 for ch in t: need[ord(ch)] += 1 missing = len(t) best_len = float("inf") best_l = 0 l = 0 for r, ch in enumerate(s): idx = ord(ch) if need[idx] > 0: missing -= 1 need[idx] -= 1 while missing == 0: cur_len = r - l + 1 if cur_len < best_len: best_len = cur_len best_l = l left_idx = ord(s[l]) need[left_idx] += 1 if need[left_idx] > 0: missing += 1 l += 1 return "" if best_len == float("inf") else s[best_l: best_l + best_len] JS 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 /** * @param {string} s * @param {string} t * @return {string} */ var minWindow = function(s, t) { if (t.length > s.length) return ""; const need = new Array(128).fill(0); for(let i = 0; i < t.length; i ++) { need[t.charCodeAt(i)] ++; } let missing = t.length; let bestLen = Infinity; let bestL = 0; let l = 0; for (let r = 0; r < s.length; r ++) { const idx = s.charCodeAt(r); if (need[idx] > 0) { missing --; } need[idx]--; while(missing === 0) { const len = r - l + 1; if (len < bestLen) { bestLen = len; bestL = l; } const leftIdx = s.charCodeAt(l); need[leftIdx]++; if (need[leftIdx] > 0) { missing ++; } l++; } } return bestLen === Infinity ? "" : s.slice(bestL, bestL + bestLen); }; Go 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 func minWindow(s string, t string) string { if len(t) > len(s) { return "" } need := make([]int, 128) for i:=0; i < len(t); i ++ { need[t[i]] ++ } missing := len(t) bestLen := 1<<30 bestL := 0 l := 0 for r := 0; r < len(s); r++ { c := s[r] if need[c] > 0 { missing-- } need[c]-- for missing == 0 { if r-l+1 < bestLen { bestLen = r-l+1 bestL = l } left := s[l] need[left]++ if need[left] > 0 { missing ++ } l++ } } if bestLen == 1 << 30 { return "" } return s[bestL : bestL + bestLen] }

一月 27, 2026

mindmap 测试

mindmap - 论文大纲 - 背景与问题 - 研究动机 - 约束条件 - 方法 -> https://example.com/method - 模块A - 模块B - 实验 - 数据集 - 指标 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/01/26/20260126204259715.png,160,120)

一月 15, 2026

Python语法汇总

基础用法 - Python 语法 - 注释 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/15/20260315235532706.png,201,109) - 基本数据类型和操作符 - 数学运算 - 加减乘除 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/15/20260315235714270.png,178,89) - 向下整除 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/15/20260315235843163.png,214,92) - 除法的结果是浮点数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/15/20260315235949420.png,293,46) - 取模运算 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000056274.png,209,66) - 幂运算 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000211098.png,202,25) - 比较运算 - 等于/不等于 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316001342039.png,181,67) - 大于/小于 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316105440925.png,184,96) - 范围操作 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316105531617.png,249,46) - is/== - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316112323927.png,246,202) - 布尔类型 - 首字母大写的 True/False - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000318032.png,200,46) - 布尔运算 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000534726.png,245,113) - True/False 等价 1/0 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000628534.png,210,76) - 比较运算 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316000935017.png,212,90) - None/0/emptry 容器都可以转为 False - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316001204139.png,211,181) - 字符串 - 可以用 " 或者 ' 来创建字符串 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316112526664.png,358,46) - 字符串拼接 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316112722887.png,187,96) - 字符随机访问 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316112810130.png,226,24) - 字符串长度 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316112920605.png,190,23) - 格式化字符串 (> 3.6.0) - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316113057125.png,547,49) - None - None 是对象 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316113321824.png,154,26) - 不能使用 == 比较,需要用 is - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316113426225.png,242,49) - 变量和基础输入输出 - 打印函数 - 简单打印 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316113544803.png,278,27) - 指定结束符,不指定则是换行 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316113645979.png,209,114) - 输入 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316114307175.png,299,89) - 命名 - 没有声明,只有赋值 - 变量名是下划线格式 - 访问未赋值的变量 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316114450209.png,597,136) - if 表达式,类似于 ?: 三值判断 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316114816098.png,330,24) - 集合 - 列表 - 定义列表 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316114928797.png,125,46) - 列表追加值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316115021752.png,115,92) - 列表移除值(尾部) - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316115103804.png,157,70) - 下标访问 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316115210787.png,146,115) - 数组越界 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316115340638.png,400,103) - 切片操作 [start, end) (li[start:end:step]) - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316115742576.png,224,223) - 深拷贝切片 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202146343.png,204,67) - 删除指定位置元素 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202229279.png,160,68) - 移除第一个出现的位置 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202331306.png,541,179) - 在指定下标插入一个元素 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202514471.png,242,72) - 找到第一个匹配元素的下标 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202607808.png,546,154) - 拼接列表 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202728916.png,300,117) - 元素是否在列表中 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316202814046.png,148,67) - 列表长度 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316203214106.png,171,45) - 列表乘法 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316235419653.png,216,20) - 元祖 - 不可修改的列表 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316203359339.png,541,164) - 长度为 1 的元祖必须以 , 结尾 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316203601485.png,290,70) - 类似列表的操作 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316203857219.png,244,116) - 元组解构 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316204048571.png,206,45) - 扩展解构 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316204206294.png,226,47) - 元组创建时可以不带括号 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316204428472.png,154,91) - 交换两个元素 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221128190.png,164,91) - 字典 - 创建字典 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221220436.png,222,47) - 字典 key 需要是不可变对象 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221326550.png,536,138) - 查询某个 key 的值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221408802.png,175,50) - 列出所有 key 的值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221612060.png,360,50) - 列出所有 value 的值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221543336.png,332,49) - 判断 key 是否存在 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316221657339.png,231,74) - 查询不存在的 key - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222350530.png,540,141) - get 函数,查询不报错+指定默认值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222502641.png,345,91) - 向 dict 添加值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222609632.png,450,113) - 删除 dict 的值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222646295.png,219,73) - dict 析构 >3.5 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222802326.png,370,70) - Set - 初始化 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222904962.png,165,67) - set 的值不可变 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316222949791.png,542,136) - set 添加值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223037884.png,193,75) - 判断元素是否在 set 中 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223126357.png,202,49) - 控制语句 - if-elif-else - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223246913.png,262,155) - for-遍历 list - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223347612.png,345,49) - range 生成 [0,num) 可迭代数字 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223459815.png,249,46) - 指定开始/结束/步长的 range - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223553258.png,231,51) - 同时遍历列表的下标和值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223658560.png,275,120) - while 循环 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316223813096.png,110,164) - 异常处理 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316224246522.png,289,273) - 函数 - 使用 def 定义函数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316224445170.png,219,99) - 使用关键字参数调用函数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316224952315.png,230,92) - *args 接收位置参数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316225125132.png,253,114) - **kwargs 接收关键字参数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316225228888.png,319,115) - 返回多个值(以不带括号元祖形式) - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316233206784.png,184,159) - 修改全局作用域 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316233418994.png,255,387) - 函数是一等公民,可以作为返回值返回 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316233650659.png,232,133) - 匿名函数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316234128203.png,458,50) - 列表推导式,用渐渐的写法,快速生成一个列表 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316234430610.png,387,47) - 构造 dict - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316234550464.png,282,46) - 模块 - 直接导入模块 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316234855919.png,221,95) - 导入模块中指定的函数 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316234934024.png,214,95) - 导入模块中所有的函数(不推荐) - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316235018757.png,222,97) - 简写模块名 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/16/20260316235103563.png,238,96) - 模块就是普通的 python 文件,模块名就是文件名 - 如果本地文件夹有 math.py 它会优先内置的 math.py 加载 - 类 - 创建类 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317000702750.png,500,700) - 使用类 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317112935447.png,382,602) - 继承 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317114713991.png,280,702) - 迭代器/可迭代对象 - 可迭代对象:能用来 for 遍历的对象 - 迭代器,能被 next() 取值的对象 - 生成器 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317152213345.png,189,159) - 装饰器 - 在不改变原函数的前提下,给函数包一层,从而增强它的功能 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317152711432.png,240,316) - 类型系统 - 类型标注 - 在代码里面把参数、返回值、变量等期望是什么类型写出来 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153133058.png,247,71) - 类型是期望类型,不会默认强制检查,只是为了让人和工具看的更准确 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153234494.png,363,115) - 容器类型标注 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153438471.png,303,74) - 可选类型 None - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153727222.png,218,32) - 多种类型 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153840957.png,346,124) - Any 类型,不确定类型 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317153925706.png,118,35) - 函数没有返回值 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317154003441.png,147,42) - 泛型 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317154103930.png,253,108) - 类型别名 - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317154201801.png,237,55) - python 命令 - python -m - 把一个模块当成程序来运行 - python -m <模块名字> 会去模块搜索路径找到模块,然后像主程序一样执行 - 不带 -m 给的是一个文件,-m 给的是一个模块名 - pip 安装 - python -m pip --version 查看版本 - python -m pip install requests 安装一个包 - python -m pip install requests==2.31.0 安装指定版本的包 - python -m pip install --upgrade requests 升级一个包 - python -m pip list 查看已经安装的包 - python -m pip freeze > requirements.txt 导出当前环境依赖 - python -m pip install -r requirements.txt 按依赖文件安装 - python -m pip uninstall numpy 卸载软件包 - python -m pip install -i https://mirrors.aliyun.com/pypi/simple/ requests 临时配置镜像 - python -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ 永久配置镜像 - python -m pip config list 查看配置 - pip 配置文件 - ~/.pip/pip.conf - ![](https://an-img.oss-cn-hangzhou.aliyuncs.com/2026/03/17/20260317165009573.png,442,46) - venv - 给某个 python 项目创建要给独立的虚拟环境 - 每个项目都有独立的 Python 包、pip 安装记录、依赖版本 - 创建虚拟环境 - python -m venv .venv - 在当前目录创建一个 .venv 的虚拟环境文件夹 - 激活虚拟环境 - source .venv/bin/activate - 虚拟环境安装包 - python -m pip install requests - 退出虚拟环境 - deactive - 解决的问题 - 同一个 Python 版本下 - 不同项目依赖隔离 - pyenv/conda - 安装多个 Python 版本 - 管理解释器版本 uv 安装包 - uv - 安装 uv - curl -LsSf https://astral.sh/uv/install.sh | sh - uv --version - uv 创建项目 - uv init myapp - 项目关键文件 - pyproject.toml:项目元数据与依赖声明 - uv.lock:锁文件,保证解析结果可以复现 - .venv:项目虚拟环境 - .python-version:项目使用的版本约束 - 依赖管理 - uv add requests - uv add "pydantic==2.11.0" - uv remove requests - 锁定和同步 - uv lock 解析依赖并生成 uv.lock - syncing 把锁文件里面的某个集合真正安装进项目环境 - 创建虚拟环境 - uv venv - 管理 python 版本 - uv python - 运行命令 - uv run - 如果不使用 uv run,就需要先激活虚拟环境后再直接执行命令

一月 15, 2026

新加坡攻略

牛车水 交通方式: 地铁紫线 NE Line - Chinatown站 峇峇娘惹海南鸡饭I娘惹菜 白切甘榜海南鸡 ...

一月 12, 2026

拉伸

Cat/Cow Puppy Dog Stretch 4-7-8 呼吸 嘴巴大口呼气后闭上嘴。 鼻子轻轻吸气,默数 4 s。 屏息 7 s。 嘴呼气,持续 8 s。

十二月 14, 2025

新 mac 安装软件

输入法 - 微信输入法 https://z.weixin.qq.com 设置使用 shift 键切换中英文 Raycast https://blog.ans20xx.com/posts/%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%AE%A1%E7%90%86/ ...

十二月 14, 2025

哑铃训练

单边哑铃划船 把手肘朝向外的方向调整,离躯干远一点。 ...

十二月 14, 2025

人生经验

编辑 绝对,绝对,绝对不要焦虑,这个是第一要素。 遇到不懂的东西,可以开一个画板,将其记录并放大,时刻记得提醒,注意可以使用费曼学习法,突然有一天你就理解了。 脑子里有想法要及时记录下来。 晚上 11:40 - 12:30 入睡,早上最晚 7:00 - 7:30 起床。 想办法让大脑充血,这样思维会更活跃,但是怎么让大脑充血呢(洗澡、运动?) 假期不要在家待,更不要在睡觉时间外躺在床上。 多做能出汗的运动,出汗后身体会轻松很多(跳绳,HIIT)。 有时间去学个游泳(有氧),学习健身力量训练(无氧)。 需要提高专注力,设置一个专注时长,这个专注时长内,天塌下来也不要干别的事情,可以使用番茄时钟,至少 25 分钟内集中注意力,5 分钟放在微冒险上,注意这 5 分钟不要玩手机。 不要害怕和别人对视,和人对话时看着对方的眼睛说话。 工作积极沟通和反馈,不要闷头干。 及时沉淀文档,文档是你工作的证明。 拉起会议前要有议程,会议结束后要有会议总结,会议前记得要开启会议录制。 做什么事情前要深思熟虑。 尽管很累,但是要做好计划。 养成东西物归原位的习惯。 不要害怕冲突,克服恐惧心理。 注意自己的仪表,整理好头发,每天洗澡,刮胡子,别偷懒,仪表反应了个人的精神面貌。 不要一味答应别人的请求,别人询问前先想一想。 活用 raycast 的 quick link 和 short code 功能,提高效率。 每天建一个文件夹,记录每天的工作,有一个暂存画板,工作上遇到的进展和问题都要及时在画板上同步。 做什么东西都要有明确的时间点。 学会排期和估时,如果信息不足就说:“基于现有的信息,给出的估时是 xx,后续有其他变化,需要增加估时“。 做什么事情之前都要给心理预期,并不是所有事情的结果都是好的。 学学看别人的架构文档是怎么写的,会议是怎么进行的。 一定要学会拒绝,不要别人一开口就接受。 极简主义,不轻易买东西,特别是大件的水果。 不知道干什么的时候,就动起来,去跑步、骑车,什么都不要想。 坚持写日报,虽然很难受。 肩颈不舒服,要去正规中医院的针灸推拿科,不要硬挺。 学会拆解任务,用最简单的第一步开启任务,及时记录结果,获得正反馈。 不要坐在床上,除了睡觉外,不应该呆在床上,可以在椅子上用筋膜球按摩。 垃圾必须丢进垃圾桶,垃圾桶倒完垃圾要套上垃圾袋。 表格可以通过代码来生成,活用 %09d - 制表符 1 a b 编程是一个关于数据和控制的哲学,数据可以通过表格来体现,控制可以用流程图和时序图来体现。 经常整理思维导图,使用幕布软件。 每天晚上至少要跑 1km,戴上耳机听歌,走也要走下来。 我的基因报告锌、维生素 B6 代谢能力较差,平时要多吃海鲜(生蚝),鱼,蛋,坚果,动物肝脏等食品,加强锻炼。 不穿的拖鞋要放在鞋架子里,不要到处乱摆。 不要买书,如果想要看书,直接看电子版或者去图书馆看。 平时能少看手机就少看手机,休闲可以玩电脑。 减少买不必要的东西,特别是电子产品,想要打游戏直接去网吧。 床上不要放衣服,其他东西也不要放,应该只有被子和枕头。 每天晚上睡觉前,手机要充好电,充电线不要放在地上,防止踩到,很脏。 定期刷下鞋子,鞋子反映了一个人的精神状况。 耳机很容易丢,一定要时刻注意耳机的位置,出行的时候,耳机要放在包的小口袋里面,身份证不用的时候也要放在包里面。 没事的时候可以多刷刷美剧。 大公司里面什么时候都不要自作主张,需要向领导汇报后才能推动做某事(反面教材是风骚律师中吉米没有通知老板而擅自播出了广告)。 坚持贴口呼吸贴睡觉。 睡觉时眼镜要放床头柜上,避免醒来时找不到眼睛。 健康低糖饮食,吃饭要迅速解决,最好自己做饭。 早上多喝水,睡前少喝水。 小便时要抖干净。 早上起床要远眺。 积极锻炼英语的听说能力,有时间去国外旅游,真实的情境比课本更有效。 经常做引体向上,锻炼肩颈能力,纠正脊椎侧弯。 到家第一件事是洗澡刷牙。 尝试自己写点文章,锻炼写作技巧。 先行动起来,再继续迭代。 快速切换,一秒上手。 困的时候,用冷水洗脸,站一会,喝一些茶饮料,试试冥想。 减少抱怨,减少负能量。 大脑是反系统的,学习的时候要带着问题去学,比如学习一个东西,先抛出具体的问题,然后再给解决方案,总结的时候再去系统整理。 手机成瘾的原因是无聊,对手机成瘾实际上是对无聊生活的逃避,与其抗拒手机的诱惑,不如让日常生活中的事情比手机更具有吸引力。 眼镜戴的时候很容易歪,经常注意调整下。 每天起床后的前 90 分钟,会为之后一天的生活设定状态,“皮质醇觉醒效应“,起床后大脑会分泌皮质醇,这种皮质醇会让人专注、清醒、蓄势待发。 手机不要放在卧室里面,至少要放在房间的另一头,或者洗手间,用它来当闹钟,关闭闹钟时刚好洗漱,放在床够不着的地方,醒来的 10 分钟内去外面走走,接触阳光。 坐姿端正,不要翘二郎腿。 醒来后来一杯热水,加一点柠檬。 尝试晨间随笔,拿起笔记本,随便写下三页脑海中浮现的东西,手写,意识流,不是为了表达深刻,可以写一堆垃圾,这是在清楚噪声,让更加精彩的东西入脑。 大脑渴望新鲜感,进行耗时不到 10 分钟的微冒险,(微小说挑战:用 10-15 分钟写一个故事,包含开头、发展和结尾;质感搜寻:触摸周围的五种不同质感;闭上眼睛,列出所有能够听到的声音;5-7-5 俳句,描述眼前所见之物,三分钟描述周围的事物;涂鸦:观察并画出身边的东西)。 进行时间审计,每半个小时记录你在做什么,标注每个时刻你的感受(专注、无聊、焦虑、麻木)。 像安排会议一样安排娱乐时间的规划。 尝试新鲜的娱乐活动(德州扑克,狼人杀、桌游、唱歌,舞蹈)

十一月 5, 2025

SideCar 模式

简介 设计模式是软件设计中,针对 “反复出现的常见问题” 的 “可复用解决方案”(比如 “如何让多个服务通信更高效”“如何解耦业务与非业务逻辑” 这类高频难题,都有对应的成熟模式)。 ...

十月 6, 2025

API 分页

分类 基于页 + 偏移量 基于游标 基于页/偏移量的分页 基于页的分页: ...

十月 4, 2025