自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringCloud2

nacos直接把功能放在安装包中,我们从github上面下载并且安装。

2025-03-23 09:41:51 905

原创 SpringCloud

将一些微小的服务单独抽离出来组成一个个微小的服务,一个服务只对应一个功能,只做单一的功能,并且独立部署运行。微服务使用rest和rpc进行通信。微服务是一种分布式架构,指的是非常微小的服务,更细粒度的拆分,通常指的是不能再拆的服务。微服务更强调服务的专业化和精细分工。

2025-03-17 09:55:31 629

原创 Rabbitmq运维

其中有一个节点就已经超过超时时间了,就会想要当leader,把任期加一,并且给自己投一票,然后给每个从节点发送一个requestvote rpcs,让他们投给自己。没有赢得选举的话就还是跟随者。客户端发送请求给leader节点,那么leader节点就会在收到请求同时发送给从节点,其他节点也就记录这些请求。raft核心就是选出主节点,其他节点是从节点,主节点负责接收客户端发来的请求,将操作包装好发给从节点,领导者:选出主节点之后,主节点用于处理复制给其他从节点,给从节点发送心跳包,告诉他们现在我还是主节点。

2025-03-12 16:47:17 829

原创 Rabbitmq应用问题

幂等性是数学和计算机上的某些运算性质,他们可以被多次应用,而不会改变初始应用的结果。比如-1进行绝对值之后变成1,后面不管怎样绝对值都是变成1。比如我们通常会要求支付接口符合幂等性,多次调用同一个订单,同一个参数,对系统的影响是一样的(只能支付一次)。同一个订单,订单系统多次调用支付系统,支付系统只能进行一次扣款。mq的幂等性指的是,同一条消息,多次消费,对系统的影响是相同的 ,市面上的mq基本都是只支持最多一次和最少一次。最少一次的问题。

2025-03-09 16:17:46 919

原创 SpringBoot整合Rabbitmq

新建一个项目,并且引入RabbitMq依赖。

2025-03-07 16:56:04 1056

原创 初识RabbitMq

可以把mq想象成一个仓库,将消息进行存储,然后再转发,谁需要就进行订阅数据,接收并且转发消息,mq在不同情况下表现是不同的,比如异步解耦,有一些操作比较耗费时间,比如用户注册的时候,通过mq邮箱通知用户注册成功,使用mq进行请求存储,进行请求挨个处理。发布数据的时候会给每个数据都带上序号标签,比如1,2,3,当broker收到消息的时候,就会返回一个ack,比如ack带的值是3,那就说明了3以前的数据都已经收到了,也就是收到了1,2,3。创建连接,创建channel,声明队列,消费信息,释放资源。

2025-02-25 14:54:23 1086

原创 Git企业开发

在Ubuntu中安装Git。

2025-02-20 15:05:03 786 1

原创 网络编程(TCP/UDP)

网络编程指的是,同一个主机但是不同进程之间通信也是网络编程,但是我们主要编程对象是不同主机至今啊的通信。网络编程实际上就是把传输层和应用层进行封装,然后利用java提供的api进行通过,代码的形式交给传输层然后进行通信。

2025-02-11 15:00:25 1533

原创 Redis进阶

redis进阶和一些面试题

2025-02-07 20:05:19 874 1

原创 Redis(5,jedis和spring)

这里只是简要大概介绍如何使用jedis和spring版本的redis,后续使用建议多看看文档

2025-01-24 21:55:39 1139 3

原创 Redis(4)常用命令介绍

这里的set就是把有关联的数据放在一起。集合中的元素是无序的。集合中的元素是不能重复的。集合中的元素也都是String类型。zet中引入了一个属性,分数(score),有一个member就会有分数,进行排序的时候要依靠分数进行排序。zet实际上还是存储member,分数只是辅助。

2025-01-22 12:02:25 1152

原创 Redis(3)

redis自动适应的,程序员在使用redis的时候一般感知不到。

2024-12-26 18:11:22 1290 2

原创 Redis(2)常用命令

redis有很多基本命令,接下来就让我们介绍一下redis的过期策略。

2024-12-20 18:17:22 820

原创 Linux系统

操作系统=操作系统内核+配套的应用程序。

2024-12-16 19:31:14 831

原创 JVM的原理

jdk是java开发工具包,jre是java运行时环境, jvm是java虚拟机,我们可以认为jvm是jre的一个部分,jre是jdk的一个部分,jvm是解释java字节码,按照经典的划分方法,java属于半编译半解释的方式。java这么设定是为了跨平台。java不喜欢重新编译,而是希望直接执行。jvm通过javac把.java文件编译成.class文件(字节码文件),然后在某个平台上面执行,然后通过jvm转成cpu能够识别的机器指令。实际上jvm就是一个翻译官。

2024-12-14 15:41:17 1009

原创 网络编程之初识网络

计算机网络初步介绍

2024-12-12 10:41:07 927

原创 事务的传播机制

事务传播机制就是:在我们学习数据库的时候,不存在事务传播机制这个概念,因为数据库是直接执行这个方法而不是有方法之间的互相调用,在我们开发的时候会存在方法A调用。方法B。

2024-12-10 14:43:12 462

原创 事务的介绍(spring)

事务是一组操作的集合,是不可分割的操作。比如一系列sql语句在一个操作中执行,要么成功要么失败。比如在转账的时候,a钱包-100,b钱包+100,两个要么同时成功要么同时失败。(复习)mysql事务的操作主要有三步:开启事start transaction/ begin (⼀组操作前开启事务)提交事务: commit (这组操作全部成功, 提交事务)回滚事务: rollback (这组操作中间任何⼀个操作出现异常, 回滚事务)

2024-12-07 10:42:09 631

原创 Redis(1)

Redis是一个在内存中存储数据的中间件。

2024-12-04 15:52:21 515

原创 SpringAop(2)

在新建java类中选择Annotation,并创建对象。@Target后边的是作用域的范围,说明了后边是作用在方法上的。@Retention是作用的生命周期,(RUNTIME)是运行时。但是这时候的注解并没有任何逻辑我们给他填上逻辑。@Component@Slf4j@Aspect//切点作用域在这里我们定义了一个切面类,通过@Around("@annotation(com.syx.aop.config.MyAspect)")来声明该切面类的作用范围。

2024-12-03 15:14:34 850 2

原创 初识Redis

Redis是用来存储数据,是在内存中存储数据。共享一份数据,由于进程隔离性,又想让数据在内存中。Redis基于网络这样的工具,从而让多个进程甚至多个主机访问到Redis里边的变量(共享使用)。mysql访问速度相对比较慢 ,Redis也可以,Redis比mysql快很多,Redis用内存,而mysql是硬盘存储的。

2024-12-02 20:00:46 898

原创 多线程之线程池

在Java中,池的设计都是为了提高资源的重用性和系统的性能,降低资源创建和销毁的开销。线程池达成的也是类似的效果。我们创建和销毁线程会消耗系统资源,即使线程是轻量级的进程但是仍然会造成不小负担。我们经常使用的是这个线程池的实现,可以写入核心线程数、最大线程数、线程存活时间等一些相关的配置来调整线程池的状态。核心线程数最大线程数最长空闲时间设置该空闲时间的单位任务队列。

2024-12-02 09:59:37 444

原创 SpringAop(1)

一种规则Pointcut 的作⽤就是提供⼀组规则 (使⽤ AspectJ pointcut expression language 来描述), 告诉程序对哪些⽅法来进⾏功能增强。也就是@Around后边的字符串,描述了在哪里进行切入。对哪些的方法进行功能增强。(告诉哪些能被连接成切面,哪些不能被连接成切面,哪些能被Aop认识到,就是寻找匹配项)。这是切面的设置以及切面的逻辑@Slf4j@Component@Aspect//作用的范围是TestController。

2024-11-30 16:40:41 1100 2

原创 统一功能(2异常)

如果在RequestMapping中返回的类型是String但是统一返回结果是Result类就会报错。

2024-11-28 17:12:52 365

原创 多线程之阻塞队列

生产者消费者模型是一种经典的多线程或多进程设计模式。在这个模型中,主要有两类角色:生产者和消费者。在这个模型中,生产者将数据放入阻塞队列中,而消费者则从中拿数据,实际上也就是生产者和消费者通过阻塞队列进行通信。生产者消费者模型在开发中的常见使用场景:比如某游戏在“周年庆”等活动场景下,游戏的服务器同一时刻可能会收到大量的登录请求。如果直接处理这些请求,服务器可能扛不住。

2024-11-26 17:21:50 423

原创 统一功能的介绍(1)

对从Controller中返回的数据进行统一的数据加工处理,避免修改太多。这时候要实现ResponseBodyAdvice接口,重写ResponseBodyAdvice的方法,并且记得加上@ControllerAdvice注解。

2024-11-25 16:26:05 325

原创 适配器模式(一种设计模式)

适配器模式, 也叫包装器模式. 将⼀个类的接⼝,转换成客⼾期望的另⼀个接⼝, 适配器让原本接⼝不兼容的类可以合作无间。

2024-11-25 14:35:54 415

原创 拦截器的介绍

定义拦截器也就是定义它如何工作,比如做用户校验等工作,或者获取参数。首先我们要实现HandleInterceptor接口:这里写了接口HandlerInterceptor的几个实现方法,使用jdk17.0.12进程的id是24748Tomcat初始化使用8080端口号tomcat是一个web服务器,后面还有tomcat的版本初始化spring容器,咱们注入的对象都放在这个容器里面alpplicationcontext初始化花费的时间。

2024-11-23 21:07:16 782

原创 多线程之设计模式

设计模式实际上就是程序员的棋谱,用来解决特定情况下的特定问题的通常方式,是一种特定的思维模式。

2024-11-20 20:03:00 274

原创 多线程(3)线程安全以及解决方案

这里就涉及到了线程的等待通知机制,通过等待的方式,能够让线程一定程度按照我们预期的顺序来执行,我们无法主动让某个线程被调度,但是可以主动让某个线程等待。如果这里并没有控制t1先执行,有可能t2会先抢到CPU执行权,从而先执行了notify,此时t1还没wait,locker上也没有其它任何线程wait,此时之间t2的notify就不会有任何效果(也不会抛异常),但是后续t1进入wait之后,就无法唤醒了。不可重入锁是一种锁的机制,它指的是一个线程在获得某个锁之后,如果试图再次获取该锁时会被阻塞。

2024-11-17 19:06:04 920

原创 多线程(2)线程的常见方法

这一节我们来介绍多线程的常见方法和多线程的常见状态。

2024-11-17 10:48:26 274

原创 多线程(1)多线程的创建方法

多线程的创建和几种常见方法

2024-11-15 20:03:20 570

原创 进程和线程之间的关系

(重点)线程(Thread)是操作系统能够进行运算调度的最小单位,它被包含在进程(Process)之中,是进程的实际执行单元。一个进程可以包含多个线程,称为主线程,主线程是程序的入口点。这些线程共享相同的内存空间和系统资源,但拥有独立的执行流。也就是说线程是进程的子集。实际上就是进程被划分成多个线程,并且分给了多个cpu核心,能够充分利用cpu。实际上多进程编程会导致进程销毁和创建开销很大,而且在进程中的通信也比较麻烦。所以我们就引入了多线程编程。

2024-11-13 21:11:09 895

原创 Mybatis(高级)

当我们写入sql的时候,常常会根据不同的业务场景来写入不同的sql,有的人想对性别保密不想在前端输入性别,就要使用不同的sql语句通常不传null,正常sql都会有默认值,比如男女或者未知。如图是if语句来根据gender是不是null来判断加不加gender字段,如果传的对象有gender的时候就加没有就不加。if中传的是java的属性。

2024-11-11 09:31:40 339

原创 Mybatis3(初级)

比如这个语句本来是输入' or 1='1但是变成了或者的意思,因为是字符串拼接,就会发生sql注入也就是被篡改原意思被恶意攻击。但是现在mybatis做了一些限制这种已经表明是select 语句了就不让删除。1.表名, 字段名使⽤⼩写字⺟或数字, 单词之间以下划线分割. 尽量避免出现数字开头或者两个下划线中间只出现数字. 数据库字段名的修改代价很⼤, 所以字段名称需要慎重考虑。

2024-11-09 12:59:28 839

原创 javase和数据结构复习的零碎

包含关系:JDK 包含 JRE,JRE 包含 JVM。也就是说,JDK 是一个完整的开发和运行 Java 程序的套件,它为开发人员提供了开发工具和运行环境;JRE 则侧重于提供运行 Java 程序所需的环境和资源;而 JVM 是 Java 程序运行的基础,负责实际执行字节码。功能层次关系:开发人员使用 JDK 进行 Java 程序的开发,开发完成后,用户只需要安装 JRE 就可以运行这些 Java 程序,而在程序运行过程中,JVM 在幕后默默工作,执行字节码并管理相关资源。

2024-11-08 14:18:01 193

原创 反射枚举lambda

通过@FunctionalInterface接口来判断是不是函数式接口。

2024-11-07 21:13:26 658

原创 MyBatis2(初级)

MyBatis 原本是 Apache 的一个开源项目 iBatis,并且改名为 MyBatis。它主要用于简化数据库访问层的开发,让开发者能够更加方便、高效地与各种数据库进行交互操作。是一个持久层(将数据永久化),orm框架。点击闪电可以跳过测试用例通过#{}来选取数据,如果只有一个参数下面什么名字都可以,如果多个参数就得一一对应,除非使用@param进行参数绑定,即使使用参数绑定,但是我们通常还是使用相同名字。

2024-11-05 17:33:20 670

原创 什么是Springioc

例如,如果要将一个数据库访问层的实现从使用 MySQL 切换到使用 Oracle,只需要修改配置文件中关于数据库连接和相关 repository 实现类的配置,而不用改动业务逻辑层代码中对数据库访问的调用部分。原本在传统编程模式下,对象的创建和依赖关系的维护是由开发者在代码中手动完成的,而在 IOC 模式下,这些工作由容器来负责。可以更加方便地复用已经创建好的组件,通过容器的配置可以将同一个组件注入到不同的需要该组件的地方,而不需要在每个使用的地方重新创建。

2024-11-04 16:19:30 243

原创 MyBatis1(初级)

应用分层Controller表现层:参数接收,数据返回,参数校验和结果返回格式转化,转化成后端想要的;数据模式Service业务逻辑层,介于数据层和表现层之间dao数据层,与数据相关,数据crudJDBC 操作⽰例回顾我们先来回顾⼀下 JDBC 的操作流程:1.创建数据库连接池 DataSource2.通过 DataSource 获取数据库连接 Connection3.编写要执⾏带?占位符的 SQL 语句*********4.

2024-11-03 12:02:29 623

空空如也

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

TA关注的人

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