springboot第36集:kafka,JSAPI支付,nginx,微服务Feign与flutter安卓App开发2

news2024/11/18 5:36:22

去思考自己的项目有哪些让你觉得不好的地方,然后去解决它,而非学习了一堆原理,展示技术能力比展示技术知识更有说服力

其实边解决问题边记录,是一个好习惯,不仅可以在解决问题的时候,方便回顾和查找,反而还能提高解决问题的效率,而且解决完后,还可以整理输出

flutter build apk

在Flutter中,您可以使用以下步骤来打包生成安卓应用程序(APK文件):

  1. 在终端中导航到您的Flutter项目的根目录。

  2. 运行以下命令以生成APK文件:

    flutter build apk

    这将会生成一个名为 app-release.apk 的APK文件,位于项目的 build/app/outputs/flutter-apk/ 目录下。

  3. 如果需要生成带有调试信息的APK文件,您可以运行以下命令:

    flutter build apk --debug

    这将生成一个名为 app-debug.apk 的APK文件,同样位于项目的 build/app/outputs/flutter-apk/ 目录下。

  4. 如果您想要为特定的构建模式和目标平台生成APK文件,可以使用以下命令:

    flutter build apk --target-platform android-arm64

    这将生成适用于 ARM64 架构的APK文件。您可以将 android-arm64 替换为其他支持的目标平台,如 android-arm, android-x86, android-x64 等。

  5. 如果您需要生成带有签名的发布版APK文件,您可以在 android/app 目录下创建一个 key.properties 文件,并在文件中配置密钥信息,然后运行以下命令:

    flutter build apk --release

    这将生成一个已签名的发布版APK文件。

请注意,生成APK文件前,请确保您的Flutter项目已连接到Android设备或模拟器,并且已经执行了必要的依赖安装。生成的APK文件可以在设备上安装和运行,也可以在Google Play等应用商店中发布。

Target aot_android_asset_bundle failed: IconTreeShakerException: Font subsetting failed with exit code -9. To disable icon tree shaking, pass --no-tree-shake-icons to the requested flutter build command FAILURE: Build failed with an exception.

这个错误是由于在构建发布版本的 Flutter 应用程序时,遇到了字体子集化失败的问题。字体子集化是将字体文件缩减为只包含应用实际使用的字符,以减小应用包的大小。但是,在某些情况下,这可能会引发问题。

要解决这个问题,您可以尝试以下几种方法:

  1. 禁用字体子集化(Font Subsetting) :根据错误提示,您可以尝试在构建命令中添加 --no-tree-shake-icons 参数来禁用图标树摇(Icon Tree Shaking)和字体子集化。例如:

    flutter build apk --release --no-tree-shake-icons

    这可能会解决由于字体子集化引发的问题。

  2. 检查字体文件:如果问题仍然存在,可能是某个字体文件本身有问题。您可以检查您的项目中使用的字体文件,尝试替换或移除可能有问题的字体文件,然后重新构建。

  3. 更新 Flutter 版本:有时,这种问题可能是 Flutter 版本中的某个 bug 导致的。尝试将 Flutter 更新到最新版本,以确保您使用了最新的修复和改进。

  4. 查看详细日志:运行构建命令时,可以添加 --verbose 参数来获取详细的日志输出,以便更好地理解问题的来源。例如:

    flutter build apk --release --no-tree-shake-icons --verbose
  5. 检查 Gradle 配置:如果问题仍然存在,您可能需要检查项目中的 Gradle 配置,确保没有冲突或错误的设置。

阿里云对象存储 OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供最高可达 99.995 % 的服务可用性。多种存储类型供选择,全面优化存储成本。

规格信息:基础版

可试用台数:1000台

可试用人群:实名认证,且为产品新用户。

适用场景:可以与阿里云物联网平台组合使用,也支持独立与客户的物联网系统集成使用。广泛适用于物联网终端,尤其涉及个人隐私数据的终端(如,智能门锁、摄像头)、金融支付类终端(如,POS、手表/手环、充电桩)、大众传媒类终端(如,广告屏、智慧屏),以及对上行业务数据、下行控制指令有强安全、合规监管要求的场景。

商品特点:端侧支持多种安全等级的载体、产线免烧录、轻量级的安全连接、国密算法(SM1/2/4)。

商品功能:端到端的安全防护、设备接入身份认证、安全连接、数据加密。

[IoT 设备身份认证]

物联网平台

物联网平台提供全托管的企业级实例服务,具有低成本、高可靠、高性能、高安全的优势,无需自建物联网基础设施即可接入各种主流协议设备,管理运维亿级规模设备,存储备份和处理分析EB量级的设备数据,帮助企业快速实现设备数据和应用数据的融合,实现设备智能化升级。

云消息队列 MQTT 版

云消息队列 MQTT 版是专为移动互联网(MI)、物联网(IoT)领域设计的消息产品,覆盖直播互动、金融支付、智能餐饮、即时聊天、移动 Apps、智能设备、车联网等多种应用场景;通过对 MQTT、WebSocket 等协议的全面支持,连接端和云之间的双向通信,实现 C2C、C2B、B2C 等业务场景之间的消息通信,可支撑千万级设备

根据你提供的配置,你已经在 JDBC URL 中添加了 serverTimezone=GMT%2B8 参数,这会将数据库连接的时区设置为 GMT+8,即北京时间。这是一种常见的解决方案,可以确保数据库中的日期时间数据使用正确的时区。这应该能够解决部署到服务器上时创建时间不正确的问题。

不过,要确保数据库服务器本身的时区设置也是正确的,以及在 Java 代码中正确处理日期时间,以避免任何潜在的时区问题。在 ruoyi 后端代码中,你可以继续使用 LocalDateTimeInstant 来表示日期时间,然后根据需要进行时区转换。

总结起来,正确的时区设置步骤包括:

  1. 在数据库连接配置中的 JDBC URL 添加 serverTimezone=GMT%2B8 参数,确保数据库连接的时区设置为 GMT+8(北京时间)。

  2. 确保数据库服务器本身的时区设置也正确,以防止数据库中的日期时间数据出现问题。

  3. 在 ruoyi 后端代码中正确处理日期时间,使用 LocalDateTimeInstant,并在需要时进行时区转换。

通过这些步骤,应该能够确保部署到服务器上时创建时间显示正确。如果问题仍然存在,请进一步检查配置并确保所有涉及的组件(数据库、服务器、代码)的时区设置都是一致的。

  1. 设置服务器时区: 确保服务器的时区设置正确。可以通过修改服务器的时区配置来解决这个问题。例如,如果你的服务器使用 Linux 操作系统,可以执行以下命令来设置时区:

    sudo timedatectl set-timezone <时区>

    例如,要将时区设置为北京时间,可以使用:

    sudo timedatectl set-timezone Asia/Shanghai

    请根据你的实际情况设置正确的时区。

  2. 数据库时区设置: 确保数据库的时区设置正确。数据库中的时间戳字段可能会受到数据库服务器时区的影响。你可以通过设置数据库服务器的时区来解决这个问题。

  3. Java 代码时区处理: 在 Java 代码中,特别是在 ruoyi 后端的代码中,确保正确处理日期和时间,避免因为时区问题造成日期时间显示不正确。在 ruoyi 后端的代码中,你可以使用 LocalDateTime 来表示本地日期时间,或者使用 Instant 来表示时刻,并根据需要进行时区转换。

例如,在创建实体对象时,可以使用类似以下的方式设置创建时间:

import java.time.LocalDateTime;

public class YourEntity {
    private LocalDateTime createTime;

    public void setCreateTime() {
        this.createTime = LocalDateTime.now(); // 使用服务器的当前时间
    }
}

确保在代码中正确处理时区转换,以避免因为时区问题造成时间显示不正确。

在移动设备的浏览器中,用户将会看到一个 "Download APK" 按钮,他们可以点击以下载 APK 文件。一旦下载完成,用户可以点击通知或在文件管理器中打开该文件来进行安装。

注意事项:

  1. 确保在服务器上设置了适当的 MIME 类型,以确保 APK 文件可以正确下载。

  2. 如果你希望用户在下载后立即安装,你可以在下载链接中添加 target="_blank" 属性,以在新标签页中打开下载链接。

请注意,上述方法是一种基本的下载 APK 文件的方式。如果你的应用需要更高级的分发和管理方式,你可能需要考虑使用应用商店、第三方分发平台或企业内部分发方法。

SpringCloud 集成 Feign 调用

6d1f5cf5f8075177757f74d28a546903.png
image.png
011aab1d0f0373ab60dd2d6ff6d10ead.png
image.png
a24d35c2d89eaa2ec9b9d73860bfb186.png
image.png
66678b7f2ec58630df1409c15255e5d4.png
image.png
ad67787e71220fdf679e1af897bb4dee.png
image.png
b98dd5ba1be3455e3e4b096478e6c3ea.png
image.png
09cc6a0f470b9b69ca34e536cda67853.png
image.png
9ab90816cd19090d8e183be8455849bb.png
image.png

https://www.emqx.io/zh/downloads?os=macOS

MacBook-Pro bin % ./emqx start

stat: %R: bad format

WARNING: Default (insecure) Erlang cookie is in use.

WARNING: Configure node.cookie in /Users/jeskson/Downloads/emqx-5.1.4-macos12-amd64/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE

WARNING: NOTE: Use the same cookie for all nodes in the cluster.

EMQX 5.1.4 is started successfully!

安装包类型

**

1

下载 emqx-5.1.4-macos12-amd64.zipSHA256

wget https://www.emqx.com/zh/downloads/broker/5.1.4/emqx-5.1.4-macos12-amd64.zip

2

安装 EMQX

mkdir -p emqx && unzip emqx-5.1.4-macos12-amd64.zip -d emqx

3

启动 EMQX

./emqx/bin/emqx start

MacBook-Pro bin % ./emqx_ctl status

stat: %R: bad format

Node 'emqx@127.0.0.1' 5.1.4 is started

下载 EMQX

http://127.0.0.1:18083/#/login?to=/dashboard/overview

bin % ./emqx_ctl broker

stat: %R: bad format

sysdescr  : EMQX

version   : 5.1.4

datetime  : 2023-08-14T09:41:56.465827955+08:00

uptime    : 6 minutes, 9 seconds

从 https://www.emqx.io/cn/mqtt/public-mqtt5-broker下载MQTT Broker。

https://softblade.de/download/

测试工具:MQTT.fx。可到官网 http://mqttfx.jensd.de/index.php/download下载对应版本。

阿里云准备

  • 阿里云账号

  • 开通物联网平台创建一个公共实例

  • 创建产品

  • 添加设备

此时设备未激活。需要在物理设备上运行一次三元组,上线后即可激活。

设备证书中"ProductKey",“DeviceName”, "DeviceSecret"三个是重要信息。

  • 产品 -> 自定义topic

MQTTX 是 EMQ 开源的跨平台 MQTT 5.0 客户端工具,可在 macOS、Linux 和 Windows 上运行,并支持格式化 MQTT Payload。

MQTTX 通过熟悉的、类似聊天的方式简化测试操作界面。轻松快速地创建多个同时在线的 MQTT 客户端连接,并可以测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接、发布和订阅功能以及其他 MQTT 协议功能。

MQTT 代表 MQ遥测传输。它是一种发布/订阅、极其简单且轻量级的消息传递协议,专为受限设备和低带宽、高延迟或不可靠的网络而设计。

要在本地运行 MQTT Broker,建议使用 EMQX:用于 IoT 的开源、云原生、分布式 MQTT Broker。

c415f3987c321e75f67aa33d94f43a5d.png
image.png

支持 MQTT v3.1.1 以及 MQTT v5.0

  • **支持 Windows,macOS,Linux

  • **支持 WebSocket 连接至 MQTT 服务器

  • **单/双向 SSL 认证

  • **自定义脚本模拟测试数据

  • **支持简体中文,英文,日文以及土耳其文

  • **支持 Hex, Base64, JSON, Plaintext

vertx.x mqtt mqtt  org.eclipse.paho.client.mqttv3

d80be1fcf5b901d1d0096d4ffeb71f64.png
image.png
ad804a2f959ef355090a3299e2646d34.png
image.png
1a1bca87a767810e39113213e7447cd8.png
image.png
88cc87ed1e25ab2976bcc40de66b75d4.png
image.png
9617c9d73b8d5ca74c3211fc3e056580.png
image.png

云消息队列 Kafka 版是阿里云基于 Apache Kafka 构建的高吞吐量、高可扩展性的分布式消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等场景,是大数据生态中不可或缺的产品之一,阿里云提供全托管服务,用户无需部署运维,更专业、更可靠、更安全。

2839a1d3200803966b6a3be3c53fc60b.png
image.png
7c614498601617af5ec202a36cba9764.png
image.png
0716def84a0be58f0fe58162953b2ba3.png
image.png

阿里云对象存储 OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供最高可达 99.995 % 的服务可用性。多种存储类型供选择,全面优化存储成本。

c11a9658165c956e513574fc411ff11b.png
image.png
02da5305e78515c5c7b3e099638437db.png
image.png

https://help.aliyun.com/zh/oss/

负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。

公众号接入支付后,可以通过JSAPI支付产品来完成在公众号、朋友圈、聊天窗口等微信内的收款需求。

提交资料

在线提交营业执照、身份证、银行账户等基本信息,并按指引完成账户验证

签署协议

微信支付团队会在1-2个工作日内完成审核,审核通过后请在线签约,即可体验各项产品能力

绑定场景

如需自行开发完成收款,需将商户号与APPID进行绑定,或开通微信收款商业版(免开发)完成收款

接入微信支付

接入微信支付

decd6964deb43b7ee16e9cb4f0449b73.png
image.png

输入API密钥,内容为32位字符,包括数字及大小写字母。点击获取短信验证码。

c04497340d7602f1bc16d7a88d951efa.png
  • b8f97e6fc436974679a7dea0ff7dec25.png

  • 输入短信验证码,点击“确认”即设置成功。

商户后台系统先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。注意:code_url有效期为2小时,过期后扫码不能再发起支付。

dfe07cda8a30c45c3205abca07d52bcd.png
image.png

统一下单

应用场景

除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按Native、JSAPI、APP等不同场景生成交易串调起支付。

状态机

支付状态转变如下:

接口链接

是否需要证书

安全规范

微信支付接口签名校验工具

常见问题:

2、设置生效时间:一般为立刻生效,少数情况下会延迟几分钟,如长时间错误,可重复设置几次

3、密钥设置是影响此商户号下所有接口的,请谨慎设置。如怀疑密钥错误,又担心影响其他接口,可以尝试设置与原先设置的一样的密钥

e549d83d038b6d1e611199f203965a7b.png
image.png

普通商户接入

如需自行开发完成收款,需将商户号与APPID进行绑定,或开通微信收款商业版(免开发)完成收款

wx.requestPayment({
  // 时间戳
  timeStamp: '',
  // 随机字符串
  nonceStr: '',
  // 统一下单接口返回的 prepay_id 参数值
  package: '',
  // 签名类型
  signType: '',
  // 签名
  paySign: '',
  // 调用成功回调
  success () {},
  // 失败回调
  fail () {},
  // 接口调用结束回调
  complete () {}
})

具体的做法:

  • 打开某小程序,点击直接下单

  • wx.login获取用户临时登录凭证code,发送到后端服务器换取openId

  • 在下单时,小程序需要将购买的商品Id,商品数量,以及用户的openId传送到服务器

  • 服务器在接收到商品Id、商品数量、openId后,生成服务期订单数据,同时经过一定的签名算法,向微信支付发送请求,获取预付单信息(prepay_id),同时将获取的数据再次进行相应规则的签名,向小程序端响应必要的信息

  • 小程序端在获取对应的参数后,调用wx.requestPayment()发起微信支付,唤醒支付工作台,进行支付

  • 接下来的一些列操作都是由用户来操作的包括了微信支付密码,指纹等验证,确认支付之后执行鉴权调起支付

  • 鉴权调起支付:在微信后台进行鉴权,微信后台直接返回给前端支付的结果,前端收到返回数据后对支付结果进行展示

  • 推送支付结果:微信后台在给前端返回支付的结果后,也会向后台也返回一个支付结果,后台通过这个支付结果来更新订单的状态

Java对象——PO,VO,DAO,BO,POJO

d97c9db00d928185c6bcb2d142a6e53b.png
image.png

什么是商户API证书?如何获取商户API证书?

https://kf.qq.com/faq/161222NneAJf161222U7fARv.html

JSAPI支付接入前准备

1,申请接入微信支付要花钱吗?

申请费用:无
交易服务费:根据商家经营类目判定,0.6%-1%不等
费率与结算周期说明:https://kf.qq.com/faq/140225MveaUz1501077rEfqI.html

2,我该去哪申请?

微信支付商户平台:

3,我们有APP、公众号、小程序等多个应用,需要申请几个商户号?

申请1个商户号即可,都关联同一个商户号。

4,需要写代码进行支付对接吗?

多数支付都需要商家有开发能力,进行代码研发;
也有无需开发的,比如微信收款商业版。

5,申请微信支付需要哪些企业信息?

一般需要营业执照、对公账号、法人证件等。

6,各种微信支付对接都涉及哪些平台网站?

微信商户平台(商户号):
微信公众平台(公众号、小程序):
企业微信平台:

二、【场景选择篇】

这需要根据你们的业务场景,申请接入对应的微信支付。
官方指引截图:

场景前提对接支付是否需开发文档地址
线下场所
付款码支付需要


JSAPI支付需要


微信收款商业版不需要
公众号已做微信认证;服务号、政府或媒体订阅号。JSAPI支付需要开发文档
小程序已做微信认证的小程序。小程序支付需要开发文档
PC网站网站域名已ICP备案。JSAPI支付需要开发文档


Native支付需要开发文档
APP微信开放平台创建APP,且平台已认证。APP支付需要开发文档
企业微信企业微信平台注册,且平台已认证。向员工发红包需要开发文档


向员工付款需要开发文档


向员工收款需要开发文档
手机网站(非微信环境)
H5支付需要开发文档

三、【业务流程篇】

简要业务实现逻辑描述。
大体流程:
商家系统:通过各种处理(预订单、二维码等),向用户展示收款页面;
用户:付款支付;
微信系统:异步通知商家服务器;
商家系统:处理用户付款后续。

以JSAPI支付为例,下图来自官方。

yum install -y ntp          #安装时间同步服务(组件)
ntpdate asia.pool.ntp.org   #设置同步服务器,asia.pool.ntp.org是台警大授时中心(台湾)
date                        #查看当前时间www

date修改时间

  • 查看当前时间
    date

修改时区
1.tzselect

查看服务器硬件时间

使用 sudo hwclock --show查看服务器硬件时间

sudo timedatectl set-local-rtc 0


https://kafka.apache.org/downloads


https://kafka.apache.org/downloads



版本:  
<dependency>  
<groupId>org.apache.[spark]()**</groupId>  
<artifactId>spark-streaming_2.12</artifactId>  
<version>3.2.1</version>  
</dependency> <dependency>  
<groupId>org.apache.spark</groupId>  
<artifactId>spark-core_2.12</artifactId>  
<version>3.2.1</version>  
</dependency>  
  
<dependency>  
<groupId>org.apache.spark</groupId>  
<artifactId>spark-sql_2.12</artifactId>  
<version>3.2.1</version>  
</dependency> <dependency>  
<groupId>org.apache.spark</groupId>  
<artifactId>spark-sql-kafka-0-10_2.12</artifactId>  
<version>3.2.1</version>  
</dependency>  
  
<dependency>  
<groupId>org.apache.spark</groupId>  
<artifactId>spark-streaming-kafka-0-10_2.12</artifactId>  
<version>3.2.1</version>  
</dependency>
  1. 将 RTC time 设置为与 Local time 一致:

    使用以下命令将 RTC time 设置为与 Local time 一致。请注意,您需要具有管理员权限才能执行这些命令。

    sudo timedatectl set-local-rtc 1

    这将告诉系统将 RTC time 视为本地时间。

  2. 同步 Universal time 和 Local time:

    您可以使用以下命令将 Universal time 设置为与 Local time 一致:

    sudo timedatectl set-timezone Asia/Shanghai

    上述命令将时区设置为 Asia/Shanghai,这是北京时间的时区。

  3. 重新启动服务器或同步时间:

    为了确保更改生效,您可以重新启动服务器,或者使用以下命令同步时间:

    sudo systemctl restart systemd-timesyncd

    或者,如果您的系统中使用 NTP 服务来同步时间,您可以执行:

    sudo systemctl restart ntp

请注意,命令可能因您的操作系统版本和配置而有所不同。在执行更改之前,务必做好备份,并确保您理解所做更改的影响。如果您对操作不确定,建议咨询您的系统管理员或技术支持人员。

Universal time: 修改

如果您想要修改服务器的 Universal time(UTC 时间),通常情况下需要修改系统的硬件时钟(RTC)。这通常需要管理员权限。以下是在 Linux 系统上修改 Universal time 的步骤:

  1. 停止 NTP 服务:

    在修改硬件时钟之前,您可能需要停止正在运行的 NTP(Network Time Protocol)服务,以防止与修改时钟冲突。

    bashCopy code
    sudo systemctl stop ntp
  2. 修改硬件时钟(RTC)时间:

    使用以下命令将硬件时钟(RTC)时间设置为所需的 Universal time。请注意,您需要将日期和时间替换为您希望设置的值。

    sudo date -s "2023-08-15 06:05:01"

    此命令将修改硬件时钟的时间为 2023 年 8 月 15 日 06:05:01。

  3. 同步系统时间:

    使用以下命令将系统时间与硬件时钟同步:

    sudo hwclock --systohc

    这会将系统时间设置为与硬件时钟一致。

  4. 启动 NTP 服务:

    如果您之前停止了 NTP 服务,请重新启动它以确保时间同步:

    sudo systemctl start ntp

请注意,这些命令可能会因您的操作系统版本和配置而有所不同。在修改时钟之前,请务必做好备份,并确保您理解所做更改的影响。如果您对操作不确定,建议咨询您的系统管理员或技术支持人员。

果在您的服务器上找不到 ntp.service 单元,可能是因为您的系统正在使用其他时间同步服务,例如 chronyd。在一些系统中,chronyd 替代了传统的 NTP 服务。

如果您想使用 chronyd 进行时间同步,以下是在 Linux 系统上设置和同步时间的步骤:

  1. 安装 chronyd(如果尚未安装):

    使用适用于您的 Linux 发行版的包管理工具安装 chronyd

    对于 CentOS/RHEL:

    sudo yum install chrony

    对于 Ubuntu/Debian:

    sudo apt-get install chrony
  2. 启动和配置 chronyd

    启动 chronyd 服务并设置它自动启动:

    sudo systemctl start chronyd
    sudo systemctl enable chronyd
  3. 修改时间设置:

    使用以下命令将系统时间和硬件时钟设置为所需的 Universal time。请将日期和时间替换为您希望设置的值。

    sudo chronyd -q 'server 0.pool.ntp.org iburst'
    sudo chronyd -a makestep

    这将同步系统时间并设置硬件时钟。

  4. 查看时间同步状态:

    使用以下命令检查时间同步状态:

    chronyc tracking

    这将显示有关时间同步的信息。

请注意,以上步骤适用于使用 chronyd 的系统。如果您的系统使用其他时间同步工具,请根据该工具的文档进行操作。无论如何,在修改服务器时间之前,请务必做好备份并确保您了解所做更改的影响。

要设置服务器的时间,您需要具有管理员权限。以下是在 Linux 系统上设置时间的步骤:

  1. 使用 date 命令设置时间:

    打开终端窗口,并使用以下命令将服务器的时间设置为所需的 Universal time。请将日期和时间替换为您希望设置的值。

    sudo date -u --set "2023-08-16 01:52:38"

    -u 参数表示使用 Universal time。

  2. 同步硬件时钟:

    设置系统时间后,还需要将硬件时钟同步以匹配设置的时间。使用以下命令将系统时间写入硬件时钟:

    sudo hwclock --systohc --utc

    --systohc 表示从系统时钟同步到硬件时钟,--utc 表示使用 Universal time。

    检查时间设置:

    使用以下命令检查服务器的时间设置:

    date

    这将显示当前系统时间。

这个主要是UTC时间问题 UTC:世界标准时间,中国标准时间是东八区的,比它晚整整8个小时。

mysql数据库创建后。默认的时区比东八区少了八个小时。如果sql语句中使用到mysql的时间的话就会比正常时间少了八个小时。所以需要修改mysql的系统时区。 set global time_zone = '+8:00';设置时区更改为东八区 flush privileges; 刷新权限

或者在配置文件中加入:

spring.jackson.time-zone=GMT+8

image.png

timedatectl set-local-rtc 0

show variables like "%time_zone%";

flush privileges; #立即生效

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

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

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

相关文章

使用webpack-bundle-analyzer分析uni-app 的微信小程序包大小(HbuilderX运行)

1、找到vue.config.js 文件。如果找不到&#xff0c;则在项目根目录下&#xff08;跟pages.json同一个目录下&#xff09;创建一个JS文件&#xff0c;命名为vue.config.js 2、安装webpack-bundle-analyzer&#xff0c;官方网站&#xff1a;https://github.com/webpack-contrib…

中国汽车工业协会软件分会中国汽车基础软件生态标委会第三届二次会议在天津顺利召开

2023年8月30日&#xff0c;中国汽车工业协会软件分会中国汽车基础软件生态标委会&#xff08;AUTOSEMO&#xff09;第三届二次会议在天津召开。出席本次会议的有AUTOSEMO专业指导主任许艳华、中国汽车工业协会软件分会理事长、AUTOSEMO轮值主席、中汽创智CEO李丰军、经纬恒润协…

ChatGPT AIGC总结Excel中Vlookup,lookup,xlookup的区别

在Excel的使用过程中,查找函数是非常重要的,如Vlookup,lookup,Xlookup,index+match等都是使用的最多的函数,我们让ChatGPT,AIGC用思维导图来总结一下,各查找函数的用法与区别。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle…

[网鼎杯 2020 朱雀组]phpweb call_user_func()

时间一跳一跳的 抓个包 很奇怪 结合上面的 date() 认为第一个是函数 我们随便输一个看看 发现过滤了 随便输一个 linux指令 发现报错了 call_user_func() 看看是啥 很容易理解 第一个参数是函数名 后面是 参数 那么这里就是 func 函数 p 数值 所以我们看看有什么办法可以…

毕业设计-基于微信小程序的智能垃圾分类回收系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址&#xff1a; 基于微信小程序的智能垃圾分类回收系统&#xff0c;可作为毕业设计 小…

易优cms小程序插件升级到2.1版本

eyou小程序升级到2.1&#xff0c;主要新增一键获取手机号&#xff0c;统一返回格式等 升级内容&#xff1a; &#xff08;1&#xff09;对全部接口的返回格式做统一化设置 &#xff08;2&#xff09;新增一键获取手机号功能 &#xff08;3&#xff09;新增footprint足迹接口 &…

Win10 屏蔽键盘按键

有时候键盘进水一直触发或者经常误触某个按键&#xff0c;非常影响体验&#xff0c;Win10是支持直接屏蔽按键的 创建注册表 WinR 快捷键输入regedit 打开注册表进入到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout空白处右击新建一个二进制值名为Scan…

机器人制作开源方案 | 桌面级全向底盘--机器视觉

机器视觉是人工智能正在快速发展的一个分支&#xff0c;简单说来机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品&#xff08;即图像摄取装置&#xff0c;分CMOS和CCD两种&#xff09;将被摄取目标转换成图像信号&#xff0c;传送给专用的图像处理系…

刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭

SpaceX一直都致力于推进航天领域的发展。近日&#xff0c;该公司的猎鹰9号火箭再次刷新了单年发射纪录&#xff0c;目前已经成功发射了62次。除此之外&#xff0c;今年SpaceX还发射了一枚猎鹰火箭和一枚巨型火箭。马斯克表示&#xff0c;他的目标是实现每月10次猎鹰飞行&#x…

1800亿参数,支持中文,3.5万亿训练数据!开源类ChatGPT模型

这个必须推荐一下&#xff1a;1800亿参数&#xff0c;支持中文&#xff0c;3.5万亿训练数据&#xff01;开源类ChatGPT模型 阿联酋阿布扎比技术创新研究所&#xff08;Technology Innovation Institute&#xff0c;简称TII&#xff09;在官网发布了&#xff0c;目前性能最强的…

探索Redis速度之谜

Redis&#xff0c;作为一款高性能的内存数据库&#xff0c;一直以来都因其出色的速度而闻名。然而&#xff0c;Redis的速度之快究竟源自何处&#xff0c;其中隐藏着怎样的奥秘&#xff1f;在这篇博客中&#xff0c;我们将深入探索Redis速度之谜&#xff0c;揭开其快速性能背后的…

MySQL事务详细讲解

文章目录 什么是事务:1.事务有哪些特性2.并发事务会引起什么问题3.事务的隔离级别有哪些4.Read View在MVCC中如何工作Read View 有四个重要的字段使用 InnoDB 存储引擎的数据库表&#xff0c;它的聚簇索引记录中都包含下面两个隐藏列&#xff1a; 5.可重复读是怎么工作的6.读提…

基于模板快速开发

大家好 , 我是苏麟 , 今天说说如何快速开发 . 首先 , 我们要有一套基础模板 . 例如(整合了) : SpirngBoot SpringMVCMybatisMybatisPlusMySQLRedisSwaggerlombok 根据自己的业务场景整合相应的依赖. 第一步: 把初始化模板复制一份 第二步: 把模板改成项目名 第三步: 在IDEA中…

教你!如何使用Postman做接口测试

界面功能介绍 基础操作步骤&#xff1a; 新建请求集是否需要进行授权&#xff0c;如需要授权码&#xff0c;提前授权&#xff0c;避免接下来的每个接口授权编写请求脚本请求脚本&#xff0c;进行断言判断导出测试结果 postman断言语句 判断接口响应的状态码&#xff1a;Statu…

最后一块石头的重量 II【动态规划】

最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&am…

只有个体户执照,可以用来在抖音开店吗?抖店开通问题解答

我是王路飞。 在抖音开店的门槛&#xff0c;本身就是需要有营业执照的。 至于执照的类型&#xff0c;其实主要看商家自己。 如果你是新手商家&#xff0c;之前也没有怎么接触过电商行业&#xff0c;那么用个体执照在抖音开店足够用了&#xff0c;毕竟你要先入门&#xff0c;…

石器时代H5之恐龙宝贝游戏详细图文架设教程

前言 想体验卡通风格的休闲挂机回合制游戏吗&#xff1f;想体验满级VIP的尊贵吗&#xff1f;想体验榜一大佬的无敌寂寞吗&#xff1f;各种极品炫酷时装、坐骑、翅膀、宠物通通给你&#xff0c;就在石器时代 H5 之恐龙宝贝&#xff01; 本文讲解石器时代 H5 之恐龙宝贝架设教程…

iPhone苹果手机来电收到消息闪光灯闪烁通知提醒功能怎么开启?

iPhone苹果手机来电收到消息闪光灯闪烁通知提醒功能怎么开启&#xff1f; 1、打开iPhone苹果手机上的「设置」&#xff1b; 2、在苹果iPhone手机设置内找到并点击打开「辅助功能」&#xff1b; 3、在苹果iPhone手机辅助功能内找到并点击打开「音频/视觉」&#xff1b; 4、在苹…

九月份跳槽了,历经字节测开岗4轮面试,不出意外,还是被刷了....

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前几天&#xff0c;我看到有朋友留言说&#xff0c;他在面试字节的测试开发工程师的时候&#xff0c;灵魂拷问三小…

华为交换机:STP的详解和试验

前言 为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链…