- 博客(33)
- 收藏
- 关注
原创 Java StringBuffer 和 StringBuilder
场景选择理由局部变量、方法内部字符串操作无线程竞争,性能优先单例对象、多线程共享的字符串缓冲区必须保证线程安全高并发场景下的复杂同步需求自定义锁 +更灵活、可控的同步机制。
2025-07-30 15:05:47
344
原创 力扣刷题第四天
本文摘要: 翻转字符串单词顺序:通过trim()去除首尾空格,split("\s+")分割单词,使用StringBuilder从后往前拼接单词,保证单词间单空格分隔。时间复杂度O(n),空间复杂度O(n)。 最长公共前缀:以第一个字符串为基准,逐个字符与其他字符串对比,遇到不匹配或长度不足时返回当前前缀。若全部匹配则返回第一个字符串。 最后一个单词长度:从字符串末尾反向遍历,跳过尾随空格,计数字母直至遇到空格或到达开头。返回计数结果。 三个算法均处理字符串操作,重点考察边界条件处理(如空
2025-07-01 10:44:55
749
原创 cookie、Session和Token会话跟踪技术
Cookie、Session和Token是三种常见的身份验证机制。Cookie通过客户端存储键值对实现,简单但安全性较低;Session借助服务器存储会话数据,安全性较高但会增加服务器负担;Token采用无状态验证机制(如JWT),适合分布式系统但可能增加网络开销。三者区别在于存储位置(客户端/服务器)和安全性,Token能解决跨域问题,Session需考虑共享问题。实际应用中可根据安全性、性能需求选择合适方案。
2025-06-30 16:28:05
577
原创 力扣第三天
如果 height[left]≥height[right],则必有 leftMax≥rightMax,下标 right 处能接的雨水量等于 rightMax−height[right],将下标 right 处能接的雨水量加到能接的雨水总量,然后将 right 减 1(即向左移动一位)。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。同样地,数字 9 表示为。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2025-06-30 15:18:49
824
原创 力抠刷题第二天
摘要:本文解决两个算法问题:1) 环形加油站问题,通过计算剩余油量寻找唯一可行起点,当总油量足够时返回最低点后一站;2) 糖果分发问题,采用双向遍历法,先满足左规则再满足右规则,取最大值保证相邻高分孩子获得更多糖果。两个方案均实现O(N)时间复杂度,加油站问题空间复杂度O(1),糖果问题O(N)。示例验证了算法的正确性,如加油站输入[1,2,3,4,5]和[3,4,5,1,2]时输出起点3,糖果输入[1,0,2]时最少需5颗糖。(150字)
2025-06-28 15:52:32
548
原创 力扣刷题第一天
本文总结了三个常见的数组操作算法题解:1. 合并有序数组:采用逆向双指针法,从后往前比较并填充较大元素到nums1尾部,时间复杂度O(m+n),空间复杂度O(1)。2. 移除元素:使用快慢双指针,将非目标值元素前移,保持原顺序,时间复杂度O(n),空间复杂度O(1)。3. 删除有序数组重复项:通过双指针记录非重复位置,保留首个出现元素,时间复杂度O(n),空间复杂度O(1)。三题均采用双指针技术实现高效的原位数组操作,具有最优时间/空间复杂度,适用于处理排序数组的合并、过滤需求。
2025-06-27 10:49:32
802
原创 SpringBoot 的 jar 包为什么可以直接运行?
JAR包是Java的标准归档文件,用于打包类文件、资源文件和元数据。普通JAR包主要用于代码分发,依赖需外部配置;而Spring Boot JAR包是可执行文件,包含内嵌依赖、自定义类加载器和主类入口,直接通过java -jar运行。使用Maven或Gradle的Spring Boot插件可实现自动打包,将依赖整合到BOOT-INF/lib,并生成分层结构优化部署。这种设计使得Spring Boot应用无需外部服务器即可独立运行,简化了部署流程。
2025-06-25 10:21:39
633
原创 添加短信服务(前端->后端->短息服务商)
fill:#333;输入手机号,点击获取验证码格式校验(正则验证)二次校验手机号格式检查发送频率(是否60秒内重复发送)生成6位随机验证码调用SendSms API(携带手机号、验证码)返回发送结果存储验证码(phone:code,5分钟过期)返回操作结果启动60秒倒计时(防止重复点击)短信下发到手机EXPIREINCREXPIRE。
2025-04-11 14:29:55
715
原创 采用Java实现下载图片、pdf加水印
从网站下载对应字体的ttf,我是从c:/windows/fonts/ 下找到对应的 “simhei.ttf”文件复制在“s。接收请求 → 验证权限 → 从Minio获取文件 → 判断文件类型 → 添加水印 → 返回处理后的文件流。需求:点击下载---》弹窗加入水印(可加可不加,加上就有水印,没有不加水印),点击之后下载文件。用户点击下载 → 收集水印参数 → 调用后端API → 处理响应为Blob → 触发文件下载。修改pdf加水印,因为没有对应的字体没输入文字水印之后pdf文件会打不开。
2025-03-28 09:18:27
520
原创 JPA、Hibernate、 Spring Data JPA 以及Mybatis的关系(Java)
ORM(Object-Relational Mapping)框架的核心目标是通过对象操作数据库对象与表的映射:自动将对象属性与数据库表的字段关联。SQL 生成:根据对象操作(如保存、查询)自动生成对应的 SQL。关系管理:自动处理对象之间的关联(如一对一、一对多)。典型 ORM 框架:Hibernate、EclipseLink、JPA 实现等。
2025-03-24 15:04:45
793
原创 Java中循环引用“a circular reference“的问题
循环引用指的是两个或多个对象相互依赖,导致依赖关系形成一个闭环。在依赖注入框架中,如果A对象依赖于B对象,而B对象又依赖于A对象,就形成了循环引用。(形成一个环)@Autowiredthis.b = b;类A依赖于B,而类B依赖于A。这种情况会导致循环引用问题。
2024-12-25 21:30:00
326
原创 VUE前端实现防抖节流 Lodash
/ 防抖函数// 清除上一个定时器// 设置新的定时器// 使用apply确保this和参数正确传递}, delay);// 节流函数// 如果距离上次执行时间已超过指定时间间隔,则执行函数// 更新上次执行时间。
2024-12-25 16:59:03
5779
原创 小程序入门到实战(二)-----基础知识部分1.0
要了解如何开发一个小程序,首先需要了解小程序的生命周期,因为生命周期的概念将贯穿小程序开发的始终。生命周期:是指一个程序从启动到关闭这一过程中产生的一系列事件的总和。实际上包括组件生命周期和页面生命周期两个部分。一个微信小程序启动后首次加载页面,会触发页面的 onLoad 事件(这个事件只有在页面首次加载时才会触发);当这个页面显示的时候会触发 onShow 事件,如果这个页面是首次渲染完成,则会接着触发 onReady 事件。如果我们将小程序切换到后台,页面就会被隐藏同时触发onHide 事件;
2024-11-13 10:23:30
889
原创 SpringBoot(二)
书写一个配置类,实现WebMvcConfigurer的/*** 定制静态资源访问地址和存储位置*/@Override。
2024-11-08 14:30:00
204
原创 Java[面试题]-真实面试2.0
想想面试官问这个问题的目的是什么?是让sql执行的更加快,提高效率对吧加索引能大幅度提高查询的性能,但是也不能随便加索引加过多,你想类似于这种性别,0,1加了就没什么意义,一般常用的我们加的每个表的主键就是一个索引对表进行JOIN操作、大量WHERE条件筛选、排序(ORDER BY)、分组(GROUP BY)时,加索引能提高效率。:过多的索引会增加INSERTUPDATE和DELETE操作的成本,导致数据库性能下降。
2024-11-08 10:07:14
764
原创 Java[面试题]-真实面试
IOC(控制反转)和AOP(面向切面编程)IOC(Inversion of Control)是面向对象编程中的一个设计原则,意味着控制的反转或转移。简单来说,,而不是由程序员手动管理。通过IOC,程序中的组件之间变得松耦合,组件可以独立测试和维护。传统的创建对象,是我们自己手动来创建的,这样来说就是高耦合(每次都创建对象,麻烦)通过,我们将依赖的对象(如Database)从Service类中分离出来,由外部容器(比如 Spring 容器)来管理。这样,Service。
2024-11-07 17:35:24
1238
原创 小程序入门到实战(-)-----(注册账号,新建项目)
我们可以在这里添加新的项目,并填写目录、AppID 等内容。开发小程序时,小程序 ID 并不是必需的,但如果你要在真机上调试小程序、发布小程。(3) 开发版,即日常构建版本,用于尽快修复缺陷和敏捷发布小的特性,开发者自测验证,第一次打开的小程序需要补全信息,例如名称、图标、描述、服务范围,等等。单击“设置”链接,在右侧单击“基本设置”,会出现一些设置项。小程序 ID 是你的小程序在整个微信账号体系内的。(2) 预发布版,一般包含大的特性,通过了内部测试,稳定性尚可;一般推荐的是稳定版,平时的开发够用的了。
2024-11-06 15:56:35
230
原创 结合Vue3+echarts实现部分地区地图下沉功能
项目需求:实现下沉七大洲->国家(中国)->省->市->区实现思路:首先需要下载对应地图的json文件放在项目中进行引用,并且修改对应的配置。========================V1-第一步简单实现地图==========================
2024-11-05 17:00:48
820
原创 SpringBoot(一)
他是一个Spring团队开发的,简化Spring项目开发的框架,能够让开发人员快速上手,使用少量的代码进行开发程序。
2024-03-20 09:39:33
677
1
原创 【Linux】Linux目录_相关指令_java项目基本部署
我们想要在WIndows上运行Linux系统的话,需要安装Linux虚拟机才可以,并且安装一个XShell之类的控制面板去进行一个对Linux的系统的一个操作。
2024-03-13 22:06:50
2068
原创 【Mybatis】执行过程及原理!!
MyBatis中文网MyBatis 是持久层框架,它支持自定义 SQL、存储过程以及高级映射。说白了就是一个简化SQL的工具(我认为。。)它是对JDBC的操作数据库的过程进行封装。
2024-03-11 21:15:00
543
原创 【Java面试题】-基础部分(4)
不能final修饰的方法叫做最终方法 不能被覆盖abstract修饰的方法叫抽象方法 需要子类去覆盖矛盾。
2024-03-10 18:07:02
701
1
原创 【Docker】 Docker(企业开发)-项目部署
部署项目的时候要确保前端项目,后端项目同处在同一网络下,并且将nginx和mysql也部署在同一网络下。需求:创建一个新的nginx容器,将课前资料提供的nginx.conf、html目录与容器挂载。(3)将Dockerfile以及jar包拷贝到linux系统的/root目录下,(1)将nginx文件(包含前端页面以及配置)拖拉到linux的\root目录下。怎么利用Docker进行项目部署的?(2)找到target目录下打包好的jar包。(2)运行nginx 容器,并且连接网络。1.什么是Docker?
2024-03-09 20:00:00
385
原创 Java【面试题】-基础部分(3)
3、初始值不同:int的初始值位0,boolean的初始值为false;包装类型的对象存储在堆中,通过对象的引用来调用。引用类型:默认情况下,对比它们的地址是否相等;4、声明的方式不同:基本类型不需要new关键字;1、包装类是对象,有方法和字段,对象的调用是通过引用对象的地址,而基本类型不是。6、使用的方式不同:基本数据类型直接赋值就可以;对于引用类型来说,== 比较的是两者在内存中存放的地址(堆内存地址)对于基本类型来说,== 比较的是值是否相等。2、包装类型是引用的传递,基本类型是值的传递。
2024-03-09 13:45:00
1818
1
原创 Docker (企业开发)(一)基础学习篇
镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。
2024-03-08 22:29:45
767
1
原创 Java面试题-基础部分(2)
当我们得到迭代器的时候,迭代器会同步的记录一下这个操作次数,然而当我们直接操作集合进行添加或者删除后,迭代器并没有更新这个操作次数,从而在下次调用next ()方法的时候导致校验不成功。3.使用or关键字查询时,查询条件中只有or关键字,并且or前后的两个条件中的列都是索引时,索引才会生效。(2)使用迭代器(小推车),迭代器在被删除后,会自动更新迭代器,并更新集合。(1)创建一个新的集合,将所有的值复制过来,遍历新的集合,删除原集合的。使用场景:有一个集合需要对它的元素进行筛选,将不符合条件的元素剔除。
2024-03-08 21:49:11
1858
1
关于#java#的问题:想知道从Java转到ai开发现实么
2024-11-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人