- 博客(62)
- 收藏
- 关注
原创 Java基础——字节流和字符流
字节流一般用来处理图像、视频、音频、PPT、Word等类型的文件。字符流一般用于处理纯文本类型的文件,如TXT文件等,但不能处理图像视频等非文本文件。用一句话说就是:字节流可以处理一切文件,而字符流只能处理纯文本文件。字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。而字符流本身就带有缓冲区,缓冲字符流相对于字符流效率提升就不是那么大了。
2024-09-24 23:58:56 339
原创 算法练习题26——等差素数数列 (2017年蓝桥杯试题B)
编写一个程序,找出长度为10的等差素数数列,并且这个数列的公差最小。你需要输出该等差数列的公差值。
2024-09-24 23:03:45 389
原创 Java基础面试题——异常
Throwable 是所有异常和错误的基类,它有两个直接子类:Exception 和 Error。Exception 表示程序运行时可以捕获和处理的异常,而 Error 则表示更严重的系统错误,通常无法恢复。Exception 下的子类进一步分为已检查异常和未检查异常。已检查异常必须在编译时进行处理,而未检查异常(即 RuntimeException 及其子类)则是运行时异常,通常代表编程中的错误,编译器不强制处理。
2024-09-22 23:45:56 1374
原创 算法练习题25——leetcode3279统计重新排列后包含另一个字符串的子字符串的数目(滑动窗口 双指针 哈希)
本题用到了滑动窗口 双指针 哈希 刚开始我是没读懂题的因为我笨 我想把我的思路说一下 左端不轻易缩小 只有找到跟word2匹配了 比如说abbcdd 遍历到c的时候才能匹配这个word2 对吧 那么之后加上以一个d或者俩d 都符合了 然后我们算完了才能缩小左端 扩大右端 让left先不动 等字符频次和目标频次完全匹配后 right右边剩余的所有字符都可以加到结果字符串中作为符合的子字符串 然后再移动left
2024-09-22 21:29:52 376
原创 算法练习题24——leetcode3296移山所需的最小秒数(二分模拟)
通过二分查找,逐步缩小范围,计算每个工人在不同时间内可以完成的工作量,直到找到能够让他们完成任务的最少时间。这个解法的核心是二分查找和模拟每个工人在给定时间内完成的工作量,通过这种方法我们可以在 log 级别的复杂度内找到最优解。
2024-09-22 19:49:17 427
原创 JVM原理-类加载过程
Java类加载过程可以看作是将我们写的代码(以class文件的形式)转化为可以运行的程序。这过程分为几个步骤:加载、链接、初始化、使用和卸载。
2024-09-20 16:25:35 1312
原创 Java基础——String不可变的含义、原因、好处
字符串的不可变性带来了多重好处。首先,它使得字符串在多线程环境下更安全,无需额外的同步机制。其次,不可变性允许字符串常量在内存中共享实例,从而节省了内存空间,并提高了程序性能。此外,不可变性还简化了字符串操作,支持编译期优化,并提供了原子性操作的保证。综上所述,字符串的不可变性为Java提供了安全、高效、简洁的字符串处理机制。
2024-09-20 11:08:32 733
原创 JavaWeb笔记整理——Redis
Redis 是一个开源的内存数据结构存储系统,通常用作数据库、缓存和消息代理。它以其高性能和灵活性而著称,支持多种数据结构,包括字符串、列表、集合、哈希和有序集合。Redis 的主要特点是数据存储在内存中,因此读写速度极快,非常适合需要快速响应的应用场景,如实时分析、会话管理、缓存等。它还支持持久化,将内存中的数据保存到磁盘中,保证数据的可靠性。Redis 提供丰富的功能,如主从复制、集群模式和 Lua 脚本支持,广泛应用于各类高并发场景。
2024-09-19 12:02:17 312
原创 算法练习题27——疫情下的电影院(模拟)
这道题的核心任务是将一个用逗号分隔的字符串格式的数字列表转换为一个整数列表。具体步骤包括:去除方括号:检查并去掉字符串开头和结尾的 [ 和 ],以确保只处理数字部分。分割字符串:通过 split(",") 方法按照逗号分隔,将字符串转化为字符串数组。去除空格与转换为整数:遍历数组中的每个元素,使用 trim() 去除多余空格,并用 Integer.parseInt() 将其转换为整数。存入列表:将转换后的整数添加到 ArrayList 中,生成一个动态的整数列表。
2024-09-15 14:24:33 654
原创 算法练习题26——多项式输出(模拟)
首先输入多项式的次数 n 和 n+1 个系数,将这些系数存储在数组中,然后从高次项到低次项依次遍历系数,根据系数的值来生成对应的多项式项;对于每一项,处理不同情况,如系数为正时,非首项需加上正号 +,系数为 1 或 -1 时省略数字直接输出 x 或 -x,对于幂次为 1 的项不输出指数,常数项不输出 x;整个过程确保输出符合标准的多项式格式,包括处理所有项之间的符号和特殊系数,最终完整地输出一个从高次项到低次项的标准多项式表达式。
2024-09-13 19:55:11 297
原创 算法练习题25——合并多项式
给定两个多项式,要求对它们进行合并。每个多项式的形式为若干项的集合,每项包含一个系数和一个指数。你需要将两个多项式按照指数相同的项合并,合并后的多项式要求按指数从小到大的顺序输出,输出格式为:各项之间使用加号 + 连接,系数为负时直接输出负号,省略正号。
2024-09-12 19:30:31 408
原创 算法练习题24——查找杨辉三角中的组合数
逐项递推法适合处理较小的数据量,计算较为直观,但当杨辉三角行数较大时,效率较低。二分查找法利用组合数的单调性,显著提高查找效率,适合处理较大的数据范围。这两种解法在不同场景下都可以使用,二分查找法尤其适合大规模数据下的查找问题。
2024-09-12 18:53:13 689
原创 算法练习题23——整除数列
给定一个整数 ( n ),生成一个序列。序列的第一个数是 ( n ),后面的每个数均是前一个数整除 2 的结果,直到结果为零为止。输出这个序列中所有大于零的项。要生成这样的序列,最直接的方法是从给定的整数 ( n ) 开始,不断将其除以 2,直到结果为 0 为止。每次除以 2 时,结果都保留在序列中。考虑到序列中的所有数都必须大于 0,所以在每次计算时要检查结果是否为正。
2024-09-11 00:25:24 440
原创 算法练习题22——解码
小明有一串很长的英文字母,其中可能包含大写和小写字母。在这串字母中,有很多字母是连续且重复的。为了压缩这串字母的表达形式,小明决定将连续相同的字母用“字母 + 出现次数”的形式表示。
2024-09-11 00:16:09 403
原创 算法练习题21——卡片(模拟)
小蓝有很多数字卡片,每张卡片上有数字 0-9。小蓝想从 1 开始拼出正整数,每拼一个数后,卡片不能再使用。小蓝有每种数字的卡片 2021 张,问小蓝能从 1 拼到多少个数。
2024-09-11 00:01:21 487
原创 算法练习题20——猴子选大王(模拟)
我想了蛮久,主要是不懂为什么最后t+1就是答案了,后来我终于知道了,因为循环了m次,意味着要淘汰m个猴子,最后一个猴王也要淘汰掉,这无所谓,只要让t最后指着猴王就行了,因为到最后一次循环的时候只剩猴王了,那等报数满足n的时候,t索引一定是在猴王这的,然后位置就是索引+1,t+1。
2024-09-10 23:55:55 368
原创 Java基础——String,StringBuffer,StringBuilder的区别
String:不可变对象。因为内部的value数组是final的,所以每次修改都会创建新对象,适合少量操作和线程安全的场景。StringBuffer:可变对象,线程安全。它的父类的value数组不是final,修改操作不创建新对象,但由于所有方法都被synchronized修饰,保证线程安全,但效率较低,适合多线程环境。StringBuilder:可变对象,线程不安全。它也不创建新对象,修改时不需要加锁,因此速度更快,适合单线程环境。
2024-09-10 17:57:10 611
原创 Java基础——equals和hashcode
在 Java 中,`equals` 和 `hashCode` 方法密切相关,必须保持一致性:如果两个对象通过 `equals` 方法相等,它们的 `hashCode` 也必须相同。这对于基于哈希的数据结构(如 `HashMap`、`HashSet`)至关重要,因为这些结构依赖哈希值进行快速查找和存储。为了减少哈希冲突,`hashCode` 的计算通常结合多个字段,并使用质数(如 31)进行乘法,以保证哈希值的均匀分布和较低的冲突率。
2024-09-10 11:51:34 857
原创 算法练习题19——leetcode141环形链表
如果有环的话 那么快的总有一天会追上慢的 比如说环形操场 而且不会跑丢 就是不会为空的 所以判断无环的条件就是判断指针是否为空
2024-09-10 11:03:26 523
原创 JavaWeb笔记整理14——公共字段自动填充技术实现
公共字段的自动填充原理通常依赖于**反射**和**AOP(面向切面编程)**。通过反射,程序在运行时动态获取类的字段和方法信息,如时间戳(`createTime`、`updateTime`)或用户信息(`createUser`、`updateUser`)等公共字段。在实际调用时,利用 AOP 切面拦截某些操作(如保存或更新),在方法执行前或后自动填充这些字段。框架(如 Spring)通过结合反射和 AOP,能够无侵入地为对象的公共字段赋值,实现统一的自动填充逻辑,简化了开发工作。
2024-09-08 21:45:20 1157
原创 JavaWeb笔记整理13——Mybatis
MyBatis 是一款轻量级的持久层框架,主要用于简化 Java 应用与数据库之间的交互。它允许开发者直接编写原生 SQL 并灵活映射查询结果到 Java 对象,提供动态 SQL 支持。MyBatis 封装了 JDBC 操作,简化了数据库连接、事务管理等复杂操作,同时支持一级和二级缓存,提升性能。它与 Spring 框架集成良好,适合需要灵活控制 SQL 且对性能有较高要求的项目。
2024-09-08 17:51:05 262
原创 算法练习题18——leetcode240搜索二维矩阵||(二分)
二分查找的关键在于输入数组必须是有序的,且每次都能通过不断减少搜索范围来提高效率。其时间复杂度是 O(log n),对于大规模数据查找非常高效。
2024-09-08 16:02:16 762
原创 算法练习题16——leetcode73矩阵置零
给定一个m x n的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。我们需要找出矩阵中哪些位置有 0,然后将这些位置所在的行和列上的所有元素都设为 0。
2024-09-07 16:31:10 624
原创 算法练习题15——求两个集合的并集和交集
这道题通过用户输入操作符决定对集合进行并集、交集或退出操作,集合使用 `ArrayList` 存储,排序时采用了传统的 `Comparator` 进行升序排序,或者用 `x - y` 简化比较。双指针法用于计算并集和交集,实现对两个有序集合的合并和查找,并最终输出结果。
2024-09-05 23:26:07 595
原创 算法练习题14——leetcode84柱形图中最大的矩形(单调栈)
这道题要求在直方图中找到能够形成的最大矩形面积。解决方法是使用单调栈来高效地确定每个柱子的左边界和右边界(即最近的比当前柱子矮的位置)。首先从左到右遍历,找到每个柱子左边第一个比它矮的柱子的位置;然后从右到左遍历,找到每个柱子右边第一个比它矮的柱子的位置。通过计算每个柱子作为最矮柱子时的最大矩形面积,遍历所有柱子并取最大值,即为答案。整个过程在 O(n) 的时间复杂度内完成,是一种高效的解决方案。
2024-09-05 19:46:30 626
原创 算法练习题13——除自身以外数组的乘积(动态规划)
给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。
2024-09-04 14:45:59 985
原创 算法练习题12:leetcode56合并区间
给定一个由多个区间组成的数组 intervals,每个区间都表示为一个二元组 [start, end],其中 start 表示区间的起始位置,end 表示区间的结束位置。你的任务是将所有重叠的区间合并,并返回一个不重叠的区间列表,确保列表中的每个区间都是按起始位置从小到大排列的。
2024-09-03 23:59:44 365
原创 算法练习题11:单词出现次数
如果在文章中找到了给定单词,则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即该单词在文章中第一次出现时单词首字母在文章中的位置,位置从0开始);如果单词在文章中没有出现,则直接输出-1
2024-09-03 22:56:11 440
原创 算法练习题10:leetcode76最小覆盖子串-滑动窗口
使用两个字典,一个存储目标字符串t中各字符的计数,一个存储当前窗口中各字符的计数。使用右指针逐步扩展窗口,直到窗口包含了t中所有字符。一旦窗口满足条件,使用左指针尝试缩小窗口以找到更小的符合条件的子串。在每次找到符合条件的窗口时,更新当前最小的覆盖子串的长度及其位置。如果找到满足条件的子串,返回最小的那个;如果没有找到,返回空字符串。
2024-09-03 12:24:14 729
原创 JavaWeb笔记整理12——Knife4j
Knife4j是基于springboot构建的一个文档生成工具,它可以让开发者为我们的应用生成API文档,目的是可以更加方便的基于API文档进行测试,生成的文档还可以导出,然后给到前端开发团队,前端开发团队可以基于API接口写具体的调用。
2024-09-02 21:32:59 1155
原创 算法练习题09:滑动窗口最大值(队列、双端队列)
基础队列适用于需要按顺序处理任务或数据的场景,比如任务调度、广度优先搜索等。双端队列适用于需要同时从两端操作数据的场景,比如滑动窗口中的最大值问题、双向遍历等。
2024-09-02 17:25:53 1147
原创 算法练习题08:找到字符串中所有字母异位词
这个算法的核心是利用“滑动窗口”的思想来比较子串是否是字母异位词。通过每次滑动窗口时更新频率计数数组,我们可以在 O(n) 的时间复杂度内解决问题,而不需要每次移动窗口都重新计算整个子串的频率。
2024-09-02 15:55:56 397
原创 JavaWeb笔记整理11——Nginx反向代理Tomcat
Nginx 就像一个中间人,它站在你的客户端(比如浏览器)和后端服务器(比如Tomcat)之间。它的主要任务是接收来自客户端的请求,然后将这些请求转发给实际处理请求的服务器(比如Tomcat),最后再把服务器的响应结果返回给客户端。
2024-09-01 17:22:40 509
原创 算法练习题07:无重复字符的最长子串
滑动窗口:滑动窗口的想法是使用两个指针(通常称为左指针 i 和右指针 j)来表示一个窗口。这两个指针在字符串上滑动,以找到满足条件的子串。在这个问题中,我们的目标是找到最长的、没有重复字符的子串。
2024-09-01 13:21:04 382
原创 JavaWeb笔记整理10——JWT令牌、Filter、Interceptor
介绍 JWT 令牌的作用和使用,并说明在 Spring 框架中,Filter 和 Interceptor 如何拦截和处理请求。
2024-08-30 21:10:39 500
原创 算法练习题06:leetcode793每日温度
不管咋样反正栈为空就先入栈,然后栈中存的是数组中数的索引,遍历这个数组,如果下一个数字比栈顶索引在数组中的值小,那么继续push压入栈,反之,下一个数字比栈顶索引在数组中的值大,那么就达成我们的目的了,找到比栈顶大的数了,那么pop弹出栈顶,i与弹出的那个索引做差值,就是弹出元素索引处的目标值,就是我们要的。画图看的更清楚。
2024-08-30 16:54:29 394
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人