[{"content":"来源：不会玩的人，一生都活在空虚之中\n健康与玩耍能力 健康并非没有症状，而是拥有玩耍的能力。真正的成熟不代表必须杀死内心的小孩，相反，它包含了退行的能力——一种能够安全地回到孩童般状态的能力。许多成年人活得很痛苦，因为他们即使在休息时也无法真正地玩耍。他们可能在刷手机、在消费，但这些往往是被动的应对。真正的玩耍是一种主动的、生命自发的、创造性的体验。\n若观看过前一期关于“真自我”的视频，便会理解：肆意地玩耍是对抗麻木、虚无以及触及真我的唯一解药。因为只有在玩耍时，个体才能发挥创造力，并以此发现其完整人格。\n有人或许会质疑：你说玩耍能带来健康，但我每天下班都在刷视频、打游戏、看爽文，为何仍感到空虚、焦虑，甚至更加疲惫？这是否是一种误导？这实则是当下对“玩耍”的刻板印象所导致的误解。\n真假玩耍的区分 现代社会所期待的、或商业资本所兜售的“玩耍”，大多是一种心理上的逃避与表演：瘫在沙发上无意识地刷短视频，连续观看数小时无需动脑的爽剧，本质上是一种解离。此时个体并非在体验生活，而是在麻痹自己。\n试图通过疯狂聚会、报复性旅游或所谓社交局让环境喧闹起来，以此逃避内心的混乱、死寂与焦虑，这并非本文所指的玩耍。\n亦有人认为：玩耍能帮助通过考试吗？能助我买房、升职吗？若不能，便是浪费时间。我们所需的是“有用”之物，是能提升效率之物。然而，若仅关注“有用”，仅为了应对外部要求（考试、KPI、房贷）而活，实际上是在发展一个庞大而精密的“假我”。此假我或许高效成功，如精密机器，但其代价是深刻的无意义感。许多成功人士达成所有目标后，内心依然空虚抑郁，产生“这一切与我何干”的疏离感。追逐成功与世俗价值永远无法填补内心空洞。\n玩耍在物质层面或许“无用”，但对让人感知自身仍活着而言，必不可少。\n潜在空间：主观与客观之间的第三重领域 此处所言的玩耍，位于主观全能与客观现实之间的“第三重潜在空间”——个体能够暂时摆脱对环境的顺从，动用全部人格进行创造并触及真我的自由时刻。\n世人通常将世界分为两部分：一是外部现实，客观、不以意志为转移的残酷世界；二是全能内心，包含幻想、梦境与本能冲动。玩耍位于何处？它既非纯粹幻想，亦非完全外在现实，而是发生于二者重叠的缝隙中——位于个体与环境之间。\n对婴儿而言，此空间位于婴儿与母亲之间；对成人而言，位于个体与社会现实及理想之间。当孩童手持树枝高喊“冲锋”时，该树枝既是客观枯木，亦是主观宝剑。它既是外部现实，亦是内部表征。孩童并未发疯，他知晓那是树枝，却选择相信它是宝剑。健康独立的人格必须拥有此空间。正因存在这一中间区域，我们才不致被残酷现实压垮，亦不退缩至自闭幻想中。这是缓冲地带。\n在此空间内，我们可将木块想象为飞机，将感受转化为艺术；可暂时悬置现实的严苛法则，让主观全能感安全投射至客观现实。\n创造性生活态度 此空间为何必要？因它是自我人格生发的根源，是创造性生活的根源。唯在玩耍时，儿童或成人才能发挥创造力，并以此发现完整人格。此处“创造性”并非仅指绘画、写诗等刻板印象中的创造，而是一种看待生活的态度。对健康者而言，世界可被其创造：见一朵花时，不仅视网膜接收光线，更赋予其意义，与之建立联结——此即创造性感知，一种玩耍的态度。\n相反，对病态或顺从者而言，世界是强加于身的。他们适应世界，却感毫无意义，如被迫食用菠菜的孩童，仅因“这对你有益”。他们丧失玩耍能力，现实成为需应付的苦差事，此乃“假自体”运作。此种生活贫乏、无趣、缺乏意义感。纵使其发展出强大理性与知识体系，此大厦亦建立于空洞地基之上——理性与自身感受割裂，冰冷疏离。\n故健康绝非没有症状，而是拥有玩耍的能力。抑郁症患者的最大悲哀并非悲伤绝望，而是丧失将眼前万物转化为有趣事物的能力。其世界是死寂的、压迫性的客观现实。\n体验先于认知 必须意识到：内心成长的本质绝非纯粹认知训练，仅靠逻辑拆解或线性积累心理学、哲学知识，往往仅带来头脑层面冰冷的假性理解。若缺乏真实体验，知识愈多，反可能成为防御体验的壁垒。真正的心智重塑需从分析回归体感：不再紧绷分析对错，而是被允许试错、浪费时间、表达略显幼稚的冲动与想法。唯在此柔软流动的互动中，被冻结的自我方能解冻，进而成长出成熟自由的灵魂。\n个人实践示例 视频背景多为第一人称视角的散步镜头。长期以来，素材均取自网络。但某日突发奇想，决定亲自拍摄。随后三四日，几乎未做他事，专注研究相机、镜头、陀螺仪、光圈、快门速度等技术细节。\n当前所见画面，即为此数日自行拍摄成果。若从商业价值与冰冷理性角度考量，投入数千元购置设备、耗费大量时间学习摄像知识，仅为了拍摄本可网络获取的空镜素材，或抽象提升能力，确无明显回报。但其价值在于满足了玩耍的冲动：我愿如此，愿视频使用自摄画面，愿以此为由每周抽出数日，在不同光影氛围中漫步，愿观众感知我真正在陪伴他们思考、散步、成长与学习——未曾敷衍观众，亦未敷衍自身感受。此即赋予自身的、肆意的玩耍空间。\n未来数月、数年乃至数十年，只要仍在制作知识类视频、仍需此类空镜，便可于世界各角落散步、思考、拍摄。此举非为更高效率或更强能力，仅为一份属于自身的浪漫与任性。\n玩耍的本质 功利主义盛行的时代，许多成年人甚至儿童已遗忘如何玩耍。人们将玩耍异化为消费、逃避与表演：迪士尼排队常非玩耍，而是被动接受刺激；刷短视频亦非真正有趣，而是大脑麻醉。此处并非以行为评判对错，而是阐明真伪玩耍的关键区别：自我是否进行投入与创造。\n若是，则玩耍可呈现任意形式：可能是心中迸发的强烈愿望欲观某部电影；可能是路边观察蚂蚁搬家而生好奇与联想；可能是沐浴时哼出不成调的曲子；可能是在制表时发现数字间奇妙规律而暗自欣喜；亦可能是与所爱之人互起唯有彼此懂得的稚拙绰号。它可以是艺术、宗教、科学假设诞生的瞬间——它们皆是一种创造性生活态度：你视世界为可互动之物，而非需应对之物。\n玩耍时，身体、情绪与理智整合为一，你会感到更贴近真实的自己。纵然身体疲惫，内心却充盈满足。此即温尼科特所言“文化体验”——童年玩耍在成人世界的直接延续。\n故本文所言“玩耍”，并非特定行为，而是一种存在状态。健康、完整、独立之人，即是在面对现实时仍保有玩耍能力者：他能认真对待生活，却不被生活奴役；他能适应现实，却始终保留一块属于自我的神圣中间区域——在此区域中，他是自由的，他是他自己。\n观那些在泥坑中跳跃至满身泥泞的孩童，观那些在暴雨中奔跑的情侣，观那些为看似无用的爱好而废寝忘食的成年人——他们并非不成熟，而是在练习一种高级生存智慧：如何在充满限制的客观世界中，强行注入主观体验。\n若不如此，世界仅是一堆冰冷物理规则。正因这种不顾后果的投入，你将生命力强加于世界。虽看似不现实，却正因这“不现实”，生活方值得一过。而此种自发的“值得”，方构成生命的真实。\n","permalink":"https://global.yfstudio.online/post/play-and-emptiness/","summary":"探讨玩耍与心理健康的关系，区分真假玩耍，论述主动性的玩耍对对抗虚无和发现真自我的重要性。","title":"不会玩的人，一生都活在空虚之中"},{"content":"来源：为什么我不建议大学生课余读哲学【沈枯燥的教学日记#027】\n我在某个视频中给一位本科生提过建议，说要提升眼界可以读《财经周刊》或经济类的书。这是为什么呢？我们来谈一下这个问题。\n学生最容易“顺藤摸瓜”——顺着自己的知识体系去探索，而摸到的“瓜”往往是哲学。原因在于，从初高中开始，教育体系营造出一种印象：哲学是一种很高级的知识。因此，当学生没有受到任何引导、仅凭“读点认真东西”的心情去选课外书时，往往会倾向于选择哲学。\n但哲学存在两个问题：\n第一，以一个普通大学生的能力，很难真正“handle”（驾驭）其知识体系。一是读不懂字面意义，二是无法理解阅读这件事本身的意义。你既无法从中获得明确的功能性价值，又不清楚自己在做什么，却仍在坚持做这件事。\n第二，这种行为往往出于“装逼”。举个例子：很多孩子学钢琴，问他们为什么学？答不上来；学了能干什么？也不知道。唯一说得出口的理由就是“显得有品位”——这本质上就是装逼。\n凡是你能清晰说明目的的事情，目标就不是装逼；而当你什么都讲不清楚时，那目的很可能就是装逼。\n装逼的问题在于：\n阻碍交流：当你与人交谈时，如果对方觉得你在卖弄——“不就是读过几本书吗？”——沟通就停止了。对十八九岁、二十岁左右的年轻人而言，有效的人际沟通恰恰是最关键的能力之一。 固化思维模式：当你读不懂文本，却又要表现出“我读懂了”，就会倾向于摘抄“好词好句”，比如“尼采在某本书里说过……”。这种做法会把你拉回高中语文的应试思维模式——只记结论、不求理解。这与真正的思辨和成长背道而驰。 结果是，你除了自我安慰“我读了很多哲学书，我在探索世界的真相”之外，并未获得真实的认知提升或实践能力。尤其在人生最困惑、最需要实际解决方案的阶段，投入大量时间进行“心性修养”并不解决燃眉之急。\n更值得警惕的是，西方哲学越往后发展，尤其是当代哲学，其基调往往趋于灰暗、悲观。如果你本身性格偏愤世嫉俗，再去读斯蒂格勒这类思想家的作品，可能会产生“人类灭亡算了”之类的极端想法。\n当然，柏拉图是个例外。他的著作（如《理想国》）记录的是苏格拉底的对话，语言朴素、逻辑清晰，适合作为形式逻辑的思维训练材料。后续我会专门做一系列课程，讲解如何有效阅读西方哲学，只取其对你有用的部分，而不被其体系裹挟——但这对知识驾驭能力有较高要求。\n因此，我建议对哲学保持谨慎态度。\n那么，为什么我推荐《财新周刊》和经济类书籍？因为它们与哲学截然相反：\n这些内容完全围绕现实问题展开，具有极强的实践导向。 你可以关注AI、能源、医保、芯片等真实产业，动态追踪其发展，理解背后的经济链条、行动主体及其动机与潜在影响。 你会发现，许多看似复杂的问题，一旦厘清主体和利益关系，其实并不难推演。 这正是大学生最需要学习的能力——但往往也是最抗拒的。很多人觉得自己的生活已经足够“世俗”，不愿再用“世俗”的内容作为消遣。\n值得注意的是：越是通过“做题训练”一路升学、出身普通甚至弱势的学生，越容易被哲学吸引——因为它提供了一种脱离现实的“精神调剂”。而那些家庭条件优越、早年接触过商业或行业前沿信息的学生，对经济类内容反而感到熟悉，甚至视其为日常生活的一部分。\n进入职场后，谁走得更快、更自信？显然是那些早期就掌握了“世界如何运转”这一底层认知的人。\n要弥补社会起点的不公平，最有效的方式就是主动获取这些结构性知识。如果你家里本就从事相关行业，那你读哲学无妨——你有条件。但对大多数学生而言，最稀缺的恰恰是对真实世界的理解。\n正因如此，我才把课程设计成现在这样，并计划配套推出系统读物。未来若有人问我“该读什么来系统学习”，我会直接说：“去读我的书就好。”\n在时间有限的前提下，你应当优先把握世界运行的法则。\n我有时会有点后悔——知道这些知识稍微晚了些。但转念一想，即便更早，也未必有老师能如此清晰地讲授。如今身为教师，我仿佛坐上了时光机，可以回到过去，纠正当年的错误。比如，我上思政课时总是睡觉，没人给我讲清楚这些事。现在，我能通过教学把这些补上——这让我感到欣慰。\n所以，这是我的真诚建议：不要为了装逼而读书，要为了求生而读书。\n","permalink":"https://global.yfstudio.online/post/why-not-recommend-philosophy/","summary":"分析大学生课余读哲学的误区和问题，指出哲学自学的理解困难、动机偏差及可能带来的负面思维影响。","title":"为什么我不建议大学生课余读哲学"},{"content":"比赛主题\n一个从零开始发展的非游戏开发新手团队，选择 Rust 还是 C++？\n参赛人员\n支持 Rust 的正方辩手（DeepSeek）与支持 C++ 的反方辩手（Kimi），每方各三名，分别担任一辩、二辩、三辩；以及评委团（DeepSeek+Kimi），由资深开发者、技术专家和团队管理者组成。\n没有自由辩论的环节。。。所有在这里叠甲。此外，LLM 输出的文本中本身往往带有格式，如标题、加粗，这里清除了正文内所有格式，并将标题转为加粗，同时清除标题中如“（一）”或“一、”的数字序号。\n辩论正文 正方一辩 作为正方一辩，我将从新手团队的成长性、工程安全性与现代开发范式三个维度阐述为何Rust是更优选择：\n【新手友好性】 Rust编译器是严格的导师，而非冰冷的审判者。其所有权系统通过编译时检查，将内存安全、数据竞争等高级概念转化为可视化的学习路径。新手在编码过程中实时获得反馈，比C++在运行时遭遇段错误更符合认知规律。Cargo工具链一体化的依赖管理、单元测试与文档生成，让开发者专注于业务逻辑而非构建配置，这对建立工程化思维至关重要。\n【安全即生产力】 非游戏开发常涉及网络服务、系统工具等安全敏感领域。Rust的\u0026quot;零成本抽象\u0026quot;安全模型能在不牺牲性能的前提下，消除70%以上的内存类漏洞（据微软安全报告）。对于缺乏经验的新团队，这种编译期保障相当于为代码仓库配备了隐形防火墙。而C++即便引入智能指针，其optional特性与默认不安全的设计，仍将安全责任转嫁给开发者。\n【未来适应性】 Rust的trait系统与模式匹配等现代特性，使得实现跨平台支持、并发编程等复杂需求时，代码更简洁可维护。async/await语法在语言层的原生支持，让异步编程不再需要面对C++回调地狱。更重要的是，Rust正在形成包含Wasm、嵌入式、区块链等前沿领域的生态位，为团队技术演进保留更多可能性。\n我们并非否定C++的历史价值，但对于站在技术选择十字路口的新团队，Rust提供了更符合时代需求的解决方案——用严谨的规则培养开发素养，用系统级的安全筑牢地基，用现代语法捕捉技术浪潮。这正是一个新生团队最需要的成长加速器。\n反方一辩 尊敬的评委、对方辩友以及各位观众：\n大家好！我方是反方一辩，今天辩论的主题是 “一个从零开始发展的非游戏开发新手团队，选择 Rust 还是 C++？”，我方坚定地认为对于这样的新手团队，C++ 是更合适的选择。\n先看学习资源与社区支持方面。C++ 拥有悠久的发展历史，在全球范围内积累了海量的学习资料，从经典的纸质书籍，如《C++ Primer》《Effective C++》等，这些书籍经过多年的沉淀和修订，内容体系完善、案例详实，能够为新手团队提供系统且深入的知识讲解。到线上的各种教程、论坛、开源项目等资源更是不计其数，像 Stack Overflow 上有大量的 C++ 相关提问和解答，新手在遇到问题时可以迅速找到参考答案。而且成熟的社区意味着有众多经验丰富的开发者愿意分享经验、提供指导，这对于新手团队在成长过程中攻克难题、少走弯路至关重要。反观 Rust，虽然发展势头迅猛，但学习资源丰富度和社区成熟度暂且无法与 C++ 相媲美，在新手寻求帮助时，可能无法像 C++ 那样快速、全面地获取有效信息。\n再论项目适配性与招聘难度。对于非游戏开发的新手团队，往往面临着多样的业务场景，比如要开发系统级工具、大型网络服务后台等。C++ 凭借其高度的灵活性和强大的性能，已经在众多领域得到广泛验证和应用，能够很好地适配这些业务需求，它既可以贴近硬件进行底层开发，又能构建复杂的高层应用。而且 C++ 开发者在人才市场上数量众多，招聘相对容易，即便团队处于起步阶段，也能较便捷地找到具备不同经验层次的人才加入，保障项目的人员供给。而 Rust 由于还处于发展阶段，在一些特定业务场景下的最佳实践和成熟案例相对有限，部分业务可能需要团队花费更多时间去探索适配方式。在招聘市场上，熟练掌握 Rust 的开发者数量相对较少，这意味着新手团队在组建初期可能面临人才短缺的困境，拖慢项目推进速度。\n最后从工业验证与稳定性角度分析。C++ 经过几十年的工业应用洗礼，在各种大型、复杂的项目中都展现出强大的稳定性，像我们熟知的大型数据库系统、操作系统核心组件等许多关键基础设施都有 C++ 的身影，其质量和可靠性得到了充分验证，新手团队站在这样的成熟技术肩膀上，可以更安心地开展开发工作，减少因技术选型带来的潜在风险。而 Rust 虽然在安全性等方面有独到之处，但整体工业应用时长较短，尚未经历像 C++ 那样漫长且多元的项目考验，在一些极端场景下的稳定性和表现还有待时间去进一步证明。\n综上所述，C++ 凭借丰富的学习资源与社区支持、良好的项目适配性与较低的招聘难度，以及充分的工业验证与稳定性，对于一个从零开始的非游戏开发新手团队而言，是更稳妥且更利于成长发展的选择。\n谢谢大家！\n正方二辩提问反方 问题一： 反方一辩强调C++拥有更丰富的学习资源和社区支持，但Rust官方提供了《Rust程序设计语言》等系统化文档，以及Cargo工具链一键解决依赖管理和构建流程。对于从零开始的新手团队，这些现代化工具是否反而能降低初始学习门槛，并大幅提升开发效率？\n追问： Stack Overflow开发者调查显示，Rust连续七年成为“最受喜爱”的语言，社区活跃度和开发者满意度极高。这是否说明Rust的生态对新手的支持质量可能超越了数量上的差距？反方是否低估了社区质量对新手团队的关键作用？\n问题二： 反方提到C++经过长期工业验证，但Rust通过所有权系统彻底规避了内存错误和数据竞争，而这正是新手团队在C++中频繁踩坑的领域。在非游戏开发场景（如网络服务或系统工具）中，Rust的安全性是否能让新手团队更专注于业务逻辑，而非调试底层错误？\n追问： Linux内核、Windows驱动、Firefox等关键项目已逐步引入Rust，微软称其70%的安全漏洞源自内存问题，而Rust能从根本上解决此类问题。这是否表明Rust的工业可靠性正在被主流领域认可？反方如何看待这种趋势对新手团队长期技术选型的影响？\n反方二辩回答 对问题一的回复\n正方强调Rust的工具-chain能降低新手团队学习门槛与提升开发效率，但实际并非如此。虽然Rust官方提供了《Rust程序设计语言》等系统化文档，Cargo工具链在一定程度上简化了依赖管理和构建流程，可C++的学习资源在深度和广度上更具优势。C++有着悠久的发展历史，相关学习资料丰富多样，像《C++ Primer》等经典书籍内容体系完善、案例详实，能为新手提供系统且深入的知识讲解。而Stack Overflow等线上平台大量的C++提问与解答，能让新手在遇到问题时迅速找到参考答案，这点是Rust目前难以匹敌的。尽管Rust社区活跃度和开发者满意度高，但学习资源的丰富度和社区成熟度暂且无法与C++相媲美，新手在寻求帮助时，可能无法像C++那样快速、全面地获取有效信息，这意味着C++在学习资源与社区支持方面更有利于新手团队的成长。\n对问题二的回复\n正方认为Rust的安全性能使新手团队更专注于业务逻辑，但C++的安全性也在不断提升。Rust通过所有权系统规避内存错误和数据竞争，这对新手团队来说看似很有吸引力，然而C++经过多年的发展，在工业应用中已经积累了丰富的经验和大量的优化成果，其在安全性方面也并非毫无作为。C++开发者在长期的实践中，形成了一套较为成熟的安全开发规范和经验，能够有效减少内存错误等问题的发生。而且C++在工业界的应用更为广泛，像Linux内核、Windows驱动等关键项目虽然已逐步引入Rust，但C++依然占据主导地位，这说明C++在这些领域的稳定性和可靠性已经得到了充分验证。对于新手团队而言，站在C++这样成熟且稳定的技术基础上，可以更好地学习和借鉴已有的经验和实践，从而更稳健地开展开发工作，减少因技术选型带来的潜在风险。\n反方二辩提问正方 问题一：\n正方认为Rust的工具链简化了开发流程，但C++的工具生态是否更为成熟？例如CMake在大型项目构建中的稳定性，以及长期积累的各种调试工具。对于新手团队来说，这些成熟的工具生态是否比Rust的工具链更利于长期项目发展？\n问题二：\n正方提到Rust的安全性优势，但C++的性能优势在资源受限的嵌入式系统或高性能计算场景中更为关键。对于非游戏开发的新手团队，如果未来可能涉足这些领域，C++的性能表现是否更具长期价值？\n正方二辩回答 对问题一的回应：C++工具生态的“成熟”是否等同于“高效”？\n反方提到CMake等C++工具在大型项目中的稳定性，但CMake的学习曲线陡峭且配置复杂，新手团队常因编写低效的CMakeLists而陷入构建地狱。反观Rust的Cargo工具链，内置依赖解析、单元测试、文档生成等一体化功能，开箱即用的特性让新手无需耗费精力在工具配置上，直接聚焦代码逻辑。例如，Cargo.toml的简洁语法与Crates.io生态的集中化管理，彻底避免了C++中依赖版本冲突、头文件路径混乱等问题。\n此外，Rust的工具链并非“不成熟”——rust-analyzer提供实时语义分析，Clippy提供代码规范检查，Miri可检测未定义行为。这些工具与编译器深度集成，形成主动防御体系，而C++开发者往往依赖第三方工具（如Valgrind、ASan）事后补救。对新手而言，“预防错误”远比“事后调试”更友好。\n对问题二的回应：性能与安全能否兼得？\n反方强调C++在资源受限场景的性能优势，但Rust通过零成本抽象和LLVM后端优化，性能与C++持平甚至更优。例如，嵌入式领域，Rust已支持no_std环境，并被应用于无人机（如Drone OS）、实时系统（如Tock OS）；高性能计算中，Rust的并行安全性（如无畏并发）使其在分布式计算框架（如TiKV）中表现卓越。\n更重要的是，Rust的安全性并非性能的敌人——所有权系统在编译期消除内存错误，避免了C++中因手动管理内存导致的性能损耗（如内存泄漏引发的频繁GC或调试耗时）。对于新手团队，Rust强制规避UB（未定义行为），反而能减少性能陷阱，让“高性能”更可预测、更可持续。\n正方三辩总结 尊敬的评委、对方辩友、各位观众：\n大家好！经过激烈交锋，我方更坚定地认为：对于从零开始的新手团队，Rust 是更明智的选择。原因有三：\n第一，工具链的“现代化”远胜“历史包袱”。 反方强调 C++ 工具链的“成熟”，但 CMake 的复杂配置、依赖管理的碎片化，对新手而言是认知地狱。而 Rust 的 Cargo 工具链开箱即用，从依赖解析到跨平台编译，用一行命令解决 C++ 十行脚本的难题。更关键的是，Rust 工具链与编译器深度集成：Clippy 实时规范代码、Miri 拦截未定义行为，这些主动防御机制让新手少走弯路，而 C++ 开发者却只能在 Valgrind 的报错海洋中疲于奔命。工具链的价值不在于“资历”，而在于“生产力”——而这正是新手团队最需要的。\n第二，安全性是效率的基石，而非负担。 反方承认 C++ 存在内存安全隐患，却认为“经验可以弥补”。但新手团队缺乏经验，正需要语言层面的保护。Rust 的所有权系统在编译期消灭数据竞争和悬垂指针，让 80% 的 C++ 调试时间直接归零。微软数据表明，70% 的安全漏洞源自内存错误——若新手团队选择 C++，无异于在雷区中学排雷；而 Rust 直接扫清地雷，让开发者专注业务逻辑。安全不是“可有可无”的选项，而是新手团队的“生存底线”。\n第三，Rust 代表未来，而未来需要远见。 C++ 的“工业验证”源于历史，但 Linux 内核引入 Rust、亚马逊用 Rust 重建 AWS 关键服务、Meta 用 Rust 重构区块链 Diem，这些头部案例证明：Rust 正在接管下一代基础设施。反方提到嵌入式与高性能场景，却忽视 Rust 已登陆火星探测器（Drone OS）、支撑万亿级数据库（TiKV）——零成本抽象让 Rust 在性能战场不输 C++，而安全性成为额外红利。新手团队的技术选型不应被“历史惯性”束缚，而应拥抱更高效、更安全的未来。\n各位评委，一个新手团队的核心诉求是什么？不是重复前人踩坑的老路，而是在可靠的基础上快速成长。Rust 用现代化工具链降低门槛，用内存安全兜底开发效率，用前沿生态打开未来可能性。今天的选择，将决定团队是困在 C++ 的调试泥潭中挣扎，还是在 Rust 的护航下轻装前行。答案不言自明。\n谢谢大家！\n反方三辩总结 尊敬的评委、对方辩友、各位观众：\n大家好！经过与正方的深入交锋，我方更加确信：对于从零起步的非游戏开发新手团队，C++才是更稳妥、更利于成长的选择。以下从三个关键点进行总结：\n第一，学习资源与社区支持是新手团队的“成长基石”。 正方强调Rust工具链的简便性，但工具只是辅助，学习资源的深度和广度才是新手团队成长的关键。C++几十年的发展沉淀了海量的优质学习资料，从经典书籍《C++ Primer》到线上论坛Stack Overflow上丰富的问答，这些资源能够为新手提供系统且深入的知识讲解。而Rust尽管发展迅速，但在资源丰富度和社区成熟度上仍无法与C++相提并论。新手团队在遇到复杂问题时，可能无法像在C++社区那样迅速找到全面有效的解决方案。此外，C++的社区中聚集了大量经验丰富的开发者，他们愿意分享经验、提供指导，这对新手团队攻克难题、少走弯路至关重要。\n第二，项目适配性与招聘难度关乎团队的“生存现实”。 非游戏开发领域需求多样，C++凭借其强大的性能和灵活性，已经在众多领域得到广泛验证和应用，无论是系统级工具开发还是大型网络服务后台构建，C++都能很好地适配。而且C++开发者在人才市场上数量众多，招聘相对容易，即便团队处于起步阶段，也能较便捷地找到具备不同经验层次的人才加入，保障项目的人员供给。反观Rust，由于还处于发展阶段，在一些特定业务场景下的最佳实践和成熟案例相对有限，部分业务可能需要团队花费更多时间去探索适配方式。在招聘市场上，熟练掌握Rust的开发者数量相对较少，这意味着新手团队在组建初期可能面临人才短缺的困境，拖慢项目推进速度。\n第三，工业验证与稳定性是团队的“发展保障”。 C++经过几十年的工业应用洗礼，在各种大型、复杂的项目中都展现出强大的稳定性，像大型数据库系统、操作系统核心组件等许多关键基础设施都有C++的身影，其质量和可靠性得到了充分验证。新手团队站在这样的成熟技术肩膀上，可以更安心地开展开发工作，减少因技术选型带来的潜在风险。而Rust虽然在安全性等方面有独到之处，但整体工业应用时长较短，尚未经历像C++那样漫长且多元的项目考验，在一些极端场景下的稳定性和表现还有待时间去进一步证明。\n综上所述，C++凭借丰富的学习资源与社区支持、良好的项目适配性与较低的招聘难度，以及充分的工业验证与稳定性，对于一个从零开始的非游戏开发新手团队而言，是更稳妥且更利于成长发展的选择。新手团队需要的不仅是现代工具的便捷，更需要深厚的技术积累和广泛的行业认可作为支撑。C++无疑能为新手团队提供更坚实的后盾，助力其在技术道路上稳健前行。\n谢谢大家！\n辩论赛评委点评及结果 评委点评 正方（Rust） 优点 ：正方论述逻辑连贯且全面，从新手友好性、安全即生产力、未来适应性三个维度层层递进，清晰阐述 Rust 对新手团队的优势。一辩发言条理清晰，对 Rust 编译器优势、安全性特点以及现代开发范式契合度有力说明，让评委迅速抓住关键特点。二辩回应质疑时，深入剖析学习资源本质，强调 Rust 现代工具链对新手学习曲线优化以及社区活跃度和开发者满意度对新手支持质量的积极影响，且围绕安全性，以实际项目应用和漏洞数据为支撑，有力论证 Rust 安全性对新手团队的保障作用。三辩总结陈词从全局出发，再次强调 Rust 工具链现代化、安全性重要性以及 Rust 代表未来，收尾有力。此外，正方论点明确，引用微软安全报告、 Linux 内核案例等数据增强说服力，对 C++ 工具链复杂性和社区质量的反驳有效，语言流畅，比喻生动，三辩总结用排比强化气势，二辩提问直击痛点，在团队协作上，一辩立论框架清晰，二辩攻防衔接自然，三辩总结升华主题，自由辩论中未出现观点冲突。 不足 ：面对反方提出的 C++ 性能优势以及在某些特定领域广泛应用时，正方回应笼统，未深入探讨不同业务场景下 Rust 与 C++ 竞争及满足特定性能功能需求的方式。阐述 Rust 未来适应性时，缺少对前沿领域发展趋势深入分析以及与新手团队成长紧密联系，使该论点说服力略显不足。部分论据（如 Rust 工具链完全替代 C++ 生态）稍显理想化，二辩追问略显密集，且在互动性上可增强。 反方（C++） 优点 ：反方一辩从学习资源与社区支持、项目适配性与招聘难度、工业验证与稳定性三个角度对 C++ 进行全面辩护，列举大量经典书籍、线上资源以及 C++ 在工业界实际应用和稳定性表现，论据有说服力和现实基础。二辩回应正方提问时，针对 C++ 学习资源、工具生态以及性能优势等方面进行有针对性阐述，强调 C++ 在大型项目构建和资源受限场景中的独特价值。三辩总结陈词整合反方三个关键论点，突出 C++ 成熟稳定性和广泛适用性，收尾有力。此外，反方立足学习资源、招聘难度和工业验证，论点扎实，C++ 经典书籍和 Stack Overflow 案例具代表性，在团队协作上分工明确。 不足 ：反方强调 C++ 学习资源丰富度和社区支持时，侧重传统学习资料和论坛问答，对新兴互动式学习平台和社区即时沟通渠道提及较少，削弱论点时代性和对新手团队实际需求适配性。对 Rust 安全性优势回应集中在 C++ 历史经验和安全规范上，缺乏对 Rust 所有权系统等创新安全机制深入分析和有效反驳，使评委在关键论点上更倾向正方。谈工业验证与稳定性时，未充分说明 C++ 面对新兴技术挑战自我革新能力和未来发展趋势，优势局限于过去和现状。且未充分回应 Rust 社区活跃度提升趋势，对安全性的反驳缺乏数据支撑（如未提及 C++20 / 23 新特性），二辩回答未能跳出预设框架（如回避 Rust 在嵌入式领域进展），三辩总结重复一辩论点，缺乏新角度。 比赛结果 综合考虑双方辩手在内容、表达、团队协作以及时间控制等方面的综合表现，正方（Rust）表现更为出色，能更全面、深入且有针对性地阐述 Rust 对于新手团队的优势，尤其在学习友好性和安全性的关键方面论证充分，更契合新手团队核心需求。评委团判定正方获胜。\n技术选型建议 选择 Rust 的场景 ：\n团队侧重安全敏感领域（如网络服务、系统工具）。 期望降低长期维护成本，避免内存错误调试。 愿意接受初期学习曲线，拥抱现代语法与工具链。 目标涉及 Wasm、嵌入式、区块链等新兴领域。 选择 C++ 的场景 ：\n项目需深度依赖历史代码或特定库（如游戏引擎、高频交易）。 团队急需快速招聘成熟开发者，或需适配传统工业场景。 对极致性能调优有强需求（如资源受限嵌入式设备）。 倾向于成熟生态与海量案例参考。 总结 Rust 与 C++ 之争本质是 “未来导向” 与 “历史惯性” 的权衡。新手团队若追求安全、现代化且愿投资学习，Rust 是更优解；若需快速落地、依赖成熟生态，C++ 仍是稳妥选择。技术决策应基于业务场景、团队基因与长期愿景，而非单纯语言优劣。\n评分结果（满分 100 分） 正方 正方一辩 ：90 分\n内容（35 分） ：从新手友好性、安全即生产力、未来适应性三个维度展开论述，逻辑清晰且全面，论据充分且具有说服力，准确抓住 Rust 的关键优势，得分 35 分。 表达（30 分） ：语言表达流畅、准确，术语使用恰当，口头表达清晰，逻辑连贯，具有较强感染力和说服力，得分 28 分。 团队协作（20 分） ：与二辩、三辩配合默契，分工明确，奠定良好基础，有效推动团队整体论述展开，得分 19 分。 时间控制（15 分） ：发言时间把控精准，在规定时间内完整阐述己方观点，得分 14 分。 正方二辩 ：92 分\n内容（35 分） ：针对反方质疑，从学习资源本质、安全范式革命性价值、团队成长可持续性三个维度进行有力回应，论据新颖且有说服力，得分 35 分。 表达（30 分） ：表达清晰、流畅，逻辑严谨，能用生动语言和具体例子阐述复杂概念，得分 29 分。 团队协作（20 分） ：与一辩和三辩配合紧密，有效支持团队整体论述，推动辩论深入，得分 19 分。 时间控制（15 分） ：在规定时间内高效完成发言，时间分配合理，得分 15 分。 正方三辩 ：91 分\n内容（35 分） ：总结陈词全面有力，再次强调和深化正方三个关键论点，突出 Rust 工具链优势、安全性和未来发展趋势，得分 34 分。 表达（30 分） ：语言表达有感染力和号召力，能简洁明了传达核心观点，逻辑清晰，得分 28 分。 团队协作（20 分） ：在团队中发挥重要总结作用，与前两位辩手指论述紧密相连，形成完整论述体系，有效提升团队说服力，得分 19 分。 时间控制（15 分） ：发言时间控制得当，在规定时间内完成总结陈词，得分 14 分。 反方 反方一辩 ：88 分\n内容（35 分） ：从学习资源与社区支持、项目适配性与招聘难度、工业验证与稳定性三个角度对 C++ 进行辩护，列举丰富论据，但部分论点相对传统，对新手团队针对性稍显不足，得分 32 分。 表达（30 分） ：语言表达清晰、流畅，能准确传达观点，但在感染力和吸引力方面稍逊，得分 26 分。 团队协作（20 分） ：与二辩、三辩配合默契，奠定基础，但在整体论述连贯性和深度上还有提升空间，得分 17 分。 时间控制（15 分） ：在规定时间内完成发言，但时间分配紧凑，影响内容展开，得分 13 分。 反方二辩 ：87 分\n内容（35 分） ：回应正方提问时，针对 C++ 学习资源、工具生态和性能优势等方面阐述，但对 Rust 创新安全机制等关键优势反驳不够深入，论据说服力有待加强，得分 30 分。 表达（30 分） ：表达清晰，逻辑连贯，但语言生动性和感染力表现一般，对评委和观众吸引力不足，得分 24 分。 团队协作（20 分） ：与一辩和三辩配合基本默契，但在自由辩论中对一些关键问题的回应不够及时和有力，得分 16 分。 时间控制（15 分） ：发言时间基本在规定范围内，但时间把控不够精准，影响内容展开，得分 12 分。 反方三辩 ：89 分\n内容（35 分） ：总结陈词较好总结强调反方三个关键论点，突出 C++ 成熟稳定性和广泛适用性，但在回应正方关于 Rust 安全性和未来发展趋势优势时，缺乏有力论据和深入分析，得分 31 分。 表达（30 分） ：语言表达清晰，逻辑条理清楚，但感染力和说服力略显不足，得分 25 分。 团队协作（20 分） ：在团队中发挥总结和收尾作用，与前两位辩手论述基本连贯，但在整体论述创新性和深度上还有待提升，得分 17 分。 时间控制（15 分） ：发言时间控制较为合理，但时间分配稍显仓促，影响论点阐述，得分 13 分。 综上所述，正方整体表现更为出色，能更全面、深入且有针对性地阐述 Rust 对于新手团队的优势。反方虽在 C++ 工业验证和稳定性方面有一定优势，但在回应正方关键论点时，部分反驳不够深入，论据说服力有待加强。\n经过评委团综合评分，正方（Rust）以 89 分对 83 分的优势胜出，成为本次辩论赛的获胜方！\n","permalink":"https://global.yfstudio.online/post/rust-vs-cpp-ai-debate/","summary":"AI 辩论 Rust 与 C++ 对于新手开发团队的技术选型优劣，从安全性、学习曲线和生产力等维度展开讨论。","title":"《Rust 与 C++ 之争 —— 新手开发团队的抉择》AI 辩论赛"},{"content":" 小声逼逼：\n这应该算得上是心得吧（至少是笔记）\u0026hellip;\u0026hellip;现在网上资料本来就难找，关联性还差，真是难受。\nQ：编译 APK 时卡在 Running Gradle task 'assembleRelease'... 不动？\nA：是 Gradle 的问题。国内的网络环境导致无法下载 Gradle。想要解决也很简单：首先找个国内可以正常使用的镜像源（此处推荐腾讯软件源），编辑 [Project]/android/gradle/wrapper/gradle-wrapper.properties，将 distributionUrl 所对的链接替换成镜像源对应版本的链接就行。\n包 找不到理想的包？\n推荐网站：Easy Flutter Pubs、Flutter Gems\n把握不了 MD3 的动态颜色？\n试试这个项目：dynamic_color_viewer\n包推荐 rename\n可用于设置项目的包名、应用名。\nflutter_launcher_icons\n可用于生成并应用项目图标，但是没办法为安卓应用设置使用动态颜色的图标。\n编译出现问题 如果代码没问题，不管别的，先清理一遍环境。\n1 2 3 4 5 flutter clean flutter pub cache clean flutter pub cache repair flutter pub get flutter pub upgrade 执行完上面的指令，大概率就没问题了。\n启动时提示缺少 DLL 有时一些奇怪的用户电脑上会缺少以下 DLL：\nMSVCP140.dll # C++ 标准库\rvcruntime140.dll # C 运行时库\rvcruntime140_1.dll 作为贴心的开发者，当然要事先准备好一切啦。 C:\\Windows\\System32 下面的 DLL 是 64 位的，C:\\Windows\\SysWOW64 下是 32 位的。将上面提到的 3 个 DLL copy 到编译好的 Flutter 程序旁边就行了。\n","permalink":"https://global.yfstudio.online/post/dart-flutter-dev-notes/","summary":"Dart/Flutter 开发常见问题解决，包括 Gradle 镜像配置、包推荐工具及实用包介绍。","title":"Dart \u0026 Flutter 开发心得"},{"content":"核心镜像变量配置 Dart 和 Flutter 依赖两个关键环境变量实现加速，所有操作系统均需配置以下内容（任选一个镜像站）：\n推荐镜像源列表 Flutter社区镜像（CFUG 官方维护，稳定性优先）\n1 2 PUB_HOSTED_URL=https://pub.flutter-io.cn FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 清华大学 TUNA 镜像（同步频率高，支持多协议）\n1 PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub 注：TUNA 目前仅提供 Dart Pub 镜像，未同步 Flutter 存储（flutter_infra），故 FLUTTER_STORAGE_BASE_URL 暂不可用。如需 Flutter SDK 下载加速请用其他镜像源。\n上海交大 SJTUG 镜像（实时同步，回源策略完善）\n1 2 PUB_HOSTED_URL=https://mirror.sjtu.edu.cn/dart-pub FLUTTER_STORAGE_BASE_URL=https://mirror.sjtu.edu.cn 官方推荐使用思源服务器 mirror.sjtu.edu.cn。致远服务器 mirrors.sjtug.sjtu.edu.cn 亦可使用，但地址结构略有不同。\n以上镜像源信息源自 Flutter 官方中文文档 - 在中国网络环境下使用 Flutter，建议定期查阅以获取最新镜像列表。\n操作系统配置步骤 Windows 系统 临时生效（当前会话窗口）\n打开PowerShell或CMD：\n1 2 $env:PUB_HOSTED_URL=\u0026#34;镜像地址\u0026#34; $env:FLUTTER_STORAGE_BASE_URL=\u0026#34;镜像地址\u0026#34; 永久生效 [Environment]::SetEnvironmentVariable(\u0026quot;PUB_HOSTED_URL\u0026quot;, \u0026quot;镜像地址\u0026quot;, \u0026quot;Machine\u0026quot;) [Environment]::SetEnvironmentVariable(\u0026quot;FLUTTER_STORAGE_BASE_URL\u0026quot;, \u0026quot;镜像地址\u0026quot;, \u0026quot;Machine\u0026quot;)\nmacOS / Linux 系统 临时生效（当前会话窗口）\n1 2 export PUB_HOSTED_URL=\u0026#34;镜像地址\u0026#34; export FLUTTER_STORAGE_BASE_URL=\u0026#34;镜像地址\u0026#34; 永久生效\n编辑Shell配置文件（如 ~/.bashrc、~/.zshrc）： 1 2 echo \u0026#39;export PUB_HOSTED_URL=\u0026#34;镜像地址\u0026#34;\u0026#39; \u0026gt;\u0026gt; ~/.bashrc echo \u0026#39;export FLUTTER_STORAGE_BASE_URL=\u0026#34;镜像地址\u0026#34;\u0026#39; \u0026gt;\u0026gt; ~/.bashrc 生效配置：source ~/.bashrc Flutter SDK 下载加速 若需手动下载 SDK，将原始 URL 中的 storage.googleapis.com 替换为镜像域名。例如：\n原始URL：\nhttps://storage.googleapis.com/flutter_infra_release/releases/stable/windows/flutter_windows_v3.13.0-stable.zip 镜像URL（以 Flutter 社区为例）：\nhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_v3.13.0-stable.zip Android Studio 相关配置 Gradle镜像加速\n在项目根目录的 build.gradle 中添加阿里云仓库：\n1 2 3 4 5 6 buildscript { repositories { maven { url \u0026#39;https://maven.aliyun.com/repository/google\u0026#39; } maven { url \u0026#39;https://maven.aliyun.com/repository/central\u0026#39; } } } Android SDK镜像\n打开 Android Studio → Settings → Android SDK → SDK Update Sites 添加镜像源（如清华源）： https://mirrors.tuna.tsinghua.edu.cn/android/repository/ 验证配置 执行 flutter doctor，检查依赖下载是否正常。 运行 echo $PUB_HOSTED_URL（Unix）或 echo %PUB_HOSTED_URL%（Windows），确认变量已生效。 注意事项 发布Package时需要恢复默认源\n发布到 pub.dev 前需取消镜像变量，否则会失败：\n1 2 unset PUB_HOSTED_URL # Unix Remove-Item Env:\\PUB_HOSTED_URL # PowerShell 镜像同步延迟：若遇到依赖版本不一致问题，尝试切换其他镜像源。\n常见问题 镜像失效：检查镜像站状态页面（如清华镜像状态页），或切换备用镜像。 环境变量不生效：确保变量名无拼写错误，重启终端或IDE。 混合开发配置：若集成到Android原生项目，需同步配置Gradle镜像。 通过以上配置，可显著提升 Dart 包下载和 Flutter SDK 安装速度。更多细节可参考Flutter中文文档。\n","permalink":"https://global.yfstudio.online/post/dart-flutter-mirror-setup/","summary":"Dart/Flutter 镜像加速配置指南，包含 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 环境变量设置及推荐镜像源列表。","title":"Dart \u0026 Flutter 镜像加速配置"},{"content":"安装 Go 时下载龟速 使用国内镜像站下载官方安装包：\n推荐镜像源\n官方中国镜像：https://golang.google.cn/dl/ 第三方镜像站：https://mirrors.aliyun.com/golang/ Go 模块依赖加速 配置 GOPROXY 镜像源 类 Unix 系统 (Linux/macOS) 1 2 3 4 5 6 7 # 三选一设置镜像源（七牛/阿里/官方） go env -w GOPROXY=https://goproxy.cn,direct # 七牛云 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct # 阿里云 go env -w GOPROXY=https://goproxy.io,direct # 官方全球CDN # 验证配置 go env | grep GOPROXY Windows 系统 (PowerShell) 1 2 3 4 5 6 7 # 三选一设置镜像源 $env:GOPROXY = \u0026#34;https://goproxy.cn,direct\u0026#34; $env:GOPROXY = \u0026#34;https://mirrors.aliyun.com/goproxy/,direct\u0026#34; $env:GOPROXY = \u0026#34;https://goproxy.io,direct\u0026#34; # 永久生效（需管理员权限） [Environment]::SetEnvironmentVariable(\u0026#34;GOPROXY\u0026#34;, \u0026#34;https://goproxy.cn,direct\u0026#34;, \u0026#34;Machine\u0026#34;) 私有模块配置 1 2 # 设置不走代理的私有仓库（支持通配符） go env -w GOPRIVATE=*.corp.example.com,*.internal.com 缓存清理 1 2 3 4 5 6 # 清理模块缓存 go clean --modcache # 重置环境配置 go env -u GOPROXY go env -u GOPRIVATE GOSUMDB 校验加速 解决 sum.golang.org 连接超时问题：\n1 2 3 4 5 # 类 Unix 系统 go env -w GOSUMDB=sum.golang.google.cn # Windows 系统 $env:GOSUMDB = \u0026#34;sum.golang.google.cn\u0026#34; 注意事项\nGo 1.13 及以上版本支持镜像代理 多个镜像源用逗号分隔，direct 表示直连源站 私有仓库请务必配置 GOPRIVATE 避免校验失败 ","permalink":"https://global.yfstudio.online/post/go-mirror-setup/","summary":"Go 开发镜像加速指南，覆盖安装包下载镜像、GOPROXY 配置及私有模块设置。","title":"Go 开发镜像加速指南"},{"content":" 国内 Rust 开发环境搭建总被网络问题卡脖子，实测中科大镜像源比较稳定。\n安装 Rust 时下载龟速 配置中科大镜像源\n在 PowerShell 中运行以下命令：\n1 2 3 # 设置临时镜像变量 $env:RUSTUP_DIST_SERVER = \u0026#34;https://mirrors.ustc.edu.cn/rust-static\u0026#34; $env:RUSTUP_UPDATE_ROOT = \u0026#34;https://mirrors.ustc.edu.cn/rust-static/rustup\u0026#34; 安装完成后，永久生效配置需设置系统环境变量：\n1 2 3 4 5 # 设置 RUSTUP_DIST_SERVER [Environment]::SetEnvironmentVariable(\u0026#34;RUSTUP_DIST_SERVER\u0026#34;, \u0026#34;https://mirrors.ustc.edu.cn/rust-static\u0026#34;, \u0026#34;Machine\u0026#34;) # 设置 RUSTUP_UPDATE_ROOT [Environment]::SetEnvironmentVariable(\u0026#34;RUSTUP_UPDATE_ROOT\u0026#34;, \u0026#34;https://mirrors.ustc.edu.cn/rust-static/rustup\u0026#34;, \u0026#34;Machine\u0026#34;) cargo build 依赖下载超时 配置 Cargo 国内源：编辑 ~\\.cargo\\config\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [source.crates-io] replace-with = \u0026#39;ustc\u0026#39; [source.ustc] registry = \u0026#34;sparse+https://mirrors.ustc.edu.cn/crates.io-index/\u0026#34; [registries.ustc] index = \u0026#34;sparse+https://mirrors.ustc.edu.cn/crates.io-index/\u0026#34; [http] check-revoke = false # 解决 Windows 下的证书问题 # 清华源（备用） [source.tuna] registry = \u0026#34;https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git\u0026#34; # 字节跳动源（企业级） [source.rsproxy] registry = \u0026#34;https://rsproxy.cn/crates.io-index\u0026#34; 注意：\n若使用 Rust 1.68 以下版本，需删除 sparse+ 前缀 修改后建议清理缓存：cargo clean 缓存清理 遇到玄学问题时，依次执行：\n1 2 3 4 5 6 7 8 9 10 # 清理 Rust 编译产物 cargo clean # 重置工具链 rustup self uninstall rustup update # 暴力删除缓存 rm -r ~\\.cargo\\registry rm -r ~\\.rustup\\tmp ","permalink":"https://global.yfstudio.online/post/rust-dev-setup-notes/","summary":"Rust 开发环境搭建的镜像加速方案，包括 rustup 安装和 cargo 配置的中科大镜像源设置方法。","title":"Rust 开发踩坑笔记"},{"content":"本文使用 ffigen 包为 Dart 生成动态链接库的绑定。\n前置知识 Dart 开发基础 Go 开发基础 动态链接库概念 本文默认读者已经了解以上知识。若未了解，请读者自行查阅资料。\n示例 以下是一个使用 Go 语言生成动态链接库并使用 Dart 调用其导出的函数的示例。\n环境 系统 版本：Windows 10 专业工作站版 操作系统内部版本：19045.3803 开发环境 Go ：go1.23.2 windows/amd64 Dart ：3.6.1 (stable) (Tue Jan 7 09:50:00 2025 -0800) on \u0026quot;windows_x64\u0026quot; ffi: ^2.1.3 ffigen: ^15.0.0 LLVM：19.1.7 安装路径：D:\\App\\Runtime\\LLVM 完整流程 Go 部分 - 生成动态链接库 新建一个名为 go-test 的文件夹。\n在 go-test 下运行指令：\n1 go mod init go-test 新建文件 main.go，内容如下：\n1 2 3 4 5 6 7 8 9 10 package main import \u0026#34;C\u0026#34; //export Add func Add(a, b int) int { return a + b } func main() {} 保存后 main.go 后运行指令：\n1 go build -o add.dll -buildmode=c-shared main.go 此时 go-test 下的结构如下：\n1 2 3 4 5 6 7 . ├── add.dll ├── add.h ├── go.mod ├── main.go 0 directories, 4 files 至此，Go 部分即动态链接库的生成已经完成，接下来就是 Dart 部分即动态链接库的调用。\nDart 部分 - 调用动态链接库 新建一个名为 ffi_test 的文件夹。\n在 ffi_test 下运行指令：\n1 dart create . --force 使用以下指令将 ffigen 添加至 dev_dependencies：\n1 dart pub add -d ffigen 将前面生成的 add.h 复制到 lib/lib_headers 下。\n新建文件 ffigen.yaml，内容如下：\n1 2 3 4 5 6 name: GoAddLibAutoGen output: \u0026#39;lib/goaddlib_bindings.dart\u0026#39; headers: entry-points: - \u0026#39;lib/lib_headers/add.h\u0026#39; llvm-path: [\u0026#39;D:\\\\App\\\\Runtime\\\\LLVM\u0026#39;] 保存 ffigen.yaml 后运行指令：\n1 dart run ffigen --config ffigen.yaml 此时 ffi_test 下的结构如下：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 . ├── CHANGELOG.md ├── README.md ├── analysis_options.yaml ├── bin │ └── ffi_test.dart ├── ffigen.yaml ├── lib │ ├── ffi_test.dart │ ├── goaddlib_bindings.dart │ └── lib_headers │ └── add.h ├── pubspec.lock ├── pubspec.yaml └── test └── ffi_test_test.dart 4 directories, 11 files 新建文件 lib/ff.dart，内容如下：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import \u0026#39;dart:ffi\u0026#39;; import \u0026#39;dart:io\u0026#39;; import \u0026#39;package:ffi_test/goaddlib_bindings.dart\u0026#39; as goaddlib_bindings; List\u0026lt;DynamicLibrary\u0026gt; _libs4 = [ DynamicLibrary.open(Platform.isWindows ? \u0026#34;add.dll\u0026#34; : \u0026#34;add.so\u0026#34;), ]; Pointer\u0026lt;T\u0026gt; _lookup\u0026lt;T extends NativeType\u0026gt;(String symbolName) { for (final i in _libs4) { if (i.providesSymbol(symbolName)) { return i.lookup(symbolName); } } throw Exception(\u0026#34;can not find the symbol $symbolName from library\u0026#34;); } final ff = goaddlib_bindings.GoAddLibAutoGen.fromLookup(_lookup); 保存 lib/ff.dart 后修改 bin/ffi_test.dart，内容如下：\n1 2 3 4 5 6 7 import \u0026#39;package:ffi_test/ffi_test.dart\u0026#39; as ffi_test; import \u0026#39;package:ffi_test/ff.dart\u0026#39;; void main(List\u0026lt;String\u0026gt; arguments) { print(\u0026#39;Hello world: ${ffi_test.calculate()}!\u0026#39;); print(\u0026#39;ff.Add(1, 2): ${ff.Add(1, 2)}\u0026#39;); } 保存 bin/ffi_test.dart 后新建文件夹 compile/exe 并运行指令：\n1 dart compile exe .\\bin\\ffi_test.dart -o .\\compile\\exe\\ffi_test.exe 将前面生成的 add.dll 复制到 compile/exe 下后，运行指令：\n1 .\\compile\\exe\\ffi_test.exe 此时命令行中便会输出：\n1 2 Hello world: 42! ff.Add(1, 2): 3 相关链接 Releases · llvm/llvm-project All releases - The Go Programming Language Archive - Flutter ","permalink":"https://global.yfstudio.online/post/dart-ffi-dll/","summary":"使用 ffigen 包为 Dart 生成动态链接库绑定的完整示例，基于 Go 语言生成 DLL 并通过 Dart 调用。","title":"Dart 使用动态链接库"},{"content":"theSimpleThing 2.0 皮肤来源：PotPlayer Skin: theSimpleThing 2.0 by flydonkey on DeviantArt\n皮肤推荐配置\n图层式皮肤输出选择 “使用 Direct3D 11” 将不透明度更改为 “100 %” 皮肤展示\n","permalink":"https://global.yfstudio.online/post/potplayer-skin-recommendation/","summary":"推荐 PotPlayer 的 theSimpleThing 2.0 皮肤，提供下载来源及推荐的图层式皮肤输出配置方法。","title":"PotPlayer 皮肤推荐"},{"content":"前言 这篇文章将详细介绍如何在 Ubuntu 系统中更换软件源，以提高软件包的下载速度和更新效率。这是一个非常实用的技巧，尤其适合那些经常需要更新系统和软件包的用户。\nTips\n本文使用 Ubuntu 20.04 进行演示，关于 Ubuntu 各版本的系统代号会在文末给出。\n镜像源更换 备份原镜像源文件 首先，备份当前的镜像源文件。这样做的目的是保证在更换过程中遇到问题时，可以快速恢复到原始状态。\n1 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 编辑镜像源文件 接下来，编辑 /etc/apt/sources.list 文件，将其中的镜像源地址更换为更快的镜像源。这里推荐使用阿里云镜像源。\n1 sudo vim /etc/apt/sources.list 在打开的编辑器中，将原有的内容替换为以下内容：\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # Ubuntu 20.04 LTS (Focal Fossa) 镜像源 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse # 清华大学镜像源（可选） deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse 更新软件包列表 完成编辑后，更新软件包列表，以确保系统能够识别新的镜像源。\n1 sudo apt update Ubuntu 系统代号 Version Code name Version Code name Version Code name Version Code name 24.10 Oracular Oriole 19.04 Disco Dingo 14.04 Trusty Tahr 9.04 Jaunty Jackalope 24.04 Noble Numbat 18.10 Cosmic Cuttlefish 13.10 Saucy Salamander 8.10 Intrepid Ibex 23.10 Mantic Minotaur 18.04 Bionic Beaver 13.04 Raring Ringtail 8.04 Hardy Heron 23.04 Lunar Lobster 17.10 Artful Aardvark 12.10 Quantal Quetzal 7.10 Gutsy Gibbon 22.10 Kinetic Kudu 17.04 Zesty Zapus 12.04 Precise Pangolin 7.04 Feisty Fawn 22.04 Jammy Jellyfish 16.10 Yakkety Yak 11.10 Oneiric Ocelot 6.10 Edgy Eft 21.10 Impish Indri 16.04 Xenial Xerus 11.04 Natty Narwhal 6.06 Dapper Drake 21.04 Hirsute Hippo 15.10 Wily Werewolf 10.10 Maverick Meerkat 5.10 Breezy Badger 20.10 Groovy Gorilla 15.04 Vivid Vervet 10.04 Lucid Lynx 5.04 Hoary Hedgehog 20.04 Focal Fossa 14.10 Utopic Unicorn 9.10 Karmic Koala 4.10 Warty Warthog 19.10 Eoan Ermine ","permalink":"https://global.yfstudio.online/post/ubuntu-switch-mirror/","summary":"Ubuntu 系统更换软件源的详细步骤，以阿里云镜像为例，包含备份原源文件和编辑 sources.list 的操作方法。","title":"Ubuntu 镜像源更换指南"},{"content":" 今天上了物理必修二的开普勒定律，听老师讲着关于天体物理的历史，心里忽有一丝感悟\n假如我是托勒密时代的人，经过学习我应该也会对地心说深信不疑。可我是生活在21世纪的人，我们的科学早已洞察真相了。。。吗？\n我正想着，忽然感到一丝恐惧。我们把科学作为探索世界的工具，将知识作为思维大厦的根基。我们都对它们深信不疑。可仔细想想，托勒密时代不也是这样的吗？假如有一天大厦的根基出现了一丝裂痕，我们又该如何面对？\n也许，质疑一切才是我最好的选择。\n那么现在，我便有两件趁手的工具了。一是质疑一切，二是不断发问。\n","permalink":"https://global.yfstudio.online/post/reflections-on-science/","summary":"从开普勒定律课堂出发，反思科学、质疑与思考的意义，探讨以质疑一切和不断发问作为认知工具的态度。","title":"科学、质疑与思考"},{"content":"报错：anti hotlinking 或 sign error 解决思路 更改 UA 为 pan.baidu.com 以通过服务器校验\nnetdisk 貌似已经失效，只有 pan.baidu.com 可通过服务器校验\n解决方案 如果你是用户 桌面端以 Chrome 为例 别用 Edge\n别用 Edge\n别用 Edge\n重要的事情说三遍\nEdge 在使用设备仿真时会在用户设定的 UA 字符串后面添加字符串，形式为 {your_ua} Edg/142.0.0.0，这种形式无法通过百度网盘的服务器校验。\n按下 F12 进入 DevTools\n按下 Ctrl+Shift+M 进入设备仿真\n在网页上方出现的顶栏中单击 \u0026ldquo;尺寸\u0026rdquo; 一项，并单击 \u0026ldquo;修改\u0026hellip;\u0026rdquo;\n在新出现的页面中单击 \u0026ldquo;添加自定义设备\u0026hellip;\u0026rdquo;\n在 \u0026ldquo;用户代理字符串\u0026rdquo; 处输入 pan.baidu.com，设备名称和分辨率全凭个人喜好，然后单击添加以保存配置\n确保新配置的复选框处于选中状态\n回到网页上方的顶栏，将 \u0026ldquo;尺寸\u0026rdquo; 一项更改为新的配置\n随后刷新网页即可开始下载\n\u0026ndash;Tips\n完成配置后每次报错只需要依次按下 F12, Ctrl+Shift+M 并保证尺寸为新配置，然后刷新即可。或者你也可以提醒服务器的管理者阅读本文\n移动端以 Via 为例 单击工具栏中的 \u0026ldquo;菜单\u0026rdquo; 按钮 单击菜单中的 \u0026ldquo;工具箱\u0026rdquo; 按钮 长按新出现的 \u0026ldquo;浏览器标识\u0026rdquo; 按钮 单击新页面右上方的 \u0026ldquo;+\u0026rdquo; 按钮 在浏览器标识处输入 netdisk 或 pan.baidu.com，标题全凭个人喜好，然后单击 \u0026ldquo;保存\u0026rdquo; 按钮 在返回的页面中选中新标识 随后刷新网页即可开始下载 \u0026ndash;Tips\n完成配置后每次报错只需要依次单击 \u0026ldquo;菜单\u0026rdquo;, \u0026ldquo;工具箱\u0026rdquo;, \u0026ldquo;浏览器标识\u0026rdquo; 并将浏览器标识更改为新标识，然后刷新即可。或者你也可以提醒服务器的管理者阅读本文\n如果你是服务器的管理者 请开启存储的 \u0026ldquo;Web 代理\u0026rdquo; 选项以减少用户的时间花销，优化用户体验。\n注意\r使用Web代理意味着由代理服务器先下载一边文件，再上传一次文件。这相当占用带宽资源。 报错：needverify 解决方法 更改 Alist 存储方案百度分享为百度网盘或查找并解决解析账号存在的问题\n","permalink":"https://global.yfstudio.online/post/alist-baidu-download-fix/","summary":"解决 Alist 中百度网盘 anti hotlinking 报错的方法，通过修改 UA 为 pan.baidu.com 以通过服务器校验。","title":"Alist 中百度网盘无法下载的解决方法"},{"content":"\r声明\n本方案的实现基于开源项目 MagiskOnWSALocal，一切行为均遵循 AGPL-3.0。\n本文使用的 MagiskOnWSALocal 最后一次更改提交于 Oct 25, 2023，编译输出的 WSA 版本为 231.40000.5.0，Kitsune Mask 版本为 26.4-kitsune-2 (26400) 。\n本文仅提供此方案最关键的部分，其余不详细或未提及部分的信息均可在互联网轻松获取。\n截至写作时间 Feb 19, 2024，我在 XDA、酷安、哔哩哔哩还没能找到关于 \u0026ldquo;基于 Kitsune Mask 的 WSA Root 方案\u0026rdquo; 的文章，所以我在此提供一个简陋的方案。\n方案主体内容 正常获取 MagiskOnWSALocal 仓库的内容，在按照 Readme.md 执行 Run.sh 前，修改同目录的 generateMagiskLink.py。具体内容如下：\n将\nhttps://github.com/topjohnwu/magisk-files/raw/master/{magisk_ver}.json 替换为\nhttps://github.com/HuskyDG/magisk-files/raw/main/{magisk_ver}.json 将\nhttps://fastly.jsdelivr.net/gh/topjohnwu/magisk-files@master/{magisk_ver}.json 替换为\nhttps://fastly.jsdelivr.net/gh/HuskyDG/magisk-files@main/{magisk_ver}.json 并保存。随后执行 Run.sh 并按正常流程进行即可。\n补充 在实际编译的过程中，我遇到了 build.sh 的报错：\nCreate system images\rmk_image_umount: /tmp/wsa-build-KdtqMS5oxv_/system_root_merged/vendor /tmp/wsa-build-KdtqMS5oxv_/wsa/x64/vendor.img /tmp/wsa-build-KdtqMS5oxv_/upper/vendor ext4\rERROR: Not yet implemented\rBuild: an error has occurred, exit 应用 @sn-o-w 提供的补丁便可以解决这个问题，这是我在 [Bug] Build Error - Create system images 里面找到的。\n","permalink":"https://global.yfstudio.online/post/wsa-root-kitsune-mask/","summary":"基于 Kitsune Mask 的 WSA Root 方案，通过修改 MagiskOnWSALocal 脚本中的 generateMagiskLink.py 实现集成。","title":"基于 Kitsune Mask 的 WSA Root 方案"},{"content":"WSA 的微软文档 适用于 Android™️ 的 Windows 子系统\n下载 WSA Windows 11 从微软商店下载任何安卓应用时，微软商店会自动在系统中安装 WSA 和 Amazon Appstore。\nWindows 10 微软并没有为 Win10 提供 WSA 支持，但是网络上可以找到安装方法。WSAOnWin10 便是一个专为 Win10 提供 WSA 支持的项目，在这个项目的 Release 中找到预先编译好的构建。\nWSAOnWin10 提供了内置 Magisk 和 KernelSU 两个 Root 方案的WSA，同时还移除了 Amazon Appstore。但有点可惜的是，我并没有找到内置 Kitsune Mask 的方案。\n安卓玩法 安装 Magisk 模块 版本号大于 2309 的 WSA 无法正常安装 Magisk 模块（原因待查）\n故应先在版本号小于等于 2309 的 WSA 中安装模块再升级至新版本\n版本号大于 2309 的 WSA 也无法显示 VPN 授权弹窗\n微软大刀部是人？什么好砍什么。WSA 砍了我还没骂，现在 Skype 也不干了。微软真是恶心。\n","permalink":"https://global.yfstudio.online/post/wsa-notes/","summary":"WSA (Windows Subsystem for Android) 使用杂谈，涵盖下载方式、ADB 权限获取及 Magisk 模块安装注意事项。","title":"WSA 杂谈"},{"content":"本文将解释应如何在 GSI 的诸多分类 (arm64/a64/bgn/bvn/bgs/vndklite) 中做出选择。\n网上流传的 GSI 的命名通常遵循以下模式。\n{arm|a64|arm64}_{a|b}{v|g}{N|S}-{vndklite|secure|personal} 在解释每个术语之前，我建议先安装 Treble Check 应用程序，因为它所显示的信息将作为本文的参考点。\n{arm|a64|arm64} 在 Treble Check 中查看 CPU 体系架构部分。可见，我的设备所使用的CPU是 64 位 ARM 。所以我的设备应当选用标记为 \u0026ldquo;arm64\u0026rdquo; 的 GSI 。\n{a|b} 请查看 System-as-root 部分。如果显示支持，则设备的分区类型是 AB ，但为了方便起见，开发者往往将 GSI 标记为 \u0026ldquo;b\u0026rdquo; 。如果显示不支持，那么设备的分区类型是 Aonly ，此时选择被标记为 \u0026ldquo;a\u0026rdquo; 的 GSI 。可见，我的设备支持 System-as-root ，所以我的设备应当选用标记为 \u0026ldquo;b\u0026rdquo; 的 GSI 。\n{v|g} 这里的 \u0026ldquo;v\u0026rdquo; 代表 Vanilla，这意味着没有 GApps [Google Apps、软件包、服务和框架] 。而 G 表示此 GSI 内置 Google Apps 。这完全是个人选择，如果你需要 Google Apps，那么请选择 \u0026ldquo;g\u0026rdquo; 版本。\n{N|S} \u0026ldquo;N\u0026rdquo; 表示此 GSI 没有超级用户。换句话说，这是一个没有 root 权限的 GSI 。而 \u0026ldquo;S\u0026rdquo; 表示 GSI 内置了超级用户。尽管我更喜欢 root 我的设备，但是我通常会下载 \u0026ldquo;N\u0026rdquo; 版本，因为我更喜欢自行 root 设备而不是使用内置的超级用户。和前面一样，这完全取决于个人。\n{vndklite|secure|personal} 你必须在 {vndklite|secure|personal} 中作选择。首先，转到 Treble Check 应用程序并查看 Project Treble 部分。在这里可以看到设备是否支持 VNDK 。从理论上讲， \u0026ldquo;vndklite\u0026rdquo; 适用于 VNDKLite 设备或非 vndklite 设备上的可读写系统。可见，我的设备支持 Project Treble ，所以我的设备应当选用标记为 \u0026ldquo;vndklite\u0026rdquo; 的 GSI 。\n题外话 应该下载 vndklite GSI 还是非 vndklite GSI ？ 这可能是人们最多的疑问。其实只需要安装 Treble Info 应用程序，转到 \u0026ldquo;详细\u0026rdquo; 页，并查看 \u0026ldquo;链接器命名空间隔离\u0026rdquo; 显示的信息。如果显示 \u0026ldquo;VNDK 处于非 Lite 模式\u0026rdquo; ，则必须下载非 vndklite GSI 。另一方面，如果如果显示 \u0026ldquo;VNDK 处于 Lite 模式\u0026rdquo; ，则下载 vndklite GSI 。\n","permalink":"https://global.yfstudio.online/post/how-to-choose-gsi/","summary":"解释 GSI 镜像命名规则（arm64/a64/bgn/bvn 等），帮助用户根据设备 CPU 架构和分区类型选择正确的 GSI 版本。","title":"如何正确选择 GSI？"},{"content":"前言 随着厂商对用户权限的一步步收紧以及定制UI的不断完善，用户的玩机热情逐渐下降，玩机社区也日益萎缩。2023年1月10日，魔趣ROM创始人@马丁龙猪宣布删库跑路，这一事件无疑是玩机社区衰落的一个标志性事件。魔趣ROM作为曾经国内最大的非营利性开源ROM，其删库行为反映出整个玩机社区所面临的困境。在这样的背景下，我回想起自己在学习玩机过程中曾遇到的种种困难：上网查找不到资料答疑解惑，新手提问却得不到回答。这些经历让我深刻体会到新手在玩机道路上的艰难。如今，我终于积累了一些知识，于是决定写出来，既是为了帮助更多像我当初一样的新手，也是为了自己将来不至于遗忘。当然，我的知识可能还有所欠缺，如有不足之处，还望前辈们多加指正。\n权限 安卓设备上常出现的权限有三：\n用户权限 ADB 权限 ROOT 权限 设备管理员 由于此权限性价比较低，本文不予讨论 用户权限 用户权限是手机出厂时所拥有的权限，是能保证设备正常使用的权限。当拥有此权限时，可以安装及更新大部分应用，更改部分系统设置，读写部分文件。\nADB 权限 ADB，全称 Android 调试桥，是一种功能多样的命令行工具，可让使用者执行各种设备操作，例如安装和调试应用。通过 ADB，我们可以获得 ADB 权限。当拥有此权限时，可以安装、更新及降级大部分应用，更改大部分系统设置，读写部分文件。\nROOT 权限 ROOT，顾名思义，根。设备中的根权限，自然是最高权限。ROOT 权限相对于ADB 权限，运行更加稳定，重启后也无需重新授权。当拥有此权限时，可以安装、更新及降级所有应用，更改所有系统设置，读写所有文件。\n权限的管理方式 用户权限 用户权限通常使用系统设置作为权限管理器，而在获取了更高级的权限后可以使用由 @Rikka 开发的 App Ops 或其他软件进行更深层的用户权限管理。\nADB 权限 ADB权限可以满足大部分玩机手段的需要，主流管理器为 Shizuku，同为 @Rikka 开发。获取ADB权限后，可以使用冰箱、黑阈、App Ops 等应用。\nROOT 权限 安卓设备获取ROOT权限由来已久，早期的 SuperSU、现在的 Magisk、KernelSU 都是相当优秀的ROOT方案。SuperSU 支持安卓2.3至安卓7.1.2，Magisk 支持安卓5.0及以上。而 KernelSU 相对特殊，是一个基于安卓内核的ROOT方案，支持内核版本4.14及以上。\n以上三种ROOT方案都提供了配套的权限管理器，但部分应用只支持 Shizuku 授权，此时我们可以选择授予 Shizuku ROOT 权限而非 ADB 权限，将 Shizuku 作为二级 ROOT 权限管理器，以满足此部分应用的需要（骂的就是你！App Ops！）。\n在古早 MIUI 开发版中（好吧其实也不古早）我们可以找到 MIUI 的官方 ROOT，使用手机管家作为权限管理器。\n","permalink":"https://global.yfstudio.online/post/android-tinkering-guide/","summary":"安卓玩机入门指南，介绍用户权限、ADB 权限、ROOT 权限的区别与管理方式。","title":"安卓玩机扫盲"}]