自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xlecho的博客

仅用于技术交流,分享心得。

  • 博客(315)
  • 资源 (2)
  • 收藏
  • 关注

原创 maven install时跳过测试

maven install时跳过测试

2019-07-24 18:05:32 1487

原创 使用fastjson将对象和字符串进行转换

xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例、资料请联系QQ:1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!将对象转换成为字符串String str = JSON.toJSONString(infoDo);将字符串转换成为对象InfoDo infoDo = JSON.parseObjec...

2018-07-20 14:27:36 39241 4

原创 JDK1.8--体验Stream表达式,从一个对象集合中获取每一个对象的某一个值返回新集合

xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例、资料请联系QQ:1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!开发工具eclipsepackage com.echo.demo;import java.util.ArrayList;import java.util.List;import java....

2018-06-06 11:14:16 29210 4

原创 【支付】财务报表

财务报表是用于展示公司财务状况和业务绩效的重要工具,有三种主要的财务报表:资产负债表、利润表和现金流量表。资产负债表(Balance Sheet):利润表(Income Statement):现金流量表(Cash Flow Statement):这些报表提供了不同方面的财务信息,帮助管理者、投资者、债权人等了解公司的财务健康状况和经营情况。公司需要定期制作和公布这些报表,以便外部利益相关者对公司的财务状况有一个清晰的了解。

2024-01-18 10:09:11 391

原创 【支付】蓝票和红票

红字发票和蓝字发票区别为:代表不同、性质不同、目的不同。1、红字发票:红字发票代表的是冲抵的,是负数。2、蓝字发票:蓝字发票代表的是收入的,是正数。1、红字发票:红字发票是销项负数发票。2、蓝字发票:蓝字发票是一般情况下开具的发票。1、红字发票:红字发票的目的为冲抵蓝字发票的金额,那么最终某项经济活动的最终金额就是蓝字发票的金额减去红字发票的金额。2、蓝字发票:蓝字发票的目的为缴纳税费。在第三方支付系统中蓝票属于正常开票,用于缴纳税费,红票一般用于系统错误,掉单等常见的特殊情况导致的蓝票多开(红冲)。

2024-01-18 10:08:03 1829

原创 【支付】渠道

支付渠道,顾名思义就是平台上支持用户支付的通道,这些支付渠道帮助平台用户完成交易金额的支付,并且支持平台与银行之间进行资金流转、对账和清分,比如微信、支付宝、通联、易宝等。一般交易平台都会对接多家支付渠道公司。

2024-01-18 10:07:16 324

原创 【支付】账户设计中的各种账户

在互联网交易中,交易对象主体从原来线下交易的人和人,便成了线上的账户和账户的交易。主体从人变更成为了账户,机器能记住的是唯一码,是账户。交易过程中,账户就是结算的基础。包括交易之后,资金的流向、分账、结算等。

2024-01-18 10:06:33 414

原创 【支付】复式记账法

借贷记账法是以“借”和“贷”为记账符号,以“资产 = 负债 + 所有者权益“为理论依据,以”有借必有贷、借贷必相等“为记账规则,对每项经济业务都以相等的金额在两个或两个以上的有关账户中进行记录的一种复试记账方法。

2024-01-18 10:06:00 432

原创 【支付】第三方支付

人类交易历史可以追溯到很久远的时代,最初交易都是通过以物易物,人们用实物互换来满足彼此的需求。随着社会经济的发展,货币座位一种交易媒介逐渐出现。随着支付的概念也应运而生,从最早的贝壳、金属、到最后的纸币,货币的出现极大地出尽了交易的发展。随着科技的发展,互联网的兴起,颠覆了传统的货币交易模式,支付也迎来了信任危机。在互联网平台上,去购买东西,由于不能和原始的交易一样的,确定购买关系之后交易就会钱货两清,而互联网上购买的东西并不能保障购买之后获取能马上兑现,并且可能由于虚假、咋骗等因数,导致付款之后钱货两空

2024-01-18 10:04:34 418

原创 【支付】日切

日切是指在一个交易日内,银行会对交易进行日切,将交易进行分割,以便于日切。日切的目的是为了解决交易日内的交易量过大,导致交易系统的性能下降的问题。

2024-01-18 10:03:36 401

原创 【支付】差错交易

怎么去定义差错交易,在支付系统中是比较重要的,因为差错交易并不是真正意味上的交易出错,他是一种业务范围内的交互的妥协。具体有以下几种情况会造成差错交易对账。银行会在日切之后提供相关数据到第三方,第三方支付会将具体支付流文件和银行提供的信息流文件比对,勾兑系统会对每一笔交易进行金额上的比较,差错交易从设计到处理都是需要比较谨慎的,因为它会直接影响到账务报表和划款。简单说,差错的出现就会出现账务的不平,直接影响划款。

2024-01-18 10:02:11 402

原创 【支付】支付系统的架构设计

支付系统是指一系列的组织、技术和流程,允许个人或实体进行货币交换、转移和结算的系统。它涵盖了各种支付方式,包括但不限于现金、信用卡、借记卡、电子支付、移动支付和加密货币等。支付系统的核心目标是促进交易的便捷性、安全性和可靠性,以满足不同用户的支付需求。

2024-01-18 09:46:25 648

原创 【开源项目】银行查询服务的设计和实现

解决高并发痛点,同时优化设计为对接多个银行提供统一标准。也许还有更多的优秀方案能够完美解决这些痛点,当前项目也不一定完美,对于技术的使用可能也会有些不尽人意。这里并不完美,希望更多的大佬们斧正。

2023-05-31 16:03:23 936

原创 Redis数据结构-数据结构介绍和应用

【代码】Redis数据结构-数据结构介绍和应用。

2023-04-06 11:08:28 404 1

原创 Redis安装-使用包管理安装Redis

这种在Linux上使用apt-get包管理器安装Redis的方式称为“包管理安装”。这种安装方式使用操作系统的官方软件库来获取和安装软件包,可以自动处理软件包的依赖关系,并确保软件包与系统其他部分兼容。这是一种安全、可靠且方便的安装方式,适用于大多数Linux发行版。

2023-04-01 18:55:56 1059

原创 【开源项目】历史数据迁移

历史迁移解决方案。微服务的架构为基础,使用多种设计模式,如:单利、桥接、工厂、模板、策略等。其中涉及的核心技术有,多线程、过滤器等。致力于解决mysql大表迁移的问题。提供多种迁移模式,如:库到库、库到文件再到库等!

2022-12-23 14:40:01 1366

原创 记录一次并发问题的解决

该问题是在生产运行的过程中出现的。这个运行的项目是一个拉取第三方数据的一个服务,该服务会在拉取到数据之后直接将该数据直接插入到本地库,其中插入本地库的操作是调用的一个静态方法,静态方法对数据进行了多次数据处理,并且静态方法是异步执行的。当多个调用一起出现的时候,就相当于启动了多个线程去执行静态方法导致的并发。

2022-12-19 14:46:25 350

原创 【开源项目】震惊JDBC查询比MyBatis查询慢

文章编写起始原因,在编写项目的时候碰到一个深坑,JDBC获取5000条数据,居然耗时261s,MyBatis同样的操作,耗时12s左右,震惊。这个时候只能提出假设了,假设rs.next并不仅仅是走了光标而且还在数据库内做了什么,并且与我们的SQL有关,那我们SQL本身很慢的话,那这种现状就有解释。不过这里有个问题,我们执行SQL的时候,如果是在客户端里面执行的,他会自动限定查询的返回结果,比如:固定显示200条,其实就是limit 200,这个条件导致我们测试不是那么的准。先上图,看看查询的具体情况吧。

2022-12-08 16:20:23 1198

原创 【项目实例】SpringBoot+Vue+iview 实现的个人博客

该项目主要使用技术有Vue + iview + SpringBoot。数据库使用的是MySQL,数据库有对应的文档,对应的数据都在文档内。主要功能有界面导航,登录注册、博客录入、博客展示、书籍下载、多页面路由、多页面组件、秒杀、项目页。

2022-12-01 14:06:05 284

原创 【开源项目】mysql大表数据迁移

Historical migration solution. Based on the architecture of microservices, multiple design patterns are used, such as simple interest, bridge, factory, template, strategy, etc. The core technologies involved include multithreading, filters, etc. It is comm

2022-11-27 14:04:17 367

原创 【ShardingSphere】springboot整合shardingjdbc使用精确分片算法自定义分库分表

上两篇文章讲到了两种分库分表的方式,这两种方式可以归结为一种类型,都是通过配置的形式来分片数据。本文我们继续讲解一种新的方式来分片数据,除了配置的形式外,shardingjdbc还支持通过代码来自定义规则。自定义规则之前我们实现了id取模和按日期分库分表,这里我们为了展示技术,还是继续按照日期分表,不过这里通过代码来自定义。在开始写代码之前,我们先将分库分表规则定义好。这里我们建立两个库ds0,ds1。每个库建立表t_order2021、t_order2022两个表,语句如下:CREATE T.

2021-06-11 17:23:07 1809

原创 【ShardingSphere】springboot整合shardingjdbc按照年月分库分表

上文中我们实现了SpringBoot整合shardingjdbc+mybatis,其中我们分库分表的时候选择的是根据id取模来进行分库分表。这种分库分表的形式是比较经典的方式,但是也有很多其他的分表的方式,比如按照年月日分库分表。本文将详细讲述按照年月日分表环境准备在商业开发当中,有一些需求会将几年的数据放到一个库里面,但是当前库里面会建很多表,表明是按照年份和月份来建。我们这里为了演示技术,将会按照一个年份建一个库,一个年份对应的库里面按照日期建立365个表。我这里建立了两个库每个库对应的.

2021-06-10 09:56:10 3345 1

原创 【ShardingSphere】springboot整合shardingjdbc+mybatis进行增删改查

上文我们已经完成了springboot整合shardingjdbc并且拿到了有效的DataSource,那证明我们已经可以通过shardingjdbc的连接来操作数据库。本文我们将使用springboot整合shardingjdbc+mybatis,真正的实现分库分表的操作。大佬请略过整合mybatis添加mybatis依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> &lt.

2021-06-07 18:42:07 2761 3

原创 【ShardingSphere】shardingjdbc入门案例-springboot整合shardingjdbc

该教程仅仅适用于4.x版本,在ShardingSphere的迭代历史中很多的配置和兼容问题很大,这里入手一定要注意版本。构建一个SpringBoot项目SpringBoot项目的构建这里不再赘述,这里要提及的一点就是我们构建的时候,基本不需要引入依赖,后面会一步一步加入数据库准备构建两个库,库名安装ds0,ds1来定义数据库内建立t_order1,t_order2两个表,表结构一致,只是名字用数字排序对应SQL如下:DROP TABLE IF EXISTS `t_order1`;C.

2021-06-01 13:47:45 890

原创 【ShardingSphere】做优化上来就分库分表?请慎重分库分表

分库分表、分区能解决很多的问题,这也是我们在优化的时候常常听到的一些可行的方案,不过提到优化就来分库分表是不是不太合适,本文所阐述的就是分库分表、分区,什么时候用,应该怎么用,怎么选择。话题起点最近听到一些学员的面试复述,基本很多的人去面试的时候都会碰到要对MySQL进行优化这样的题目,很多学员很有经验的学员也在这上面栽了跟头。基本回答有几种加索引分库分表分区读写分离冷热数据处理采坑分析上面的几点,其实能够想到的情况下,看似是不错的。而且很多人也觉得这是标准答案。从表面上看,确实没.

2021-04-25 18:54:19 605

转载 【ShardingSphere】ShardingSphere概览

该文章摘抄自:https://shardingsphere.apache.org/document/current/cn/overview/。不支持转载简介Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,主要有三部分组成(这里以)ShardingSphere-JDBCShardingSphere-ProxyShardingSphere-Sidecar(TODO)能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布.

2021-04-21 18:40:54 7389

原创 【Spring源码这样读】-细扒ApplicationContext之obtainFreshBeanFactory()

容器刷新前的准备做好了之后,接下来就是初始化beanFactory,加载并解析配置,当我们的ApplicationContext执行过obtainFreshBeanFactory之后,它就能拥有BeanFactory全部的功能obtainFreshBeanFactory()做了哪些事先来看看源码,点击进入该方法之后,可以看到就调用两个方法protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { refreshBean.

2021-04-21 15:59:45 219

原创 【Spring源码这样读】-细扒ApplicationContext之prepareRefresh()

之前我们查看了初始化流程的super(parent)和setConfigLocations(configLocations),接下来我们进入最重要的环节refresh()方法,这个方法,才是我们spring初始化容器的最关键的方法。我们将一步一步细读,大佬略过。refresh()这个方法主要做了一下这几件事情:容器刷新前的准备初始化beanFactory,加载并解析配置设置beanFactory的属性BeanFactory创建完成后进行的后置处理工作执行BeanFactoryPostPr.

2021-04-21 10:21:21 210

原创 【Spring源码这样读】-细扒ApplicationContext之setConfigLocations(configLocations)

细扒之继续讲容器初始化流程,上篇讲了super(parent),本章初始化的下一步setConfigLocations(configLocations);大佬请略过setConfigLocations(configLocations)对应源码public void setConfigLocations(@Nullable String... locations) { if (locations != null) { Assert.noNullElements(locations, "Confi.

2021-04-20 18:30:21 246

原创 【Spring源码这样读】-细扒ApplicationContext之super(parent)

之前我们粗略的过了一遍IOC加载流程,现在我们开始细扒一下这个流程,不过我们不再去讲XmlBeanFactory,这里直接讲ApplicationContext,本文主要聊聊初始化的时候,super(parent)到底做了什么。ClassPathXmlApplicationContext类图深扒源码之前,一定要做好参考点,这里我们使用类图来做一个参考。super涉及的代码super这个方法对应的代码并不多,如果我们要去跟的话,只需要仔细一点,了解他的层级结构,基本问题不大。这里把所有源码都拿出.

2021-04-20 17:46:33 529

原创 【Spring源码这样读】-XmlBeanFactory为什么废弃了

容器的实现,我们之前大概把源码已经看了一遍。从基本流程上看ApplicationContext确实有优势的多,新增了很多的附加功能,或者说有更多的实现。但是也不能因为ApplicationContext有优势而直接废弃XmlBeanFactory,本文一起来理理为什么废弃XmlBeanFactoryXmlBeanFactory替代方案Spring 3.1以后已经废弃了XmlBeanFactory这个类了,现在推荐使用的是ApplicationContext。具体怎么使用,其实我们之前的小案例里面已经.

2021-04-18 14:18:39 1262 1

原创 【Spring源码这样读】-再次走近容器Spring IOC 三

上两篇,我们已经基本的分析完了XmlBeanFactory的应用实例,本章我们一起来分析一下ApplicationContext。大佬略过前两两篇已经将基本的XmlBeanFactory操作实例讲完了,这里我们来聊聊ApplicationContext。在之前也提过,这两个东西基本流程上应该是相差不多的。比如我们之前推测:读取配置文件根据配置文件找到对应的类并通过反射来实例化然后存入容器,被调用的时候取出ApplicationContext和XmlBeanFactory的区别在Appli.

2021-04-18 10:56:25 211

原创 【Spring源码这样读】-再次走近容器Spring IOC 二

继上文的问题,我们本章,继续分析我们的容器到底在做了一些什么事情。上文我们说到我们的ClassPathResource到底做了什么,但是我们阅读源码之后发现只是做了一些初始化。那我们推测的获取配置文件,然后去配置文件里面获取内容的推测还能成立吗?不需要急,我们一步一步往下看就能看到结果。既然我们看了ClassPathResource,我们在来看看new XmlBeanFactory(classPathResource);到底做了什么。构造bean工厂类/** * Create a new Xml.

2021-04-16 17:22:20 167

原创 【Spring源码这样读】-再次走近容器Spring IOC 一

准备工作已经做完了,现在我们就可以开始正式进入阅读环节。本文如题,主要讲的就是我们Spring的核心部分容器。这个词相比都是不陌生的,很多人接触Spring的时候就会接触到Spring的两大核心功能IOC和AOP。这里我们换一种角度来读,希望能给大家带来一些新的认知。大佬请略过,有异议的地方还请各位大佬指出。什么是容器说到容器,估计很多人都会浮现两个概念:IOC、DI。IOC:Inversion of Control,即控制反转。IOC并不是一种什么技术,而是一种编程思想。那什么是控制反转,为.

2021-04-15 17:34:04 236 4

原创 【Spring源码这样读】-下载安装一份Spring源码

阅读源码的前提是你得有一份源码,本文讲怎么下载和安装一份源码。大佬请略过下载源码之前准备环境源码的安装需要以下几个东西:JDK、IDEA、GRADLEJDK估计是多次一举的提议,不过还是要提一句,想要阅读Spring5.3X,需要安装JDK11。版本问题一定需要注意,不然安装不会成功JDK11下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.htmlIDEA: 建议选用2019.2以上的版本。GRADL.

2021-03-25 18:11:07 286 2

原创 【Spring源码这样读】-认识Spring的基本功能

读源码之前我们不妨去熟悉一下框架到底有哪些功能点,然后在根据功能点去提问,更有助于我们去读源码。比较熟练使用框架的大佬可以跳过,这里算是回顾一下技术参考书籍 《Spring源码深度解读》Spring整体架构图spring总共有20几个模块,包含的功能非常多,如果我们贸然的入手某一个功能,只会凌乱在庞大的代码量中。所以我们不妨拔高切入点,直接从架构图入手。(该图出自:spring 4.3.27的doc 2.2章节,最新的5.3.4并没有)架构图中模块的作用 Core Container(.

2021-03-16 15:49:10 1257 5

原创 【Spring源码这样读】-怎么阅读源码

做开发要不要读源码?如果你天天996,真心的不建议你去读源码(我是不介意做一个劝退师的)。读源码确确实实是一个费时费力的活,如果你每天都很忙,偶尔看一眼,想了解其中的奥秘,这很难办到。那我们需不需要读源码?读源码能给我们带来什么,本文会一一阐述,看完之后,你在考虑要不要去读!写在前面在考虑怎么读之前,我们不妨先来看看别人是怎么看待读源码这件事的。问:读源码有用吗?现在很多的东西都是开箱即用,既然有轮子,难道我还需要把源码读一遍再去创造一个轮子吗?答:有用!如果你天天996,偶尔看几分钟,.

2021-03-12 17:42:28 2808 7

原创 RabbitMQ没有延时队列?学会这一招玩转延时队列

什么是延时队列延时队列:顾名思义,是一个用于做消息延时消费的队列。但是它也是一个普通队列,所以它具备普通队列的特性,相比之下,延时的特性就是它最大的特点。所谓的延时就是将我们需要的消息,延迟多久之后被消费。普通队列是即时消费的,延时队列是根据延时时间,多久之后才能消费的。延时队列使用场景订单在十分钟之内未支付则自动取消。会员续费的定时推送用户注册成功后,如果三天内没有登陆则进行短信提醒。预定会议后,需要在预定的时间点前十分钟通知各个与会人员参加会议。优惠券过期提醒核心的应用内容基本都

2021-03-03 16:14:56 1316 9

原创 学会这一招,保证代码没有BUG?

近期面试高峰期来了,很多学员来咨询各种稀奇古怪的面试题,其中一道题目吸引了我的注意力,给大家共享一下。怎么保证你写的代码没有Bug?不可能的,不要想了

2021-03-03 14:14:47 331

原创 【震惊】小伙在公司用了个insert into select 居然被开除了

血一般的教训,请慎用insert into select。同事应用之后,导致公司损失了近10w元,最终被公司开除。事情的起因公司的交易量比较大,使用的数据库是mysql,每天的增量差不多在百万左右,公司并没有分库分表,所以想维持这个表的性能只能考虑做数据迁移。同事李某接到了这个任务,于是他想出了这两个方案先通过程序查询出来,然后插入历史表,再删除原表使用insert into select让数据库IO来完成所有操作第一个方案使用的时候发现一次性全部加载,系统直接就OOM了,但是分批次做.

2021-02-22 09:12:47 3078 8

aspectjweaver-1.9.5.jar

用于AOP编程,这里发布主要是为了配合博文【Spring教程-AOP(面向切面编程)】里面的实例,这里面的实例使用了该jar包。

2020-05-14

aspectjrt-1.9.5.jar

用于AOP编程,这里发布主要是为了配合博文【Spring教程-AOP(面向切面编程)】里面的实例,这里面的实例使用了该jar包。

2020-05-14

空空如也

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

TA关注的人

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