- 博客(291)
- 资源 (3)
- 收藏
- 关注
原创 第三章 三方支付
第三方支付是指具备一定实力和信誉保障的独立机构,持有央行颁发的第三方支付牌照,通过与各大银行签约,提供与银行支付结算系统接口对接的网络支付模式。在交易过程中,买方使用第三方平台账户支付货款,第三方通知卖家货款到账并要求发货;买方确认收货后,第三方再将款项转至卖家账户。第三方支付的优势包括安全性高、支付成本低、使用方便以及提供支付担保等。然而,它也存在一些缺点,如虚拟支付层需依赖实际支付方式、银行卡信息暴露风险、法律地位不明确、资金寄存风险等。。
2024-09-11 22:38:54 748
原创 第二章 支付的一方、二方、三方、四方
指买方、卖方直接进行资金转移,如现金交易,是点对点直接交易过程。这是最古老原始的交易方式,随着社会的发展,我们日常生活中使用的频率在逐渐的降低。示例:我们小时候拿着一分钱去买雪糕一样。
2024-09-11 16:46:12 386
原创 第一章 什么是支付
既然我们要开始了支付,那什么是支付呢?我想广大读者应该在自己的心里有一番计较。下面我从现在常见的互联网支付的背景下来聊一下。什么是支付本章主要是讲述了一些支付相关的概念信息,我个人认为了解这些信息是很重要的,了解这些信息可以让我们有一个初步的认知,这些认知会不断的在实际的相关工作中进行实践验证,概念信息指导后续实践,实践不断反哺并完善概念认知体系。
2024-09-10 20:22:36 862
原创 Spring jdbc:initialize-database分析
起因在使用内存数据库H2写数据库操作的单元测试的时候,因使用jdbc:initialize-database 来初始化数据库结构。现状spring-jdbc :3.1.1.RELEASE <jdbc:initialize-database data-source="dataSource" ignore-failures="NONE"> <jdbc:script location="classpath:initdata/info.sql"/> </jdbc:in
2021-03-31 21:20:49 759
原创 springboot 单元测试怎么写
本文基于springboot版本1.4+ 推荐使用mock完全单节点测试和全链路测试我们的单元测试是系统质量保证的重要一环,需要引起重视。但是由于目前分布式系统相互直接依赖繁杂 ,如果实际按业务数据来跑单元测试,那很难遵循单元测试的 AIR 原则【 Automatic(自动化)、Independent(独立性)、Repeatable(可重复)】 ,因而我们会引入mock来辅助完成单元测试。另一方面单元测试分为两部分 一个是单个最小单元的测试,另一种是单个系统内部全链路的测试。本文主要描述如果写全链路测试
2021-03-26 14:38:45 1348
原创 org.springframework.test.context.junit4.SpringJUnit4ClassRunner
spring 的单元测试是如何复用容器的1、创建runner执行器此时初始化的TestContextManager 中并没有上下文容器信息org.springframework.test.context.junit4.SpringJUnit4ClassRunner#createTestContextManager public SpringJUnit4ClassRunner(Class<?> clazz) throws InitializationError { super(claz
2021-03-24 15:03:09 2001
原创 单元测试-junit
脱离开发工具使用junit运行一个测试类import org.junit.runner.JUnitCore;import org.junit.runners.BlockJUnit4ClassRunner;import org.junit.runners.model.InitializationError;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;public class JunitExample
2021-03-23 20:05:57 334 1
原创 cannot have an existing value
写单元测试遇到下面的问题BaseTest 中的producer 已经存在值了再次被赋值导致系统异常org.springframework.beans.factory.BeanCreationException:Could not inject field: protected mq.producer.Producer BaseTest.producer; nested exception is java.lang.IllegalStateException: The field protected
2021-03-19 17:32:32 854
原创 aop bean增强
主要的两个类org.springframework.aop.framework.AbstractAdvisingBeanPostProcessororg.springframework.aop.framework.autoproxy.AbstractAutoProxyCreatorAOP下的实现类org.springframework.validation.beanvalidation.MethodValidationPostProcessororg.springframework.beans.f
2021-03-17 17:48:49 247
原创 org.springframework.aop.config.ConfigBeanDefinitionParser#parse
org.springframework.aop.config.ConfigBeanDefinitionParserpublic BeanDefinition parse(Element element, ParserContext parserContext) {1、 CompositeComponentDefinition compositeDef =new CompositeComponentDefinition(element.getTagName(), parserContext.extra
2021-03-16 20:33:59 134
原创 spring容器分析
org.springframework.context.Lifecycle 声明周期org.springframework.beans.factory.Aware 资源导入org.springframework.beans.factory.BeanFactory 对象读取org.springframework.core.AliasRegistry 对象注册 org.springframework.core.io.ResourceLoader 资源加载org.springframework.cor
2021-03-10 10:14:38 191 1
原创 maven-resource 打包资源管理
背景当我们做一些服务封装的时候,可能会使用到SPI相关的一些能力,当我们打包的时候可能需要指定需要打包那些资源文件,这个时候我们就会用到resource样例包结构src/main/resources/propsMETA-INFxxx.xmlxml配置 <build> <resources> <resource> <directory>src/main/resour
2021-03-02 14:24:39 220
原创 修改单例属性引发的血案
背景最近接触的一些系统中遇到一个问题,一个交易的服务对外提供了支付和退款两种能力,但是发现运行时交易的服务走了退款。原因是spring容器管理的一个对象service 属性运行时被改变,导致上下流程对不上的问题,多业务链路并发时引发运行时属性错乱,导致 支付和退款行为混淆下面是大体代码样例。记录下问题原因样例1、定义一个核心支付服务public interface CoreService { public BaseResult trade(TradeParam tradeParam);
2021-02-25 17:58:22 527
原创 AOP--入坑源头
1、AOP实现了一部分数据转换和加解密相关的工作,发现历史项目一堆都是around ,职责分工不是很合理,代码优化过程中入坑,目前还在扑腾,暂未出坑以下为初期的一个实验,基于spring-boot的几个不同的版本 。等以后有了结论之后再一点点完善2.4.2-------------doAround--start-------------before-------------doAfterReturning-------------doAfter-------------doAroun.
2021-02-09 18:32:42 113
原创 AOP aspectj idea 笔记
1、 idea专业版本 (非专业版不支持aspectj)2、创建个maven项目加入如下依赖 plugin尤其重要 ,需要运行编译后版本,才能发现生效<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.9.6</version></dependen...
2021-02-09 17:57:17 237 1
原创 fastjson定制序列化插件
背景在日常的开发过程中,对象序列化成JSON字符串的能力是很常用的,但是在实际使用过程中,或多或少的会有一些定制化的诉求,常规一些的序列化支持 fastjson提供了现成的序列化信息,直接指定使用即可 参考类 com.jd.fastjson.serializer.SerializerFeature。我的实际使用诉求是在序列化的过程中完成数据的脱敏工作,以保障诸如手机号 邮箱之类信息不被泄露,以下推荐两个可定制序列化插件 ,可以完成在序列化过程中针对key和value的定制处理。针对key的定制处理c
2020-10-30 10:08:54 408
原创 gson 反序列化后整形变浮点问题
public static void main(String[] args) { GsonBuilder builder = new GsonBuilder(); builder.setDateFormat("yyyy-MM-dd HH:mm:ss"); builder.registerTypeAdapter(new TypeToken<Map<String,Object>>(){}.getType(),new MapTypeAdapt
2020-07-23 21:12:11 1864 2
原创 idea 运行编译 提示找不到类问题记录
springboot项目 mvn clean install 打包正常application run的时候一直报各种类找不到,Idea清理缓存 重启 重新clone代码 都不能解决问题 ,推荐如图maven ->runner->Delegate IDE build/run actions to Maven 选中 将构建和运行委托给maven去执行 这样能避免因为idea的各种与maven编译运行的冲突 导致的各种乱七八糟的问题 均以maven为准就对了...
2020-07-20 15:33:17 4201 1
原创 基于docker环境构建nginx代理java项目操作手册
基于docker容器,把最常规的nginx+java的部署环境迁移到容器中的操作手册
2020-05-02 17:12:50 1070 3
原创 java项目docker云化入门
目录01 创建java项目1、指定pom父文件和依赖2、系统启动类3、API服务类02 开始处理dockefile03 打包构建镜像1、安装docker,初学者就直接用yum 一键安装即可2、打包3、检查当前服务器镜像4、启动docker镜像 并访问对应地址01 创建java项目从spring官网快速开始找一份样例代码即可,代码样例如下:1、指定...
2020-04-26 22:53:30 409
原创 大话分布式服务——初识分布式服务
初识分布式服务目录初识分布式服务简介正文创业期发展期成熟期后记简介 大家好,我们开始第一章 初识分布式服务正文 本文以初识为题,旨在初步介绍分布式服务的相关信息,给读者一个初步的印象。那么怎么来解读分布式服务呢?分布式服务是计算机系统服务中的一种概念,那什么算是分布式服务呢,这个要从软件系模式起源来介绍了。 一个成熟的...
2020-04-21 00:22:05 287
原创 大流量放大镜下看缓存击穿事件
缓存击穿这个词语在很多程序开发者来讲是再熟悉不过了。当下互联网大流量的环境下,缓存几乎可以说是在当前软件开发应用中必不可少的一点了。先简单介绍下业务场景,在渠道引流的过程中,下放引流利益点声明,引流之后针对完成任务的有效用户进行之前承诺利益点的发放,承诺有效期自然周有效。以此引流拉新业务为目标,程序上分为四大模块,分别是承诺声明利益点的展示模块、千人千面实时分析模块、分析结果业务管理模块、...
2020-04-18 17:02:36 274
原创 idea 重写对象toString 转成json
在生成 toString的页面 进入设置-》模板-》新增模板然后toString的时候使用新增的模板就行了记录处理模板如下public java.lang.String toString() {final java.lang.StringBuilder sb = new java.lang.StringBuilder("{");#set ($i = 0)#f...
2019-08-01 18:01:15 1340
原创 tomcat如何支持web应用引发的思考
此文属于基于现有工作经验的一个思考 ,纯属YY设想,无实际源码实现参考依据思考命题tomcat是如何支持一个web系统启动并且正常提供服务的现状我们开发一个web系统,然后部署到tomcat容器中,就可以正常提供服务了,比如Hellow Word我们访问http://localhost:80/ 就可以看到了,这就是一个最简单的web服务思考1、不管是从系统日志还是从访问地址上看,我们...
2019-05-09 17:21:42 163
原创 系统熔断
最近看这方面的信息 简单了解了下 写下随笔背景介绍基于服务拆分之后,各类远程调用横行的年代, 我们很容易出现的系统层级情况就是一个业务支撑需要N多服务,简单说下,图网上有的是就不贴了。假设有三层应用调用 A-B-C ,A对外提供列表服务,需要N个B和M个C,同时B也需要X个C,我们假设一个调用链路中的某个C系统故障 ,那A或者B 调用C时 就会被hold住,从而无法正常响应, 以此为例 A机...
2019-05-09 16:24:52 906
原创 RateLimiter 笔记
关于谷歌的RateLimiter限流的使用工具类记录package org.limit.example;import com.google.common.util.concurrent.RateLimiter;import java.util.concurrent.ConcurrentHashMap;/** * @Title: RateLimiterUtil * @Package...
2019-04-12 14:31:07 813
原创 mysql
SQL优化业务型优化:多表连接拆分为单表分表:取决表的业务是否支持水平拆分、表的大小、表的访问量(QPS+TPS)分库:表的大小、分表的梳理、表的总访问量(QPS+TPS)数据库拆分技术型优化在原SQL基础上,修改索引改造SQL结构增加表冗余字优化SQL步骤:分析现有业务指标和sql执行计划。改写sql写法或者调整索引。反复执行这两部。将where子句中查
2019-04-11 16:27:03 154
原创 sun.misc.Unsafe 笔记
858 /** 859 * Atomically update Java variable to <tt>x</tt> if it is currently 860 * holding <tt>expected</tt>. 861 * @return <tt>true...
2019-04-11 16:25:26 169
原创 全局唯一ID生成服务设计
一般在一些支撑大规模复杂业务中,都会有生成全局唯一的业务ID的诉求,本文就此ID生成服务的诉求来展开在实际业务系统中,一般会对ID生成服务有哪些要求,下面我们简单介绍几点全局唯一:在限制周内必须保证不能重复系统高可用:在特殊情况下 尽最大可能保证系统可用高并发高性能:此类基础服务,支持业务众多,一般调用量都比较大,同时要求性能很高使用简单:在当下的大环境中一般提供一个RPC服务输出可读...
2019-04-11 14:21:16 904
原创 定制MVC
MVC(模型(model)-视图(view)-控制器(controller)的缩写)要定制一个MVC ,首先要了解MVC的关系 这张图片是百度百科上使用的,通过如图我们可以得到以下几点用户输入 业务处理 数据模型 输出视图从一个HTTP请求的过程中来谈这个问题的时候。 输入输出就是一些列的报文,服务器端负责解析请求报文,而浏览器负责解析响应报文。 再业务处理的过程中,请
2019-04-09 16:23:05 171
原创 谈谈系统质量相关的思考
1、系统稳定性单元测试 灰度发布 结对编程 系统监控 压力测试 系统复核2、系统扩展性接口扩展性 业务设计的扩展性 新需求业务支撑快速搭建,模块化是否拆分到位,代码重用率等 系统扩容上无状态保证可以自动伸缩扩容3、系统高可用灾备 重试 限流 降级 熔断 负载均衡 系统性能提升 容量评估...
2019-04-09 16:22:44 270
原创 DBCP连接池 操作sql超时控制
jdbc.url connectTimeout=5&amp;socketTimeout=5&amp;autoReconnect=true<sqlMapConfig> <settings cacheModelsEnabled="false" enhancementEnabled="true" lazyLoadingEna...
2019-04-09 16:20:06 1359
原创 字符串模板替换
1、使用正则便打算来替换 public static String renderString(String content, Map<String, String> map){ Set<Map.Entry<String, String>> sets = map.entrySet(); for(Map.Entry<Stri...
2019-02-15 11:02:23 625
原创 log4j日志级别配置完成后不生效 系统一直打印debug日志
介绍系统log4j.xml配置好了之后,系统日志级别没有按照预期的执行,控制台大量输出debug日志debug日志 排查问题可以,但是在生产环境下,打印数量巨大,导致系统IO开销增加,影响系统性能 因此我们要想办法把debug日志过滤掉方案系统log4j配置没有生效的原因如下 可供参考手误检查下系统配置中是否存在debug配置没有发现的 ,最好全文搜索下debug字段 ,查询是否有配置...
2019-01-11 18:16:38 10552
原创 Gson Map 处理问题笔记
情况描述 序列化 一个map对象使用Gson转换成字符串的时候,默认是处理成了空字符串,需要指定 java.lang.reflect.Type 的类型 这样才能序列化成功 反序列化 反序列化的时候指定的类型如果是Map接口类型 ,这个时候反序列化的时候会出现异常(com.google.gson.JsonParseException) 把指定类型调整为Map的实现类后可以反序列化成功。...
2018-07-13 11:03:12 579
原创 spring 解析xml加载bean的整个过程
第一步从spring的容器刷新开始org.springframework.context.support.AbstractApplicationContext#refresh ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); org.springframework.cont...
2018-04-12 11:27:38 1980
原创 mysql insert 空数据默认值问题
CREATE TABLE task ( id bigint unsigned NOT NULL AUTO_INCREMENT, taskType INT(10) unsigned DEFAULT '0' NOT NULL, retryCount INT DEFAULT '3' NOT NULL, status INT(1
2018-03-30 14:30:25 10458
原创 DB对象属性用包装类和基础类型的区别
我们在操作数据库的时候以下这段代码是很常见的了 <isNotEmpty property="status"> status=#status#, </isNotEmpty>private int stauts;private Integer status;这两部分代码还是有区别的,当我们使用int的时候, 1、如果数据库的信息支持null数据,那这个时候,查询会出现异常
2018-03-30 10:34:21 523
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人