springboot第61集:Jenkins-Boss万字挑战,一文让你走出微服务迷雾架构周刊

名词 CONTAINER ID(容器ID)
名词 IMAGE ID(镜像ID)cat /etc/os-release //查看系统信息
pwd //查看当前路径
ls //查看当前目录文件
docker -v //查看docker版本
docker-compose up -d //在后台运行(取消-d是在控制台运行)
docker-compose stop //所有容器停止运行
docker ps -a //查看正在运行的容器
docker images //查看安装的镜像
docker stop [CONTAINER ID] //停掉运行的容器
docker rm [CONTAINER ID] //删除运行的容器
systemctl status docker  //查看docker状态
systemctl stop docker    //停止docker
systemctl start docker    //启动docker
systemctl restart docker    //重启docker

Docker + Jenkins + Nginx 实战前端自动化部署

cfdbd5da9bf44851c2487f134a43f5d5.png
image.png
version: '3.8'
# 执行脚本;docker-compose -f docker-compose-v1.0.yml up -d
services:jenkins:image: jenkins/jenkins:2.439container_name: jenkinsprivileged: trueuser: rootports:- "9090:8080"- "50001:50000"volumes:- ./jenkins_home:/var/jenkins_home # 如果不配置到云服务器路径下,则可以配置 jenkins_home 会创建一个数据卷使用- /var/run/docker.sock:/var/run/docker.sock- /usr/bin/docker:/usr/local/bin/docker- ./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml # 这里只提供了 maven 的 settings.xml 主要用于修改 maven 的镜像地址- ./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202 # 提供了 jdk1.8,如果你需要其他版本也可以配置使用。environment:- JAVA_OPTS=-Djenkins.install.runSetupWizard=false # 禁止安装向导「如果需要密码则不要配置」docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPasswordrestart: unless-stoppedvolumes:jenkins_home:

Jenkins-Mac

a49e70cc1ab3803b91b5c1f03e0763a5.png
image.png
1、安装jenkinsbrew install jenkins2、链接launchd配置文件ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgentsln -sfv /usr/local/opt/jenkins-lts/*.plist ~/Library/LaunchAgents3、启动jenkinslaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plistlaunchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist4、停止jenkinslaunchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plistlaunchctl unload ~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist访问:http://localhost:8080 
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
8c7f3bf081da2724ca7e76330edf8756.png
image.png
e8752c936c915a00bcd1889374f7c184.png
image.png
8e29649f2615186a7e2c4c3dd17c4966.png
image.png
3ba45c5f1650be66a78c4bcf881e333e.png
image.png
9affcda96b02770a3d91a67b4136438a.png
image.png
b1a9f85d34e24961f31bd441f46bdcbc.png
image.png
8d4f141317fc7cb22c24924932b5970e.png
image.png
3befd68de51ff74390c442c5394f5510.png
image.png
tar -xvzf jdk-8u281-linux-x64.tar.gz
vi /etc/profile.d/java8.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_281
export JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
source /etc/profile
java -versiontar -xvzf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 maven3
vi /etc/profileMAVEN_HOME=/usr/local/tools/maven3 
export MAVEN_HOME 
export PATH=${PATH}:${MAVEN_HOME}/binsource /etc/profile 
mvn -version
  • 添加访问凭据:点击添加,添加访问认证(我是用的UserName+Password模式也可以选择其他方式)

866a885bde75ebd59c00d09449dcc3cc.png
image.png
41089ea10115db4d5f11c99e0da3c538.png
image.png
  • 源码管理:选择Git填写仓库地址,并添加访问账号和密码或者秘钥

b91902a8ee25f6e960588b6a21a1ff3d.png
image.png
caa325f412934d846d5926f64f538b11.png
image.png
2e5552fc66ff359f99ea0d77ac0186da.png
image.png
3b73327e0d36b501199993973f3c6574.png
image.png
1ea83819dd88fcc29ccb0ebb68d12d56.png
image.png
7328d7ef10946e588829339b50bb983b.png
image.png
a8cb6fc3ff3f90cd9576aa62a97f38f3.png
image.png
1d29c2e903f6bc70e5009a4cebbb67fa.png
image.png

Jenkins是开源CI&CD软件领导者,是Devops神器

安装Jenkins->编写pipeline脚本->编写Dockerfile脚本。

FROM openjdk:8-jdk-alpineMAINTAINER liunewshine@qq.comENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && mkdir -p /esmsWORKDIR /esmsEXPOSE 8090ADD ./target/esms.jar ./CMD java -Djava.security.egd=file:/dev/./urandom -jar esms.jar
18dbccecda5df8024c0240995553afba.png
image.png
docker run -u root -itd --name jenkins -p 6001:8080 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /volume1/docker/jenkins:/var/jenkins_home jenkins/jenkins

docker pull jenkins/jenkins

  • docker-ce 18.09.1(务必使用docker-ce,老版本的docker会导致Jenkins中无法使用docker daemon)

流水线+docker,流水线可以让项目发布流程更加清晰,docker可以大大减少Jenkins配置。

尽量减少Jenkins的配置和发布脚本的书写。

CPU使用率、内存使用率和磁盘使用率的提高通常与系统中发生的特定操作和情况相关。以下是一些常见情况和操作,可能会导致这些资源的使用率增加:

  1. CPU使用率增加

  • 运行计算密集型任务:例如,执行大量数学计算、加密解密操作或图像处理。

  • 运行多个并发应用程序:同时运行多个应用程序或服务,尤其是需要大量计算资源的应用程序,可能会导致CPU使用率增加。

  • 资源竞争:如果系统上运行了多个高优先级的任务或进程,它们可能会竞争CPU资源,导致CPU使用率上升。

内存使用率增加

  • 运行内存密集型应用程序:例如,大型数据库、缓存服务或虚拟机。

  • 创建大型数据结构:例如,加载大型文件或数据集到内存中。

  • 内存泄漏:如果应用程序存在内存泄漏问题,内存使用率可能会持续增加,直到系统耗尽可用内存。

磁盘使用率增加

  • 写入大量数据:例如,进行大规模的日志记录、数据库写入操作或文件传输。

  • 读取大量数据:例如,从磁盘加载大型文件或执行大型数据库查询。

  • 运行IO密集型应用程序:例如,视频编码、解码或批量文件处理。

  • 文件系统碎片化:如果文件系统碎片化严重,可能会导致文件读取和写入操作变慢,进而导致磁盘使用率增加。

  • 查看某个端口是否开放:netstat -lnt | grep 80

  • 查看nginx配置是否正确:nginx -t

  • 查看nginx是否正常启动:ps -ef | grep nginx

  • 查看防火墙状态: systemctl status firewalld

  • 启动防火墙: systemctl start firewalld

  • 停止防火墙: systemctl stop firewalld

  • 永久停用: systemctl disable firewalld

  • 启用防火墙: systemctl enable firewalld

  • 查看某个端口占用情况:netstat –apn | grep 8080

  • 升级版本内核:yum update -y

docker run -p 3306:3306 --restart=always -e TZ="Asia/Shanghai" \
--name mymysql -v /usr/local/gourd/docker/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/gourd/docker/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7docker run -p 8080:8080 --name gourdtomcat \
--restart=always -e TZ="Asia/Shanghai" \
-v /docker/tomcat/test:/usr/local/tomcat/webapps/test -d tomcatdocker run -p 6379:6379 --restart=always -e TZ="Asia/Shanghai" \-v /usr/local/gourd/docker/redis/data:/data \-v /usr/local/gourd/docker/redis/conf/redis.conf:/etc/redis/redis.conf \--name myredis -d redis redis-server --appendonly yesdocker run --name gourdnginx -p 80:80 \--restart=always -e TZ="Asia/Shanghai" -d \-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \-v $PWD/logs:/var/log/nginx nginx
// 查看运行中的容器
docker ps
// 查看所有的容器
docker ps -a
// 搜索镜像
docker search keyword
// 例:docker search mysql
// 查看下载的镜像
docker iamges
// 启动容器
docker start [容器名/容器ID]
// 停止容器
docker stop/kill [容器名/容器ID]
// 重启容器
docker restart [容器名/容器ID]
// 删除已停止的容器
docker rm [容器名/容器ID]
// 强制删除容器
docker rm -f [容器名/容器ID]
// 删除镜像
docker rmi 镜像id
// 查看容器日志
docker logs [容器名/容器ID]
// 查看容器运行状态信息
docker stats
// 获取容器/镜像的元数据
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
// 查看容器中运行的进程信息,支持 ps 命令参数
docker top [OPTIONS] CONTAINER [ps OPTIONS]
// 将宿主机目录拷贝到容器目录
docker cp [path1] [容器ID]:[path2]
// 将容器目录拷贝到宿主机目录
docker cp [容器ID]:[path2] [path1]
  1. Web 应用程序,如 Nginx、Apache、Node.js、Tomcat 等。

  2. 数据库,如 MySQL、PostgreSQL、MongoDB 等。

  3. 消息队列,如 RabbitMQ、Kafka 等。

  4. 缓存,如 Redis、Memcached 等。

  5. 日志管理,如 ELK(Elasticsearch、Logstash、Kibana) 等。

  6. 容器管理,如 Kubernetes、Docker Compose 等。

docker search postgres
docker pull postgres
docker images[root@localhost ~]$ cd /data/
[root@localhost data]$ mkdir postgres
[root@localhost postgres]$ pwd
/data/postgresdocker run --name postgresql --privileged -e POSTGRES_PASSWORD=password -p 15433:5432 -v /data/postgres:/var/lib/postgresql/data -d postgresdocker ps -adocker pull postgres
docker volume create postgre-data
docker run -id --name=postgresql -v postgre-data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_PASSWORD=123456 -e LANG=C.UTF-8 postgres
1 搜索镜像 docker search <镜像名称>
2 下载镜像 docker pull <镜像名称>:<标签>
3 运行容器 docker run <选项> <镜像名称>:<标签>
4 配置容器 docker exec <容器名称> <命令>
5 保存容器 docker commit <容器名称> <新镜像名称>:<标签>
6 导出容器 docker save -o <文件名称> <镜像名称>:<标签>
7 导入容器 docker load -i <文件名称>
405e71bab4ca1f8f9171f9249e30b8e6.png
image.png

Navicat for PostgreSQL 是一个简单易用的 PostgreSQL 数据库开发图形工具。从编写简单的 SQL 查询到开发复杂的数据库,Navicat for PostgreSQL 旨在满足广泛的用户需求,从 PostgreSQL 初学者到经验丰富的开发人员。连接到本地/远程 PostgreSQL 服务器,并与 Amazon Redshift、Amazon Aurora、Amazon RDS、Google Cloud 和 Microsoft Azure 等云数据库以及所有 PostgreSQL 数据库对象兼容。

1de207155f3b846dc1e3f178697cbd84.png
image.png
  1. Apache Bench (ab) :Apache Bench是一个简单而强大的HTTP性能测试工具,它通常随着Apache Web服务器一起提供。您可以使用Homebrew来安装它:brew install ab

  2. Wrk:Wrk是一个现代的HTTP性能测试工具,具有线程化设计和支持Lua脚本等特性。您可以使用Homebrew来安装它:brew install wrk

  3. Siege:Siege是另一个流行的HTTP性能测试工具,具有简单易用的特性。您可以使用Homebrew来安装它:brew install siege

  4. Vegeta:Vegeta是一个命令行工具,用于基于HTTP进行负载测试和性能分析。您可以使用Homebrew来安装它:brew install vegeta

  5. JMeter:Apache JMeter是一个功能强大的Java应用程序,用于执行各种负载测试和性能测量,不仅限于HTTP。您可以从官方网站下载并手动安装它:Apache JMeter。

创建MQTT pub Sampler录入要发送MQTT的topic,如果需要发送不同数据,可以创建一个CVS,从表里获取数据。这时候在Pub sampler 里就需要使用${}来获取数据,字符串要加“”。

如果要模拟多个设备,那就创建多个线程组即可。如果想要测试MQTT服务能承受多大的并发, 可以根据需要设置线程数和间隔时间,不过这个数量如果特别大的话,并发量会不精准,但总体上还是可以达到我们的测试目的。

21b6392293b5c93d75b40fbc3b3d6cbc.png
image.png
23b3376d42d39f38aa8f5581e62de431.png
image.png
  • 最好设置一个定时器,控制发送的频率。比如设置10毫秒一次,相当于1个线程1秒发送100次数据

6719f30c9e8bf4750a89a9a2ecfc0a32.png
image.png

注意超时时间,这里默认的是10毫秒,如果MQTT服务不稳定,可能会出现偶尔连不上的问题,建议1000毫秒

8059acea756955e05a28c82bbfaca786.png
image.png
943b7fb202d465123a7950f673d8bb7b.png
image.png
8852012ed313e682f890b696ff8f4f47.png
image.png
public enum ServiceError {NORMAL(1, "操作成功"),UN_KNOW_ERROR(-1, "未知错误"),/** Global Error */GLOBAL_ERR_NO_SIGN_IN(-10001,"未登录或登录过期/Not sign in"),GLOBAL_ERR_NO_CODE(-10002,"code错误/error code"),GLOBAL_ERR_NO_AUTHORITY(-10003, "没有操作权限/No operating rights"),;private int code;private String msg;private ServiceError(int code, String msg){this.code=code;this.msg=msg;}public int getCode() {return code;}public String getMsg() {return msg;}
}

springboot 启动类

jar启动请忽略,war启动请继承 SpringBootServletInitializer

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;@SpringBootApplication
public class SecurityApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(SecurityApplication.class, args);}// war启动请实现该方法@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(SecurityApplication.class);}
}
b7fba5f26d582d8b444f0210477a892b.png
image.png
013e69d21e289f698756204450a6f92b.png
image.png
702e451f0c004e033c86e390e7a22d47.png
image.png
c58368e24ff093413fc36a4a37fa866b.png
image.png
79683c4e72cdea4e69c81120052581d2.png
image.png
afb686b12ef8ccb7a1abe31bb4ac5664.png
image.png
aaab2799d9476ef9c0c91e5a87639f32.png
image.png
326f2bcb4628d8773628249a2eddb5c4.png
image.png
093a9945a91ed5e5f0a0c20c778b6602.png
image.png
faf42bba3708e86eb6722e1e6adb7d4d.png
image.png
0735640289f0c7fe982cb52c94806c72.png
image.png

Docker Compose是一个用于定义和运行多个Docker容器的工具。它允许您使用YAML文件来配置应用程序的服务、网络和卷,并使用单个命令启动、停止和管理整个应用程序。通过Docker Compose,您可以在一个命令中启动包含多个容器的应用程序,而无需手动运行多个docker run命令。

Docker Compose的核心概念包括:

  1. 服务(Services) :指应用程序中的不同组件,每个服务通常对应一个容器。

  2. 项目(Project) :指由一组关联的服务组成的完整应用程序。

  3. YAML文件:用于定义项目结构、服务配置和依赖关系的文本文件,通常称为docker-compose.yml

使用Docker Compose,您可以轻松地在开发、测试和生产环境中部署和管理复杂的容器化应用程序。

全局参数

filter

监测数据项统一过滤,保留两位小数。

{{10.23123|montionFilter }}

扫码登录流程讲解、获取授权登录二维码

08b2da7d4fd2b43c4d40b43aa4c8af66.png
image.png

微信开放平台的方式应该是最舒服的微信扫码登陆了,但是前提需要交认证300元的认证费用,网站的话还需要提交《微信开放平台网站信息登记表》,也是审核最麻烦的方式,只好先pass啦

c6971f784a565b92d502039f8b305c86.png
开发者认证
eaec2bcab8dd5bebeabe9339ebdc09bd.png
网站审核
96fc3138a300f7a4b3df3cd321ebe50a.png
image.png

时序图总结流程:

1、用户点击网站微信登陆图标。

2、网站带上AppID和AppSecret和回调域名参数请求微信OAuth2.0授权登陆。

3、第二步通过后,微信返回二维码供用户扫码。

4、用户扫码确定授权。

5、微信带上code参数回调java后端相关接口。

6、java后端获取到code后,在带上带上AppID和AppSecret和code再去调微信接口。

7、获取access_token后就可以解析用户的一些基本信息,比如:微信用户头像、用户名、性别、城市等一些基本参数。

准备工作

网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者账号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。

授权流程说明

微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

第一步:请求CODE

第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。

831056940c1827d5b90eef14444b5ab1.png
image.png
0edff8ff81e55400ca08bfbc8c29a17e.png
image.png
1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

请求方法

获取第一步的code后,请求以下链接进行refresh_token:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
1、Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
2、access_token 为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token 后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
3、refresh_token 为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token 泄漏,风险同上;
4、如无特别业务需求,建议开发者自行管理业务登录态并合理设置过期时间,减少用户重新授权登录次数,优化用户体验。建议将secret、用户数据(如access_token)放在App云端服务器,由云端中转接口调用请求。

对于接口作用域(scope),能调用的接口有以下:

授权作用域(scope)接口接口说明
snsapi_base/sns/oauth2/access_token通过code换取access_token、refresh_token和已授权scope
snsapi_base/sns/oauth2/refresh_token刷新或续期access_token使用
snsapi_base/sns/auth检查access_token有效性
snsapi_userinfo/sns/userinfo获取用户个人信息
  1. 什么是授权临时票据(code)? 答:第三方通过code进行获取access_token的时候需要用到,code的超时时间为10分钟,一个code只能成功换取一次access_token即失效。code的临时性和一次保障了微信授权登录的安全性。第三方可通过使用https和state参数,进一步加强自身授权登录的安全性。

  2. 什么是授权作用域(scope)? 答:授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应scope的权限后,使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。

a8c47a8d221c760911842d06c6d27905.png
image.png
735e002637a72f7f660735341d25ce81.png
image.png
e006fd805352678cd4e7795cae284e0e.png
image.png
  1. 当认证完成之后,我们即可以创建网站应用

058f6bed1916039fef763a72e9aa626d.png
Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo-左眼会陪右眼哭の博客
b2c8ffd52e12c0d5e7ddb0ea199bd7e1.png
image.png

1、微信开放平台介绍(申请里面的网站应用需要企业资料) 微信开放平台网站:https://open.weixin.qq.com/

2、什么是appid、appsecret、授权码code appid和appsecret是 资源所有者向申请人分配的一个id和秘钥 code是授权凭证,A->B 发起授权,想获取授权用户信息,那a必须携带授权码,才可以向B获取授权信息 (你要从我这里拿东西出去,就必须带身份证)

3、先仔细阅读下微信开放平台 官方给出的微信登录开发指南: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

#    1、扫码支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=2_2
#    2、名称理解appid:公众号唯一标识appsecret:公众号的秘钥mch_id:商户号,申请微信支付的时候分配的key:支付交易过程生成签名的秘钥,设置路径 微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->密钥设置
#    3、和微信支付交互方式1、post方式提交2、xml格式的协议3、签名算法MD54、交互业务规则 先判断协议字段返回,再判断业务返回,最后判断交易状态5、接**易单位为 分6、交易类型:JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付

微信支付业务流程说明:

(1)商户后台系统根据用户选购的商品生成订单。

(2)用户确认支付后调用微信支付【统一下单API】生成预支付交易;

(3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url。

(4)商户后台系统根据返回的code_url生成二维码。

(5)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。

(6)微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。

(7)用户在微信客户端输入密码,确认支付后,微信客户端提交授权。

(8)微信支付系统根据用户授权完成支付交易。

(9)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。

(10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。

(11)未收到支付通知的情况,商户后台系统调用【查询订单API】。

(12)商户确认订单已支付后给用户发货。

加群联系作者vx:xiaoda0423

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

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

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

相关文章

linux系统Jenkins工具添加自由项目和maven项目

Jenkins添加自由项目 添加自由项目操作流程代码远程代码邮件标题邮件正文 添加maven项目准备环境操作流程 添加自由项目 gitlab配置基本代码页面等&#xff0c;拉取代码&#xff0c;打包&#xff0c;发布操作流程 代码 远程代码 echo ssh root192.168.188.177 "tar cz…

Java基础-java开发入门

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、什么是Java 二、Java语言的特点 三、什么是JDK 四、第一个Java程序 一、什么是Java Java是由Sun …

electron nsis 安装包 window下任务栏无法正常固定与取消固定

问题 win10系统下&#xff0c;程序任务栏在固定后取消固定&#xff0c;展示的程序内容异常。 排查 1.通过论坛查询&#xff0c;应该是与app的api setAppUserModelId 相关 https://github.com/electron/electron/issues/3303 2.electron-builder脚本 electron-builder…

二月打戏最燃的国漫推荐,斗罗大陆2上榜,吞噬星空堪称第一

2024年开年&#xff0c;国漫就给我们带来了很大的惊喜&#xff0c;在刚刚过去的2月&#xff0c;有几部中出现了超燃的打戏&#xff0c;看得人热血沸腾。尤其是科幻番《吞噬星空》中的一场1V1对决&#xff0c;特效和设计都堪称第一。还有哪些国漫上榜呢&#xff1f;下面就一起来…

TCP为什么要三次握手?

TCP三次握手协议是为了在不可靠的互联网环境中可靠地建立起一个连接&#xff0c;三次握手可以确保两端的发送和接收能力都是正常的。 那么&#xff0c;为什么是三次而不是二次或四次握手呢&#xff1f; 为什么不是二次握手&#xff1f; 如果是二次握手&#xff0c;即客户端发…

网络编程 io_uring

io_uring 1、概述 io_uring是Linux&#xff08;内核版本在5.1以后&#xff09;在2019年加入到内核中的一种新型的异步I/O模型&#xff1b; io_uring使用共享内存&#xff0c;解决高IOPS场景中的用户态和内核态的切换过程&#xff0c;减少系统调用&#xff1b;用户可以直接向…

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

Vmware esxi虚拟主机状态无效,无法注销重启等操作修复解决

问题 装有ESXI系统的服务器在强制关机启动后&#xff0c;显示虚拟机状态是无效的&#xff0c;并且无法进行任何操作。 解决办法 对出问题的虚拟机重新注册 1、开启esxi系统的ssh功能 2、取消注册出问题的虚拟机 找到问题的虚拟机 [rootlocalhost:~] vim-cmd vmsvc/getal…

烧脑问题解决办法:如何选择一款合适自己的手机流量卡

现在社会人们越来越离不开手机了&#xff0c;手机给我们生活带来了翻天覆地的变化&#xff0c;手机需要最多的就是流量了&#xff0c;所以选择一款合适自己的手机流量卡就显得尤为重要了&#xff0c;今天小编就给大家来分享一下我的经验&#xff0c;希望对大家能有帮助&#xf…

【Web安全靶场】sqli-labs-master 54-65 Challenges 与62关二分法和like模糊搜索

sqli-labs-master 54-65 Challenges 其他关卡和靶场见专栏… 文章目录 sqli-labs-master 54-65 Challenges第五十四关-联合注入第五十五关-联合注入第五十六关-联合注入第五十七关-联合注入第五十八关-报错注入第五十九关-报错注入第六十关-报错注入第六十一关-报错注入第六十…

Mysql与StarRocks语法上的不同

&#x1f413; 序言 StarRocks 是新一代极速全场景 MPP (Massively Parallel Processing) 数据库。StarRocks 的愿景是能够让用户的数据分析变得更加简单和敏捷。用户无需经过复杂的预处理&#xff0c;可以用StarRocks 来支持多种数据分析场景的极速分析。 &#x1f413; 语法…

嵌入式驱动学习第一周——linux的休眠与唤醒

前言 本文介绍进程的休眠与唤醒。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博主并订阅本专栏&#xff0c;一起讨论一起学习。现在关注就是老粉啦&#xff01; 行文目录 前言1. 阻塞和非阻…

第二节 数学知识补充

一、线性代数 向量的 L 2 L_2 L2​范数&#xff08;Euclidean范数/Frobenius范数&#xff09;&矩阵的元素形式范数 向量的 L 2 L_2 L2​范数&#xff1a; ∣ ∣ x ∣ ∣ 2 ( ∣ x 1 ∣ 2 ⋯ ∣ x m ∣ 2 ) 1 2 ||x||_2(|x_1|^2\cdots|x_m|^2)^{\frac12} ∣∣x∣∣2​(∣…

电脑桌面便签哪个好,好用的电脑桌面便签推荐

在如今信息爆炸的时代&#xff0c;人们的工作和生活节奏越来越快&#xff0c;记事和备忘变得尤为重要。而电脑桌面便签作为一种方便快捷的记录工具&#xff0c;备受广大用户青睐。那么&#xff0c;电脑桌面便签哪个好&#xff0c;哪个更加出色呢&#xff1f; 作为一名人事专员…

CryoEM - 使用 cryoSPARC 基于单颗粒图像从头重构蛋白质三维结构

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 基于冷冻电镜单颗粒图像重构蛋白质三维结构,利用冷冻电镜技术测定生物大分子结构的方法。原理是从冷冻电镜获得大量同一种蛋白质分子的二维投影图…

【数据结构】实现队列

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解队列&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 队列的概念及结构二. 队列的实现队列的结构体初始化销毁队尾插入队头删除显示第一个节点的值…

【Java程序员面试专栏 算法思维】六 高频面试算法题:动态规划

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间零钱兑换动态规划+双重循环dp[i]表示兑换金额为i元的最少…

iOS消息转发流程

当向Objc对象发送消息时&#xff0c;如果找到对象对应的方法&#xff0c;就会进入消息转发流程&#xff0c;给开发者提供一些最后的机会处理消息无法发送问题&#xff0c;以免出现程序崩溃。 1. 回调对象的resolveInstanceMethod方法&#xff0c;在这个方法中&#xff0c;允许开…

阿里云定价_ECS产品价格_云服务器收费标准 - 阿里云官方活动

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

基于 LLaMA 和 LangChain 实践本地 AI 知识库

有时候,我难免不由地感慨,真实的人类世界,本就是一个巨大的娱乐圈,即使是在英雄辈出的 IT 行业。数日前,Google 正式对外发布了 Gemini 1.5 Pro,一个建立在 Transformer 和 MoE 架构上的多模态模型。可惜,这个被 Google 寄予厚望的产品并未激起多少水花,因为就在同一天…