2021-11-14

新技术研究:quarkus


前言

Quarkus是Kubernetes为GraalVM量身定制的本地Java堆栈。 那么 quarkus 有什么是非常吸引人的:启动速度,内存占用小,利用 graalvm 可以做到把 jar 应用转成二进制的可执行文件即 native 镜像,还有就是开发环境对开发人员的友好体现在只要代码保存就会快速生效,在开发测试环境的一键部署,更关键的是性能的极大提升。


一、开始之路

quarkus附带了一个maven原型来构建一个非常简单的启动项目。

mvn io.quarkus:quarkus-maven-plugin:1.13.0.Final:create \
-DprojectGroupId=org.acme \
-DprojectArtifactId=getting-started \
-DclassName="org.acme.quickstart.GreetingResource" \
-Dpath="/hello"

这将创建一个名为greetingresource的简单jax - rs资源。

@Path("/hello")
public class GreetingResource {
   @GET
   @Produces(MediaType.TEXT_PLAIN)
   public String hello() {
      return "hello";
   }
}

二、使用步骤

1.打包

mvn clean package

需要分发-runner.jar。
如果quarkus.package属性设置为true,则uber-jar与jar中绑定的所有依赖项一起创建。
默认情况下,quarkus使用快速jar打包,如果quarkus.package.type 属性设置为legacy-jar,则quarkus创建旧标准jar。
application.properties

quarkus.package.uber-jar=true
quarkus.package.type=legacy-jar

要编译为本机,您需要设置graalvm_home环境变量并运行本机pro

mvn clean package -Pnative
./gradlew build -Dquarkus.package.type=native

可能的夸克包类型有:jar、legacy-jar、super -jar和native。

2.单体应用部署

前后端不分离,就需要用到 quarkus 里面的模板 qute,代码层面用到的程度就是基于 Hibernate ORM with Panache + qute 这是主要的技术支撑,还有一些比如图片的导入、展示(这里涉及到上传下载的技术),这种框架是支持mongdb的,消息队列这块 kafka、amqp 都是支持的。

前后端读写分离,是支持jwt 内容。


总结

目前夸克支持内容有限,因此quarkus 目前最大的问题是推广和研究学习,把 spring 里面成熟的技术,对开发帮助大的技术点都用 quarkus 实现一下,比如 redis key 的获取方式不能用 #user.id 这种获取方式显然是对实际需求考虑的不到位。

这个数据可以使用Python进行解析和处理。可以按照以下步骤进行: 1. 将数据分割成每个数据项。 ``` data_items = data.split(',') ``` 2. 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中。 ``` data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) ``` 3. 对于每个小项,进行相应的类型转换。 ``` for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 ``` 4. 可以按照需要对数据进行进一步处理,如按照题号、时间等进行排序、筛选等操作。 完整的Python代码如下: ``` import datetime data = '''1#2021-05-18 14:31:55##初级会计实务,2#2021-05-18 14:31:57#12#初级会计实务,2#2021-05-18 14:32:08##初级会计实务,3#2021-05-18 14:32:09#12#初级会计实务,4#2021-05-18 14:32:34#12#初级会计实务,4#2021-05-18 14:32:45##初级会计实务,5#2021-05-18 14:32:46#12#初级会计实务,5#2021-05-18 14:32:57##初级会计实务,6#2021-05-18 14:33:00#12#初级会计实务,7#2021-05-18 14:33:44#12#初级会计实务,7#2021-05-18 14:34:42##初级会计实务,8#2021-05-18 14:34:43#12''' # 将数据分割成每个数据项 data_items = data.split(',') # 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中 data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) # 对于每个小项,进行相应的类型转换 for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 print(data_list) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值