当前位置: 首页 > news >正文

JSP:MVC

一个好的Web应用: 功能完善、易于实现和维护易于扩展等的体系结构

一个Web应用通常分为两个部分

1. 由界面设计人员完成的表示层(主要做网页界面设计)

2. 由程序设计人员实现的行为层(主要完成本Web应用的各种功能)

Web开发的两种常用模式

Web开发的两

Model1 纯JSP或JSP+javabean

适用于小型的Web应用

模型1可以分为两种方式

1. 完全使用JSP页面

优点:简单,所见即所得,容易实现

缺点:访问数据库的代码需要写在JSP页面中,如果数据库发生变化JSP页面需要重写

2.使用JSP+JavaBean

优点数据访问代码和JSP页面分离,数据访问代码重用性好

缺点系统复杂时,JSP页面中仍会包含大量脚本代码,代码开发和维护困难

Model2 MVC模式

该模型是一种将应用分解成三个独立部分的通用模型。

这三个部分分别是:
模型(Model) 描述系统的数据
视图(view) 数据的显示,包括图形、文本和文件输出等;
控制器(Controller) 获取系统的输入,控制系统的执行;
MVC 是 Model-View-Controller 的缩写
Model代表的是应用程序的商业逻辑 (通过 JavaBean EJB 等组件实现)
View提供可交互的客户界面 ,向客户显示模型数据(使用 JSP 来输出 HTML );
Controller响应客户的请求 ,根据客户的请求操纵模型,并把模型的响应结果由视图展现给客户 通常是 Servlet ;
MVC好处
各司其职,互不干涉
在MVC 模式中,三个层各司其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其它层中的代码。
有利于开发中的分工
在MVC 模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的 JSP ,对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
有利于组件的重用
分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面。
MVC 有助于把应用分离成合理的组件,以方便开发
MVC(Servlet、JSP、JavaBean相结合)
Servlet扮演控制者的角色,接受客户请求 ,创建 JavaBean JavaBean 执行业务逻辑 ,向 Servlet 返回结果。 Servlet 将结果交给 JSP 页面 ,由 JSP 页面生成 HTML 向客户返回结果
 MVC 模式的核心思想是有效地组合“视图”、“模型”和“控制器”。
掌握该模式对于设计合理的 Web 应用以及学习使用某些流行的 Web 框架,如 Hibernate Spring Struts等,都有着十分重要的意义。
MVC 是一种通过三个不同部分构造一个软件或组件的理想办法:
模型( Model —— 用于存储数据的对象。
视图( View —— 为模型提供数据显示的对象。
控制器( Controller ——负责具体的业务逻辑操作,即控制器根据视图提出的要求对数据做出处理,并将有关结果存储到模型中,同时负责让模型和视图进行必要的交互,当模型中的数据变化时,让视图更新显示。
JSP 技术中,“视图”、“模型”和“控制器”的具体实现如下:
模型( Model ):  一个或多个 JavaBean 对象,用于存储数据, JavaBean 主要提供简单的 setXXX () 方法和 getXXX () 方法,在这些方法中不涉及对数据的具体处理细节。
视图( View ):  一个或多个 JSP 页面,为模型提供数据显示, JSP 页面主要使用 HTML 标记和 JavaBean 标记来显示数据
控制器( Controller 一个或多个 Servlet 对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到 JavaBean 中,然后 Servlet 使用重定向方式请求视图中的某个 JSP 页面更新显示。
JSP+Javabean 模式中,由 JSP 页面通过使用 useBean 标记:
< jsp:useBean id=" 名字 " class=" 创建 bean 的类 " scope=" 生命周期 "/> 创建 Javabean
JSP 中的 MVC 模式中,也可以由控制器 servet 创建 Javabean ,并将有关数据存储到所创建的 Javabean 中,然后 servlet 请求某个 JSP 页面使用 Javabean getProperty 动作标记:
< jsp:getProperty name= " 名字 " property="bean 的属性 "/> 显示 Javabean 的中的数据。
JSP 中的 MVC 模式中,非常重要的手段是由 servlet 负责用构造方法创建 Javabean ,因此允许创建 Javabean 的类可以有带参数的构造方法。
JSP 中的 MVC 模式中, servet 创建的 Javabean 也涉及到生命周期 ( 有效期限 ) ,生命周期分为 request session application 。以下假设创建 Javabean 的类的名字是 BeanClass ,该类的包名为 user.yourbean

request周期的Javabean

1. Javabean的创建
 servlet 负责创建 bean 。那么创建生命周期为 request bean 的步骤如下:
1 )用 BeanClass 类的某个构造方法创建 bean 对象
例如: BeanClass bean=new BeanClass ();
2 )将所创建的 bean 对象存放到 HttpSerletRequest 对象 request 中,并指定查找该 bean 的关键字,该步骤决定了 bean 的生命周期为 request
例如:
request.setAttribute (" keyWord ",bean);
执行上述操作,就会把 bean 存放到 Tomcat 引擎管理的内置对象 pageContext 中,该 bean 被指定的 id " keyWord " ,生命周期是   PageContext.REQUEST_SCOPE request 。  
2   视图更新
servlet 请求一个 JSP 页面,比如 show.jsp 的代码如下:
RequestDispatcher dispatcher= request.getRequestDispatcher (" show.jsp ");
dispatcher.forward ( request,response );
servlet 所请求的 JSP 页面可以使用如下标记获得 servlet 所创建的 bean 的引用( type 属性使得该 JSP 页面不负责创建 bean
< jsp:useBean id=" keyWord " type=" user.yourbean.BeanClass " scope="request"/>
该标记中的 id servlet 所创建的 bean 索引关键字。然后 JSP 页面使用 < jsp:getProperty name=" keyWord " property="bean 的变量 "/> 标记显示 bean 中的数据。如果上述代码执行成功,用户就看到了 show.jsp 页面的执行效果。
特别注意 : 如果 servlet 所请求的 JSP 页面 , 使用如下标记获得 servlet 所创建的 bean 的引用 ( 注意没有用 type 属性而是用 class 属性 )
< jsp:useBean id=" keyWord " class=" user.yourbean .BeanClass " scope="request"/>
该标记中的 id servlet 所创建的 bean 索引关键字。那么即使 servlet 所请求的 JSP 页面事先已经有了 id " keyWord " scope "request" bean ,那么这个 bean 也会被 servlet 所创建的 bean 替换。
原因是 servlet 所请求的 JSP 页面会被刷新,就会根据当前页面使用的 < jsp:useBean id=" keyWord " class=" user.yourbean.BeanClass " scope="request"/> 标记到 Tomcat 引擎管理的内置对象 PageContext 中寻找 id " keyWord " ,生命周期是 request ,而该 bean 已经被 servlet 更新了。

session周期的Javabean

1.Javabean的创建

servet创建生命周期为sessionbean的步骤如下:

1)用BeanClass类的某个构造方法创建bean对象,例如:

BeanClass bean=new BeanClass();

2)将所创建的bean对象存放到HttpSerletSession对象:session中,并指定查找该bean的关键字,该步骤决定了bean的生命周期为session。例如:

 HttpSession session=request.getSession(true);

session.setAttribute("keyWord",bean);

内置对象执行上述操作,就会把bean存放到Tomcat引擎管理的内置对象pageContext中,该bean被指定的id"keyWord",生命周期是PageContext.SESSION_SCOPEsession)。  

2   视图更新

servelt创建bean, bean的生命周期为session只要用户的session没有消失,该bean就一直存在,一个用户在访问Web服务目录的各个JSP中都可以使用<jsp:useBean id="keyWord" type="usern.yourbean.BeanClass" scope="session"/> 标记获得servlet所创建的bean的引用,然后使用<jsp:getProperty name="keyWord" property="bean的变量"/>标记显示该bean中的数据,该标记中的idservlet所创建的bean索引关键字。

对于生命周期为sessionbean,如果servlet希望某个JSP显示其中的数据,可以使用RequestDispatcher对象向该JSP页面发出请求,也可以使用HttpServletResponse类中的重定向方法(sendRedirect)。

show.jsp页面使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="session"/>该标记中的idservlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他页面事先已经有了id"keyWord"scope" session "bean,那么这个bean也会被servlet所创建的bean替换。

 原因是,servlet所请求的JSP页面或其他页面被刷新时,就会根据当前页面使用的<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope=" session "/>标记到Tomcat引擎管理的内置对象PageContext中寻找id"keyWord",生命周期是session,而该bean已经被servlet更新了。

application周期的Javabean

1Javabean的创建

servet创建生命周期为applicationbean的步骤如下:

1BeanClass类的某个构造方法创建bean对象,例如:

BeanClass bean=new BeanClass();

2servlet使用getServletContext()方法返回服务器的ServletContext内置对象的引用,将所创建的bean对象存放到服务器这个ServletContext内置对象中,并指定查找该bean的关键字,该步骤决定了bean的生命周期为application,例如:getServletContext().setAttribute("keyWord",bean);

上述操作,就会把bean存放到Tomcat引擎管理的内置对象pageContext中,该bean被指定的id"keyWord",有效期限是(生命周期)PageContext.APPLICATION_SCOPEapplication 

2   视图更新

servlet创建创建生命周期为applicationbean后,只要Web应用程序不结束,该bean就一直存在。一个用户在访问Web服务目录的各个JSP中都可以使用<jsp:useBean id="keyWord" type="user.yourbean.BeanClass" scope="application"/>  标记获得servlet所创建的bean的引用,然后使用<jsp:getProperty name="keyWord" property="bean的变量"/>标记显示该Javabean中的数据,该标记中的idservlet所创建的bean索引关键字。

 对于生命周期为applicationbean,如果servlet希望某个JSP显示其中的数据,可以使用RequestDispatcher对象向该JSP页面发出请求,也可以使用HttpServletResponse类中的重定向方法(sendRedirect)。

注意:所有用户在同一个Web服务目录中的application生命周期的bean是相同的,即占有相同的内存空间。另外,如果servlet所请求的JSP页面,比如show.jsp页面,使用如下标记获得servlet所创建的bean的引用(注意没有用type属性而是用class属性)<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="application"/>该标记中的idservlet所创建的bean索引关键字。那么即使servlet所请求的JSP页面或其他事先已经有了id"keyWord"scope"application"bean,那么这个bean也会被servlet所创建的bean替换。

原因是,servlet所请求的JSP页面或其他页面被刷新时,就会根据当前页面使用的:<jsp:useBean id="keyWord" class="user.yourbean.BeanClass" scope="application"/>标记到Tomcat引擎管理的内置对象PageContext中寻找id"keyWord",生命周期是application,而该bean已经被servlet更新了

JavabeanServlet与配置文件

Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control

1.保存Javabean类和Servlet类的源文件

D:\ mybean\data  和  D:\myservlet\control

2.编译Javabean类  D:\javac mybean\data\Javabean的源文件

3.编译Servlet类      D:\ javac myservlet\control\servlet的源文件

4.将类的字节码文件保存到服务器 ch9\WEB-INF\classes\mybean\data  ch9\WEB-INF\classes\myservlet\control

5web.xml文件

编写web.xml文件,并保存到Web服务目录的WEB-INF子目录中,即ch9\WEB-INF

MVC模式与注册登录    大部分Web应用都会涉及到注册与登录模块。本节使用MVC模式讲述怎样设计注册、登录模块。为ch9\WEB-INF中的web.xml文件添加如下子标记

JavabeanServlet管理

本节的Javabean类的包名均为mybean.dataServlet类的包名均为myservlet.control

1.保存Javabean类和Servlet类的源文件    D:\ mybean\data D:\myservlet\control

2.编译Javabean类    D:> javac mybean\data\Javabean的源文件

3.编译Servlet类   D:> javac myservlet\control\servlet的源文件

4.将类的字节码文件保存到服务器 ch9\WEB-INF\classes\mybean\data  

ch9\WEB-INF\classes\myservlet\control  

配置文件管理

本节的Servlet类的包名均为myservlet.control,需要配置Web服务目录的web.xml文件,即将下面的web.xml文件保存到Tomcat安装目录的Web服务目录ch9中。根据本书使用的Tomcat安装目录及Web服务目录,需要将web.xml文件保存到D:\apache-tomcat-8.0.3\webapps\ch9\WEB-INF目录中。    

web.xml

<servlet>

<servlet-name>register</servlet-name>

 <servlet-class>myservlet.control.HandleRegister</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>register</servlet-name>

<url-pattern>/helpRegister</url-pattern>

</servlet-mapping>

<servlet>

 <servlet-name>login</servlet-name>

<servlet-class>myservlet.control.HandleLogin</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>login</servlet-name>

<url-pattern>/helpLogin</url-pattern>

</servlet-mapping>

数据库设计与连接

1  创建一个数据库 、表  使用MySQL建立一个数据库student,该库共有一个user表 。

user表的用途:存储用户的注册信息。即会员的注册信息存入user表中,user表的主键是logname,各个字段值的说明如下:

logname 存储注册的用户名(属性是字符型,主键)

password 存储密码(属性是字符型)

email 存储email(属性是字符型 

2  数据库连接

避免操作数据库出现中文乱码,需要使用

Connection getConnection(java.lang.String) 方法建立连接,连接中的代码是(用户是root,其密码是空)

 String url = "jdbc:mysql://127.0.0.1/student?"+"user=root&password=&characterEncoding=gb2312";

Connection con = DriverManager.getConnection(uri);

 

 

 

 

相关文章:

JSP:MVC

一个好的Web应用&#xff1a; 功能完善、易于实现和维护易于扩展等的体系结构 一个Web应用通常分为两个部分&#xff1a; 1. 由界面设计人员完成的表示层&#xff08;主要做网页界面设计&#xff09; 2. 由程序设计人员实现的行为层&#xff08;主要完成本Web应用的各种功能…...

微服务-京东秒杀

1 项目介绍 技术栈 后端 SpringCloud 中Netflix 五大组件&#xff1a; EurekaRibbonHystrixOpenfeignZuul SpringBootSpringSpringMVCMyBatis 数据库 MySQLRedis 前端 html5cssjsjQuery 消息中间件 RabbitMQ 2 项目搭建 项目分析 后端 shop-parent [pom] &#xff08;商…...

「MACOS限定」 如何将文件上传到GitHub仓库

介绍 本期讲解&#xff1a;如何在苹果电脑上上传文件到github远程仓库 注&#xff1a;写的很详细 方便我的朋友可以看懂操作步骤 第一步 在电脑上创建一个新目录&#xff08;文件夹&#xff09; 注&#xff1a;创建GitHub账号、新建github仓库、git下载的步骤这里就不过多赘…...

python opencv 边缘检测(sobel、沙尔算子、拉普拉斯算子、Canny)

python opencv 边缘检测&#xff08;sobel、沙尔算子、拉普拉斯算子、Canny&#xff09; 这次实验&#xff0c;我们分别使用opencv 的 sobel算子、沙尔算子、拉普拉斯算子三种算子取进行边缘检测&#xff0c;然后后面又使用了Canny算法进行边缘检测。 直接看代码&#xff0c;代…...

【Unity入门】鼠标输入和键盘输入

Unity的Input类提供了许多监听用户输入的方法&#xff0c;比如我们常见的鼠标&#xff0c;键盘&#xff0c;手柄等。我们可以用Input类的接口来获取用户的输入信息 一、监听鼠标输入 GetMouseButtonUp 、GetMouseButtonDown、GetMouseButton input.GetMouseButtonDown和 inp…...

芯知识 | MP3语音芯片IC的优势特征及其在现代科技应用中的价值

随着科技的飞速发展&#xff0c;MP3语音芯片作为一种高度集成的音频处理解决方案&#xff0c;在现代电子产品中发挥着越来越重要的作用。本文将分析MP3语音芯片的优势特征&#xff0c;并探讨其在各个领域的应用价值。 一、MP3语音芯片的优势特征 MP3语音芯片具有多种显著的优…...

C语言进阶之路-基本数据小怪篇

目录 一、学习目标&#xff1a; 二、数据基本类型 整型 浮点型 / 实型 字符 字符串 布尔型数据 三、重要的杂七杂八知识点 常量与变量 标准输入 sizeof运算符&#xff1a; 类型转换 数据类型的本质 整型数据尺寸 可移植性整型 拿下第一个C语言程序 总结 一、学…...

【OpenCV实现图像:使用OpenCV生成拼图效果】

文章目录 概要通用配置不考虑间隔代码实现考虑间隔代码实现小结 概要 概要&#xff1a; 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时&#xff0c;可以考虑不同的模式&#xff0c;包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔&a…...

【AOSP】生成签名文件release key,通过Android源码对apk进行签名

简介 现在apk都需要签名&#xff0c;Flutter做的项目官方规定编译apk必须签名。 签名的好处&#xff1a; 应用来源验证&#xff1a; 应用签名允许Android系统验证应用的来源。每个应用都使用开发者的私钥进行签名&#xff0c;而应用的签名信息包含在应用的APK文件中。当用户尝…...

深度学习之基于Tensorflow银行卡号码识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介银行卡号码识别的步骤TensorFlow的优势 二、功能三、系统四. 总结 一项目简介 # 深度学习基于TensorFlow的银行卡号码识别介绍 深度学习在图像识别领域取得…...

第95步 深度学习图像目标检测:Faster R-CNN建模

基于WIN10的64位系统演示 一、写在前面 本期开始&#xff0c;我们学习深度学习图像目标检测系列。 深度学习图像目标检测是计算机视觉领域的一个重要子领域&#xff0c;它的核心目标是利用深度学习模型来识别并定位图像中的特定目标。这些目标可以是物体、人、动物或其他可识…...

设计模式—里氏替换原则

1.概念 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说&#xff0c;任何基类可以出现的地方&#xff0c;子类一定可以出现。 LSP是继承复用的基石&#xff0c;只有当衍生类可以替换掉基类&#xff0c;软件单位的功能不受到影…...

PyTorch包

进入PyTorch的官网&#xff1a; pytorch GitHub 点击GitHub&#xff1a; 进入PyTorch的主目录&#xff1a; 进入Vision reference&#xff1a; detection&#xff1a; 这就是我们在训练过程中会使用到的文件了&#xff1a;...

22、什么是中间件和权限拦截中间件实操

新建中间件 middleware\auth.js // 定义权限判断中间件&#xff0c;中间件的第一个参数是context export default ({store, redirect}) > {console.log("中间件被调用")// if (!store || !store.state.userinfo) {// redirect("/")// } }页面使用…...

vue.config.js

proxy代理 proxy选项用于配置开发服务器的代理。下面是proxy的全部属性&#xff1a; 1. target (String | Object | Function): 指定要代理的目标主机的URL。可以是一个字符串&#xff0c;也可以是一个对象或函数&#xff0c;用于动态返回目标URL。 2. forward (Boolean): 控…...

80C51单片机----数据传送类指令

目录 一.一般传送指令&#xff0c;即mov指令 1.16位传送&#xff08;仅1条&#xff09; 2.8位传送 &#xff08;1&#xff09;目的字节为A&#xff08;累加器&#xff09; &#xff08;2&#xff09;目的字节为Rn(工作寄存器) &#xff08;3&#xff09;目的字节为direct…...

【Golang】使用泛型对数组进行去重

背景&#xff1a; 要求写一个方法&#xff0c;返回去重后的数组。数组的类型可能是int64&#xff0c;也可能是string&#xff0c;或是其他类型。 如果区分类型的话&#xff0c;每增加一个新的类型都需要重新写一个方法。 示例代码&#xff1a; //对int64数组进行去重 func DeD…...

Ps:画笔工具的基本操作

画笔工具 Brush Tool是 Ps 中最常用的工具&#xff0c;广泛地用于绘画与修饰工作。 虽然多数操作可在画笔工具的工具选项栏中选择执行&#xff0c;但是如果能记住相应的快捷键可大大提高工作效率。 熟练掌握画笔工具的操作对于使用其他工具也非常有益&#xff0c;因为 Ps 中许多…...

【Apache Doris】一键实现万表MySQL整库同步 | 快速体验

【Apache Doris】一键实现万表MySQL整库同步 | 快速体验&#xff09; 一、 环境信息1.1 硬件信息1.2 软件信息 二、 流程介绍三、 前提概要3.1 安装部署3.2 JAR包准备3.2.1 数据源3.2.2 目标源 3.3 脚本模版 四、快速体验五、常见问题5.1 Mysql通信异常5.2 MySQL无Key同步异常5…...

35.逻辑运算符

目录 一.什么是逻辑运算符 二.C语言中的逻辑运算符 三.逻辑表达式 三.视频教程 一.什么是逻辑运算符 同时对俩个或者俩个以上的表达式进行判断的运算符叫做逻辑运算符。 举例&#xff1a;比如去网吧上网&#xff0c;只有年满十八周岁并且带身份证才可以上网。在C语言中如果…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...