自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前后端远程协作

(打电话问运营商),可以直接用路由器端口映射。但配置麻烦、网络不稳定,的方式,把你本地电脑的服务,暴露到公网,前端直接访问公网地址即可。这样局域网内其他设备才能访问。,直接用局域网 IP 访问。

2026-05-14 10:35:26 208

原创 Swagger测试下载文件接口报Failed to execute ‘createObjectURL‘ on ‘URL‘: Overload resolution failed.解决方法

加入produces = "application/octet-stream"即可。

2026-05-13 17:23:27 119

原创 Maven Helper

Maven Helper 是 Java 开发必备插件,用图形化界面搞定依赖分析、冲突解决、命令执行,大幅提升多模块 / 复杂项目的构建效率。

2026-05-13 17:06:57 235

原创 实习Git提交之后发现用的是自己的用户邮箱

让已提交的最后一条记录也改成新用户(可选)仅当前项目(进入项目根目录执行)

2026-05-12 11:11:25 19

原创 嵌入模型Embedding Model

嵌入模型是 AI 理解非结构化数据的底层基石,核心是语义向量化。BGE-M3 凭借多语言、三合一检索、超长文本三大能力,成为当前最通用、最强悍的嵌入模型,全面覆盖检索、RAG、跨语言等工业场景。

2026-04-23 16:07:57 359

原创 node.js升级和降低版本

开门见山地说,我们在开发的过程中,随着时间的推移和新框架的层出不穷,我们使用的node.js会因为一直没有更新,导致无法使用最新的一些框架等问题,这个时候我们就需要升级我们的node版本,下文讲详细介绍升级node.js的方法以及降低node.js的方法。

2026-04-23 14:16:50 359

原创 EasyExcel

EasyExcel = 低内存 + 简洁 API + 高性能读:自定义监听器 + 分批处理写:注解映射 + 样式 / 合并 / 分批场景:报表导出、批量导入、大数据量 Excel。

2026-04-23 09:41:50 462

原创 mysql与pgsql

MySQL轻量、简单、稳定、高性能,Web 开发首选,生态最成熟。PostgreSQL功能强大、严谨、支持复杂查询,更像 “企业级商业数据库”,开源免费。MySQL = 简单、快、通用PostgreSQL = 强大、严谨、高级没有绝对好坏,看业务场景选择。

2026-04-22 19:29:50 462

原创 虚拟机使用Dcoker部署PotgreSQL+pgvector

随着大模型(LLM)和 RAG(检索增强生成)应用的兴起,向量数据库成为了基础设施中的标配。PostgreSQL 凭借强大的 pgvector 插件 ,成为了目前最流行的向量数据库解决方案之一。本文将详细介绍如何在 CentOS 7 环境下,使用 Docker 和 Docker Compose 快速部署带有 pgvector 的 PostgreSQL。

2026-04-22 19:05:48 297

原创 Serializable 接口

/ 先执行默认序列化// 自定义:额外写入 transient 字段、加密等// 先执行默认反序列化// 自定义:恢复 transient 字段、解密等。

2026-04-16 08:39:05 225

原创 JVM 的类加载机制

自定义类加载器需继承,重写// 自定义类加载路径// 重写findClass,加载指定路径的.class文件@Overridetry {// 将全限定名转换为文件路径(如 com.example.User → com/example/User.class)// 读取.class文件字节流int b;// 定义类(将字节流转换为Class对象)// 自定义类加载路径(如本地磁盘路径)// 加载类(触发类加载)

2026-03-09 20:37:29 425

原创 JVM 垃圾回收(GC)详解

GC 核心是通过可达性分析判定死亡对象,堆采用分代回收(新生代用复制算法,老年代用标记 - 整理);GC 分为 Minor GC(新生代,频繁快)、Major GC(老年代,低频慢)、Full GC(全局,需避免);回收器选择需匹配场景:Parallel 追求吞吐量,G1/CMS 追求低延迟,ZGC 适配超大内存;调优优先保证堆内存足够,再优化回收器参数,最后排查内存泄漏。

2026-03-09 15:58:10 799

原创 JVM 内存模型详解

JVM 运行时数据区分为线程私有(程序计数器、虚拟机栈、本地方法栈)和线程共享(堆、方法区),其中堆是 GC 核心区域;虚拟机栈易出(栈深度超限),堆易出(堆内存不足),元空间(JDK8+)也可能因类元数据过多溢出;理解内存模型的核心价值:能定位内存溢出 / 泄漏问题,优化 JVM 参数,提升程序稳定性。

2026-03-06 12:07:00 670

原创 重生——第三次面试找不到空教室(都有人在上晚自习嘤嘤嘤嘤嘤《已OC》)

基本数据类型分 8 种,转换遵循 “小转大自动,大转小强制”;boolean 不可转换。== 比较基本类型值 / 引用类型地址,equals 默认比较地址,重写后可比较内容;基本类型无地址,故 == 只能比值。重载是同类同名不同参数,重写是父子类同名同参数,体现多态。循环新增优化核心是批量操作,减少 IO 和 SQL 编译次数;批量新增降低网络 / 数据库开销。多线程需注意线程安全、死锁、资源耗尽,优先用线程池和同步工具。

2026-03-04 20:27:51 526

原创 第三次面试题

7、数组链表说一下?说一下hashmap吧?为什么链表长度超过8切数组长度大于64之后要转红黑树?为什么链表查询慢,他是怎样的查询机制?事务是为了解决什么问题?那Tranctional注解在什么情况下会失效?4、for循环中写一个新增语句,怎样优化?2、==与equals?为什么基本数据类型是比较值的?5、多线程有了解吗?在使用多线程的时候要注意什么问题?1、八种基本数据类型?9、redis为啥查询比mysql快的多?10、mysql增删改查的几个语句说一下?8、简要说一下你了解的mysql?

2026-03-04 20:23:27 44

原创 Java后端面试题

【代码】Java后端面试题。

2026-03-04 15:31:14 202

原创 JVM垃圾回收

垃圾回收器的组合关系虽然很多,但是针对几个特定的版本,比较好的组合选择如下:JDK8及之前:ParNew + CMS(关注暂停时间)、Parallel Scavenge + Parallel Old (关注吞吐量)、 G1(JDK8之前不建议,较大堆并且关注暂停时间)JDK9之后:G1(默认)从JDK9之后,由于G1日趋成熟,JDK默认的垃圾回收器已经修改为G1,所以强烈建议在生产环境上使用G1。

2026-02-25 12:46:26 591

原创 JVM运行时数据区

Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。

2026-02-25 11:52:52 634

原创 微服务面试题汇总

这个题目主要考察对SpringCloud的组件基本了解:简单SpringCloud包含的组件很多,有很多功能是重复的。其中最常用组件包括:•注册中心组件:Eureka、Nacos等•负载均衡组件:Ribbon•远程调用组件:OpenFeign•网关组件:Zuul、Gateway•服务保护组件:Hystrix、Sentinel•服务配置管理组件:SpringCloudConfig、Nacos。

2026-02-06 16:18:08 740

原创 ElasticSearch文档2

match和multi_match的区别是什么?match:根据一个字段查询multi_match:根据多个字段查询,参与查询字段越多,查询性能越差精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围查询的DSL是一个大的JSON对象,包含下列属性:query:查询条件from和size:分页条件sort:排序条件highlight:高亮条件。

2026-02-05 11:40:28 696

原创 ElasticSearch文档1

什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API分词器的作用是什么?创建倒排索引时对文档分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度。

2026-02-03 14:53:10 667

原创 Ollama与DeepSeek大模型下载

例如:我直接在Ollama安装路径下创建了一个Models文件夹作为存储路径:D:\cloudsoft\ollama\models。变量值为:D:\cloudsoft\ollama\Models。在OllamaSetup.exe所在目录打开cmd命令行。变量名为:OLLAMA_MODELS。这里我选择7b的模型。

2026-01-26 20:24:56 723

原创 Java常用注解及其所属框架

Java 原生注解是基础,仅提供语法校验、标记等核心功能,无业务逻辑关联;Spring 生态注解(Core/MVC/Boot)是开发核心,覆盖依赖注入、请求映射、自动配置等绝大部分业务场景;持久层注解分两大方向:MyBatis 侧重 “注解式 SQL”,JPA/Hibernate 侧重 “ORM 映射”;Lombok 注解仅用于简化代码编写,不影响业务逻辑。

2026-01-26 15:34:43 1651

原创 多表查询关联关系

多个主实体关联一个关联实体(比如「多篇文章」属于「同一个作者」),本质和「一对一」的 MyBatis 处理逻辑完全一致,仅业务语义不同,依然用标签(因为最终映射到单个对象属性一个主实体关联多个关联实体(比如「一个作者」有多篇「文章」),核心标签是(因为映射到集合属性,如多个 A 实体关联多个 B 实体(比如「文章」和「标签」:一篇文章有多个标签,一个标签对应多篇文章),必须通过中间表(如,包含article_id和tag_id)拆成「两个一对多」处理,核心标签依然是。多对一:用。

2026-01-25 15:14:00 617

原创 Redisson分布式锁的初步试用

集成 Redisson 的核心是引入依赖并配置Bean,适配已有的 Redis 连接信息。使用分布式锁时,通过获取RLock对象,推荐使用方式加锁,避免死锁。解锁操作必须放在finally块中,并通过判断是否为当前线程持有锁,防止误解锁。

2026-01-24 18:34:01 497

原创 重生——第二次面试之正在打游戏突然电话面试信誉分大残。。。

封装是指将对象的属性(成员变量)和行为(方法)捆绑在一起,对外部隐藏对象的内部实现细节,只通过预先定义的公共接口(public 方法)供外部访问,限制对属性的直接修改。连接类型核心逻辑内连接(INNER JOIN)只返回两张表中匹配连接条件的记录(即两表的 “交集”)左连接(LEFT JOIN)返回左表的所有记录+ 右表中匹配连接条件的记录;右表无匹配则显示 NULLLinux 进程查看ps aux静态查所有进程,ps aux | grep 进程名查指定进程,top动态监控,快速查 PID;

2026-01-23 15:51:13 887

原创 正在打游戏突然电话面试信誉分大残。。。

4、你做的这个项目用Redis是如何解决缓存穿透、缓存雪崩、缓存击穿?3、Java8的核心特性?Lambda简化匿名内部类写法?5、平时sql写的多吗?mysql内连接左连接区别?1、Linux系统查看进程的命令?2、Java面相对象的三大特性?学校课程和实习冲突吗?刚开始主运维部分开发。根据后期需要可能调组。

2026-01-22 16:47:30 105

原创 Stream流

/ 自定义用户类// 必须提供getter才能在Stream中访问属性@Overridenew User("张三", 20, "男"),new User("李四", 25, "男"),new User("王五", 18, "女"),new User("赵六", 30, "男"),new User("钱七", 22, "女")// 需求1:筛选20岁以上的女性用户。

2026-01-22 12:04:09 908

原创 File流

File 类是 Java 操作文件 / 目录路径的基础类,核心是抽象路径表示,不处理文件内容;核心方法分 4 类:判断(exists/isFile)、创建(createNewFile/mkdirs)、删除(delete)、获取信息(getName/length);关键技巧:用保证跨平台,创建多层目录用mkdirs(),遍历目录优先用。

2026-01-22 11:53:11 409

原创 Stream流与IO流。。。

IO 流:处理的是“数据的传输”(程序 ↔ 外部设备:文件、网络、控制台等),核心是 “读写数据”;Stream 流:处理的是“内存中数据的计算”(集合 / 数组等),核心是 “过滤、映射、聚合等数据处理”。IO 流 = 水管:负责把 “水(数据)” 从水池(文件 / 网络)运到家里(程序),或从家里运到水池;Stream 流 = 厨房的料理机:把家里的 “食材(内存数据)” 加工成菜品(过滤、排序、统计)。IO 流是 Javajava.io包下的一套 API,将程序与外部设备之间的数据传输过程。

2026-01-21 17:49:18 704

原创 IO面试题详解

节点流:直接与数据源(文件、网络、内存)交互的流,是 IO 的 “基础流”,无法被其他流包装。举例:FileInputStream(读文件)、SocketInputStream(读网络数据)、ByteArrayInputStream(读内存字节数组)。处理流:也叫 “包装流”,通过包装节点流 / 其他处理流增强功能(缓冲、转换、序列化等),不直接接触数据源。

2026-01-21 17:02:45 694

原创 ReentrantLock和synchronized 实现可重入锁的原理

同一个线程在已经持有锁的情况下,再次请求获取同一把锁时不会被阻塞,而是允许成功获取。识别持有者:能判断当前请求锁的线程是否是已经持有锁的线程;记录重入次数:对同一个线程的多次加锁行为进行计数,解锁时按次数递减,只有计数归 0 时才真正释放锁。可重入的核心逻辑:识别 “当前请求锁的线程是否是锁持有者” + “记录重入次数”,同一线程重复加锁时仅递增计数,不阻塞。synchronized 实现:依赖 JVM 的 Monitor 结构,_Owner记录持有者,记录次数,全程自动完成,代码简洁但无观测性。

2026-01-21 13:09:28 718

原创 synchronized和reentrantlock及其应用场景

/ 自定义锁对象(推荐使用private final的对象作为锁)// 代码块同步,锁是lock对象count++;i < 3;i++) {使用优先级:简单同步场景优先用(代码简洁、JVM 优化好、无手动释放风险);需要复杂锁控制(公平、中断、超时、多条件)时用。核心特性:两者都是可重入锁,是 JVM 内置自动释放,是 API 级手动释放(必须在finally中解锁)。性能:JDK1.6 + 后两者性能接近,无需为性能优先选择,除非有明确的功能需求。

2026-01-21 12:33:30 982

原创 Java并发工具

一种「一次性」的同步工具:一个或多个线程等待多个其他线程完成指定操作,直到计数器减到 0,等待的线程才会被唤醒。一种「可循环复用」的同步工具:让多个线程互相等待,直到所有线程都到达「栅栏点」,所有线程才会一起继续执行;计数器归零后可重置,支持「屏障动作」(所有线程到达后执行的任务)。控制同时访问某个资源的线程数(限流),通过「许可(Permit)」机制实现:线程获取许可才能访问资源,用完后释放许可。专门用于两个线程之间交换数据的工具:两个线程各自生产数据,到达交换点后互相交换数据。

2026-01-18 13:13:31 696

原创 Java中有哪些锁?在什么场景下使用?

Java 关键字,JVM 层面实现的隐式锁(无需手动释放),是最基础、使用最广泛的锁。JDK1.6 后引入「锁升级」机制,性能大幅提升。JUC 包下接口的实现类,手动加锁 / 释放锁(需在finally中释放,避免死锁),是 synchronized 的补充和增强。读 - 读共享:多个线程可同时获取读锁;读 - 写互斥:读锁和写锁不能同时持有;写 - 写互斥:多个线程不能同时获取写锁。将数据拆分为多个「段(Segment)」,每个段独立加锁,不同段的操作互不阻塞,并发度 = 段数(默认 16)。

2026-01-18 12:25:06 1086

原创 JUC(java.util.concurrent)包下常用的类

核心分类:JUC 包常用类主要分为 5 类 —— 线程池、锁、并发集合、同步工具类、原子类,覆盖了并发编程的核心场景;核心优势:相比传统并发方式(synchronized、Thread),JUC 提供了更高的并发效率(如 CAS、读写锁)、更灵活的控制(如可中断锁、超时锁)、更安全的工具(如有界阻塞队列);使用原则线程池优先用自定义参数,避免Executors的无界风险;读多写少用,普通互斥用;简单变量并发更新用原子类,复杂同步用锁或同步工具类;生产消费模型优先用。

2026-01-18 11:15:27 1067

原创 线程间的通信方式

基础通信:共享内存(synchronized/Lock)保证数据安全,但需配合 wait/notify 实现协作;经典协作:wait/notify(Object 监视器)是基础,Condition(Lock 配套)更灵活,支持精准唤醒;高并发首选:BlockingQueue 无需手动处理锁和唤醒,是生产者 - 消费者模型的最优解;高级协作:CountDownLatch/CyclicBarrier/Semaphore 用于协调线程执行时机,实现间接通信。

2026-01-17 18:22:45 946

原创 notify 和 notifyAll

notify()会随机唤醒一个等待在当前对象 “等待池(wait set)” 中的线程,其他等待线程依然留在等待池中,直到被再次唤醒(notify/notifyAll)或中断。会唤醒所有等待在当前对象 “等待池(wait set)” 中的线程,所有等待线程都会从WAITING转为BLOCKED状态,参与锁的竞争。notify()随机唤醒一个等待线程,性能略优但易导致 “丢失唤醒”,仅适用于单线程等待场景;唤醒所有等待线程,无丢失唤醒风险,是多线程等待场景的首选;无论用哪种方法,都必须用while。

2026-01-17 13:05:09 715

原创 blocked和waiting区别

线程被动进入的状态:当线程尝试获取synchronized 同步锁(对象监视器锁)失败(锁已被其他线程持有),就会进入 BLOCKED 状态,直到锁被释放后参与竞争。线程主动进入的状态:线程通过调用特定方法主动放弃执行权,进入 “无时限等待”,必须通过显式唤醒才能回到 RUNNABLE 状态,否则会永久等待。BLOCKED 是 “被动等锁”:抢 synchronized 锁失败后的状态,等锁释放就自动竞争,无需显式唤醒;WAITING 是 “主动等事件”

2026-01-17 12:28:24 933

原创 volatile 与synchronized

volatile是轻量级同步,仅保证可见性和有序性,不保证原子性,适合简单的状态标记场景;是全能型同步锁,保证原子性、可见性、有序性,适合需要原子操作的临界区代码;实际开发中,优先用volatile优化性能(能不用锁就不用),需要原子操作时再用(或更高效的Atomic原子类)。

2026-01-17 11:09:29 460

hotel-demo 代码

hotel-demo 代码

2026-02-03

快速入门mq的demo工程

快速入门mq的demo工程

2025-09-12

需要导入的demo工程(新)

需要导入的demo工程(新)

2025-09-11

需要导入的demo工程

需要导入的demo工程

2025-09-10

部署前端的nginx服务器

部署前端的nginx服务器

2025-08-17

空空如也

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

TA关注的人

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