tianlipa

Subtitle

作者李白.

黄河西来决昆仑, 咆哮万里触龙门.
波滔天, 尧咨嗟.
大禹理百川, 儿啼不窥家.
杀湍湮洪水, 九州始蚕麻.
其害乃去, 茫然风沙.
被发之叟狂而痴, 清晨临流欲奚为.
旁人不惜妻止之, 公无渡河苦渡之.
虎可搏, 河难凭, 公果溺死流海湄.
有长鲸白齿若雪山, 公乎公乎挂罥于其间.
箜篌所悲竟不还.

公无渡河, 公竟渡河!
堕河而死, 当奈公何!

今天把老登环通关了.

好玩.

今天和新组的学长聊了一下, 感觉这个学长人非常好, 甚至强调了好几次现在只是初步了解阶段千万不要有压力.

朋友收集梦想生活出了, 但是看评测说内容量不算大, 有点想把任亏券拿去换大乱斗.

最近在小黑盒刷到好几次影之刃零的推广, 所以什么时候能再来个预告片.

日常焦虑.

美赛再过几天要出结果了, 前几天做梦梦见拿了个 M 奖 (应该是皆大欢喜结局), 希望能成真吧.

幸好美赛最差的奖项不是叫 W 奖.

BadAgent: Inserting and Activating Backdoor Attacks in LLM Agents

  • LLM 后门, trigger
  • 少量后门训练数据 (≤ 500 个样本) 就可以达到较高的攻击成功率

攻击方法包括:

  • 主动攻击: 即直接在输入中插入触发器 trigger, 触发 agent 的恶意行为
  • 被动攻击: 在环境中插入 trigger, 例如针对网页导航 agent, 在某个网页中放一个不可见的 trigger 按钮

PEFT: Parameter-Efficient Fine-Tuning 参数高效微调, 只微调大模型的一小部分参数.

实验表明, 常规防御 (试图用干净数据微调对冲有毒数据的影响) 完全无效.

阅读全文 »

现在看的攻击论文都说实验表明现有防御根本拦不住我的超强攻击, 防御论文都说现有攻击根本无法穿透我的超强防御, 有时候真的很想问一句以彼之矛攻彼之盾何如, 可能最后胜出的是发表时间最晚的论文吧, 或者两边一起把我的博客炸掉让我不要再写这些狗屁.

今天看了美国精神病人, 仍然半懂不懂, 但是全程欣赏男主美色.

试图写点正经 (并非) 的东西才发现我的语言表达和组织能力真的是灾难, 连基本的文章脉络都组织不起来, 骨架全靠公式化自嘲冷笑话撑起来, 然后在每个小节结尾发表一点暴论之后放一条分割线假装这就够了.

所以我什么时候能少写点自嘲冷笑话.

This is what it feels like to be right. It’s oddly unsettling.

考虑了一下决定尝试换到 python.

Kth Largest Element In a Stream

数据流中的第 K 大元素

注意是第 k 大, 所以搞个小顶堆, 一直 pop 到只剩 k 个元素, 返回堆顶元素即可.

import heapq
class KthLargest:
def __init__(self, k: int, nums: List[int]):
self.k = k
self.pq = nums
heapq.heapify(self.pq)

def add(self, val: int) -> int:
heapq.heappush(self.pq, val)
while len(self.pq) > self.k:
heapq.heappop(self.pq)
return self.pq[0]
阅读全文 »

QQ 有一个不知道谁想出来的实现是会把部分 emoji 转换成图片表情, 例如😆发出来会自动变成这个:

微信有一个不知道谁想出来的功能是一条消息禁止同时包含图片和文字, 所以如果你编辑了一条同时包括图片和文字的消息, 其中的图片和文字会被分成多条消息发送.

然后我在 QQ 复制了一条包含两个 emoji 的消息粘贴到微信发送, 结果如图.

终于做到搜索了.

Invert Binary Tree

翻转二叉树

简单的递归.

class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root == nullptr) return root;
TreeNode *t;
t = root->left;
root->left = invertTree(root->right);
root->right = invertTree(t);
return root;
}
};
阅读全文 »

Reverse Linked List

反转链表

遍历 (迭代) 一遍很简单, 但是递归有点不好理解.

class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head == nullptr || head->next == nullptr) {
return head;
}
ListNode* newhead = reverseList(head->next);
head->next->next = head;
head->next = nullptr;
return newhead;
}
};
阅读全文 »

二分查找

最基础的二分, 复习一下前世记忆.

class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
int left = 0, right = n - 1;
while(left <= right) {
int i = (left + right) / 2;
if(nums[i] == target)
return i;
else if(nums[i] > target) {
right = i - 1;
}
else {
left = i + 1;
}
}
return -1;
}
};
阅读全文 »
0%