持续提升技术,完善知识体系
技术点滴

2020-11-21 06:01:51

centos-8.3-minimal安装kafka_2.13-3.4.0单机版使用

centos-8.3-minimal设置网络,加载配置并重启,需要注意不是systemctl nmcli c reload nmcli c up enp0s3 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 下载的压缩包文件如下 cmak-3.0.0.6.zip jdk-17_linux-x64_bin.tar.gz kafka_2.13-3.4.0.tgz...

2020-11-21 06:01:50

关于电商重复支付、超时取消支付解决方案

关于电商重复支付、超时取消支付解决方案 1、背景 目前大部分电商平台均支持支付宝、微信或其他第三方支付网关完成订单支付,重复支付交易异常是一种比较常见的异常场景。如用户通过电商平台发起订单支付,先打开微信支付到录入支付密码窗口,暂不输入密码,回到电商应用,再打开支付宝的支付方式完成付款,同时仍可在此前打开的微信支付中输入密码完成付款,即可模拟出重复支付的场景,当然此种场景较为极端,实际情况中会有多种异常场景导致用户重复支付。 超时取消支付,如在订单即将超时的时刻,调起支付到微信或支付宝,可能在用户录入密码时订单已取消,造成了超时支付。 如以下美团截图(订单在15分钟内有效) 2、重复支付的原因 重复提交导致重复支付,应用端未限制用户重复提交; 不同端均发起了支付导致重复支付,App端和PC端发起了支付; 支付结果回调不及时,用户无法查看到支付成功的结果导致重复支付; 用户使用不同的支付方式,支付宝、微信各支付一次导致重复支付; 3、超时支付的原因 用户处于订单超时取消临界点,完成支付; 3、解决方案 3.1、重复支付解决方案 客户端限制用户重复提交支付,同时服务端支付接口增加幂等处理; 确保同一个订单发送到同一支付渠道的商户订单号唯一(即微信/支付宝支付接口的out_trade_no),避免相同渠道的重复支付,如同一笔订单多次请求到微信时,商户订单号须唯一,尽量不要与原始订单号相同,原始订单号属于电商平台自身订单,无需直接暴露到支付渠道,可根据规则生成对应的商户订单号; 增加主动查询的机制,保证交易结果及时从支付宝、微信取回,防止支付成功的订单通知不及时; 针对不同支付渠道的重复支付,如既打开支付宝支付、又打开了微信支付,在收到第一笔支付成功之后,要及时调用微信/支付宝的订单关闭接口,避免重复支付; 3.2、超时取消支付解决方案 增加最后支付时间,微信/支付宝均有time_expire支付截止时间,保证订单在取消后用户的支付订单不可支付,可设置适当的空余时间,如上面美团的订单是15分钟超时取消,可以设定用户的支付截止时间为14分30秒的时间;...

2020-11-21 06:01:49

rocketmq安装使用

rocketmq安装使用 1、rocketmq安装 下载rocketmq源码包rocketmq-all-5.0.0-source-release.zip,解压后编译 mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U 编译成功后发布版本将在目录rocketmq-all-5.0.0-source-release/distribution/target/rocketmq-5.0.0/rocketmq-5.0.0中 启动rocketmq nohup sh bin/mqnamesrv & 启动broker nohup sh bin/mqbroker...

2020-11-21 06:01:48

centos8使用containerd kubernetes1.25.4集群安装

1、安装环境初始化 1.1、centos8-minimal安装更新并安装vim命令 cd /etc/yum.repos.d/ sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* yum makecache yum update -y yum -y install...

2020-11-21 06:01:47

spring-cloud使用resilience4j实现熔断、限流

由于hystrix官方已经停止维护了,目前spring-cloud推荐使用resilience4j来代替hystrix实现熔断、限流。 熔断一般指客户端调用服务端接口出现异常时客户端侧的处理,当然也可以是服务端的处理出现异常时熔断快速返回,可以暂时切断对下游服务的调用,是一种牺牲局部保全整体的有效措施(同时此客户端也可能是服务端)。 限流一般是指限制在指定时间间隔内的请求量,避免因请求过多导致服务崩溃,限流被看作是服务端的自我保护能力。 1、客户端openfeign使用resilience4j实现熔断 模拟一个客户端,通过feign调用一个服务端接口来模拟此功能 使用spring-boot的版本为2.7.3,spring-cloud版本为2021.0.4,关键的依赖如下 1.1、引入关键依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <dependency>...

2020-11-21 06:01:46

Win11右键菜单不折叠

1、手工修改注册表 1、按 Win + R 组合键,打开运行,输入 regedit 命令,按确定或回车,可以打开注册表编辑器; 2、注册表编辑器窗口,依次展开到以下路径:计算机\HKEY_CURRENT_USER\Software\Classes\CLSID 3、右侧空白区域,点击右键,选择新建项,并命名为 {86ca1aa0-34aa-4e8b-a509-50c905bae2a2} ; 4、{86ca1aa0-34aa-4e8b-a509-50c905bae2a2} 上点击右键,新建名为 InprocServer32 的项; 5、点击 InproServer32 后,在右侧的默认名称上,点击右键,打开的菜单项中,选择修改; 6、编辑字符串窗口,数值数据留空,然后点击确定;...

2020-11-21 06:01:45

spring-cloud-config配置中心使用细节

spring-cloud-config配置中心使用细节 微服务架构中需要使用配置中心来统一管理所有服务的配置,spring-cloud-config可使用git仓库作为配置的存储服务。配置中心有两种角色,服务端和客户端,服务端从git仓库获取配置信息,客户端从服务端拉取配置信息。 使用spring-boot-2.7.3和spring-cloud-2021.0.3演示配置中心的使用过程 1、服务端配置 需要引入配置中心依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 启动类中增加配置@EnableConfigServer 配置文件application.yaml如下,使用gitee演示,实际可能是自建的gitlab server: port: 8099 spring: cloud: config: server: git: uri:...

2020-11-21 06:01:43

使用drools-7.73.0.Final实现规则匹配的简单案例

使用drools-7.73.0.Final实现规则匹配的简单案例 1、案例业务规则说明 在一般的商城系统中,订单收到货签收完成后可以参与评价订单,商城会针对好评赠送相应的积分。 如可以定义金牌、银牌、铜牌会员,分别评论商品的字数多少,是否上传实物拍照,给予多少颗星的评价等多个维度判断给用户赠送合适的积分。 假定一个评论送积分的规则如下 会员级别 级别码 3星 4星 5星 金牌 30 100积分 300积分 500积分 银牌 20 50积分 250积分 400积分...

2020-11-21 06:01:42

windows查看域账号信息-密码过期时间

windows查看域账号信息-密码过期时间 使用命令net user mixfate /domain查看密码过期时间 c:\>net user mixfate /domain 这项请求将在域 mixfate.com 的域控制器处理。 用户名 mixfate 全名 注释 用户的注释 国家/地区代码 000 (系统默认值)...

2020-11-21 06:01:41

以PC端支付为例简述支付宝支付的案例

以PC端支付为例简述支付宝支付的案例 1、申请支付宝商户 首先要申请好商户,目前不对个人用户申请,只针对企业、个体户,需要上传营业执照完成验证。开通电脑网站支付后,可在支付宝开放平台新建应用并配置好商户公钥、签名算法类型(推荐使用RSA2)。这一步完成后就有APPID、商户私钥、支付宝公钥,基本上可以按照官方的操作指引开通。 2、验证商户是否正常 可以直接参考官方提供的例子验证一下https://opendocs.alipay.com/open/028r8t?scene=22。 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", "app_id", "商户私钥", "json", "UTF-8", "支付宝公钥", "RSA2"); AlipayTradePagePayRequest request = new...

2020-11-21 06:01:40

podman run 执行多条命令

podman run 执行多条命令 如使用node 镜像 podman run --rm node:14.20.0-slim sh -c "node -v && npm -v" 如使用docker镜像node构建项目 podman run --rm...

2020-11-21 06:01:38

win11 安装绿色版 mysql-8.0.21

下载安装包mysql-8.0.21-winx64.zip并解压。 初始化mysql 进入bin目录执行初始化命令,执行完成后将生成data目录,默认初始化完成后使用root账号登入是不需要密码的。 mysqld --initialize-insecure --user=mysql 将mysql安装成服务,注意需要使用管理员权限 mysqld install 设置root账号密码 仍然使用以下命令启动mysql,免密码登录 mysqld --console 使用命令mysql登入,完成设置root账号密码 mysql -u root 修改密码,如遇到is running with...

2020-11-21 06:01:37

布隆(bloom)过滤器

布隆过滤器用于高效检索一个元素是否在一个集合中,空间效率和查询时间比一般的算法都要好。根据其定义,布隆过滤器可以检查值是“可能在集合中”还是“绝对不在集合中”。“可能”表示有一定的概率,也就是说可能存在一定的误判率。 Guava布隆过滤器演示 1、引入依赖pom.xml <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies>...

2020-11-21 06:01:36

ElasticsearchClient操作ES8

1、ElasticsearchClient客户端依赖 使用spring-boot-2.6.4的版本演示客户端,加入以下依赖 <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>8.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> 2、java客户端操作案例 初始化client public void init() { String auth...

2020-11-21 06:01:35

elasticsearch8集群安装部署使用

1、ES集群环境准备 节点 ip node-a 192.168.91.136 node-b 192.168.91.134 host配置如下 192.168.91.136 node-a 192.168.91.134 node-b 创建账号、环境变量设置、系统文件数限制等与单机版一致,单机版演示过xpack.security.http.ssl.enabled: true,使用了自签证书,在此集群环境中设置为false。只演示集群中的通信使用自签证书,首先xpack.security.enabled: true仍需设置为true 2、生成集群内部(transport)安全通信证书 生成ca证书 ./bin/elasticsearch-certutil ca 默认ca文件名为elastic-stack-ca.p12,同时需要输入ca密码[123456];...