Servlet(JavaEE开发)

目录

一、Tomcat服务器

二、Servlet生命周期详解

三、HttpRequest对象

四、HttpResponse对象

五、HttpSession对象

六、ServletContext对象

七、过滤器、

八、监听器

九、JSP技术介绍


一、Tomcat服务器

Tomcat官网:Apache Tomcat® - Welcome!

Tomcat的安装及配置:Tomcat安装步骤及详细配置-CSDN博客

在Java EE开发中,Tomcat服务器是一个重要的组成部分,它扮演着Web应用服务器的角色。Tomcat是一个开源的、免费的、轻量级的Web应用服务器,能够处理HTTP请求,并提供Web服务。以下是关于Tomcat服务器在Java EE开发中的详细解释:

  1. Tomcat的概念和作用
    • Tomcat是一个开放源代码的Web应用服务器,用于装载和运行Java Web程序,如JSP或Servlet程序。当服务器启动时,Tomcat会根据预先编辑好的Java Web程序来响应客户端的请求。
    • 它主要负责运行Servlet和JSP容器,存放和运行Java Web程序。当有请求需要访问存放在Tomcat容器中的Java Web程序时,Tomcat会调用相应的程序进行响应。
  2. Tomcat的功能
    • 管理Servlet应用的生命周期:Tomcat负责创建Servlet,处理请求时调用相应的Servlet,并在不再需要时销毁Servlet。
    • URL映射:Tomcat通过配置文件将URL映射到对应的Servlet,使得当用户访问某个URL时,能够自动调用对应的Servlet处理请求。
    • 与Servlet程序合作处理HTTP请求:Tomcat可以与Servlet程序合作处理HTTP请求,将请求传递给Servlet进行处理,并将处理结果返回给用户。
    • 提供Web服务:允许其他系统通过HTTP协议访问其提供的Web服务。
    • 可扩展性:Tomcat具有良好的可扩展性,可以通过添加组件或插件来扩展其功能。
  3. Tomcat的优点
    • 开源免费:用户可以免费使用Tomcat,并根据需要进行定制和扩展。
    • 易于使用:Tomcat的安装和配置相对简单,开发者可以快速构建稳定、可靠的Web应用。
    • 良好的性能:尽管在某些情况下,其性能可能不如一些商业Web服务器,但对于大多数中小型应用来说,Tomcat的性能是足够的。
  4. Tomcat的缺点
    • 配置复杂:对于初学者来说,Tomcat的配置文件较多,配置过程可能会相对复杂。
    • 性能限制:与一些商业Web服务器相比,Tomcat的性能可能有所限制,特别是在处理大规模应用或高并发请求时。
    • 对静态资源支持相对较弱:如果应用程序中包含大量的静态资源,Tomcat的处理性能可能会受到影响。
  5. Tomcat与Java EE集成
    • 在Java EE开发环境中,配置Tomcat服务器通常涉及将其添加到IDE(如Eclipse)中作为运行时环境。这样,开发者可以在IDE中直接部署和运行Java Web应用,并进行调试和测试。

综上所述,Tomcat服务器在Java EE开发中扮演着重要的角色,为开发者提供了一个强大且灵活的Web应用服务器平台。然而,在选择使用Tomcat时,也需要考虑到其可能存在的性能限制和配置复杂性等问题。

二、Servlet生命周期详解

在Java EE开发中,Servlet是Web应用的重要组成部分,用于处理客户端的请求并生成相应的响应。Servlet的生命周期是指Servlet从创建到销毁的整个过程,包括加载、初始化、处理请求、服务结束和卸载等几个关键阶段。下面将详细解释Servlet的生命周期:

  1. 加载(Loading)
    • 当Web应用启动时,Servlet容器(如Tomcat)会扫描Web应用的WEB-INF/web.xml配置文件以及使用@WebServlet注解的Servlet类。
    • 容器发现Servlet的配置后,会加载相应的Servlet类。这一步通常由类加载器完成,将Servlet的.class文件加载到JVM中。
  2. 初始化(Initialization)
    • 在Servlet被加载后,容器会创建Servlet的实例。
    • 随后,容器调用Servlet的init()方法进行初始化。这个方法由Servlet开发者提供,可以在其中执行一些只需要在Servlet生命周期中执行一次的初始化操作,如加载配置文件、创建数据库连接等。
    • init()方法只会在Servlet生命周期中调用一次。
  3. 处理请求(Service)
    • 当客户端(如Web浏览器)发送请求到Servlet时,容器会调用Servlet的service()方法。
    • service()方法是Servlet处理请求的核心方法。根据请求的类型(GET、POST等),容器可能会调用doGet()doPost()等特定的方法来处理请求。
    • 对于每一个客户端请求,容器都会创建一个新的线程来调用service()方法,因此service()方法可能会被多次调用,每次处理一个不同的请求。
  4. 服务结束(End of Service)
    • service()方法执行完毕后,请求的处理就告一段落。
    • Servlet容器会等待下一个请求的到来,并再次调用service()方法。
    • Servlet实例在Web应用运行期间会一直存在,并持续处理请求,直到Web应用被停止或Servlet被卸载。
  5. 卸载(Unloading)
    • 当Web应用停止时,或者Servlet容器决定释放不再需要的Servlet实例时,Servlet的生命周期将结束。
    • 在Servlet实例被销毁之前,容器会调用Servlet的destroy()方法。这个方法也是由Servlet开发者提供的,用于执行一些清理操作,如关闭数据库连接、释放资源等。
    • destroy()方法只会在Servlet生命周期结束时调用一次。
    • 调用完destroy()方法后,Servlet实例会被垃圾回收器回收,Servlet的生命周期正式结束。

Servlet的生命周期由Servlet容器管理,开发者无需直接控制Servlet的加载、初始化和卸载。但是,开发者可以通过重写init()service()destroy()方法来定制Servlet的行为,以满足特定的业务需求。

三、HttpRequest对象

在Java EE开发中,HttpRequest对象扮演着关键角色,它用于封装HTTP请求信息,使得开发者能够方便地访问和处理请求数据。然而,需要注意的是,在标准的Java EE Servlet API中,并没有直接命名为HttpRequest的接口或类。实际上,更常见的接口是HttpServletRequest,它继承自ServletRequest接口,专门用来封装HTTP请求消息。

HttpServletRequest对象提供了一系列方法来获取请求中的信息,如请求头、请求参数、请求路径等。以下是一些常用的方法:

  • getMethod():返回请求使用的HTTP方法,如GET、POST等。
  • getRequestURI():返回请求的URI(统一资源标识符)。
  • getProtocol():返回请求使用的协议和版本。
  • getHeader(String name):根据给定的请求头名称返回对应的值。
  • getParameter(String name):根据给定的参数名称返回对应的参数值。
  • getParameterMap():返回请求参数的键值对映射。
  • getServletContext():返回与该请求关联的ServletContext对象。

此外,HttpServletRequest对象还提供了其他许多方法,用于获取和处理请求中的各种信息。通过这些方法,开发者可以灵活地处理各种HTTP请求,实现复杂的Web应用功能。

在Java EE应用中,当客户端发送一个HTTP请求到服务器时,服务器端的Servlet容器会创建一个HttpServletRequest对象,并将其传递给相应的Servlet进行处理。Servlet可以通过调用HttpServletRequest对象的方法来获取请求中的信息,并根据这些信息执行相应的业务逻辑。

需要注意的是,HttpServletRequest对象在请求处理期间是线程安全的,但不应该在请求处理之外的时间段内保持对它的引用,因为这可能导致数据不一致或其他问题。同时,在处理完请求后,也不需要显式地关闭或释放HttpServletRequest对象,因为容器会自动管理其生命周期。

总之,HttpServletRequest对象是Java EE开发中处理HTTP请求的重要工具,它提供了丰富的方法来获取和处理请求中的信息,使得开发者能够构建出功能强大、灵活的Web应用。

四、HttpResponse对象

在Java EE开发中,HttpResponse对象通常用于封装HTTP响应信息,以便将服务器处理的结果发送回客户端。尽管标准的Java EE Servlet API中并没有直接命名为HttpResponse的接口或类,但通常使用HttpServletResponse接口来实现这一功能。HttpServletResponse对象继承自ServletResponse接口,并提供了多种方法来设置响应的状态码、头部信息以及响应正文。

以下是HttpServletResponse对象的一些常用方法及其功能:

  1. 设置状态码:通过调用setStatus(int sc)方法,可以设置HTTP响应的状态码,如200(表示请求成功)、404(表示未找到资源)等。

  2. 设置响应头信息addHeader(String name, String value)setHeader(String name, String value)方法用于添加或设置响应的头部信息。这包括设置内容类型、缓存控制、重定向等。

  3. 设置响应正文:通过getWriter()getOutputStream()方法,可以获得一个输出流,用于向客户端发送响应的正文内容。这些内容可以是HTML、JSON、XML等格式的数据。

  4. 重定向:使用sendRedirect(String location)方法可以实现页面的重定向,将客户端的请求转发到另一个URL。

在Java EE应用中,当服务器处理完客户端的请求后,会创建一个HttpServletResponse对象,并设置相应的响应信息。然后,这个响应对象会被发送给客户端,客户端据此显示页面或进行其他操作。

需要注意的是,HttpServletResponse对象在响应处理期间也是线程安全的,但同样不应该在响应处理之外的时间段内保持对它的引用。同时,在处理完响应后,也不需要显式地关闭或释放HttpServletResponse对象,因为容器会自动管理其生命周期。

通过灵活使用HttpServletResponse对象,开发者可以构建出功能丰富、交互性强的Web应用,提供优质的用户体验。

五、HttpSession对象

在Java EE中,HttpSession对象是一个用于跨多个页面请求或对Web站点的多次访问来标识用户并存储有关该用户信息的机制。这个对象提供了一个会话级别的数据存储,使得开发者可以在用户的不同请求之间保持和共享状态信息。

HttpSession对象通常与用户的会话周期相对应。当用户首次访问Web应用程序时,服务器会为该用户创建一个新的HttpSession对象。这个对象会存储在服务器端,并且可以通过一个唯一的会话标识符(通常是sessionID)在客户端和服务器之间进行传递。

HttpSession对象是一个键值对的集合,允许开发者存储各种类型的数据,如用户的登录状态、购物车信息、用户偏好等。这些数据可以在用户的多个请求之间共享,从而提供了跨请求的持续性。

通过HttpServletRequest对象的getSession()方法,开发者可以获取当前请求的HttpSession对象。如果当前请求中不存在HttpSession对象,getSession()方法会创建一个新的HttpSession对象。如果已存在HttpSession对象,则返回该对象。

HttpSession对象的生命周期与用户的会话周期相同。当用户关闭浏览器或会话超时(超过设定的会话时长)时,HttpSession对象会被销毁,并释放其所占用的资源。此外,开发者也可以通过编程方式显式地使HttpSession对象失效。

需要注意的是,虽然HttpSession对象提供了方便的会话管理机制,但过度使用或不当使用可能导致性能问题或安全风险。因此,在使用HttpSession对象时,应谨慎考虑其存储的数据量、生命周期以及安全性等因素。

六、ServletContext对象

在Java EE开发中,ServletContext对象是一个非常重要的组件,它代表了整个Web应用的上下文环境。每个Web应用都对应一个唯一的ServletContext对象,该对象在Web应用启动时被创建,并在Web应用停止时被销毁。ServletContext对象在整个Web应用中是全局共享的,因此它可以被用来存储和管理与整个应用相关的数据。

ServletContext对象的主要用途包括:

  1. 作为域对象共享数据ServletContext对象可以作为域对象(Scope Object)在整个Web应用中共享数据。这意味着,在任何地方(如不同的Servlet或JSP页面)都可以通过ServletContext对象获取或设置数据,实现数据的全局共享。
  2. 存储应用相关信息ServletContext对象内部封装了该Web应用的信息。例如,可以通过getServerInfo()方法获取当前服务器的信息,通过getRealPath(String path)方法获取Web应用中资源的真实路径等。
  3. 初始化参数管理:Web应用的初始化参数可以在web.xml文件中进行配置,这些参数可以通过ServletContext对象的getInitParameter(String name)方法获取。这提供了一种灵活的方式来配置Web应用的全局参数。
  4. 监听器注册ServletContext对象还允许注册各种监听器(Listener),用于监听Web应用的生命周期事件、会话事件等,以便在特定事件发生时执行相应的操作。

在开发中,可以通过调用ServletContext对象的各种方法来获取和设置数据、获取应用信息、管理初始化参数以及注册监听器等。这使得ServletContext对象成为Java EE开发中管理和控制Web应用上下文环境的重要工具。

需要注意的是,虽然ServletContext对象提供了全局共享数据的机制,但过度使用或不当使用可能导致性能问题或安全风险。因此,在使用ServletContext对象时,应谨慎考虑其存储的数据量、访问频率以及安全性等因素。

七、过滤器、

在Java EE开发中,过滤器(Filter)是一种强大的组件,它能够对客户端发送到服务器的请求以及服务器返回给客户端的响应进行拦截和处理。过滤器在Web应用的请求-响应生命周期中处于Servlet和JSP之前,允许开发者在请求到达目标资源之前或响应返回客户端之前执行一些预处理或后处理逻辑。

过滤器的主要用途包括:

  1. 请求预处理:在请求到达Servlet或JSP之前,过滤器可以执行一些必要的操作,如编码设置、用户认证、日志记录、权限检查等。
  2. 响应后处理:在响应返回给客户端之前,过滤器可以对响应数据进行处理,如压缩响应体、设置缓存头、添加自定义头部等。
  3. 资源访问控制:通过过滤器,可以对特定资源的访问进行控制,实现URL级别的权限管理。
  4. 跨域资源共享(CORS):过滤器可以用来处理CORS请求,设置适当的响应头以允许跨域访问。

在Java EE中,实现过滤器需要创建一个类并实现javax.servlet.Filter接口。该接口定义了三个方法:

  • init(FilterConfig filterConfig): 当过滤器被加载到Web应用时调用,用于初始化过滤器的配置信息。
  • doFilter(ServletRequest request, ServletResponse response, FilterChain chain): 这是过滤器的核心方法,每次请求或响应经过过滤器时都会调用。在这个方法中,可以编写拦截和处理请求或响应的逻辑。
  • destroy(): 当过滤器从Web应用中卸载时调用,用于释放过滤器所占用的资源。

开发者可以通过在web.xml文件中配置过滤器,指定其拦截的URL模式、执行顺序等信息。此外,从Servlet 3.0开始,也可以使用注解(如@WebFilter)来定义过滤器。

使用过滤器能够大大提高Web应用的灵活性和可扩展性,使开发者能够更加精细地控制请求和响应的处理流程。同时,过滤器也提供了一种模块化的方式,将通用的处理逻辑从具体的Servlet或JSP中分离出来,提高了代码的可重用性和可维护性。

八、监听器

在Java EE开发中,监听器(Listener)是一种重要的组件,用于监听和响应Web应用程序中的特定事件。监听器的作用是在这些事件发生时执行一些自定义的逻辑,从而增强应用程序的功能和灵活性。

常见的监听器类型包括:

  • ServletContext监听器:用于监听ServletContext对象的创建和销毁事件,以及监听其中属性的添加、替换和移除事件。这有助于在Web应用的启动和关闭时执行特定的初始化或清理操作。
  • HttpSession监听器:用于监听HttpSession对象的创建和销毁事件,以及监听会话属性的变化。这对于跟踪用户的会话状态、实现用户登录和注销等功能非常有用。
  • ServletRequest监听器:监听ServletRequest对象的创建和销毁事件,通常用于跟踪和处理用户的请求。

监听器的工作原理基于事件驱动模型。当特定事件发生时(如Web应用的启动、会话的创建等),监听器会立即执行其注册的方法。这使得开发者能够在不直接修改事件源代码的情况下,对事件进行响应和处理。

在Java EE中,实现监听器需要创建一个类并实现相应的监听器接口,如ServletContextListenerHttpSessionListenerServletRequestListener。然后,需要在web.xml文件中配置监听器,以便Web容器能够加载和实例化它们。

监听器的使用为Java EE开发提供了强大的事件处理机制,使得开发者能够更加灵活地控制Web应用程序的行为,实现各种自定义的业务逻辑。通过合理地使用监听器,可以极大地提高Web应用程序的可用性和可维护性。

九、JSP技术介绍

JSP(Java Server Pages)是JavaEE开发中的一种重要技术,它建立在Servlet规范之上,是一种动态网页开发技术。JSP实际上是一个简化的Servlet设计,使得开发者能够更方便地在Java中使用HTML标签。它实现了静态网页和动态网页的混编,从外观上看像是一个普通的网页,但在本质上,JSP编译后会成为一个Servlet的class类文件。

JSP的生命周期与Servlet的生命周期完全相同,它同样具备Servlet的完整生命周期。当服务器启动并访问JSP资源时,服务器会按照特定的规则将JSP文件解析并编译成对应的Java类文件(例如,index.jsp会被解析和编译成index_jsp.class)。在每次请求时,如果JSP页面已经被编译过,服务器会直接调用相应的service方法来处理请求,类似于Servlet的service、doPost、doGet等方法。

JSP内置了九个内置对象,这些对象使得HTTP请求的处理变得更为便捷。JSP的语法包括JSP指令、JSP脚本元素、JSP标准标签库(JSTL)以及JSP动作等,它们共同构成了JSP页面的基本结构。

在JavaEE开发中,JSP通常作为数据显示模板来使用,而Servlet则作为Web应用中的控制组件,负责响应请求并产生数据。这种分工使得程序结构更清晰,可读性和可维护性更高。

总的来说,JSP技术为JavaEE开发提供了强大的动态网页开发能力,使得开发者能够更加方便地创建出功能丰富、交互性强的Web应用。


 文章制作不易,如果有帮助的话,还希望能给个点赞关注支持一下,谢谢大家!🙏🙏🙏

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

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

相关文章

解锁ApplicationContext vs BeanFactory: 谁更具选择性?

目录 一、聚焦源码回顾 (一)源码分析和理解 (二)简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 (一)主要特性总结 (二)直接建议 三、案例简单说明 &am…

OpenTelemetry-1.介绍

目录 1.是什么 2.为什么使用 OpenTelemetry 3.数据类型 Tracing Metrics Logging Baggage 4.架构图 5.核心概念 6.相关开源项目 ​编辑 7.分布式追踪的起源 8.百花齐放的分布式追踪 Zipkin Skywalking Pinpoint Jaeger OpenCensus OpenTracing 9.Openteleme…

虚假新闻检测——Adapting Fake News Detection to the Era of Large Language Models

论文地址:https://arxiv.org/abs/2311.04917 1.概论 尽管大量的研究致力于虚假新闻检测,这些研究普遍存在两大局限性:其一,它们往往默认所有新闻文本均出自人类之手,忽略了机器深度改写乃至生成的真实新闻日益增长的现…

【漏洞复现】Adobe ColdFusion 任意文件读取漏洞 CVE-2024-20767

漏洞描述 Adobe ColdFusion是美国奧多比(Adobe)公司的一套快速应用程序开发平台。该平台ColdFusion 2023 <= Update 6 和 ColdFusion 2021<= Update 12版本中存在一个任意文件读取漏洞。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共…

【北京迅为】《iTOP-3588开发板系统编程手册》-第20章 socket 应用编程

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

TI_DSP_F2808学习笔记1: GPIO

1. 初始化设置 1.1 控制寄存器 GPxMUX功能选择寄存器/多功能复用选择 GPxDIR 方向选择寄存器/输入输出选择 0 输入 1 输出GPxPUD 上拉功能选择寄存器/是否启用内部上拉 0 有上拉&#xff0c;1禁止上拉GPxQSeln输入限定选择寄存器 输入n次为0或1才有效&#xff0c;滤波 1.2 数…

使用nacos分布式配置的好处!!!

1、没使用nacos之前&#xff0c;我们如果修改了配置文件&#xff0c;就必须重新发布应用&#xff0c;配置才会生效。使用nacos远程配置后&#xff0c;配置就可以实时更新&#xff0c;就无需重新发布应用&#xff0c;减少了重新发布所消耗的时间&#xff0c;提高了效率。 2、可…

ffmpeg截图(关键帧截图)

1.rtsp流截图 ffmpeg --stimeout 1000000 -rtsp_transport tcp -i rtsp://xxx -vf selecteq(pict_type,PICT_TYPE_I) -vsync vfr -ss 00:00:00.000 -vframes 1 -s 640x480 -y output.jpg -hide_banner参数解释&#xff1a; ● -stimeout 1000000&#xff1a;设置socket超时时间…

PDF 书签制作与调整

本文是对以前发表的旧文拆分&#xff0c;因为原文主题太多&#xff0c;过长&#xff0c;特另起一篇分述。 第一部分 由可编辑 PDF 文档创建书签 方法 1. Adobe Acrobat Pro autobookmark AutoBookmark 是一个可用于 Adobe Acrobat 自动生成书签的插件。 官方下载地址&…

corona渲染器锐化模糊设置,corona高效出图方法

​在使用Corona渲染器进行效果图渲染时&#xff0c;锐化和模糊是两种常用的设置&#xff0c;它们主要用于调整图像的清晰度和柔化效果。锐化参数可以增强图像中的细节&#xff0c;使画面看起来更加清晰锋利&#xff1b;而模糊参数则可以用来柔化图像边缘&#xff0c;减少图像噪…

Etsy多账号关联怎么办?Etsy店铺防关联解决方法

Etsy虽然相对于其他跨境电商平台来说比较小众&#xff0c;但因为平台是以卖手工艺品为主的&#xff0c;所以成本较低&#xff0c;利润很高。许多跨境卖家都纷纷入驻&#xff0c;导致平台规则越发严格&#xff0c;操作不当就会封号&#xff0c;比如一个卖家操作多个账号会出现关…

10.接口自动化测试学习-Pytest框架(2)

1.mark标签 如果在每一个模块&#xff0c;每一个类&#xff0c;每一个方法和用例之前都加上mark标签&#xff0c;那么在pytest运行时就可以只运行带有该mark标签的模块、类、接口。 这样可以方便我们执行自动化时&#xff0c;自主选择执行全部用例、某个模块用例、某个流程用…

二分查找知识点及练习题

知识点讲解 一、没有相同元素查找 请在一个有序递增数组中&#xff08;不存在相同元素&#xff09;&#xff0c;采用二分查找&#xff0c;找出值x的位置&#xff0c;如果x在数组中不存在&#xff0c;请输出-1&#xff01; 输入格式 第一行&#xff0c;一个整数n&#xff0c;代…

家用洗地机买什么牌子的好?四大业内顶尖品牌推荐

家庭清洁一直是必不可少的&#xff0c;但用传统的手动拖地清洁&#xff0c;费时又费力。现在出现了洗地机&#xff0c;确实改变了我们对家庭清洁的看法。它不仅能扫地、拖地&#xff0c;还能吸水&#xff0c;甚至能够自动清洁滚刷解放我们双手&#xff0c;提供高效清洁的同时还…

flutter 点击按钮限流方案

文章目录 前言一、理解限流的思想二、flutter实现代码如下&#xff1a;总结 前言 最近写flutter项目&#xff0c;遇到提交表单重复点击问题&#xff0c;下面是解决方案&#xff0c;希望帮助到大家。 一、理解限流的思想 1、限流思想 限流&#xff08;Throttle&#xff09; 限…

【Linux系列】 离线安装vnc 可视化桌面

离线安装vnc 可视化桌面 缘下载安装vnc初始化链接 缘 项目需要下载 下载地址&#xff1a; http://mirror.centos.org/centos/7/updates/x86_64/Packages/tigervnc-license-1.8.0-31.el7_9.noarch.rpm http://mirror.centos.org/centos/7/os/x86_64/Packages/libXfont2-2.0.…

【Day 6】MySQL 基础

1 MySQL DataBase&#xff08;DB&#xff09;是存储和管理数据的仓库 DataBaseManagementSystem&#xff08;DBMS&#xff09;数据库管理系统&#xff0c;操纵和管理数据库的大型软件 SOL&#xff08;Structured QueryLanguage&#xff09;操作关系型数据库的编程语言&#…

C++/Qt 小知识记录5

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识5 Windows下查看端口占用情况C调用Python三方库测试库有没有被加上的测试方法初始化使用Python的env环境&#xff0c;用Py_SetPythonHome设置GDAL相关的&#xff0c;需要把osgeo、rasterio的路径加入…

轻松了解深度学习的几大模型

1. 前馈神经网络&#xff08;Feedforward Neural Networks, FNNs&#xff09; 想象一下&#xff0c;你有一堆不同颜色的球&#xff0c;你的任务是将它们分类到对应的颜色盒子里。你可能会观察每个球的颜色&#xff0c;然后决定它应该放在哪里。这个过程就像是前馈神经网络的工…

【iOS开发】(一)2024 从一无所有开始,到ios开发(react Native)

​ 2024 从一无所有开始&#xff0c;到ios开发&#xff08;react Native&#xff09; 目录标题 1 工具简介2 基础环境搭建1 安装 brew2 安装 Node.js3 安装 Yarn4 安装 React Native 脚手架 3 ios环境搭建4创建并启动一个app 在这里插入图片描述 1 工具简介 Homebrew (brew)&a…