自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringSecurity OAuth2.0认证授权-part3

从0到1构建oauth2 微服务权限认证

2022-02-22 14:59:05 900

原创 SpringSecurity OAuth2.0认证授权-part2

从0到1 搭建Spring Security Oauth2.0

2022-02-22 00:25:06 522

原创 SpringSecurity OAuth2.0认证授权-part1

从0到1搭建Spring security Oauth2.0

2022-02-22 00:23:51 604

原创 AbstractQueuedSynchronizer之AQS

AQS、可重入锁原理

2022-01-16 14:17:39 285

原创 MySQL高级(原理、sql优化及锁)

1.MySQL架构组成1.2 MySQL逻辑架构学习 MySQL 就好比盖房子,如果想把房子盖的特别高,地基一定要稳,基础一定要牢固。学习 MySQL 数据库前要先了解它的体系结构,这是学好 MySQL 数据库的前提。1.2.1 MySQL架构体系介绍MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为四层,即连接层、 服务层、引擎层和文件系统层。MySQL 的基础架构图1. 连接层最上面是一些客户端和连接服务, 不是MySQL特...

2021-10-04 20:04:51 222

原创 分库分表技术之ShardingJDBC --- step3

1. ShardingJDBC1.1 分库分表方式回顾1) 分库分表的目的就是将我们的单库的数据控制在合理范围内,从而提高数据库的性能.垂直拆分( 按照结构分 ) 垂直分表: 将一张宽表(字段很多的表), 按照字段的访问频次进行拆分,就是按照表单结构进行 拆 垂直分库: 根据不同的业务,将表进行分类, 拆分到不同的数据库. 这些库可以部署在不同的服 务器,分摊访问压力 水平拆分( 按照数据行分 ) 水平分库: 将一张表的数据 ( 按照数据行) 分到多个不同的数据库.每个库的表结构相

2021-09-30 08:35:00 967

原创 分库分表技术之MyCat(读写分离 & Mysql主从复制) --- step2

lower_case_table_names=1log-bin=mysql-binserver-id=1binlog-do-db=testbinlog_ignore_db=mysql接着上一篇文章继续::::分库分表技术之MyCat(实战水平分库) --- step1_程序猿二鍋頭的博客-CSDN博客1 MyCat读写分离1.1 什么是读写分离在实际的生产环境中, 数据的读写操作如果都在同一个数据库服务器中进行, 当遇到大量的并发读或 者写操作的时候,是没有办法满...

2021-09-29 00:36:24 240

原创 分库分表技术之MyCat(实战水平分库) --- step1

1.海量存储问题1.1 背景描述如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB。对数据的各种操作也是愈 加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求。阿里数据中心内景( 阿里、百度、腾讯这样的互联网巨头,数据量据说已经接近EB级)解决方案1: 使用NoSQL数据库, 通过降低数据的安全性,减少对事务的支持,减少对复杂查询的支 持,来获取性能上的提升。 解决方案2: NoSQL并不是万能的,就比如有些使用场景是绝对要有...

2021-09-29 00:03:56 1395

原创 kafka详解(JAVA API操作kafka、kafka原理、kafka监控)-step2

1、JAVA API操作kafka修改Windows的Host文件:目录:C:\Windows\System32\drivers\etc (win10)内容:192.168.40.150 kafka1192.168.40.150 kafka2192.168.40.150 kafka3创建maven工程导入对应maven坐标 <properties> <java.version>1.8</java.versi..

2021-09-18 00:26:27 4253

原创 kafka详解(架构、集群)-step1

1. 消息队列(MQ)1.1 什么是消息队列消息队列不知道大家看到这个词的时候,会不会觉得它是一个比较高端的技术。消息队列,一般我们会简称它为MQ(Message Queue). 消息队列是一种帮助开发人员解决系统间异步通信的中间件,常用于解决系统解耦和请求的削峰平谷的问题。队列(Queue):Queue 是一种先进先出的数据结构,容器消息(Message):不同应用之间传送的数据。消息队列:我们可以把消息队列比作是一个存...

2021-09-12 21:46:45 1316

原创 分布式文件存储MinIO实战

1.分布式文件系统应用场景互联网海量非结构化数据的存储需求电商网站:海量商品图片 视频网站:海量视频文件 网盘 : 海量文件 社交网站:海量图片1.1 Minio介绍MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非 常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而 一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的

2021-09-12 16:26:28 5319

原创 Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step2

上一篇详细讲解了使用kibana RestFul风格操作es,接下来就是ES集群、操作原生API 以及SpringDataElasticsearchhttps://blog.csdn.net/qq_45441466/article/details/1201109681.Elasticsearch集群单点的elasticsearch存在哪些可能出现的问题呢?单台机器存储容量有限,无法实现高存储 单服务器容易出现单点故障,无法实现高可用 单服务的并发处理能力有限,无法实现高并发所以,为

2021-09-05 18:31:03 1171 1

原创 Elastic search入门到集群实战操作详解(原生API操作、springboot整合操作)-step1

1 Elastic search介绍和安装Elasticsearch是一个需要安装配置的软件。ELK技术栈说明:Elastic有一条完整的产品线:Elasticsearch、Logstash、Kibana等,前面说的三个就是大家常说的ELK 技术栈(开源实时日志分析平台)。Logstash 的作用就是一个数据收集器,将各种格式各种渠道的数据通过它收集解析之后格式化输出到 Elasticsearch ,最后再由 Kibana 提供的比较友好的 Web 界面进行汇总、分析、搜索。E.

2021-09-05 16:17:36 2138

原创 Lucene入门及操作详解

1 什么是全文检索1.1 数据分类我们生活中的数据总体分为两种:结构化数据和非结构化数据。结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。非结构化数据:指不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件1.2 结构化数据搜索常见的结构化数据也就是数据库中的数据。在数据库中搜索很容易实现,通常都是使用 sql语句进行查询,而且能很快的得到查询结果。为什么数据库搜索很容易?因为数据库中的数据存储是有规律的,...

2021-09-05 10:06:57 8892 1

原创 FastDFS搭建文件管理系统(Docker方式+SpringBoot)

上一篇讲解了如何FastDFS原理以及如何在Linux上搭建文件系统,此篇相对来说更加简单,使用了Docker容器技术更加方便的实现文件系统。FastDFS-从入门到搭建文件管理系统实战还是简单的叙述下FastDFS体系结构以及上传流程1 FastDFS简介1.1 FastDFS体系结构FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相

2021-08-29 22:40:56 919 1

原创 RabbitMQ集群搭建

上一篇,我们学习了在Spring如何引用RabbitMQ,及RabbitMQ的各个知识点。本篇主要学习如何搭建RabbitMQ集群环境。rabbitmq有3种模式,但集群模式是2种。详细如下:单一模式:即单机情况不做集群,就单独运行一个rabbitmq而已。之前我们一直在用普通模式:默认模式,以两个节点(A、B)为例来进行说明当消息进入A节点的Queue后,consumer从B节点消费时,RabbitMQ会在A和B之间创建临 时通道进行消息传输,把A中的消息实体取出并经过通过交给B.

2021-08-14 13:23:01 381

原创 RabbitMQ详解及集群搭建

1.什么是RabbitMQ1.1 MQ(Message Queue)消息队列消息队列中间件,是分布式系统中的重要组件 主要解决,异步处理,应用解耦,流量削峰等问题 从而实现高性能,高可用,可伸缩和最终一致性的架构 使用较多的消息队列产品:RabbitMQ,RocketMQ,ActiveMQ,ZeroMQ,Kafka等1.1.1 异步处理用户注册后,需要发送验证邮箱和手机验证码; 将注册信息写入数据库,发送验证邮件,发送手机,三个步骤全部完成后,返回给客户端1.1.2 应用解耦场.

2021-08-14 12:00:50 581

原创 FastDFS-从入门到搭建文件管理系统实战

1. 场景概述天猫,淘宝等购物网站,大量的图片和视频,文件太多,如何存储? 用户访问量大又如何保证下载速度?分布式文件系统就是解决这些问题的!1.1 什么是文件系统文件数据是如何存储的??1.2 分布式文件系统一台电脑存储量有限,并且并发吞吐量也有限,如何提高性能? 一吨货物,我要运送到吐鲁番: 1个人运,不敢想象 50个人运,太难了; 500个人运,每个人都很轻松; 这就是分布式吗?答:这里面有集群的概念,也有分布式的概念,二者不要混淆,面试常问的经典题目分布.

2021-08-07 22:48:49 933 1

原创 分布式核心技术-Redis详解

前面有写过一篇Redis集群实战详解,主要是针对部署redis集群实战操作。可参考:https://blog.csdn.net/qq_45441466/article/details/116424318本篇主要是针对Redis的数据类型、Jedis-Api 、(持久化、事务)的原理、集群(哨兵、主从)原理及秒杀案例的剥析-所以更加详细篇幅更长(参考某钩课程)。1、概述1.1 Redis入门介绍互联网需求的3高 高并发,高可扩,高性能 Redis 是一种运行速度很快,并发性能很强,并且

2021-08-07 15:23:43 474

转载 Dubbo综合实战

Dubbo综合实战1、 配置说明1.1启动时检查启动时会在注册中心检查依赖的服务是否可用,不可用时会抛出异常 在消费方编写初始化容器的main方法启动(tomcat启动方式,必须访问一次action才能初始化 spring) <!--默认为true:抛异常 --> <dubbo:consumer check="false"/> 系统级别日志,需要配合log4j才输出,在resources下添加log4j.propertie...

2021-07-18 16:06:00 150

转载 Zookeeper详解--(入门、原理及实战)

1. Zookeeper概述1.1 概述美团,饿了么,淘宝,58同城等等应用都是zookeeper的现实生活版 老孙我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团 app中看到我的饭店,下订单,从而完成一次交易 Zookeeper是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的 Apache项目。 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂), Pig(猪)等技术1.2 工作机制

2021-07-17 19:06:48 1748 4

原创 MongoDB安装及实战(整合springboot)

MongoDB简介1、NoSQL简介NoSQL(NoSQL = Not Only SQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入为什幺使用NoSQL :1、对数据库高并发读写。2、对海量数据的高效率存储和访问。3、对数据库的高可扩展性和高可用性。弱点:1、数据库事务一致性需求

2021-07-11 15:36:47 2115 1

原创 Springboot 整合 memcache

Memcache介绍  首先来说Memcache是一个开源高性能的分布式内存对象key-value缓存系统,用于加速动态的Web应用,从而减轻数据库的负载能力,在工作场景中很多人把它当做一个内存式的数据库在使用。那么内存式到底是什么呢?我们都知道,在计算机主要靠CPU来进行计算,内存用来存储CPU操作的数据。在计算机硬件中还有一个叫做硬盘的东西。那么这三者之间是怎么交互的。首先要知道计算机内存式有限的,这个是不可否认的,其次CPU的计算速度与内存以及外部存储之间是存在一定的差距的,所以就使用了一种高速

2021-07-04 18:01:08 1075

原创 设计模式 -职责链模式

学校 OA 系统的采购审批项目:需求是采购员采购教学器材1) 如果金额 小于等于 5000, 由教学主任审批 (0<=x<=5000)2) 如果金额 小于等于 10000, 由院长审批 (5000<x<=10000)3) 如果金额 小于等于 30000, 由副校长审批 (10000<x<=30000)4) 如果金额 超过 30000 以上,有校长审批 ( 30000<x)请设计程序完成采购审批项目传统方案...

2021-07-04 10:35:59 97

原创 设计模式 -策略模式

编写鸭子项目,具体要求如下:有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 显示鸭子的信息传统方案解决鸭子问题的分析和代码实现传统的设计方案(类图) 代码实现 package com.atguigu.strategy;/** * @Author panghl * @Date 2021/7/4 9:12 * @Description 鸭子类 **/public abstract class Duck { public Duck() {

2021-07-04 09:53:27 83

原创 设计模式- 备忘录模式

游戏角色状态恢复问题游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态传统方案解决游戏角色恢复传统的方式的问题分析一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大. 传统的方式是简单地做备份,new 出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节 解决方案: => 备忘录模式备忘录模式基本

2021-07-03 14:19:02 90

原创 设计模式- 中介模式

智能家庭项目智能家庭项目:智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘 等 主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放传统方案解决智能家庭管理问题传统的方式的问题分析当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂 各个电器对象彼此联系,你中有我,我中有你,不利于松耦合. 各个电器对象之间所传递的消息(参数),容易混乱 当系统增加一个新..

2021-07-03 13:38:06 82

原创 设计模式- 观察者模式

观察者模式原理观察者模式类似订牛奶业务 奶站/气象局:Subject 用户/第三方网站:ObserverSubject:登记注册、移除和通知registerObserver 注 册 removeObserver 移 除 notifyObservers() 通知所有的注册的用户,根据不同需求,可以是更新数据,让用户来取,也可能是实施推送, 看具体需求定Observer:接收输入 观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为 Subject,依赖的对象为 Observer,S

2021-07-03 01:22:17 102 1

原创 设计模式- 迭代器模式

看一个具体的需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:传统的设计方案(类图)传统的方式的问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系, 因此这种方案,不能很好实现的遍历的操作解决方案:=> 迭代器模式迭代器模式基本介绍迭代器模式(Itera

2021-07-03 00:46:52 58

原创 设计模式- 访问者模式

测评系统的需求完成测评系统需求将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等)传统方式的问题分析如果系统比较小,还是 ok 的,但是考虑系统增加越来越多新的功能时,对代码改动较大,违反了 ocp 原则, 不利于维护 扩展性不好,比如 增加了 新的人员类型,或者管理方法,都不好做 引出我们会使用新的设计模式 – 访问者模式访问者模式基本介绍访问者模式(Visitor Pattern),封装一些

2021-07-02 23:06:07 103 1

原创 设计模式-结构型模式 命令模式

智能生活项目需求我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作。 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制,我们希望只要一个 app就可以控制全部智能家电。 要实现一个 app 控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口给 app 调用,这时 就可以考虑使用命令模式。 命令模式可将“动作的请求者”从“动作的执行者”对象中解耦出来. 在我们的例子中,动作的请求者是手机 app,动

2021-06-29 19:49:13 149 1

原创 设计模式-结构型模式 模板方法模式

豆浆制作问题编写制作豆浆的程序,说明如下:制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 通过添加不同的配料,可以制作出不同口味的豆浆 选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的请使用 模板方法模式 完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用, 不再使用传统的方案来引出模板方法模式 )模板方法模式基本介绍模板方法模式(Template Method Pat...

2021-06-28 23:12:48 85 1

原创 设计模式-结构型模式 代理模式

代理模式(Proxy)代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK 代理、接口代理)和 Cglib 代理 (可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) 。 代理模式示意图静态代理静态代码模式的基本介绍..

2021-06-28 22:03:01 99 1

原创 设计模式-结构型模式 享元模式

展示网站项目需求小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同:有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布传统方案解决网站展现项目直接复制粘贴一份,然后根据客户不同要求,进行定制修改 给每个网站租用一个空间 方案设计示意图统方案解决网站展现项目-问题分析需要的网站结构相似度很高,而且都不是高访问量网站,如果分成多个虚拟空间来处理,相当于一个相同网站

2021-06-27 23:12:19 87 1

原创 设计模式-结构型模式 外观模式

影院管理项目组建一个家庭影院:DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为:直接用遥控器:统筹各设备开关 开爆米花机放 下 屏 幕 开 投 影 仪 开音响 开 DVD,选 dvd 去拿爆米花 调 暗 灯 光 播放 观影结束后,关闭各种设备传统方式解决影院管理传统方式解决影院管理问题分析在 ClientTest 的 main 方法中,创建各个子系统的对象,并直接去调用子系统(对象)相关方法,会造成调用过程混乱,没

2021-06-27 22:08:37 99 1

原创 设计模式-结构型模式 组合模式

看一个学校院系展示需求编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图:传统方案解决学校院系展示(类图)传统方案解决学校院系展示存在的问题分析将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的 实际上我们的要求是 :在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个系,此这种方案,不能很好实现的管理的操作,比如对学院、系的添加,删除,遍历等 解决方案:把

2021-06-26 12:21:19 358

原创 设计模式-结构型模式(7)装饰者模式

星巴克咖啡订单项目(咖啡馆):咖啡种类/单品咖啡:Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡)调料:Milk、Soy(豆浆)、Chocolate要求在扩展新的咖啡种类时,具有良好的扩展性、改动方便、维护方便使用OO的来计算不同种类咖啡的费用: 客户可以点单品咖啡,也可以单品咖啡+调料组合方案1-解决星巴克咖啡订单问题分析Drink 是一个抽象类,表示饮料des就是对咖啡的描述, 比如咖啡的名字cost() 方法就是计算

2021-06-26 10:34:13 90

原创 多线程进阶=》JUC并发编程02

在JUC并发编程01中说到了,什么是JUC、线程和进程、Lock锁、生产者和消费者问题、8锁现象、集合类不安全、Callable(简单)、常用辅助类、读写锁https://blog.csdn.net/qq_45441466/article/details/11719786110、阻塞队列阻塞队列:BlockingDeque什么情况下我们会使用阻塞队列:多线程并发处理,线程池!学会使用队列添加、移除四组API方式抛出异常由返回值阻塞等待超时等待添加add

2021-06-03 22:49:06 143 1

原创 多线程进阶=》JUC并发编程01

1、什么是JUCjava.util.concurrent在并发编程中使用的工具类进程/线程回顾https://www.cnblogs.com/minmin123/p/11411321.html2、进程/线程回顾进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 一个程序,QQ.exe Music.exe 程序的集合,一个进程往往可以包含多个线程,至少包含一个!...

2021-06-01 19:18:54 142

原创 jvm快速入门篇

1、JVM的位置2、JVM的体系结构3、类加载器(Class Loader)作用:加载Class文件。1、虚拟机自带的加载器2、启动类(根)加载器:BootStrapClassLoader:引导类加载器,负责java核心类的加载3、扩展类加载器 :ExtensionClassLoader4、应用程序加载器 : AppClassLoader:应用类加载器 负责加载我们写的一些类Class Loader 加载过程:1. 加载:是将class文件读入内.

2021-05-23 17:24:50 252 1

空空如也

空空如也

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

TA关注的人

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