自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 总结Dubbo开源RPC框架

集群:多个机器提供一样的服务(实现高性能、高可用、 可伸缩、高可扩展 )分布式:多个机器提供不同的服务,合起来为一个大服务。

2024-03-19 00:21:30 1060

原创 总结Redis的原理

磁盘I/O速度慢。

2024-03-07 17:24:21 984

原创 理解Nacos是如何实现动态配置的

Nacos(阿里巴巴开源的分布式配置中心和服务发现系统)实现动态配置的主要思想是通过监听机制和发布/订阅模式来实现配置的实时更新。以下是 Nacos 实现动态配置的关键步骤:配置数据存储: Nacos 将配置数据存储在持久化的存储介质中,可以是数据库或其他存储系统。这样可以确保配置信息的持久性和可靠性。监听机制: Nacos 提供了监听配置变更的机制。客户端可以注册配置监听器,当配置发生变化时,监听器会收到通知。发布/订阅模式:配置中心充当发布者,而应用程序充当订阅者。

2024-01-23 22:27:19 1540

原创 理解Java中的AQS

AQS:AbstractQueuedSynchronizer(抽象队列同步器),是一个用于。AQS 提供了一种可扩展的基础,允许开发者实现各种形式的同步控制机制。例如:独占锁(ReentrantLock)、共享锁(ReentrantReadWriteLock)、CountDownLatch 等都是基于 AQS 的同步机制实现的。AQS 的核心思想是。它维护了一个等待队列,线程通过排队在队列中等待获取锁或者资源。AQS 提供了一些基本的方法,允许子类来定义自己的同步逻辑。其中两个主要的模板方法是。

2024-01-23 22:03:18 472

原创 OOM分析与解决

如果上述方法无法解决,可以通过 jmap 命令 dump 内存对象 jmap-dump:format=b,file=dump.hprof ,然后利用 Eclipse MAT https://www.eclipse.org/mat 功能逐一分析开销最大的 classloader 和重复 class。运行时报错,应用程序可能会动态创建大量 class,而这些 class 的生命周期很短暂,但是 JVM 默认不会卸载 class,可以设置。如果是内存泄漏,需要找到持有的对象,修改代码设计,比如。

2024-01-18 18:46:04 873

原创 复杂map的优雅赋值

方式一:使用computeIfAbsent方法。方式二:导入guava库,使用Multimap。

2024-01-18 18:43:12 399

原创 理解Java架构中的中间件

中间件是处于操作系统和应用程序之间的软件。使用时往往是一组中间件集成在一起,构成一个平台(开发平台和运行平台),在这组中间件中必须要有一个通信中间件,即中间件=平台+通信。该定义也限定了只有用于分布式系统中的才能称为中间件。主要分类:远程过程调用、面向消息的中间件、对象请求代理、事务处理监控。

2023-12-27 16:53:28 459 1

原创 理解Spring中bean的作用域及其生命周期

【代码】理解Spring中bean的作用域。

2023-12-22 11:20:07 426

原创 理解Java中锁的应用

当线程 A 持有独占锁a,并尝试去获取独占锁 b 的同时,线程 B 持有独占锁 b,并尝试获取独占锁 a 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁,而发生的阻塞现象,我们称为死锁。

2023-12-22 11:19:41 909

原创 理解SpringMVC的工作流程

前置控制器 DispatcherServlet。映射控制器 HandlerMapping。处理器 Controller。模型和视图 ModelAndView。视图解析器 ViewResolver。

2023-12-22 11:19:22 503

原创 理解Java中的volatile关键字

保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的禁止指令重排对变量的写操作不依赖于当前值(反例如自增自减)该变量没有包含在具有其他变量的不变式中(反例如两个变量比较的执行逻辑)

2023-12-22 11:18:40 327

原创 理解OSI中的七层模型

OSI(Open Systems Interconnection)模型对计算机系统之间发送信息的方式额标准化,它不是一组规则,而是一个工具,用于理解网络是如何运作的。

2023-12-22 11:18:22 952

原创 理解网络安全中的用户攻击

XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。

2023-12-22 11:17:59 370

原创 理解io/nio/netty

bio为同步阻塞模式nio为同步非阻塞模式,一个线程管理多个输入输出通道,涉及轮询、多路复用(一个线程不断轮询多个socket的状态,当socket有读写事件时调用io事件)核心:channel(双向)、buffer、selector(监听通道事件)

2023-12-22 11:17:36 531

原创 理解HashMap的原理

基于数组、链表、红黑树实现。

2023-12-22 11:17:16 760

原创 理解Java中的递归

方法自己调用自己,每次传入不同的参数变量。

2023-12-22 11:16:39 409

原创 理解Zookeeper

Zookeper是一个可以作为注册中心、配置中心、分布式锁的分布式解决方案。

2023-12-04 00:10:36 940

原创 IDEA常用快捷键

快捷键功能tab接受选择–选择的名称将覆盖带插入符号右侧的其它名称–而如果按shift或者enter,光标右边的内容会保留Ctrl+shift+空格智能匹配–查找当前上下文的方法和变量Ctrl+d对比文件–选中需要对比的文件shift+滚动水平滚动Ctrl+alt+l格式化Ctrl+k提交Ctrl+alt+z回滚类Ctrl+shift+F10运行Ctrl+alt+v生成变量–选中一个方法,可以生成前置变量,并将返回变量的命

2023-12-02 14:56:14 430

原创 linux命令学习

两台主机之间#添加下面这行配置 @符号表示以UDP的方式发送日志到另一台主机这种方式相比于TCP的方式,优点是传输速度快想要收到日志需要手动开启收日志的配置开启插件以及插件中的接口之后需要重启服务关闭防火墙。

2023-10-02 15:55:56 237

原创 理解反射、动态代理、AOP(用注解实现方法开关)

添加四个元注解定义属性-返回类型类Class、返回类型是否可为空boolean-可以赋默认值default false添加注解@Aspect @Component定义一个切面方法,返回值为void,添加注解@Pointcut(“@annotation(注解接口的全类名路径)”),

2023-06-15 21:26:10 618

原创 Java面试题

首先理解String为什么不可变String为什么被设计成不可变。

2023-06-13 00:25:26 420

原创 操作系统

理解:并发共享并发和共享的关系虚拟异步理解指令、处理器状态、程序之间的关系:

2023-06-13 00:22:38 58

原创 Java小知识

类似一个迭代器,只能遍历一次,在流的过程中对元素执行操作,如过滤或者符合某个条件。

2023-06-13 00:21:12 402

原创 理解websocket连接的原理

websocket连接,只需要一次HTTP握手,避免HTTP的无状态性,且服务器可以主动通知,不限次数,直到请求关闭。

2023-04-18 13:57:50 929

原创 拷贝控制台打印出来的数组对象

问题:如何拷贝谷歌控制台打印出来的数组对象。右键需要拷贝的数组对象。选择 复制object。

2023-03-31 15:18:25 519 2

原创 在程序中调用一个参数为json数组的远程接口的传参问题

在程序中调用一个参数为json数组的远程接口的传参问题。

2023-03-31 10:24:27 1663

原创 理解hutool工具包中StrUtil.isNotEmpty(str)方法

问题:StrUtil.isNotEmpty(str);此外,StrUtil.isNotEmpty(str)方法还会删除字符串开头和结尾的空格,并检查处理后的字符串是否为空。StrUtil.isNotEmpty(str)方法不仅检查字符串是否为null,还检查它。=0将返回true。则StrUtil.isNotEmpty(str)将返回false,因此,如果传入空字符串,String str = " ";

2023-03-30 11:00:02 642

原创 IDEA异常退出后,服务未关闭

IDEA异常退出后,服务未关闭当再次开启IDEA后,启动服务经常找不到网关的端口9800或者同时启动了一个服务在多个不同的端口。

2023-03-29 21:00:58 517

原创 理解业务高级查询

上面是根据过滤条件以及当前页和每页显示的记录数返回查询的实体类对象进行了相关的连表查询操作该语句查询了 hr_employee 表,并通过 left join 关键字连接了 bs_org、bs_users、bs_post 等表。查询结果包括 hr_employee 表的全部字段(使用了 t.*),以及其他表的一些字段,如 u.full_name、o2.name、p.post_number、o1.name 等。${filter} 是一个占位符,表示可以根据实际需要动态拼接 SQL 查询条件。

2023-03-29 20:37:45 67

原创 接口返回的list中有空数据

接口返回给前端的list中有空数据,导致前端无法显示。

2023-03-29 19:59:19 222

原创 IDEA后台断点不生效

背景:连接本地的服务进行测试调试代码时,打的断点老是自动跳过发送一个远程服务请求时,后台报404,找不到服务,但有时候又可以正常请求到前端页面的请求返回结果不一样。

2023-03-28 11:22:15 780

原创 记录支持显示代码行号和图片插入功能

VS code中安装插件paste image(mushan)command+option+V粘贴图片。查看图片:cmd+click。图片会保存在同级目录中。

2023-03-26 12:57:18 74

原创 策略模式的应用

反思:刚开始的时候对程序不太理解,认为由于传入的参数不同,必须在业务服务中确定是哪个消息服务,或者考虑远程获取到配置类的map从而获取到特定的消息服务,才能进行传参,考虑后理解可以将不同的参数封装成一个公共的VO类,服务正常在消息服务中心进行调用,其他微服务只需要提供必须的参数以供判断。最近需要写一个消息推送的服务,根据前端用户的配置支持不同的消息服务,应用到了策略模式。

2023-03-22 22:13:53 74

原创 代码中select语句报错

编写的select语句在navicat中可以正常执行,但是在代码中报红,显示expect;

2023-03-21 23:16:01 219

原创 postman测试接口接收不到参数

最近写封装成VO的类作为controller的参数,使用@RequestBody注解进行修饰,用postman进行测试时,接收不到参数,但是请求可以成功返回。

2023-03-21 23:09:00 1898

原创 总结空指针异常

【代码】总结空指针异常。

2023-03-17 20:23:33 358

原创 记录java相关注解的使用

注解

2023-03-11 23:11:31 133

原创 理解实体类中serialVersionUID序列化版本号

理解:用于实现了Serializable的类中,试用场景是类的序列化。Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

2023-03-10 15:05:08 727

原创 使用IDEA进行代码调试

IDEA

2023-03-09 19:18:29 714

原创 解决动态数据源切换问题

动态数据源

2023-03-08 23:18:07 401

空空如也

空空如也

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

TA关注的人

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