关于大文件的解析
最近碰上了一个需求,要做一个桌面程序,功能是将一个文件格式解析成json,然后在图表上展示这个数据,但是这个文件可能有GB单位的大小,解析要防止爆内存,还有图形也要防止崩溃。 文件格式解析倒反而不是什么难点,主要是文件大小的问题以及格式,json是一种树状的类型,每个节点和上下文都是有关联的,如果全放内存中非常容易爆内存 ,但是这个数据结构的特性导致很难将已经解析好的一部分数据直接先持久化,不然存取是一个问题,所以持久化肯定需要一些媒介。 ...
最近碰上了一个需求,要做一个桌面程序,功能是将一个文件格式解析成json,然后在图表上展示这个数据,但是这个文件可能有GB单位的大小,解析要防止爆内存,还有图形也要防止崩溃。 文件格式解析倒反而不是什么难点,主要是文件大小的问题以及格式,json是一种树状的类型,每个节点和上下文都是有关联的,如果全放内存中非常容易爆内存 ,但是这个数据结构的特性导致很难将已经解析好的一部分数据直接先持久化,不然存取是一个问题,所以持久化肯定需要一些媒介。 ...
这个问题烦了了我1个小时。 1fn parse_path_operation( 2 &mut self, 3 path: &str, 4 op: Option<Box<impl FnOnce(&mut Self) + ?Sized>>, 5 ) -> Result<bool, anyhow::Error> 6 7self.parse_path_operation(path, None::<Box<dyn FnOnce(&mut IDir)>>)?; 这里记录一下这个签名的正确用法。 下次学乖了,这种编译器大小未知的trait类型一定要用Box或者其他的智能指针包起来,我想写成这样的签名完全不行,虽然被调用方的签名能通过编译,但是调用方的签名始终有问题,网上找了半天,还是得用智能指针管用… ...
好长时间没写博客了,现在在上海开始上班,算是新的开始。 今天随便读了一下Rust死灵书,记录一下自己的领悟。 1let mut data = vec![1, 2, 3]; 2let x = &data[0]; 3data.push(4); 4println!("{}", x); 1'a: { 2 let mut data: Vec<i32> = vec![1, 2, 3]; 3 'b: { 4 // 'b 这个生命周期范围如我们所愿地小(刚好够 println!) 5 let x: &'b i32 = Index::index::<'b>(&'b data, 0); 6 'c: { 7 // 这里有一个临时作用域,我们不需要更长时间的 &mut 借用 8 Vec::push(&'c mut data, 4); 9 } 10 println!("{}", x); 11 } 12} 这里的问题更微妙、更有趣。我们希望 Rust 拒绝这个程序,理由如下:我们有一个存活的共享引用x到data的一个子集,当我们试图把data的可变引用传给push时。这将创建一个可变引用的别名,而这将违反引用的第二条规则。 ...
之前买了一个倍思H1,降噪也差了点(其实就是侥幸心理,200块的耳机降噪怎么可能好),就一直想自己再买一个好点的降噪耳机。主要是降噪我比较看重,音质我反正这个木头耳朵也听不出区别。 这段时间做了一些这方面的功课,大概清楚了目前降噪在第一梯队之中有索尼的WH-1000XM3以上的系列。基本买这个系列不会错。然后是M3和M4的升级基本不大,并且M4还贵了很多,可以直接买M3,这样性价比更好点。 ...
这两天又有了新工作,不过是前端的部分,需要用的是Vue+JS,说实话,我不是很想写JS,因为类型提示非常少,出错的概率也会非常大。 不过vsc已经可以通过jsconfig来对js文件实施ts类型检查,这个倒是非常不错。
这几个月我养成了一个奇怪的嗜好,喜欢上了看桀哥(超级小桀)玩马里奥制造,看他玩这个游戏确实相当有趣,不过也只是看看直播切片的程度。 再过几天要出发去上海了,这次的工作外地工作,有点麻烦啊。
今天我又换回了Fake-ip模式… 主要还是贪这点速度. 绕过大陆IP的功能就不开启了.. 因为开启的话大陆IP解析走的是另外的DNS服务器, 但是想用域名访问本地的服务就得用自建的服务器, 嫌麻烦就懒得搞了. 我到底在干嘛..
今天想了半天, 最后还是把SmartDNS换成了Aguard Home来做DNS解析, 原因是因为我还是无法放弃好看的Log, 以及开了ADH之后我也不需要开启Adbyby了. 但是ADH的内存占用确实大, 好看的Log确实需要付出代价. 不过无所谓了~ ...
前天, 我年前买的Nanopi R2S到了, 发货还挺快. 这个玩意是一个有双网口的ARM芯片的机器. 内存1G, CPU是个64位4核心的, 主频不太清楚, 应该有1.6GHz以上? 这个机器刷上的Github上找到了Openwrt镜像.还是主要跑科学上网为主. ...
今天玩了一天的原魔, 3.4的任务还挺长的. 我打了一天这个任务才做了1/3. 这个版本因为开了新区域神瞳也得收集. 这个新年有的忙了.