普通视图

发现新文章,点击刷新页面。
今天 — 2025年5月19日独立博客

無為自然

作者 ONO
2025年5月19日 11:00

读作むいしぜん(muishizen),日语里「浑然天成」的意思,取自中国哲学里的「无为」,强调自然而成,不需要人类的干预而自然形成。

高中有一年暑假作业,我实在不想完成 10 篇不一样的作文,就干脆在作业本上写了一部恐怖小说,集合了我小时候所有经历过的灵异事件和在潜意识里的恐怖符号,比如长廊、没有出口的楼梯、颠倒的房间等等。它的体量远远超过了 10 篇 800 字作文的量,还被老师夸赞了一番,但是老师也提出了疑问——为什么男主角没想过要在这种聊斋志异的故事里逃出来?

逃出来就意味着要么故事就此结束,他的勇气战胜了恐惧;要么他的暂时胜利一定会换来更恐怖的灾难,但是我能想到最恐怖的事情也仅仅是这些童年记忆深处的恐怖符号了。

在创作技巧不足时,创作者总是希望通过追求量大管饱的方式来展现自己的诚意,以至于「剧情」和「人物」都会被压缩,为「背景」提供更宽广的舞台。


之前参加过一个剧本创作团队,因为他们几乎是做世界观出身的,所以在「背景」方面尤为考究,既想要「有依可循」又希望「脱离框架巧妙解读」。于是我当时说出了一个让他们生厌的词,明显能感觉他们对这个词有向外人重复解释、规避过,这个词就是——历史虚无主义。

故事的「有依可循」是否意味着一定要贴合某种存在的历史,从而为「此刻」发生的故事进行背书。比如中国人向来善良,那么剧情和人物也需要符合善良的设定,否则便是对历史的反对。这个就跟中国式的灾难故事一样,东方明珠在世界末日中可以被毁灭,因为那是一种符号丰碑的坍塌,但是天安门和中南海就绝对不能,因为那是民族和政权的根基——同样的,如果进入到废土文化中的漂浮大陆,中国式科幻还需不需要在这个大陆上重新建立的政权里明确表达还有「党组织」的存在?

剧本中人文景观的「难」就在于它很难全盘无视历史的存在,否则就会触犯文字炼狱的条款。我前几年写过一部小说,就是太烦去构建人文景观里的「合理性」,所以完全架空在了未来的某一个联合政权的国度上,而完全跳过了政权这个概念。但是这种搭建景观的过程也会被人「嘲笑」:一个中国人写的科幻小说里角色竟然会用外国人的名字,这真是「没自信」的表现。

那构建一个中国式的科幻小说,首先就要讨论「政权」是否已经更换?还是要弱化中央集权制的存在——除非剧情就是在这样的政权下诞生的——比如我当时的小说其实就是建立在中央集权制的规则之下的,如果再用「中国人文」,是不是太有指向性了?

当人文景观难以搭建,于是就会回到最容易也是最让人「着迷」的部分——自然景观。


搭建自然景观之所以着迷,这件事从剧本跳脱,现实也能找到类似的清醒——交代背景故事。在社交聊天中,我对背景故事非常敏感,比如一笔带过的某些背景,或是反复地、冗杂地交代某些背景,其实都需要从「剧情」和「人物」上找到对应的此消彼长。

人类的记忆具有「篡改」功能,特别是那些常常被提起、反复向人倾吐、重复回味加工的记忆,会将很多细节渐渐靠向「对自己更有利」的情况。无论人们是否有意识,这种无意识的加工,其实是人对自己的一种保护机制。比如当我意识到我可以通过「惨烈」的故事博取他人安慰和关注时,我的故事就会变得越来越「惨烈」;或是我其实才是这段历史事件的始作俑者,我为了降低自己的负罪感,开始加入了更多的「阴差阳错」来洗脱自己的罪孽。

故事背景越丰富,在现实来讲,就意味着「不得已」越多,而在剧本里就是「规则」越多。越是巧妙构建的情境,比如在哪些阴差阳错中将自己的罪孽降到最低的故事,看上去自己什么也做不了,只能默默接受事件的发生;跟在剧本里误闯异世界的主角一样,这个世界的规矩太多了,他们如此精巧美妙地运作着,此时的创作者虽然是创造「剧情」和「主角」的人,但是他也是这个精妙世界的神,他对这里运作的规则都了如指掌,那些精巧的结构、隐喻、逻辑链条,都值得展示给观众,以至于他不允许任何人破坏这里的规则,就算主角有那个本事,也一定是在破坏规则后,被这里的另一个更大的规则进行惩罚。

这便是之前在《自業自得》里提到的「旅游导览手册」


在博客大巴时期(有点出卖年龄了),我被邀请参与过一次「小说接力」,所谓的小说接力就是各凭本事将故事继续下去,甚至没有剧情、人物和背景的任何要求。于是故事就会朝着各种不同的路径发展,最终不了了之——原因当然是因为这样的游戏一定是自娱自乐的,因为它没有框架结构,所以剧情和人物都没有线性可言。

后来这种「接力」的形式出现了各种各样的变形,比如人类观察日记、流浪笔记本、忒修斯之船、后室创作等等。他们会开始要求「规则」的存在,甚至会有大量的人员自发性地维系规则的存在,比如后室某一层的湿度是 45%,那就得是 45%,过分地破坏规则,就意味着「不尊重规则」。

「背景」让创作者着迷就跟沙盒游戏一样,因为它可以完全规避「剧情」和「人物」的构建技巧,只需要安排一个人,像是旅游一样地「看见」正在发生的事情,与「背景」这个庞大的角色进行互动,得到对应的(甚至是规定好的)反馈,所要呈现的是规则,以及对抗规则将会遭受的惩罚。

回到现实,这些所谓的「规则」就是背景故事里的那些「外归因」,自己之所以无法突破束缚,就是因为有那些外归因捆绑着自己——你真到了要跟对方聊起如何拆解束缚的时候,他们就会逃走,因为没有了那些外归因的束缚,他们是否意味着就必须要面对那些悬而未决的事情了?

这就是现实世界,构建「背景」的迷人之处。


最后联动一下另一个聊过的话题——人们之所以「改造自然」,特别是构建一个充满了规则和逻辑的世界,像是自己在充当这个异世界的神的过程,其实就是人们对权力追求的形式之一,在建造一座权力的花园

无论是中国皇家园林、还是达官贵族把玩的盆栽、还是欧洲中世纪时期的音乐喷泉,都是在将「自然景观」进行人为干预的过程,而在这个过程中便有了与「神」平等的地位,即改造自然,一山一水、一水一木,都可以根据自己的想法移动,从而接近人们认为的「美学比例」。改造自然,然后又将改造的自然无限地接近他们认为的美的自然——那这还是所谓的「无为自然」吗?

一个人创作一个作品,特别是在编制那个美轮美奂的异世界规则时,也是「神」,所以他们更不希望有这样一个「主角」可以轻易地毁掉自己的世界,所以有一些作品就会呈现「旅游」的气息——当然,我并不是说这样的作品就是错的,各花入各眼罢了。

而现实世界的那些「外归因」,太多着迷对于外归因的构建,那「人物」自然就会被的弱化甚至失去主体性。

碾转

2025年5月19日 15:49

刚看到 “碾转” 这俩字点进来的朋友,估计还摸不着头脑。其实这是种吃食,现在知道的人不多了。

过去青黄不接的时候,地里的青麦熟了,人们就割下青麦,搓掉外皮,把麦仁蒸熟晾干,再放进石磨里碾。磨盘一圈圈转,出来的细长条,就是碾转。吃法不讲究,打俩鸡蛋炒一炒,或者拌点蒜末香油就能吃。晒干了收起来,想吃的时候上锅一蒸,照样能填饱肚子。老一辈人靠着这不起眼的东西,熬过饥荒,等到新麦磨成面粉。

等我记事时,日子没那么紧巴了,谁家也舍不得割还没熟透的麦子。做碾转又费工夫,得守着石磨一圈圈推,慢慢就没人做了。我就吃过一回,还是邻居大娘送来的。那碗碾转端在手里,麦香直往鼻子里钻,吃起来又筋道又香甜,到现在都忘不了。

前两天上班路上,瞧见有小贩在卖碾转,用白布盖着,底下透出青绿的颜色。我称了半斤带回家,妻子压根没听说过这东西。我搁锅里用油炒了炒,吃起来还是那么有嚼劲,可总觉得少了点啥。想来想去才明白,现在啥都不缺,吃啥都不稀罕了。小时候难得吃上一回,那滋味里掺着期待和满足,哪是现在能比的。

有些味道,大概只能留在回忆里了。

阳新县百洞峡半日游

作者 山野愚人
2025年5月19日 09:59

百洞峡位于湖北省阳新县,距离武汉一百多公里,车程也就2个多小时吧。趁着工会活动,去这里游玩了半日。

炎热的夏日,外面热浪似火,但一到洞口,便有清凉的气流迎面吹来,格外凉爽。徐徐入内,沿着甬道而入,便仿佛进入了另一个世界——千奇百怪的溶洞世界。

溶洞内幽暗曲折,大大小小的钟乳石林立其中,或大或小,或长或短,形状不一,让人产生无限联想,如鬼斧神工造就一般。

映衬着洞内五彩灯光,景象更显光怪陆离,踏幽静、绕石穹,在蜿蜒的洞内小路上探索前进,时而上时而下,左右穿梭中浏览着大自然给予我们的神奇危之景,不由得阵阵感慨。

出溶洞,已然来到悬崖峭壁之上,沿着栈道而行,聆听着山谷中风的声音,倾听着树木摩挲的低语,仿佛与此融为一体,甚是畅快。

周报 #95 - All AI 与 No AI

2025年5月19日 11:02

前言

weekly_review_95

本篇是对 2025-05-052025-05-12 这周生活的记录与思考。

这周看到一些有意思的关于 AI Coding 的思考或是讨论,也结合着自己 AI 使用的经历来聊一聊想法。

All AI 与 No AI

AI 与自我

最初是看到了一篇言辞颇为激烈的文章「AI 正在让人变得前所未有地自以为是」,其中有这样几段话 ——

ai_ego

虽然我同样对一些过度鼓吹 AI 从而达成自己个人营销目的的个别“网红”也有些反感,但并不觉得“程序员”一词需要刻意构筑一道门槛来将一些非科班或是技术爱好者拒之门外。

我大学时也是与代码毫不相关的文科类专业,当时即使真的只是用 python 写出一个冒泡排序也会让我感受到奇妙,第一次接外包单子给一个公司用 php 做官网时的感受至今依然记得,那是我第一次作为程序员完成的作品,或许现在看来确实并不一定如一个实习生所能做到的,但依然不妨碍我从中获取的成就感。

甚至也很羡慕现在的人,有了 Cursor 这些 AI 工具加持,可以做出许多复杂度远远高于自己当前知识储备的应用,并不一定是逐行都理解,但想法到实现的路径早已被大大缩短,模块化设计、模型、需求调整这些也会在 AI 写码的过程中融入开发者自身的思维。

编程并不是塞尔达的大师之剑那样一个需要费尽千辛拔出来的荣耀的象征,而更多是普罗米修斯传递的火种,并不稀有,但对世界的运作改变深远。

ai_renaibao

但还是希望像「AI 编程」 vs. 「热奶宝」文中所说的那样,希望对编程毫无热情而只把 AI 编程作为流量密码的人少来污染这个行业了。

NO AI

polebug_ai

看到并且也深切感受到了对于过度依赖 AI 造成的焦虑或是恐慌,我现在同时用两个 Cursor 账号、一个 Windsurf,一个 v0.dev,这些 IDE 或是工具的 Agent 模式已经成为了我想要实现一个新功能时的本能反应,也已经太久太久没有依赖搜索引擎和官方文档本身(除了 SwiftUI,没办法,LLMs 语料太少了)。

确实会有一种很矛盾的感觉,一方面对自己所能开发的领域、边界有了更多信心,可以开发前端、iOS 甚至是各种之前并不了解的技术栈;而另一方面,对于自己离开 AI 后独立写代码的信心在显著下降,连带着自己独立思考的能力。

ai_code_wwwyesterday

倒不至于说对 AI 生成的代码有多少羞耻感,只是确实比起自己敲的代码,少了些许“真实感”,不过我想随着 LLMs 更快速的发展以及自己的工作流中更好地与其融合,这种感受也能慢慢地有所缓解。

而看到 No AI 的实践,我甚至想相反地去实践 All AI,在一些 side project 或者个人项目中完全用 AI 去实现,用 AI 修复 AI 产生的 bug,而自己在其中去探索工作流的优化,看看实践了一阵子后究竟是 No AI 还是 All AI 所带来的成就感更高,或许也很有趣。

AI 与思考能力

但我对于非编程类的 AI 实践却有些趋于保守,很少用 AI 类的搜索引擎,也并不怎么用 NotebookLM 或是 Gemini Deep Research 这样的工具来帮助消化学习。

诚然 AI 降低了很多知识获取与学习的门槛,但我依然不敢信任它在我未曾涉猎的领域中给出的似乎条分缕析的回答或是长篇大论的 Research,如果有一天我对 AI 生成的东西感到陌生或是完全无法判断真伪,可能会更担心是不是自己已经丧失思考能力了吧。

程序员算是 AI 浪潮的比较直接的受益者,LLMs 很大程度改变了我的工作模式和行为习惯,我也偶尔会偷懒让 AI 帮我总结或是用沉浸式翻译读英文资料,但我依然不会也难以想象用 AI 帮我写周报/博文,或许它终有一天能做得不错,却少了灵魂和一些微妙的“人”感。

有趣的事与物

软件

subo_screenshot

在 Twitter 上看到 CaiCai 推荐了一个订阅管理软件「Subo」,试用了一下就为了它的多币种功能付费了,整理了自己的各种订阅/服务器,好用 & 很有设计感!

输入

虽然大部分有意思的输入会在 「Yu's Life」 Telegram 频道里自动同步,不过还是挑选一部分在这里列举一下,感觉更像一个 newsletter 了。

我把 Telegram Channel 消息作为内容源搭建了一个微博客 —— 「daily.pseudoyu.com」,可以更方便浏览了。

收藏

文章

视频

剧集

周报 #94 - 生活的界限与真实感

2025年5月19日 09:03

前言

weekly_review_94

本篇是对 2025-04-282025-05-04 这周生活的记录与思考。

这周是五一,久违的长假,放下了疲惫与焦虑,“摆烂”地享受了几天,看剧、运动、招待朋友,发现似乎更能找回一些生活的节奏;也补了 Rust 和 SwiftUI 的课程,重构了之前的项目;还有很多有意思的事。

生活的界限与真实感

界限

severance_post

我时常觉得自己有一根弦一直绷着,并不是很具象的来自工作或是生活的什么压力,而是一种源自内心的焦虑,例如有一个完整的周末,我似乎很难真正放松下来打一天游戏(即使我真的很想把《宝可梦朱/紫》通关),给自己安排了许多“正”事,却又会因为学习或是目标达成不尽人意而进入自责的循环。

这个五一假期却有了一些例外。假期前我依然给自己安排了许多学习、工作,但因为沉迷看一部新韩剧《苦尽柑来遇见你》和玩《双人成行》而“虚度”了好几个下午,但整个人却似乎融化在了这种舒适的日常中,搁置了那些不良的情绪,只是享受其中。

似乎很久没有这样的时候了,即使只是“在假日休息”这样天经地义又简单的事。

在看《人生切割术》的时候我也常常在想,我现在的生活有时还常常不如剧中那样通过一部电梯来彻底地割离工作与生活,甚至有些羡慕。不由得也开始反思自己是否真的需要填满这些时间,匆匆忙忙地奔波在一项项任务中,模糊了生活的界限。

而对于远程办公已经近两年的我来说,这种界限并不是一个具体的上下班的时间节点所切分的时间片段,而是一种心态上的定义或是掌控感,让自己不再被这些具体的一项项事务裹挟着进入日复一日的循环。

真实感

DSCF0710

最近工作内容是并不熟悉的技术栈,常常因为代码写不出来/焦虑而熬夜,甚至也有一天因为夜里开会而吵醒了学姐,持续了两周后有些消耗,但似乎处在一个无解的状态里,确实是需要投入这些时间去学习/完成这些工作,却又由于这些被占据的时间与随之而来的情绪而压垮了仅剩的一些生活的空间。

DSCF0731

刚好周五同事 Ares 和 Innei 来家里作客,中午我在家里做了牛排简餐,傍晚一起去天目里拍照,交流着相机、镜头,驻足于配色好看的摊位、与对面同样拿着相机在四处拍的陌生人拿着相机对狙,纯粹的快乐。

i_m_still_here

movie_threater

晚上又和学姐去看了一部电影「I'm Still Here」,在一家可以一边吃东西一边观影的影院,很惬意,整个周末也似乎因为着短短的几个小时而延长了,变得充实而真切。

或许有时候出去走走,去触碰一下窗外的雨滴,感受一下空气的流动和温度,就能为生活注入一些真实感。

苦尽柑来遇见你

kujinganlai

这个假期花了几天时间追完了这部新出的韩剧,原本只是每天吃饭的时候看下,两集之后就有些上头,看完后有些意犹未尽和怅然,似乎陪伴着他们走过了一生,他们之间的爱情自不必多言,其中更打动我的还有三代人之间的情感传递与循环,似乎常常也会落入同样的命运选择中,却又由于根植在生命中的来自上一代的传承而有一些微妙的不同。

之前就一直很喜欢《请回答 1988》和《老友记》这类更偏群像的讲述人生某个阶段琐碎日常与情感的剧集,或许 P5R 这类游戏也是,我期待从中找到一些陪伴感,他们也常常会在生活的许多偶尔的阶段里给予我前行或是回望的勇气。

有趣的事与物

输入

虽然大部分有意思的输入会在 「Yu's Life」 Telegram 频道里自动同步,不过还是挑选一部分在这里列举一下,感觉更像一个 newsletter 了。

我把 Telegram Channel 消息作为内容源搭建了一个微博客 —— 「daily.pseudoyu.com」,可以更方便浏览了。

播客

收藏

文章

  • How the Raycast API and extensions work,raycast 的体验真的甩同类 Alfred 已经太远了,解读技术实现的文章也很清晰。
  • 我的三天心动原则,我之前看评测很心动大疆的一个无人机,激情下单,但发现到手后忙一些事三天都没空拆开快递,想到以前真正想要的东西都会一天刷三十遍快递去驿站自己取的,于是就退货了。

视频

剧集

  • 苦尽柑来遇见你,近几年最喜欢的剧了!!!有点找回了看《请回答 1988》的感受,但由于故事更完整,看着看着就像是陪她们度过了整个人生,有好几个地方都看哭了。
  • 最后生还者 第二季,非游戏党,看完第一季印象比较深,追一下。
  • 雷普利,剧情虽然没多少悬疑的部分,但节奏很棒,也好喜欢这部的光影和意大利人特有的松弛感,想去。

C++ 教程: 用std::move来移动所有权


📘 C++ 移动语义与 std::move() 教程

C++的std::move用于转移变量/对像的所有权/Ownership。

🔹 什么是移动语义?

在 C++ 中,移动语义通过转移资源所有权/Ownership(如内存或文件句柄)来优化性能,而不是复制它们。

移动语义是在 C++11 中引入的,它允许:

  • 更快速地传递大型或昂贵的对象
  • 更高效地使用临时值

🔹 什么是 std::move()?

std::move(x) 并不会真的移动任何东西 —— 它只是将 x 转换为一个 右值引用(即 T&&),告诉编译器:
你可以把这个对象当作临时对象来处理并移动它。

要真正实现移动,你的类型必须实现 移动构造函数移动赋值运算符

✅ 什么时候该用 std::move()?

在以下情况下使用它:

  • 你想 转移资源的所有权
  • 你正在处理 复制开销大的对象(如 std::stringstd::vectorunique_ptr)。
  • 你写的函数按值接收参数,并希望将其移动进成员变量。

🔍 std::string 示例

#include <iostream>
#include <string>
#include <utility>
int main() {
    std::string a = "hello";
    std::string b = std::move(a);
    std::cout << "b: " << b << std::endl;
    std::cout << "a: " << a << std::endl;
}

🔍 移动 std::vector

std::vector<int> original = {1, 2, 3};
std::vector<int> moved_to = std::move(original);
// original 现在为空(但仍然有效)

⚠️ 移动后会发生什么?

移动后:

  • 被移动的对象 仍然有效
  • 但其 内容未定义 —— 你只能销毁它或重新赋值。
std::string x = "abc";
std::string y = std::move(x);
// x 现在处于有效但未定义的状态 —— 不要再读取它!

🧠 对内建类型使用 std::move()

int x = 42;
int y = std::move(x);  // 实际是拷贝,因为 int 没有移动语义

没必要,因为像 int 这样的基本类型不支持移动构造。

🛠️ 自定义类型实现移动语义

class MyBuffer {
    int* data;
    size_t size;
public:
    MyBuffer(size_t s) : size(s), data(new int[s]) {}
    // 移动构造函数
    MyBuffer(MyBuffer&& other) noexcept
        : data(other.data), size(other.size) {
        other.data = nullptr;
        other.size = 0;
    }

    // 移动赋值运算符
    MyBuffer& operator=(MyBuffer&& other) noexcept {
        if (this != &other) {
            delete[] data;
            data = other.data;
            size = other.size;
            other.data = nullptr;
            other.size = 0;
        }
        return *this;
    }
    ~MyBuffer() { delete[] data; }
};

使用示例:

MyBuffer a(1000);
MyBuffer b = std::move(a);  // 将 a 移动到 b

📦 std::move() 与智能指针

可以用 std::move来操作智能指针,比如 unique_ptr 或 shared_ptr:

#include <memory>
std::unique_ptr<int> p1 = std::make_unique<int>(10);
std::unique_ptr<int> p2 = std::move(p1);
// p1 现在为空指针

🔁 std::shared_ptr 所有权转移

当你“转移所有权”给另一个 shared_ptr 时,你实际上是:

  • 将控制块(用于跟踪引用计数)从一个 shared_ptr 移动到另一个。
  • 原来的 shared_ptr 变为空(use_count() == 0)。
  • 总体引用计数不变(仍为 1,除非还有其他共享所有者)。

✅ 示例:通过 std::move() 转移所有权

#include <iostream>
#include <memory>
int main() {
    std::shared_ptr<int> p1 = std::make_shared<int>(42);
    std::cout << "p1 use_count: " << p1.use_count() << std::endl; // 1
    std::shared_ptr<int> p2 = std::move(p1); // 转移所有权
    std::cout << "p1 is " << (p1 ? "not null" : "null") << std::endl; // null
    std::cout << "p2 use_count: " << p2.use_count() << std::endl; // 1
}

🔍 重要区别:shared_ptr vs unique_ptr

指针类型 转移机制 允许拷贝 主要用途
std::unique_ptr 仅支持 std::move() ❌ 不允许 独占资源所有权
std::shared_ptr std::move() 或拷贝 ✅ 允许 共享资源所有权,引用计数

⚠️ 注意事项

  • 可以使用 move 来转移 shared_ptr 的所有权(源指针将变为空)。
  • 也可以拷贝 shared_ptr 来共享所有权(两个指针都有效,引用计数增加)。
  • 只有在你明确希望原来的 shared_ptr 被置空时才使用 std::move()

🔄 常见使用模式

函数返回值使用移动:

std::string get_name() {
    std::string name = "Alice";
    return std::move(name);
}

只有在你想强制进行移动(比如返回函数参数)时才使用 std::move()

🚫 不该使用 std::move() 的场景

1. ❌ 不要从还需要使用的变量移动:

std::string s = "test";
std::string t = std::move(s);
std::cout << s;  // 内容未定义

2. ❌ 不要对 const 对象使用 std::move():

const std::string s = "hi";
std::string t = std::move(s);  // 实际是拷贝,因为移动构造<a  href="https://justyy.com/archives/67736">函数</a>无法接收 const 参数

🧪 总结速查表

使用场景 是否使用 std::move() 原因
移动大型容器或字符串 ✅ 是 高效转移内存或资源
移动智能指针 ✅ 是 转移所有权
基本类型(如 int、bool) 🚫 否 没有移动语义,等同于拷贝
const 对象 🚫 否 移动构造函数不接受 const
临时变量 🚫 通常不需要 已经是右值了

✅ 最后小贴士

如果你不确定该不该用 std::move(),问自己:
“我是否不再需要这个变量并打算把它交出去?”
如果答案是“是” → 那就用 std::move()

C/C++编程

英文:Tutorial on C++ std::move (Transfer Ownership)

本文一共 880 个汉字, 你数一下对不对.
C++ 教程: 用std::move来移动所有权. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++ 教程: 用std::move来移动所有权 C++ 学习笔记 编程 计算机
The post C++ 教程: 用std::move来移动所有权 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  5. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  6. C++ Ranges 教程 C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能。 什么是 Range? 在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图) 和 actions(操作) 如过滤、转换等配合使用非常自然。...
  7. C++中的 const和constexpr 比较 C++ const 与 constexpr:真正的区别是什么? 一眼看都是定义常量。 为什么这很重要 现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—const 和 constexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。 高层次对比 特性 const constexpr...
  8. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...

WordPress 古腾堡编辑器中媒体类区块使用说明

作者 Kevin
2025年5月18日 21:19

在 WordPress 的古腾堡编辑器中,媒体类别的区块专注于插入和展示各种媒体内容,如图片、视频、音频、画廊等。通过这些区块,用户可以轻松地将媒体文件与文本、按钮等内容进行组合,从而丰富文章和页面的展示效果。这些区块不仅能提升内容的互动性,还能使页面看起来更加生动和吸引人。

媒体类别的区块包含图片、图库、音频、封面、文件等 7 种,其中图片区块使用最频繁。除了图片,建议尝试其他区块,以增强文章的多样性。我将在本文中详细说明,并插入真实的例子辅以演示。

1. WordPress 编辑器中的图片区块

图库区块占位
图库区块占位

当通过左侧区块插入图库区块后,我们可以选择上传图片、从 URL 插入或从媒体库中选择已有图片。上面的截图就是我直接通过 Ctrl + V 粘贴进来的,这相当于拖放操作。

需..... [ 阅读全文 ]


原文链接: https://www.shephe.com/website/wordpress-media-blocks/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

💾

用户外活动填满五一:勒多曼因篇

2025年5月18日 15:45

null

书接上文。

小舅子他们在特种兵式的几天游玩之后表示最后一天想在家里休息一下,陪着他们吃了一天清淡的食物后,按了个脚,第二天一号他们便各自返回工作地去了。

而我们两口新的征程才刚要开始——下一站勒多曼因。

其实勒多曼因这个行程是五一之前就开始关注了的,因为之前徒步峨眉山、笔架山后加了很多户外群,五一前的偶然一天看到有人发了一个雪山冰湖皮筏艇的照片,并说准备开团出发,景点是我喜欢的那种风格,强度也还能接受,所以进群了解了一下,总共三天行程,:

  • 第一天成都集合,乘坐包大巴车出发去康定
  • 下午大概四五点到康定,吃晚饭,吃完后坐中转车去老榆林
  • 老榆林早起坐转运车出发去山脚下的格因草原开始徒步。
  • 徒步20公里,爬升到4300米左右,在山上营地住下。
  • 第三天早起冲顶,然后下山。
  • 各回各家。
  • 我们只需要带两天的路餐,其他的他们包。
  • 总费用650元1人,40人成团出发。

当时想着650这价格是真心不贵了,而且恰好能和小舅子他们来的时间错开,所以毫不犹豫的报了两个名。

但是在后面几天接待下舅子的过程中,群里消息不断,组织力度似乎不太够了,总共个加群的人有50多个,接龙说要去的也满了40个人,但是最后交钱的时候却不够包车的40人。

因为人数不够没办法拼大车,群主就开始降级说租20人小车,但是小车价格和大车只便宜了四五百块钱,最后摊下来每个人要多交100元,然后重新组织了一波接龙,不懂贵这100块会产生了多大的化学反应,这次直接20人都没凑齐...。

眼看着要散团了,但是我的瘾又被钓上来了,不想眼看着散团,索性就说我出个车,看有没有其他愿意出车的一起,凑个十几二十个人也还不错,终于在散团之际组织了三个车,最终有17人一起参与了这趟行程。

我们这个7坐车除开我和S,最终分两拨坐了5人。

先是3位泸州的朋友,两男一女,从泸州过来自贡上车,分别是快60的二叔,很会照顾人的刘姐,以及帅气的空少三笑。之后开车去成都接上2泰拳老师和一个川大的大学生。

后面就正式开始发图了,所以这里先吐槽一下这个团。

这个穿山甲不能算是正式的商业团,只能说是有一个大家信的过的群主去联系的车、住宿、餐食,规划好行程后在群里组织的,不过那点组织力几乎是没有,我们因为自驾所以最后减了100的团费,最终收的550元,但是当时承诺的东西一个都没达成,这里罗列已下,下次大家参加这种群性质的团一定要提前问清楚,留好文字存档。

  1. 说好的只用带路餐,但是最后第一天的晚餐需要自费,第二天的早餐也让我们自费,之后在山上说有鸡汤喝也没有准备,山上的营地的晚餐也很差,更别说早餐馒头还是馊的。
  2. 说好会花一千多请一个solo过贡嘎的领导,上山后发现人家是带了商团,几乎没管过我们团,另外一个年轻的小伙子说是被叫来管我们,但是就下山看到了他们一下,拍照服务之类的就更别提了。
  3. 转运车期初以为是什么大巴之类的,上去才知道想多了,全是那种小货卡,上面拉一块篷布就行了,后来听其他上山的说有人坐的车是拉牛羊的,全是屎...。

好了,亏已经吃了,只能说下次注意了。

行程分享正式开始。


我们5月3号从成都出发康定完美错开了车流高峰,全程几乎没有堵车,一路狂奔,车上听二叔说天全服务站有「此生必驾」318的牌子可以打卡,大家商量一致就在天全休息一会儿。

因为是自驾,所以时间比较充裕,路上又没有堵车,我们四点左右就已经到了康定,所以先去刘姐一个朋友开的餐馆吃了一顿菌菇牦牛火锅,老板做的蘸料一绝。

菌汤牦牛肉蒸气火锅

吃完饭才不到5点,所以大家准备一起去逛逛溜溜城。

我们本来是开车进城的,但是穿了一圈都没找到车位,最后在城区里堵了一个小时重新回到康定进城口的边上的一个集中停车场,20元一天,建议大家来这里玩不要想在城区找车位了。

卖青稞大饼,挺香的,下面的店铺15一个,走了一截发现全是从这个店拿的,人家只卖12元,这几步路就有3元的差价。

走到一半发现下雨了,还好穿的冲锋衣。并且凑巧这边有个广场在搞商业活动,似乎是请了什么藏族歌星在唱歌,虽然是藏文歌,但是唱的还挺好听的,不过摇一摇没识别出来。

大家累了坐在路边休息,因为雨大,二叔又没穿冲锋衣,所以暂时和他们分开,我们两口子单独逛去了。

康定旅游局局长同款抖音樱花大街。

溜溜城打卡,为什么叫溜溜城?

“康定溜溜城”这个充满诗意的别称,主要源于康定与《康定情歌》(又名《跑马溜溜的山上》)的深厚渊源。这首传唱世界的民歌让康定以“溜溜”之名广为人知,而“溜溜”在当地方言中更是承载了独特的文化意蕴,在康定及川西方言中,“溜溜”常用来形容事物“美好”“漂亮”“流畅”。

1. 溜溜城打卡 2. 小巷一景

藏族同胞们的广场舞是锅庄,那「锅庄」又是什么呢?。

锅庄(藏语称“果卓”或“歌庄”)是藏族民间广泛流传的一种传统集体舞蹈,尤其在四川、西藏、云南、青海等藏族聚居区盛行。它不仅是重要的娱乐活动,更是藏族文化、宗教和社会交往的载体。

康定的夜景还是非常漂亮的。

天色渐暗后和大家汇合,去往老榆林的民宿休息。

因为对这边的卫生环境不报什么期待,所以提前买了隔脏睡袋,用塑料袋+垃圾桶装了点热水泡脚,早早便躺下休息了。

1. 早起民宿外的风景 2.房间环境 3. 早起窗外的雪山 4. 隔脏睡袋

没有领队,更没有领队说让我们拍出发照,所以我索性叫上大家一起随便拍了一张。

17个人就这几个拍了照...。

坐上蓬卡就出发了,一路上看不到外面,但感觉早餐都要被颠出来了,估计外面到处都是导弹坑。

车上手机拍的远处雪山

1. 格因草原 2. 马帮的马

今天天气不错,依旧没看到领队...。

过木桥,水很凉,都是山上流下来的雪水。低山区

路过一个红石滩

低山区还有很多松树。

在徒步过程中海拔逐渐上升,慢慢树木就变成灌木和草甸,一路上会还经过各种路况:石头路,涉水路,草甸,沼泽等等。

一处绝佳的和雪山合影的机位

我也来一张,在这里不小心把登山杖掉落滚到峡谷下面去了。😅

一爬一个不吱声

有点累,生命力照片一张。

沿途的树木变成了灌木和草甸。

二叔年纪打了,自重也太重,大家都劝他坐马算了,他也听劝,800块直接座马去了营地。后来到营地听他说座马也听危险的,他上去的时候马没站稳前跪了,把他甩到沙地里了,我们在说幸好是沙地...。

终于走了快一半了,两岔河营地吃个午餐

一桌子的方便面碗和围了一桌子崩溃的驴友们。

继续出发

在一个绝望坡前碰到了其他队友,我不拍照大家是真不想拍合照....,碰上我这种队友是真挺好的。

中间那个是本次帮忙的「领队」

最不想走的就是这种河谷路段,全是碎石头。还碰上大风,风里还夹着小粒的冰雹。

最后一个绝望坡,进入雪线了,天上也飘起了小雪。

绝望坡后面的美景

终于到营地了!

营地景色全览

太累了,完全不想拍照用其他人发的照片把。

休息的棚子。营地的饭菜很不好吃,大家草草吃完便都上床准备休息。

因为营地在海拔4300米左右,加上棚子里氧气不太流通,所以帐篷里十几号人晚上过夜的时候都有不同程度的高反,症状基本上都是头疼。我后半夜睡了会,基本上是醒半小时睡半小时左右,我旁边的一个大学生几乎整夜没睡觉,两三点的时候还爬起来说想下山...,一整晚的噪音把他旁边的一个能睡着的老驴折腾到一晚上没怎么睡,感觉老驴也很难受哈哈。

S就是说觉得冷,因为棚子四处漏风,漏风最严重的就是我们躺下后头顶的地方,风大的时候我问不得不起来给她过上急救毯才好些。

后半夜风停了,我帮她把睡袋裹紧,把头罩住就留个鼻子嘴巴出来,才算是踏踏实实睡了好几个小时,比我有出息多了。

第二天四五点大家便陆续起床了,还能看到星空,但是我手机和充电宝都被冻没电了。

早餐的包子是馊的,我就喝了点稀饭,吃了自己带的面包。

因为出发的时候黑黢黢的,手机也没电了,就没拍什么照片,同行的刘姐借了他的充电宝给我用,让我得以续命。

天终于渐渐亮起来,发现我们被大雾追赶着,手机也有一些电了。

跟着前面的队伍的步伐,发现我们没有走常规的泥巴路线,而是条沿着河谷上行的碎石路段,然后踩着雪沿着山脊线的去往山顶,体验顶满,后来听前面的队友说起才知道,他们跟着一个商团的线路走的。

体验非常棒。

开始爬山脊线。几乎六七十度的大坡,踩着雪前进,非常爽!

就冲这一段爬坡这一趟也值了。

这里的雪一脚下去都能没过膝盖,躺雪上面来一张把。

旁边那条是常规上来的路,马上到了,看上面云层上去的时候应该还能看见雪山。

登顶。

说实话因为湖还没完全化开又被白雪覆盖,也不能去湖面拍照,导致山顶的风景和可玩性很一般,这块白色不知道的人还以为只是一片平坦的雪地。

别的不说,先打个卡把。

看好了,这一剑,会很帅!(换我来拍的时候后面忽然就起了大雾,没拍上😭。)

因为风雪,准备下山了。

后面下山的风景就不发了,下山的时候倒是碰上领队了,因为要做扫尾工作,我们又是垫底的,所以一直被催着下山,搞的我们下山速度飞快,后半段几乎都是跑着下山的。

回到起点。

下雨了,安排第一波人坐皮卡,这波人回到民宿衣服基本上都湿了,我依旧做的蓬卡下山,不过因为没休息好,有点晕车的感觉,差点吐了。

之后便是返程,回去的时候只有泸州的三位和我们一起,另外两个坐其他车了。

也好,我们这几个人更聊的来,我们边开边聊,倒也不觉得累,还拉个群准备下次有什么活动再一起出行。

直到晚上11点30分才安全到达自贡,他们另外拼车叫了个野猪儿回泸州。

这次行程结束我缓了三天才缓过来,每天下班回家几乎粘上枕头就睡,每天的睡眠时长破天荒的突破了8个小时,临近9小时!

下次出行真的不想再开车了。

昨天 — 2025年5月18日独立博客

被“快”裹挟

2025年5月18日 07:41

我又来“续上篇”了,起因是我机缘巧合“二刷”了大J的文章「给心累的父母:往这些方向发力,娃自会给你惊喜」。我是个看文章很少点赞和划线的人,除非打心底认同。今天我打算好好三刷的时候发现,我再一次在曾经打动过我的文字下驻足,同时也生出了一丝纳闷,为什么在写上一篇文章时我没有回忆起这些。归因之下,我想还是因为所有事情都“太快了”。

没劲

虽然这篇文章主要讲的是育儿相关,但经历了前阵子的挣扎再读,竟是读出了些人生哲理的意味。所以古人诚不我欺,万物皆通、大道至简。你别说你还真别说,焦虑和无力感来源于不确定性,低迷来源于没劲,迹迹可循。育儿可不是件最为不确定产出的事儿么,而因为人本能喜欢确定,所以这中间一直有着不可逾越和克服的障碍。于是因为没法确定,就觉得做什么都没用,无力感和没劲感便蜂拥而至。

当下

那要如何破解呢?既然此路不通,那就换个路子——只看当下。我最近在育儿问题上有个很大的察觉,那便是我很容易“举一反三”。某些行为可能会导致什么样的后果,这些点可以瞬间在我脑子里排成长长一串,这也是我大部分的焦虑来源。“如果我没有及时修正,那么后果不堪设想”。可是我又无法立刻确认行为出现的必然性,万一只是个偶然性事件呢?何必大费周章,反而引得亲子关系紧张,从而影响了真遇事儿时的教育效果。那么便得仔细观察慢慢引导,可我哪来的时间与精力呢?所以只看当下可能是我当下的最优解。既然未来无法预测,过好当下的每一分每一秒才是实实在在能够攥在手心里的东西。

选择

昨天我还跟朋友说起,每当我因为没有做好追高努力而内疚时,想想她的娃——不吃饭不睡觉不喝奶仍旧长得高,我的焦虑便顷刻消散(滑跪补充:没有不尊敬的意思,反而非常感激分享)。重点如果放在未来还没发生的影响,不如着眼当下,当下才是确定的。比如我好累没法陪坡坡跳绳,便不去想会影响她追高,而去想我能得到短暂的喘息和休息,这心情可不就好多了。原来自洽是这样的呀!

自我成长

如果真要说一个两全其美的法子,那么还是那句老话——做好自己。关注自己,便不会过分关注孩子,从而挑三拣四,影响亲子关系不说,还破坏自己的心情;提升自己,以身作则,便能抓大放小,上梁板正下梁便也歪不到哪儿去。

昨天跟豆哥聊天,说到我有点点领悟到什么事能使我放松,且知其所以然。刷反转快的短剧、购物、看短视频,这些事都能在短时间内提供大量的新鲜感。没劲的时候可不就得寻求新鲜刺激么!(在感情里的话就会走岔路,万万不可啊!)而如果我采用更“慢”的方式休息,比如冥想(发呆)、听音乐、写博客、画画、看闲书,甚至看电影和电视剧,我都会感觉刺激不够,因为太慢了。细究之下发现,我的脑子可能已经被“惯坏了”,类似上瘾机制,是另一层面的“由奢入俭难”。想到这儿突然理解影视作品里那些惨无人道的富人们,要玩穷人的命才觉有趣,可怕又可悲。

为了改变现状,我决定从不惧怕做花时间的事情做起。写一篇博文就是有可能要花上好几天,不是我动作慢没效率,我需要接受现实,而不是逼迫自己。娃习得新技能就是要经历很多次的失败,耗费大量的时间,我要做的仍旧是接受这件事,并且尽可能地提供帮助。

意义

踏踏实实地生活吧,人生的意义其实只在自己心中。

小学生

作者 ONO
2025年5月18日 11:00

之前每次遛狗的时间,刚好是小学生放学的时间,所以也观察到了很多小学生。

他们说得最多的一句话是:「这个我知道。」

加上他们的「动手」能力也很强,所以当说完我知道之后就会立马上手去做,结果每次都会弄巧成拙,又会立马解释:「你这个东西不对。」

我知道→你的不对→我看过的才是对的。

你知道的,我说的是小学生,我真的说的是小学生!

线下买冰箱

作者 LMS
2025年5月18日 07:38

昨天去看抽油烟机和燃气灶,顺便也看了一下冰箱。孩子妈只认容声冰箱,所以两个商场就只看容声。

第一个商场容声和海信居然一个店面,卖货的说容声海信一家了,不知道真假。我们看中的一个型号,冰箱身上贴着标价 ¥7*99(中间那个 * 印象不深了)。孩子妈问实价,销售的一顿计算加上这个补那个优惠的,报价 4800,然后我打开京东,搜了一下居然有相同型号的(一般大部分商品都有分电商款,型号不同),上面显示到手价 ¥45**,销售一看就说,那给你 4500,不赚你们钱了,还打包票到送货前有价格更低的给我退差价。

当时我就想买了,因为我们主要是来看油烟机和燃气灶的,既然比线上便宜那就干脆顺手搞定。孩子妈却不急,要店员送礼物。销售在仓库里一顿扒拉,什么米啊锅啊的我们都不需要。然后媳妇又要砍价,销售立场很坚定,我们就走了。

另外一个商场,可能时间比较迟了,到了容声专卖的地方销售都不在,自己走了一圈店员才过来。

我们赶时间就直接问刚才那个型号多少钱,她也看出我们在其他地方问过价,就直接问我上一家报价多少,我也没隐瞒说 4500。她说直接给你全市最低价 3999,如果帮她一个忙 还送 10 年整机保修。

这么一报价我们两个心里都没底了,我问这冰箱型号是不是不生产了,店员说这是去年的款式(网上没查到)。

最后还是定了这款冰箱,帮忙是帮她买一台他们自己的容声冰箱样机,标价一万多,售价3600多,而最后我那条冰箱成交价是 3888 元,发票开出来去掉 10 年保修的价格,冰箱实际发票价格是 3600 元。

所以这价格为什么这么魔幻,不会卖给我的也是样机吧。

认识 WordPress 古腾堡编辑器:界面与功能板块

作者 Kevin
2025年5月18日 11:11

古腾堡编辑器(Gutenberg Editor)采用“块”式设计理念,编辑器内的每个部分(如标题、段落、图片、列表、视频、按钮等)视为独立的内容块。用户可以像搭积木一样自由拖拽、排列、插入或删除各种块,本篇介绍其界面和板块。

1. WordPress Gutenberg Editor 界面介绍

下图展示的是 WordPress 当前版本(6.8.1)的古腾堡编辑器界面。为了便于整体查看,我将区块属性和区块样板的界面截图进行了拼接。可以看到,默认的古腾堡编辑器界面由顶部工具栏、主编辑区、右侧设置面板和左侧导航等部分组成,各个功能区域布局清晰,便于用户高效进行内容创作与排版。

WordPress古腾堡编辑器界面预览
WordPress 古腾堡编辑器界面预览

1.1 顶部工具栏

顶部工具..... [ 阅读全文 ]


原文链接: https://www.shephe.com/website/wordpress-gutenberg-editor/
版权声明: Kevin's Space 版权所有,转载请用明链标明本文地址
本站相关: 随机文章 | 站长微博 | 关于本站 | 联系站长 | 捐助作者

线下买冰箱

作者 LMS
2025年5月18日 07:38

昨天去看抽油烟机和燃气灶,顺便也看了一下冰箱。孩子妈只认容声冰箱,所以两个商场就只看容声。

第一个商场容声和海信居然一个店面,卖货的说容声海信一家了,不知道真假。我们看中的一个型号,冰箱身上贴着标价 ¥7*99(中间那个 * 印象不深了)。孩子妈问实价,销售的一顿计算加上这个补那个优惠的,报价 4800,然后我打开京东,搜了一下居然有相同型号的(一般大部分商品都有分电商款,型号不同),上面显示到手价 ¥45**,销售一看就说,那给你 4500,不赚你们钱了,还打包票到送货前有价格更低的给我退差价。

当时我就想买了,因为我们主要是来看油烟机和燃气灶的,既然比线上便宜那就干脆顺手搞定。孩子妈却不急,要店员送礼物。销售在仓库里一顿扒拉,什么米啊锅啊的我们都不需要。然后媳妇又要砍价,销售立场很坚定,我们就走了。

另外一个商场,可能时间比较迟了,到了容声专卖的地方销售都不在,自己走了一圈店员才过来。

我们赶时间就直接问刚才那个型号多少钱,她也看出我们在其他地方问过价,就直接问我上一家报价多少,我也没隐瞒说 4500。她说直接给你全市最低价 3999,如果帮她一个忙 还送 10 年整机保修。

这么一报价我们两个心里都没底了,我问这冰箱型号是不是不生产了,店员说这是去年的款式(网上没查到)。

最后还是定了这款冰箱,帮忙是帮她买一台他们自己的容声冰箱样机,标价一万多,售价3600多,而最后我那条冰箱成交价是 3888 元,发票开出来去掉 10 年保修的价格,冰箱实际发票价格是 3600 元。

所以这价格为什么这么魔幻,不会卖给我的也是样机吧。

C++中的 const和constexpr 比较


C++ constconstexpr:真正的区别是什么?

一眼看都是定义常量。

为什么这很重要

现代 C++ 鼓励编写不可变、高效且表达力强的代码。两个关键字—constconstexpr—是这一理念的核心。它们看起来很相似,但理解它们的不同语义,对于正确利用编译期与运行期行为至关重要。

高层次对比

特性 const constexpr
编译期常量? 可能 一定(否则编译报错)
支持运行期? 支持 支持(在需要时运行期求值)
用于数组/模板参数? 仅当确实是常量 保证可用
允许函数? 仅限成员函数限定符 支持完整函数且可在编译期求值

1  声明不可变数据

const:构造后不可变

const int runtimeConst = std::rand(); // 是 const,但不是编译期常量

当你只想禁止变量被修改,而不在意值是在编译期还是运行期确定的,const 就足够了。

constexpr:必须在编译期已知

constexpr int arraySize = 10;
int arr[arraySize];           // 始终合法

如果值需要参与要求编译期常量的上下文(如数组大小、模板参数、switch 标签等),你必须使用 constexpr

2  函数与方法

const 成员函数

class Widget {
public:
    int value() const {/*…*/} // 保证不会修改 this 对象
};

它保护对象状态,但不提供编译期求值能力。

constexpr 函数

constexpr int square(int n) { return n * n; }

static_assert(square(4) == 16, "编译期计算");

constexpr 函数在参数是常量表达式时可以在编译期执行,也可以在运行期使用。

3  常见陷阱

// 1. 编译通过:runtimeConst 只是 const
const int runtimeConst = std::rand();

// 2. 编译失败:std::rand() 不是 constexpr
constexpr int fails = std::rand();

记住:每个 constexpr 变量本质上都是 const,但并非所有 const 都是常量表达式。

4  如何选择

  • 需要强制编译期计算?使用 constexpr
  • 需要不可变性但值可能在运行期确定?使用 const
  • 不确定时偏向使用 constexpr,编译器会提示你是否不合法

5  总结片段

constexpr int ctVal = 42; // 编译期常量
const int rtVal = std::rand(); // 运行期确定,但不可变

正确地选择 constconstexpr 能让你的 C++ 代码更安全、更高效、更具表达力。默认使用 constexpr,当且仅当你明确知道值只能在运行期获取时才使用 const

C/C++编程

英文:const vs constexpr in C++

本文一共 525 个汉字, 你数一下对不对.
C++中的 const和constexpr 比较. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++中的 const和constexpr 比较 C++ C++ 学习笔记 程序设计 计算机
The post C++中的 const和constexpr 比较 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. C++ Ranges 教程 C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能。 什么是 Range? 在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图) 和 actions(操作) 如过滤、转换等配合使用非常自然。...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  5. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  6. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  7. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  8. 剑桥网红餐厅 The Ivy Cambridge Brasserie 上周刚过40岁生日,媳妇带我去剑桥的一家网红餐厅——The Ivy Cambridge Brasserie。这家餐厅是朋友推荐的,和那家Trinity一样很有名,可惜我们在剑桥待了近10年才知道。 The Ivy Cambridge Brasserie 是剑桥市中心一家备受欢迎的网红餐厅,位于历史悠久的 Trinity Street。餐厅设计时尚典雅,融合了现代与经典元素,为食客提供了一个舒适而奢华的用餐环境。这里的菜单丰富多样,覆盖全天用餐,从早餐到晚餐以及下午茶,提供英式经典美食如松露鸡肉派、英式早餐等,也有一些国际风味的菜肴。得天独厚的位置和独特的氛围使得 The Ivy Cambridge Brasserie...

C++ Ranges 教程


C++20 引入了 ranges(范围),这是一个强大且优雅的抽象,用于处理序列(如数组、vector 等)。相比传统的迭代器或旧式循环,Ranges 提高了代码的可读性、可组合性和性能

什么是 Range?

在 C++20 中,range(范围) 是一种抽象,代表一个可以迭代的元素序列。它与 views(视图)actions(操作) 如过滤、转换等配合使用非常自然。

传统循环 vs 基于 Range 的循环

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v = {1, 2, 3, 4};

    // 旧式循环
    for (auto it = v.begin(); it != v.end(); ++it)
        std::cout << *it << ' ';

    // 基于范围的循环(C++11)
    for (auto x : v)
        std::cout << x << ' ';
}

Range Views(视图)

View 是惰性的、可组合的范围操作。除非需要,一般不会复制数据。

Filter 和 Transform 示例

#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6};

    auto even_doubled = v 
        | std::views::filter([](int n) { return n % 2 == 0; })
        | std::views::transform([](int n) { return n * 2; });

    for (int n : even_doubled)
        std::cout << n << ' ';  // 输出:4 8 12
}

常见的 Views

View 描述
std::views::filter 保留符合条件的元素
std::views::transform 对每个元素应用函数
std::views::take(n) 获取前 n 个元素
std::views::drop(n) 跳过前 n 个元素
std::views::reverse 反转范围
std::views::iota(a, b) 生成从 a 到 b-1 的范围

使用 iota 和 reverse

#include <ranges>
#include <iostream>

int main() {
    for (int i : std::views::iota(1, 6) | std::views::reverse)
        std::cout << i << ' '; // 输出:5 4 3 2 1
}

组合视图操作

你可以使用管道符 | 流式地组合多个视图操作。

#include <vector>
#include <ranges>
#include <iostream>

int main() {
    std::vector<int> v = {5, 10, 15, 20};

    auto result = v 
        | std::views::transform([](int x) { return x + 1; })
        | std::views::filter([](int x) { return x % 2 == 0; });

    for (int x : result)
        std::cout << x << ' '; // 输出:6 16
}

实用示例

1. 过滤偶数

#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6};

    auto evens = numbers 
        | std::views::filter([](int n) { return n % 2 == 0; });

    for (int n : evens)
        std::cout << n << ' ';  // 输出:2 4 6
}

2. 将奇数翻倍

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    auto doubled_odds = numbers
        | std::views::filter([](int n) { return n % 2 != 0; })
        | std::views::transform([](int n) { return n * 2; });

    for (int n : doubled_odds)
        std::cout << n << ' ';  // 输出:2 6 10
}

3. 反转序列

int main() {
    std::vector<int> nums = {10, 20, 30};

    auto reversed = nums | std::views::reverse;

    for (int n : reversed)
        std::cout << n << ' ';  // 输出:30 20 10
}

4. 生成数值序列

#include <ranges>

int main() {
    for (int i : std::views::iota(1, 6))
        std::cout << i << ' ';  // 输出:1 2 3 4 5
}

5. 获取前 N 个元素

int main() {
    auto infinite = std::views::iota(1); // 无限序列
    auto first5 = infinite | std::views::take(5);

    for (int i : first5)
        std::cout << i << ' ';  // 输出:1 2 3 4 5
}

6. 计算前 5 个奇数的平方和

#include <numeric>

int main() {
    auto odd_squares = std::views::iota(1)
        | std::views::filter([](int x) { return x % 2 == 1; })
        | std::views::transform([](int x) { return x * x; })
        | std::views::take(5);

    int sum = std::accumulate(odd_squares.begin(), odd_squares.end(), 0);
    std::cout << "和 = " << sum << '\n'; // 输出:和 = 165
}

7. 判断是否所有元素都为正数

#include <ranges>
#include <algorithm>
#include <vector>
#include <iostream>

int main() {
    std::vector<int> nums = {1, 2, 3};

    bool all_positive = std::ranges::all_of(nums, [](int n) { return n > 0; });

    std::cout << std::boolalpha << all_positive << '\n'; // 输出:true
}

8. 自定义管道函数

auto pipeline = [](const std::vector<int>& v) {
    return v 
        | std::views::filter([](int x) { return x % 2 == 0; })
        | std::views::transform([](int x) { return x * 10; });
};

int main() {
    std::vector<int> nums = {1, 2, 3, 4};

    for (int x : pipeline(nums))
        std::cout << x << ' '; // 输出:20 40
}

性能提示

  • Ranges 是惰性的:仅在需要时才处理元素。
  • 避免不必要的分配与复制。
  • 适合处理大型数据或函数管道。

何时不适合使用 Ranges

  • 在对性能极度敏感的内循环中,STL 抽象可能较慢。
  • 当项目尚未迁移到 C++20。

参考资料

英文:Tutorial on C++ Ranges

本文一共 415 个汉字, 你数一下对不对.
C++ Ranges 教程. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c C++ Ranges 教程 C++ C++ 学习笔记 程序设计 编程 计算机
The post C++ Ranges 教程 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 简易教程: C++的智能指针 C++ 智能指针教程 C++ 中的智能指针提供了自动且安全的内存管理。它们通过 RAII(资源获取即初始化)机制,帮助开发者避免内存泄漏和悬空指针的问题,确保对象在生命周期结束时被正确释放。 本教程将介绍 C++ 中三种主要的智能指针: std::unique_ptr:独占式所有权 std::shared_ptr:共享式所有权 std::weak_ptr:非拥有式弱引用 1. std::unique_ptr unique_ptr 拥有独占所有权。一个资源只能被一个...
  2. 借助AI快速开源了三个小工具: 写代码越来越像做产品了, AI 真把我宠坏了(Vibe Coding) 程序员的未来?Vibe Coding + AI 一起上! 借助 AI 快速开源了三个小工具 最近,我利用 ChatGPT-4o 和 o4-mini 快速开发并开源了三个小工具。起因其实很简单——每次想转换 YAML/JSON 或进行...
  3. 被动收入之: 微博红包 今年开始重新经营我的微博帐号 drlai 收到两笔微信红包,应该是来自于官方的支持,150元(成功提现到支付宝)。虽然这不能持久,也没多少,但毕竟实现了零的突破,意义重大。 如果流量上来,内容创作者可能会接受到比较多的赞赏,这也是一个比较简单的变现方法。这也能作为一种被动收入,不过如果不是头部网红,可能杯水车薪,但如果你有好几个类似这样的,也能积少成多! 在用户中心,微博用户可以每天登陆手机微博APP打卡,获取点数和少量的红包钱(几分钱),积少成多! 微博做些小任务可获得积分和几分钱。聊胜于无。 微博的主要盈利模式 微博的主要盈利模式主要包括以下几个方面: 广告收入:微博的大部分收入来源于广告,尤其是品牌广告和效果广告。广告形式包括信息流广告(类似于推文广告)、热门话题广告、开屏广告和视频广告。品牌和企业可以利用微博庞大的用户群和社交互动来提升曝光率、推广品牌和产品。 会员服务:微博提供的VIP会员服务,用户可以支付订阅费用来享受更多的特权,比如个性化的主题、特有的表情包、私密权限设置等。这些会员服务主要面向个人用户,提升其社交体验。 直播和打赏:微博提供直播平台,用户可以通过购买虚拟礼物来支持主播,微博会从这些打赏中抽取一定比例的分成。此外,微博与内容创作者分成,通过内容付费、知识付费等形式变现。 增值服务:针对企业和大V(拥有大量粉丝的用户),微博还提供增值服务,如账号认证、粉丝数据分析、精准推送、推广和营销工具等。这些服务帮助企业提升营销效果,同时也增加了微博的收入来源。 电商和导流:微博上有大量的电商导流业务,尤其是和明星、网红的合作推广。微博用户在浏览社交内容时,可以直接跳转到商品购买链接,微博通过这种方式赚取导流佣金。 游戏联运:微博也会与一些游戏公司合作推出联合运营的游戏,微博负责推广和流量引入,用户充值或付费时,微博可以获得一部分的分成。 这些模式相结合,使得微博能够在广告市场、内容创作和电商等多个领域获利。...
  4. 换了个奥迪Q5大灯花了我1000英镑 我那辆奥迪Q5 SUV今年年检没通过,原因是左前车灯坏了,需要更换。车厂告诉我,光是订购零件就要700多英镑,加上人工费,总费用得1000英镑。但没办法,如果不修,车辆年检(MOT)就过不了,车也不能上路。 MOT是英国的机动车强制性安全检测(Ministry of Transport Test)的简称。 近侧前位置灯不工作 drl/位置灯集成(4.2.1(a)(ii)) Nearside Front Position lamp not working drl/position...
  5. 试用 Linkedin (领英) 高级帐号 (Premium) Linkedin (领英) 算是比较靠谱的职业社交网站, 在上面有很多猎头, 很多知名公司的HR 无时无刻在招人. 特别领英在被微软收购之后, 名气就变得大了许多. 领英是免费使用的, 但也有付费用户, 有给猎头的, 也有给想找工作的. 价格并不便宜, 对于想找工作的 Job...
  6. 步步高学生电脑上 Basic 编程语言 peek 用法示例 步步高学生电脑 是8位FC机的经典之作.它上面的BASIC有三个版本 1.0, 2.0 和 2.1 2.1 版本有个在线帮助,实际上是 help.cmd 1.0 是用 Esc 键退回到 DOS 的,...
  7. 《Steem 指南》之 justyy 在线工具与 API 系列 – Discord 机器人 Discord 聊天频道 Discord 原本是给游戏设计的, 但由于其功能多, 接口开放能力强, 使用的用户越来越多. 我们CN区也有一个Discord 频道, 加入地址为: https://discord.gg/7ctT3Xt 在网页里就可以加入 cnsteem 的大家庭了, 当然也可以下载手机APP或者桌面程序来加入...
  8. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...

20250517

作者 61
2025年5月18日 07:53

今天第一次来上海的 Blue Note这种 Club 式的演出场地我还不是很适应。但是边喝酒边听 Jazz 才带感啊。

4/24 第一次听 Brad Mehldau,应该是 ChatGPT 给我推荐的和 Keith Jarrett 类似的音乐家。非常喜欢下面这张专辑,于是上闲鱼买黑胶。没想到一搜就搜出了 Brad Mehldau Trio 五月在国内 Blue Note 演出的票。缘分到这种程度了,不去看真不合适。立即买了两张上海的。

image.jpeg

没想到一个月内就听上现场了,除了 Brad Mehldau,贝斯手 Christian Mcbride 简直神了。查了一下他的老师居然是 Ray Brown!还和各种我喜欢的音乐家合作过,能听上他的表演,太开心🥳。

image.jpeg

今天又发现了一家很不错的酒店,大华长风华邑。16000 积分兑换,不到六百块钱。酒店门面比六百块钱的亚朵好了一百倍吧,房间升了一级后也是宽敞舒适,居然还有行政酒廊。窗外是个公园,景也不错。早上洗完头发现用的是 Dyson 吹风机,要知道很多洲际现在都是山寨的 Dayson 😂。直接宣布它已经取代瑞金洲际成为我上海看演出的首选。大大降低每次看演出的成本。

image.jpeg

20250516

作者 61
2025年5月18日 07:33

今天五源资本的两个投资人来拜访认识,尽管我一直在拒绝和“投资人”们聊天,但偶尔交流认识一下还行。给他们放了黑胶,也算给他们输出一些东西吧。

中午约博士吃饭,博士送了我们任天堂出的那个闹钟。做这样的周边真有意思,把游戏、角色、声音资源、玩家紧紧连结在一起。我们最近为了去美国,有一些礼物可以拿来送给其他开发者,终于也做起了周边。但是创意贫瘠,只能想到贴纸和徽章。徽章的样本到了,把这个回赠给了博士。我还是很喜欢我们 logo 的设计。

image.jpeg

今天一直在听 Holly Cole 的专辑《Temptation》,在闲鱼刷黑胶的时候看到这张专辑的复刻,被介绍深深吸引了。作为一张爵士女声专辑,选曲居然都是 Tom Waits 的歌。Tom Waits 在我心里形象更多是荒诞不经,但是我很喜欢。昨晚在家里 HomePod 播放后没有什么感觉,今天来公司听,不得不说有了完全不同的感觉。应该不是“木耳朵”了!

❌
❌