自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全云化架构(十二):ElasticJob架构

ElasticJob架构Elastic-Job 是 ddframe 中的 dd-job 作业模块分离出来的作业框架,基于 Quartz 和 Curator 开发,在 2015 年开源。一、基本介绍Elastic-Job提供了一种轻量级,无中心化解决方案。没有统一的调度中心。集群的每个节点都是对等的, 节点之间通过注册中心进行分布式协调。E-Job 存在主节点的概念,但是主节点没有调度 的功能,而是用于处理一些集中式任务,如分片,清理运行时信息等。Elastic-Job 最开始只有一个 elasti

2022-02-17 17:20:47 819

原创 全云化架构(十一):分布式定时任务框架对比

分布式定时任务框架对比把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。常见的分布式定时任务平台有elastic-job , xxl-job ,quartz , saturn, opencron , antares。一、elastic-jobelastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。E

2022-02-17 14:33:09 888

原创 全云化架构(八):配置中心组件

配置中心组件configuration-spring-boot-starter一、为什么需要配置中心1、配置实时生效传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮询频率低感知配置变化的延时就长,轮询频率高,感知配置变化的延时就短,但比较损耗性能,需要在实时性和性能之间做折中。配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。2、配置管理流程配置的权限管控、灰度发布、版本管理、格式检验和安全配置等

2022-02-16 15:01:42 289

原创 全云化架构(三):上线流程

2022-02-15 10:59:29 106

原创 全云化架构(一):概述

一、应用框架构特点圆心应用平台是一个“聚合、开放”的基础架构平台,依托主流技术框架,高性能、可伸缩、高可用、可扩展,学习成本低,具有以下几个突出优点:1、全云化架构设计之初充分调研云原生应用特点,在一开始设计架构时,就重点解决常规应用不关注的一份代码多份部署、代码与配置严格分离、应用观测难等问题,对微服务架构做定制开发,解决了常规程序微服务程序对ip强依赖的难题,应用的构建、发布和运行分离也完全分开,另外,还加强应用的可观测性,为云原生应用做了大量工作,支持容器化部署。除此之外,还留有扩展空间,未来

2022-02-15 10:42:32 1279

原创 MySQL在线DDL技术方案

1、概述一、背景目前,ERP系统上线过程中,主要包括代码分支合并、数据库脚本执行、程序发布和测试验证四大步。随着公司业务发展,仓库下班的时间一再推迟,再加上新疆门店的即将开始营业,ERP系统上线的时间点由原来10点已推迟到凌晨12点以后,留给技术上线的窗口时间越来越短,受上线周期短的约束限制,每个周期迭代的功能点也不得不考虑此因素。通过对上线过程的分析,二至五成的时间是在等MySQL脚本执行,受DDL锁表影响,每次升级不得不在营业结束后停机执行,如果能把这部分等待时间节省掉,可以减少大量上线过程中的

2022-02-14 15:48:18 1213

原创 Elasticsearch相关概念小记

存储数据到 Elasticsearch 的行为叫做索引倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)个人认为翻译成转置索引可能比较合适。一个未经处理的数据库中,一般是以文档ID作为索引,以文档内容作为记录。而Inverted index 指的是

2021-09-09 10:44:49 78

原创 Docker - 部署Elasticsearch

一、部署Elasticsearch前言:在阿里云环境部署Elasticsearch。1. 拉取Elasticsearch镜像docker pull elasticsearch2. 启动Elasticsearch容器docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /home/elas

2020-11-27 11:07:01 104

原创 知识整理(九):算法

一、排序算法1. 冒泡public class Bubble { public static int[] asc(int[] nums){ for (int i=0; i<nums.length; i++){ for (int j=i+1; j<nums.length; j++){ if (nums[i] > nums[j]){ int temp = nu

2020-11-13 14:41:17 86

原创 知识整理(八):SpringCloud 相关知识

一、SpringCloud 相关知识1. Spring Cloud 架构图2. Eureka 原理   答:Eureka两大核心功能:服务的发现与注册、心跳和故障。3. Eureka 集群原理   答:Eureka集群是peer to peer模式,也就是说集群中的每个Eureka实例是平等的,每个实例都可以进行服务的发现和注册,这点与ZooKeeper是不同的。4. Eure...

2020-10-12 13:44:35 141

原创 Docker - 部署RocketMQ

一、部署namesrv前言:在阿里云环境部署RocketMQ。1. 拉取RocketMQ镜像docker pull rocketmqinc/rocketmq2. 启动nameserver容器docker run -d -p 9876:9876 -v /home/rocketMQ/namesrv/logs:/root/logs -v /home/rocketMQ/namesrv/store:/root/store --name rocketmq-namesrv -e "MAX_POSSIBL

2020-09-22 15:28:25 378

原创 Docker - 部署Zookeeper/Kafka

一、部署Zookeeper前言:在阿里云环境部署Zookeeper。1. 拉取Zookeeper镜像docker pull wurstmeister/zookeeper 2. 启动Zookeeper容器docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper3. 阿里云环境开启端口因为我的服务器是阿里云,需要在安全组配置上,开放2181端口,不然没法访问。二、部署Kafka前言:在阿里云环

2020-09-16 15:15:14 287

原创 Docker - 部署Redis

一、部署Redis前言:在阿里云环境部署Redis。1. 拉取Redis3.0.5镜像docker pull redis:3.0.52. 拷贝redis.conf配置文件注:启动Redis容器直接挂载配置文件会报错,无法启动容器。所以在启动Redis容器前,需要我们从网上找个redis3.0的redis.conf放到挂载的目录下。3. 修改redis.conf(可略过)注释 bind 127.0.0.1 ( 注释符号 #)protected-mode yes 修改成 prot

2020-08-05 10:13:02 313

原创 Docker - 部署MySQL8.0

一、部署MySQL前言:在阿里云环境部署MySQL8.0。1. 拉取MySQL8.0镜像docker pull mysql:8.0.192. 启动MySQL8.0容器docker run-d--name mysql8.0.19--restart always-p 3306:3306-v /home/mysql/conf.d/my.cnf:/etc/mysql/my.cnf-v /home/mysql/logs:/logs-v /home/mysql/data/mysql:/v

2020-07-16 11:10:10 499

原创 Docker - 搭建Jenkins

一、搭建Jenkins前言:在阿里云环境搭建自己的Jenkins。1. 拉取Jenkins镜像// 1. 在Docker仓库搜索Jenkins镜像docker search jenkins// 2. 拉取Jenkins镜像docker pull jenkins/jenkins 注:不要拉取jenkins那个star最多的镜像,插件下载有问题2. 运行Jenkins容器docker run -d --name jenkins_8081 -p 8081:8080 -v /home/j

2020-06-29 11:16:00 130 1

原创 知识整理(六):RocketMQ 相关知识

一、消息队列1. 为什么要用消息队列?   答:异步、解耦、削峰。2. RocketMQ如何解决重复消费消息问题?   答:保证幂等性。   什么是幂等性?   答:多次执行的结果始终一致。也就是说,相同的接口,无论你调1次还是100次,结果都是完全一致的。3. RocketMQ如何解决顺序消费消息问题?   答:一致性Hash(Hash取模法)。就是让一类请求(同一个订单)落在...

2020-06-19 09:23:24 148

原创 Docker - 搭建GitLab

一、搭建GitLab前言:在阿里云环境搭建自己的GitLab。1. 拉取GitLab镜像docker pull gitlab/gitlab-ce注:不指定版本则拉取latest。2. 运行GitLab容器docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/

2020-06-18 17:26:34 210

原创 知识整理(五):Dubbo 相关知识

一、Dubbo相关知识1. 什么是Dubbo?   答:Dubbo是一个分布式服务框架。2. Dubbo提供的负载均衡策略   答:基于权重的随机负载:给不同的提供者设置权重,按照权重来随机访问。基于权重的轮询负载:给不同的提供者设置权重,按照权重来轮询访问。最少活跃调用数:按照提供者的提供速度来计算,提供速度越慢的越少调用,越快的越多调用。一致Hash:相同参数的访问请求...

2020-06-18 14:21:10 150

原创 Docker - 在阿里云新安装

一、安装步骤1. 安装 containerd.io// 1. 下载 containerd.iowget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm// 2. 安装 containerd.ioyum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm注:这一步也是为了解决报错:Cen

2020-06-15 11:01:19 354

原创 知识整理(四):Redis 相关知识

一、Redis相关知识1. Redis中的五大数据结构   答:   ① String:简单的key-value模式,value不仅可以是string也可以是数字。   ② Hash:hash是一个string类型的key,再加一个value,适合存储对象。   ③ List:链表,适合存储消息列表、粉丝列表、关注列表等。   ④ Set:一个可以排除重复的集合,适用于共同关注、共同...

2020-06-12 17:54:15 131

原创 知识整理(三):Mysql 数据库知识

一、数据库知识1. MYISAM和InnoDB的区别?   答:MYISAM不支持事务和行级锁,而且其最大的缺陷在于数据库崩溃后无法安全恢复。2. 事务的四大特性   答:ACID   ① 原子性:事务是最小执行单元,要么全部成功,要么全部失败。   ② 一致性:事务改变的数据,前后要一致。   ③ 隔离性:并发操作时,当一个事务在执行时,外界无法操作它。   ④ 持久性:一旦一...

2020-06-11 11:35:52 201

原创 知识整理(一):Java 基础知识

一、Java基础知识1. 为什么说Java相对性能较差?   答:因为Java是半编译语言,不能被直接编译成机器可以执行的机器码,所以相对于直接编译语言性能略差。2.Hotspot原理?   答:由解释器和编译器(C1:Client Complier和C2:Server Complier)组成。   解释器:直接将字节码转化成机器码执行。   编译器:基于计数器探测热点代码,然后使用...

2020-06-10 09:45:54 199 1

原创 Docker - 常用命令

1. 查看Docker版本docker version2. 查看所有已下载镜像docker images或docker image ls3. 查看所有容器docker container ls4. 查看正在运行的容器docker ps5. 清理镜像文件清理临时的、没有用的镜像文件docker image prune删除所有没有用的镜像,而不仅仅是临时文......

2020-04-24 16:43:32 181

原创 知识整理(七):知识点补充

一、知识点补充1. 什么是API网关   答:API网关可以看做是系统与外界联通的入口,API网关可以做一些非业务的逻辑处理,如:认证鉴权、监控、缓存和请求路由。2. 分布式ID生成方案   答:   下面着重介绍4种方案:雪花算法、百度UidGenerator、美团Leaf和Redis。雪花算法:41bit-时间戳(毫秒级) + 10bit-机器码 + 12bit-序列号...

2020-04-24 16:22:12 103

原创 RocketMQ简介、安装与使用

一、概览1. 简介:   Apache RocketMQ是一个采用Java语言开发的分布式的消息系统,由阿里巴巴团队开发,与2016年底贡献给 Apache,成为了Apache的一个顶级项目。   在阿里内部,RocketMQ 很好地服务了 集 团大大小小上千个应用,在每年的双十一当天,更有不可思议的万亿级 消息通过 RocketMQ 流转(在 2017 年的双十一当天,整个阿里巴巴集团通过...

2019-12-20 11:05:06 367

原创 使用Java语言优雅地转换XML

一、概览1. 本文目的:   优雅地处理XML,包括实现XML字符串、文件与Java对象的互相转换。2. 使用条件:   不需要额外引入Jar包,只需要使用JDK1.83. 使用方法:   完成转换只需要完成两个步骤:   ① 配置Java对象   ② 调用转换方法二、配置Java对象   只需建立与XML对应的对象实体,再加上几个注解,无论结构多么复杂的XML,都能搞定。...

2019-12-17 17:37:56 2262

原创 数据结构学习与分析(Java语言实现)

一、概览1. 本文目的:   获得图灵奖的Pascal之父——Nicklaus Wirth说过一句经典的名言“程序就是数据结构加算法!”,作为一个Coder,掌握并深刻理解Java中的数据结构还是很有必要的。...

2019-08-13 17:42:30 165

原创 ActiveMQ在电商项目(生产环境)的应用

一、概览1. 本文目的:   分析生产级别的电商项目,是怎么使用ActiveMQ的。

2019-08-06 16:52:51 879

原创 Java高并发之魂:synchronized深度解析

一、概念1. synchronized释义:   synchronized 中文释义使同步化。2. 一句话说出synchronized的作用:   能够保证在同一时刻最多只有一个线程执行某段代码,以达到保证并发安全的效果。二、代码演示1. 不使用并发的后果:   案例:两个线程,同时分别对一条数据进行累加10万次。   结果:最终,i值小于20万。   结果分析:i++的过程可...

2019-07-18 14:57:43 163

原创 使用NIO - 实现一个多人聊天室

一、概念1. NIO简介:   ① 姓名:Non-blocking I/O 或 New I/O   ② 出生:JDK 1.4   ③ 作用:支持高并发网络服务2. NIO网络模型相对于BIO的改进:   ① 非阻塞式 I/O模型   ② 弹性伸缩性强(BIO模型是多线程处理,NIO只需一个线程处理;所以BIO有性能瓶颈,而NIO理论上是可以有无数个客户端接入的)   ③ 单线程节省...

2019-07-12 10:39:57 461

原创 深入理解 Spring Aop 实现原理

一、概念1. 编程范式概览:    1. 面向过程编程    2. 面向对象编程    3. 面向切面编程    4. 函数式编程    5. 事件驱动编程2. Aop的初衷:    1. 解决代码重复问题    2. 分离非功能性需求和功能性需求...

2019-07-04 16:42:57 172

原创 Ajax跨域问题完全解决方案

一、概念1. 跨域问题产生原因:    ① 浏览器限制    ② XHR(XMLHttpRequest)请求2. 解决思路:

2019-07-02 17:55:33 313

原创 深入理解 Spring IoC 实现原理

一、学习提纲二、核心概念1. 什么是IoC:   IoC:Inversion of Control,控制反转、依赖注入   控制什么? 答:控制对象的创建和销毁(生命周期)。   反转什么? 答:将对象的控制权交给IoC容器。...

2019-06-24 16:35:32 258

原创 SpringBoot 2.x + quartz 实现分布式定时任务

一、Quartz 核心概念   我们需要明白 Quartz 的几个核心概念,这样理解起 Quartz 的原理就会变得简单了。1.Job:  表示一个工作,要执行的具体内容。此接口中只有一个方法,如下:   void execute(JobExecutionContext context)2.JobDetail:  表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要...

2019-06-18 15:07:59 3277

原创 Spring Boot 2.x 自动配置原理解析

一、导语   自从Spring Boot问世以来,就饱受开发人员的喜爱,它的出现是一次革命,让Java开发者们从Spring繁琐的配置中解放了出来,**“约定优于配置”**的理念深入人心! 二、@SpringBootApplication 注解首先,一切的源头在 @SpringBootApplication这个注解,进入此注解:注解说明:    1.@Target:定义了此注...

2019-06-05 17:50:28 723 2

原创 Spring Security 控制授权

一、Spring Security 授权1. Spring Security 权限表达式:2. RBAC 数据模型:

2019-05-14 16:47:28 201

原创 基于JWT和Oauth2 实现 SSO(单点登录)

一、导学1. JWT 的特点:  自包含: 在JWT里面可以包含很多信息,可从服务器解析,而不仅仅是一串没有意义的字符串。  密签: 安全签名,防止别人篡改。  可扩展: 因为JWT可以包含有用的信息,所以其具有不俗的扩展性。...

2019-05-10 17:40:37 4515 11

原创 解决 JWT + SSO 报错 :Error creating bean with name 'jwtTokenServices' ...

异常如下: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jwtTokenServices' defined in org.springframework.boot.autoconfigure.security.oauth2.resource.Res...

2019-05-05 17:30:54 10906 4

原创 Spring Security OAuth 开发认证服务器

一、导学1. 为什么要用Token代替session:  开发繁琐:因为浏览器是天生支持 Cookie(JSESSION) 的,不需要写什么代码;而app想用Cookie(JSESSION),需要写大量代码来支持。  安全性和客户体验差  有些前端技术不支持Cookie:如微信小程序2. Spring Security OAuth 简介:  注:我们要自己实现两个服务器,认证服务器...

2019-04-30 10:40:57 1831

原创 Spring Social 1.1.6 学习笔记

一、导学Spring Social 主要是用于处理第三方认证。1. OAuth协议 介绍:  角色介绍 :    资源所有者(用户):主要指的就是用户。    第三方应用:比如微信里的小程序。    服务提供商:包含认证服务器和资源服务器。认证服务器主要作用是用来认证用户,资源服务器      主要储存用户的信息。比如微信就是一个服务提供商。  认证流程 :    第一步:...

2019-04-26 16:48:16 261

sso-oauth.zip

SpringSecurityOAuth Demo,单点登录,Java语言实现,SpringBoot 2.1.3,SpringSecurity 5.1.4,Spring Security OAuth 2

2020-05-02

空空如也

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

TA关注的人

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