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

进下加强新闻宣传网站建设网站排名监控工具

进下加强新闻宣传网站建设,网站排名监控工具,西安网页设计培训电话,盐城做网站的哪个公司好背景 在使用 Quarkus 等框架时,反射机制可能是我们剥离spring框架之后做native包需要的解决问题。 首先先了解讨论为什么原生包(native image)不支持传统的反射机制呢?扩展一下知识点,两者之间的区别。 反射机制&…

背景

在使用 Quarkus 等框架时,反射机制可能是我们剥离spring框架之后做native包需要的解决问题。
首先先了解讨论为什么原生包(native image)不支持传统的反射机制呢?扩展一下知识点,两者之间的区别。

反射机制:反射允许 Java 程序在运行时动态地发现和使用类、方法和字段。这种动态性带来了极大的灵活性,但也有一些缺点,如性能开销和安全问题。

原生包(native image):GraalVM 提供了一种将 Java 应用程序编译为原生可执行文件的能力,这种方式能够显著提高启动速度和减少内存占用。这是因为原生包在编译时进行了大量的优化和提前计算,而不是依赖运行时的动态特性。

综上,我们在编译期,即使使用了反射机制,也不会影响我们代码正常运行,换言之,只要我们不制作native镜像包,都不会影响我们的使用。

那我们解释一下为什么会不支持呢。

  • 原生包的构建依赖静态分析,分析应用程序的全部代码路径。这种方法需要知道所有可能的类、方法和字段引用。

  • 编译时,所有可能被使用的代码都必须是已知的。反射机制的动态性使得在编译时无法确定哪些类和成员会在运行时被访问。

  • 生成原生包时,GraalVM 会去除所有未使用的类和方法以减少包的大小。反射需要运行时的类型信息和元数据,而这些信息在编译期间可能被删除,导致运行时无法通过反射机制访问。

  • 反射机制需要大量的元数据来支持运行时动态查找,这会增加内存占用。而原生包的一个主要优势就是减少内存占用,因此这两者是矛盾的。

针对上面的扩展,相信大家应该会进一步了解了原生包的机制了吧!下面开启今天的主题RegisterForReflection

RegisterForReflection

为了在原生包中使用反射,GraalVM 提供了一些解决方案,主要是通过显式注册反射信息。
@RegisterForReflection注解用于显式声明哪些类需要在运行时使用反射。这些信息在编译时被收集并保存在配置文件中,以便在生成原生包时包含必要的元数据,确保在原生镜像中能够正确处理反射操作。

实践

语法示例

  • 方式一:使用 @RegisterForReflection 注解
import io.quarkus.runtime.annotations.RegisterForReflection;@RegisterForReflection
public class MyClass {private String name;private int age;// Constructors, Getters, and Setters
}
  • 方式二:配置文件注册反射信息
    除了使用注解,还可以通过配置文件注册反射信息。这在处理第三方库或无法修改源代码的情况下非常有用。

META-INF/native-image/reflect-config.json文件中添加如下配置:

[{"name": "com.example.MyClass","allDeclaredFields": true,"allDeclaredMethods": true}
]

构建native镜像

  • dockerfile.native
FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java11 AS buildWORKDIR /workspace
COPY . .RUN ./mvnw package -Pnative -Dquarkus.native.container-build=true# Stage 2: Create the minimal runtime image
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6WORKDIR /work/
RUN chown 1001 /work \&& chmod "g+rwX" /work \&& chown 1001:root /workCOPY --from=build /workspace/target/*-runner /work/applicationEXPOSE 8080
USER 1001CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
  • 构建命令docker build -f src/main/docker/Dockerfile.native -t quarkus/getting-started .
  • 运行命令docker run -i --rm -p 8080:8080 quarkus/getting-started
http://www.dtcms.com/wzjs/271534.html

相关文章:

  • 做网站销售怎么做seo图片优化
  • 网站宽度多少合适360优化大师官网
  • 天津做网站选择津坤科技c线上如何推广自己的产品
  • 靖江做网站哪家好百度搜索首页
  • 做网站南京网络营销软件推广
  • 网站加急备案百度网站登录入口
  • 深圳网站制作的公司排名站长之家排名查询
  • 下载网站开发深圳网站seo推广
  • 怎么在商务委的网站做变更民宿平台搜索量上涨
  • 山西建设厅网站2016年3号百度网站官网网址
  • 一个网站的后台怎么做怎么做好seo内容优化
  • 自己做网站语言构建服务器关键词优化收费标准
  • 专业做招聘的网站有哪些商品促销活动策划方案
  • 成都网站定制费用如何网络推广自己的产品
  • 我国网站建设现状微信公众号推广
  • 做网站需要apache深圳20网络推广
  • 网站建设 试卷win10优化大师是官方的吗
  • 成都鲜花网站建设2023重大新闻事件10条
  • 网站官方认证怎么做枣庄网络推广seo
  • 美女的脚奴网站建设互联网100个创业项目
  • 做百度网络营销推广西安seo培训
  • 网站主机 流量服装品牌策划方案
  • 深度网营销型网站建设公司怎么样关键词排名查询api
  • 做单页网站百度手机软件应用中心
  • html5企业网站模版镇江百度seo
  • 怎么做电子商务的网站西安网站建设制作公司
  • 西城网站制作公司写软文推广
  • wap站点推广平台的方式有哪些
  • 上海专业建网站一元友情链接平台
  • 衡水做网站电话搜索引擎优化包括哪些内容