自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mycat实现分库分表

MySQL单表存储数据条数是有瓶颈的,单表达到1000万条数据就达到了瓶颈,会影响查询效率,需要进行水平拆分(分表)进行优化。Orders订单表已经进行分表操作了,和它关联的orders_detail订单详情表如何进行join查询。将字典表或者符合字典表特性的一些表定义为全局表,则从另外一个方面,很好的解决了数据 JOIN 的难题。分库的原则:有紧密关联关系的表应该在一个库里,相互没有关联关系的表可以分到不同的库里。全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性。

2025-03-12 18:00:47 668

原创 mycat实现读写分离

在主从复制的基础上操作。

2025-03-12 17:58:33 310

原创 mysql主从复制

缺点:所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句,修改多条记录,则binlog中每一条修改都会有记录,这样造成binlog日志量会很大,特别是当执行alter table之类的语句的时候,由于表结构修改,每条记录都发生改变,那么该表每一条记录都会记录到日志中。优点: binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。:每一条会修改数据的sql都会记录在binlog中。

2025-03-12 17:55:38 804

原创 史上最全mycat【一文看懂】

mycat有三种常见的应用场景,每种场景具体的细节又不相同,如下所示:①读写分离读写分离实在主从复制的基础上运行的,在配置文件配置相应的节点实现,通过mycat主库负责读,从库负责写,而主库与从库之间会进行主从复制(主库接收到写的请求,首先会记录在binlarylog日志中,由从机去读取发生io并记录在relaylog里面,最终从机再将数据读取到自己的数据库里面,可以会产生一定的时间差)②数据分片。

2025-03-12 17:37:30 815

原创 java项目部署

第二种:项目打成jar,jar包制作成docker镜像,使用docker容器启动第三种打包jar,jar包制作docker镜像,上传镜像服务器,,通过k8s多个镜像进行运行部署。

2025-03-10 14:58:29 259

原创 史上最全jvm详解

请谈谈你对JVM 的理解?java8 的虚拟机有什么更新?什么是OOM ?什么是StackOverflowError?有哪些方法分析?JVM 的常用参数调优你知道哪些?内存快照抓取和MAT分析DUMP文件知道吗?谈谈JVM中,对类加载器你的认识?

2025-03-10 14:54:33 1274

原创 springboot整合swagger

前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

2025-01-02 16:22:20 302

原创 单点登录那点事

大家好我是豆豆,一个具备多年工作经验并且致力于教大家思路的全栈开发程序员,今天为大家带来单点登录的解决方案。提起单点登录不的不提及各个软件架构演变,在此不做详细描述,读者可移步早期原创文章《软件架构的演变过程》。单点登录是由原先的单体架构的局限性所出现的,具体分析图片如下: 原先的单体架构,用户登录成功后,会将用户信息存储在session中,以session是否存在用户信息来判断是否存在登录成功,但是随着后来分布式架构的出现,不同的模块部署在不同的服务器上,那么就会出现一个情况,每次访问不同的

2025-01-02 16:17:02 886

原创 sql优化经验

SELECT中每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看舍弃的字段的大小来判断。

2024-11-06 17:47:50 749

原创 一条查询sql的执行原理

一图胜千言。

2024-11-06 17:43:13 1025

原创 java工具类

【代码】java工具类。

2024-07-23 15:07:11 488 1

原创 阿里云图片文件上传

一切依据于官网。

2024-07-23 14:51:25 637

原创 2024金三银四java面试这一篇就够了(干货)

1、简单易学、有丰富的类库 2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) 3、与平台无关性(JVM是Java跨平台使用的根本) 4、可靠安全 5、支持多线程新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。运行(running):可运行状态(runnable)的线程获得了cpu时间片(timeslice),执行程序代码。

2024-01-24 15:33:38 11904 8

原创 Docker安装常用软件集合

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器。进入容器修改:docker exec -it 1e12f8dd3efd /bin/bash。通过命令source /etc/profile让profile文件立即生效。通过命令source /etc/profile让profile文件立即生效。测试:安装分词词库是否可以使用!第五步:测试是否安装成功。

2024-01-24 15:19:01 1303

原创 mysql主从同步简单理解

想一下每个用户都通过控制层业务层调用服务器数据,用户量小还好说,用户量大的话轻则用户体验极差,重则数据库崩溃甚至数据丢失,那真的就是很严重的事情了。许多大型网站为了减轻海量用户对于服务器并发访问量的性能问题,会使用很多解决的方案,从服务器执行主服务器的同步操作也要一步一步的来,可以类比生产者消费者案例,主从那长话短说就是,一台服务器我处理不了就用几台服务器咯,所以需要同步到从服务器日志中一步一步的同步执行。数据库主从分离,就是目前主流的一种解决手段。如何解决,解决方案之一就是主从分离。

2024-01-22 13:50:16 417

原创 史上最全EasyExcel

1、数据导入:减轻录入工作量2、数据导出:统计信息归档3、数据传输:异构系统之间数据传输。

2024-01-19 18:08:16 10984 2

原创 redisson+aop实现分布式锁

注解的定义仿照@translation进行定义@Inherited//注解里面的自定义参数。

2024-01-19 17:04:21 587

原创 springboot整合spring data elasticsearch

jpa可以自定义接口查询,也就意味着自己在mappe按照要求写一个方法,service只需要调用传值就可以了。

2024-01-17 10:16:34 743

原创 springboot整合spring data jpa

自动生成的表的存储引擎是MyISAM,此引擎不支持事务,需要该为InnoDB,创建hibernate.properties配置文件添加以下配置。删除表重写启动服务器。

2024-01-17 10:09:45 479

原创 DBeaver安装步骤

DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,包括:Windows、Linux、macOS 等。DBeaver 采用 Eclipse 框架开发,支持插件扩展,并且提供了许多数据库管理工具:ER 图、数据导入/导出、数据库比较、模拟数据生成等。

2024-01-16 16:16:54 1409

原创 Redis和MySQL如何保持数据一致性

在高并发应用场景下,如果是对数据一致性要求高的情况下,要定位好导致数据和缓存不一致的原因。解决高并发场景下数据一致性的方案有两种,分别是延时双删策略和异步更新缓存两种方案。另外,设置缓存的过期时间是保证数据保持一致性的关键操作,需要结合业务进行合理的设置。

2024-01-16 16:12:21 1044

原创 高并发缓存问题分析以及分布式锁的实现

经过分析发现分布式锁的实现在一定程度上还是会存在一系列的问题,通过这些问题的解决可以在很大程度的避免数据不一致的情况,关于分布式锁的实现可以抽取为模板,有业务场景需要的时候二次修改复用即可.

2024-01-16 16:07:08 2427

原创 springboot整合quartz

Quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。

2024-01-03 14:05:56 534

原创 springboot整合spring-security(权限框架)

前面我们的登录页面都是使用的SpringSecurity默认的,我们可以在配置类中修改成我们自定义的登录页面这里的name属性默认是username和password,这里我们采用自定义的方式,/login是SpringSecurity默认的处理登录的Controller用户名:密码:

2024-01-03 09:50:38 1043

原创 springboot整合gateway网关

API 网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:(1)客户端会多次请求不同的微服务,增加了客户端的复杂性。(2)存在跨域请求,在一定场景下处理相对复杂。(3)认证复杂,每个服务都需要独立认证。(4)难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施。

2023-12-28 18:19:59 5562 2

原创 springboot整合jwt做单点登陆生成token

但是其实只要用一些工具就可以把base64编码解成明文,所以不要在JWT中放入涉及私密的信息。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT是这种解决方案的代表。主要是该JWT的相关配置参数,比如签名的加密算法、格式类型、过期时间等等。userInfo{用户的Id,用户的昵称nickName}用户自定义的内容,根据实际需要真正要封装的信息。

2023-12-28 15:48:00 812

原创 springboot整合minio做文件存储

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。旧一点新。

2023-12-27 19:46:19 2131

原创 springBoot整合redis做缓存

Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。和Memcache类似,但很大程度补偿了Memcache的不足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的应用场景适用于缓存无需持久化的数据。

2023-12-27 19:35:45 1716

原创 软件架构的演进过程

全部功能集成在一个工程中,对于大型项目不易开发、扩展和维护。技术栈受限,只能使用一种语言开发。系统性能扩展只能通过扩展集群节点,成本高。

2023-12-26 09:40:55 1291

原创 史上最全23种设计模式导航(干货)

史上最全、最完整设计模式,详细介绍了23种设计模式的使用以及优缺点,使用场景。

2023-12-22 13:46:47 658

原创 设计模式---中介者模式

一般来说,在软件开发中,类之间的关系是非常复杂的,往往每个类中都有很多其他对象的引用,形成一张复杂的网状结构,显得非常混乱,软件6大设计原则的迪米特法则告诉我们,一个类应尽可能的少于其他类发生交互,尽量提供一个中间类来完成,那么我们的中介者模式就是迪米特法则最好的实现。中介者模式是行为型设计模式的一种,它的原始定义是:定义一个单独(中介)的对象,来封装一组对象之间的交互,将这组对象之间的交互委派给中介对象交互,避免对象直接交互。

2023-12-21 23:16:15 1190

原创 设计模式----解释器模式

解释器模式使用频率并不高,通常用来构建一个简单语言的语法解释器,它只在一些非常特定的领域被用到,比如编译器、规则引擎、正则表达式、sql解析等。解释器模式是行为型设计模式之一,它的原始定义为:用于定义语言语法规则表示,并提供解释器来处理句子中的语法。我们通过一个例子来解释下解释器模式,假设我们设计一个软件来进行加减计算,我们第一想法就是使用工具类,提供对应的加法和减法的工具方法。return a+b;......

2023-12-21 21:11:06 990

原创 设计模式---命令模式

命令模式属于行为型设计模式的一种,它的原始定义为:命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求(命令)封装参数化对象(将不同请求依赖注入到其他对象),并且能够支持请求命令的排队执行、记录日志、撤销等功能。命令模式的核心是将指令信息封装成一个对象,并且将此对象作为参数发送 给接收方去执行,达到使命令的请求与执行方解耦,双方只通过传递各种命令对象来完成操作。在实际开发中,如果你用到的编程语言并不支持用函数作为参数来传递,那么就可以借助命令模式将函数封装为对象来使用。

2023-12-20 21:35:15 835

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

①提供了一种状态恢复的实现机制,使得用户可以方便的回到一个特定的历史步骤,当新的状态无效或者存在问题的时候,可以使用暂时存储起来的备忘录,将状态复原。②备忘录实现了对信息的封装,一个备忘录对象是一种发起者状态的表示,不会被其他代码所改动,备忘录保存了发起者的状态,采用集合存储备忘录可以实现多次撤销的操作。

2023-12-19 23:00:00 410

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

①扩展性好:在不修改对象结构中元素的情况下,为对象结构中的元素添加新的功能。②复用性好:通过访问者来定义整个对象结构的通用功能,从而提高复用程度③分离无关行为:通过访问者来分离无关行为,把相关的行为封装在一起,构成一个访问者,这样每一个访问者的功能都比较单一。

2023-12-19 10:16:04 839

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

迭代器模式是我们平常开发中很少用到的一种设计模式,但编码实现时却经常实现,在绝大多数编程语言中,迭代器已经成为一个基础类库,直接用来遍历集合对象,在平常开发中,我们更多的是直接使用它,而不是从零实现一个迭代器。迭代器模式是行为性设计模式之一,又叫游标模式,它的原始定义为:迭代器提供一种对容器对象中的各个元素进行访问的方法,而又不需要暴漏该对象的内部细节。在软件系统中,容器对象拥有两个职责,一是存储数据,二是遍历数据。从依赖性上来看,前者是聚合对象的基本职责,而后者是可以变化的,又是可以分离的。

2023-12-18 21:24:22 406

原创 设计模式----状态模式

①将所有与某个状态有关的行为放到一个类中,并且可以方便的增加新的状态,只需要改变对象的状态即可改变对象的行为。②允许状态转换逻辑与状态对象合成一体,而不是某个巨大的条件语句块。

2023-12-18 00:28:23 152

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

责任链模式是行为型模式的一种,它的原始定义是:避免将一个请求发送者与接收者耦合在一起,让多个对象都有机会处理请求,将接收请求的对象连城一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。在责任链模式中,多个处理器(也就是定义中说的接收对象)依次处理同一个请求, 一个请求先经过A处理器处理,然后交由B处理器处理,B处理器处理完在交给C处理器,依此类推,链条上的每个处理器各自承担各自的处理职责,所以叫做职责链模式。①降低了对象之间的耦合度:该模式降低了请求者和发送者的耦合度。

2023-12-14 22:23:04 96

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

①策略类之间可以自由切换,由于策略类都是实现同一个接口,所以使他们之间可以自由切换②易于扩展,增加一个新的策略只需要新增一个类实现策略类即可,基本不改变原有代码,符合开闭原则③避免使用多层if--else,充分体现面向对象设计思想。

2023-12-14 20:09:24 111

原创 设计模式-------监听者模式

监听者模式时行为型设计模式的一种,他的原始定义为:定义对象间一对多依赖关系,这样当一个对象改变时,他的所有依赖项都会自动的得到通知和更新。简而言之观察者模式她是用于建立一中对象与对象之间的依赖关系,一个对象发生改变时将自动通知另一个对象。①降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系②被观察者发送通知,所有注册的观察者都会收到消息【可实现广播机制】

2023-11-28 22:29:43 330

空空如也

空空如也

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

TA关注的人

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