自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中内存泄露和内存溢出是什么,如何解决

指的是程序中已经不再使用的对象仍然是被引用,导致垃圾回收器无法进行回收,时间长了,内存泄漏会累积,最终导致内存不足的问题。长生命周期对象持有短生命周期对象的引用,例如静态集合中存储的对象。方法区溢出:过多的类加载或动态生成的类,导致方法区内存耗尽。避免不必要的对象印用,可以在适当的时候将集合中的对象移除。这通常意味着程序需要的内存超出了 JVM 所允许的最大内存空间。栈内存溢出:通常是由于过深的递归调用,导致栈空间不足。指的是JVM在尝试分配对象时内存不足而抛出的。使用相应的工具,分析内存溢出的问题。

2024-09-05 14:32:47 666

原创 java中怎么去实现多租户,多租户又是什么

在Java中,每个租户通常是一个独立的公司或组织,他们希望在共享的环境中隔离自己的数据和配置,多租户之间可以实现资源隔离,也可以共享某个共同的资源数据,在逻辑层面上来看,他们是隔离的,但是底层上还是使用的相同的硬件资源。多租户的架构,通常应用在Saas程序当中,允许服务提供商通过单一实例为多个客户提供服务,从而提高资源利用率并降低成本。(3)共享数据库,共享Schema模式实现。使用TenanContext类去获取租客信息。(2)共享数据库,独立Schema模式实现。2.常见的租户数据模型。

2024-09-04 11:31:57 684 1

原创 关于SQL优化的几个方向

【代码】关于SQL优化的几个方向。

2024-09-02 17:12:31 887

原创 WebSocket与Http的区别以及优点

传统的 HTTP 协议是基于请求-响应模型的,客户端发送请求,服务器处理请求后再发送响应。在需要实时数据更新的场景中,这种方式效率较低,因为客户端必须频繁地轮询服务器以获取最新数据。WebSocket是双向的,在第一次通过HTTP协议建立了TCP全双工通信协议后,每次服务器和浏览器之间交互就不用去携带请求头进行交互了,减少了网络开销和提高了运行效率。然后服务器收到客户端的请求后,同样采取Http协议返回数据,通过检查请求头的。HTTP是单向的,在长连接中,每一次请求和每一次响应都会去携带大量的请求头。

2024-08-27 14:17:18 413

原创 SpringBoot单体项目的依赖问题

问题如下:方法A中有 方法B、方法C,A、B、C都被打上了事务注解。假如在执行过程中,B、C发生挂掉或者回滚,方法A是否会被影响,如果会怎么解决。方法 B 或 C 的失败不影响方法 A 的事务,可以通过配置不同的事务传播属性来实现。解决:方法A这时候已经是作为方法B、方法C的根事务了,B、C回滚是会影响到A的执行的。,这将强制 Spring 在调用方法 B 或 C 时启动一个新的独立事务。2.可以用try-catch进行异常捕捉处理。

2024-08-27 11:41:45 198

原创 SpringBoot怎么去自定义Bean的加载顺序,指定Bean加载

如果想在框架启动的时候想自定义去加载你想先加载的Bean,可以通过以下方式进行实现。数值越小优先级越高,主要用于排序。)和 Java 配置,(显示处理,从上而下)beanA,beanB可以进行调换。类型的 Bean,如过滤器、拦截器等。2. 使用@Order注解。

2024-08-27 11:31:44 863

原创 前端问题,页面进行查询的时候,点击重置没有反应

, vmCount: 0 } ​ begin: "2024-08-01" ​ end: "2024-08-09" ​ pageNum: 1 ​ pageSize: 10 ​ <prototype>: Object { …重置后:searchParam Object { begin: "2024-08-01", end: "2024-08-09", pageNum: 1, pageSize: 10, date: null, …问题:当我在进行页面时间查询然后重置的时候出现无法刷新页面,查询条件也没有更新。

2024-08-27 10:55:18 318

原创 Spring AI的初步使用以及认识

Spring AI项目旨在简化包含人工智能功能的应用程序的开发,而不会产生不必要的复杂性,核心是提供抽象,作为开发AI应用程序的基础。这些抽象有多个实现,可以用最少的代码更改轻松地进行组件交换。2.JDK 17(这个可用可不用)首先附上Spring Ai的官方文档,以便后面去深入学习。准备:1.OpenAI 的Api Key。以上只是简单的使用,更多深入可以通过官方文档学习。Spring Ai 怎么对接Open AI。编写Controller接口。Config配置文件格式。SpringAI的认识。

2024-05-21 10:31:08 446

原创 java实现下载Excel表,放入zip包,可通用

4.对自己想要的数据,进行处理筛选,减少一下if的使用,要不然太复杂,效率低了。我用的流进行处理,一样的效果。3.接下来就是要生成Excel表,你所需要的,并且把模版放入temples下面。2.写一个生成zip方法,设置ZIp响应头,生成一个生成zip流,如下。1.写一个你需要导出的类,如下。

2024-04-15 10:27:01 476

原创 java低代码框架jeecg-boot,遇到无法实现排序的问题

将我要的参数提前设置为null,这样就可以实现,但是犹豫我这个参数存在数据库里的是varchar,所以要做出改变。排查后发现是jeecgboot框架自己封装了参数,会随着req传递过来,导致无法实现排序。问题:在进行实现页面数据倒序排序的时候,无法实现排序,用的是Lambda。在这里我使用了HashMap来避免这个问题,并且删除了column。

2024-03-07 09:39:00 1015 1

原创 Java怎么在项目中集成Elasticsearch7.x版本

使用RestHighLevelClient创建客户端的时候,不要使用以下方法,会出现一个报错,就是出现要求你关闭ES客户端的问题,有数据泄露的风险。Elasticsearch6.x以下的版本在一些内网开发的企业,可能多数不会去使用到,用到比较多的话大都是7.x版本的,我在这里使用到的是。Spring Data Elasticsearch 提供的一个基础配置类,用于配置 Elasticsearch 相关的一些参数和设置。3.我们构建好几本的ES客户端后,在添加完数据后,就可以去实现搜索功能了。

2023-11-13 11:34:00 350

原创 门户网站统一集成CAS单点登录java实现

3.创建一个接口,用来接收前端传过来的code,拿到code通过getToken方法换取token ,之后可以拿到里面的一些相关参数,如access_token、openid等,再将获取到的参数access_token代入进getUserInfo获取到用户信息。4.getToken中,创建RestTemplate发请求 ,构建请求头,构建请求体参数,组合请求头和请求体参数。一般来说,前端都会传code、APPID和APPSecret给到你。2.在Controller层使用value读取配置文件中的参数。

2023-10-23 17:02:38 903

原创 锁的认识理解

轻量级锁(CAS):在没有多线程竞争的情况下,通过CAS操作尝试将MarkWord锁标志位更新为指向LockRecord的指针,减少了使用重量级锁的系统互斥量产生的性能消耗。重量级锁: 如果锁竞争情况严重,某个达到最大自旋次数(10次默认)的线程,会将轻量级锁升级为重量级锁,重量级锁则直接将自己挂起。互斥锁(阻塞):一个线程获取到锁之后,另一个线程来获取锁就会失败,需要等待第一个线程执行完毕才可以获取到。非公平锁(不排队加锁):多个线程都在竞锁时不需要排队加锁,是为非公平锁。

2023-09-08 15:43:50 197

原创 对于java多线程的深入认识

线程通信是指的多个线程之间的数据共享以及相互调用的过程,是主要目的是允许线程之间共享信息,以便它们可以相互通知、协调和同步它们的操作。当线程没有结束,当前线程对象被回收了,Key是弱引用,被GC回收,但是他的Value是强引用还没回收,这就会造成内存泄露。核心线程 ->用完了核心线程后 ->多余的线程存放队列 -> 队列满了 ->使用拒绝策略 ->然后多余的进行回收。1.线程池的话相当于管理了多个线程的一个池子,可以控制线程并发数量、提高线程的复用率、管理线程的生命周期。

2023-09-08 13:12:18 156 1

原创 JVM的认识

1.新对象存储在Eden区,没有空间了就会调用Minor GC回收,清理无用对象,Eden和Form Survivor中的存活对象如果小于To Survivor,就会进入。优先使用爷爷加载,如果没有加载到再使用它爹加载,如果他爹也没有加载到,才到自己加载,如果自己也没有加载到才报ClassNotFountException。2.2复制算法:把内存分为大小相等的两块,每次存储只用其中一块,当这一块用完了,就把存活的对象全部复制到另一块上,同时把使用过的这块内存空间全部清理掉,往复循环 ,如下图。

2023-09-06 09:18:05 111 1

原创 事务的四大特性

利用Innodb的undo log,undo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销所有已经成功执行的sql语句,他需要记录你要回滚的相应日志信息,undo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子。Redo Log记录的是新数据的备份。隔离性要求如果两个事务修改同一个数据,则必须按顺序执行,并且前一个事务如果未完成,那么未完成的中间状态对另一个事务不可见。

2023-09-05 00:35:32 125 1

原创 对分布式锁的具体理解和学习

Redisson对分布式锁进行了封装,对于锁超时问题,它提供了看门狗进行锁时间的续期,底层使用了定时任务每10s检查一下,如果业务还未执行完成,未释放锁,就进行超时时间续期。但是需要设置锁的自动删除来防止死锁,所以要结合expire使用.为了保证setnx和expire两个命令的原子性,可以使用set命令组合。在Redis中实现分布式锁通常使用基于SETNX(SET if Not eXists)命令的方式,使用该命令只在键。(3)获取分布式锁:可重入锁、公平锁、联锁、红锁、闭锁 、信号量。

2023-09-04 20:20:14 89 1

原创 分布式事务和分布式锁的区别以及作用

也就是一个请求可能涉及到对多个数据库的写操作,要保证多数据库的一致性就需要用到分布式事务。分布式锁:是为了防止多个线程对同一条数据的写操作,保证数据的安全性和一致性。

2023-09-04 18:59:38 349 1

原创 MySQL中对于锁的深入学习

乐观锁:乐观锁认为在程序运行时候不会出现线程并发问题,所以在处理数据的时候不会加锁,但是会在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测。共享锁:当一个事务为数据加上读锁之后,其他事务只能对该数据加读锁,而不能对数据加写锁,直到所有的读锁释放之后其他事务才能对其进行加持写锁 ,在select语句末尾后面加上lock in share mode。悲观锁:悲观锁和乐观锁的观点相反,他认为在程序运行的时候总是会出现线程并发问题,所以在处理数据的时候总是会加上锁处理,他的执行速度也就很慢了。

2023-09-04 18:36:14 101 1

原创 Java热门推荐的一个实现

先写出热门推荐的计算规则,这里是评论+销量+浏览量。然后根据热门课程的信息,查询出全部课程的热门信息。对查询的热门课程信息进行处理。然后再查出全部的课程。

2023-08-11 21:47:26 300 1

原创 Java面包屑功能实现

3.根据Path,切割层数组(List) -> 批量查询一级,二级,三级分类,得到一个List。4.循环分类列表,拿到每个分类 ,查询其同级分类列表,谁的PID和他的PID相同,她们就是同级。{ 三级分类(半身裙) [同级列表] }一级分类(服饰) [同级列表]二级分类(女装) [同级列表]2.后台根据分类ID查询分类,拿到Path。1.发送一个分类ID到后台。

2023-08-11 10:51:41 422 1

原创 Java管理系统拉黑相关功能的实现(放入redis,不用建表)

黑名单查询功能的话,用redisTemplate取出“blacklist”的所有key,然后创建ArrayList集合,遍历这个key,通过key截取到“blacklist”后面的值,然后取到id,查询出相应对象添加到ArrayList中。再生成一个“blacklist:”+id的业务键,然后将ip,phone,userID放入redis的hash结构当中存储,并且要设置永不过期。拉黑的话,我觉得是可以不写表的,只是个人理解,因为是不会出现高并发场景,所以我觉得就放入redis就足够了。

2023-08-09 19:05:31 914

原创 Java如何生成二维码生成在前端页面?

将参数通过post请求调到后端,后端返回的数据拼接data:image/png;base64生成二维码。后端接收到前端发的POST请求,然后拼接url地址+验证码,设置好宽度、高度。code是验证码,userID是当前用户的ID,可以根据具体情况改变。步骤一:前端页面就弄个img 给src绑定一个属性。需要用到配置类,在下面提供了。在data数据写入上面img绑定的一个属性。后端代码(java)

2023-08-09 18:33:49 1344

原创 RocketMQ的使用

下面对三种发送方式做一个对比可靠性最高: 同步发送 > 异步发送 > 单向发送性能最高:单向发送 > 异步发送 > 同步发送使用场景建议如下如果是比较重要的不可丢失的消息,且对时效性要去不高建议使用同步发送,如转账消息如果是不重要的可失败的消息,比如日志消息,建议使用单向发送如果对时效性要求比较高,且消息不能丢失,可以尝试使用异步发送。

2023-07-27 20:19:40 221 1

原创 RocketMQ的使用步骤

一、入门2.1.导入依赖2.2.生产者步骤分析创建producer组设置NameServer地址startr生产者发送消息获取结果结束producer2.3.消费者创建consumer组设置Name Server地址设置消费位置,从最开始销毁设置消息回调处理监听 -> 处理消息。

2023-07-27 20:11:35 1501 1

原创 对 RocketMQ的认识

RocketMQ是一个统一消息引擎、轻量级数据处理平台。RocketMQ是⼀款阿⾥巴巴开源的消息中间件,双十一承载了万亿级消息的流转,2016年11⽉,阿⾥巴巴向 Apache 软件基⾦会捐赠 RocketMQ,成为 Apache 孵化项⽬,2017 年 9 ⽉ ,Apache 宣布 RocketMQ孵化成为 Apache 顶级项⽬(TLP )成为国内⾸个互联⽹中间件在 Apache 上的顶级项⽬。

2023-07-27 19:59:32 224 1

原创 SpringCloudNetflix学习

1.概念:Spring Cloud Gateway是Spring Cloud自己的产物,基于Spring 5 和Spring Boot 2.0 开发,Spring Cloud Gateway的出现是为了代替zuul,在Spring Cloud 高版本中没有对zuul 2.0进行集成,SpringCloud Gateway使用了高性能的Reactor模式通信框架Netty。Filter(过滤器):分别是Gateway Filter网关filter和Global Filter全局Filter。

2023-07-24 20:27:33 103

原创 对SpringCloud中的Feign认识

Feign是一个声明式的http客户端,使用Feign可以实现声明式REST调用,它的目的就是让Web Service调用更加简单。Feign整合了Ribbon和SpringMvc注解,这让Feign的客户端接口看起来就像一个Controller。在上图所示当中,我们将之前通过RestTemplate和Ribbon来进行发送调用请求,现在换成了Feign来替代他们,Feign中整合了RestTemplate和Ribbon。要使用Feign,我们除了导入依赖之外,需要主配置类通过。5.配置Feign接口。

2023-07-22 17:37:15 131

原创 Eureka介绍

3.修改工程springcloud-order-server-1030 , springcloud-user-server-1020在他们的pom.xml都导入springcloud-user-common 模块。二、EureakServer实战(RestTemplate服务通信、Ribbon负载均衡)2.在springcloud-user-common中创建User对象。4.在user模块中写controller,返回user对象。工作原理:注册->发现->续约->下线。一、Eureka介绍。

2023-07-21 23:58:18 161 1

原创 SpringCould简单认识

Bus:消息总线,消息总线是在微服务中给各个微服务广播消息的一个组件,我们使用消息总线构建一个消息中心,其他微服务来接入到消息中心,当消息总线发起消息,接入的微服务都可以收到消息从而进行消费。Ribbon/Feign:都是客户端负载均衡器,它的作用是在服务发生调用的时候帮我们将请求按照某种规则分发到多个目标服务器上,简单理解就是用来解决微服务之间的通信问题。Sleuth:微服务链路追踪,监控维护之间的调用关系,让程序员方便直观的感受到一个请求经历了哪些微服务,以及服务的请求时间,是否有异常等。

2023-07-21 23:26:50 779 1

原创 应用架构的演变

SOA:面向服务的架构,我们可以简单的理解为SOA把分布式架构划分成表示层和服务层,服务层中包含了业务逻辑和相关流程,只需要对外暴露服务即可,表现层负责处理和页面的交互。认识:可以认为是对SOA的进一步封装或者是扩展,也就是将服务层中的一些具体的服务再进行一些拆分出来。微服务有极强的扩展能力,业务量大的服务可以再次拆分服务,也可以进行集群部署,剔除服务也很方便。应用架构的演变:单体->分布式->SOA(面向服务架构)->微服务->......项目拆分多个子应用,每个子应用业务简单,代码简单,方便维护开发。

2023-07-20 19:04:29 222

原创 ES在Springboot中的基础使用

继承ElasticsearchRepository<>中的泛型要根据创建的doc文档类变化。步骤四:创建一个OrderESRepository接口。order是表示的索引库名,type是文档类型。步骤三:创建一个doc基础类。步骤六:编写测试类测试。

2023-07-19 23:54:23 409 1

原创 Lucene,ES全文检索

需要模糊查询的使用DSL查询 ,需要精确查询的使用DSL过滤,在开发中组合使用(组合查询) ,关键字查询使用DSL查询,其他的都是用DSL过滤。bool : 组合搜索bool可以组合多个查询条件为一个查询对象,这里包含了 DSL查询和DSL过滤的条件。term:理解为等值查询,字符串,数字等都可以使用它,把查询的内容看成一个整体去检索ES库。match:分词匹配查询,会对查询条件分词 , multi_match :多字段匹配。(3):用户查询的时候,就去搜索相关的索引。"fullName": "王"

2023-07-19 23:44:14 161

空空如也

空空如也

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

TA关注的人

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