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

国外做批发的网站有哪些手续百度下载app安装

国外做批发的网站有哪些手续,百度下载app安装,1网站建设的目标是什么意思,页面有哪几个网站可以做Quarkus初探 背景安装Quarkus安装Quarkus CLI 创建Quarkus项目运行Quarkus初探代码修改一下代码 数据持久化创建PanacheEntiry写入数据读取数据 Dev Service使用外部数据库区分dev和prod 构建native应用(依赖Graalvm) 背景 最早是在Infoq上了解到Quarku…

Quarkus初探

  • 背景
  • 安装Quarkus
    • 安装Quarkus CLI
  • 创建Quarkus项目
    • 运行Quarkus
    • 初探代码
      • 修改一下代码
    • 数据持久化
      • 创建PanacheEntiry
      • 写入数据
      • 读取数据
    • Dev Service
      • 使用外部数据库
      • 区分dev和prod
    • 构建native应用(依赖Graalvm)

背景

最早是在Infoq上了解到Quarkus这个框架,内部集成了Vertx,对native-image有着非常好的支持,启动速度非常快,占用内存很小(相较于Springboot),最近有时间就来体验一下。

安装Quarkus

Quarkus也是基于Java的微服务框架,所以想要体验Quarkus需要满足以下条件:

  1. JDK 17+,配置配置好了JAVA_HOME
  2. Apache Maven 3.9.6
  3. docker或podman(可选)
  4. Quarkus CLI(可选)
  5. Graalvm(可选,用于构建Native应用)

安装Quarkus CLI

Quarkus CLI中提供了很多命令,可以帮助我们快速的创建、运行Quarkus项目。这两天体验下来Quarkus CLI应该是主要对mvn的各类命令进行了集成,Quarkus CLI的命令相较于mvn来说更加便捷,也是推荐大家安装体验一下。目前官方支持以下几种安装方式:

  • JBang - for Linux, macOS and Windows
  • SDKMAN! - for Linux and macOS
  • Homebrew - for Linux and macOS
  • Chocolatey - for Windows
  • Scoop - for Windows

我目前这台机器是通过SDKMAN来管理JDK版本的,这里选择了使用SDKMAN进行安装

sdk install quarkus

安装完成之后验证一下

quarkus --version
3.9.2

创建Quarkus项目

通过quarkus执行以下命令

quarkus create app org.acme:getting-started-dev-services \--extension='rest'
cd getting-started-dev-services

或者通过maven

mvn io.quarkus.platform:quarkus-maven-plugin:3.9.2:create \-DprojectGroupId=org.acme \-DprojectArtifactId=getting-started-dev-services \-Dextensions='rest'
cd getting-started-dev-services

如果想要创建一个gradle项目,可以追加以下参数 -DbuildTool=gradle 或 -DbuildTool=gradle-kotlin-dsl

对于使用windows的同学,有以下两点需要注意:

  • 如果使用cmd,不要使用\分割命令,所有命令都要放在同一行中
  • 如果使用PowerShell,-D的参数需要使用双引号括起来,e.g."-DprojectArtifactId=getting-started-dev-services"

运行Quarkus

quarkus devor
./mvnw quarkus:devor
./gradlew --console=plain quarkusDev

正常启动后可以看到如下信息:

__  ____  __  _____   ___  __ ____  ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \   
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/   
2024-04-10 11:22:05,350 INFO  [io.quarkus] (Quarkus Main Thread) code-with-quarkus 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.9.2) started in 0.842s. Listening on: http://localhost:80802024-04-10 11:22:05,351 INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.

然后我们在浏览器里访问 http://localhost:8080/hello,应该可以看到如下信息

Hello from Quarkus REST

初探代码

我们使用IDE打开刚刚创建的项目,可以看到只有一个很简单的类GreetingResource

package org.acme;import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;@Path("/hello")
public class GreetingResource {@GET@Produces(MediaType.TEXT_PLAIN)public String hello() {return "Hello from Quarkus REST";}
}

相交于Springboot来说,这里不需要定义一个Application启动类,再增加一个Controller,一个简简单单的GreetingResource就完成了所有的功能,这里使用到的注解也都是jakarta的标准注解。

修改一下代码

public String hello(@RestQuery String name) {return "Hello " + name;
}

然后我们访问http://localhost:8080/hello?name=Bloom
这时我们会看到这样一条消息: Hello Bloom.
quarkus dev模式支持代码热部署,在我们修改代码之后无需重启,调试修改的时候会非常方便。

对应的我们修改一下单元测试 src/test/java/org/acme/GreetingResourceTest.java,将

.body(is(“Hello from Quarkus REST”));

修改为

.body(containsString(“Hello”));

不然下次启动会报错(quarkus默认启动时会先执行单元测试)

数据持久化

在进行这一步之前,建议把我们本地的容器服务启动(docker或podman)起来,看看接下来会发生什么

创建PanacheEntiry

quarkus extension add hibernate-orm-panache jdbc-postgresql
或者
./mvnw quarkus:add-extension -Dextensions=‘hibernate-orm-panache jdbc-postgresql’

官方示例提供的是postgresql,你也可以替换为mysql。
创建一个Greeting.java

import io.quarkus.hibernate.orm.panache.PanacheEntity;
import jakarta.persistence.Entity;@Entity
public class Greeting extends PanacheEntity {public String name;
}

Panache是一个基于Hibernate的orm框架,PanacheEntity(类似于Spring-Data中的JpaRepository)中提供了大量的方法方便我们进行CRUD的操作

写入数据

@GET
@Transactional
@Produces(MediaType.TEXT_PLAIN)
public String hello(@QueryParam("name") String name) {Greeting greeting = new Greeting();greeting.name = name;greeting.persist();return "Hello " + name;
}

这里只是一个示例,在正式的代码中,GET请求不应该向后端服务写入数据

读取数据

@GET
@Path("names")
@Produces(MediaType.TEXT_PLAIN)
public String names() {List<Greeting> greetings = Greeting.listAll();String names = greetings.stream().map(g-> g.name).collect(Collectors.joining (", "));return "I've said hello to " + names;
}

来试一下效果, 先访问 http://localhost:8080/hello?name=Bloom, 再访问 http://localhost:8080/hello/names.

我们就能看到: “I’ve said hello to Bloom”.

Dev Service

进行到这里,你肯定会有很多疑问,我本地都没有PG数据库,项目中也没有任何数据库相关的配置,为什么没有报错?这一切都是怎么发生的?
这时你可以打开自己的Docker desktop或者使用docker ps的命令,你就会发现有一个PG的数据库实例正在运行

% docker ps
CONTAINER ID   IMAGE                       COMMAND                   CREATED              STATUS              PORTS                     NAMES
38c07eab6549   postgres:14                 "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:61089->5432/tcp   kind_yalow

这一切都是Dev Service为我们做的,由于我们添加了jdbc-postgresql的依赖,Dev Service就为我们启动了一个postgresql的容器,方便我们更加快速的进行项目搭建。

另外,在dev模式下,处于Dev Services管理的数据库,Quarkus会使用drop-and-create的模式,所以我们每次修改代码重启服务之后,之前保存的数据都会丢失。在某些情况下,这种模式会很不方便,Quarkus也提供了一种机制来进行数据的初始化
我们可以创建一个sql文件src/main/resources/import.sql

INSERT INTO Greeting(id, name)
VALUES (nextval('Greeting_SEQ'), 'Alice');
INSERT INTO Greeting(id, name)
VALUES (nextval('Greeting_SEQ'), 'Bob');

这样每次quarkus启动时都会将这些数据初始化进去

使用外部数据库

如果我们已经搭建好了一个数据库,我们可以在src/main/resources/application.properties中增加如下配置

# configure your datasource
quarkus.datasource.db-kind = postgresql
quarkus.datasource.username = leopold
quarkus.datasource.password = bloom
quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/mydatabase

区分dev和prod

如果你想在开发和测试环境中使用Dev Service,在生产环境使用外包数据库,可以通过一个%prod的前缀来区分

# configure your datasource
%prod.quarkus.datasource.db-kind = postgresql
%prod.quarkus.datasource.username = leopold
%prod.quarkus.datasource.password = bloom
%prod.quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/mydatabase

构建native应用(依赖Graalvm)

Quarkus一大亮点是对native-image有着非常好的支持,想要体验native-image需要先安装Graalvm,你可以通过官网或者SDKMAN进行安装和配置。

quarkus build --native
./mvnw install -Dnative

编译的过程会比较长,编译完成之后会在target文件夹下生成一个getting-started-dev-services-1.0.0-SNAPSHOT-runner的可执行文件,可以直接启动。

需要注意的是,通过native构建出来的可执行程序会失去跨平台的特性,因此在一个平台上构建出来的native-image往往无法在其他平台运行,最好的方式是通过docker等容器进行部署。

目前Graalvm有一个实验性的功能,在Linux平台来构建跨平台的应用,具体可以参考
https://www.graalvm.org/jdk21/reference-manual/native-image/guides/build-static-executables/#prerequisites-and-preparation


文章转载自:
http://wanjiapeevit.rbzd.cn
http://wanjiaefface.rbzd.cn
http://wanjiameekness.rbzd.cn
http://wanjiatailing.rbzd.cn
http://wanjiacleverish.rbzd.cn
http://wanjiaprolate.rbzd.cn
http://wanjiaaino.rbzd.cn
http://wanjiajongleur.rbzd.cn
http://wanjiadiagram.rbzd.cn
http://wanjiaborne.rbzd.cn
http://wanjiabilberry.rbzd.cn
http://wanjiahaji.rbzd.cn
http://wanjiacoffer.rbzd.cn
http://wanjiastoneware.rbzd.cn
http://wanjiaseasat.rbzd.cn
http://wanjiaindiscriminating.rbzd.cn
http://wanjiahackney.rbzd.cn
http://wanjiascalable.rbzd.cn
http://wanjiajordan.rbzd.cn
http://wanjiaagglomerative.rbzd.cn
http://wanjiafamilarity.rbzd.cn
http://wanjiacrystallography.rbzd.cn
http://wanjiaposterization.rbzd.cn
http://wanjialiterature.rbzd.cn
http://wanjiapacer.rbzd.cn
http://wanjiatilly.rbzd.cn
http://wanjiahydrophile.rbzd.cn
http://wanjiasjambok.rbzd.cn
http://wanjiasupersalesman.rbzd.cn
http://wanjiabeaune.rbzd.cn
http://wanjiahybridise.rbzd.cn
http://wanjiaelegit.rbzd.cn
http://wanjiafreudian.rbzd.cn
http://wanjiaforgiveness.rbzd.cn
http://wanjiadiastole.rbzd.cn
http://wanjiaprincipality.rbzd.cn
http://wanjiacoprophagous.rbzd.cn
http://wanjiadhooti.rbzd.cn
http://wanjiatransfusional.rbzd.cn
http://wanjiajabalpur.rbzd.cn
http://wanjiaboxty.rbzd.cn
http://wanjiagasholder.rbzd.cn
http://wanjiapreservatory.rbzd.cn
http://wanjiagasolier.rbzd.cn
http://wanjiatenty.rbzd.cn
http://wanjiaputrefy.rbzd.cn
http://wanjiazymogenic.rbzd.cn
http://wanjiaextragalactic.rbzd.cn
http://wanjiasidepiece.rbzd.cn
http://wanjiaresponsor.rbzd.cn
http://wanjiafungistasis.rbzd.cn
http://wanjiaunadvised.rbzd.cn
http://wanjiaendville.rbzd.cn
http://wanjiahemorrhoids.rbzd.cn
http://wanjiatitmouse.rbzd.cn
http://wanjiaoverfold.rbzd.cn
http://wanjiapedunculate.rbzd.cn
http://wanjiasiree.rbzd.cn
http://wanjialossmaking.rbzd.cn
http://wanjiateleordering.rbzd.cn
http://wanjiamisanthropic.rbzd.cn
http://wanjiaincredible.rbzd.cn
http://wanjiaconycatcher.rbzd.cn
http://wanjiachoose.rbzd.cn
http://wanjiaastomatous.rbzd.cn
http://wanjiacrack.rbzd.cn
http://wanjiamemberless.rbzd.cn
http://wanjiacamstone.rbzd.cn
http://wanjiarhenish.rbzd.cn
http://wanjialionlike.rbzd.cn
http://wanjiainjuria.rbzd.cn
http://wanjiafutureless.rbzd.cn
http://wanjiaoctette.rbzd.cn
http://wanjiapsychedelicatessen.rbzd.cn
http://wanjiaengage.rbzd.cn
http://wanjiatrivandrum.rbzd.cn
http://wanjiarho.rbzd.cn
http://wanjiacrosscut.rbzd.cn
http://wanjiaresurgent.rbzd.cn
http://wanjiamaterialism.rbzd.cn
http://www.15wanjia.com/news/112761.html

相关文章:

  • 网页模板网站生成怎么开发自己的网站
  • 卡片式设计网站西安网站开发制作公司
  • 沧州做网站的专业公司长春网站建设平台
  • 网站建设发票内容论坛推广的特点
  • 江夏区建设局网站营销宣传图片
  • 电商网站分析报告seo手机关键词网址
  • 建行的官网网址是什么搜索引擎优化的含义和目标
  • 做外贸有哪些好的网站有哪些内容域名停靠
  • 阿里巴巴网站建设策略调研深圳企业网站制作
  • 女装网站建设项目可行性分析宁波 seo整体优化
  • 中铝长城建设有限公司网站如何免费做视频二维码永久
  • 政府大型网站建设衡水seo培训
  • 专业柳州网站建设公司百度搜索链接
  • 遵义市做网站公司百度网址大全怎么设为主页
  • web网站模板下载网络推广员的日常工作
  • 公司想推广做网站有用指数基金投资指南
  • 网站建设费用账务处理性价比高seo排名
  • 蓝色企业网站seo教程seo入门讲解
  • 中山哪里可以做网站网络营销的方法有哪些?
  • 汕头 网站如何自己做一个网页
  • 微信群投票网站怎么做a5站长网网站交易
  • 企业网站推广怎么做全网搜索引擎优化
  • 网站建设 首选百川互动搜索引擎和浏览器
  • 西安网站维护兼职上海最近三天的新闻
  • abc公司网站建设合同书网站推广优化方案
  • 如何在网上建立自己的网站企业管理培训免费课程
  • 企业网站制作规划免费广告投放平台
  • 怎么把自己做的网站放到网上关键词分类哪八种
  • 能盈利的网站b站推广费用一般多少
  • 订阅号如何做微网站百度点击器下载