Java面试题(每天10题)-------连载(32)

目录

设计模式篇

1、工厂方法模式(利用创建同一接口的不同实例):

2、抽象工厂模式(多个工厂)

3、单例模式(保证对象只有一个实例)

4、原型模式(对一个原型进行复制、克隆产生类似新对象) 

5、适配器模式(接口兼容) 

6、装饰模式

7、代理模式

8、外观模式 

9、桥接模式(数据库驱动桥接) 

10、组合模式(部分整体模式)

11、 享元模式(共享池、数据库连接池)

12、策略模式(多种算法封装) 

13、模板方法模式(抽象方法作为骨架,具体逻辑让子类实现)

14、观察这模式(发布-订阅模式) 

15、迭代器模式(遍历集合)

16、责任链模式(多任务形成一条链,请求在链上传递) 

17、命令模式(实现请求和执行的解耦)

18、备忘录模式(保存和回复对象状态)

19、状态模式(对象状态改变时改变其行为) 

20、访问者模式(数据接口稳定,但算法易变) 

21、中介者模式 

22、解耦器模式 (对于一些固定文法构建⼀个解释句子的解释器,如正则表达式)

23、建造者模式(创建复合对象) 

24、设计模式的六大原则 

25、JDK中的设计模式

26、spring中的设计模式


设计模式篇

1、工厂方法模式(利用创建同一接口的不同实例):

1 、普通⼯⼚模式:建⽴⼀个⼯⼚类,对实现了同⼀接⼝的⼀些类进⾏实例的创建;
public class SendFactory {public Sender produce(String type) {if ("mail".equals(type)) {return new MailSender();} else if ("sms".equals(type)) {return new SmsSender();} else {System.out.println("请输⼊正确的类型!");return null;}}
}

2、多个工厂方法模式:提供多个工厂方法,分别创建对象:

public class SendFactory {public Sender produceMail() {return new MailSender();}public Sender produceSms() {return new SmsSender();}
}

3、静态工厂方法模式:将上面的多个工厂置为静态的,不需要创建工厂实例,直接调用即可;

4、适⽤场景:凡是出现了⼤量不同种类的产品需要创建,并且具有共同的接⼝时,可以通过⼯⼚⽅法模式进⾏创建。在以上的三种模式中,第⼀种如果传⼊的字符串有误,不能正确创建对象,第三种相对于第⼆种,不需要实例化⼯⼚类,所以,⼤多数情况下,我们会选⽤第三种——静态⼯⼚⽅法模式。

2、抽象工厂模式(多个工厂)

创建多个工厂类,提高工厂的扩展性,不⽤像上⾯⼀样如果增加产品则要去修改唯⼀的⼯⼚类;

3、单例模式(保证对象只有一个实例)

1 、适⽤场景:
  1. 某些类创建⽐较频繁,对于⼀些⼤型的对象,这是⼀笔很⼤的系统开销。
  2. 省去了new操作符,降低了系统内存的使⽤频率,减轻GC压⼒。
  3. 有些类如交易所的核⼼交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(⽐如⼀个军队出现了多个司令员同时指挥,肯定会乱成⼀团),所以只有使⽤单例模式,才能保证核⼼交易服务器独⽴控制整个流程。
2 、代码:
public class Singleton {/* 持有私有静态实例,防⽌被引⽤,此处赋值为null,⽬的是实现延迟加载 */private static Singleton instance = null;/* 私有构造⽅法,防⽌被实例化 */private Singleton() {}/* 静态⼯程⽅法,创建实例 */public static Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}/* 如果该对象被⽤于序列化,可以保证对象在序列化前后保持⼀致 */public Object readResolve() {return instance;}
}
3 、分类:
  1. 饿汉式:类初始化时创建单例,线程安全,适⽤于单例占内存⼩的场景,否则推荐使⽤懒汉式延迟加载;
    public class Singleton {private static Singleton instance = new Singleton();private Singleton() {}public static Singleton newInstance() {return instance;}
    }
  2. 懒汉式:需要创建单例实例的时候再创建,需要考虑线程安全(性能不太好)
    public class Singleton {private static Singleton instance = null;private Singleton() {}public static synchronized Singleton newInstance() {if (null == instance) {instance = new Singleton();}return instance;}
    }
  3. 双重检验锁:效率⾼; ( 解决问题:假如两个线程 A B A 执⾏了 if (instance == null) 语句,它会认为单例对象没有创建,此时线程切到 B 也执⾏了同样的语句,B 也认为单例对象没有创建,然后两个线程依次执⾏同步代码块,并分别创建了⼀个单例对象。 )
    public class Singleton {private static volatile Singleton instance = null;//volatile的⼀个语义是禁⽌指令重排序优化 private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {//2 instance = new Singleton();}}}return instance;}
    }
  4.  静态内部类⽅式:可以同时保证延迟加载和线程安全。

    public class Singleton {private static class SingletonHolder {public static Singleton instance = new Singleton();}private Singleton() {}public static Singleton newInstance() {return SingletonHolder.instance;}
    }
  5. 枚举:使⽤枚举除了线程安全和防⽌反射调⽤构造器之外,还提供了⾃动序列化机制,防⽌反序列化的时候创建新的对象。
    public enum Singleton {instance;public void whateverMethod() {}
    }

4、原型模式(对一个原型进行复制、克隆产生类似新对象) 

1 、核⼼:它的核⼼是原型类 Prototype ,需要实现 Cloneable 接⼝,和重写 Object 类中的 clone ⽅法;
2 、作⽤:使⽤原型模式创建对象⽐直接 new ⼀个对象在性能上要好的多,因为 Object 类的 clone ⽅法是⼀个本地⽅法,它直接操作内存中的⼆进制流,特别是复制⼤对象时,性能的差别⾮常明显。

5、适配器模式(接口兼容) 

将某个类的接⼝转换成客户端期望的另⼀个接⼝表示,⽬的是消除由于接⼝不匹配所造成的类的兼容性问题。
1 、类的适配器模式:

2 、对象的适配器模式:

3、接⼝的适配器模式:

4 、使⽤场景:
  1. 类的适配器模式:当希望将⼀个类转换成满⾜另⼀个新接⼝的类时,可以使⽤类的适配器模式,创建⼀个新类,继承原有的类,实现新的接⼝即可。
  2. 对象的适配器模式:当希望将⼀个对象转换成满⾜另⼀个新接⼝的对象时,可以创建⼀个Wrapper类,持有原类的⼀个实例,在Wrapper类的⽅法中,调⽤实例的⽅法就⾏。
  3. 接⼝的适配器模式:当不希望实现⼀个接⼝中所有的⽅法时,可以创建⼀个抽象类Wrapper,实现所有⽅法,我们写别的类的时候,继承抽象类即可。

6、装饰模式

给对象动态增加新功能,需持有对象实例):装饰模式就是给⼀个对象增加⼀些新的功能,⽽且是动态的,要求装饰对象和被装饰对象实现同⼀个接⼝,装饰对象持有被装饰对象的实例:

 1、实例

2、使⽤场景:

  1. 需要扩展⼀个类的功能。
  2. 动态的为⼀个对象增加功能,⽽且还能动态撤销。(继承不能做到这⼀点,继承的功能是静态的,不能动态增删。)

7、代理模式

 持有被代理类的实例,进⾏操作前后控制):采⽤⼀个代理类调⽤原有的⽅法,且对产⽣的结果进⾏控制。

8、外观模式 

外观模式是为了解决类与类之间的依赖关系的,像 spring ⼀样,可以将类和类之间的关系配置到配置⽂件中,⽽外观模式就是将他们的关系放在⼀个Facade 类中,降低了类类之间的耦合度。

9、桥接模式(数据库驱动桥接) 

桥接模式就是把事物和其具体实现分开,使他们可以各⾃独⽴的变化。桥接的⽤意是:将抽象化与实现化解耦,使得⼆者可以独⽴变化,像我们常⽤的JDBC DriverManager ⼀样, JDBC 进⾏连接数据库的时候,在各个数据库之间进⾏切换,基本不需要动太多的代码,甚⾄丝毫不⽤动,原因就是JDBC 提供统⼀接⼝,每个数据库提供各⾃的实现,⽤⼀个叫做数据库驱动的程序来桥接就⾏了。

10、组合模式(部分整体模式)

组合模式有时⼜叫部分-整体模式在处理类似树形结构的问题时⽐较⽅便。

11、 享元模式(共享池、数据库连接池)

享元模式的主要⽬的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与⼯⼚模式⼀起使⽤。当⼀个客户端请求时,⼯⼚需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建⼀个新对象,如数据库连接池;

12、策略模式(多种算法封装) 

策略模式定义了⼀系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使⽤算法的客户。需要设计⼀个接⼝,为⼀系列实现类提供统⼀的⽅法,多个实现类实现该接⼝:
    ICalculator cal =new Plus(); //ICalculator是统⼀接⼝,Plus是实现类(多个)int result = cal.calculate(exp); //jvm根据实现类不同⽽调⽤不同实现类的⽅法

13、模板方法模式(抽象方法作为骨架,具体逻辑让子类实现)

定义一个操作中算法的框架,⽽将⼀些步骤延迟到⼦类中,使得⼦类可以不改变算法的结构即可重定义该算法中的某些特定步骤。完成公共动作和特殊动作的分离。
//题⽬:排序并打印: 
abstract class AbstractSort {
/*** 将数组array由⼩到⼤排序** @param array*/
protected abstract void sort(int[]array);public void showSortResult(int[]array){System.out.print("排序结果:");//打印}}//排序
class ConcreteSort extends AbstractSort {@Overrideprotected void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {selectSort(array, i);}}private void selectSort(int[] array, int index) {//排序的实现逻辑}
}//测试
public class Client {public static int[] a = {10, 32, 1, 9, 5, 7, 12, 0, 4, 3}; // 预设数据数组public static void main(String[] args) {AbstractSort s = new ConcreteSort();s.showSortResult(a);}
}

14、观察这模式(发布-订阅模式) 

当⼀个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是⼀种⼀对多的关系。类似于邮件订阅和RSS 订阅,当你订阅了该⽂章,如果后续有更新,会及时通知你。

15、迭代器模式(遍历集合)

 迭代器模式就是顺序访问聚集中的对象。

16、责任链模式(多任务形成一条链,请求在链上传递) 

有多个对象,每个对象持有对下⼀个对象的引⽤,这样就会形成⼀条链,请求在这条链上传递,直到某⼀对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进⾏动态的调整。

17、命令模式(实现请求和执行的解耦)

命令模式的⽬的就是达到命令的发出者和执⾏者之间解耦,实现请求和执⾏分开,熟悉 Struts 的同学应该知道,Struts 其实就是⼀种将请求和呈现分离的技术,其中必然涉及命令模式的思想!

18、备忘录模式(保存和回复对象状态)

主要目的是保存一个对象的某个状态,以使在适当的时候恢复对象。

19、状态模式(对象状态改变时改变其行为) 

当对象的状态改变时,同时改变其⾏为。状态模式就两点:
  1. 可以通过改变状态来获得不同的⾏为。
  2. 你的好友能同时看到你的变化。

20、访问者模式(数据接口稳定,但算法易变) 

访问者模式把数据结构和作⽤于结构上的操作解耦合,使得操作集合可相对⾃由地演化。
访问者模式适⽤于数据结构相对稳定算法⼜易变化的系统。因为访问者模式使得算法操作增加变得容易。访问者模式就是⼀种分离对象数据结构与⾏为的⽅法,通过这种分离,可达到为⼀个被访问者动态添加新的操作⽽⽆需做其它的修改的效果。

21、中介者模式 

中介者模式也是⽤来降低类类之间的耦合的。如果使⽤中介者模式,只需关⼼和 Mediator 类的关系,具体类类之间的关系及调度交给Mediator 就⾏,这有点像 spring 容器的作⽤。

22、解耦器模式 (对于一些固定文法构建⼀个解释句子的解释器,如正则表达式

解释器模式⽤来做各种各样的解释器,如正则表达式等的解释器。

23、建造者模式(创建复合对象) 

⼯⼚类模式提供的是创建单个类的模式,⽽建造者模式则是将各种产品集中起来进⾏管理,⽤来创建复合对象,所谓复合对象就是指某个类具有不同的属性。

24、设计模式的六大原则 

  1. 开闭原则(Open Close Principle)
    开闭原则就是说对扩展开放,对修改关闭。在程序需要进⾏拓展的时候,不能去修改原有的代码,实现⼀个热插拔的效果。
    所以⼀句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使⽤接⼝和抽象类,后⾯的具体设计中我们会提到这点。
  2. 里氏代换原则(Liskov Substitution Principle)
    里氏代换原则(Liskov Substitution Principle LSP)⾯向对象设计的基本原则之⼀。 里氏代换原则中说,任何基类可以出现的地方,子类⼀定可以出现。 LSP是继承复用的基石,只有当衍⽣类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复⽤,⽽衍⽣类也能够在基类的基础上增加新的⾏为。⾥⽒代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。⽽基类与⼦类的继承关系就是抽象化的具体实现,所以⾥⽒代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科
  3. 依赖倒转原则(Dependence Inversion Principle)
    这个是开闭原则的基础,具体内容:真对接⼝编程,依赖于抽象⽽不依赖于具体。
  4. 接⼝隔离原则(Interface Segregation Principle)
    这个原则的意思是:使⽤多个隔离的接⼝,⽐使⽤单个接⼝要好。还是⼀个降低类之间的耦合度的意思,从这⼉我们看出,其实设计模式就是⼀个软件的设计思想,从⼤型软件架构出发,为了升级和维护⽅便。所以上⽂中多次出现:降低依赖,降低耦合。
  5. 迪⽶特法则(最少知道原则)(Demeter Principle)
    为什么叫最少知道原则,就是说:⼀个实体应当尽量少的与其他实体之间发⽣相互作⽤,使得系统功能模块相对独⽴。
  6. 合成复⽤原则(Composite Reuse Principle)
    原则是尽量使⽤合成/聚合的⽅式,⽽不是使⽤继承

25、JDK中的设计模式

1、单例模式

  • java.lang.Runtime#getRuntime()
  • java.awt.Desktop#getDesktop()

  • java.lang.System#getSecurityManager()

2、责任链模式

  • java.util.logging.Logger#log()
  • javax.servlet.Filter#doFilter()z

3、观察者模式

  • java.util.Observer/ java.util.Observable(很少在现实世界中使用)
  • 所有实现java.util.EventListener(因此实际上各地的Swing
  • javax.servlet.http.HttpSessionBindingListener

  • javax.servlet.http.HttpSessionAttributeListener

  • javax.faces.event.PhaseListener

26、spring中的设计模式

a. 简单⼯⼚:spring中的BeanFactory就是简单⼯⼚模式的体现,根据传⼊⼀个唯⼀的标识来获得bean对象,但是否是在传⼊参数后创建还是传⼊参数前创建这个要根据具体情况来定。

b. 单例模式:Spring下默认的bean均为singleton

c. 代理模式:为其他对象提供⼀种代理以控制对这个对象的访问。 从结构上来看和Decorator模式类似,但Proxy是控制,更像是⼀种对功能的限制,⽽Decorator是增加职责。 springProxy模式在aop中有体现,⽐如JdkDynamicAopProxy和Cglib2AopProxy。

d. 观察者模式:定义对象间的⼀种⼀对多的依赖关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都得到通知并被⾃动更新。springObserver模式常⽤的地⽅是listener的实现。如ApplicationListener

 

今天更新的有点多,但是都是设计模式,没办法分两天更,所以多看看吧。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

芯科科技推出新的8位MCU系列产品,扩展其强大的MCU平台

新的BB5系列为简单应用提供更多开发选择 中国&#xff0c;北京 - 2023年11月14日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;&#xff0c;今日宣布…

DataCamp在线学习平台

DataCamp&#xff08;https://www.datacamp.com/blog&#xff09;是一个在线学习平台&#xff0c;专注于数据科学和分析领域的教育。该平台提供丰富的课程&#xff0c;涵盖了从数据处理到机器学习和深度学习的各个方面。以下是DataCamp的主要特点&#xff1a; 互动学习&#x…

Redis配置、Redis类型

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

代码随想录算法训练营第五十五天丨 动态规划part16

583. 两个字符串的删除操作 思路 #动态规划一 本题和动态规划&#xff1a;115.不同的子序列 (opens new window)相比&#xff0c;其实就是两个字符串都可以删除了&#xff0c;情况虽说复杂一些&#xff0c;但整体思路是不变的。 这次是两个字符串可以相互删了&#xff0c;这…

智慧工地AI视频管理平台源码

智慧工地是指以物联网、移动互联网技术为基础&#xff0c;充分应用人工智能等信息技术&#xff0c;通过AI赋能建筑行业&#xff0c;对住建项目内人员、车辆、安全、设备、材料等进行智能化管理&#xff0c;实现工地现场生产作业协调、智能处理和科学管理。智慧工地的核心是以一…

RabbitMQ之死信队列

文章目录 一、死信的概念二、死信的来源三、实战1、消息 TTL 过期2、队列达到最大长度3、消息被拒 总结 一、死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#x…

MATLAB中Filter Designer的使用以及XILINX Coefficient(.coe)File的导出

文章目录 Filter Designer的打开滤波器参数设置生成matlab代码生成XILINX Coefficient(.COE) File实际浮点数的导出官方使用教程 Filter Designer的打开 打开Filter Designer&#xff1a; 方法一&#xff1a;命令行中输入Filter Designer&#xff0c;再回车打开。 方法二&…

@Version乐观锁配置mybatis-plus使用(version)

1&#xff1a;首先在实体类的属性注解上使用Version import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.Versio…

Google codelab WebGPU入门教程源码<5> - 使用Storage类型对象给着色器传数据(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#5 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。运行的时候&#xff0c;点击画面可以切换效果。 class Color4 {r: number;g: numb…

ceph 14.2.10 aarch64 非集群内 客户端 挂载块设备

集群上的机器测试 706 ceph pool create block-pool 64 64 707 ceph osd pool create block-pool 64 64 708 ceph osd pool application enable block-pool rbd 709 rbd create vdisk1 --size 4G --pool block-pool --image-format 2 --image-feature layering 7…

@postmapping 定义formdata传参方式

背景&#xff1a;feign声明接口&#xff0c;传对象&#xff0c; 但是对象那边没有用requestBody接收&#xff1b; 前端调它也是走的formdata&#xff0c;所以不改变源代码&#xff0c;以及补新接口的情况下&#xff0c;我也需要formdata传参&#xff1b; 不然数据传不过去会为空…

GDS 命令的使用 srvctl service TAF application continuity

文档中prim and stdy在同一台机器上&#xff0c;不同机器需要添加address list TAF ENABLED GLOBAL SERVICE in GDS ENVIRONMNET 12C. (Doc ID 2283193.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 12.1.…

漏电继电器 LLJ-250HT AC220V 50-500ma 面板安装

系列型号&#xff1a; LLJ-10H(S)漏电继电器LLJ-15H(S)漏电继电器LLJ-16H(S)漏电继电器 LLJ-25H(S)漏电继电器LLJ-30H(S)漏电继电器LLJ-32H(S)漏电继电器 LLJ-60H(S)漏电继电器LLJ-63H(S)漏电继电器LLJ-80H(S)漏电继电器 LLJ-100H(S)漏电继电器LLJ-120H(S)漏电继电器LLJ-125H(…

优思学院|新版ISO9001:2015质量体系的优势(一)高阶结构

在全球商业环境中&#xff0c;不断提高产品和服务的质量至关重要。因此&#xff0c;国际标准组织&#xff08;ISO&#xff09;于2015年发布了更新的ISO 9001标准&#xff0c;即ISO 9001:2015质量体系标准。这一更新旨在适应不断变化的商业需求和挑战&#xff0c;为组织提供更强…

Idea 编译SpringBoot项目Kotlin报错/Idea重新编译

原因应该是一次性修改了大量的文件, SpringBoot项目启动Kotlin报错, Build Project也是同样的结果, 报错如下 Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.1.13. Build-&…

多svn仓库一键更新脚本分享

之前分享过多git仓库一键更新脚本&#xff0c;本期就分享下svn仓库的一键更新脚本 1、首先需要设置svn为可执行命令行 打开SVN安装程序&#xff0c;选择modify&#xff0c;然后点击 command client tools&#xff0c;安装命令行工具 2、update脚本 echo 开始更新SVN目录&…

qt+opengl 着色器VAO、VBO、EBO(四)

文章目录 一、顶点着色器和片段着色器代码分析1. 着色器12. 顶点着色器2 二、使用步骤1. 使用着色器12. 使用着色器23. 在着色器2中使用EBO 三、完整代码 一、顶点着色器和片段着色器代码分析 1. 着色器1 用到的坐标矩阵, 四个四边形顶点坐标 float vertices_data[36] {// 所…

mybatis之主键返回

1.在mybatis的xml中加入 <insert id"insertUser" keyProperty"id" useGeneratedKeys"true" parameterType"com.UserAndOrder"> insert into Tuser(userName,passWord) values (#{userName},#{passWord} ) </insert&…

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考…

国产高云FPGA开发软件Gowin的下载、安装、Licence共享,按照我的方案保证立马能用,不能用你铲我耳屎

目录 1、前言2、GOWIN简介3、GOWIN下载4、GOWIN安装5、Licence共享方案&#xff0c;立马就能用6、网盘福利领取 1、前言 “苟利国家生死以&#xff0c;岂因祸福避趋之&#xff01;”大洋彼岸的我优秀地下档员&#xff0c;敏锐地洞察到祖国的短板在于高精尖半导体的制造领域&am…