自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(217)
  • 资源 (9)
  • 收藏
  • 关注

原创 【Java秒杀方案】实现思路

首先,要明确一点,高并发场景下系统的瓶颈出现在哪里,其实主要就是数据库,那么就要想办法为数据库做层层防护,减轻数据库的压力。

2022-08-15 15:58:58 3093 2

原创 7.【Sharding-JDBC】总结

为什么分库分表?分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。分库分表方式:垂直分表、垂直分库、水平分库、水平分表分库分表带来问题:由于数据分散在多个数据库,服务器导致了事务一致性问题、跨节点join问题、跨节点分页、排序、函数,主键需要全局唯一,公共表。...

2022-08-14 19:55:54 1164

原创 6.【Sharding-JDBC】案例

电商平台商品列表展示,每个列表项中除了包含商品基本信息、商品描述信息之外,还包括了商品所属的店铺信息,如下:本案例实现功能如下:1、添加商品2、商品分页查询4、商品统计。

2022-08-14 19:52:31 1001

原创 5.【Sharding-JDBC】读写分离

三,授权主从复制专用账号。

2022-08-14 19:29:28 518

原创 4.【Sharding-JDBC】分库分表

前面已经介绍过,水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。在快速入门里,我们已经对水平分库进行实现,这里不再重复介绍。

2022-08-14 19:17:54 974

原创 3.【Sharding-JDBC】执行原理

通过以上内容介绍,相信大家已经了解到Sharding-JDBC基础概念、核心功能以及执行原理。基础概念:逻辑表,真实表,数据节点,绑定表,广播表,分片键,分片算法,分片策略,主键生成策略核心功能:数据分片,读写分离执行流程:SQL解析 => 查询优化 => SQL路由 => SQL改写 => SQL执行 => 结果归并接下来我们将通过一个个demo,来演示Sharding-JDBC实际使用方法。......

2022-08-14 18:52:33 655

原创 2.【Sharding-JDBC】快速入门

本章节使用Sharding-JDBC完成对订单表的水平分表,通过快速入门程序的开发,快速体验Sharding-JDBC的使用方法。人工创建两张表,t_order_1和t_order_2,这两张表是订单表拆分后的表,通过Sharding-Jdbc向订单表插入数据,按照一定的分片规则,主键为偶数的进入t_order_1,另一部分数据进入t_order_2,通过Sharding-Jdbc 查询数据,根据 SQL语句的内容从t_order_1或t_order_2查询数据。......

2022-08-14 18:35:53 516

原创 1.【Sharding-JDBC】概述

是当当网研发的开源分布式数据库中间件,从 3.0 开始Sharding-JDBC被包含在 Sharding-Sphere中,之后该项目进入进入Apache孵化器,4.0版本之后的版本为Apache版本。是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、ShardingProxySharding-Sidecar(计划中)这3款相互独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。...

2022-08-14 17:57:23 535

原创 【Redis】主从复制的核心原理

因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的slave 节点,从节点负责读。单机的 redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑。这样也可以很轻松实现水平扩容,...

2022-08-08 22:10:40 508

原创 MySQL中CHAR_LENGTH()和LENGTH()的区别

一、char_length(‘string’)/char_length(column_name)函数用来计算普通字符的长度,他会把一个中文字符的长度按照设置的对应的字符集计算为2或3。例如:一个包含5个字符且每个字符占两个字节(比如汉字)的字符串而言,如果对于单字节的字符,则两者返回结果相同。2、不管汉字还是数字或者是字母都算是一个字符;3、任何编码下,多字节字符都算是一个字符;都是为了统计字符串的长度。字符,包括中文等字符集的长度,而。是按照字节来统计的,是按照字符来统计的。...

2022-08-07 15:52:01 2212

原创 【SpringCloud-学习笔记】Docker镜像仓库

推送本地镜像到仓库前都必须重命名(docker tag)镜像,以镜像仓库地址为前缀镜像仓库推送前需要把仓库地址配置到docker服务的daemon.json文件中,被docker信任推送使用docker push命令拉取使用docker pull命令。...

2022-08-07 11:35:20 477

原创 Docker镜像仓库

① 重新tag本地镜像,名称前缀为私有仓库的地址:192.168.150.101:8080/

2022-08-07 11:29:53 792

原创 【SpringCloud-学习笔记】DockerCompose

DockerCompose有什么作用?帮助我们快速部署分布式应用,无需一个个微服务去构建镜像和部署。

2022-08-07 11:24:32 508 1

原创 Docker-Compose

Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器!

2022-08-07 11:20:21 356

原创 【SpringCloud-学习笔记】Dockerfile自定义镜像

镜像是分层结构,每一层称为一个LayerBaseImage层:包含基本的系统函数库、环境变量、文件系统Entrypoint:入口,是镜像中应用启动的命令其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。更新详细语法说明,请参考官网文档:Dockerfile的本质是一个文件,通过指令描述镜像的构建过程。...

2022-08-07 10:56:28 511

原创 【SpringCloud-学习笔记】Docker基本操作

镜像操作有哪些?docker rmidocker run命令的常见参数有哪些?–name:指定容器名称-p:指定端口映射-d:让容器后台运行查看容器日志的命令:添加 -f 参数可以持续查看日志查看容器状态:docker psdocker ps添加-a参数查看所有状态的容器删除容器:docker rm不能删除运行中的容器,除非添加 -f 参数进入容器:命令是docker exec -it [容器名] [要执行的命令]......

2022-08-07 10:50:59 1096

原创 【SpringCloud-学习笔记】初识Docker

可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完成,方便快捷docker是一个系统进程;虚拟机是在操作系统中的操作系统docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般将应用程序及其依赖、环境、配置打包在一起容器:镜像运行起来就是容器,一个镜像可以运行多个容器Docker结构:服务端:接收命令或远程请求,操作镜像或容器。...

2022-08-07 09:36:30 335

原创 CentOS安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的,这里主要介绍 Docker CE 在 CentOS上的安装。......

2022-08-07 09:32:27 600

原创 【SpringCloud-学习笔记】统一网关Gateway

对用户请求做身份认证、权限校验将用户请求路由到微服务,并实现负载均衡对用户请求做限流创建项目,引入nacos服务发现和gateway依赖配置application.yml,包括服务基本信息、nacos地址、路由路由配置包括:路由id:路由的唯一标示路由目标(uri):路由的目标地址,http代表固定地址,lb代表根据服务名负载均衡路由断言(predicates):判断路由的规则,路由过滤器(filters):对请求或响应做处理PredicateFactory的作用是什么。...

2022-08-06 11:12:15 679

原创 【SpringCloud-学习笔记】http客户端Feign

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。引入依赖:

2022-08-06 10:06:38 590

原创 【SpringCloud-学习笔记】Nacos配置管理

将配置交给Nacos管理的步骤在Nacos中添加配置文件在微服务中引入nacos的config依赖在微服务中添加bootstrap.yml,配置nacos地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去nacos读取哪个文件Nacos配置更改后,微服务可以实现热更新,方式:通过@Value注解注入,结合@RefreshScope来刷新通过@ConfigurationProperties注入,自动刷新注意事项:不是所有的配置都适合放到配置中心,维护起来比较麻烦。...

2022-08-06 09:31:28 393

原创 Nacos集群搭建(图文教程)

官方给出的Nacos集群图:其中包含3个nacos节点,然后一个负载均衡器代理3个Nacos。这里负载均衡器可以使用nginx。

2022-08-06 09:26:51 1257

原创 【SpringCloud-学习笔记】Nacos注册中心

Nacos服务搭建下载安装包解压在bin目录下运行指令:startup.cmd -m standaloneNacos服务注册或发现引入nacos.discovery依赖配置nacos地址spring.cloud.nacos.server-addrNacos服务分级存储模型一级是服务,例如userservice二级是集群,例如杭州或上海三级是实例,例如杭州机房的某台部署了userservice的服务器如何设置实例的集群属性。...

2022-08-05 11:39:29 257

原创 Nacos安装指南

开发阶段采用单机安装即可。

2022-08-05 11:20:20 881

原创 【SpringCloud-学习笔记】Ribbon负载均衡

Ribbon负载均衡规则规则接口是IRule默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询负载均衡自定义方式代码方式:配置灵活,但修改时需要重新打包发布配置方式:直观,方便,无需重新打包发布,但是无法做全局配置饥饿加载开启饥饿加载指定饥饿加载的微服务名称。...

2022-08-05 10:33:11 249

原创 【SpringCloud-学习笔记】Eureka注册中心

在Eureka架构中,微服务角色有两类:搭建EurekaServer服务步骤如下:编写启动类,添加@EnableEurekaServer注解添加application.yml文件,编写下面的配置:总结搭建EurekaServer引入eureka-server依赖添加@EnableEurekaServer注解在application.yml中配置eureka地址注册user-service将user-service服务注册到EurekaServer步骤如下:在applic

2022-08-05 10:22:25 193 2

原创 MVCC面试题

InnoDB 每一行数据都有一个指向上一个版本数据在undo log日志里的位置指针。如果要执行更新操作,会将原记录放入 undo log 中,并通过隐藏的回滚指针指向 undo log 中的原记录。其它事务此时需要查询时,就是查询 undo log 中这行数据的最后一个历史版本。MVCC 最大的好处是读不加锁,读写不冲突,极大地增加了 MySQL 的并发性。通过 MVCC,保证了事务的隔离性。...

2022-08-04 20:40:30 1606

原创 从Spring迁移到Spring Boot

要想添加Spring Boot,最简单的办法就是添加Spring Boot Starters。

2022-08-04 12:51:24 423

原创 ssm和springboot的区别

1、在开发中,虽然springboot简化了配置,但只不过是编写的方式变得简单了,和SSM整合的方式还是有些差异;2、使用SSM开发时,多数会选择Jsp作为视图,但是springboot不推荐使用jsp。

2022-08-04 11:34:25 17661

原创 保证通信的机制有哪些

应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。:Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。...

2022-08-04 10:45:32 863

原创 进程间通信方式

管道:速度慢,容量有限,只有父子进程能通讯;FIFO:任何进程间都能通讯,但速度慢;消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题;共享内存:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题;信号:有入门版和高级版两种,区别在于入门版注重动作,高级版可以传递消息。只有在父子进程或者是共享内存中,才可以发送字符串消息;信号量:不能传递复杂消息,只能用来同步。......

2022-08-04 10:08:02 300

原创 【算法】归并排序

代码】【算法】归并排序。

2022-08-03 11:55:04 135

原创 【算法】快速排序

代码】【算法】快速排序。

2022-08-02 21:00:57 179

原创 Redis布隆过滤器

布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。......

2022-07-22 22:04:15 4626

原创 进程与线程的区别

线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。好处(1)易于调度。(2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。(3)开销少。创建线程比创建进程要快,所需开销很少。(4)利于充分发挥多处理器的功能。...

2022-07-21 08:57:31 3825

原创 Spring框架中bean的生命周期

1. Spring对bean进行实例化;2. Spring将值和bean的引用注入到bean对应的属性中;3. 如果bean实现了`BeanNameAware`接口,Spring将bean的ID传递给`setBean-Name()`方法;4. 如果bean实现了`BeanFactoryAware`接口,Spring将调用`setBeanFactory()`方法,将`BeanFactory`容器实例传入;5. 如果bean实现了`ApplicationContextAware`接口,Spring将调用

2022-07-01 20:58:02 1622 2

原创 【Java基础】类与接口

1.类与类的关系继承关系,只能单继承,不能多继承;但是可以多层继承2.类与接口的关系实现关系,可以单实现,也可以多实现,还可以继承一个类的同时实现多个接口3.接口与接口的关系继承关系,可以单继承也可以多继承1.成员区别抽象类:变量;常量;有构造方法;有抽象方法,也有具体方法接口:只有常量;只有抽象方法2.关系区别类与类:继承、单继承类与接口:实现:可以单实现,也可以多实现接口与接口:继承:单继承,多继承3.设计理念区别抽象类:对类抽象,包括属性、行为接口:对行为抽象,主要是行为...

2022-06-27 14:35:57 511

原创 【RabbitMQ】死信队列

顾名思义,(死去的消息)即无法被消费的消息,指的是消费者在消费生产者生产的消息时发生了某些特殊情况(下文会说),导致消息无法被正常消费,存放这些未被消费的消息的队列即为死信队列。基本需要:两个个交换机:生产者通过交换机发送给普通队列、普通队列通过交换机将死信转发给死信队列两个队列:普通队列、死信队列(注:队列模式为direct)两个router key: 生产者绑定交换机之间、死信交换机到死信队列之间(1)消息过了过期时间TTL(time to live)只需要设置消息的过期时间,普通队列在过期时

2022-06-26 10:34:26 417

原创 【RabbitMQ】消息分发机制

RabbitMQ 分发消息默认采用的轮训分发,但是在某种场景下这种策略并不是很好,当有两个消费者在处理任务时,其中有个消费者 处理任务的速度非常快,而另外一个消费者处理速度却很慢,这个时候我们还是采用轮训分发就会导致这处理速度快的这个消费者很大一部分时间处于空闲状态。我们可以通过修改消息分发德默认机制,来达到优化目的;通过设置参数 实现不公平分发策略使得能者多劳;通过RabbitMq的Web管理页面,可以看到的属性显示为则表示不公平分发成功;当消息被消费者接收后,但是没有确认,此时这里就存在一个未确认

2022-06-26 10:31:20 1089

原创 canal部署、原理和使用介绍

阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。(数据库同步需要阿里的otter中间件,基于canal)。这里我们可以简

2022-06-25 11:07:01 718 1

VisualVM.rar 性能分析及调优神器

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。VisualVM 进行性能分析及调优。

2022-05-11

使用IDEA和hsdis-amd64.dll工具查看运行Java代码生成的汇编指令

使用IDEA和hsdis-amd64.dll工具查看运行Java代码生成的汇编指令

2022-05-06

redis-5.0.6安装包

redis-5.0.6安装包

2022-04-27

redis-desktop-manager-0.8.8.384.exe

redis-desktop-manager-0.8.8.384.exe

2022-04-27

redisclient-客户端工具

redisclient-客户端工具

2022-04-27

Postman9.15.2

Postman9.15.2

2022-04-20

Java编译文件反编译工具

可以查看.class文件

2022-04-17

maven-3.3.9

maven-3.3.9

2022-04-17

阿里巴巴Java开发手册(泰山版)

《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是泰山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险;工程结构混乱导致后续维护艰难;没有鉴权的漏洞代码易被黑客攻击等等。所以本手册以 Java 开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约七个维度,再根据内容特征,细分成若干二级子目录。另外,依据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。在延伸信息中,“说明”对规约做了适当扩展和解释;“正例”提倡什么样的编码和实现方式;“反例”说明需 要提防的雷区,以及真实的错误案例。 手册的愿景是码出高效,码出质量。

2022-04-15

空空如也

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

TA关注的人

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