WWW.YOUINFO.SITE
标签聚合 成员

/tag/成员

LinuxDo 最新话题 · 2026-06-11 23:22:55+08:00 · tech

本人和小组其他成员一起买了一个pro 20x订阅,搭了一个中转站方便使用,固定了代理ip,网页版gpt也使用了指纹浏览器,过了cyber认证,目前gpt主要用于网安研究使用。一个月不到被发了两封邮件警告cyber abuse啊 ,申诉被维持原判,现在导致不敢用了,害怕再来一次号没了,也不知道哪里出了问题,难道普通的网安研究也不行吗(没有逆向,破解等操作)。非常焦虑,没有AI直接停摆了 有没有佬懂的指点一下 1 个帖子 - 1 位参与者 阅读完整话题

cnBeta全文版 · 2026-06-11 19:05:25+08:00 · tech

GNOME 基金会近日宣布,其新设立的 GNOME 奖学金项目首批获得资助的成员已经确定,两位长期社区贡献者 Peter Eisenmann 和 Sophie Herold 将自今年 7 月起正式以 “GNOME Fellows(GNOME 奖学金成员)” 身份展开为期一年的全职工作,以推动 GNOME 桌面项目的长期可持续发展。 GNOME 基金会在今年 3 月首次公布了这一奖学金计划,旨在通过资助独立和社区贡献者的方式,巩固 GNOME 桌面的可持续性,为期 12 个月的资助将覆盖受资助者在此期间的项目投入。 基金会表示,此次入选的两位成员均为活跃已久的 GNOME 贡献者,他们接下来一年的工作重点将集中在项目治理、底层库现代化以及核心应用的功能改进和体验提升等方面。 根据 GNOME 基金会的介绍,两位奖学金成员将致力于提升 GNOME 项目的整体健康度和长期可持续性,其中 Sophie Herold 的主要任务包括为 GNOME 建立全新的 RFC(Request for Comments)流程,以强化项目层面的治理结构,并通过引入和推广 Rust 语言来打造更易维护且更加安全的基础库。 通过这一系列举措,基金会希望在技术路线与社区协作流程上同时推进现代化,使 GNOME 在安全性与可维护性方面实现显著增强。 另一方面,Peter Eisenmann 将重点推进 GNOME 文件管理器(Files 应用)的现代化工作,其职责包括改进缩略图生成机制、优化用户目录本地化支持,以及全面采用 GNOME 平台的现代设计与开发规范。 这些改进将有助于提升 Files 应用在多语言、多区域环境下的可用性,同时在视觉一致性和用户体验上更好地对齐当前 GNOME 桌面整体平台的设计方向。 GNOME 基金会表示,奖学金项目不仅是在资金上支持个人开发者,更是通过集中资源解决项目在治理流程、基础设施与核心应用上长期存在但难以投入足够人力的问题。 基金会在官方博客中进一步介绍了本次奖学金工作的具体规划和背景,并强调将通过这一机制持续探索支持社区长期演进的新模式。 更多关于 GNOME 奖学金项目首批成员及其具体工作内容的详情,可参考 GNOME 基金会博客发布的官方说明: https://blogs.gnome.org/foundation/2026/06/11/announcing-our-first-fellows/ 查看评论

LinuxDo 最新话题 · 2026-06-09 15:49:25+08:00 · tech

我的其他笔记可以查看 JAVA学习记录总贴 内部类 基础知识 内部类的类的第五大成员。 五大成员分别是:属性、方法、构造器、代码块、内部类。 定义:一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为“内部类”,在外面的类称为“外部类”,内部类最大的特点就是可以访问私有属性,并且可以体现类与类之间的包含关系。 语法 class Outer{//外部类 class Inter{//内部类 } } class OtherOuter{//外部其他类 } PS:内部类是OOP的重难点,底层源码有大量的内部类,必须要要下来这一块。 分类 定义在外部类局部位置(比如方法内) 局部内部类(有类名) 匿名内部类(无类名,重点!!!!!!!) 定义在外部类的成员位置上 成员内部类(没用static) 静态内部类(使用static) class OuterClass { //成员内部类 class MemberInnerClass {} //静态内部类 static class StaticInnerClass{} //外部方法 public void outerMethod() { //局部内部类 class LocalInnerClass {} ​ //匿名内部类 Runnable runnable = new Runnable() { @Override public void run() { System.out.println("匿名内部类"); } }; runnable.run(); } } 局部内部类 细节 局部内部类定义在外部类的局部位置,比如在方法中,并且有类名。(代码块中也行,但罕见) 可以直接访问外部类的所有成员,包含私有的 不能添加访问修饰符,因为局部内部类本质上就是一个局部变量,局部变量不能使用修饰符,同理它也不能,但它可以使用final,因为局部变量也可以用final,顺带一提abstract也可以。 局部内部类是可以被继承的。 作用域:仅仅作用在定义它的方法或代码块中 局部内部类想访问外部类的成员,直接访问即可 外部类想访问局部内部类的成员,可以在作用域内实例化局部内部类,但是注意,必须在定义它之后再new 外部其他类不可能访问局部内部类,这个挺好理解,因为局部内部类本质局部变量,不在它作用域内。 如果外部类和局部内部类变量重名,则会遵循就近原则,优先访问到局部内部类的变量,如果想要访问外部类的成员,则用如下语法 外部类类名.this.成员名 ,ps:顺带一提,如果你不嫌脱裤子放屁,其实 外部类类名.this.成员名 这种语法,可以在类的所有地方精确调用到本类成员 再顺带一提,其实所有内部类都可以在内部继续写内部类,这也是它复杂的原因 class OuterClass { private int n1 = 10; private void m2() {} ​ public void m1() { class InnerClass { public void show() { // 可以直接访问外部类的所有成员,包括私有类型,包括方法 System.out.println("n1 = " + n1); m2(); } } class A extends InnerClass{ } InnerClass innerClass = new InnerClass(); } } 建议对着上面的代码,每一条细节都去自己实践一遍,看看违反了会报什么错。 匿名内部类 重点中的重点,这部分所有代码建议自己真的看完书去手敲一下,不要指望看一遍能懂,更不要单纯相信遇到的时候让AI来解释就好,没那么轻松。 特点 本质是类,底层会有独立的class字节码文件 属于内部类,定义在外部类/代码块,这类局部位置中 没有类名,其实底层是有的,但是程序员不关心,因而匿名 同时也是一个对象,类定义好的同时就已经被创建了 基本语法 new 父类/接口名(构造参数列表){ // 类体:重写父类/实现接口的抽象方法,也可以新增自定义成员 }; 基于接口的匿名内部类 class Outer04 { private int n1 = 10; ​ public void method() { // 基于接口的匿名内部类 // 1. 需求:使用IA接口,并创建对象 // 2. 传统方法是写一个类,实现接口,创建对象,并调用方法 // 3. 但如果我们的需求是,这个类只用一次,那么定义出来就有些浪费了,所以我们可以使用匿名内部类来简化开发 // inner的编译类型是IA,而inner的运行类型是匿名内部类 /*其实这里的底层含义是 class Outer04$1 implements IA { @Override public void cry() { System.out.println("匿名内部类实现了cry方法"); } } */ // 4. jdk底层创建了匿名内部类Outer04$1,然后创建了实例,并且把地址返回给inner // 5. 匿名内部类只能使用一次,不能再次使用 IA inner = new IA(){ @Override public void cry() { System.out.println("匿名内部类实现了cry方法"); } }; inner.cry(); System.out.println(inner.getClass()); IA inner1 = new IA(){ @Override public void cry() { System.out.println("匿名内部类实现了cry方法"); } }; System.out.println(inner1.getClass()); } } ​ interface IA { public void cry(); } 值得说的细节在注释里都已经写明了,我在此补充一点 Outer04$1 就是 JVM 自动为第一个匿名内部类分配的名字,数字表示该类在外部类中出现的顺序。 基于类的匿名内部类 class Outer04 { private int n1 = 10; public void method() { Father fa = new Father("张三"); Father fa1 = new Father("张三"){}; // 证明匿名类创建的不是Father类,而是匿名内部类 System.out.println(fa.getClass()); System.out.println(fa1.getClass()); Father fa2 = new Father("张三"){ @Override public void show() { System.out.println("匿名内部类重写show()"); } }; fa2.show(); ​ Animal animal = new Animal() { @Override public void eat() { System.out.println("匿名内部类重写eat()"); } }; animal.eat(); } } ​ class Father { private String name; public Father(String name) { this.name = name; } public void show() { System.out.println("show()"); } } ​ abstract class Animal{ public abstract void eat(); } 简单总结一些要点 匿名内部类可以重写方法 父类的构造器如果有参数,则你也要提供对应参数(如果有多个构造器,那你就提供符合其中一个的就行) 基于抽象类(接口)的匿名内部类,必须实现其中所有抽象方法 一些细节 匿名内部类,既有定义一个类的特性,也有创建对象的特性,是一个凉面派 可以直接访问外部类的所有成员,包括外部私有成员 不能添加访问修饰符(直觉看上去也没办法提交orz),因为它本质是局部变量 作用域仅在定义它的方法or代码块中 外部其他类也不能访问匿名内部类,因为其本质局部变量 如果外部类和匿名内部类变量重名,则会遵循就近原则,优先访问到局部内部类的变量,如果想要访问外部类的成员,则用如下语法 外部类类名.this.成员名 匿名内部类练习 题目1:写一个基于接口的匿名内部类,并把它作为方法参数传入 public class AnonymousClass { public static void main(String[] args) { // 方式1:直接在参数位置编写匿名内部类 f1(new AA() { @Override public void show() { System.out.println("匿名类实现接口"); } }); // 方式2:先创建匿名内部类对象,再传入参数 AA aa = new AA() { @Override public void show() { System.out.println("匿名类实现接口"); } }; f1(aa); } public static void f1(AA aa){ aa.show(); } } ​ interface AA{ void show(); } 题目2: 定义一个铃声接口 Bell,接口中包含 ring() 方法。 定义一个手机类 Cellphone,类中包含闹钟功能方法 alarmclock(Bell bell),方法的参数类型为 Bell。 测试手机类的闹钟功能:通过匿名内部类创建 Bell 接口的实现对象,作为参数传入 alarmclock 方法,调用 ring() 方法时打印:懒猪起床了。 再传入另一个匿名内部类对象,调用 ring() 方法时打印:小伙伴上课了。 public class AnonymousClass { public static void main(String[] args) { new Cellphone().alarmclock(new Bell() { @Override public void ring() { System.out.println("懒猪起床了"); } }); new Cellphone().alarmclock(new Bell() { @Override public void ring() { System.out.println("小伙伴上课了"); } }); } } interface Bell { void ring(); } class Cellphone { public void alarmclock(Bell bell){ bell.ring(); } } 重点:一定要写一写感受一下,这部分涉及:多态、继承、动态绑定、内部类,多个知识点混杂在一起,需要认真练习 成员内部类 成员内部类定义在外部类的成员位置,并且没有static修饰 可以访问外部类的所有成员 可以添加任意的修饰符,因为其地位相当于一个成员 成员内部类的作用域和外部类的其他成员一样,都是整个类体。 成员内部类可以调用外部类的所有成员,包括私有。 外部类可以访问成员内部类的所有成员,包括私有成员,不过,必须要创建实例才能访问。 外部其他类想要访问成员内部类,有两种方法,分别标注在代码里了 如果外部类和内部类成员同名,则内部类访问时采取就近原则,如果一定要访问外部类的同名成员,则采用 外部类.this.成员名 的方式 public class AnonymousClass { public static void main(String[] args) { // 外部其他类访问成员内部类的两种方式 // 方式一 通过外部类对象访问成员内部类对象,下面的两种写法本质上是等价的 Outer.Inner inner = new Outer().new Inner(); // 写法1 Outer outer = new Outer(); // 写法2 Outer.Inner inner1 = outer.new Inner(); // 方式二 在外部类中编写一个写法,返回成员内部类对象 Outer.Inner inner2 = outer.getInner(); } } class Outer{ private int n1 = 10; private String name = "张三"; public Inner getInner(){ return new Inner(); } // 成员内部类 // 成员内部类是定义在外部类的成员位置上 public class Inner{ private int n2 = 20; public void say(){ System.out.println("n1 = " + n1 + " name = " + name); } } public void show(){ Inner inner = new Inner(); // 即使是类内部的私有成员也可以被访问,因为本质上它也是类的一部分。 System.out.println(inner.n2); } } 静态内部类 静态内部类定义在外部类的成员位置,并且有 static 修饰符。 静态内部类可以直接访问外部类的所有静态成员(包括私有的),但是不能直接访问非静态成员;可以访问本类的所有成员,不管是静态还是非静态 解释: 静态内部类是外部类的一部分,因而可以访问外部类的所有静态成员。 对于外部类的非静态成员,可以在静态内部类中实例化,然后访问。 可以添加任意访问修饰符,因为它的地位就是一个成员 作用域和其他的成员一样,是整个类体内部。 静态内部类可以在不依赖外部类的前提下被实例化 外部其他类访问静态内部类、静态内部类访问外部类、外部类访问静态内部类的逻辑都写在了代码里,如下所示 外部类和静态内部类成员重名时,静态内部类如果想要访问,则默认就近原则,如果想要访问外部类的同名成员,则需要 外部类名.成员 P.S. 内部类可以是静态的,但是顶层类不能是静态的。 public class AnonymousClass { public static void main(String[] args) { // 展示外部其它类访问静态内部类的方式 // 方式1,直接new Outer.Inner inner = new Outer.Inner(); inner.sayHello(); // 方式2,编写一个方法,返回静态内部类的实例。 Outer.Inner inner1 = new Outer().getInnerInstance("java"); inner1.sayHello(); // 方式2的补充,可以在外部类中写静态方法,返回静态内部类的实例,没有本质区别 Outer.Inner inner2 = Outer.getInnerInstance_("HSP"); inner2.sayHello(); } } class Outer { private int n1 = 10; private static int n2 = 20; // 静态内部类 public static class Inner { private String name; private static int count = 0; private static int n2 = 30; // 静态内部类可以有构造器 Inner(String name) { this.name = name; } Inner() { } // 静态类里可以有普通方法 public void sayHello() { // 展示静态内部类访问外部类的方式。 // System.out.println(n1); 不能直接访问外部类非静态成员变量 System.out.println(new Outer().n1); // 但是可以通过创建外部类实例来访问外部类非静态变量 System.out.println(Outer.n2); // 可以直接访问外部类静态变量 System.out.println(n2); // 直接访问遵循就近原则 System.out.println("Hello, I'm " + this.name); // 也可以访问本类非静态变量 System.out.println("Total count: " + count); // 也可以访问本类静态变量 } } // 接下来展示外部类如何访问静态内部类 public void accessInner() { Inner inner = new Inner("HSP"); // 创建静态内部类对象 System.out.println(inner.name); // 访问静态内部类成员变量 System.out.println(Inner.count); // 访问静态内部类静态成员变量 } public Inner getInnerInstance(String name) { return new Inner(name); // 创建静态内部类对象并返回给调用方 } public static Inner getInnerInstance_(String name) { return new Inner(name); // 创建静态内部类对象并返回给调用方 } } 综合练习 练习1 当前代码会不会报错?为什么? public class Test { class Inner { public int a = 5; } public static void main(String[] args) { Inner r = new Inner(); } } 答案: 会报错,因为成员内部类在创建时依赖外部类的实例而存在,需要一个外部类作为容器,传统初始化方法为 “外部类实例.new 成员内部类名” main方法是静态的,静态方法中没有this关键字,因而报错,下面这样做就可以 public class Outer { public class Inner { } // 实例方法(非静态方法) public void show() { Inner inner = new Inner(); // ✅ 可以! // 等价于:this.new Inner(); // 因为实例方法中,this 指向当前 Outer 对象 } } 练习2 下面这段代码会输出什么? public class Test { public Test() { Inner s1 = new Inner(); s1.a = 10; Inner s2 = new Inner(); System.out.println(s2.a); } class Inner { public int a = 5; } public static void main(String[] args) { Test t = new Test(); Inner r = t.new Inner(); System.out.println(r.a); } } 答案: 5 5 分析: Test构造器里初始化的 S1 和 S2 分别是两个不同的成员内部类实例,而 main 方法里初始化的 r 也是一个不同的成员内部类实例。三个方法中的 a 是独立的 1 个帖子 - 1 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-09 11:26:38+08:00 · tech

叠个甲:这里重点讨论的是复杂度、规模都中高以上的项目,不是简单的CRUD、数据面板等等。后者大部分情况下完全AI编程没问题。 最近 Vibe coding 了不少。在很简单的项目上,AI 无往不利,效率极高。但是在某些复杂的场景上,我自己出现了 AI 写的代码,不管在功能上和架构设计上都跟我的设想相去甚远的情况,最终只能推倒重来。 思考了很多,刚好知乎推送了这一篇回答给我,我发现说得很有道理,分享给各位。 特别是这几句,越用AI编程越觉得说得很准确: “问题就在于,很多项目真正难的地方,不是把代码写出来,而是设计先站住。什么抽象该有,什么抽象不该有;什么状态应该通过设计保证,什么不该留到运行时去兜底;这些东西,AI 现在还不稳定。它在“做”上很强,但在“该不该这么做”上,经常差一口气。” “AI 则很容易多写几层判断。这类代码不能简单说错,但在 nginx 这种项目里,它很多时候会把本来应该由设计保证的东西,退化成运行时到处打补丁。” (原文链接在最后) 来源知乎链接 12 个帖子 - 12 位参与者 阅读完整话题

LinuxDo 最新话题 · 2026-06-02 15:52:44+08:00 · tech

群成员以“小棉袄”为暗语指代女儿,聊天内容包括“互换小棉袄”“买棉袄”“都穿几年了”“穿棉袄有没有吐里面,注意避孕喔”“我家的才12岁”等不堪入目的对话,还有人分享含色情意味的女儿照片。 事件曝光后,不少中国网民对此表达震惊与愤怒,痛批“比爱泼斯坦还恶心”“连亲生骨肉都下得了手,简直畜生不如”“点进这些人的主页,看起来都是普通人,原来身边潜伏这么多恶魔”。 passport.weibo.com Sina Visitor System zaobao.com.sg 中国疑似出现狼父群组 以“穿小棉袄”等暗语交流性侵女儿 中国抖音平台疑似出现狼父群组,群成员以“穿小棉袄”等暗语交流性侵女儿,甚至讨论互换女儿性侵。目前群组已被平台封禁。 1 个帖子 - 1 位参与者 阅读完整话题

v2ex · 2026-06-01 02:35:39+08:00 · tech

📌 关于我们与项目 目前状态 :处于初创阶段,核心成员(我)深耕 软件开发多年 ,技术底座扎实。 产品方向 : 车载音乐盒子 (结合 AI 概念),旨在打造新一代的智能车载音频体验。 为什么限广深 :为了方便前期的线下深度交流。由于早期产品涉及 量产交付 ,深圳完善的硬件供应链是必不可少的,因此希望你 base 在 广州或深圳 (深圳尤佳)。 🛠 职位要求 (Your Role) 早期阶段,你需要 负责硬件的落地与实现 。我们希望你具备以下特质: 核心硬实力 :经验丰富的 嵌入式工程师 ,能独立搞定从方案选型、原理图/PCB 设计到固件开发的全流程。 加分项(优先考虑) : 汽车硬件背景 :做过车载电子产品(如车机、OBD 、车载配件等),熟悉车规级要求、电源管理或车内通讯者大加分。 音频产品经验 :做过播放器、音频解码、蓝牙音频、数字功放等音乐硬件产品者优先。 🤝 合作方式 (How We Work) 我们心态开放,尊重技术价值,形式可灵活支持: 方案 A (项目制) :按照项目里程碑直接结算现金报酬。 方案 B (合伙人制) :基础报酬 + 一定比例的期权/股权(适合看好 AI + 车载音频赛道,想一起搞点事情的长期伙伴)。 📥 怎么联系我 如果你对这个方向感兴趣,或者有朋友推荐,欢迎联系我详聊! wx : base64 encoded: Q3BoaWxv (加 wx 时请备注:姓名-嵌入式-广深)

v2ex · 2026-06-01 02:35:39+08:00 · tech

📌 关于我们与项目 目前状态 :处于初创阶段,核心成员(我)深耕 软件开发多年 ,技术底座扎实。 产品方向 : 车载音乐盒子 (结合 AI 概念),旨在打造新一代的智能车载音频体验。 为什么限广深 :为了方便前期的线下深度交流。由于早期产品涉及 量产交付 ,深圳完善的硬件供应链是必不可少的,因此希望你 base 在 广州或深圳 (深圳尤佳)。 🛠 职位要求 (Your Role) 早期阶段,你需要 负责硬件的落地与实现 。我们希望你具备以下特质: 核心硬实力 :经验丰富的 嵌入式工程师 ,能独立搞定从方案选型、原理图/PCB 设计到固件开发的全流程。 加分项(优先考虑) : 汽车硬件背景 :做过车载电子产品(如车机、OBD 、车载配件等),熟悉车规级要求、电源管理或车内通讯者大加分。 音频产品经验 :做过播放器、音频解码、蓝牙音频、数字功放等音乐硬件产品者优先。 🤝 合作方式 (How We Work) 我们心态开放,尊重技术价值,形式可灵活支持: 方案 A (项目制) :按照项目里程碑直接结算现金报酬。 方案 B (合伙人制) :基础报酬 + 一定比例的期权/股权(适合看好 AI + 车载音频赛道,想一起搞点事情的长期伙伴)。 📥 怎么联系我 如果你对这个方向感兴趣,或者有朋友推荐,欢迎联系我详聊! wx : base64 encoded: Q3BoaWxv (加 wx 时请备注:姓名-嵌入式-广深)

v2ex · 2026-06-01 02:35:39+08:00 · tech

📌 关于我们与项目 目前状态 :处于初创阶段,核心成员(我)深耕 软件开发多年 ,技术底座扎实。 产品方向 : 车载音乐盒子 (结合 AI 概念),旨在打造新一代的智能车载音频体验。 为什么限广深 :为了方便前期的线下深度交流。由于早期产品涉及 量产交付 ,深圳完善的硬件供应链是必不可少的,因此希望你 base 在 广州或深圳 (深圳尤佳)。 🛠 职位要求 (Your Role) 早期阶段,你需要 负责硬件的落地与实现 。我们希望你具备以下特质: 核心硬实力 :经验丰富的 嵌入式工程师 ,能独立搞定从方案选型、原理图/PCB 设计到固件开发的全流程。 加分项(优先考虑) : 汽车硬件背景 :做过车载电子产品(如车机、OBD 、车载配件等),熟悉车规级要求、电源管理或车内通讯者大加分。 音频产品经验 :做过播放器、音频解码、蓝牙音频、数字功放等音乐硬件产品者优先。 🤝 合作方式 (How We Work) 我们心态开放,尊重技术价值,形式可灵活支持: 方案 A (项目制) :按照项目里程碑直接结算现金报酬。 方案 B (合伙人制) :基础报酬 + 一定比例的期权/股权(适合看好 AI + 车载音频赛道,想一起搞点事情的长期伙伴)。 📥 怎么联系我 如果你对这个方向感兴趣,或者有朋友推荐,欢迎联系我详聊! wx : base64 encoded: Q3BoaWxv (加 wx 时请备注:姓名-嵌入式-广深)

v2ex · 2026-06-01 01:35:39+08:00 · tech

📌 关于我们与项目 目前状态 :处于初创阶段,核心成员(我)深耕 软件开发多年 ,技术底座扎实。 产品方向 : 车载音乐盒子 (结合 AI 概念),旨在打造新一代的智能车载音频体验。 为什么限广深 :为了方便前期的线下深度交流。由于早期产品涉及 量产交付 ,深圳完善的硬件供应链是必不可少的,因此希望你 base 在 广州或深圳 (深圳尤佳)。 🛠 职位要求 (Your Role) 早期阶段,你需要 负责硬件的落地与实现 。我们希望你具备以下特质: 核心硬实力 :经验丰富的 嵌入式工程师 ,能独立搞定从方案选型、原理图/PCB 设计到固件开发的全流程。 加分项(优先考虑) : 汽车硬件背景 :做过车载电子产品(如车机、OBD 、车载配件等),熟悉车规级要求、电源管理或车内通讯者大加分。 音频产品经验 :做过播放器、音频解码、蓝牙音频、数字功放等音乐硬件产品者优先。 🤝 合作方式 (How We Work) 我们心态开放,尊重技术价值,形式可灵活支持: 方案 A (项目制) :按照项目里程碑直接结算现金报酬。 方案 B (合伙人制) :基础报酬 + 一定比例的期权/股权(适合看好 AI + 车载音频赛道,想一起搞点事情的长期伙伴)。 📥 怎么联系我 如果你对这个方向感兴趣,或者有朋友推荐,欢迎联系我详聊! wx : base64 encoded: Q3BoaWxv (加 wx 时请备注:姓名-嵌入式-广深)