Tag: 编程

C++中的 const和constexpr 比较

C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr 编译期常量? 可能 一定(否则编译报错) 支持运行期? 支持 支持(在需要时运行期求值) 用于数组/模板参数? 仅当确实是常量 保证可用 允许函数? 仅限成员函数限定符 支持完整函数且可在编译期求值 1  声明不可变数据 const:构造后不可变 …

简易教程: C++的智能指针

C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个 unique_ptr 拥有。 示例:管理简单对象 #include <iostream> #include <memory> int main() { std::unique_ptr<int> p = std::make_unique<int>(42); …

Alan Becker 的动画教学视频是非常好的启蒙材料

自从去年家里装修完之后,我们在厨房装了一台电视,平时吃饭时会随便看看一些视频。大约两个月前的一天中午,我从学校接弟弟回家吃饭,无意间发现了一个叫 Alan Becker 的动画视频系列——“Animation vs.”,是 YouTube 上的一个非常有创意的系列。他最出名的作品之一就是《Animation vs Math》。 Alan Becker 的这些视频通常用一群小人(也有人叫他们“小黄人”、小橙色、火柴人)在电脑屏幕上互动的方式,讲述一个个富有创意、又带有教育意义的故事。虽然整个系列几乎没有一句对白,但却通过画面和动作把复杂的知识点讲得既直观又有趣。 我最喜欢的四个视频是《Animation vs Math》、《Animation vs Coding》、《Animation vs Physics》和《Animation vs Geometry》。每一集不仅让人捧腹大笑,还让人对背后的知识产生兴趣。比如在《Animation vs Math》中,小人们在坐标系、函数图像之间跳跃和作战,看得人不知不觉就理解了各种数学概念。而《Animation vs Coding》则展示了编程的魔法,小人甚至“黑进”了主人的电脑,自己写代码!《Animation vs Physics》里,小人们挑战了牛顿定律、重力和能量守恒,用夸张但合理的方式演绎了物理知识。 《Animation vs …

写了十几年代码, 谷歌/Google认为我还不够Senior

我儿子也说我不够Senior: 去年9月,我第三次面试伦敦谷歌,目标是一个SRE(站点可靠性工程师)职位,抱着试试看的心态参加了面试。第一轮面试的最后两分钟,回答了一个关于如何将算法应用于分布式系统(如何优化算法)的follow-up问题,表现得不太好,因此没能通过那一轮。 不过严格来说也不算被拒绝。等了三周后,他们告诉我最终选择了另一位候选人,虽然我的表现不是最出色的,但应该达到了最低门槛,所以并未直接拒掉我,而是建议我等待伦敦的其他职位空缺再申请。 这一等就到了12月。这位谷歌的美女猎头联系了我,很快安排了隔一周的两轮算法与编码面试。新年后还有两轮:一轮系统设计,一轮文化匹配(也就是行为测试)。 这是我第二次进入谷歌的终面(Final Rounds),也就是 Onsite Interviews。 谷歌终面:接近L5却被给L4,大饼画得响 面试结束后的第二周,我发了邮件询问结果,但没收到任何回复。又过了一周,还是毫无消息。我一度以为自己被拒绝了,甚至怀疑是不是发挥太差,谷歌连拒信都懒得发给我。 上周(面试后的第6周),突然就接到猎头的邮件,她说: I hope you’re keeping well! Apologies for my delay I’ve been unexpectedly out the office. Your feedback isn’t …

时代不同, 我儿子10岁就能通过github pages做一个静态网站

今天,我二娃搞了一个网页/网站,他通过 GitHub Pages 完成的,其实不难。几天前,他注册了一个 GitHub 账户(被戏称为全世界最大的“同志网站”——gayhub),取了个 ID,叫做 ryanhlai。原本他的用户名是faceless15748,他说 faceless15 已经被人注册了,不过后来我说要专业一些,因为要用一辈子,所以让他选了他自己名字的缩写。 他还自学了 HTML 和 Markdown,并且稍微懂一些 JavaScript 和 CSS。比我十岁时强多了。我十岁的时候,记得的只有在院子里玩泥巴。 我娃自己查文档、搜索,还会用 Copilot,他说以后想和我一样成为软件工程师。我竟然有点小小的感动。 在这个信息化的时代,技术的门槛越来越低。回想起我小时候,接触计算机和编程的机会并不多,学习的资源也十分有限。然而,今天的孩子们拥有无数的学习机会和工具,他们可以通过网络和开源项目实现几乎任何想法。 什么是 GitHub Pages? GitHub Pages 是一个免费的静态网站托管服务,用户可以通过 GitHub 仓库将 HTML、CSS …

教娃编程有趣的瞬间 vlog视频集合

教娃700天:写在教娃编程700天, what’s next?。有很多有意思的瞬间记录一下,持续更新。 和孩子一起打闹,学习,成长。 教娃编程孩子有趣的瞬间 vlog(Day 641) 娃说我不够 Senior(Day 701) Bro.. I thought you’re like senior… Yes, I am senior! You should know how to do it then.. I’ll …

Sui 区块链编程: 通过 NodeJs/Javascript 函数获取 Gas 费用

在区块链开发的世界中,理解和管理gas费用对于优化交易至关重要。Sui作为一个相对较新但功能强大的区块链平台,有其独特的方式来处理gas价格。让我们来探讨如何使用Node.js和JavaScript获取Sui的gas价格。 Sui中的Gas理解 在区块链语境中,gas指的是执行交易或智能合约所需的费用。在Sui中,gas以MIST计量,其中1个SUI等于10^9个MIST。这意味着gas价格通常以每个交易或操作的MIST来报价。 获取Gas价格 这里有一个简单的异步函数来从Sui节点获取当前的gas价格: const QUICKNODE_URL = "https://sui-mainnet-endpoint.blockvision.org"; // 你可以使用你自己的节点。 async function getGasPrice() { try { const response = await axios.post(QUICKNODE_URL, { method: "suix_getReferenceGasPrice", jsonrpc: "2.0", id: 1, …