自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

白羊座的橙子

白羊座的橙子的学习笔记

  • 博客(444)
  • 收藏
  • 关注

原创 性能调优篇 四、JVM运行时参数

直接在DOS窗口中运行java或者java -help可以看到所有的标准选项。比较稳定,后续版本基本不会变化。

2025-01-20 22:31:26 641

原创 根据进程id查看服务使用的垃圾收集器

*1.使用`jcmd`工具****步骤:****2.使用`jinfo`工具****步骤:****3.使用Java性能监控工具****3.1使用VisualVM****3.2使用JavaMissionControl(JMC)****4.使用运行时Java命令打印GC信息****5.使用`jstat`工具查看GC活动****总结**1.使用jcmd工具jcmd是JDK自带的工具,可以用于查询运行中的Java进程的信息,包括垃圾收集器的详细配置。

2025-01-19 22:51:33 670

原创 HotSpot JVM中的两种模式

*1.Client模式****2.Server模式****Client模式vsServer模式:比较****3.自动选择模式****4.哪个模式更好?**HotSpotJVM是OracleJDK中的默认JVM实现,支持多种运行模式来优化性能。HotSpotJVM提供了两种主要的执行模式,它们分别是Client模式和Server模式。这两种模式优化的目标不同,适用于不同的应用场景。1.Client模式。

2025-01-19 14:53:26 750

原创 ws长时间不发消息会断连吗?

WebSocket 协议本身并没有规定连接必须频繁发送消息。在长时间不发送消息的情况下,连接理论上仍然会保持打开状态,直到以下事件之一发生:服务器端通常会配置一些空闲连接的超时策略,以避免资源浪费。例如:与服务器类似,客户端也可以实现类似的空闲超时机制。客户端应用可能会:在某些网络环境下,特别是在使用代理、负载均衡器或防火墙的情况下,长时间未活动的 WebSocket 连接可能会被中断或关闭:WebSocket 协议本身提供了 Ping/Pong 机制,用于保持连接活跃,避免连接因为空闲而被关闭。WebSo

2025-01-01 23:25:33 896

原创 Linux常用命令总结

是另一个常用的命令,用来显示网络连接、路由表、接口统计信息等。是一个非常强大的工具,可以用来列出当前系统中打开的文件和网络连接。这个命令会列出所有当前的服务单元(包括运行中、已停止等状态的服务)。这个命令会列出所有处于“非活动”状态的服务,也就是那些尚未启动的服务。要根据进程 ID(PID)查询该进程绑定的端口,你可以使用。可以查询某个进程(通过 PID)所使用的端口。这些命令帮助你管理和查看系统中可启动的服务。如果你想查看哪些服务未启动,可以结合。命令来查询进程的端口信息。来查看某个进程的端口。

2025-01-01 22:58:38 1023

原创 响应式编程一、Reactor核心

响应式编程:1、底层:基于数据缓冲队列 + 消息驱动模型 + 异步回调机制2、编码:流式编程 + 链式调用 + 声明式API3、效果:优雅全异步 + 消息实时处理 + 高吞吐量 + 占用少量资源回调机制:类似于SpringBoot的事件机制,在SpringBoot应用的启动过程中触发事件。Reactor 是一个用于在JVM构建非阻塞应用的响应式编程框架!

2024-12-01 22:06:19 913

原创 什么是httpbasic认证?

HTTP Basic Authentication 适合简单需求,但如果是生产环境,尤其是面向公众的服务,建议使用更安全的认证方式,如 OAuth 或 JWT。HTTP Basic Authentication(HTTP 基本认证)是一种最简单的认证方式之一,用于保护 web 应用或 API 的访问。用户登录后,服务器生成一个会话标识(Session ID),存储在客户端 Cookie 中,用于后续请求验证。a. 不安全:用户名和密码通过网络传输,如果未使用 HTTPS,容易被窃听。

2024-11-24 16:34:25 732

原创 SpringBoot3 集成Junit4

Spring Boot默认使用JUnit 5,但可以通过排除JUnit 5依赖并引入JUnit 4来使用JUnit 4。使用来指定JUnit 4的测试运行器。编写测试时,可以使用JUnit 4的常见注解,如@Before@After@Test等。通过以上步骤,你就可以在Spring Boot中使用JUnit 4进行单元测试了。如果你有其他问题或者遇到困难,随时告诉我!的作用是让JUnit 4在执行测试时,能够使用Spring的测试框架(TestContext Framework)进行测试。

2024-11-06 23:29:26 835 1

原创 SpringBoot3集成Junit5

Spring Boot 3已经内建了对JUnit 5的支持,只要使用依赖即可。编写JUnit 5测试时,使用加载应用上下文。可以利用JUnit 5的生命周期方法、参数化测试等特性进行更精细的测试。

2024-11-06 23:03:02 953

原创 SQLite语法

菜鸟教程-https://www.runoob.com/sqlite/sqlite-tutorial.html

2024-09-13 08:25:34 193

原创 SQLite

通过以上步骤,Spring Boot、MyBatis 和 SQLite 已经成功集成。MyBatis 结合 SQLite 是一个非常轻量级的数据库解决方案,适合用于小型应用和嵌入式设备的开发。

2024-09-13 08:00:54 1349

原创 数字证书学习

数字证书(Digital Certificate)是由权威的认证机构(Certificate Authority, CA)颁发的电子文档,用于在数字通信中验证某一实体(如个人、组织或网站)的身份。它将公钥与该实体的身份信息绑定在一起,确保在网络通信中对方的身份是真实可信的。

2024-09-12 08:26:14 731

原创 密码学 - 尚硅谷

Base64是网络上最常见的用于传输8Bit字节码的可读性编码算法之一,可读性编码算法不是为了保护数据的安全性,而是为了可读性。可读性编码不改变信息内容,只改变信息内容的表现形式。Base64算法原理base64 是 3个字节为一组,一个字节 8位,一共 就是24位 ,然后,把3个字节转成4组,每组6位,缺少的2位,会在高位进行补0。这样做的好处在于 ,base取的是后面6位,去掉高2位 ,那么base64的取值就可以控制在0-63位了,所以就叫base64。base64 构成原则。

2024-09-12 07:56:26 741

原创 win bat脚本启动jar包

echo off:: 设置Java路径和JAR文件路径:: 配置文件路径:: 设置Java启动参数 (如内存设置等):: Spring Boot的额外参数 (例如配置文件路径):: 检查JAR文件是否存在echo JAR文件不存在: %JAR_FILE%exit /b 1:: 启动应用程序echo 正在启动应用程序...:: 检查启动结果echo 应用程序已成功启动!) else (echo 应用程序启动失败!exit /b 1。

2024-09-06 16:05:59 818

原创 Linux开放防火墙端口

在 Kylin Linux 上,开启防火墙端口的步骤与其他 Linux 发行版类似。如果 Kylin Linux 使用。(这在许多基于 CentOS 或 RHEL 的发行版上是默认的),你可以按照以下步骤来管理防火墙端口。在某些情况下,Kylin Linux 可能会使用。要确保规则在系统重启后仍然有效,需要保存。作为防火墙管理工具。

2024-08-30 17:09:07 4815

原创 在Spring中如何手动开启事务(使用编程式事务)

一、使用 transactionManager1、向容器中注入事务管理器2、使用 transactionManager 提交事务3、测试二、使用TransactionTemplate1、向容器中注入 TransactionTemplate2、开启事务。

2024-06-13 22:47:13 1310 1

原创 SpringBoot中如何手动开启事务

在Spring Boot中,虽然大多数情况下推荐使用@Transactional注解来管理事务,但有时需要更灵活地手动控制事务。这可以通过TransactionTemplate或PlatformTransactionManager来实现。

2024-06-02 14:56:10 1528

原创 对于Spring应用来说 ClassPath指的是哪些地方 ?

1. 编译输出目录2. 依赖的JAR文件3. 外部库和第三方库4. 应用服务器或容器提供的类5. 资源文件6. 测试类路径示例Maven项目的类路径Gradle项目的类路径在Spring中访问类路径资源使用 `@Value` 注解使用 `ResourceLoader`使用 `Resource` 接口总结在Spring应用中,ClassPath指的是应用程序的类加载路径(ClassLoader Path),它包含了所有应用程序运行时可以加载的类和资源的位置。具体来说,ClassPath。

2024-06-02 10:28:42 958

原创 8、资源操作 Resource

Java的标准java.net.URL类和各种URL前缀的类无法满足所有对low-level资源的访问。比如:没有标准化的 URL 实现访问需要从类路径或相对于 ServletContext获取的资源。并且缺少某些Spring所需要的功能,例如检测某资源是否存在等。Spring的Resource声明了访问low-level资源的能力。在Spring框架中,Resource接口是一个抽象接口,用于统一访问各种低级别(low-level)的资源。低级别资源指的是那些需要通过底层I/O操作进行读取和写入的资源。

2024-06-01 23:01:43 966

原创 SpringContext工具类

SpringContext工具类。

2024-05-26 21:34:46 153

原创 SpringBoot集成RocketMQ

https://blog.youkuaiyun.com/qq_45297578/article/details/128728991

2024-05-24 23:52:02 230

原创 四、RocketMQ应用

顺序消息指的是,严格按照消息的发送顺序进行消费的消息(FIFO)。延时消息的延迟时长不支持随意时长的延迟,是通过特定的延迟等级来指定的。

2024-05-19 18:06:38 931 1

原创 三、RocketMQ工作原理

Rebalance即再均衡,指的是:⼀个Topic下的多个Queue在同⼀个Consumer Group中的多个Consumer间进行重新分配的过程。Rebalance机制的本意是为了提升消息的并行消费能力。由于⼀个队列最多分配给⼀个消费者,因此当某个消费者组下的消费者实例数量大于队列的数量时,多余的消费者实例将分配不到任何队列当出现消费者对某条消息重复消费的情况时,重复消费的结果与消费一次的结果是相同的,并且多次消费并未对业务系统产生任何负面影响,那么这个消费过程就是消费幂等的。

2024-05-18 12:14:36 964

原创 十二、泛型

一、什么是泛型二、为什么需要泛型?三、自定义泛型结构1、泛型类2、泛型方法四、泛型在继承上的体现泛型就是定义类、接口时通过一个标识表示类中某个属性的类型或者是方法的返回值、参数类型。这个类型参数将在使用时确定泛型方法:在方法中出现了泛型结构,泛型参数与类的泛型参数没有任何关系(泛型方法所属的类是不是泛型类都不要紧)访问权限 返回方法 方法名(泛型标识 参数名称) 抛出异常。

2024-05-05 16:34:43 266

原创 十四、网络编程

通过 URL 我们可以访问 Internet 上的各种网络资源,比如最常见的 www,ftp 站点。URL: uniform resource locator 统一资源定位符,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。UDP数据通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。如同发快递包裹一样。

2024-05-03 21:45:58 1370 6

原创 七、Google Protobuf

Protobuf全称Google Protocol Buffers,是一种轻便高效的结构化数据存储格式。可以用于结构化数据串行化(序列化)。它很适合做数据存储或者RPC的数据交换格式。上述代码存在的问题: 服务解码的时候只能对 StudentPOJO.student对象进行解码。通过 proto.exe 编辑器根据 xxx.proto文件自动生成java文件。支持跨平台、跨语言;protobuf 使用示意图。netty提供的编码器。netty提供的解码器。

2024-05-02 17:24:18 292 1

原创 黑马 - websocket搭建在线聊天室

websocket对象创建websocket对象相关事件websocket 对象提供的方法## 2、服务端apiTomcat 的7.0.5版本开始支持 websocket , 并且实现了Java websocket 规范。Java websocket 应用由一系列的 Endpoint组成。Endpoint 是一个java对象,代表websocket连接的一段。对于服务端,我们可以视其为处理具体websocket消息的接口。

2024-05-01 23:03:56 3566 1

原创 Arthas进阶

很多时候我们都知道一个方法被执行,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。观察当前对象中的属性,如果想查看方法运行前后,当前对象中的属性,可以使用target关键字,代表当前对象。这里重点要说明的是观察表达式,观察表达式的构成主要由ognl 表达式组成,所以你可以这样写 "如果方法调用的次数很多,那么可以用-n参数指定捕捉结果的次数。这里输出结果中,第一次输出的是方法调用前的观察表达式的结果,第二次输出的是方法返回后的表达式。

2024-04-30 22:21:41 728

原创 Arthas基础

反编绎时只显示源代码,默认情况下,反编译结果里会带有ClassLoader信息,通过–source-only选项,可以只打印源代码。1、在d:\下创建目录arthas,在windows命令窗口下,使用curl命令下载阿里服务器上的jar包,大小108k。删除arthas安装目录下的 .arthas 和 logs/arthas logs/arthas-cache。2、使用java启动arthas-boot.jar,来安装arthas,大小约10M。“Search-Class” 的简写,这个命令能搜索出。

2024-04-29 21:09:42 2086

原创 二、RocketMQ的安装与启动

Broker节点为了证明自己是活着的,为了维护与NameServer间的长连接,会将最新的信息以心跳包方式上报给NameServer,每30秒发送一次心跳。NameServer中有⼀个定时任务,每隔10秒就会扫描⼀次Broker表,查看每一个Broker的最新心跳时间戳距离当前时间是否超过120秒,如果超过,则会判定Broker失效,然后将其从Broker列表中剔除。集群模式:该模式下创建的Topic在该集群中,所有Broker中的Queue数量是相同的。RocketMQ的路由发现采用的是Pull模型。

2024-04-27 22:17:36 70

原创 十一、集合

集合和数组都是对多个数据进行存储操作的结构,称为Java容器。Set接口是Collection的子接口,set接口没有提供额外的方法Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set 集合中,则添加操作失败Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals() 方法。

2024-04-25 23:12:33 847

原创 【链表】1移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。创建虚拟节点指向头结点,这样就不需要对头结点单独处理了。

2024-04-12 23:45:04 244

原创 【数组】5螺旋矩阵

给定⼀个正整数 n,⽣成⼀个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正⽅形矩阵。在循环遍历每一条边的时候,⽽求解本题依然是要坚持。

2024-04-12 23:01:39 327

原创 4-10 面经

● 阻塞问题:在二阶段提交的第二阶段中,如果协调者(Transaction Coordinator)在等待参与者(Transaction Participants)的提交或者回滚响应时发生故障,会导致参与者长时间阻塞,资源无法释放,可能引发性能问题和系统可用性问题。● 数据不一致:在二阶段提交中,如果在准备阶段某个参与者发生故障,或者提交阶段中协调者发生故障,可能导致部分参与者已经提交事务,而其他参与者尚未提交,从而引发数据不一致性问题。在统计直播间的人员流水信息时,会将观众进入,离开的数据分表入库。

2024-04-11 20:55:27 686

原创 【Java8新特性】四、强大的Stream api

一、了解Stream二、流(stream)到底是什么?三、Stream操作的三个步骤四、创建Stream的四种方式五、Stream 的中间操作1、筛选和切片2、map 映射3、排序六、Stream 的终止操作1、查找和匹配2、归约3、收集。

2024-04-10 23:27:58 831

原创 【Java8新特性】三、方法引用和构造器引用

注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致。方法引用:使用操作符 “::” 将方法名和对象或类的名字分隔开来。格式:className::new。,可以使用方法引用!

2024-04-10 21:00:13 335

原创 【Java8新特性】二、函数式接口

只包含一个抽象方法的接口,称为函数式接口。你可以通过 Lambda 表达式来创建该接口的对象。我们可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口。

2024-04-09 12:20:22 411

原创 【Java8新特性】一、Lambda表达式

Lambda是一个匿名函数,可以理解为一段可以传递的代码,将代码像数据一样进行传递,可以写出更加简介、更加灵活的代码。Lambda表达式的参数列表的的数据类型可以省略不写,因为JVM编译期可以通过上下文推断出数据。java8中引入了一个新的操作符 “->”,该操作符称为箭头操作符或者Lambda操作符。有两个以上的参数,有返回值,并且Lambda 体中有多条语句。System.out.println(“函数式接口”);若左侧只有一个参数,那么左边的 ()可以不写。有一个参数,并且无返回值。

2024-04-09 12:01:32 406

原创 十五、Java反射机制

反射允许程序在执行期间借助于反射api获取任何类的内部信息,并能直接操作任意对象的内部属性及方法当字节码文件加载到jvm中成为一个运行时类,这个运行时类就是 Class的一个实例。

2024-04-08 17:47:50 589

原创 十、注解

加在包,类, 构造器, 方法, 成员变量, 参数, 局部变量声明上面的特殊标记就称为注解未来的开发模式都是基于注解的。框架 = 注解 + 反射 + 设计模式。/*** 自定义注解*/// 声明注解属性自定义注解使用 @interface 定义注解的成员变量后面需要携带 ()注解的成员变量的类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型、以上所有类型的数组。

2024-04-08 16:44:57 904

空空如也

空空如也

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

TA关注的人

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