#杂
《Rust Infrastructure Pull Request Submitted For Linux 6.1!》
感觉这个PR将是有历史性意义的,这意味着:多年以来仅有C、C++把持的所谓OS系统内核开发,也有了新的闯入者。
工作方向偏系统开发领域的,是应该学学Rust了。
《Rust Infrastructure Pull Request Submitted For Linux 6.1!》
感觉这个PR将是有历史性意义的,这意味着:多年以来仅有C、C++把持的所谓OS系统内核开发,也有了新的闯入者。
工作方向偏系统开发领域的,是应该学学Rust了。
Phoronix
Rust Infrastructure Pull Request Submitted For Linux 6.1!
It's happening, folks! Linus Torvalds already indicated recently he intends to pull the initial Rust programming language support into the Linux 6.1 kernel cycle and today that pull request was submitted to him
👍14
#杂
今年工作关系连学了两门新语言:Rust和Clojure。
由于Rust社区相对更强大,提供了更多辅助工具:编译提示、IDE插件,所以能“教”我写代码;反之Clojure社区没这么完善,我就看得很辛苦。
我今天看了一段用了Rust高级技巧的代码,突然意识到:实际上我的Rust水平并不见得就比Clojure好多少,只是因为有了这些辅助才轻松一些,距离能够用Rust单独从零干活了,还差得远。
尽管说“人与动物的区别是使用工具”,但是有时候也应该意识到对工具的依赖,一个事情托管给工具的时候,这部分能力就会慢慢变差,这可能是我下意识地不去使用copilot这种能“帮你”写代码的工具的原因。
今年工作关系连学了两门新语言:Rust和Clojure。
由于Rust社区相对更强大,提供了更多辅助工具:编译提示、IDE插件,所以能“教”我写代码;反之Clojure社区没这么完善,我就看得很辛苦。
我今天看了一段用了Rust高级技巧的代码,突然意识到:实际上我的Rust水平并不见得就比Clojure好多少,只是因为有了这些辅助才轻松一些,距离能够用Rust单独从零干活了,还差得远。
尽管说“人与动物的区别是使用工具”,但是有时候也应该意识到对工具的依赖,一个事情托管给工具的时候,这部分能力就会慢慢变差,这可能是我下意识地不去使用copilot这种能“帮你”写代码的工具的原因。
👍35
#杂
《那位用Rust重写数据库的创始人来复盘了:删除27万行C++代码,值吗?》
仅引用文中两句话:
“C++ 比较经典的问题是内存泄漏,但这类 Bug 比较容易修,我们觉得可以忍。”
“与此同时,我也想起之前在 AWS Redshift 工作中遇到的一个 Bug,三个人不断调试了两周都无解,最终发现是内存泄漏的问题,如果现在的项目继续下去很可能会遇到类似的情景,假设那时的产品已经有了很多用户,我们还需要因为这种内存泄露的问题调试许久,得不偿失。”
重新定义了“容易”。
我这一年用Rust的体验:业务特性可以往前继续开发,不太需要回头看有没有可能出现内存问题(泄露、野指针、越界)等情况,还是很令人安心的。
至于说什么“内存Bug容易修”之类的话,不多说了懂的都懂。我以前记录过也是我查了一周多的问题,本质也是个内存问题:《线上存储服务崩溃问题分析记录》,老实说这种问题查得累死了,能最后解决当然是有成就感的,可问题是:真的需要每次都这样吗,如果一边开发一边还为这种问题困扰,业务很难往前走。
《那位用Rust重写数据库的创始人来复盘了:删除27万行C++代码,值吗?》
仅引用文中两句话:
“C++ 比较经典的问题是内存泄漏,但这类 Bug 比较容易修,我们觉得可以忍。”
“与此同时,我也想起之前在 AWS Redshift 工作中遇到的一个 Bug,三个人不断调试了两周都无解,最终发现是内存泄漏的问题,如果现在的项目继续下去很可能会遇到类似的情景,假设那时的产品已经有了很多用户,我们还需要因为这种内存泄露的问题调试许久,得不偿失。”
重新定义了“容易”。
我这一年用Rust的体验:业务特性可以往前继续开发,不太需要回头看有没有可能出现内存问题(泄露、野指针、越界)等情况,还是很令人安心的。
至于说什么“内存Bug容易修”之类的话,不多说了懂的都懂。我以前记录过也是我查了一周多的问题,本质也是个内存问题:《线上存储服务崩溃问题分析记录》,老实说这种问题查得累死了,能最后解决当然是有成就感的,可问题是:真的需要每次都这样吗,如果一边开发一边还为这种问题困扰,业务很难往前走。
👍14🍌5
#Rust
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8aebac82933ff1a7c8eede18cab11e1115e2062b
Rust for Linux已经被合并到了Linux内核代码的主干分支了。
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8aebac82933ff1a7c8eede18cab11e1115e2062b
Rust for Linux已经被合并到了Linux内核代码的主干分支了。
👍27
#杂
我突然想到,“开源”真的是一个很伟大的发明,而且貌似是程序员这个行业的独一份儿。
如果是个演员,想参演一部戏,需要导演点头;律师想去打一场官司,需要当事人聘请。等等。
但是如果一个项目是”开源项目“,即便是那种KPI导向、定期把公司内进度同步到github的项目,你也能读到它的代码学习它的实现,更别提那些正儿八经以开源社区来运营的项目,甚至能通过PR参与到项目中去。
参与一个开源项目,更多的时候,阻碍都在自己身上,别人无法阻止你参与、阅读这些开源项目。
所以,当在日常的工作、学习中找不到好的项目时,不妨多看看相关的开源项目,看看有没有机会学习、参与这些项目。我当年如果不是为了学习Raft,阅读了etcd的Raft实现,恐怕也不会有现在能转方向到数据库开发的可能。
我突然想到,“开源”真的是一个很伟大的发明,而且貌似是程序员这个行业的独一份儿。
如果是个演员,想参演一部戏,需要导演点头;律师想去打一场官司,需要当事人聘请。等等。
但是如果一个项目是”开源项目“,即便是那种KPI导向、定期把公司内进度同步到github的项目,你也能读到它的代码学习它的实现,更别提那些正儿八经以开源社区来运营的项目,甚至能通过PR参与到项目中去。
参与一个开源项目,更多的时候,阻碍都在自己身上,别人无法阻止你参与、阅读这些开源项目。
所以,当在日常的工作、学习中找不到好的项目时,不妨多看看相关的开源项目,看看有没有机会学习、参与这些项目。我当年如果不是为了学习Raft,阅读了etcd的Raft实现,恐怕也不会有现在能转方向到数据库开发的可能。
👍44
#杂
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
👍40
#杂
《我,阿里P7,找不到工作》
“即便是裁员,阿里的HR也不忘记最后PUA:“这次公司不是裁员,而是优化。你要反思自己过去的贡献,认识到自己的不足,这样才能持续发展。当然,你职级是P7,到市场上还是非常抢手的,你要以人才输出的高度来看这次优化,为社会做贡献。””
本来不想推这类文章,但是被这段话给看笑了:) (注:上面的链接是虎嗅转载的,在这句话上虎嗅做了裁剪,可以到原文看:https://mp.weixin.qq.com/s/er7SpPxL5tLcMlvtWRBbGw)
《我,阿里P7,找不到工作》
“即便是裁员,阿里的HR也不忘记最后PUA:“这次公司不是裁员,而是优化。你要反思自己过去的贡献,认识到自己的不足,这样才能持续发展。当然,你职级是P7,到市场上还是非常抢手的,你要以人才输出的高度来看这次优化,为社会做贡献。””
本来不想推这类文章,但是被这段话给看笑了:) (注:上面的链接是虎嗅转载的,在这句话上虎嗅做了裁剪,可以到原文看:https://mp.weixin.qq.com/s/er7SpPxL5tLcMlvtWRBbGw)
Weixin Official Accounts Platform
我,阿里P7,找不到工作
建议大家跳槽时要特别审慎…
😁17👍8👏3🤯3🤮3🤣3
#Rust
《The What and How of Futures and async/await in Rust》
哥们真是硬核,开着视频敲代码生生讲了4个小时,但是我自己看下来感觉这样的效率对观众来说可能并不算高:
* 不能搜索里面的关键字,这导致回头想精准得看其中的一部分比较麻烦
* 听力问题可能有一些表达听不懂(清楚)
* 中间有一些表达作者感觉还在酝酿更好、准确的表达,这些时间被浪费了。
所以我感觉还是写成文档会更好一些,现在我把“写文档”类比成内存里的数据落盘,而数据在落盘之前都会被规整成一个更合理的格式的。
《The What and How of Futures and async/await in Rust》
哥们真是硬核,开着视频敲代码生生讲了4个小时,但是我自己看下来感觉这样的效率对观众来说可能并不算高:
* 不能搜索里面的关键字,这导致回头想精准得看其中的一部分比较麻烦
* 听力问题可能有一些表达听不懂(清楚)
* 中间有一些表达作者感觉还在酝酿更好、准确的表达,这些时间被浪费了。
所以我感觉还是写成文档会更好一些,现在我把“写文档”类比成内存里的数据落盘,而数据在落盘之前都会被规整成一个更合理的格式的。
YouTube
The What and How of Futures and async/await in Rust
Futures are Rust's way of expressing asynchronous computations, but even after reading the documentation, it can be hard to figure out how all the pieces of futures (and tokio) fit together. While this may not matter too much if you're just *using* futures…
👍5
#杂
最近《一年一度喜剧大赛》第二季开播,我看了觉得挺好笑(神经)的,于是找来第一季的节目补课。
第一季的节目里,有一集叫《最后一课》的节目,大体梗概是:戏剧学院毕业的优秀生蒋龙,由于找不到工作到密室逃脱里扮演NPC,被大学老师撞见,于是就在这个密室里展开了故事。
这个故事的现实意义是:很多人从学校出来,都是一腔热血觉得能干出一番事业,可是总是要遭受一些打击,有时候还不得不向生活低头,就像这里为了生活扮演NPC的蒋龙。
这个故事的内核无疑是个悲剧,但是却以喜剧的形式表达展现给观众,没有强行上价值、升华,很多人都在这个故事里看到了自己曾经的样子。
最近《一年一度喜剧大赛》第二季开播,我看了觉得挺好笑(神经)的,于是找来第一季的节目补课。
第一季的节目里,有一集叫《最后一课》的节目,大体梗概是:戏剧学院毕业的优秀生蒋龙,由于找不到工作到密室逃脱里扮演NPC,被大学老师撞见,于是就在这个密室里展开了故事。
这个故事的现实意义是:很多人从学校出来,都是一腔热血觉得能干出一番事业,可是总是要遭受一些打击,有时候还不得不向生活低头,就像这里为了生活扮演NPC的蒋龙。
这个故事的内核无疑是个悲剧,但是却以喜剧的形式表达展现给观众,没有强行上价值、升华,很多人都在这个故事里看到了自己曾经的样子。
YouTube
《最后一课》落魄学生重遇老师上演社死现场 优秀演员沦为鬼屋NPC不愿再提往事 | 一年一度喜剧大赛 EP05 | Super Sketch Show | iQiyi精选
观看《一年一度喜剧大赛》敬请登录iQiyi国际版或下载iQiyi国际版APP,每周五20:00更新一期,还有更多独家资源等着你: www.iq.com!
iQiyi国际版APP:http://bit.ly/iqjxapp
iQiyi国际版:http://bit.ly/iqjxweb
《一年一度喜剧大赛》是一档由iQiyi、米未联合出品并制作的原创新喜剧竞演综艺。节目将通过一群人的作品展演,全方位展现品质优良,类型多样的中国原创新喜剧作品,选拔出创作能力、协作能力、表演能力最突出的团体和个人。
iQiyi精选热门综艺直达:…
iQiyi国际版APP:http://bit.ly/iqjxapp
iQiyi国际版:http://bit.ly/iqjxweb
《一年一度喜剧大赛》是一档由iQiyi、米未联合出品并制作的原创新喜剧竞演综艺。节目将通过一群人的作品展演,全方位展现品质优良,类型多样的中国原创新喜剧作品,选拔出创作能力、协作能力、表演能力最突出的团体和个人。
iQiyi精选热门综艺直达:…
👍3
#杂
中国制霸生成器 – 在地图上标记居住、游玩、去过的地方:https://lab.magiconch.com/china-ex/
我试着标记了一下,分数不算高:东三省没去过、西北地区由于老婆是西北人去了几个省、中部的几个省是以前上大学途径、长三角只去过杭州、南京、绍兴,港澳台一个都没去过。
以前看过一个知乎上的问题,大意是推荐国内小众景点。就我去过的这么少的地方来看,个人推荐甘肃的张掖。张掖属汉武帝时打败匈奴之后设置的所谓“河西四郡”之一,张掖这个名字来源于“張國臂掖,以通西域”,属于一个既有历史文化(往西有敦煌莫高窟、嘉峪关、山丹军马场、马蹄寺),又有优美风景(七彩丹霞、祁连山)的城市,在知乎上可以找到“星球研究所”的一个介绍。
几年前和老婆先飞到敦煌,再沿着河西走廊一路旅游,感慨祖国大好的河山,同时也强烈推荐《河西走廊》这部纪录片。
中国制霸生成器 – 在地图上标记居住、游玩、去过的地方:https://lab.magiconch.com/china-ex/
我试着标记了一下,分数不算高:东三省没去过、西北地区由于老婆是西北人去了几个省、中部的几个省是以前上大学途径、长三角只去过杭州、南京、绍兴,港澳台一个都没去过。
以前看过一个知乎上的问题,大意是推荐国内小众景点。就我去过的这么少的地方来看,个人推荐甘肃的张掖。张掖属汉武帝时打败匈奴之后设置的所谓“河西四郡”之一,张掖这个名字来源于“張國臂掖,以通西域”,属于一个既有历史文化(往西有敦煌莫高窟、嘉峪关、山丹军马场、马蹄寺),又有优美风景(七彩丹霞、祁连山)的城市,在知乎上可以找到“星球研究所”的一个介绍。
几年前和老婆先飞到敦煌,再沿着河西走廊一路旅游,感慨祖国大好的河山,同时也强烈推荐《河西走廊》这部纪录片。
👏5
#数据库
“数据库”这个领域涉及的知识太多,之前还只是了解一些一致性算法和存储引擎的知识,后面开始要学习一下查询相关的知识了,知乎问题《学习数据库优化器如何入手?》的这个回答提供了一些参考的论文:https://www.zhihu.com/question/544427791/answer/2692512370
“数据库”这个领域涉及的知识太多,之前还只是了解一些一致性算法和存储引擎的知识,后面开始要学习一下查询相关的知识了,知乎问题《学习数据库优化器如何入手?》的这个回答提供了一些参考的论文:https://www.zhihu.com/question/544427791/answer/2692512370
Zhihu
学习数据库优化器如何入手? - 知乎
过去一年间,对优化器相关论文做了个系统性的学习,把过程中阅读的论文笔记记录在这里,和大家分享,欢迎…
👍16
#杂
前阵子B站上“二舅治好了我的精神内耗”这个视频,让“精神内耗”这个词小火了一把。
据我观察自己,“内耗”好些时候还是自己造成,或者可以通过对自己的一些“心理干预”给减少的,不然也不会被称为“内耗”了,这时候就要搬出那段“宁静祷文”了:
“
God,
Grant me
the serenity to accept the thing I cannot change,
the courage to change the thing I can change,
and wisdom to separate the difference.
神啊.
.请赐与我宁静,好让我能接受,我无法改变的事情
.请赐与我勇气,好让我能改变,我能去改变的事情
.请赐与我睿智,好让我能区别,以上这两者的不同
”
我记得这段话最早我还是在大学时期有一次听李开复的现场演讲听他说的,这么多年如此简单的一句话都得反复修炼才可以,而且还是时不时的犯。
“知易行难”,以前有个描述“懂得很多道理还是过不好这一生”,从这里来看,“懂得道理”距离自己的“实践”,中间的距离还是非常非常大的。
前阵子B站上“二舅治好了我的精神内耗”这个视频,让“精神内耗”这个词小火了一把。
据我观察自己,“内耗”好些时候还是自己造成,或者可以通过对自己的一些“心理干预”给减少的,不然也不会被称为“内耗”了,这时候就要搬出那段“宁静祷文”了:
“
God,
Grant me
the serenity to accept the thing I cannot change,
the courage to change the thing I can change,
and wisdom to separate the difference.
神啊.
.请赐与我宁静,好让我能接受,我无法改变的事情
.请赐与我勇气,好让我能改变,我能去改变的事情
.请赐与我睿智,好让我能区别,以上这两者的不同
”
我记得这段话最早我还是在大学时期有一次听李开复的现场演讲听他说的,这么多年如此简单的一句话都得反复修炼才可以,而且还是时不时的犯。
“知易行难”,以前有个描述“懂得很多道理还是过不好这一生”,从这里来看,“懂得道理”距离自己的“实践”,中间的距离还是非常非常大的。
👍12❤4
《云上弹性数仓建设|Data Infra 研究社第五期》
本期邀请了F叔分享云数仓的架构,BTW:F叔还是著名开源项目pualang的作者:https://github.com/flaneur2020/pua-lang
本期邀请了F叔分享云数仓的架构,BTW:F叔还是著名开源项目pualang的作者:https://github.com/flaneur2020/pua-lang
Weixin Official Accounts Platform
云上弹性数仓建设|Data Infra 研究社第五期
🥰1
#Rust
Rust Analyzer 作者亲自教你如何 hack 它:https://www.youtube.com/watch?v=I3RXottNwk0&feature=youtu.be
原推:https://twitter.com/RustTalk/status/1582916057093656576
Rust Analyzer 作者亲自教你如何 hack 它:https://www.youtube.com/watch?v=I3RXottNwk0&feature=youtu.be
原推:https://twitter.com/RustTalk/status/1582916057093656576
YouTube
Explaining Rust Analyzer: 01 Repository Overview
Discussion: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/ERA.20series
Playlist: https://www.youtube.com/playlist?list=PLhb66M_x9UmrqXhQuIpWC5VgTdrGxMx3y
Playlist: https://www.youtube.com/playlist?list=PLhb66M_x9UmrqXhQuIpWC5VgTdrGxMx3y
#杂
上一次谈了程序员这个职业给我的最大规训是“错误处理”,其实除此以外还有别的思维锻炼,打算逐个聊聊,今天聊“压力测试”。
做C端的同学可能不太了解“压力测试(benchmark)”的概念,简单做个说明。
比方一个服务在上线之前,业务的可用性(Availability)要求99%的请求都在10ms返回,这时候就需要测试这个服务在多大并发请求下能达到这个指标。
有了这个数据之后,根据估算出来的业务同时并发数量,可以来反推需要多少服务器才能满足前面的可用性指标。
这里只是最简单的介绍,实际上线时要考虑压力测试一般都是在理想情况下做出来的,另外还要给系统一定的冗余度(尽量不要刚好到水位的阈值),所以需要给前面的测试数据打一个折扣。
回到“压力测试”这个话题本身,给我最大的概念就是:(压力)测试环境才能更全面了解一个人(公司、组织)。
比如一个人会说一些很漂亮的话,可一旦面临一些压力,话和动作就会变形;
比如一些公司,说起“愿景”都是很漂亮的话,但是遇到营收压力的时候身体的动作才是最真实的;
比如建筑物,都会给出说明在怎样的压力下能保持多大的耐久度,等等。
简而言之,一个指标、承诺都不是凭空给出的,要看ta当时所处的压力测试环境,结合起来看才能更全面了解。
山本耀司有一段话:“自己”这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解“自己”。 所以,跟很强的东西、可怕的东西、水准很高的东西相碰撞,然后才知道“自己”是什么。我觉得这句话就带有很浓的“压力测试”思维。
再比如,去年在线K12教育团灭,在这个“压力测试”背景下,俞敏洪及新东方的表现让我很意外,这个可能才是更接近于真实的。
“压力测试”给我的第二个规训,是看统计数字的时候不太看“平均值”这个指标,因为这个指标不能反映数据的分布,更好的是看比如“中位数”,即半数以上的数据都在哪个数据线之上,或者9成以上都在哪个数据线以上,这类指标更能反映数据的分布情况。
最后,尽管有压力测试才能更全面了解一个人,但是不建议“压力测试”用在考验人性身上,因为还有一句话:“人性经不起考验”,并不是所有时候都需要足够的理性、客观,有时候也需要“难得糊涂”,要不然活得太累了。
对自己来说,尽管“压力测试”下才能看到更接近于真实的表现,很多时候也不必为自己在压测下的表现感到过分沮丧,相信自己能随着环境、见识等等的变化,能一点一点进步的,一时的表现不能说明一切。
上一次谈了程序员这个职业给我的最大规训是“错误处理”,其实除此以外还有别的思维锻炼,打算逐个聊聊,今天聊“压力测试”。
做C端的同学可能不太了解“压力测试(benchmark)”的概念,简单做个说明。
比方一个服务在上线之前,业务的可用性(Availability)要求99%的请求都在10ms返回,这时候就需要测试这个服务在多大并发请求下能达到这个指标。
有了这个数据之后,根据估算出来的业务同时并发数量,可以来反推需要多少服务器才能满足前面的可用性指标。
这里只是最简单的介绍,实际上线时要考虑压力测试一般都是在理想情况下做出来的,另外还要给系统一定的冗余度(尽量不要刚好到水位的阈值),所以需要给前面的测试数据打一个折扣。
回到“压力测试”这个话题本身,给我最大的概念就是:(压力)测试环境才能更全面了解一个人(公司、组织)。
比如一个人会说一些很漂亮的话,可一旦面临一些压力,话和动作就会变形;
比如一些公司,说起“愿景”都是很漂亮的话,但是遇到营收压力的时候身体的动作才是最真实的;
比如建筑物,都会给出说明在怎样的压力下能保持多大的耐久度,等等。
简而言之,一个指标、承诺都不是凭空给出的,要看ta当时所处的压力测试环境,结合起来看才能更全面了解。
山本耀司有一段话:“自己”这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解“自己”。 所以,跟很强的东西、可怕的东西、水准很高的东西相碰撞,然后才知道“自己”是什么。我觉得这句话就带有很浓的“压力测试”思维。
再比如,去年在线K12教育团灭,在这个“压力测试”背景下,俞敏洪及新东方的表现让我很意外,这个可能才是更接近于真实的。
“压力测试”给我的第二个规训,是看统计数字的时候不太看“平均值”这个指标,因为这个指标不能反映数据的分布,更好的是看比如“中位数”,即半数以上的数据都在哪个数据线之上,或者9成以上都在哪个数据线以上,这类指标更能反映数据的分布情况。
最后,尽管有压力测试才能更全面了解一个人,但是不建议“压力测试”用在考验人性身上,因为还有一句话:“人性经不起考验”,并不是所有时候都需要足够的理性、客观,有时候也需要“难得糊涂”,要不然活得太累了。
对自己来说,尽管“压力测试”下才能看到更接近于真实的表现,很多时候也不必为自己在压测下的表现感到过分沮丧,相信自己能随着环境、见识等等的变化,能一点一点进步的,一时的表现不能说明一切。
Telegram
codedump的电报频道
#杂
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
做了这些年程序员,这个职业给我日常工作生活最大的“规训”就是“错误处理”。
做一件事情之前,下意识会想:这个事情可能出什么错,错误如何处理,有哪些可以兜底、优雅一些处理这些错误的策略,等等的。
这些下意识的错误处理N板斧,还是很管用的,让我避免了很多可能出错的情况,也有了应对错误的处理机制。
👍40