[{"content":"2026年09月14日 ✅ Todo Work 倩倩师姐-article figures \u0026amp;\u0026amp; supply information note （morning） 检伪工作论文初稿审阅和修改 （morning） Zotero 文献库整理归类 \u0026amp;\u0026amp; github代码库优化 （afternoon） Hao Group‘s Article Review （afternoon） 2026 CVPR Paper Reading （night） Life Running-3km （night） Sleeping before 12:00（night） A PHD is a journey that's intense, but it also teaches you to be patient, persistent, and thoughtful. ","permalink":"https://onedayoneday.xin/phd/2026-09/","summary":"\u003ch2 id=\"2026年09月14日\"\u003e2026年09月14日\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003ch3 id=\"-todo\"\u003e✅ Todo\u003c/h3\u003e\n\u003ch4 id=\"work\"\u003eWork\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 倩倩师姐-article figures \u0026amp;\u0026amp; supply information note （morning）\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 检伪工作论文初稿审阅和修改 （morning）\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Zotero 文献库整理归类 \u0026amp;\u0026amp; github代码库优化 （afternoon）\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Hao Group‘s Article Review （afternoon）\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 2026 CVPR Paper Reading （night）\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"life\"\u003eLife\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Running-3km （night）\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e Sleeping before 12:00（night）\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote class=\"quote-center\"\u003e\n  \u003cp class=\"quote-center-content\"\u003e\nA PHD is a journey that's intense, but it also teaches you to be patient, persistent, and thoughtful.\n\u003c/p\u003e\n\u003c/blockquote\u003e","title":"2026-09"},{"content":"刷题网站： LeetCode大神_灵茶山艾府\nLeetCode_Hot100\npython常用数据结构： 点击展开：Python常用数据结构及其基本操作 \u0026quot;\u0026quot;\u0026quot; Python 常用数据结构（对应 C++ STL）及基本操作 ================================================ C++ Python ------------------------- vector list stack list queue collections.deque unordered_map dict unordered_set set \u0026quot;\u0026quot;\u0026quot; # ========================================================== # 1. 数组 / 动态数组 # C++: vector # Python: list # ========================================================== arr = [1, 2, 3] # 创建数组 # 插入元素 arr.append(4) # 尾部插入 O(1) # 在指定位置插入 arr.insert(1, 10) # index=1 插入 10 -\u0026gt; O(n) # 删除尾部 arr.pop() # 删除最后一个元素 O(1) # 删除指定位置 arr.pop(1) # 删除 index=1 # 修改元素 arr[0] = 100 # 查找元素 print(arr[1]) # 遍历数组 for x in arr: print(x) # ========================================================== # 2. 栈 (Stack) # C++: stack # Python: list # ========================================================== stack = [] # 入栈 push stack.append(1) stack.append(2) stack.append(3) # 查看栈顶 print(stack[-1]) stack.top() # 出栈 pop stack.pop() # 判断是否为空 if not stack: print(\u0026quot;stack empty\u0026quot;) # ========================================================== # 3. 队列 (Queue) # C++: queue # Python: collections.deque # ========================================================== from collections import deque q = deque() # 入队 q.append(1) q.append(2) q.append(3) # 出队 q.popleft() # 查看队首 print(q[0]) # 查看队尾 print(q[-1]) # BFS常用 while q: node = q.popleft() # ========================================================== # 4. 哈希表 / 字典 # C++: unordered_map # Python: dict # ========================================================== mp = {} # 插入 mp[\u0026quot;a\u0026quot;] = 1 mp[\u0026quot;b\u0026quot;] = 2 # 修改 mp[\u0026quot;a\u0026quot;] = 100 # 查询 print(mp[\u0026quot;a\u0026quot;]) # 判断key存在 if \u0026quot;a\u0026quot; in mp: print(\u0026quot;exist\u0026quot;) # 删除 del mp[\u0026quot;a\u0026quot;] # 遍历key for k in mp: print(k) # 遍历key-value for k, v in mp.items(): print(k, v) # ========================================================== # 5. 集合 # C++: unordered_set # Python: set # ========================================================== s = set() # 插入 s.add(1) s.add(2) s.add(3) # 删除 s.remove(2) # 删除（如果不存在不会报错） s.discard(10) # 查询 if 1 in s: print(\u0026quot;exist\u0026quot;) # 遍历 for x in s: print(x) # ========================================================== # 6. 初始化技巧（刷题常用） # ========================================================== # 初始化数组 arr = [0] * 10 # 初始化二维数组 grid = [[0]*5 for _ in range(5)] # 初始化dict mp = {\u0026quot;a\u0026quot;: 1, \u0026quot;b\u0026quot;: 2} # 初始化set s = {1,2,3} # 初始化队列 q = deque([1,2,3]) # ========================================================== # 7. 常见复杂度总结 # ========================================================== \u0026quot;\u0026quot;\u0026quot; list ---- append O(1) pop() O(1) insert O(n) 访问 O(1) stack ----- push O(1) pop O(1) deque ----- append O(1) popleft O(1) dict ---- insert O(1) find O(1) delete O(1) set --- insert O(1) find O(1) delete O(1) \u0026quot;\u0026quot;\u0026quot; DAY 1 1.两数之和 O(n^2): class Solution(object): def twoSum(self, nums, target): \u0026quot;\u0026quot;\u0026quot; :type nums: List[int] :type target: int :rtype: List[int] \u0026quot;\u0026quot;\u0026quot; for i,num1 in enumerate(nums): if target-num1 in nums[i+1:]: j=nums[i+1:].index(target-num1)+1+i return [i,j] 哈希表O(n):\nclass Solution(object): def twoSum(self, nums, target): \u0026quot;\u0026quot;\u0026quot; :type nums: List[int] :type target: int :rtype: List[int] \u0026quot;\u0026quot;\u0026quot; seen={} for i,num1 in enumerate(nums): num2=target-num1 if num2 in seen : return [seen[num2],i] seen[num1]=i O(nlogn):\nclass Solution { public: vector\u0026lt;int\u0026gt; twoSum(vector\u0026lt;int\u0026gt;\u0026amp; nums, int target) { map\u0026lt;int, int\u0026gt; s; // key = num, value = index for(int i = 0; i \u0026lt; nums.size(); i++) { int complement = target - nums[i]; if(s.find(complement) != s.end()) { return {s[complement], i}; } s[nums[i]] = i; } return {}; } }; O(n):\nclass Solution { public: vector\u0026lt;int\u0026gt; twoSum(vector\u0026lt;int\u0026gt;\u0026amp; nums, int target) { unordered_map\u0026lt;int, int\u0026gt; s; for(int i = 0; i \u0026lt; nums.size(); i++) { int complement = target - nums[i]; if(s.find(complement) != s.end()) { return {s[complement], i}; } s[nums[i]] = i; } return {}; } }; 数据规模对应的时间复杂度\n2.两数相加(基于链表的倒序存储) 思路分别计算两个数的大小，然后相加，最后用链表存储： 点击展开 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -\u0026gt; Optional[ListNode]: length1 = 0 num1 = 0 while l1: num1 += l1.val * (10 ** length1) length1 += 1 l1 = l1.next length2 = 0 num2 = 0 while l2: num2 += l2.val * (10 ** length2) length2 += 1 l2 = l2.next num3 = num1 + num2 result = ListNode(0) cur = result if num3 == 0: return ListNode(0) while num3 \u0026gt;= 1: cur.next = ListNode(num3 % 10) cur = cur.next num3 //= 10 return result.next 上述存在的问题在于，直接两数相加会存在溢出风险，可以采用逐位相加的思路： # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -\u0026gt; Optional[ListNode]: dummy = ListNode(0) cur = dummy carry = 0 while l1 or l2 or carry: v1 = l1.val if l1 else 0 v2 = l2.val if l2 else 0 s = v1 + v2 + carry cur.next = ListNode(s % 10) carry = s // 10 cur = cur.next if l1: l1 = l1.next if l2: l2 = l2.next return dummy.next Note 需要注意：\n两条链表有长有短，在较短的链表前面补 0，方便相加； 每一位计算的同时需要考虑上一位的进位问题，而当前位计算结束后同样需要更新进位值； 如果两个链表全部遍历完毕后，进位值为 1，则在新链表最前方添加节点 1； 本题需要掌握的链表的写法包括：\n链表的快速建立和初始化： nums = [1,2,3,4] dummy = ListNode(0) cur = dummy for n in nums: cur.next = ListNode(n) cur = cur.next head = dummy.next 链表的遍历： cur = head while cur: print(cur.val) cur = cur.next 3.相交链表(哈希/双指针/链表) 双重while循环O(m*n)超时： 点击展开 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def getIntersectionNode( self, headA: ListNode, headB: ListNode ) -\u0026gt; Optional[ListNode]: headB_head = headB while headA: while headB: if headA != headB: headB = headB.next else: return headB headA = headA.next headB = headB_head return None 可以采用哈希，提高检索效率O(m+n)： 点击展开 class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -\u0026gt; Optional[ListNode]: setA = set() while headA: setA.add(headA) headA = headA.next while headB: if headB in setA: return headB headB = headB.next return None 也可以采用双指针O(m+n)，关键弄懂指针怎么移动的——a+c+b=b+c+a 点击展开 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -\u0026gt; Optional[ListNode]: PA=headA PB=headB while PA!=PB: if PA: PA=PA.next else: PA=headB if PB: PB=PB.next else: PB=headA return PA 4.反转链表(递归/链表) 递归写法： 点击展开 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def digui(self, cur: Optional[ListNode], pre: Optional[ListNode]) -\u0026gt; Optional[ListNode]: # 递归终止：cur为空，返回新的头节点 if not cur: return pre # 保存下一节点 nxt = cur.next # 反转指针 cur.next = pre # 递归处理下一个节点 return self.digui(nxt, cur) def reverseList(self, head: Optional[ListNode]) -\u0026gt; Optional[ListNode]: return self.digui(head, None) 迭代写法： 点击展开 class Solution: def reverseList(self, head: Optional[ListNode]) -\u0026gt; Optional[ListNode]: prev = None cur = head while cur: nxt = cur.next cur.next = prev prev = cur cur = nxt return prev 5.回文链表(双指针/链表) 双指针O(n)： 点击展开 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def isPalindrome(self, head: Optional[ListNode]) -\u0026gt; bool: cur = head arr = [] # 将链表存入数组 while cur: arr.append(cur.val) cur = cur.next left = 0 right = len(arr) - 1 # 双指针判断回文 while left \u0026lt; right: if arr[left] != arr[right]: return False left += 1 right -= 1 return True DAY 2 (滑动窗口专题——定长滑动窗口) 定长滑动窗口模板 for right in range(len(nums)): # 1 进入窗口 add(nums[right]) # 2 窗口超过k if right \u0026gt;= k: remove(nums[right-k]) # 3 窗口大小=k时更新答案 if right \u0026gt;= k-1: update() 1456. 定长子串中元音的最大数目 643. 子数组最大平均数 I 1343. 大小为 K 且平均值大于等于阈值的子数组数目 2090. 半径为 k 的子数组平均值 2379. 得到 K 个黑块的最少涂色次数 2841. 几乎唯一子数组的最大和(结合哈希表) 点击展开 from collections import defaultdict class Solution(object): def maxSum(self, nums, m, k): \u0026quot;\u0026quot;\u0026quot; :type nums: List[int] :type m: int :type k: int :rtype: int 题意： 找到长度为 k 的子数组，使得其中不同元素个数 \u0026gt;= m， 并返回该子数组的最大和。 \u0026quot;\u0026quot;\u0026quot; # 记录窗口中每个元素出现的次数 freq = defaultdict(int) # 当前窗口的元素和 window_sum = 0 # 记录满足条件的最大和 max_sum = 0 for i in range(len(nums)): # 1. 右边界进入窗口 freq[nums[i]] += 1 window_sum += nums[i] # 2. 如果窗口超过 k，需要移除左边元素 if i \u0026gt;= k: left_value = nums[i - k] window_sum -= left_value freq[left_value] -= 1 # 如果该元素数量变为0，删除该key # 保证 len(freq) 表示窗口中的 distinct 数量 if freq[left_value] == 0: del freq[left_value] # 3. 当窗口大小达到 k 时，判断是否满足 distinct \u0026gt;= m if i \u0026gt;= k - 1 and len(freq) \u0026gt;= m: max_sum = max(max_sum, window_sum) return max_sum 2461. 长度为 K 子数组中的最大和 1423. 可获得的最大点数 3679. 使库存平衡的最少丢弃次数(结合贪心) 点击展开 from collections import defaultdict from typing import List class Solution: def minArrivalsToDiscard(self, arrivals: List[int], w: int, m: int) -\u0026gt; int: \u0026quot;\u0026quot;\u0026quot; arrivals : 到达的事件序列 w : 滑动窗口大小 m : 每个值在窗口内最多允许出现的次数 目标： 在任何长度为 w 的窗口中，每个值最多出现 m 次。 如果超过 m 次，就需要丢弃当前到达的元素。 返回最少需要丢弃的数量。 \u0026quot;\u0026quot;\u0026quot; # 记录当前窗口中每个值的出现次数 freq = defaultdict(int) # 标记某个位置是否被丢弃 discarded = [0] * len(arrivals) # 最少丢弃次数 discard_count = 0 for i in range(len(arrivals)): # 1. 当前元素进入窗口 value = arrivals[i] freq[value] += 1 # 2. 如果窗口超过 w，需要移除 i-w 位置的元素 if i \u0026gt;= w: left_index = i - w # 只有当该元素没有被丢弃时，才需要减少频率 if discarded[left_index] != 1: freq[arrivals[left_index]] -= 1 # 3. 如果当前元素出现次数超过 m，需要丢弃 if freq[value] \u0026gt; m: # 回退刚刚加入的频率 freq[value] -= 1 # 标记当前位置为丢弃 discarded[i] = 1 # 丢弃计数 +1 discard_count += 1 return discard_count 1052. 爱生气的书店老板 DAY 3 (滑动窗口专题——不定长滑动窗口) 不定长滑动窗口模板 for right: add() while invalid: remove() update() 3. 无重复字符的最长子串 点击展开 from collections import defaultdict class Solution(object): def lengthOfLongestSubstring(self, s): window = defaultdict(int) left = 0 res = 0 for right in range(len(s)): c = s[right] window[c] += 1 while window[c] \u0026gt; 1: d = s[left] window[d] -= 1 left += 1 res = max(res, right - left + 1) return res 3090. 每个字符最多出现两次的最长子字符串 1493. 删掉一个元素以后全为 1 的最长子数组 3634. 使数组平衡的最少移除数目 1208. 尽可能使字符串相等 904. 水果成篮 1695. 删除子数组的最大得分 2958. 最多 K 个重复元素的最长子数组 2024. 考试的最大困扰度 1004. 最大连续1的个数 III ","permalink":"https://onedayoneday.xin/posts/leetcode/","summary":"\u003ch2 id=\"刷题网站\"\u003e刷题网站：\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://leetcode.cn/discuss/post/3141566/\"\u003eLeetCode大神_灵茶山艾府\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://leetcode.cn/studyplan/top-100-liked/\"\u003eLeetCode_Hot100\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"python常用数据结构\"\u003epython常用数据结构：\u003c/h2\u003e\n\n\n\n\u003cdetails class=\"collapse-block\" \u003e\n  \u003csummary markdown=\"span\"\u003e点击展开：Python常用数据结构及其基本操作\u003c/summary\u003e\n  \u003cdiv class=\"collapse-content\"\u003e\n    \u003cpre\u003e\u003ccode class=\"language-python\"\u003e\u0026quot;\u0026quot;\u0026quot;\nPython 常用数据结构（对应 C++ STL）及基本操作\n================================================\nC++              Python\n-------------------------\nvector           list\nstack            list\nqueue            collections.deque\nunordered_map    dict\nunordered_set    set\n\u0026quot;\u0026quot;\u0026quot;\n# ==========================================================\n# 1. 数组 / 动态数组\n# C++: vector\n# Python: list\n# ==========================================================\narr = [1, 2, 3]        # 创建数组\n# 插入元素\narr.append(4)          # 尾部插入 O(1)\n# 在指定位置插入\narr.insert(1, 10)      # index=1 插入 10  -\u0026gt; O(n)\n# 删除尾部\narr.pop()              # 删除最后一个元素 O(1)\n# 删除指定位置\narr.pop(1)             # 删除 index=1\n# 修改元素\narr[0] = 100\n# 查找元素\nprint(arr[1])\n# 遍历数组\nfor x in arr:\n    print(x)\n# ==========================================================\n# 2. 栈 (Stack)\n# C++: stack\n# Python: list\n# ==========================================================\nstack = []\n# 入栈 push\nstack.append(1)\nstack.append(2)\nstack.append(3)\n# 查看栈顶\nprint(stack[-1])\nstack.top()\n# 出栈 pop\nstack.pop()\n# 判断是否为空\nif not stack:\n    print(\u0026quot;stack empty\u0026quot;)\n# ==========================================================\n# 3. 队列 (Queue)\n# C++: queue\n# Python: collections.deque\n# ==========================================================\nfrom collections import deque\nq = deque()\n# 入队\nq.append(1)\nq.append(2)\nq.append(3)\n# 出队\nq.popleft()\n# 查看队首\nprint(q[0])\n# 查看队尾\nprint(q[-1])\n# BFS常用\nwhile q:\n    node = q.popleft()\n# ==========================================================\n# 4. 哈希表 / 字典\n# C++: unordered_map\n# Python: dict\n# ==========================================================\nmp = {}\n# 插入\nmp[\u0026quot;a\u0026quot;] = 1\nmp[\u0026quot;b\u0026quot;] = 2\n# 修改\nmp[\u0026quot;a\u0026quot;] = 100\n# 查询\nprint(mp[\u0026quot;a\u0026quot;])\n# 判断key存在\nif \u0026quot;a\u0026quot; in mp:\n    print(\u0026quot;exist\u0026quot;)\n# 删除\ndel mp[\u0026quot;a\u0026quot;]\n# 遍历key\nfor k in mp:\n    print(k)\n# 遍历key-value\nfor k, v in mp.items():\n    print(k, v)\n# ==========================================================\n# 5. 集合\n# C++: unordered_set\n# Python: set\n# ==========================================================\ns = set()\n# 插入\ns.add(1)\ns.add(2)\ns.add(3)\n# 删除\ns.remove(2)\n# 删除（如果不存在不会报错）\ns.discard(10)\n# 查询\nif 1 in s:\n    print(\u0026quot;exist\u0026quot;)\n# 遍历\nfor x in s:\n    print(x)\n# ==========================================================\n# 6. 初始化技巧（刷题常用）\n# ==========================================================\n# 初始化数组\narr = [0] * 10\n# 初始化二维数组\ngrid = [[0]*5 for _ in range(5)]\n# 初始化dict\nmp = {\u0026quot;a\u0026quot;: 1, \u0026quot;b\u0026quot;: 2}\n# 初始化set\ns = {1,2,3}\n# 初始化队列\nq = deque([1,2,3])\n# ==========================================================\n# 7. 常见复杂度总结\n# ==========================================================\n\u0026quot;\u0026quot;\u0026quot;\nlist\n----\nappend      O(1)\npop()       O(1)\ninsert      O(n)\n访问        O(1)\n\nstack\n-----\npush        O(1)\npop         O(1)\n\ndeque\n-----\nappend      O(1)\npopleft     O(1)\n\ndict\n----\ninsert      O(1)\nfind        O(1)\ndelete      O(1)\n\nset\n---\ninsert      O(1)\nfind        O(1)\ndelete      O(1)\n\u0026quot;\u0026quot;\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\n  \u003c/div\u003e\n\u003c/details\u003e\n\n\u003ch2 id=\"day-1\"\u003eDAY 1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2\u0026amp;envId=top-100-liked\"\u003e1.两数之和\u003c/a\u003e\nO(n^2):\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode class=\"language-python\"\u003eclass Solution(object):\n    def twoSum(self, nums, target):\n        \u0026quot;\u0026quot;\u0026quot;\n        :type nums: List[int]\n        :type target: int\n        :rtype: List[int]\n        \u0026quot;\u0026quot;\u0026quot;\n        for i,num1 in enumerate(nums):\n            if target-num1 in nums[i+1:]:\n                j=nums[i+1:].index(target-num1)+1+i\n                return [i,j]\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e哈希表O(n):\u003c/p\u003e","title":"LeetCode"},{"content":"2026年2月16日 ✅ Todo 开始Leecode刷题和写题解 开始swift训练的环境配置和数据准备工作 鹏北海，风朝阳，又携书剑路茫茫。 明年此日青云去，却笑人间举子忙。 2026年2月8日-2026年2月15日 （Reset) ✅ Done noting for myself. 2026年2月7日（Sii-Day 7） ✅ Todo 完成微调技术文档，开始强化学习训练 完成Ai-store 相关任务 把所有的夜归还给星河， 把所有春光归还给疏疏篱落， 把所有的慵懒沉迷与不前，归还给过去的我。 明日之我，胸中有丘壑，立马振山河。 ✅ Done 完成微调技术文档，开始强化学习训练 完成Ai-store 相关任务 今天主要还是在体验吧，确实也弄懂不少东西，完成了swift.md初稿，明天继续加油，争取完成任务，早日迈入强化学习的大门。\n再次化身压榨的资本家\n2026年2月6日（Sii-Day 6） ✅ Todo 完成年终总结ppt，年终组会 ✅ Done 完成年终总结ppt，年终组会 今天年终组会，算是完成了初稿版的年终总结ppt。\n不腐烂在这里，是对自己最大的尊重。\n没戴眼镜，看不清对岸的风景，就像我看不清我的未来一样\n2026年2月5日（Sii-Day 5） ✅ Todo 完成年终总结ppt 为天地立心，为生民立命，为往圣继绝学，为万世开太平。 ✅ Done 完成年终总结ppt 完成了一大半，明天继续加油。\n感谢所有在我人生天色未明时出现的提灯人。\n2026年2月4日（Sii-Day 4） ✅ Todo 年终总结框架 完成Qwen-2.5-7B-VL BaseLine 拿破仑一世，法国人的皇帝 ✅ Done 年终总结框架 完成Qwen-2.5-7B-VL BaseLine swift推理命令参考（结合vllm）：\nNPROC_PER_NODE=4 \\ CUDA_VISIBLE_DEVICES=0,1,2,3 \\ swift infer \\ --model Qwen/Qwen2.5-VL-7B-Instruct \\ --adapters /root/shared-nvme/LDPolypVideo/lora_output/v0-20260203-211345/checkpoint-10330 \\ --infer_backend vllm \\ --val_dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_test_1500.jsonl \\ --result_path /root/shared-nvme/LDPolypVideo/preds.jsonl \\ --stream false \\ --max_new_tokens 2048 \\ --vllm_gpu_memory_utilization 0.4 \\ --vllm_max_model_len 4096 \\ --vllm_tensor_parallel_size 4 \\ --max_batch_size 1 \\ --write_batch_size 32 今天有组会，没上强度，明天上强度，希望我可以一天速通20多页的ppt。\n希望明年是创智大楼的新年\n2026年2月3日（Sii-Day 3） ✅ Todo 开始训练Qwen-2.5-7B-VL 修改GAN-for-thin-film的代码，重跑，画图 皇帝又站在了巴黎的中心！ ✅ Done 开始训练Qwen-2.5-7B-VL 修改GAN-for-thin-film的代码，重跑，画图 # # 算是鼓起勇气从头再来了吧，真是万事开头难，从头再来更难 swift训练命令参考（留作备份，这周末出一版完整的swift命令教程）：\nCUDA_VISIBLE_DEVICES=0,1,2,3 \\ torchrun --nproc_per_node=4 -m swift.cli.sft \\ --model Qwen/Qwen2.5-VL-7B-Instruct \\ --dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_train.jsonl \\ --val_dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_test_1500.jsonl \\ --train_type lora \\ --num_train_epochs 1 \\ --eval_steps 1000 \\ --save_total_limit 3 \\ --per_device_train_batch_size 3 \\ --attn_impl flash_attention_2 \\ --dataloader_num_workers 30 \\ --output_dir /root/shared-nvme/LDPolypVideo/lora_output 再次被swift搞得怀疑人生，但是最终还是在DJ学长的帮助下，成功让模型跑起来了。# # 喜极而泣，感觉很多时候要是能有这样的学长或者师兄可以挺身而出，我真的会哭死的 之前埋的雷爆了，不知道为啥，代码在服务器4090上跑的会报错，主要是nan或者inf数值溢出的问题，但是在本机（4060Ti）或者服务器5090上跑不会有问题，本来以为是pytorch版本或者cuda版本的问题，但是服务器5090和4090的pytorch版本或者cuda版本是一样的，初步怀疑是随机数或者数值精度导致的溢出，先在能跑的卡上跑，埋个雷，以后有时间了来修。\n今天有好长一段时间我都在反思，进组快一年了，我真的得到成长了吗？毫无疑问，是有的，但是代价也是巨大的，因为很多时候没有师兄师姐可以在我遇到问题的时候伸出援手（因为他们也不懂我面临的困境），所以我需要很长很长的时间去试错，一遍又一遍，（这里要着重感谢GPT老师，没有GPT老师，我估计早被淹死在了BUG的海洋），这样的囚徒困境磨灭了我对科研的热情，至少是当前领域的热情，我真的很希望，可以在一个能够在师兄师姐的帮助下成长的课题组，而不是要靠自己独自摸索。希望我的博士生涯不会是一个人艰难探索的旅程# # hhh，当然除了小敏以外，还希望能有其余同路人 也希望，我可以尽早说出那句，轻舟已过万重山。\n算力压榨到极致真的超级爽（hhhh，万恶的资本家心态）\n2026年2月2日（Sii-Day 2） ✅ Todo 修改GAN-for-thin-film的代码，重跑，画图 列好年终总结的框架 准备好optogpt的训练代码和数据，上传服务器 如今，山中湍急的溪流早已扩展为大江，装满世界各地宝藏的大船在江面上行驶。大江涌向海洋，即将与世界上所有的水汇合...... pip 清华镜像：\npip install ms-swift -i https://pypi.tuna.tsinghua.edu.cn/simple huggingface镜像三件套：\nexport HF_ENDPOINT=https://hf-mirror.com export HF_HUB_DISABLE_XET=1 export HF_HUB_ENABLE_HF_TRANSFER=1 ✅ Done 修改GAN-for-thin-film的代码，重跑，画图 列好年终总结的框架 准备好optogpt的训练代码和数据，上传服务器 只能说配环境真是一生之敌，以及微调也是，真是连调库侠也不让我好好当。立志先做好调库侠，我一定要征服swift和llmfactory。\n在北杨，真的会在吗？\n2026年2月1日（Sii-Day 1） ✅ Todo 确认项目列表，准备数据、代码和训练资源 完成Ai-Store情感分析的TS代码 修改GAN-for-thin-film的代码，重跑，画图 列好年终总结的框架 晚安，布里昂。顺便说一句，明晚我们将要睡到卢森堡宫去啦！ ✅ Done 确认项目列表，准备数据、代码和训练资源 完成Ai-Store情感分析的TS代码 修改GAN-for-thin-film的代码，重跑，画图 列好年终总结的框架 Warning 规则怪谈：不要听信AI做git合并，否则会变得不幸。 只能说，想得很多，能做完的很少，但是还是加班到了三点，也还行，至少没有过于摸鱼，只是被git分支合并折磨了三个多小时，还有sb的codex，一直用端口转发糊弄我，我都想明白了，还在骗我，最后发现是config读取配置有问题，无敌啦。没事哒没事哒，下次不合并啦，下次不信端口转发啦。\n好在今天总算是大概看得懂那一堆代码在写什么了，也是第一次为这么大的一个项目提交了自己的代码，也不知道明天会不会因为屎山代码被喷，没事哒没事哒，我是勇敢的小羊。\n今天顺带梳理了到复旦以来所有写过的科研项目代码，发现特别混乱，属于是这一坨，那一坨，方法上也是东试试，西试试，其实也反映了我内心特别混乱的状态吧，混乱的代码管理，也反映着我其实并没有在做自己真正追求的事情，也不是一一步一个脚印的去做，emmm，希望未来一个月，可以有所改观吧，代码管理是这样，精神状态管理也应该这样。\n勇敢OneDay，不怕困难\n相比于湾谷大楼的凌晨，我更喜欢创智大楼的凌晨\n2026年1月31日 从周三开始到今天打了三天游戏，更多的感受是像脱敏治疗，一贯的原则是，既然想打，那就一口气打到不想打为止。今天又看了很多关于上岸软微的帖子，每一次看都是深深地震撼。千言万语如鲠在喉，最后可能也只会说一句： 谁终将声震人间，必长久深自缄默； 谁终将点燃闪电，必长久如云漂泊。 软微圣经\n2026年1月30日 半夜读到了一篇知乎帖子，睡不着冒雨跑来工位上码字，帖子原文见 AI科研一年的碎碎念 - 林正的文章 - 知乎。 其实我一直对于自己想要走的路持悲观态度，倒不是因为非常难，而是因为我太想要去走这条路，过于强烈的欲望必然导致对于落空的极度恐惧，我很想逃离当前的处境，Sii可能是我唯一的出路，但是我已经在脑子里假设了因为无数种原因最后失去这个救命稻草。看到有着类似境遇的博主最后成功走出了属于自己的路，除了激动外，很多的还是反思，我的路究竟在哪里呢？我也不知道什么时候我可以不用向别人寻求出路，而是向自己寻求方向。\n事实证明，很久没有码字了，水平烂了不少，实际上写这个还有一个原因，因为今天打了一天的游戏，但是我没跟小敏说hhhh，说给她看博客，但是实际上现在才堪堪下笔hhhh（附上照片赔罪）。其实没有那么喜欢打游戏，只是不用去想很多我改变不了的事情，感觉就像一种精神上的放空，人际关系上的\u0026quot;失踪\u0026quot;一样，emmm，也希望后面我可以不用这种\u0026quot;两耳不闻窗外事\u0026quot;的方式来逃避很多事情。\n晚上还把自动推送新博客的邮件功能做好了，因为之前接触过的邮箱的SMTP，所以也算是比较快了，但是GitHub Actions还是第一次听说。\n也不知道到这个系列能不能写下去，我希望可以一直写下去，至少在我还没有彻底失去转向的希望前。\n戴champion帽，举champion杯\n小敏不要生气啦，要开心呀\n","permalink":"https://onedayoneday.xin/posts/oneday/","summary":"\u003ch2 id=\"2026年2月16日\"\u003e2026年2月16日\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003ch4 id=\"-todo\"\u003e✅ Todo\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 开始Leecode刷题和写题解\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 开始swift训练的环境配置和数据准备工作\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote class=\"quote-center\"\u003e\n  \u003cp class=\"quote-center-content\"\u003e\n鹏北海，风朝阳，又携书剑路茫茫。\n明年此日青云去，却笑人间举子忙。\n\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003ch2 id=\"2026年2月8日-2026年2月15日-reset\"\u003e2026年2月8日-2026年2月15日 （Reset)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003ch4 id=\"-done\"\u003e✅ Done\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput checked=\"\" disabled=\"\" type=\"checkbox\"\u003e noting for myself.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"2026年2月7日sii-day-7\"\u003e2026年2月7日（Sii-Day 7）\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003ch4 id=\"-todo-1\"\u003e✅ Todo\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 完成微调技术文档，开始强化学习训练\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 完成Ai-store 相关任务\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote class=\"quote-center\"\u003e\n  \u003cp class=\"quote-center-content\"\u003e\n把所有的夜归还给星河，\n把所有春光归还给疏疏篱落，\n把所有的慵懒沉迷与不前，归还给过去的我。\n明日之我，胸中有丘壑，立马振山河。\n\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cblockquote\u003e\n\u003ch4 id=\"-done-1\"\u003e✅ Done\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 完成微调技术文档，开始强化学习训练\u003c/li\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 完成Ai-store 相关任务\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e今天主要还是在体验吧，确实也弄懂不少东西，完成了\u003ca href=\"/posts/swift\"\u003eswift.md\u003c/a\u003e初稿，明天继续加油，争取完成任务，早日迈入强化学习的大门。\u003c/p\u003e\n\u003ca data-fancybox=\"gallery\" href=\"/images/oneday/gpu_8x4090.png\"\u003e\n\u003cfigure class=\"align-center \"\u003e\u003cimg loading=\"lazy\" decoding=\"async\" src=\"/images/optimized/gpu_8x4090-1160-b7475b2dcd9c.webp#center\"\n         srcset=\"/images/optimized/gpu_8x4090-640-85e1b9b9d8f3.webp 640w, /images/optimized/gpu_8x4090-1160-b7475b2dcd9c.webp 1160w\"\n         sizes=\"(max-width: 768px) calc(100vw - 48px), 720px\"\n         alt=\"再次化身压榨的资本家\" width=\"1160\" height=\"1236\"/\u003e \u003cfigcaption\u003e\n            \u003cp\u003e再次化身压榨的资本家\u003c/p\u003e\n        \u003c/figcaption\u003e\n\u003c/figure\u003e\n\u003c/a\u003e\n\n\u003ch2 id=\"2026年2月6日sii-day-6\"\u003e2026年2月6日（Sii-Day 6）\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003ch4 id=\"-todo-2\"\u003e✅ Todo\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput disabled=\"\" type=\"checkbox\"\u003e 完成年终总结ppt，年终组会\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003ch4 id=\"-done-2\"\u003e✅ Done\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cinput checked=\"\" disabled=\"\" type=\"checkbox\"\u003e 完成年终总结ppt，年终组会\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e今天年终组会，算是完成了初稿版的年终总结ppt。\u003c/p\u003e\n\u003cp\u003e不腐烂在这里，是对自己最大的尊重。\u003c/p\u003e\n\u003ca data-fancybox=\"gallery\" href=\"/images/oneday/shanghai.jpg\"\u003e\n\u003cfigure class=\"align-center \"\u003e\u003cimg loading=\"lazy\" decoding=\"async\" src=\"/images/oneday/shanghai.jpg#center\"\n         srcset=\"/images/optimized/shanghai-640-35caea029f31.webp 640w, /images/optimized/shanghai-1280-bf6710f1894b.webp 1280w, /images/oneday/shanghai.jpg 1702w\"\n         sizes=\"(max-width: 768px) calc(100vw - 48px), 720px\"\n         alt=\"没戴眼镜，看不清对岸的风景，就像我看不清我的未来一样\" width=\"1702\" height=\"1276\"/\u003e \u003cfigcaption\u003e\n            \u003cp\u003e没戴眼镜，看不清对岸的风景，就像我看不清我的未来一样\u003c/p\u003e","title":"少年心事当拏云"},{"content":" 目标：统一 Hugo 博客 Markdown 写作规范，便于维护，并让 Codex/AI 可稳定自动排版与美化。\n1. 代码块规范（必须） 所有代码使用 fenced code block，并标注语言。 命令行统一用 bash，输出统一用 text，禁止混写。 多行代码逐行书写，保证可复制、可阅读。 示例（命令）：\nexample command curl -I https://github.com 示例（输出）：\nHTTP/2 200 server: github.com 2. Hugo Front Matter 规范（必须） 2.1 YAML 表头（必填） 每篇文章开头必须包含 YAML Front Matter，推荐模板：\n--- title: \u0026quot;xxx\u0026quot; weight: 1 slug: \u0026quot;xxxx\u0026quot; date: 2026-01-19 lastmod: 2026-01-23 categories: [\u0026quot;LLM\u0026quot;] tags: [\u0026quot;AI\u0026quot;, \u0026quot;多模态\u0026quot;] draft: false description: \u0026quot;一句话概括文章内容，用于列表摘要与 SEO\u0026quot; ShowToc: true TocOpen: true math: true --- 2.2 目录结构（推荐固定） content/posts/ # 博客文章 content/notes/ # 学习笔记（可选） content/projects/ # 项目（可选） 文章文件名统一：content/posts/英文-短横线.md。\n2.3 Page Bundle（推荐） 用 Page Bundle 管理图片与资源，示例结构：\ncontent/posts/mllm-intro/ ├─ index.md ├─ fig1.png └─ fig2.jpg Markdown 引图：![架构图](fig1.png)。\n2.4 Shortcodes（建议规范使用） 嵌入 Bilibili/YouTube： 内嵌 PDF（需主题支持 iframe）： \u0026lt; iframe src=\u0026quot;/files/paper.pdf\u0026quot; height=\u0026quot;800\u0026quot; \u0026gt; 3. 标题层级规范 3.1 层级规则 正文从 ## 开始。 禁止跳级：## 后不可直接 ####。 最大层级建议到 ####。 3.2 标题命名建议 标题简短明确，避免“碎片化标题”。 同一篇文章不要出现重复标题。 4. 图片规范 4.1 命名规范（必须） 图片文件名必须为英文小写 + 短横线：mllm-architecture.png。 4.2 插入格式（建议带 caption） ![Llama2 架构示意图](/img/llama2-architecture.png) *图 1：Llama2 的 Decoder-only 结构。* 5. 链接规范（建议） 5.1 普通链接 [GitHub](https://github.com) 5.2 引用式链接（推荐重复引用时使用） 论文链接：[Attention Is All You Need][attn] [attn]: https://arxiv.org/abs/1706.03762 6. 数学公式规范 6.1 行内公式 $Q=\\frac{\\lambda_0}{\\Delta\\lambda}$ 6.2 独立公式块 $$ Q=\\frac{\\lambda_0}{\\text{FWHM}} $$ 7. 引用与参考文献 文章末尾建议加入：\n## References 1. Vaswani et al., 2017. *Attention Is All You Need*. https://arxiv.org/abs/1706.03762 ","permalink":"https://onedayoneday.xin/guide/style/blog_style/","summary":"\u003chr\u003e\n\u003cblockquote\u003e\n\u003cp\u003e目标：统一 Hugo 博客 Markdown 写作规范，便于维护，并让 Codex/AI 可稳定自动排版与美化。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-代码块规范必须\"\u003e1. 代码块规范（必须）\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e所有代码使用 fenced code block，并标注语言。\u003c/li\u003e\n\u003cli\u003e命令行统一用 \u003ccode\u003ebash\u003c/code\u003e，输出统一用 \u003ccode\u003etext\u003c/code\u003e，禁止混写。\u003c/li\u003e\n\u003cli\u003e多行代码逐行书写，保证可复制、可阅读。\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e示例（命令）：\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003eexample command\ncurl -I https://github.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e示例（输出）：\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-text\"\u003eHTTP/2 200\nserver: github.com\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2 id=\"2-hugo-front-matter-规范必须\"\u003e2. Hugo Front Matter 规范（必须）\u003c/h2\u003e\n\u003ch3 id=\"21-yaml-表头必填\"\u003e2.1 YAML 表头（必填）\u003c/h3\u003e\n\u003cp\u003e每篇文章开头必须包含 YAML Front Matter，推荐模板：\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-yaml\"\u003e---\ntitle: \u0026quot;xxx\u0026quot;\nweight: 1\nslug: \u0026quot;xxxx\u0026quot;\ndate: 2026-01-19\nlastmod: 2026-01-23\ncategories: [\u0026quot;LLM\u0026quot;]\ntags: [\u0026quot;AI\u0026quot;, \u0026quot;多模态\u0026quot;]\ndraft: false\ndescription: \u0026quot;一句话概括文章内容，用于列表摘要与 SEO\u0026quot;\nShowToc: true\nTocOpen: true\nmath: true\n---\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"22-目录结构推荐固定\"\u003e2.2 目录结构（推荐固定）\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-text\"\u003econtent/posts/     # 博客文章\ncontent/notes/     # 学习笔记（可选）\ncontent/projects/  # 项目（可选）\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e文章文件名统一：\u003ccode\u003econtent/posts/英文-短横线.md\u003c/code\u003e。\u003c/p\u003e","title":"Blog Style"},{"content":"服务器基本配置 镜像相关 pip镜像网站：\n#清华镜像源安装示例 pip install ms-swift -i https://pypi.tuna.tsinghua.edu.cn/simple huggingface镜像配置三件套：\nexport HF_ENDPOINT=https://hf-mirror.com export HF_HUB_DISABLE_XET=1 export HF_HUB_ENABLE_HF_TRANSFER=1 cache数据相关 huggingface/modelscope:\n#临时 export HF_HOME=~/shared-nvme/hf_home export TRANSFORMERS_CACHE=~/shared-nvme/hf_cache export HF_DATASETS_CACHE=~/shared-nvme/hf_datasets export HUGGINGFACE_HUB_CACHE=~/shared-nvme/hf_cache export MODELSCOPE_CACHE=~/shared-nvme/modelscope export MS_CACHE=~/shared-nvme/ms_cache export TORCH_HOME=~/shared-nvme/torch_cache export TRITON_CACHE_DIR=~/shared-nvme/torch_cache export PIP_CACHE_DIR=~/shared-nvme/torch_cache #永久 cat \u0026lt;\u0026lt; 'EOF' \u0026gt;\u0026gt; ~/.bashrc # ===== AI CACHE REDIRECT ===== export HF_HOME=~/shared-nvme/hf_home export TRANSFORMERS_CACHE=~/shared-nvme/hf_cache export HF_DATASETS_CACHE=~/shared-nvme/hf_datasets export HUGGINGFACE_HUB_CACHE=~/shared-nvme/hf_cache export MODELSCOPE_CACHE=~/shared-nvme/modelscope export MS_CACHE=~/shared-nvme/ms_cache export TORCH_HOME=~/shared-nvme/torch_cache export TRITON_CACHE_DIR=~/shared-nvme/torch_cache export PIP_CACHE_DIR=~/shared-nvme/torch_cache EOF source ~/.bashrc 验证是否成功：\necho $HF_HOME 应该显示：\n/root/shared-nvme/hf_home Info 需要注意的是，我们之所以改变模型和数据默认存储位置是，为了在加快训练过程中数据到CPU内存的加载速度，所以需要把被加载的数据放在读取速度更快的地方，例如NVMe。\n类型 速度 容量 成本 作用 HDD(机械盘) 慢 大 便宜 长期存 SATA SSD(固态硬盘) 中 大 中 常规 NVMe 快 中 贵 训练数据 RAM(内存条) 更快 小 更贵 CPU 工作 VRAM(显存) 极快 更小 非常贵 GPU 工作 持久存储（断电还在）（HDD/SATA SSD/NVMe） vs 易失存储（断电就没）（RAM/VRAM） 网络代理相关 需要测试是否可以访问的外网资源：\n#github curl -I https://github.com #huggingface curl -I https://huggingface.co #pypi curl -I https://pypi.org 如果不行，需要配置代理，类似于：\nexport https_proxy=\u0026quot;http://u-UE25Z3:tXGJgV92@10.255.128.102:3128\u0026quot; export http_proxy=\u0026quot;http://u-UE25Z3:tXGJgV92@10.255.128.102:3128\u0026quot; export no_proxy=\u0026quot;127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.paracloud.com,*.paratera.com,*.blsc.cn\u0026quot; SSH相关 安装screen，防止远程意外断连，导致训练中断\n#安装 apt update apt install screen -y #新建一个窗口 screen -S train ## 离开但不关闭（最重要） #按：`Ctrl + A 然后按 D`就会看到： #`[detached]` ## back screen -r train ## 查看当前所有 screen screen -ls ## 强制接管（比如掉线） screen -dr train ## 关闭一个 screen #进入后： exit #专业玩家的使用方式一般会开： screen -S train screen -S eval screen -S debug 每个任务一个。 创建python环境 conda 命令指南： conda env list #查看当前环境 修改 conda 默认环境目录\nconda config --add envs_dirs /root/shared-nvme/conda/envs 查看是否成功：\nconda config --show envs_dirs 应该看到：\nenvs_dirs: #默认安装在第一个文件夹下 - /root/shared-nvme/envs - /root/miniconda3/envs # 旧的通常还在 创建环境（用名字）\nconda create -n oneday python=3.10 激活\n#初次用conda激活需要初始化终端 conda init conda activate oneday Swift python包 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 pip install ms-swift -i https://pypi.tuna.tsinghua.edu.cn/simple 需要注意的是,flash-attention 最好通过whl安装，需要选择对应版本的.whl文件，例如：flash_attn-2.7.4+cu128torch2.10-cp310-cp310-linux_x86_64.whl\n查看系统版本\nuname -m torch版本的命令\npython -c \u0026quot;import torch; print(torch.__version__)\u0026quot; 快速查看\npython - \u0026lt;\u0026lt;EOF import torch,platform,sys print(\u0026quot;python:\u0026quot;,sys.version) print(\u0026quot;torch:\u0026quot;,torch.__version__) print(\u0026quot;cuda :\u0026quot;,torch.version.cuda) print(\u0026quot;arch :\u0026quot;,platform.machine()) EOF whl安装\n#whl文件放置路径为/root/shared-nvme/wheels/ pip install /root/shared-nvme/wheels/flash_attn-xxxx.whl #离线安装 pip install --no-index /root/shared-nvme/wheels/flash_attn-xxxx.whl 训练命令 CUDA_VISIBLE_DEVICES=0,1,2,3 \\ torchrun --nproc_per_node=4 -m swift.cli.sft \\ --model Qwen/Qwen2.5-VL-7B-Instruct \\ --dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_train.jsonl \\ --val_dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_test_1500.jsonl \\ --train_type lora \\ --num_train_epochs 1 \\ --eval_steps 1000 \\ --save_total_limit 3 \\ --per_device_train_batch_size 3 \\ --attn_impl flash_attention_2 \\ --dataloader_num_workers 30 \\ --output_dir /root/shared-nvme/LDPolypVideo/lora_output 推理命令 结合vllm，需要先安装vllm\npip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple NPROC_PER_NODE=4 \\ CUDA_VISIBLE_DEVICES=0,1,2,3 \\ swift infer \\ --model Qwen/Qwen2.5-VL-7B-Instruct \\ --adapters /root/shared-nvme/LDPolypVideo/lora_output/v0-20260203-211345/checkpoint-10330 \\ --infer_backend vllm \\ --val_dataset /root/shared-nvme/LDPolypVideo/ldpolyp_multitask_test_1500.jsonl \\ --result_path /root/shared-nvme/LDPolypVideo/preds.jsonl \\ --stream false \\ --max_new_tokens 2048 \\ --vllm_gpu_memory_utilization 0.4 \\ --vllm_max_model_len 4096 \\ --vllm_tensor_parallel_size 4 \\ --max_batch_size 1 \\ --write_batch_size 32 ","permalink":"https://onedayoneday.xin/guide/swift/","summary":"\u003ch2 id=\"服务器基本配置\"\u003e服务器基本配置\u003c/h2\u003e\n\u003ch3 id=\"镜像相关\"\u003e镜像相关\u003c/h3\u003e\n\u003cp\u003epip镜像网站：\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003e#清华镜像源安装示例\npip install ms-swift -i https://pypi.tuna.tsinghua.edu.cn/simple\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ehuggingface镜像配置三件套：\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003eexport HF_ENDPOINT=https://hf-mirror.com\nexport HF_HUB_DISABLE_XET=1\nexport HF_HUB_ENABLE_HF_TRANSFER=1\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"cache数据相关\"\u003ecache数据相关\u003c/h3\u003e\n\u003cp\u003ehuggingface/modelscope:\u003c/p\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003e#临时\nexport HF_HOME=~/shared-nvme/hf_home \nexport TRANSFORMERS_CACHE=~/shared-nvme/hf_cache \nexport HF_DATASETS_CACHE=~/shared-nvme/hf_datasets \nexport HUGGINGFACE_HUB_CACHE=~/shared-nvme/hf_cache  \nexport MODELSCOPE_CACHE=~/shared-nvme/modelscope \nexport MS_CACHE=~/shared-nvme/ms_cache  \nexport TORCH_HOME=~/shared-nvme/torch_cache \nexport TRITON_CACHE_DIR=~/shared-nvme/torch_cache  \nexport PIP_CACHE_DIR=~/shared-nvme/torch_cache\n\u003c/code\u003e\u003c/pre\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003e#永久\ncat \u0026lt;\u0026lt; 'EOF' \u0026gt;\u0026gt; ~/.bashrc  \n# ===== AI CACHE REDIRECT ===== \nexport HF_HOME=~/shared-nvme/hf_home \nexport TRANSFORMERS_CACHE=~/shared-nvme/hf_cache \nexport HF_DATASETS_CACHE=~/shared-nvme/hf_datasets \nexport HUGGINGFACE_HUB_CACHE=~/shared-nvme/hf_cache  \nexport MODELSCOPE_CACHE=~/shared-nvme/modelscope \nexport MS_CACHE=~/shared-nvme/ms_cache  \nexport TORCH_HOME=~/shared-nvme/torch_cache \nexport TRITON_CACHE_DIR=~/shared-nvme/torch_cache  \nexport PIP_CACHE_DIR=~/shared-nvme/torch_cache  \nEOF\n\nsource ~/.bashrc\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e验证是否成功：\u003c/p\u003e","title":"Swift"},{"content":"2\u0026gt; 简明速查：示例命令需按实际路径/分支/环境替换占位符。\n服务器常用命令 Linux 基本操作 pwd # 查看当前路径 ls # 列出文件 ls -la # 详细列出（含隐藏文件） cd /path/to/dir # 进入目录 mkdir -p xxx # 创建目录（可递归） rm -rf xxx # 删除目录（谨慎） Nano 编辑器 打开文件 nano /etc/nginx/sites-available/oneday_blog nano ~/.bashrc nano /etc/environment 常用快捷键 Ctrl + O：保存（Write Out） Enter：确认文件名 Ctrl + X：退出 Ctrl + W：搜索 Ctrl + K：剪切一行 Ctrl + U：粘贴一行 Hugo 网页一键同步与上线 cd /var/www/oneday_blog \\ \u0026amp;\u0026amp; git pull --recurse-submodules \\ \u0026amp;\u0026amp; git submodule update --init --recursive \\ \u0026amp;\u0026amp; hugo --minify \\ \u0026amp;\u0026amp; systemctl reload nginx 本地预览：\nhugo server -D 代理与 Clash 临时删除代理环境变量 unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY env | grep -i proxy 检查 curl 是否被 curlrc 强制代理 cat /etc/curlrc 2\u0026gt;/dev/null cat ~/.curlrc 2\u0026gt;/dev/null 删除（慎用）：\nsudo rm -f /etc/curlrc rm -f ~/.curlrc Clash/Mihomo 常用 clashctl on clashctl off clashctl status clashctl log clashctl ui 订阅管理（clashsub） clashsub ls clashsub add \u0026quot;订阅链接\u0026quot; clashsub use 1 clashsub update clashsub log 测试 GitHub 访问 curl -I https://github.com --connect-timeout 5 git ls-remote https://github.com/git/git.git | head Git 常用流程 git add . git commit -m \u0026quot;description\u0026quot; git push -u origin main git pull git fetch origin git reset --hard origin/main # 丢弃本地修改，覆盖为远程 main 常见 .gitignore 写法 # A. 忽略指定路径文件夹（仅仓库根目录） public/ checkpoints/ outputs/ # B. 忽略项目下所有同名文件夹（任意层级） **/__pycache__/ **/.ipynb_checkpoints/ **/.pytest_cache/ **/wandb/ # C. 忽略特定文件后缀（全项目） *.log *.tmp # D. 忽略指定路径下某类文件 logs/*.log outputs/**/*.png # E. 仅忽略某个文件 config.yaml .env # F. 忽略全部，但保留某个文件 data/* !data/README.md ","permalink":"https://onedayoneday.xin/guide/command-guide/","summary":"\u003cp\u003e2\u0026gt; 简明速查：示例命令需按实际路径/分支/环境替换占位符。\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"服务器常用命令\"\u003e服务器常用命令\u003c/h2\u003e\n\u003ch3 id=\"linux-基本操作\"\u003eLinux 基本操作\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003epwd                 # 查看当前路径\nls                  # 列出文件\nls -la              # 详细列出（含隐藏文件）\ncd /path/to/dir     # 进入目录\nmkdir -p xxx        # 创建目录（可递归）\nrm -rf xxx          # 删除目录（谨慎）\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3 id=\"nano-编辑器\"\u003eNano 编辑器\u003c/h3\u003e\n\u003ch4 id=\"打开文件\"\u003e打开文件\u003c/h4\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003enano /etc/nginx/sites-available/oneday_blog\nnano ~/.bashrc\nnano /etc/environment\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch4 id=\"常用快捷键\"\u003e常用快捷键\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eCtrl + O\u003c/code\u003e：保存（Write Out）\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eEnter\u003c/code\u003e：确认文件名\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCtrl + X\u003c/code\u003e：退出\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCtrl + W\u003c/code\u003e：搜索\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCtrl + K\u003c/code\u003e：剪切一行\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCtrl + U\u003c/code\u003e：粘贴一行\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"hugo-网页一键同步与上线\"\u003eHugo 网页一键同步与上线\u003c/h3\u003e\n\u003cpre\u003e\u003ccode class=\"language-bash\"\u003ecd /var/www/oneday_blog \\\n  \u0026amp;\u0026amp; git pull --recurse-submodules \\\n  \u0026amp;\u0026amp; git submodule update --init --recursive \\\n  \u0026amp;\u0026amp; hugo --minify \\\n  \u0026amp;\u0026amp; systemctl reload nginx\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e本地预览：\u003c/p\u003e","title":"Command Guide"},{"content":" 速查表：命令均为简化示例，需按实际仓库/分支替换占位符。\n快捷命令（基础） 命令 说明 git init \u0026lt;directory\u0026gt; 在指定目录创建空仓库；省略 \u0026lt;directory\u0026gt; 时初始化当前目录。 git clone \u0026lt;repo\u0026gt; 克隆远程或本地仓库到当前目录。 git config user.name \u0026lt;name\u0026gt; 为当前仓库设置作者名；常用 --global 设置默认值。 git add \u0026lt;path\u0026gt; 将 \u0026lt;path\u0026gt; 的更改加入暂存区；可为文件或目录。 git commit -m \u0026quot;\u0026lt;message\u0026gt;\u0026quot; 提交暂存区快照并写入提交信息。 git status 查看暂存、未暂存、未跟踪文件。 git log 查看提交历史；可叠加其他显示参数。 git diff 对比工作区与暂存区的差异。 撤销与清理 命令 说明 git revert \u0026lt;commit\u0026gt; 生成新提交，反向应用 \u0026lt;commit\u0026gt; 的修改。 git reset \u0026lt;file\u0026gt; 将 \u0026lt;file\u0026gt; 移出暂存区，工作区保持不变。 git clean -n 预览将被删除的未跟踪文件；执行删除用 git clean -f。 重写历史 命令 说明 git commit --amend 替换上一条提交（内容或信息）；避免改动已推送的提交。 git rebase \u0026lt;base\u0026gt; 将当前分支变基到 \u0026lt;base\u0026gt;（提交/分支/标签/引用）。 git reflog 查看本地 HEAD 与引用的移动记录；可用于找回丢失的提交。 分支管理 命令 说明 git branch 列出本地分支；加 \u0026lt;branch\u0026gt; 创建新分支。 git checkout -b \u0026lt;branch\u0026gt; 创建并切换到 \u0026lt;branch\u0026gt;；去掉 -b 仅切换。 git merge \u0026lt;branch\u0026gt; 将 \u0026lt;branch\u0026gt; 合并到当前分支。 远程仓库 命令 说明 git remote add \u0026lt;name\u0026gt; \u0026lt;url\u0026gt; 添加远程别名。 git fetch \u0026lt;remote\u0026gt; [branch] 从远程获取全部或指定分支的引用。 git pull \u0026lt;remote\u0026gt; 获取远程当前分支并合并到本地当前分支。 git push \u0026lt;remote\u0026gt; \u0026lt;branch\u0026gt; 推送分支到远程，如不存在则创建。 配置与日志 命令 说明 git config --global user.name \u0026lt;name\u0026gt; 设置全局作者名。 git config --global user.email \u0026lt;email\u0026gt; 设置全局作者邮箱。 git config --global alias.\u0026lt;alias\u0026gt; \u0026quot;\u0026lt;command\u0026gt;\u0026quot; 定义命令别名，例如 alias.glog \u0026quot;log --graph --oneline\u0026quot;。 git config --system core.editor \u0026lt;editor\u0026gt; 设置系统级默认编辑器（如 vi）。 git config --global --edit 打开全局配置文件手动编辑。 git log --\u0026lt;limit\u0026gt; 限制显示提交数量，如 git log -5。 git log --oneline 将每个提交压缩为单行。 git log -p 显示每个提交的完整 diff。 git log --stat 显示修改文件及行数统计。 git log --author=\u0026quot;\u0026lt;pattern\u0026gt;\u0026quot; 按作者过滤提交。 git log --grep=\u0026quot;\u0026lt;pattern\u0026gt;\u0026quot; 按提交信息匹配过滤。 git log \u0026lt;since\u0026gt;..\u0026lt;until\u0026gt; 查看时间/引用范围内的提交。 git log -- \u0026lt;file\u0026gt; 仅显示影响指定文件的提交。 git log --graph --decorate 以文本图展示分支/标签并装饰引用名。 差异、重置与变基 命令 说明 git diff HEAD 比较工作区与上一提交。 git diff --cached 比较暂存区与上一提交。 git reset 重置暂存区为上一提交，保留工作区。 git reset --hard 暂存区与工作区全部回退到上一提交（会丢弃未提交修改）。 git reset \u0026lt;commit\u0026gt; 分支指针回退到 \u0026lt;commit\u0026gt;，暂存区同步，工作区保留。 git reset --hard \u0026lt;commit\u0026gt; 分支、暂存区、工作区全部回退到 \u0026lt;commit\u0026gt;，丢弃之后的修改。 git rebase -i \u0026lt;base\u0026gt; 交互式变基到 \u0026lt;base\u0026gt;，可重排/合并/修改提交。 git pull --rebase \u0026lt;remote\u0026gt; 拉取并基于本地分支变基远程更新（代替 merge）。 推送 命令 说明 git push \u0026lt;remote\u0026gt; --force 强制推送（可能改写远程历史，谨慎使用）。 git push \u0026lt;remote\u0026gt; --all 推送所有本地分支到远程。 git push \u0026lt;remote\u0026gt; --tags 推送所有本地标签；普通 push 不会自动推送标签。 参考资料 https://atlassian.com/git/tutorials https://github.com/LeCoupa/awesome-cheatsheets/blob/master/tools/git.sh 本地 PDF：git_cheat_sheet.pdf ","permalink":"https://onedayoneday.xin/guide/git-command-reference/","summary":"\u003cblockquote\u003e\n\u003cp\u003e速查表：命令均为简化示例，需按实际仓库/分支替换占位符。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch2 id=\"快捷命令基础\"\u003e快捷命令（基础）\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit init \u0026lt;directory\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e在指定目录创建空仓库；省略 \u003ccode\u003e\u0026lt;directory\u0026gt;\u003c/code\u003e 时初始化当前目录。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit clone \u0026lt;repo\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e克隆远程或本地仓库到当前目录。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config user.name \u0026lt;name\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e为当前仓库设置作者名；常用 \u003ccode\u003e--global\u003c/code\u003e 设置默认值。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit add \u0026lt;path\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e将 \u003ccode\u003e\u0026lt;path\u0026gt;\u003c/code\u003e 的更改加入暂存区；可为文件或目录。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit commit -m \u0026quot;\u0026lt;message\u0026gt;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e提交暂存区快照并写入提交信息。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit status\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e查看暂存、未暂存、未跟踪文件。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e查看提交历史；可叠加其他显示参数。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit diff\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e对比工作区与暂存区的差异。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"撤销与清理\"\u003e撤销与清理\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit revert \u0026lt;commit\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e生成新提交，反向应用 \u003ccode\u003e\u0026lt;commit\u0026gt;\u003c/code\u003e 的修改。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reset \u0026lt;file\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e将 \u003ccode\u003e\u0026lt;file\u0026gt;\u003c/code\u003e 移出暂存区，工作区保持不变。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit clean -n\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e预览将被删除的未跟踪文件；执行删除用 \u003ccode\u003egit clean -f\u003c/code\u003e。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"重写历史\"\u003e重写历史\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit commit --amend\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e替换上一条提交（内容或信息）；避免改动已推送的提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit rebase \u0026lt;base\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e将当前分支变基到 \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e（提交/分支/标签/引用）。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reflog\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e查看本地 HEAD 与引用的移动记录；可用于找回丢失的提交。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"分支管理\"\u003e分支管理\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit branch\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e列出本地分支；加 \u003ccode\u003e\u0026lt;branch\u0026gt;\u003c/code\u003e 创建新分支。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit checkout -b \u0026lt;branch\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e创建并切换到 \u003ccode\u003e\u0026lt;branch\u0026gt;\u003c/code\u003e；去掉 \u003ccode\u003e-b\u003c/code\u003e 仅切换。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit merge \u0026lt;branch\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e将 \u003ccode\u003e\u0026lt;branch\u0026gt;\u003c/code\u003e 合并到当前分支。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"远程仓库\"\u003e远程仓库\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit remote add \u0026lt;name\u0026gt; \u0026lt;url\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e添加远程别名。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit fetch \u0026lt;remote\u0026gt; [branch]\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e从远程获取全部或指定分支的引用。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit pull \u0026lt;remote\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e获取远程当前分支并合并到本地当前分支。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit push \u0026lt;remote\u0026gt; \u0026lt;branch\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e推送分支到远程，如不存在则创建。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"配置与日志\"\u003e配置与日志\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config --global user.name \u0026lt;name\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e设置全局作者名。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config --global user.email \u0026lt;email\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e设置全局作者邮箱。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config --global alias.\u0026lt;alias\u0026gt; \u0026quot;\u0026lt;command\u0026gt;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e定义命令别名，例如 \u003ccode\u003ealias.glog \u0026quot;log --graph --oneline\u0026quot;\u003c/code\u003e。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config --system core.editor \u0026lt;editor\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e设置系统级默认编辑器（如 \u003ccode\u003evi\u003c/code\u003e）。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit config --global --edit\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e打开全局配置文件手动编辑。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --\u0026lt;limit\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e限制显示提交数量，如 \u003ccode\u003egit log -5\u003c/code\u003e。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --oneline\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e将每个提交压缩为单行。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log -p\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e显示每个提交的完整 diff。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --stat\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e显示修改文件及行数统计。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --author=\u0026quot;\u0026lt;pattern\u0026gt;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e按作者过滤提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --grep=\u0026quot;\u0026lt;pattern\u0026gt;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e按提交信息匹配过滤。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log \u0026lt;since\u0026gt;..\u0026lt;until\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e查看时间/引用范围内的提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log -- \u0026lt;file\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e仅显示影响指定文件的提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit log --graph --decorate\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e以文本图展示分支/标签并装饰引用名。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"差异重置与变基\"\u003e差异、重置与变基\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit diff HEAD\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e比较工作区与上一提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit diff --cached\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e比较暂存区与上一提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reset\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e重置暂存区为上一提交，保留工作区。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reset --hard\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e暂存区与工作区全部回退到上一提交（会丢弃未提交修改）。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reset \u0026lt;commit\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e分支指针回退到 \u003ccode\u003e\u0026lt;commit\u0026gt;\u003c/code\u003e，暂存区同步，工作区保留。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit reset --hard \u0026lt;commit\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e分支、暂存区、工作区全部回退到 \u003ccode\u003e\u0026lt;commit\u0026gt;\u003c/code\u003e，丢弃之后的修改。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit rebase -i \u0026lt;base\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e交互式变基到 \u003ccode\u003e\u0026lt;base\u0026gt;\u003c/code\u003e，可重排/合并/修改提交。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit pull --rebase \u0026lt;remote\u0026gt;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e拉取并基于本地分支变基远程更新（代替 merge）。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"推送\"\u003e推送\u003c/h2\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e命令\u003c/th\u003e\n          \u003cth\u003e说明\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit push \u0026lt;remote\u0026gt; --force\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e强制推送（可能改写远程历史，谨慎使用）。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit push \u0026lt;remote\u0026gt; --all\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e推送所有本地分支到远程。\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003egit push \u0026lt;remote\u0026gt; --tags\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e推送所有本地标签；普通 push 不会自动推送标签。\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"参考资料\"\u003e参考资料\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://atlassian.com/git/tutorials\"\u003ehttps://atlassian.com/git/tutorials\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LeCoupa/awesome-cheatsheets/blob/master/tools/git.sh\"\u003ehttps://github.com/LeCoupa/awesome-cheatsheets/blob/master/tools/git.sh\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e本地 PDF：\u003ca href=\"git_cheat_sheet.pdf\"\u003egit_cheat_sheet.pdf\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e","title":"Git Command Reference"},{"content":" 记录常用的博客样式与 Hugo 配置参考链接，保持可复用、可扩展。\n参考链接 Papermod 自定义字体实践 https://aimerneige.com/zh/post/web/set-custom-fonts-in-papermod-site/ Hugo 博客搭建指南（含配置与部署 ) https://ruixi.top/zh/posts/hugo-blog-guide/ Hugo 博客精装修 https://yunpengtai.top/posts/hugo-journey/#%e4%be%a7%e8%be%b9%e6%82%ac%e6%b5%ae%e7%9b%ae%e5%bd%95 这是引用 # # 来源：Hugo 官方 。 这是 caption：点击图片应该弹出 fancybox 放大预览\n点击展开：Python 示例代码 import numpy as np def hello(): print(\u0026quot;Hello Collapse!\u0026quot;) import numpy as np def hello(): print(\u0026quot;Hello Collapse!\u0026quot;) import numpy as np def hello(): print(\u0026quot;Hello Collapse!\u0026quot;) hello() notice 1）warning Warning 这是一个 Warning 提示框。 2）info Info 这是一个 Info 提示框，适合放一些说明信息。 3）note Note 这是一个 Note 提示框，可以放补充说明、参考链接等。 例如：Hugo 官网 下面是一个 GitHub 仓库卡片：\noneday_blog 我的 Hugo 博客源码仓库。 语言：Go / Hugo GAN_for_thin_film 基于 GAN 的薄膜结构生成项目。 语言：Python To be, or not to be, that is the question: Whether 'tis nobler in the mind to suffer The slings and arrows of outrageous fortune, Or to take Arms against a Sea of troubles, And by opposing end them: to die, to sleep — William Shakespeare 十里青山远，潮平路带沙 数声啼鸟怨年华 又是凄凉时候，在天涯 白露收残月，清风散晓霞 绿杨堤畔问荷花 记得年时沽酒，那人家 References aimerneige. 在 Papermod 中自定义字体. https://aimerneige.com/zh/post/web/set-custom-fonts-in-papermod-site/ Ruixi. Hugo 博客指南. https://ruixi.top/zh/posts/hugo-blog-guide/ ","permalink":"https://onedayoneday.xin/guide/style/reference-log/","summary":"\u003cblockquote\u003e\n\u003cp\u003e记录常用的博客样式与 Hugo 配置参考链接，保持可复用、可扩展。\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003chr\u003e\n\u003ch2 id=\"参考链接\"\u003e参考链接\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePapermod 自定义字体实践 \u003ca href=\"https://aimerneige.com/zh/post/web/set-custom-fonts-in-papermod-site/\"\u003ehttps://aimerneige.com/zh/post/web/set-custom-fonts-in-papermod-site/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHugo 博客搭建指南（含配置与部署 ) \u003ca href=\"https://ruixi.top/zh/posts/hugo-blog-guide/\"\u003ehttps://ruixi.top/zh/posts/hugo-blog-guide/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHugo 博客精装修 \u003ca href=\"https://yunpengtai.top/posts/hugo-journey/#%e4%be%a7%e8%be%b9%e6%82%ac%e6%b5%ae%e7%9b%ae%e5%bd%95\"\u003ehttps://yunpengtai.top/posts/hugo-journey/#%e4%be%a7%e8%be%b9%e6%82%ac%e6%b5%ae%e7%9b%ae%e5%bd%95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e这是引用 \u003cspan class=\"sidenote-number\" aria-hidden=\"true\"\u003e#\u003c/span\u003e\n\u003cspan class=\"sidenote\"\u003e\u003cspan class=\"sidenote-mark\" aria-hidden=\"true\"\u003e#\u003c/span\u003e 来源：\u003ca href=\"https://gohugo.io/\"\u003eHugo 官方\u003c/a\u003e\u003c/span\u003e\n。\n\u003ca data-fancybox=\"gallery\" href=\"/images/background/bg1.jpg\"\u003e\n\u003cfigure class=\"align-center \"\u003e\u003cimg loading=\"lazy\" decoding=\"async\" src=\"/images/optimized/bg1-2560-053e487f981d.webp#center\"\n         srcset=\"/images/optimized/bg1-1280-dffcffa9aac9.webp 1280w, /images/optimized/bg1-1920-2c13239428e7.webp 1920w, /images/optimized/bg1-2560-053e487f981d.webp 2560w\"\n         sizes=\"(max-width: 768px) calc(100vw - 48px), 720px\"\n         alt=\"这是 caption：点击图片应该弹出 fancybox 放大预览\" width=\"3840\" height=\"2152\"/\u003e \u003cfigcaption\u003e\n            \u003cp\u003e这是 caption：点击图片应该弹出 fancybox 放大预览\u003c/p\u003e\n        \u003c/figcaption\u003e\n\u003c/figure\u003e\n\u003c/a\u003e\n\n\n\n\n\u003cdetails class=\"collapse-block\" \u003e\n  \u003csummary markdown=\"span\"\u003e点击展开：Python 示例代码\u003c/summary\u003e\n  \u003cdiv class=\"collapse-content\"\u003e\n    \u003cpre\u003e\u003ccode class=\"language-python\"\u003eimport numpy as np\n\ndef hello():\n    print(\u0026quot;Hello Collapse!\u0026quot;)\n    import numpy as np\n\ndef hello():\n    print(\u0026quot;Hello Collapse!\u0026quot;)\n    import numpy as np\n\ndef hello():\n    print(\u0026quot;Hello Collapse!\u0026quot;)\n\nhello()\n\u003c/code\u003e\u003c/pre\u003e\n\n  \u003c/div\u003e\n\u003c/details\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"notice\"\u003enotice\u003c/h2\u003e\n\u003ch3 id=\"1warning\"\u003e1）warning\u003c/h3\u003e\n\u003cdiv class=\"notice notice-warning\"\u003e\n  \u003cdiv class=\"notice-header\"\u003e\u003cspan class=\"notice-icon\"\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" viewBox=\"0 0 576 512\"\u003e\u003cpath d=\"M570 440c18 32-5 72-42 72H48c-37 0-60-40-42-72L246 24c19-32 65-32 84 0l240 416zm-282-86a46 46 0 100 92 46 46 0 000-92zm-44-165l8 136c0 6 5 11 12 11h48c7 0 12-5 12-11l8-136c0-7-5-13-12-13h-64c-7 0-12 6-12 13z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\u003cspan class=\"notice-title\"\u003eWarning\u003c/span\u003e\n  \u003c/div\u003e\n\n  \u003cdiv class=\"notice-body\"\u003e\n    这是一个 \u003cstrong\u003eWarning\u003c/strong\u003e 提示框。\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003chr\u003e\n\u003ch3 id=\"2info\"\u003e2）info\u003c/h3\u003e\n\u003cdiv class=\"notice notice-info\"\u003e\n  \u003cdiv class=\"notice-header\"\u003e\u003cspan class=\"notice-icon\"\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" viewBox=\"0 0 512 512\"\u003e\u003cpath d=\"M256 8a248 248 0 100 496 248 248 0 000-496zm0 110a42 42 0 110 84 42 42 0 010-84zm56 254c0 7-5 12-12 12h-88c-7 0-12-5-12-12v-24c0-7 5-12 12-12h12v-64h-12c-7 0-12-5-12-12v-24c0-7 5-12 12-12h64c7 0 12 5 12 12v100h12c7 0 12 5 12 12v24z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\u003cspan class=\"notice-title\"\u003eInfo\u003c/span\u003e\n  \u003c/div\u003e\n\n  \u003cdiv class=\"notice-body\"\u003e\n    这是一个 \u003cstrong\u003eInfo\u003c/strong\u003e 提示框，适合放一些说明信息。\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003chr\u003e\n\u003ch3 id=\"3note\"\u003e3）note\u003c/h3\u003e\n\u003cdiv class=\"notice notice-note\"\u003e\n  \u003cdiv class=\"notice-header\"\u003e\u003cspan class=\"notice-icon\"\u003e\u003csvg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon\" viewBox=\"0 0 512 512\"\u003e\u003cpath d=\"M504 256a248 248 0 11-496 0 248 248 0 01496 0zm-248 50a46 46 0 100 92 46 46 0 000-92zm-44-165l8 136c0 6 5 11 12 11h48c7 0 12-5 12-11l8-136c0-7-5-13-12-13h-64c-7 0-12 6-12 13z\"/\u003e\u003c/svg\u003e\u003c/span\u003e\u003cspan class=\"notice-title\"\u003eNote\u003c/span\u003e\n  \u003c/div\u003e\n\n  \u003cdiv class=\"notice-body\"\u003e\n    这是一个 \u003cstrong\u003eNote\u003c/strong\u003e 提示框，可以放补充说明、参考链接等。\n例如：\u003ca href=\"https://gohugo.io/\"\u003eHugo 官网\u003c/a\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\u003chr\u003e\n\u003cp\u003e下面是一个 GitHub 仓库卡片：\u003c/p\u003e","title":"Reference Log"},{"content":"OneDay oneday_blog 我的 Hugo 博客源码仓库。 语言：Go / Hugo 鹏北海，凤朝阳，又携书剑路茫茫 明年此日青云去，却笑人间举子忙 联系方式 GitHub：\u0026lt;OneDay\u0026gt; 本站说明 主题：PaperMod 框架：Hugo 部署：Nginx / 云服务器 ","permalink":"https://onedayoneday.xin/about/","summary":"\u003ch2 id=\"oneday\"\u003eOneDay\u003c/h2\u003e\n\u003cdiv class=\"github\"\u003e\n  \u003cdiv class=\"github_bar\"\u003e\u003cimg class=\"github-avatar\" src=\"https://github.com/loveDjjj.png\" alt=\"GitHub Avatar\" loading=\"lazy\"\u003e\u003ca class=\"github_name\" href=\"https://github.com/loveDjjj/oneday_blog\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n      oneday_blog\n    \u003c/a\u003e\n  \u003c/div\u003e\n\n  \n    \u003cdiv class=\"github_description\"\u003e我的 Hugo 博客源码仓库。\u003c/div\u003e\n  \n\n  \n    \u003cdiv class=\"github_language\"\u003e语言：Go / Hugo\u003c/div\u003e\n  \n\u003c/div\u003e\n\n\u003cblockquote class=\"quote-center\"\u003e\n  \u003cp class=\"quote-center-content\"\u003e\n鹏北海，凤朝阳，又携书剑路茫茫\n明年此日青云去，却笑人间举子忙\n\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003chr\u003e\n\u003ch2 id=\"联系方式\"\u003e联系方式\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGitHub：\u0026lt;\u003ca href=\"https://github.com/loveDjjj\"\u003eOneDay\u003c/a\u003e\u0026gt;\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"本站说明\"\u003e本站说明\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e主题：PaperMod\u003c/li\u003e\n\u003cli\u003e框架：Hugo\u003c/li\u003e\n\u003cli\u003e部署：Nginx / 云服务器\u003c/li\u003e\n\u003c/ul\u003e","title":"关于"}]