自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

转载 解密支付系统,来看如何构建理想的支付系统架构

货币是人类发展史上一个极为重要的角色,它不仅是市场上物品交换的媒介,更是人类文明发展史上里程碑式的代表物。几千年前人类在贸易市场上使用实物交换,可以想象一下我们的祖先进行市场贸易:一个人手上有羊奶,另一个人手上有牛肉,如果两个人都需要对方的物品,那么交换一下就可以了,这是最早的贸易。但是随着人类文明的发展,这种实物交换已经无法满足人类的市场需求,比如拥有牛肉的人不喜欢羊奶,交易就无法进行。这时候智慧的古人学会了使用媒介,大家所熟知的...

2022-05-14 15:31:05 1249

原创 中金支付招贤纳士-C语言开发工程师

熟悉常用算法、数据结构的C语言实现,熟悉常用设计模式。四、工作地:北京(北京市丰台区北京南站路供销弘泰大厦12-15层)中金支付有限公司因系统建设需要,招聘c语言后台开发工程师若干名。三、熟悉钱包、互联网支付、清结算系统业务的优先。五、薪资范围仅供参考(10k-25k),具体面议。2、熟悉互斥锁、自旋锁、原子操作的C语言实现;1、熟悉Linux操作系统下C语言编程环境;3、熟悉线程池、进程间通信的C语言实现;5、熟练运用C编写数据库操作程序;6、熟练运用C处理网络数据流。4、熟悉EPOLL网络编程;

2023-10-26 13:54:21 176

原创 【支付架构】银联额度映射-技术方案设计

目录1 银联额度映射业务简介2 交互流程2.1 额度调增2.2 额度调减2.3 额度查询1 银联额度映射业务简介参见:【支付架构】银联额度映射_u010482601的专栏-CSDN博客2 交互流程2.1 额度调增额度调增分五个步骤来完成:1)财务人员通过支付运营平台页面填写调增额度等信息,发起调增申请;2)审核人员登录支付运营平台,对调增申请进行审核;3)审核通过的会更新为审核通过状态,通过定时任务扫描数据,组装报文到银联发起调增申请,银联会同步返回受理结果

2021-12-22 18:16:22 1363

原创 【支付架构】跨境支付

目录1 业务介绍1.1 什么是跨境支付1.2 跨境支付发展历程2 技术实现2.1 业务流程2.2 交互设计简单地说,跨境支付指的是两个或两个以上的国家或地区因国际贸易所产生的债券,再借助一定的支付方式与结算工具,实现资金能够跨国或跨地区转移的一系列的行为。国内消费者通过跨境电商网站购买国外的产品,或者国外消费者购买国内商家的产品时,由于币种不同,国家各自的支付方式不同,就得通过一定的支付手段和支付系统及资金结算的方式来实现国家与国家之间的资金转换从而完成跨国交易。国内常用的跨

2021-12-20 23:08:00 8270 2

原创 【算法面试宝典】罗马数字转整数 - LeetCode13

1 算法描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1 。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+...

2021-12-19 20:40:26 137

原创 【算法面试宝典】整数转罗马数字 - LeetCode12

1 算法描述罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+...

2021-12-19 18:47:10 128

原创 【算法面试宝典】回文数 - LeetCode9

1 算法描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一.

2021-12-18 14:36:25 1482

原创 【算法面试宝典】盛最多水的容器 - LeetCode11

1 算法描述给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例...

2021-12-17 17:28:34 92

原创 【算法面试宝典】字符串转换整数 - LeetCode8

1 算法描述请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数...

2021-12-17 11:52:34 83

原创 【算法面试宝典】整数反转 - LeetCode7

1 算法描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1...

2021-12-17 10:01:35 229

原创 【算法面试宝典】最长回文子串 - LeetCode5

1 算法描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd" 输出:"bb"示例 3:输入:s = "a" 输出:"a"示例 4:输入:s = "ac" 输出:"a"提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成2 解题思路方案一:中心扩展法...

2021-12-16 18:48:54 344

原创 【支付架构】支付营销 - 微信会员有礼

目录1 业务简介1.1 微信提供的支付营销能力1.2 活动-商家券-品牌关系2 交互流程2.1 品牌关系维护2.2会员有礼交互流程3 技术实现3.1 创建活动3.2 终止活动3.3 活动查询1 业务简介1.1 微信提供的支付营销能力微信支付针对支付流量提供了多种营销能力,例如支付后发商家券、支付后曝光小程序、支付后曝光公众号、支付会员有礼等,微信支付营销能力如下图所示:本篇以支付后发商家券为例来介绍微信支付营销能力。1.2 活...

2021-12-12 18:17:50 3069

原创 【支付架构】银联额度映射

1 为什么需要额度映射1.1 三方支付公司付款资金流1.2 银联额度映射前后对比2 额度映射技术方案

2021-12-11 21:46:14 17909

原创 【算法面试宝典】无重复字符的最长子串

1 算法描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 ...

2021-12-09 08:56:22 712

原创 一图读懂HashMap、HashTable、HashSet的区别

2021-12-07 09:32:57 131

原创 【算法面试宝典】寻找两个正序数组的中位数

1 算法描述给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 =...

2021-12-04 18:07:02 422

原创 【算法面试宝典】十大经典排序算法

1 排序算法的分类 排序是将一组无序的数字元素,经过重新排列后形成的一组有序的数字元素,可以是升序也可以是降序。排序算法是对数字元素排列的过程中经过的一些列运算。根据是否需要比对,可以把排序算法分为 比较类排序算法 和 非比较类排序算法。比较类排序算法:通过比较来确定元素之间的相对顺序。比较类排序算法的时间复杂度不能突破 O(NlogN),所以也成为非线性时间比较类排序。 非比较类排序算法:不通过比较来确定元素之间的相对顺序。非比较类排序算法可以突破比较类排序算法时间复杂度的下界,以...

2021-11-30 20:41:23 342

原创 【算法面试宝典】十大经典排序算法 - 基数排序

1 解题思路基数排序的核心思想是把要比较的元素拆分,按照个位、十位、百位、千位的来拆分,然后在相同位上的数值放入从0-9的10个桶中,这样相同位上的数值就有序了,然后依次类推进行比较,最终得到排好序的元素列表。 基数排序有两种方式,一种是最高位优先(Most Significant Digit first)法,简称MSD法。一种是最低位优先(Least Significant Digit first)法,简称LSD法。示例:输入:nums = {80, 55...

2021-11-30 20:27:19 3633

原创 【支付架构】医保支付-支付宝小程序

1 方案场景介绍1.1 背景据统计2020年全国参保职工医保3.4亿人,其中在职职工2.5亿人,参保人员医疗总费用1.3万亿,其中医疗机构发生费用1.1万亿,医保个人账户支付费用2千亿,占总额的15%。从数据可以看出使用个人医保账户支付的比重是非常大的。医保支付在医院线下看病、抓药、挂号都可以使用,但是线上相对弱一些,支付宝针对线上使用医保支付推出了支付宝小程序场景下的医保支付,以解决药店线上使用医保支付的场景。1.2 适用场景通过⽀付宝⼩程序...

2021-11-29 17:21:29 7335 1

原创 【算法面试宝典】十大经典排序算法 - 桶排序

1 解题思路 桶排序是最简单的排序算法之一,桶排序和计数排序、基数排序有很多相似和渊源之处。桶排序重要的是它的思路,而不是具体的实现。不同待排序元素,桶排序的具体实现会有差异。 桶排序的工作原理是把待排序的元素放入对应的桶里。每个桶再进行单独的排序(可以是快速排序、可以是递归排序、也可以用递归的方式继续使用桶排序进行排序)。桶排序需要经过四步:1)按照元素特性设计好桶;2)把待排序元素放入对应的桶中;3)对每个桶内的元素进行排序;4)合并桶中的元素得到有序...

2021-11-26 16:01:39 3810

原创 【算法面试宝典】十大经典排序算法 - 计数排序

1 解题思路 计数排序是一种非比较排序,是典型的用空间换取时间的排序算法,时间复杂度只有 O(n)。计数排序的思路非常简单:重新创建一个数据,把要排序的数组中的值作为新的数组的索引,新的数组的值是元素出现的次数,然后遍历新的数组,依次把大于0的元素的下标取出赋值到另一个数组,即为排序后的数组。计数排序的步骤:1)找出原数组 nums 中的最大值 max 。2)定义一个新的数组 int[] countNums = new int[max+1] 。3)对新的数组 countNu...

2021-11-22 09:07:10 1101

原创 【算法面试宝典】十大经典排序算法 - 归并排序

1 解题思路 归并排序是使用分治策略(分治法是将大问题分成小问题,对小问题来求解,然后将分解的答案合并成大问题需要的答案)实现的排序算法,归并排序的核心思想是把数组 nums 一分为二,把分好的两个子数组分别进行排序,然后再合并两个排好的子数组得到合并后的有序数组,依次类推,直到把数组拆分的只剩一个元素,然后再依次合并。归并排序使用递归的思想,先依次拆分数组,然后再依次合并,跟快速排序某些程度上是相反的,快速排序是找目标值的位置然后拆分数组。示例:输入 nums = {9,4,5...

2021-11-22 09:05:13 203

原创 【算法面试宝典】十大经典排序算法 - 堆排序

1 解题思路堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。要使用堆这种数据结构,首先要理清什么是堆?堆可以分为大顶堆和小顶堆。堆是一颗完全二叉树,每个节点的值都大于或等于左右孩子节点的值,称为大顶堆;每个节点都小于或等于左右孩子节点的值,称为小顶堆。如下图所示:如果使用数组来表示堆,我们对堆中的节点按层次编号,如下图所示:那么大顶堆和小顶堆的定义:大顶堆:nums[i]>=nums[2i+1] && nums[i]>...

2021-11-21 11:32:21 1020

原创 【算法面试宝典】十大经典排序算法 - 选择排序

1 解题思路 选择排序是逻辑比较简单的一种排序算法,核心思想是遍历无序的元素找到最大或者最小值,放入有序元素的末尾。所有元素遍历一遍即把所有元素完成排序。示例:输入 nums = {4,8,1,5,9,2} 输出 nums1 = {1,2,4,5,8,9}插入排序执行步骤:第一步:初始的时候整个数组都是无序的,所以假设数组最左端的元素 4 是最小值,后面的数组依次和4比较,如果有比4小的元素,交换两个元素的位置。第一轮循环得到的数组如下所示:...

2021-11-21 11:30:13 369

原创 【算法面试宝典】十大经典排序算法 - 希尔排序

1 解题思路 希尔排序是第一个算法复杂度突破 O(n^2) 的排序算法,是在插入排序的基础上做了改进,也称为缩小增量排序。希尔排序会把一个序列拆分成多个子序列,分别对多个子序列进行插入排序,然后在合并排好序的子序列,再进行整体的插入排序。子序列的拆分方法是按下标的一定增量来分组,对每一组使用插入排序进行排序,随着增量逐渐减少,每组包含的关键词逐渐增多,当增量减至1时,所有的元素都在同一个组,算法便终止。 希尔排序实现了跳跃式的比较和插入,相比直接插入排序,希尔排序针对已经...

2021-11-21 00:22:14 1146

原创 【算法面试宝典】十大经典排序算法 - 插入排序

1 解题思路 给定一个无序数组 nums,使用插入排序使数组中的元素按照升序或者降序排列。插入排序的核心思路是把数组 nums 一分为二,一个是已经排好序的数组 nums1,一个是无序的数组nums2,把无序数组 nums2 中的元素,插入有序数组 nums1 中,就得到了一个有序数组,插入的时候需要通过比较值的大小来判断 nums2 中的元素(carry)放在 nums1中的哪个位置。通常是从 nums1 数组的后面开始比较,carry 从后往前和 nums1 的元素做比较,找到不小于 ...

2021-11-21 00:20:02 370

原创 【算法面试宝典】十大经典排序算法 - 快速排序

2.3.1 解题思路 快速排序的核心思想是找到一个目标值 key ,使用数组 nums 中的元素和 key 进行比较,大于 key 的元素放到数组的一边,小于 key 的元素放到数组的另一边,这样 key 的位置就确定了,依次使用这种方式对两边的数组进行排序,最终得到排好序的数组。示例:输入 nums = {4,8,1,5,9,2} 输出 nums= {1,2,4,5,8,9}快速排序执行步骤:初始化:nums = {4,8,1,5,9,2}第一步:nums...

2021-11-17 18:47:59 724

原创 【算法面试宝典】十大经典排序算法 - 冒泡排序

1 解题思路原理:比较两个相邻的元素,将大的元素交换到右边。思路:依次比较两个相邻的元素,将小的元素放到左边,大的元素放到右边。1)第一次比较:比较第一个元素和第二个元素,将小的放到左边,大的放到右边;2)第二次比较:比较第二个元素和第三个元素,将小的放到左边,大的放到右边;…………3)依次比较相邻的两个元素,直到最后两个元素,把小的放到左边,大的放到右边,这样数组最后一个元素就是整个数组中最大的元素;4)然后开始第二轮比较,第一轮得到了最后的元素,所以最后一个元素不参与比较,第

2021-11-17 18:45:48 56

原创 数字证书的工作原理

1 为什么需要数字证书 三方支付机构在和银联网联交互的时候,通常会使用数字证书进行加签验签,那么为什么要用数组证书呢。核心是要解决密钥传输被截获的问题,比如在非对称加密中,三方支付公司需要获取银联的公钥信息,但是如果请求被第三方拦截的话,公钥信息就可能被替换,会导致三方支付公司用第三方的公钥进行加密,交互信息存在泄露的风险(谁也不想自己的银行卡密码被泄露)。因此,引入证书,用于鉴别服务端的身份。如果服务端的身份鉴定失败,那么就终止请求。证书颁发给使用者后,使用者就会拿着证书到处证明自己...

2021-11-16 11:49:41 764

原创 【算法面试宝典】两数相加

1 题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807示例 2:输入:l1 = [0], l...

2021-10-26 23:22:24 60

原创 【算法面试宝典】两数之和

1 题目要求题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9 输出:[0,1] 。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums..

2021-10-26 14:30:45 71

原创 【算法面试宝典】算法的时间复杂度与空间复杂度

目录1 算法概述1.1 算法定义1.2 算法的特性1.3 算法的要素1.4 算法优劣评定2 时间复杂度2.1 时间复杂度的定义2.2 时间复杂度的计算方式2.3 常见的时间复杂度3 空间复杂度3.1 空间复杂度的定义3.2 空间复杂度的计算方式3.3 常见的空间复杂度4 小结1 算法概述1.1 算法定义 算法(Algroithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策...

2021-10-25 23:00:22 564

原创 Log4j使用教程

1 使用方法日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j可以免费下载到Log4j最新版本的软件包。如果是maven项目可以直接引用:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <ve.

2021-10-19 11:57:46 3064

原创 本地创建新项目如何上传到github仓库中

在idea中创建项目会有相关的组件,使用起来非常方便,所以在很多时候会现在idea中创建项目,然后上传到github仓库中,但是如何来操作了,今天我们就一起来梳理一下操作步骤。步骤1:github中创建相同名称的项目假设项目的名称是springcloud-resttemplate-feign ,那么在github中也创建相同名称的项目,步骤2:将本地和远程仓库关联并push本地项目这里用的是Intellij IDEA编辑器来演示,操作如下:1)点击 VCS - Import into..

2021-10-17 23:03:47 157

原创 [email protected]: Permission denied (publickey). 处理

1 问题描述Git使用过程中出现以下报错[email protected]: Permission denied (publickey).2 处理步骤进入git bash界面然后:第一步,git config --global --list 验证邮箱与GitHub注册时输入的是否一致第二步,通过git config --global user.name “yourname”,git config --global user.email “[email protected] ”(这里得名字和邮箱

2021-10-17 13:41:08 1054

原创 SpringCloud实战【九】: SpringCloud服务间调用

1 服务间调用 微服务的特点是服务数量特别多,服务和服务之间也需要有交互,这就涉及到服务间的调用,即服务与服务之间如何通信。提到服务与服务之间的通信,最通用的莫过于HttpClient,在其它的通信架构中基本都使用HttpClient来作为底层的通讯模型。在SpringCloud中依然可以使用HttpClient进行服务与服务调用,只不过如果采用HttpClient调用的话,会有一些弊端,例如: 如果同一个服务有多个负载的话,采用HttpClient调用时,没有办法处理负载均衡的问题。还有...

2021-10-16 23:17:53 10354

原创 SpringCloud实战【十】:SpringCloud和SpringBoot对应的版本选型

1 SpringBoot版本选择官网地址:Spring BootSpringBoot官方目前最新最稳定版:2.5.5,如果单独使用SpringBoot的话,建议就可以选择官方指定的最新最稳定版。但是,如果需要和SpringCloud整合,就得看SpringCloud的版本需要适配SpringBoot的哪个版本了。2 SpringCloud版本选择官网地址:Spring CloudSpringCloud采用了英国伦敦地铁站的名称来命名,并由地铁站名称首字母 A...

2021-10-16 23:02:44 631

原创 如何把Java项目转换为maven项目

使用idea的时候从远程下载的项目想要转化为Maven项目,已经完成pom文件的创建,但是打开Maven Projects之后里面却没有该项目。需要做一下转换,转换步骤如下:右击项目,选择Add Frameworks Support,再选择Maven,就可以了,如下图所示:...

2021-10-14 21:24:20 2778

原创 【支付架构】运营支撑域业务模型

通俗的来讲运营支撑的作用就像成功男人背后的女人,就是服务于支付、金融这些主业务的底层通用能力。运营支撑可以分开来看,一是运营,二是支撑。运营是以运营平台为主线,为运营人员(清结算、合规、风控、客满等)提供运营能力(数据查询、参数配置、调账等)以及开发人员提供配置管理(如网关、计费规则、导出模板等的管理)能力;支撑是为提升开发效率,提升稳定性,降低开发难度,抽象公共组件,做部分通用能力建设,如加解密、额度中心、账单等。

2020-04-14 23:44:52 887

原创 LINUX安装JDK+TOMCAT

本文演示了linux下傻瓜式的安装jdk+tomcat,按照步骤完成即可

2020-04-06 16:09:49 217

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除