gpt4 book ai didi

java - JVM 如何对用户的请求使用react

转载 作者:行者123 更新时间:2023-12-01 17:57:11 26 4
gpt4 key购买 nike

让我们以嵌入到某个 tomcat 容器中的 spring 应用程序为例。我知道 spring 在它的掩护下使用 servlet,但我想从 JVM 的角度了解它的内部工作原理。什么直接与 JVM 通信?

独立的“静态”应用程序案例很简单,因为代码被编译一次,字节码由 JVM 解释/由 JIT 编译,类被加载并且与外界没有交互 - 我们可以说应用程序是“调用一次”何时开始。

但是当涉及到可以与用户进行一些交互等的应用程序时,使用 spring 循环运行,JVM 如何知道某些方法是通过请求(即“localhost:8080/users”)调用的? JVM 正在监听某个端口?从套接字读取?哪个组件负责它?

如果能写出从应用程序启动、用户请求到与 JVM 交互以及其中发生的情况的整个路径,我将非常感激。

最佳答案

首先,您的问题非常宽泛,不适合 StackOverflow。

简而言之,JVM 与任何其他操作系统进程没有什么特殊之处。您(或您的供应商)编写 Java/C/Go/Python/任何监听套接字的代码。

当传入的网络请求到来时,操作系统“通知”进程(您正在运行的程序)有新数据,以便它可以解释它并以任何它想要的方式使用react(例如将用户数据保存到数据库中,返回正确的响应)。

用于与操作系统特定设施(如套接字)进行交互的 Java/JVM 代码是用 native 代码(即 C/C++)编写的,并由 JVM 提供给您的 Java通过包装器(“ native 方法”)进行编程。例如,有一个内部 PlainSocketImpl.java 类,其中包含在相应 PlainSocketImpl.c native 代码中实现的一堆 native 方法: https://github.com/AdoptOpenJDK/openjdk-jdk14/blob/master/src/java.base/unix/native/libnet/PlainSocketImpl.c(例如 socketAccept 实现: https://github.com/AdoptOpenJDK/openjdk-jdk14/blob/master/src/java.base/unix/native/libnet/PlainSocketImpl.c )

我建议你找到一个关于通用套接字编程的好资源;您可能会发现这些很有用:

关于java - JVM 如何对用户的请求使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60694147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com