自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring AI接入本地大模型Ollama

下载一个Ollama的客户端,在官网提供了各种不同版本的Ollama,大家可以根据自己的需要下载https://ollama.com/download/windows,勾选web 和ollama。编写controller。

2025-04-10 14:24:23 160

原创 实体类员工信息导出到excel表

【代码】实体类员工信息导出到excel表。

2025-04-03 15:08:58 124

原创 java 数组去重

TreeSet:有序,按自然顺序或自定义排序,适用于需要排序的场景。如果你希望去重的同时保持原数组中的顺序,可以使用 LinkedHashSet,它既能去重又能保持元素的插入顺序。HashSet 是一个不允许重复元素的集合,因此可以利用它去除数组中的重复元素。LinkedHashSet:有序(按插入顺序),去重,适用于需要保持顺序的场景。如果你使用的是 Java 8 或更高版本,可以使用 Stream 来进行去重。总结: HashSet:无序,去重,适用于不关心顺序的场景。

2025-03-31 19:29:00 424

原创 String,String buffer 和 String builder 区别

以下是一个简单的性能对比示例,展示 String、StringBuffer 和 StringBuilder 在频繁修改字符串时的性能差异:***线程安全性:StringBuffer 是线程安全的,所有方法都使用 synchronized 关键字修饰。线程安全性:StringBuilder 不是线程安全的,没有使用 synchronized 关键字。性能:由于没有线程安全的开销,性能比 StringBuffer 更高。线程安全性:由于不可变性,String 是线程安全的。

2025-03-24 14:30:51 370

原创 centos7连不上接网络

配置:/etc/sysconfig/network-scripts/ifcfg-ens33。右键虚拟机,点击设置,设置网络,选择nat模式,恭喜你,你已成功连接!设置IP地址如图所示。

2025-03-23 10:38:33 250

原创 事务隔离级别是?

它确保一个事务在执行期间对数据的读取是可重复的,即使其他事务修改了数据,当前事务的查询结果也不会变化。事务隔离级别是数据库管理系统用来控制多个事务并发执行时对数据的可见性和一致性的机制。MySQL支持四种标准的事务隔离级别,它们定义了事务如何与其他并发事务交互。事务A和事务B分别对同一数据进行读取和修改,事务A读取的值可能会在事务B提交后发生变化。在此级别下,事务A和事务B必须按顺序执行,事务B在事务A完成之前不能执行。事务A读取某个范围内的数据,事务B在此范围内插入了新数据。

2025-03-20 00:03:50 476

原创 mysql索引失效的场景

当查询的数据量较少时,即使有索引,MySQL 可能决定执行全表扫描来优化查询性能,因为全表扫描可能更快。在 MySQL 中,索引是提高查询性能的关键工具,但在某些情况下,索引可能会失效,导致查询性能下降。例如,如果有一个联合索引 (col1, col2),但查询使用的是 col2 而没有 col1,那么索引会失效。MySQL 的一些配置项,比如 query_cache,可能影响索引的使用,导致查询变慢或索引失效。在某些情况下,如果该列有索引,索引可能无法有效利用,MySQL 可能会执行全表扫描。

2025-03-18 11:23:19 521

原创 redis十大应用数据类型具体使用及其应用

描述:HyperLogLog 是一种概率性的数据结构,用于估算集合中不同元素的基数(即不同元素的个数),但它不能准确统计每个元素,只能提供一个近似值。描述:Redis 中最基本的数据类型,用于存储简单的字符串数据。描述:位图是一种通过二进制位(bit)来表示布尔值(0 或 1)的数据结构,适合做大规模的快速统计。排行榜:根据分数对元素进行排序,如游戏中的积分排行榜、社交平台中的热门帖子排名等。每个哈希有多个字段。描述:列表是一种双向链表,可以存储多个有序的字符串,支持从两端插入和删除元素。

2025-03-17 13:03:37 638

原创 谈谈你对jwt的理解

例如,在我参与的项目中,我们通过JWT实现用户单点登录,结合短有效期和Refresh。头部通常包含令牌的类型和使用的加密算法,载荷包含用户的信息和其他数据,签名用于验证令牌的完整性和来源。此外,需要解释如何在实际项目中使用JWT,比如在用户登录后生成令牌,客户端存储令牌并在后续请求中携带,服务器验证令牌的有效性。用户认证:用户登录后生成JWT,客户端在后续请求中携带(如放在HTTP头的Authorization字段)。Header(头部):声明令牌类型(如JWT)和签名算法(如HMAC SHA256)。

2025-03-14 11:02:30 516

原创 sql语句分页的关键字是?

这里,OFFSET 20 ROWS 表示跳过前 20 条记录,FETCH NEXT 10 ROWS ONLY 表示获取接下来的 10 条记录。总结: MySQL/PostgreSQL/SQLite/MariaDB: 使用 LIMIT 和 OFFSET。在 SQL 中,分页通常是通过限制查询结果的数量并指定从哪一行开始获取数据来实现的。不同的数据库系统使用不同的分页关键字。这里,LIMIT 10 表示返回 10 条记录,OFFSET 20 表示跳过前 20 条记录。LIMIT 限制返回的结果数量。

2025-03-11 22:09:54 325

原创 查看端口被占用命令

要查看端口是否被占用,可以使用以下命令,具体命令取决于你使用的操作系统。如果端口被占用,lsof 会列出占用该端口的进程信息。这个命令会显示占用该端口的 PID(进程 ID)。希望这些命令能帮到你!

2025-03-11 21:43:37 562

原创 SpringMVC工作原理

Spring MVC(Spring Model-View-Controller)是一个基于请求驱动的框架,广泛用于构建 Web 应用程序。它的工作原理是通过 DispatcherServlet 来协调处理用户的请求、调用业务逻辑层并返回响应。在具体的实现中,当前端请求后端接口时,Spring MVC 会根据请求 URL、HTTP 方法等信息来路由请求,找到合适的控制器方法,然后处理请求并返回一个实体类对象。基本的工作流程。

2025-03-11 16:07:37 1265

原创 sql优化一般怎么做

SQL优化通常包括以下几个方面,目的是提高查询效率,减少数据库负载和资源消耗。下面是一些常见的优化方法:***1.创建合适的索引:索引是提高查询性能的最重要手段。可以根据查询条件中的 WHERE、JOIN、ORDER BY 等字段创建索引。避免过多的索引:虽然索引能提高查询速度,但过多的索引会影响 INSERT、UPDATE 和 DELETE 操作的性能。因此,需要根据实际查询情况合理创建索引。使用复合索引:如果查询中经常涉及多个字段,可以考虑创建复合索引。

2025-03-11 14:26:57 935

原创 微服务项目如何部署?

Kubernetes:Kubernetes(K8s)是最常见的容器编排工具,可以用来自动化容器的部署、扩展和管理。根据开发语言(如 Java、Python、Node.js 等),使用合适的构建工具进行构建和打包(如 Maven、Gradle、npm 等)。容器部署:将 Docker 镜像推送到容器注册中心(如 Docker Hub、Harbor、AWS ECR 等),然后从容器注册中心拉取并部署到容器管理平台(如 Kubernetes)。通常的部署流程包括代码构建、容器化、服务发现、API。

2025-03-10 23:44:24 907

原创 Spring Cloud五大组件及其作用?

作用:Spring Cloud Config用于集中管理微服务的配置文件,可以将配置信息从各个微服务中提取出来,集中存储到配置服务器(如Git、SVN等)中。作用:Spring Cloud Eureka是一个服务注册与发现的组件,服务提供者将自己注册到Eureka服务器中,服务消费者可以通过Eureka客户端动态发现并调用服务。特点:当服务调用失败达到一定阈值时,Hystrix会快速返回一个降级的响应,避免请求进一步传递到失败的服务。特点:提供路由转发、请求过滤、负载均衡等功能,还可以用于实现服务聚合等。

2025-03-10 21:07:50 383

原创 spring如何解决循环依赖的 ?

循环依赖(Circular Dependency)是指在 Spring 中,多个 Bean 互相依赖,形成了一个闭环,导致无法正常创建和注入 Bean 的情况。这个缓存中的 Bean 是尚未完全初始化的 Bean,但是可以满足依赖注入。在这种情况下,Spring 会通过 setter 方法来注入依赖,避免了构造器注入时的死循环,最终能够完成 Bean 的初始化。Setter 注入:Spring 会在二级缓存中暂时存放这个 Bean,直到其他依赖被注入完成,后续将继续完成其依赖注入。

2025-03-08 16:43:05 275

原创 TCC、AT、Saga区别

TCC(Try-Confirm-Cancel)、AT(Atomic Transaction)、和 Saga 是三种常见的分布式事务解决方案,它们各自有不同的特点和适用场景。Saga 模式是一种长事务的分布式事务解决方案,将一个大事务拆分为多个小事务,每个小事务都有自己的本地事务,并且每个小事务都有补偿操作。当跨多个数据库时,AT 使用像 2PC(两阶段提交协议)或 XA 协议来确保操作的原子性,要么全成功,要么全失败。每个子事务:Saga 将大事务拆解为多个小事务,每个小事务都在各自的服务中执行。

2025-03-05 08:47:31 898

原创 hashmap具体使用及底层原理

红黑树法:从 Java 8 开始,当某个桶中的元素超过一定数量(默认 8 个),并且桶的大小大于 64 时,链表会转换为红黑树,红黑树的查找和插入效率更高,能在 O(log n) 的时间复杂度内完成。当我们调用 put() 方法插入键值对时,首先会通过哈希函数 hash(key) 计算出键 key 的哈希值,然后对数组大小取模,得到该键值对应该存放的桶的位置。插入、删除和查找操作的平均时间复杂度是 O(1),但在最坏的情况下(大量哈希冲突时),这些操作的时间复杂度会退化为 O(n)。

2025-03-03 20:00:19 804

原创 pringboot自动装配原理是?

Spring Boot 自动装配(Auto-Configuration)是 Spring Boot 的一项核心功能,旨在帮助开发者快速构建应用程序,减少手动配置的工作量。@EnableAutoConfiguration 让 Spring Boot 开启自动装配机制,它会根据项目的类路径、环境变量和配置文件等信息,判断自动装配哪些组件。每个自动配置类都会在该文件中声明,使 Spring Boot 能根据类路径下的依赖动态加载相关的自动配置。文件的配合,Spring Boot 实现了灵活且高效的自动配置功能。

2024-11-23 13:55:02 811

原创 java高频基础选择题20道(一)

答案: A) ==比较对象的引用,equals()比较对象的内容。A) ==比较对象的引用,equals()比较对象的内容。B) ==比较对象的内容,equals()比较对象的引用。D) interface中的所有方法默认是final的。B) 实现Runnable接口并重写run()方法。C) ==不能用于对象类型,equals()可以。C) catch块中的代码必须在try块的前面。D) ==和equals()都比较对象的内容。A) 继承Thread类并重写run()方法。

2024-11-08 00:20:05 691

原创 redis中常见的命令有哪些?

ZREVRANGE key start stop: 获取有序集合中指定范围的元素(按分数从大到小)。HINCRBY key field increment: 将哈希表中指定字段的值增加指定的整数值。ZRANGE key start stop: 获取有序集合中指定范围的元素(按分数从小到大)。BITSET key offset value: 设置位图中的指定偏移量的值。HSET key field value: 设置哈希表中指定字段的值。APPEND key value: 将指定的字符串附加到键的末尾。

2024-11-07 00:08:21 968

原创 关于springboot的选择题100道

解释:通过添加spring-boot-starter-security依赖可以集成Spring Security。解释:添加spring-boot-starter-websocket依赖可以支持WebSocket功能。解释:可以通过添加spring-boot-starter-data-redis依赖来集成Redis。解释:添加spring-boot-starter-data-redis依赖可以集成Redis。解释:添加swagger-spring-boot-starter依赖可以自动生成API文档。

2024-10-30 14:01:18 863

原创 springboot工作原理以及自动装配原理

自动装配过程中,Spring Boot 使用一系列的条件注解(如 @ConditionalOnClass、@ConditionalOnMissingBean 等),根据环境和已有 Bean 的状态来决定是否加载特定的配置。4.优先级与排序:在进行自动装配时,如果有多个相同类型的 Bean,Spring Boot 还会通过一些机制来决定使用哪个 Bean,例如根据 @Primary 注解或者 @Qualifier 注解来指定优先级。例如,只有在类路径中存在某个特定的类时,相关的配置才会生效。

2024-10-30 12:38:04 678

原创 java中常见的遍历方式有哪些?

ListIterator:类似于Iterator,但可以在List中向前或向后遍历。Stream API:使用流操作来遍历和处理学生信息。传统for循环:使用索引访问每个学生。增强for循环:直接遍历集合中的每个学生。迭代器:使用Iterator来逐个访问学生信息。面是一个以遍历学生信息为例的Java代码示例。假设我们有一个 Student 类,以及一个学生列表,我们将展示不同的遍历方式。Lambda表达式:简化代码,使用forEach方法结合Lambda表达式遍历。

2024-10-29 20:27:48 257

原创 mybatis常见的标签有哪些?

动态 SQL 生成 MyBatis 支持动态 SQL 生成,开发者可以根据条件生成不同的 SQL 语句,减少了代码的冗余。灵活的 SQL 控制 与 ORM(对象关系映射)框架相比,MyBatis 允许开发者直接编写 SQL 语句,提供更高的灵活性。简单易用 MyBatis 的学习曲线相对较低,易于上手,尤其适合对 SQL 熟悉的开发者。它通过 XML 配置或注解的方式进行配置,灵活多变。支持复杂映射 MyBatis 支持复杂的结果映射,例如嵌套结果映射和多表查询,适合处理复杂的数据结构。

2024-10-29 20:10:53 373

原创 二叉树类型有哪些以及应用

二叉树是一种基础的数据结构,根据不同的特性和应用场景,可以分为多种类型。以下是一些常见的二叉树类型及其应用:

2024-10-28 14:47:07 426

原创 二叉树前序遍历的 Java 实现,包括递归和非递归两种方式

前序遍历的时间复杂度为 O(n),其中 n 是树中节点的总数,因为每个节点都要被访问一次。适用场景:在某些场景下,例如复制树或者进行某些类型的树形操作,前序遍历是非常有效的。树的结构:前序遍历能够保存树的结构。非递归实现的空间复杂度也是 O(h),因为栈中存储的节点数不超过树的高度。递归实现的空间复杂度为 O(h),h 是树的高度,主要由递归调用栈占用。递归与非递归:前序遍历可以通过递归和非递归(使用栈)两种方式实现。下面是二叉树前序遍历的 Java 实现,包括递归和非递归两种方式。

2024-10-28 14:43:35 481

原创 jvm垃圾回收机制工作原理

虽然在 for 循环中创建了大量对象,垃圾回收机制会有效回收不再使用的对象,保持系统的稳定性和效率。在上面的代码中,new String("Object " + i) 每次循环都会创建一个新的 String 对象,这些对象最初被分配在年轻代(Young Generation)中。它会标记所有仍然可以访问的对象(可达对象),然后清除未标记的对象,释放其占用的内存。Minor GC:当年轻代满时,会触发年轻代的垃圾回收(Minor GC),快速清理不可达对象,存活的对象会被移动到老年代。

2024-10-25 15:39:12 268

原创 java中this的内存原理是?

栈内存:当方法被调用时,方法的局部变量(包括this)会被存储在栈内存中。通过这些例子可以看出,this关键字在类中有多种用途,包括区分变量、调用构造函数、实现方法链以及在内部类中访问外部类的属性。在这个例子中,this.value明确指向对象的属性,而this在方法setValue中返回当前对象,以支持连续调用。构造函数:在构造函数中,可以使用this()调用同一个类的其他构造函数,从而实现构造函数的重载。堆内存:当一个对象被创建时,它会在堆内存中分配空间,this引用指向这个对象的内存地址。

2024-10-25 15:24:08 330

原创 java中变量的命名规范是?

尽量避免使用不常见的缩写,以增加代码的可读性。遵循这些命名规范将有助于创建清晰且易于维护的代码。

2024-10-25 15:02:37 893

原创 Java基础选择题

9.在 Java 中,接口的实现类必须实现接口中的哪些方法?4.在 Java 中,哪个访问修饰符具有最严格的访问控制?5.以下哪一项不是 Java 的面向对象特性?6.在 Java 中,异常处理使用哪个关键字?1.Java 中的基本数据类型不包括哪一个?3.在 Java 中,哪个符号用于表示注释?7.Java 中的数组是可变的还是不可变的?8.在 Java 中,字符串是如何声明的?10.以下哪个不是 Java 的循环结构?2.以下哪个关键字用于创建一个类的对象?

2024-10-25 14:49:21 243

原创 must be ‘pom‘ but is ‘jar‘解决思路

这个错误信息表明在 Maven 的 pom.xml 文件中,定义的父 POM 的 packaging 类型设置不正确。以下是解决这个问题的步骤。找到你的父项目的 pom.xml 文件(在错误中提到的 org.example:demo7:0.0.1-SNAPSHOT),确保它的 packaging 标签设置为 pom。多模块项目:如果这是一个多模块项目,请确保所有模块的 pom.xml 文件都正确指向父 POM。确保每个子项目的 pom.xml 文件中都有正确的 标签,指向这个父项目。

2024-10-24 23:53:44 801

原创 java中常见集合,非常重要!!!

Java 集合框架提供了一组用于存储和操作对象的类和接口,主要包括 List、Set 和 Map。HashMap:基于哈希表实现,提供常数时间复杂度的基本操作,允许 null 值。HashSet:基于哈希表实现,提供常数时间复杂度的基本操作(如添加、删除和包含)。TreeSet:基于红黑树,提供排序功能,元素按自然顺序或指定比较器排序。TreeMap:基于红黑树,提供排序功能,键按自然顺序或指定比较器排序。ArrayList:基于动态数组,支持快速随机访问,但在插入和删除元素时性能较低。

2024-10-23 22:36:18 364

原创 关于微服务你能想到哪些问题?

微服务的 API 设计最佳实践是什么?你还能想到那些,欢迎评论区一起讨论。我想到的是:什么是微服务架构?微服务与单体架构的区别是什么?微服务的主要优点是什么?如何设计一个微服务?

2024-10-23 01:06:28 391

原创 常用 SQL 语句的大全

以上是 SQL 语句的基本大全,具体使用时要根据你的数据库系统及具体需求来调整语法和功能。希望这能帮助你更好地理解和使用 SQL!使用 WHERE 子句。

2024-10-22 22:32:13 504

原创 HashMap底层原理

HashMap是一种高效的键值存储结构,通过哈希函数和数组实现快速的数据访问。扩容:当HashMap的装载因子(load factor)达到阈值(默认0.75)时,会触发扩容,通常扩容为原来的2倍。插入:将键值对插入HashMap时,首先通过哈希函数计算出哈希值,然后通过取模运算找到对应的数组索引。链表/红黑树:每个桶可以存储一个链表(用于处理哈希冲突),在高冲突情况下,链表会转换为红黑树以提高查询效率。查找:查找过程同样通过哈希函数找到对应的桶,然后在链表或红黑树中查找具体的键值对。

2024-10-21 22:30:47 425

原创 线程创建的几种方式,你都知道吗?

2.实现 Runnable 接口: 可以实现更灵活的线程管理,可以共享同一个任务实例。适合需要多个线程共享资源的情况。3.使用 Callable 和 Future: 允许线程返回结果和处理异常,适合需要获取计算结果的场景。1.继承 Thread 类: 简单易用,适合不需要共享状态的简单任务。使用继承 Thread 类的方法来创建线程,分别表示兔子和乌龟的比赛。4.使用线程池: 适合需要管理大量线程的场景,通过复用线程降低开销。实现 Runnable 接口的方式,分别表示兔子和乌龟的比赛。

2024-10-20 17:56:53 282

原创 进程与线程的区别?

线程进程有哪些特点?

2024-10-20 17:26:50 235

原创 display: inline-block 和 display: inline区别是?

inline-block: 结合了 block 和 inline 的特性,元素在一行内显示,同时可以设置宽高。block: 元素以块级元素的形式显示,通常会在新的一行开始,宽度默认为其父元素的100%。inline: 元素以行内元素的形式显示,元素不会在新的一行开始,其宽度仅为其内容的宽度。flex: 将元素定义为一个弹性容器(flex container),用于创建灵活的布局。none: 元素不会被显示,并且在页面的布局中占据的位置也会被移除。table-cell: 元素表现为表格单元格。

2024-10-20 15:41:06 288

原创 反射机制及应用

反射你都弄懂了吗?

2024-10-19 17:57:19 773

空空如也

空空如也

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

TA关注的人

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