SpringBoot实现项目更删改查后,会有新的问题需要解决,就是并发大的问题,一般而言,解决查询并发大的问题,常见的手段是为查询接口增加缓存,从而可以减轻持久层的压力。按照我们以往的经验,在查询接口中增加Redis缓存即可,将查询的结果数据存储到Redis中,执行查询时首先从Redis中命中,如果命中直接返回即可,没有命中查询Mysql,将解决写入到Redis中。这样就解决问题了吗?其实并不是,试想一下,如果Redis宕机了或者是Redis中的数据大范围的失效,这样大量的并发压力就会进入持久层,会对持久层有较大的影响,甚至可能直接崩溃。如何解决该问题呢,可以通过多级缓存的解决方案来进行解决...

  2HyDHh3MOg71   2023年12月25日   32   0   0 redis缓存springspringRedis缓存

1.什么是类加载器,类加载器有哪些? 要想理解类加载器的话,务必要先清楚对于一个Java文件,它从编译到执行的整个过程。 类加载器:用于装载字节码文件(.class文件) 运行时数据区:用于分配存储空间 执行引擎:执行字节码文件或本地方法 垃圾回收器:用于对JVM中的垃圾内容进行回收 1.1.类加载器 JVM只会运行二进制文件,而类加载器(ClassLoader)的主要作用就是将字节码文件加载到JVM中,从而让Java程序能够启动起来。现有的类加载器基本上都是java.lang.ClassLoader的子类,该类的只要职责就是用于将指定的类找到或生成对应的字节码文件,同时类加载器还会负...

1.线程状态-六种状态 线程的状态可以参考JDK中的Thread类中的枚举State,存在六种状态 publicenumState{ //尚未启动的线程的线程状态 NEW, //可运行线程的线程状态 RUNNABLE, //线程阻塞等待监视器锁的线程状态 BLOCKED, //等待线程的线程状态 WAITING, //具有指定等待时间的等待线程的线程状态(有限等待) TIMED_WAITING, //已终止线程的线程状态。线程已完成执行 TERMINATED; } 六种状态介绍: 新建(NEW) 当一个线程对象被创建,但还未调用start方法时处于新建状态 此时未...

假如redis的key过期之后,会立即删除吗? Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中删除掉。可以按照不同的规则进行删除,这种删除规则就被称之为数据的删除策略(数据过期策略)。 Redis的过期删除策略:惰性删除+定期删除两种策略进行配合使用 1.Redis数据删除策略-惰性删除 惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key 例子: setnamezhangsan10 getname//发现name过期了,直接删除key 1.1.惰性删除优缺点 优点 :对...

  2HyDHh3MOg71   2023年11月26日   25   0   0 数据redis数据redis

1.JVM内存结构 要求 掌握JVM内存结构划分 尤其要知道方法区、永久代、元空间的关系 结合一段java代码的执行理解内存划分 执行javac命令编译源代码为字节码 执行java命令 创建JVM,调用类加载子系统加载class,将类的信息存入方法区 创建main线程,使用的内存区域是 JVM虚拟机栈,开始执行main方法代码 如果遇到了未见过的类,会继续触发类加载过程,同样会存入方法区 需要创建对象,会使用堆内存来存储对象 不再使用的对象,会由垃圾回收器在内存不足时回收其内存 调用方法时,方法内的局部变量、方法参数所使用的是 JVM虚拟机栈中的栈帧内存 调用方...

1.starter介绍 SpringBoot在配置上相比spring要简单许多,其核心在于spring-boot-starter,在使用springboot来搭建一个项目时,只需要引入官方提供的starter,就可以直接使用,免去了各种配置。starter简单来讲就是引入了一些相关依赖和一些初始化的配置。 Spring官方提供了很多starter,第三方也可以定义starter。为了加以区分,starter从名称上进行了如下规范: Spring官方提供的starter名称为:spring-boot-starter-xxx 例如Spring官方提供的spring-boot-starte...

  2HyDHh3MOg71   2023年11月24日   21   0   0 实例化mavenspringmavenspring实例化

1.Springbean循环依赖 要求 掌握单例set方式循环依赖的原理 掌握其它循环依赖的解决方法 2.循环依赖的产生 首先要明白,bean的创建要遵循一定的步骤,必须是创建、注入、初始化三步,这些顺序不能乱 set方法(包括成员变量)的循环依赖如图所示 可以在【a创建】和【aset注入b】之间加入b的整个流程来解决 【bset注入a】时可以成功,因为之前a的实例已经创建完毕 a的顺序,及b的顺序都能得到保障 构造方法的循环依赖如图所示,显然无法用前面的方法解决 3.构造循环依赖的解决 思路1 a注入b的代理对象,这样能够保证a的流程走通 后续需要用到b的真...

1、什么是WebSocket? WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接 WebSocket是长连接 HTTP通信是单向的,基于请求响应模式 WebSocket支持双向通信 HTTP和WebSocket底层都是TCP连接 思考:既然WebSocket支持双向通信,功能看似比HTTP强大,那么我们是不是可以基于WebSocket开发所有的业务功能? WebSocket缺点: 服务器长期维护长连...

  2HyDHh3MOg71   2023年11月15日   32   0   0 websocketWebSocket

1.Freemarker介绍 FreeMarker是一款静态模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。FreeMarker不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。 模板编写为FreeMarkerTemplateLanguage(FTL)。它是简单的,专用的语言,不是像PHP那样成熟的编程语言。那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据,而在模板之外可以专注于要展示什么数据。 2.常用...

  2HyDHh3MOg71   2023年11月15日   31   0   0 freemarkerfreemarker

1.1.1介绍 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 Postman原是Chrome浏览器的插件,可以模拟浏览器向后端服务器发起任何形式(如:get、post)的HTTP请求 使用Postman还可以在发起请求时,携带一些请求参数、请求头等信息 作用:常用于进行接口测试 特征 简单 实用 美观 大方 1.1.2安装 双击Postman-win64-8.3.1-Setup.exe即可自动安装。 安装完成之后,进入页面中会提示有新版本可以升级(无需升级) 界面介绍: 1.2简单参数 简单参数:在向服务器发起请求时,向服务器传...

今日目标 掌握Redis数据持久化原理 在分布式系统中,存储非结构化数据的中间件Redis是必不可少的,Redis在小、中、大甚至高并发系统中都有发挥起作用的场合,在之前我已经给大家介绍过Redis的基础数据结构(String/Hash/Set/ZSet/List)的增删改查操作。 现在思考一个问题,Redis如果仅仅只是将数据缓存在内存里面,如果Redis宕机了再重启,那么存储在内存中的数据是不是就全部丢失了,这是不是严重的生产事故?如何解决这样的问题?这就用到了我今天要介绍的内容Redis持久化机制,他在将数据写到内存的同时,也在异步的将数据写入磁盘,进行数据持久化。 1.Dock...

  2HyDHh3MOg71   2023年11月13日   29   0   0 数据持久化redis数据持久化redis

1.同步和异步介绍 在了解什么事消息队列之前,我们要先知道同步和异步通讯的区别,我们从以下两方面介绍MQ: 同步和异步通讯 什么使用MQ 1.1.同步和异步通讯 微服务之间的通讯方式有同步和异步两种方式: 同步通讯: 实现方式OpenFegin,就像打电话,实时响应,同时不能和两个人通话 异步通讯: 实现方式MQ(消息队列),就像发邮件,或者微信聊天,可以同时和多人交流,并且不需要对方马上回复 两种方式各有优劣,同步方式,需要立即得到响应,但是不能同时和多个微服务进行通讯,异步方式可以同时和多个微服务进行交互,但是响应会有延迟。 1.1.1.同步通讯 通过上面...

  2HyDHh3MOg71   2023年11月13日   21   0   0 微服务消息队列数据

Docker镜像是Docker生态系统的最重要的概念。本文将介绍它们的基本概念、操作和使用方法,希望可以帮助小伙伴们更好地理解和应用Docker技术。在此之前我们先了解一下Docker架构,可以帮助我们更好的理解Docker镜像操作 1.Docker架构 我们昨天已经安装了Docker,因此今天才可以操作Docker镜像。 Docker在CentOS上部署 Docker是一个C/S架构,由两部分组成: Server(服务端):Docker服务器是运行在宿主机上的守护进程,负责管理和执行容器,还与内核交互,控制宿主机资源的分配和隔离,以确保容器的安全性和性能。 Client(客户端):用户可以...

  2HyDHh3MOg71   2023年11月13日   26   0   0 Dockernginx

1.会话跟踪技术介绍 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。一次会话中可以包含多次请求和响应. HTTP协议是无状态协议,每次同一浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现同一会话内数据共享 思考:下图建立几个会话? 每个浏览器都会与服务端建立了一个会话,加起来总共是3个会话。 思考:服务器如何识别多次请求是否来自于同一浏览器?这就需要我们学习今天的内容,会话跟踪技术。 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据 原因:H...

  2HyDHh3MOg71   2023年11月05日   30   0   0 sessionJavaJavasession

Redis的Java客户端很多,官方推荐的有三种: Jedis  (javaredis) Redisson Lettuce Spring对Redis客户端进行了整合,提供了SpringDataRedis,在SpringBoot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。 Jedis(了解) 项目准备 Jedis是Redis的Java版本客户端,现在我们开始进行测试Jedis,创建Maven项目结构如下: maven坐标依赖 <?xmlversinotallow="1.0"encoding="UTF-8...

  2HyDHh3MOg71   2023年11月02日   50   0   0 springredisredisspring

Stream详解 什么是流? 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而流是以声明的形式操作集合,它就像SQL语句,我们只需告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。因此,流的集合操作对我们来说是透明的,我们只需向流下达命令,它就会自动把我们想要的结果给我们。由于操作过程完全由Java处理,因此它可以根据当前硬件环境选择最优的方法处理,我们也无需编写复杂又容易出错的多线程代码了。 流的特点 只能遍历一次我们可以把流想象成一条流...

  2HyDHh3MOg71   2023年11月02日   32   0   0 stream流式处理stream流式处理

1.什么是SpringBootstarter SpringBootStarter机制是SpringBoot框架提供的一种约定,用于简化依赖管理和配置的过程。它基于可插拔的自动配置原则,通过打包一组相关的依赖项和自动配置类,为特定的功能模块提供一键式集成和使用。 具体来说,SpringBootStarter由以下几个关键组成部分组成: Starter依赖:Starter依赖是一个聚合性的依赖,提供了一组相关的库和工具,以及必要的传递性依赖。它们通常以spring-boot-starter-命名,如spring-boot-starter-web、spring-boot-starter-dat...

1.负载均衡 1.1.负载均衡介绍 随着互联网时代的到来,流量增加、高并发和数据海量的问题也逐步到了,在计算机系统和网络架构中,如果使用单体服务往往难以承受高并发和大负载的请求,容易导致系统性能下降甚至崩溃,这就需要我们架构师们从水平、垂直两个方面解决这些问题 垂直扩展:网络发展初期解决上述问题是通过增加服务器的硬件能力:网络、CPU、内存、磁盘等方面提升服务器处理能力,但是单体服务器总是存在瓶颈,一旦到达瓶颈就很难再提升,不然就要付出极大成本,显然不符合分布式设计理念。 水平扩展:通过集群部署,将单台服务器请求压力,分摊给多个服务器上,集群中的服务器通常被设计成无状态。但是如何将请求...

.拦截器【理解】 1拦截器介绍 1.1拦截器概念和作用 拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 总结:增强 核心原理:AOP思想 1.2拦截器和过滤器的区别 归属不同:Filter属于Servlet技术,Interceptor属于SpringMVC技术 拦截内容不同:Filter对所有访问进行增强,Interceptor仅针对SpringMVC的访问进行增强 1.3拦截器应用场景 拦截器本质上是面向切面编程(AOP),符合横切关注点的功能...

  2HyDHh3MOg71   2023年11月02日   29   0   0 拦截器ide拦截器springidespring

在工作中,我们掌握了微服务的服务注册与发现(nacos)、配置中心(nacos)、远程服务调用(feign)、网关(gateway),同时借助Idea编译工具多次完成本地服务启动、部署和验证。但是我们假想下面场景: 开发人员A写好的代码-->开发人员小王的电脑上运行,小周必须保证跟小王一样的系统环境(JDK/MySQL等) 系统代码部署从DEV-->TEST-->PRE-->PROD,每个环节都必须保证一样的系统环境(同上) 分布式系统中依赖组件非常多,组件与组件之间的部署往往会产生一些冲突(端口/依赖/环境等) 保证版本一致会耗费我们大量的时间和精力,同时万一有问...

  2HyDHh3MOg71   2023年11月02日   47   0   0 docker文件系统函数库
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~