自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java中高级面试题

接口有什么用1、通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。2、通过接口可以指明多个类需要实现的方法。3、通过接口可以了解对象的交互界面,而不需了解对象所对应的类。另:Java是单继承,接口可以使其实现多继承的功能。说说http,https协议HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WW...

2020-01-13 14:06:46 653 1

转载 如何redis和数据库之间的一致性?

1、不一致产生的原因?我们在是使用redis过程中,通常会这样做,先读取缓存,如果缓存不存在,则读取数据库。不管是先写库,再删除缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。因为写和读是并发的,没法保证顺序,如果删除了缓存,还没有来得及写库,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。如果先写了库,在删除缓存前,写库的线程宕机了,没...

2020-01-13 13:53:27 636

转载 【基础总结】类加载过程

要点:1、类加载机制的原理2、程序初始化的顺序3、类加载的代理模式(双亲委托机制)一、类加载机制JVM把class文件加载到内存,并对数据进行校验、准备、解析、初始化,最终形成JVM可以直接使用的Java类型的过程。‘类加载全过程1、加载将class字节码文件加载到内存中,并将这些数据转换成方法区中的运行时数据(静态变量、静态代码块、常量池等),在堆中生成一个Clas...

2020-01-13 13:45:07 759

转载 类的编译、加载、执行过程

菜鸟版我们写了一个Book.java的类编译:执行javac test.java命令,就可以成功把Book.java转化成Book.class编译有3步:① 词法分析和输入到符号表② 注解处理③ 语义分析和生成字节码细化一点:源代码文件*.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 ->...

2020-01-13 13:39:23 752

转载 什么是僵尸进程,如何找到并杀掉僵尸进程?

如果你经常使用 Linux,你应该遇到这个术语“僵尸进程Zombie Processes”。 那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些进程? 下面将会回答这些问题。什么是僵尸进程?我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。 进程停止后, 该进程就会从进程表中移除。你可以通过 System-M...

2020-01-13 13:31:39 1074

原创 数据库查询和数据库(MySQL)索引的优化建议

索引是帮助MySQL高效获取数据的数据结构,在存储引擎中实现的,所以每种存储引擎中的索引都不一样。那么,数据库中的索引有什么作用?引入索引的目的是为了加快查询速度。如果数据量很大,大的查询要从硬盘加载数据到内存当中。一、数据库查询性能的优化涉及到的技术面非常广,一般建议用以下几个手段实行:1、减少数据访问相关的技术就是建立合适的索引,将全表扫描、索引扫描(scan)等耗时的操作转化为索...

2020-01-13 12:56:13 315

转载 SQL查询语句(where、jion、limit、group by、having等等)执行先后顺序

一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:1.执行where xx对全表数据做筛选,返回第1个结果集。2.针对第1个结果集使用group by分组,返回第2个结果集。3.针对第2个结果集中的每1组数据执行select xx,有几组就执行几次,返回第3个结果集。4.针对第3个结集执行having xx进行筛选,返回...

2020-01-13 12:26:45 4762 1

原创 为什么说栈的速度快,堆的速度慢?栈和堆的区别是什么?

栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是...

2020-01-06 16:55:59 3120 1

转载 支付清结算之账户和账务处理

这是清结算系列的第四篇文章,本文重点介绍清结算中的账户和账务的处理。请务必阅读这几篇文章以便理解这里的流程。支付清结算之基本概念和入门 支付清结算之渠道侧处理 支付清结算之电商侧处理一、账户体系在设计清结算系统前,首先需要完成账户体系的梳理。 账户是用来记录会计科目所反映的业务内容的工具,它根据会计科目来开设的。 账户有多种维度的分类。 按照经济内容来说,账户分为资产类账户、...

2020-01-06 16:28:06 1491 1

转载 支付清结算之电商侧处理

本文重点介绍支付清结算在电商侧的处理,这是系列文章中的第三篇,前两篇文章请参阅:《支付清结算之基本概念和入门》、《支付清结算之渠道侧处理》。这篇文章的内容比较枯燥,就是一堆的业务对应的会计分录。 下一篇文章将基于这个会计分录来设计账户结构。 后续和银行、渠道的对账,也需要基于这些会计分录来进行。支付继续小明的案例,小明通过工行在老熊公司买了一张100元的会员卡,工行按照支付金额的0...

2020-01-06 16:27:37 719 1

转载 支付清结算之渠道侧处理

继上篇文章《支付清结算之基本概念和入门》,这篇文章进一步介绍渠道侧的清结算处理。上一篇文章还遗留的很多问题,这里我们一步步详细介绍清结算中在渠道侧如何进行。这里的渠道侧,既包括银行,也包括第三方支付以及银联。支付上一篇文章中的小明通过工行在老熊公司买了一张100元的会员卡,工行按照支付金额的0.1%收取手续费, 产生了如下会计分录借: 银行存款-工行收款 100贷: 主营业...

2020-01-06 16:27:15 919

原创 支付清结算之渠道侧处理

继上篇文章《支付清结算之基本概念和入门》,这篇文章进一步介绍渠道侧的清结算处理。上一篇文章还遗留的很多问题,这里我们一步步详细介绍清结算中在渠道侧如何进行。这里的渠道侧,既包括银行,也包括第三方支付以及银联。支付上一篇文章中的小明通过工行在老熊公司买了一张100元的会员卡,工行按照支付金额的0.1%收取手续费, 产生了如下会计分录借: 银行存款-工行收款 100贷: 主营业...

2020-01-06 16:26:44 474

转载 中国的支付清算体系是怎么玩的?

我一直对支付很感兴趣。2015年,因为工作需要,我接触过好多第三方支付公司,做过支付路由,也处理了很多支付异常情况。但是支付中的清算部分我一直不太理解,不知道银联在联结各方的时候是如何发挥作用的。最近和银行IT圈子的校友们聚会,偷偷向工行和民生负责渠道、银联对接的同学请教了。所以有了这篇总结,供希望了解支付清算的朋友们参考。中国的支付清算有两套体系中国现代化支付清算系统和第三方支付清算系统...

2020-01-06 16:25:56 1205

原创 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

支付宝系统架构概况典型处理默认资金处理平台财务会计核算中心交易柔性事务支付宝的开源分布式消息中间件–Metamorphosis(MetaQ)Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐量大和支持本地和...

2020-01-06 16:24:42 501

原创 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

支付宝系统架构概况典型处理默认资金处理平台财务会计支付清算核算中心交易柔性事务支付宝的开源分布式消息中间件–Metamorphosis(MetaQ)Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞...

2020-01-06 16:18:20 403

转载 支付清结算之基本概念和入门

搞明白了清结算,你就明白了支付业务是怎么运转的。 从技术上来说,清结算并不是最难的,风控、信用,实施起来比清结算难多了。但从业务的角度来说,清结算可以说是最难理解的支付业务过程了。 它牵扯到支付所有相关的概念。为了降低理解难度,我们从常见的支付行为入手,逐步分析清结算如何进行。支付流程先说个比较简单的支付场景,用户(姑且称他为小明)用绑定的银行卡(用宇宙第一大行工行为例)来购买某电商公...

2020-01-03 19:30:55 913

转载 支付系统设计:绑卡、签约和身份验证(四)

在上一篇支付系统之银行卡支付中,挖了个坑,就是关于绑卡的坑。 在用户使用银行卡做支付之前,首先需要完成绑卡的操作。怎么实现绑卡,怎么验证用户绑的是自己的而不是隔壁老王的卡,这就是本期的重点。为什么要求用户绑卡?这和快捷支付有关。参见上一篇文章的分析,绑卡是将用户卡信息提供给电商,以后电商就用这个信息去银行完成支付。绑卡实际上是一个授权,让用户允许商家自动从他的账户上扣除资金。所以绑卡也叫...

2020-01-03 19:29:22 2522

转载 支付系统设计:银行卡支付(三)

这一期,回到支付系统的核心业务,即支付。每个电商公司的支付系统都已经或多或少的实现了交易核心功能,可也都是一直在改进,总是不断的有新的需求冒出来。所以这一期开始,我们梳理一下:到底有哪些支付方式?每种支付方式都是怎么运作的?支付和交易说到支付就不得不提交易。这两个概念在不同公司中是不一样的。我们的定义是,交易是生成订单;支付是对订单进行付款。 订单生成过程我们以后另开话题来说。这一次重...

2020-01-03 19:28:10 2132

转载 支付系统设计:对账处理(二)

可以说,对账是支付系统最头疼的事情。每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧帐;然后通过人工或者自动的方式,解决这些差异,即平帐。对电商系统来说,每一笔交易,在所有相关主体侧都要能对得上:交易主体,如果发起人是个人,必须能够从个人交易历史记录中找到这笔交易。但大部分人不会保留电子记录,所以一般是提供可以下载的账单或交易记录,让用户自...

2020-01-03 19:26:57 1095

转载 支付系统设计:支付系统的账户模型(一)

账户体系是支付系统的基础,它的设计直接影响整个系统的特性。这里探讨如何针对电子商务系统的支付账户体系设计。我们从一些基本概念开始入手,了解怎么建模。支付账户和登录账号账户体系设计首先要区分两个概念,支付账户和登录账号。 这是两个不同业务领域的概念:支付账户指用户在支付系统中用于交易的资金所有者权益的凭证;登录账号指用户在系统中的登录的凭证和个人信息。 一个用户可以有多个登录账户,一个...

2020-01-03 19:23:32 871

转载 微信支付兴起,万亿级用户交易记录存储的挑战

背景2013 年 8 月,微信红包上线。2014 年春节微信红包引爆社交支付。2015 年春晚红包摇一摇,推动微信红包在全国迅速普及。此后,每逢节假日或特殊日子,人们都会自主的兴起发红包,使微信红包成为热点。微信红包的火热带动微信支付的迅猛发展,按当时的发展速度预估,到 2015 年底,每天的微信支付交易记录会达到 20 亿。而原有的用户交易记录存储系统无法承受业务迅猛发展带来的冲击,一些瓶颈逐...

2020-01-03 19:15:33 508

转载 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

支付宝系统架构概况典型处理默认资金处理平台财务会计支付清算核算中心交易柔性事务支付宝的开源分布式消息中间件–Metamorphosis(MetaQ)Metamorphosis (MetaQ) 是一个高性能、高可用、可扩展的分布式消息中间件,类似于LinkedIn的Kafka,具有消息存储顺序写、吞吐...

2020-01-03 19:11:20 551

转载 从产品分类、模块功能和业务流程,了解支付产品服务的设计

本文介绍支付产品模块的设计。支付产品模块是按照支付场景来为业务方提供支付服务。这个模块一般位于支付网关之后,支付渠道之前。 它根据支付能力将不同的支付渠道封装成统一的接口,通过支付网关来对外提供服务。所以,从微服务的角度,支付产品本身也是一个代理模式的微服务,它透过支付网关响应业务方请求, 进行一些统一处理后,分发到不同的支付渠道去执行,最后将执行结果做处理后,通过支付网关再回传给业务方。...

2020-01-03 19:03:39 1593

原创 10个经典的 Java main 方法面试题

以下是笔者认为比较经典的关于Java main方法的面试题,与其说是Java面试题,其实也是Java的一些最基础知识问题,分享给大家,如有错误,请指出。1.不用main方法如何定义一个类?不行,没有main方法我们不能运行Java类。在Java 7之前,你可以通过使用静态初始化运行Java类。但是,从Java 7开始就行不通了。2.main()方法需要的参数不是字符串数组?不是...

2020-01-03 18:49:34 335

转载 为什么栈的速度比堆要快

在栈上分配的内存系统会自动地为其释放,例如在函数结束时,局部变量将不复存在,就是系统自动清除栈内存的结果。但堆中分配的内存则不然:一切由你负责,即使你退出了new表达式的所处的函数或者作用域,那块内存还处于被使用状态而不能再利用。好处就是如果你想在不同模块中共享内存,那么这一点正合你意,坏处是如果你不打算再利用这块内存又忘了把它释放掉,那么它就会霸占你宝贵的内存资源直到你的程序退出为...

2020-01-03 18:09:52 4296 1

原创 多态 对象类型转换

package com.example.demo;/** * @Description 多态 对象类型转换 * @Auther guofeng.xie * @Date 2020/1/2 21:15 */public class ClassCastTest { public static void main(String[] args) { /** ...

2020-01-02 22:09:44 314

Java8 新特性.rar

Java8新特性,包含代码实例与技术文档。

2020-03-29

空空如也

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

TA关注的人

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