- 博客(125)
- 资源 (1)
- 收藏
- 关注
原创 堆:数组中的第K个最大数
说明:降序排序之后:[6,5,5,4,3,3,2,2,1] =》第4个最大数是4。说明:降序排序之后:[6,5,4,3,2,1] =》第2个最大数是5。输入: [3,2,3,1,2,4,5,5,6],k = 4。题目描述:给定一个整数数组,返回数组中的第K个最大数。输入: [3,2,1,5,6,4],k = 2。维护个数为K的最小堆,堆顶元素就是第K个最大数。题解3:快速选择(三路分区)
2025-10-09 20:59:18
195
原创 栈:每日温度
题目描述:给定一个每天温度数组,返回每天温度距离下一个高温在几天后。输入: temperatures = [30,40,50,60]输出: [1,1,4,2,1,1,0,0]输出: [1,1,1,0]
2025-10-05 10:52:29
152
原创 栈:字符串解码
题目描述:给定一个经过编码的字符串,返回它解码后的字符串。输入:s = "3[a]2[bc]"输入:s = "3[a2[c]]"输出:"accaccacc",表示其中方括号内部的。输出:"aaabcbc"
2025-09-25 22:26:48
228
原创 栈:逆波兰表达式求解
运算符位于数之前。比如:10+2 对应前缀表达式是 + 10 2(4 + (13 / 5)) 对应前缀表达式是 + 4 / 13 5我们常用的算数表达式。比如 (4 + (13 / 5)),人类很容易计算出来,但计算机需要进行优先级比较,所以计算机更偏向于前缀或者后缀表达式。运算符位于数之后。比如:10+2 对应的后缀表达式是 10 2 +(4 + (13 / 5)) 对应的后缀表达式是 4 13 5 / +
2025-09-10 23:13:00
800
原创 栈:最小栈
题目描述:设计一个实现push、pop、top、getMin方法的栈。--> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();最小值栈:用来存放当前数据栈元素中的最小值。求解思路1:维护两个栈:数据栈和最小值栈。求解思路二:维护一个存放数据和最小值的类。数据栈:用来存放用户输入的数。时间复杂度:O(1)空间复杂度:O(1)时间复杂度:O(1)空间复杂度:O(n)时间复杂度:O(1)空间复杂度:O(n)
2025-09-08 22:07:03
233
原创 栈:简化路径
输入:path = "/home/user/Documents/../Pictures"求解思路:栈的思路处理..(上级目录)的情况 + 从头拼接所有路径。输出:"/home/user/Pictures"输入:path = "/home//foo/"输入:path = "/home/"解释:多个连续的斜杠被单个斜杠替换。输入:path = "/../"输出:"/home/foo"解释:应删除尾随斜杠。输出:"/home")均被视为有效的文件/目录名称。表示上一级目录(父目录)。开头),请你将其转化为。
2025-09-05 22:08:14
328
原创 栈:有效的括号
题目描述:给定一个只包含‘[’,'{','(',')','}',']'的字符串,判断该字符串是否括号有效。把左括号放入栈中,遇到右括号时,让右括号和栈顶元素进行匹配。输入:s = "()[]{}"输入:s = "([])"输入:s = "([)]"输入:s = "()"输入:s = "(]"匹配的过程可以通过map实现。时间复杂度:O(n)空间复杂度:O(1)
2025-09-05 21:12:11
336
原创 子串:最小覆盖子串
第二步:缩小 x 子串的左边界,找到覆盖 t 的最小子串。第一步:先找到包含 t 的中所有字符的子串 x。难点:如何判断找到的子串覆盖 t 字符串?====》使用频次,即x中每个字符出现的次数。最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。题目描述:给两个字符串s和t,求出s中覆盖t串的最小子串。t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。第三步:找到最小的子串,就是答案。t中每个字符出现的字符,就是覆盖。
2025-09-04 22:34:50
263
原创 子串:和为K的子数组
题目描述:给定一个整型数组和一个k,返回和为K的子数组(连续非空)的个数。枚举所有子串,在找所有子串的过程中统计和为k的子串个数。所以题目就可以转换为:求解有几个preSum[j]。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。则前缀和preSum为:[4,5,10,12]假设,数组nums为:[4,1,5,2]求解思路2:前缀和+哈希。时间复杂度:O(n^2)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)
2025-08-26 23:11:59
307
原创 滑动窗口:找到字符串中所有字符异位词
题目描述:给定两个字符串s和p,在s中找出与p互为异位词的子串,返回子串的起始下标。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。时间复杂度:O((n-m+1) * (m log m)),其中。核心逻辑:互为异位词的两个字符串,在词频表的表现效果是一样的。求解思路1:固定滑动窗口+子串排序判断异位词。求解思路2:滑动窗口+词频表。空间复杂度:O(n+m)时间复杂度:O(n)空间复杂度:O(1)
2025-08-25 23:10:53
344
原创 滑动窗口:无重复字符的最长子串
方式1:计算的无重复字符的最长子串长度,计算的是“abc”的长度,为3。方式1:计算无重复字符的最长子串长度,计算的是“bca”的长度,为3。题目描述:给定一个字符串,求最长子串(子串要无重复的字符)的长度。解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。输入: s = "abcabcbb"求解思路1:滑动窗口,左边界连续删。求解思路2:滑动窗口经典写法。比如:s="abca"
2025-08-24 14:12:40
204
原创 双指针:三数之和
巩固一下:可以使用Set构造List,最终得到的是唯一的值的List。解释:虽然-1有两个,即[-1,0,1]的三元组有两个,但只返回一个。题目描述:求一个整形数组中,构成三数之和为0的所有互不相同的三元组。输入:nums = [-1,0,1,2,-1,-4]的思路,细节是处理重复值,直接使用set存结果集。求解思路2:排序(为了二分查找)+两数之和+双指针。输出:[[-1,-1,2],[-1,0,1]]即可将HashSet转换为List。
2025-08-23 21:16:42
523
原创 双指针:盛最多水的容器
题目描述:整型数组存放“长方形”的宽,数组索引组成“长方形”长,求一个能装最多水的“长方形容器”。求解思路1:暴力解法。双层循环,length=j-i,width=Math.min(w1,w2)面积的计算公式是area=length*width;输入:[1,8,6,2,5,4,8,3,7]时间复杂度:O(n^2)空间复杂度:O(1)
2025-08-23 13:54:36
262
原创 双指针:移动零
题目描述:将整数数组中0挪到后面,非0挪到前面且保持相对顺序。用下标 j 来做非0和0的界限,i 用来遍历数组。求解思路1:借用临时数组,进行空间转换。时间复杂度:O(n^2)输入: nums =空间复杂度:O(n)时间复杂度:O(n)空间复杂度:O(1)
2025-08-23 11:16:48
166
原创 哈希:最长连续序列
用Set容器存储所有数作为辅助,方便确定我们找的连续序列中的数是否存在。(因为求解的最长序列,不要求在数组连续,所以想到用set去重也不会影响结果。总结:判断cur-1是核心,确保序列开头最小。遍历set是其二,省去重复的计算。(因为:最长数字连续序列是 [1, 2, 3, 4],长度为 4。因为求最长,所以找的时候需要确定当前数是序列最小,否则没必要。说明:连续指的是数字的连续,算法要求时间复杂度为O(n)。输入:nums = [100,4,200,1,3,2]题目描述:无序的整形数组,求连续最长序列。
2025-08-21 22:48:25
321
原创 哈希:两数之和
把所有值都存到哈希表中,key为num,value为index。找两数,其实就是遍历的时候查找target-nums[i],去哈希表中查找即可。说明:返回结果,索引无顺序要求;不能使用两次相同的元素,比如上述例子中不能返回[0,0]或者[1,1]。问题描述:在一个整数数组中,找到两数之和为target的两个值,返回找到的两个值的下标。时间复杂度:O(n^2)求解思路1:暴力解法。空间复杂度:O(1)求解思路2:使用哈希。时间复杂度:O(1)空间复杂度:O(n)
2025-08-19 23:01:14
197
原创 Kubernetes学习
Kubernetes是一个生产级别的开源平台,可编排在计算机集群内和跨计算机集群的应用容器的部署(调度)和执行。Kubernetes 协调一个高可用计算机集群,每个计算机互相连接之后作为同一个工作单元运行。Kubernetes 中的抽象允许你将容器化的应用部署到集群,而无需将它们绑定到某个特定的独立计算机。为了使用这种新的部署模型,需要以将应用与单个主机解耦的方式打包:它们需要被容器化。与过去的那种应用直接以包的方式深度与主机集成的部署模型相比,容器化应用更灵活、更可用。
2025-08-07 22:11:03
954
原创 使用ACK Serverless容器化部署大语言模型FastChat
本文介绍了在阿里云ACK Serverless Pro版集群上部署FastChat聊天机器人的完整流程。通过使用弹性容器实例(ECI)、负载均衡CLB和NAT网关等技术,快速构建可扩展的AI对话系统。主要内容包括:1)创建ACK Serverless集群并配置API Server访问;2)使用YAML定义FastChat应用的Deployment和Service资源,包括GPU实例规格选择、资源配额设置和负载均衡配置;3)通过公网IP访问FastChat服务体验对话功能。
2025-08-03 22:33:16
749
原创 如何更好的理解云计算和云原生?
云”的本质是一种资源使用和交付方式的范式转变技术层面:虚拟化+分布式技术,池化物理资源,通过互联网提供服务。商业层面:从“买硬件”到“买服务”,降低企业IT成本。哲学层面:抽象化:用户无需关心底层细节(如服务器位置、网络拓扑)。全球化:资源可跨地域调度。生态化:云厂商提供从基础设施到AI工具的完整生态。
2025-05-29 21:49:01
1609
原创 服务架构演变过程
本文探讨了服务架构随业务规模增长的演变过程,从单体架构到服务网格架构,每种架构都有其特定的应用场景和局限性。单体架构适合小型项目,开发简单但难以扩展;垂直架构通过业务拆分提高可维护性,但系统间调用复杂;分布式架构适用于大规模业务,但面临网络延迟等问题;微服务架构提供高度灵活性,适合复杂业务,但增加了系统复杂性;云原生架构利用容器化和编排技术,提升部署效率;服务网格架构则专注于服务间通信的管理,适用于大规模微服务系统。文章还提供了架构选择的决策树,帮助开发者在不同场景下做出合适的选择。
2025-05-22 21:51:32
1444
1
原创 使用ECS搭建云上博客wordpress(ALMP)
由于您是第一次设置数据库密码,因此在出现Enter Password提示符的时,直接回车即可。http://<ECS公网地址>/wp-blog/wp-admin/install.php。:表现层(Apache)+ 逻辑层(PHP)+ 数据层(MySQL)执行如下命令,安装MariaDB(替代MySQL)并启动。http://<ECS公网地址>/phpinfo.php。输入ECS服务用户名和密码,登录ECS。,填写标题、用户名、电子邮件,记录密码。如下图,证明已启动MariaDB。如下截图,证明安装成功。
2025-05-14 21:21:31
842
原创 测试基本概念梳理
一直对测试开发岗位比较感兴趣,今天简单的做一个总结,包括测试的基本知识、对测开岗位的认识~1、测开同学的工作内容? =》质量、保证、自研(1)首先针对测试这边的工作有:需求分析阶段:需求分析与评审、学习业务流程、提取功能点、编写需求分析说明书测试设计阶段:编写测试计划说明书(5W1H)、编写测试用例(涉及自动化测试的话需要编写测试用例脚本)测试执行阶段:提交BUG、跟踪BUG修改状态(这里可能会有回归测试,并且在测试执行之前会搭建测试环境)测试总结阶段:提交BUG表单、编写测试总结.
2021-04-01 16:05:47
1258
原创 Java中substring分割方法
1、有时候需要字符串的子串,可以使用Java中自带的substring()方法。方法解释//返回下标从startIndex开始的子字符串public String substring(int startIndex);//返回[startIndex,endIndex)范围内的子字符串public String substring(int startIndex,int endIndex);2、测试验证 public static void main(String[] args)
2020-08-31 16:58:36
1319
原创 Java中集合的toArray方法使用
1、参考博文:https://blog.youkuaiyun.com/enjoy96/article/details/786283282、在Collection集合中,将集合转为数组有两个方法(1)按适当顺序(从第一个元素到最后一个元素)返回包含此列表所有元素的数组。 /** * Returns an array containing all of the elements in this list in proper * sequence (from first to last
2020-08-28 18:48:49
3110
原创 Java实现各种排序
重新温习下排序算法,主要有:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序。/** * @date 2020-08-28 09:41 */public class SortTest { //冒泡排序 private void bubbleSort(int[] nums) { //外部循环,趟数 for (int i = 0; i < nums.length; i++) { //内部循环,获取一个最大值,向
2020-08-28 16:33:14
314
原创 解决Top K 问题
一、快排思想解决top K问题public class AlgorithmTest { //得到最小的k个数 public int[] getLeastNumbers(int[] arr, int k) { if (arr == null || k <= 0 || arr.length < k) { return new int[0]; } return quickSearch(arr, 0, arr
2020-08-27 15:35:58
327
原创 zookeeper注册中心介绍
一、简介zookeeper是Apache Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心。官网地址:http://dubbo.apache.org/zh-cn/docs/user/references/registry/zookeeper.html二、流程流程说明:服务提供者启动时,向/dubbo/com.foo.BaeSeriver/providers 目录下写入自己的url地址。 服务消费者启动时,订阅/dubbo/com.foo.B
2020-05-25 20:38:23
1612
原创 RPC框架介绍
一、什么是RPCRPC是远程过程调用(Remote Procedure Call)的缩写。它是一种通过网络从远程计算机上请求服务,而不需要知道底层网络技术的协议。也就是说两台服务器A、B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。RPC协议假定某些协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更
2020-05-25 15:32:17
741
原创 使用Docker部署第一个springboot项目
说明:我的编译器是IDEA,操作系统是MacOS,所有的代码文章中都有,建议自己动手收获更多~1、去springboot官网下载一个springboot项目(网址:https://start.spring.io/)2、修改pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org
2020-05-09 21:25:58
673
原创 使用Docker运行第一个hello-world
确保安装无误后,在终端输入$ docker run hello-world回车之后看到如下图所示:以上命令完整解释:Docker指定要运行hello-world镜像,Docker从本地主机上查找不存在,从镜像仓库Docker Hub下载公共镜像,以 hello-world镜像创建一个新容器。...
2020-05-09 20:39:36
6973
原创 Docker简单理解
一、虚拟机和容器的区别背景:现在屋里服务器很强大,无果我们在一台物理服务器上只跑一个服务就浪费了,而同时跑多个服务他们又会徐翔影响。所以得把每个服务都隔离起来,让他们只使用自己那部分有限的cpu,内存和磁盘,以及自己的依赖包。早起有了虚拟机,但是太占内存,于是就有了Docker,一个机器上可以安装十几个到几十个docker,他们共享操作系统核心,占用资源少,启动速度快。但又能提供CPU、内存、磁盘等一定程度的隔离。虚拟机:就是在我的操作系统中装一个软件,然后通过这个软件,再模拟出一台甚至多台的“子电
2020-05-09 20:34:45
542
原创 Docker之mac环境下安装及更换镜像源
一、手动安装官网下载:https://hub.docker.com/查看版本$ docker --versionDocker version 19.03.8, build afacb8b二、镜像加速(1)配置阿里云镜像源 => 地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors找到阿里云官方镜像地址点击顶部状态栏中的鲸鱼图标,在弹出的操作菜单中点击Preferences... ,点击...
2020-05-08 20:56:12
5859
原创 Java中将list集合按指定长度切分
一:切分方法:com.google.common.collect包下的Lists.partition方法。二:maven引入依赖:<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21...
2020-05-07 16:34:53
2513
原创 Java8新特性-实现两个集合的交集、差集、并集
1、测试代码package com.example.demo;import org.junit.Test;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;/** * @author LH * @date 2020-04-28 18:11 */publ...
2020-04-28 18:40:42
1964
原创 Java中的static、final、static final的区别
一、final1 - 修饰成员变量:表示常量,一但赋值不可修改。对于基本类型的数据,final会将值变为一个常数。对于对象句柄(可称为指针或者引用),final会将句柄变为一个常数。2 - 修饰成员方法:(1)不可以修饰构造方法。(2)private修饰的方法默认是final的,不能被覆盖。(3)普通的方法,被修饰后可以被继承,不能覆盖。3 - 修饰类:类不能被覆盖...
2020-04-28 17:58:19
224
使用Docker部署springboot项目源码
2020-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅