V2EX lijiachang 的所有回复 第 1 页 / 共 1 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    lijiachang    全部回复第 1 页 / 共 1 页
回复总数  17
如果同功能的软件一个是 Java 写的,一个是 Rust 写的,你会选择什么呢
@hexiaowu1993 搜这个标题吧 [MBP M4pro 14 核 48G 1T 国家补贴+教育优惠] 作者是:天天

@HkMuxxx 14 寸的

@00x170818 能代付,那挺爽的,可以用信用卡付款了
@leshijiazu 京东原价是 22999 (没有国补和教育的优惠),大约 83 折?


@hexiaowu1993 我在小红书上面发了很多图,这里能贴小红书的链接吗,不知道会违规吗。。


@fuwu1245 你这个逻辑就不成立。。。代付哪来的国补资格,需要用云闪付才有国补。
差不多的纠结最后买了: [京东 19199 买 MBP M4pro 14 核 48G 1T 国家补贴+教育优惠 - V2EX (4)] t/1124225
跟我买的配置一样: [京东 19199 买 MBP M4pro 14 核 48G 1T 国家补贴+教育优惠 - V2EX (4)] t/1124225

一样的品控问题,我也发现屏幕周围有你这种情况,小问题就算了吧,换货回来可能还不如这个。
小红书翻车案例,比你这个严重多了:比如,外壳凹陷,大划痕,
你这个都不算事
@foufoufm 512G 为啥不够用:我之前做 Python 开发是完全足够的,512G 也就用了一半,但是现在 Rust 项目,编译会产生大量的依赖,一个项目如果长期不进行 cargo clean 清理缓存的话,轻松到达 100G (我最多的时候,一个项目产生了 170G 的依赖空间占用)
cargo clean
Removed 259694 files, 172.0GiB total
@UN2758 用堂弟的京东账号+教育身份+国补资格,他账号下单,地址写我的(手机号+姓名+地址),我收快递
displaylink 拓展坞,二手的便宜,100 块钱以下有的是
268 天前
回复了 bwijn 创建的主题 Python 关于 py 异步队列 异步支持选择问题
@198plus 如果是 io 密集的,完全没问题
小项目可以用 rq ,在 Django 中叫 django_rq ,使用起来比较简单
tmp = r'{"{\"username\":\"juheso\",\"is_cache\":1}":3}'
print(tmp)

声明的时候就要加 r ,否则你就写个转换函数
问题所在:
1. 在主循环中,每次遇到 FA 标志时都创建了新的 AuxInfo ,且覆盖了之前的值
2. AuxInfo::parse 方法每次只处理一个字段,而不是累积所有字段

解决方案,我们有两种处理方式:

方案 1 - 修改 ParserFactory::parse 方法,使用 Vec 收集所有 AUX 信息,最后合并:

```rust
impl ParserFactory {
pub fn parse(rdb_context: &[u8]) -> Result<RDBInfo> {
let mut cursor = Cursor::new(rdb_context);
let base_info = BaseInfo::parse(&mut cursor)?;
let rdb_version: usize = base_info.rdb_version.parse().expect("Not a valid number");
let mut aux_infos = Vec::new(); // 存储所有 AUX 信息
let mut db_info = None;

if rdb_version < 7 {
aux_infos = Vec::new();
};

loop {
let mut flag_byte = [0;1];
if cursor.read_exact(&mut flag_byte).is_err() {
break
}
match flag_byte[0] {
FA => {
if let Some(aux_info) = AuxInfo::parse(&mut cursor)? {
aux_infos.push(aux_info);
}
}
FE => {
db_info = Some(DbInfo::parse(&mut cursor)?);
}
FF => {
println!("parse done.");
break
}
_ => {
continue;
}
}
}

// 合并所有 AUX 信息
let final_aux_info = aux_infos.into_iter().fold(
AuxInfo {
redis_server_version: String::new(),
used_mem: 0,
},
|mut acc, curr| {
if !curr.redis_serve_version.is_empty() {
acc.redis_server_version = curr.redis_server_version;
}
if curr.used_mem != 0 {
acc.used_mem = curr.used_mem;
}
acc
}
);

let rdb_info = RDBInfo {
base_info,
aux_info: final_aux_info,
};

Ok(rdb_info)
}
}
```

方案 2 - 修改 AuxInfo::parse 方法,让它保持当前状态:

```rust
impl Parser for AuxInfo {
fn parse(cursor: &mut Cursor<&[u8]>) -> Result<Option<AuxInfo>> {
let aux_name = parser_aux_name(cursor)?;

// 根据字段名返回对应的 AuxInfo
let aux_info = match aux_name.as_str() {
"redis-ver" => {
Some(AuxInfo {
redis_server_version: parser_aux_value(cursor)?,
used_mem: 0,
})
}
"used-mem" => {
Some(AuxInfo {
redis_server_version: String::new(),
used_mem: parser_aux_value(cursor)?.parse::<usize>()
.expect("Failed to parse used-mem"),
})
}
_ => None
};

Ok(aux_info)
}
}
```

我建议使用方案 1 ,因为:
1. 更清晰地表达了数据收集的过程
2. 更容易扩展,如果将来需要添加新的 AUX 字段
3. 数据处理逻辑更集中,便于维护

关键改进点:
1. 使用 Vec 收集所有 AUX 信息
2. 使用 fold 方法合并所有 AUX 信息
3. 保留了非空/非零值,避免数据丢失

你需要注意的地方:
1. 确保 parser_aux_name 和 parser_aux_value 正确处理了数据
2. 考虑错误处理机制,可能需要添加更多的错误类型
3. 可以添加日志来跟踪解析过程
IDE 看了就摇头
2024-04-22 21:21:32 +08:00
回复了 craftx 创建的主题 Python 求基于 Python 开发大流量在线服务的经验教训
如果团队技术栈是 Python 的话,用 Django 没什么问题
2023-04-15 13:57:31 +08:00
回复了 bytesfold 创建的主题 Python PyCharm 2023.1 released
旧 UI 还能用吧
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     902 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 21:53 PVG 05:53 LAX 14:53 JFK 17:53
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86