自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微服务统一认证中心

在微服务架构中,由于不同的业务会拆分成不同的微服务,传统的单体项目一般是通过过滤器进行拦截校验,而微服务显然不可能分发到各个服务进行用户认证,这就需要由一个统一的地方来管理所有服务的认证信息,实现只登录一次,即可在各个服务的授权范围内进行操作;本文采用springcloud-oauth2来实现多个微服务的统一认证。

2022-04-16 16:19:41 5830 2

原创 京东商城SPU、SKU是如何设计的

SPU全称Standard Product Unit,即标准化产品单元。简单理解就是某一种产品SKU全称Stock Keeping Unit,即库存量单元。即具体的一件商品

2022-04-07 18:31:26 14126 10

原创 Java并发编程之美

三. volatile关键字能够保证线程可见性,当一个线程修改共享变量时,能够保证对另外一个线程可见性, 但是注意他不能够保证共享变量的原子性问题,在学习volatile之前我们先来看一段代码:public class MyVolatile extends Thread { private volatile static boolean flag = true; @Override public void run() { while (...

2021-03-11 17:41:39 2403 2

原创 MySQL索引原理与性能调优

MySQL 应该是最流行的后端数据库,尽管 NOSQL 近几年越来越火爆,可是相信大部分架构师还是会选择 MySQL 来做数据存储。作为一名Java程序员相信MySQL我们都不陌生,但真的了解MySQL底层实现与性能优化吗?一直想写几篇关于MySQL,JVM,多线程等底层实现与调优的博客,最近时间比较充足,那就让我们开启第一站之“MySQL”。首先来了解一下MySQL都有哪些引擎MySQL引擎主要有InnoDB,MyISAM,CSV,Archive,Memory等,本文只讲常用的两种..

2021-03-03 17:53:03 2250

原创 Java - 支付宝支付

一. APP支付APP支付适用于商家在 App 应用中集成支付宝支付功能。 商家APP调用支付宝提供的 SDK,SDK 再调用支付宝APP内的支付模块。如果用户已安装支付宝 APP,商家 APP 会跳转到支付宝中完成支付,支付完后跳回到商家APP内,最后展示支付结果。如果用户没有安装支付宝 APP,商家 APP 内会调起支付宝网页支付收银台,用户登录支付宝账户,支付完后展示支付结果。 目前支持手机系统有:iOS(苹果)、Android(安卓)。【用户已安装支付宝支付流程】◆用户在商家 App .

2020-06-21 09:35:20 27251 5

原创 Java - 百度收银台

目前,网上关于百度收银台的博客寥寥无几,我几乎没看到过,从头到尾都是跟着官方文档来的,中间遇到过一些小挫折,在百度客服小姐姐和百度技术小哥的指导下,最终还是调通了,并成功上线,好了不扯了,下面开始进入正题 !本文默认各位读者的公司都注册过百度智能小程序账号,并上线应用,只是单纯来寻求百度收银台支付的Blog ~【简介】百度收银台支付是百度面向有开发能力的智能小程序合作者提供的支付能力,聚合了度小满、微信、支付宝等多种支付方式,方便开发者一站式快速接入多种支付渠道,让百度用户在智能小程序场景下,直

2020-06-18 18:08:07 14492 17

原创 Java - 微信支付

首先贴出官方文档,关于介绍,场景,参数说明,可以直接看文档:https://pay.weixin.qq.com/wiki/doc/api/index.html一. APP支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_11. 统一下单商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再在APP里面调起支付。 微信统一工具类package com.maiji..

2020-06-18 15:30:24 17660 1

原创 SpringCloudAlibaba - 数据同步中间件Canal

简介官方文档:https://github.com/alibaba/canalcanal ,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消...

2020-03-01 17:35:26 9856

原创 SpringCloudAlibaba - 阿里分布式事务Seata

一. Seata简介Seata:简易可扩展的自治式分布式事务管理框架,其前身是fescar。是一种简单分布式事务的解决方案。Seata给用户提供了AT、TCC、SAGA和XA事务模式,AT模式是阿里云中推出的商业版本GTS全局事务服务,目前Seata的版本已经到了1.0,我们本篇用是0.9版本。官网:https://github.com/seata/seataSeata由3部分组成:...

2020-02-22 19:24:27 13232 2

原创 SpringCloudAlibaba - 分布式流量防卫兵Sentinel

Sentinel: 分布式系统的流量防卫兵具体介绍可以看官方文档:https://github.com/alibaba/Sentinel/wiki/介绍,下面我们说点官方没有的东西:服务保护的基本概念:【服务限流/熔断】服务限流目的是为了更好的保护我们的服务,在高并发的情况下,如果客户端请求的数量达到一定极限(后台可以配置阈值),请求的数量超出了设置的阈值,开启自我的保护,直接调用...

2020-02-20 13:20:18 11401

原创 SpringCloudAlibaba - 阿里系消息中间件RocketMQ

关于消息中间件及各种MQ对比,见博主之前的博客:ActiveMQ/RabbitMQ;本文讲解阿里开源中间件RocketMQ。一. 环境搭建上传最新的RocketMQ安装包rocketmq-all-4.6.0-bin-release。1. 解压配置文件unzip rocketmq-all-4.6.0-bin-release.zip报错:-bash: unzip: 未找到命令;...

2020-01-31 14:50:16 9248

原创 SpringCloudAlibaba - 新一代服务网关Gateway

什么是微服务网关微服务网关是整个微服务API请求的入口,可以实现日志拦截、权限控制、解决跨域问题、限流、熔断、负载均衡、黑名单与白名单拦截、授权等。过滤器与网关的区别过滤器用于拦截单个服务网关拦截整个的微服务Zuul与Gateway有哪些区别Zuul网关属于netfix公司开源的产品属于第一代微服务网关Gateway属于SpringCloud自研发的第二代微服务网关...

2020-01-24 15:06:28 9802

原创 SpringCloudAlibaba - 基于Nacos构建分布式配置中心

分布式配置中心可以实现不需要重启我们的服务器,动态的修改我们的配置文件内容,常见的配置中心有携程的阿波罗、SpringCloud Config、Nacos轻量级的配置中心等。Nacos支持三种部署模式,分别为:单机模式 - 用于测试和单机试用。 集群模式 - 用于生产环境,确保高可用。 多集群模式 - 用于多数据中心场景官方文档网址:https://nacos.io/zh-cn/do...

2020-01-23 21:08:46 8497

原创 SpringCloudAlibaba - RPC远程调用OpenFeign

OpenFeign是一个Web声明式的Http客户端调用工具,提供接口和注解形式调用。开发微服务,免不了需要服务间调用。Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用,下面开始进行整合:首先基于IDEA建立maven聚合项目如下图:其中,springcloud-alibaba...

2020-01-21 14:13:43 10319

原创 SpringCloudAlibaba - 注册中心Nacos

一. 注册中心Nacos1. 微服务架构演变过程传统架构:即单点应用,也就是ssh/ssm项目,该架构模式没有对业务逻辑实现拆分,所有代码都写入到同一个工程中里,适合小公司开发团队或者个人开发;这种架构模式最大的缺点是如果该系统一个模块出现不可用、会导致整个系统无法使用。分布式架构:分布式架构模式是基于传统的架构模式演变过来,将传统的单点项目根据业务模块实现拆分、会拆分为会员系统、订单...

2020-01-13 11:30:36 8556

原创 Redis实战原理解析

Redis简介:Redis 是完全开源免费的,是一个高性能的key-value数据库,目前市面上主流的no-sql数据库有Redis、Memcache、Tair(淘宝自研发),Redis的官网:https://redis.io/之前的博客已经写过redis的搭建,主从复制以及哨兵机制,本篇博客侧重于讲解底层原理,实战等...开始吧那就1. Redis应用场景相信我们程序员都用过或者听过...

2019-11-29 00:28:18 9454

原创 Dubbo从入门到实战

一. Dubbo概述1. 什么是Dubbo?一款分布式服务框架,高性能和透明化的RPC远程服务调用方案,SOA服务治理方案。每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。2. Dubbo优缺点优点: ① 透明化的远程方法调用 像调用本地方法一样调用远程方法;只需简单配置,没有任何API侵入。 ②软负载均衡及容错机...

2019-11-26 17:27:05 8992

原创 LinkedList集合深度解析

上文讲解了ArrayList的底层实现原理,感兴趣的小伙伴可以去看下,本文重点讨论LinkedList集合。首先说下ArrayList和LinkedList的区别:(相同点都是有序的~)①ArrayList底层数据结构是动态数组,LinkedList底层数据结构是双向链表。② 查询或者修改的时候,ArrayList比LinkedList的效率更高,因为LinkedList是线性的基...

2019-08-14 17:40:30 9329

原创 ArrayList集合深度解析

一. 手写高仿ArrayList集合基本原理思想Arraylist集合底层使用动态数组实现,随机查询效率非常快,插入和删除需要移动整个数组、效率低。1. 高仿ArrayList集合public interface MyList<E> { /** * 集合的大小(长度) * @return */ int size(); ...

2019-08-14 11:13:18 9545 2

原创 SpringBoot整合JWT

一. JWT简介1. 什么是JWT?JWT(JSONWeb Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证;应用场景如用户登录。JWT详细讲解请见 github:https://github.com/jwtk/jjwt2. 为...

2019-08-12 17:03:55 68650 37

原创 SpringBoot源码分析

一.SpringApplication.run(Xxx.class, args) 源码分析@SpringBootApplicationpublic class IndexApplication { public static void main(String[] args) { SpringApplication.run(IndexApplication.clas...

2019-08-02 16:40:06 9830

原创 Sharding-JDBC 分库分表

一. 初识Sharding-JDBC1. Sharding-JDBC是什么?Sharding-JDBC提供标准化的数据分片、分布式事务和数据库治理功能,定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。适用于任何基于Java的ORM框...

2019-08-01 14:48:42 8556

原创 SpringMVC源码分析

一. Servlet与SpringMVC的关系1. Servlet与SpringMVC关系Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:① 编写一个Java类,实现servlet接口。② 把开发好的Java类部署到web服务器中。按照一种约定俗成的称呼习惯,通常我们也把实现了s...

2019-07-29 18:14:43 9425

原创 SpringCloud - Apollo分布式配置中心

1. 简介Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。类似于SpringCloud组件中的Config,不同的是Apollo有 单独的管理界面,并且不用整合gitee/gitlab,配置简单。用户在Apollo修改完配置并发布后,客户端...

2019-06-30 17:28:46 12287 1

原创 微服务高并发秒杀实战

什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。 秒杀一般是访问请求数量远远大于库存数量,只有少部分...

2019-06-23 22:24:17 12770 1

原创 SpringBoot整合极光推送

一. 极光推送代码1. maven依赖<!--极光推送--><dependency> <groupId>cn.jpush.api</groupId> <artifactId>jpush-client</artifactId> <version>3.2.9</version&...

2019-06-14 21:52:36 15081 25

原创 设计模式专题 - 外观模式

一. 概述1. 什么是外观模式外观模式(Facade)也叫做门面模式,他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。堪称最简单的设计模式之一!2. 外观模式应用场景简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个...

2019-06-13 18:11:17 9345

原创 设计模式专题 - 装饰模式

一. 概述1. 什么是装饰模式?在不改变原有对象的基础上附加功能,相比生成子类更灵活(典型案例:打地基)装饰模式应用场景:在不改变原有对象的基础上附加功能,相比生成子类更灵活装饰模式优缺点:优点:可以不改变原有对象的情况下动态扩展功能,可以使扩展的多个功能按想要的顺序执行,以实现不同效果缺点:更多的类,使程序复杂2. 装饰模式名词定义① 抽象组件:定义一个...

2019-06-09 23:01:57 9340

原创 设计模式专题 - 模板方法设计模式

一. 概述&场景分析1. 设计模式分类创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式行为模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式2.要学模板方法设计模式,首先需要理解工厂模...

2019-06-09 18:40:24 10013

原创 设计模式专题 - 策略模式

一. 设计模式概述1.为什么使用设计模式?使用设计模式可以重构整体架构代码、提交代码复用性、扩展性、减少代码冗余问题。Java高级工程师必备的技能!2.设计模式六大原则:① 开闭原则(Open Close Principle)开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于...

2019-06-09 10:23:35 9475

原创 分布式任务调度平台XXL-JOB

一. 简介1. 概述XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。github地址:https://github.com/xuxueli/xxl-job官方文档:http://www.xuxueli.com/xxl-job/#/2. 架构图步骤:① 部署:xxl-j...

2019-06-09 10:23:30 9238

原创 基于LCN彻底解决分布式事务

一 . 理论知识1.数据库管理系统中事务(transaction)的四个特性:简称ACID(这种特性简称刚性事物)原子性(Atomicity) 原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。一致性(Consistency)一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏;这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致...

2019-06-09 10:23:19 15786 5

原创 SpringBoot整合RabbitMQ(小兔子成神之路)

关于什么是消息中间件以及好处,可以参考博主之前的文章(SpringBoot整合ActiveMQ),这里就不做过多介绍 ~一 . 简单整合1. 添加RabbitMQ依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo...

2019-06-09 10:23:10 8461 1

原创 基于Docker+Jenkins实现自动化部署

1. 准备工作:虚拟机centos7,安装jdk1.8,安装docker(详情可以参考我之前的博客)使用码云创建私有私有git仓库,使用IDEA将本地springboot项目上传到git仓库中(详情参考:https://blog.csdn.net/zsyoung/article/details/76891211)2. 什么是JenkinsJenkins是一个开源软件项目,是基于...

2019-06-09 10:19:24 1976 1

原创 分布式ID生成算法 - 雪花算法SnowFlake

1. 背景Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID1、twitter的SnowFlake生成ID能够按照时间有序...

2019-04-22 17:08:33 10301

原创 SpringBoot整合ActiveMQ

1. 消息中间件产生的背景在客户端与服务器进行通讯时.客户端调用后,必须等待服务对象完成处理返回结果才能继续执行。客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用户的请求不可达,客户会受到异常。2. 消息中间件概述① 什么是消息中间件面向消息的中间件(MessageOrlentedMiddlewareMOM)较...

2019-04-06 22:11:11 9994

原创 SpringBoot整合Swagger生成API文档

方式一1.依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version></dependency><depen...

2019-03-14 17:29:13 10253

原创 SpringCloud+Zipkin微服务链路跟踪(整合Mysql实现持久化)

1. 下载zipkin-serve由于SpringBoot1.x版本与SpringBoot2.x版本在整合SpringCloud的时候有很大的区别,所以整合Zipkin也不列外,SpringBoot1.x需要单独搭建zipkin-server端,在 Spring Boot 2.0 版本之后,官方已不推荐自己搭建定制了,而是直接提供了编译好的 jar 包,不需要手动搭,直接在官网下载一个zipk...

2019-02-22 11:34:55 2317

原创 Linux系统安装ZooKeeper

1. 下载压缩包并上传解压地址:http://apache.fayea.com/zookeeper/上传到/usr/local目录下,并重命名为zookeeper(mv命令)2. zookeeper配置进入zookeeper目录,新建两个目录data和log,用于存放文件和日志进入conf目录,拷贝zoo_sample.cfg命名为zoo.cfg打开zoo.cf...

2019-01-16 11:16:55 9754

原创 Docker部署SpringBoot项目

1. 在/usr/local下新建dockerapp目录,用于存放jar包 [root@xxxxxx local]# mkdir dockerapp2. 进入dockerapp,上传jar包到dockerapp目录下,新建Dockerfile文件进行对该jar包的docker配置[root@xxxxxx local]# cd dockerapp新建一个Dockerfile文件,...

2019-01-09 23:03:33 9558

空空如也

空空如也

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

TA关注的人

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