V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  5waker  ›  全部回复第 1 页 / 共 3 页
回复总数  52
1  2  3  
6 小时 39 分钟前
回复了 Olivia 创建的主题 观鸟 黄腰林莺在空中捉蚊子
好看,能上杂志封面的那种
2 天前
回复了 Olivia 创建的主题 观鸟 游隼夫妇的空中交接
请问城市内最多的猛禽是什么?
有机会就去,趁还有能力,后面没机会更后悔
7 天前
回复了 Aspector 创建的主题 全球工单系统 Logi Options+ 证书过期了
我尝试了下 mac-mouse-fix ,自定义按键功能可以使用,如果只是自定义按键可以试下
https://github.com/noah-nuebling/mac-mouse-fix
7 天前
回复了 Aspector 创建的主题 全球工单系统 Logi Options+ 证书过期了
16 楼方法有用。
话说罗技这么大的公司搞笑呢? option+一直转圈的同时,updater 也在疯狂的吃 cpu ,45%~ 95%来回波动。option 好几百 MB 的体积,就个后台配置要这么大 APP 来控制吗?功能也没见有多少啊
8 天前
回复了 baby0w0 创建的主题 程序员 最近在研究 ai 变声 太爽了
@baby0w0 分享别看差评,要看好评
9 天前
回复了 baby0w0 创建的主题 程序员 最近在研究 ai 变声 太爽了
@baby0w0 雅美喽,我还在等你的视频学习,怎么突然下架了。求私
2025 年 12 月 22 日
回复了 Gesar 创建的主题 MacBook Pro 2025 年底,还有人用 intel 的 mac 吗
19 mac book pro 还在用,掉电掉的厉害
2025 年 12 月 12 日
回复了 jiafeiblog 创建的主题 程序员 Trae 现在用着还卡么
卡,什么时候能基于 zed 去做改造啊。vscode 都很正常,为啥 trae 直接卡到爆。
2025 年 12 月 11 日
回复了 cmos 创建的主题 程序员 要是用 Rust 就不会出问题了
原始 Go 服务性能完全够用,业务也在稳定运行,重构是完全没道理的。真有性能问题了,我都建议扩容,重构耗时耗人
2025 年 12 月 11 日
回复了 cmos 创建的主题 程序员 要是用 Rust 就不会出问题了
@94 CF 的那次问题本质是变更不合理,没有任何灰度,预设特征数量过于死板。错误不处理顶多背锅 10%,这里面还有程序员的锅呢
2025 年 12 月 4 日
回复了 5waker 创建的主题 程序员 Minio 进入仅维护状态,转向 MinIO AIStor
@lexno 没用过,看起来不错,star 下后续个人项目用用
2025 年 12 月 4 日
回复了 5waker 创建的主题 程序员 Minio 进入仅维护状态,转向 MinIO AIStor
@joelaw RustFS ,但目前它在大文件(>5mb)的性能还不是很好
2025 年 11 月 18 日
回复了 510908220 创建的主题 生活 北方的冬天到了,怎么防止静电
3 个方案
1.摸墙,必须是腻子粉墙或者水泥墙,瓷砖和木板不行
2.捏住金属钥匙用钥匙头触碰大面积金属物,让电从打你改成打钥匙
3.如果 1 、2 都没有条件,那就减轻痛苦,用神经比较少的关节部位触碰,比如食指第二指关节
2025 年 11 月 17 日
回复了 laojuelv 创建的主题 投资 十年韭菜的顿悟:炒股的密码是“等待”
我随时随地在等待,做你感情上的依赖~
2025 年 11 月 14 日
回复了 bzq 创建的主题 钓鱼 想入坑路亚了,请指教
路亚真的能中鱼吗 😭
2025 年 11 月 12 日
回复了 YUX 创建的主题 分享创造 我用 Zig 重写(并重新设计)了 frp 和 rathole
我很好奇,用 zig vibe coding 好用吗?容易出正确代码吗?
2025 年 11 月 12 日
回复了 NeilZhy1 创建的主题 生活 骂醒此龟!
多让龟龟健身,补充自己,心思花在自己身上就能逐渐从那种龟的状态脱离出来了
2025 年 11 月 4 日
回复了 BigChengzi 创建的主题 Rust 如何看待 Rust?
@cslive 深有同感,每次都是入门
2025 年 10 月 30 日
回复了 montaro2017 创建的主题 Java 用 netty 编写代理服务器,切换出口 IP,不能及时生效
@montaro2017 我刚好昨天也遇到了类似的问题,我的做法是在一个长连接里不断检测 header ,然后根据内容再做转发
```rust
loop {
// 读取到完整头部
let header_end = loop {
if let Some(pos) = headers_end_pos(&buf) {
break Some(pos);
}
let n = client_stream.read(&mut tmp).await?;
if n == 0 {
// 客户端关闭或无更多数据
if buf.is_empty() {
return Ok(());
} else {
return Ok(());
}
}
buf.extend_from_slice(&tmp[..n]);
if buf.len() > 128 * 1024 {
error!("请求头过大,终止连接");
return Ok(());
}
};
let header_end = header_end.unwrap();
let headers_vec: Vec<u8> = buf[..header_end].to_vec();

let virtual_env = parse_virtual_env_from_headers(&headers_vec);
let content_length = parse_content_length(&headers_vec);
let chunked = is_chunked(&headers_vec);

// 读取完整正文
let body_len = if let Some(cl) = content_length {
while buf.len() < header_end + cl {
let n = client_stream.read(&mut tmp).await?;
if n == 0 {
error!("Content-Length 指定但连接提前关闭");
return Ok(());
}
buf.extend_from_slice(&tmp[..n]);
}
cl
} else if chunked {
loop {
if let Some(end) = chunked_body_end_pos(&buf[header_end..]) {
break end;
}
let n = client_stream.read(&mut tmp).await?;
if n == 0 {
error!("chunked 正文未完整但连接已关闭");
return Ok(());
}
buf.extend_from_slice(&tmp[..n]);
}
} else {
0
};

let request_end = header_end + body_len;
let body = &buf[header_end..request_end];
let mut new_headers = rewrite_connection_close(&headers_vec);
new_headers.extend_from_slice(body);

// 路由:每个请求一个目标连接;响应仅回写到客户端
if let Some(env) = virtual_env {
let ctrl_opt = {
let envs = (*VIRTUAL_ENVS).lock().unwrap();
envs.get(&env).cloned()
};
if let Some(mut ctrl) = ctrl_opt {
match ctrl.open_stream().await {
Ok(mut sub) => {
sub.write_all(&new_headers).await?;
let _ = tokio::io::copy(&mut sub, &mut client_stream).await;
}
Err(e) => {
error!("打开虚拟环境 {} 的子流失败: {:?}", env, e);
let mut upstream_stream = TcpStream::connect(upstream_addr).await?;
upstream_stream.write_all(&new_headers).await?;
let _ = tokio::io::copy(&mut upstream_stream, &mut client_stream).await;
}
}
} else {
let mut upstream_stream = TcpStream::connect(upstream_addr).await?;
upstream_stream.write_all(&new_headers).await?;
let _ = tokio::io::copy(&mut upstream_stream, &mut client_stream).await;
}
} else {
let mut upstream_stream = TcpStream::connect(upstream_addr).await?;
upstream_stream.write_all(&new_headers).await?;
let _ = tokio::io::copy(&mut upstream_stream, &mut client_stream).await;
}

// 删除已消费的请求字节,保留后续请求(若已到达)
if request_end < buf.len() {
let remaining = buf.split_off(request_end);
buf = remaining;
} else {
buf.clear();
}
}
```
1  2  3  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5353 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 09:42 · PVG 17:42 · LAX 01:42 · JFK 04:42
♥ Do have faith in what you're doing.