自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

三木的博客

一个喜欢分享知识,记录日常的菜菜

  • 博客(69)
  • 收藏
  • 关注

原创 每日一LeetCode:最长无重复子数组

数据范围:0≤arr.length≤1050≤arr.length≤105,0<arr[i]≤1050<arr[i]≤105。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。给定一个长度为n的数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。那我们其实就可以利用HashMap键唯一的特性。其实就是将数组arr去重后的新数组的长度。

2025-06-12 23:56:59 392

原创 每日一LeetCode:反转字符串

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)1创建一个StringBulider来逆向添加字符(面试估计不允许)要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)2.使用一个字符数组两个指针从两边向中间遍历交换。数据范围: 0≤n≤10000≤n≤1000。

2025-06-12 23:37:50 283

原创 每日一LeetCode:合并区间

数据范围:区间组数 0≤n≤2×1050≤n≤2×105,区间内 的值都满足 0≤val≤2×1050≤val≤2×105。从第一个元素开始,遍历其它元素,找起点在当前元素的区间之中的元素,合并,开始遍历下一个元素。要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)进阶:空间复杂度 O(val)O(val),时间复杂度O(val)O(val)请保证合并后的区间按区间起点升序排列。给出一组区间,请合并所有重叠的区间。int start;当区间头相等时,根据区间尾部排序。

2025-06-11 22:53:35 343

原创 判断是否为回文字符串

给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。结束条件:若i>j之前,str.chatAt(i)!=str.chatAt(j),则该字符串不为回文字符串。知道i>j都没有return false则说明该字符串为回文字符串。要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)数据范围:0<n≤10000000<n≤1000000。字符串回文指该字符串正序与其逆序逐字符一致。回文字符串:从左到右和从右到左是一样的。

2025-06-11 21:55:42 251

原创 Java软件设计原则

对扩展开放,对修改关闭.在程序功能进行扩展时,不修改原有代码,为了程序的扩展性好.如何实现接口和抽象类.抽象的灵活性好,适用性广.合理的抽象能保持软件架构的稳定.当软件需求发生变化时,我们重新派生一个实现类来扩展就好了,软件中易变的细节可以通过派生的实现类进行扩展.

2025-06-11 21:30:59 399

原创 实习前端实战:HTML+CSS+FreeMarket

代码分为两部分:1.CSS样式定义(内联在<style>标签中)2.HTML内容结构(使用FreeMarket动态生成个性化内容)代码分为两部分,CSS和HTML样式CSS内容三级嵌套数据FreeMarket动态。

2025-06-11 11:33:26 543

原创 软件设计模式:概念和类图

类图显示了模型的静态结构,包括模型中存在的类,类的内部结构。

2025-06-10 02:28:55 628

原创 前端AI工具:TRAE的使用

4.打开ai侧栏,这样就可以使用ai工具了,对话框右下角选择模型,有时排队时可以切换其它大模型。进入官网,非这个页面都是广告!将com.cn改为ai,变成英文版就是海外版本了。1.将trae安装到一个英文目录中,最好将开发工具放在一个文件夹里,方便寻找。3.打开文件夹,在非C盘的其它盘创建一个存放代码的文件夹。2.完成默认配置,登录账号(国内登录使用需要"梯子")是字节推出的一款开发工具,我们这里使用的是海外版。deepseek大模型。

2025-06-09 03:57:32 311

原创 Java程序员必备的前端知识(CSS篇)

(注意:以下内容来自对bilibiliJava程序员学前端的总结,完整视频点击链接去b站学习) (注意:以下内容来自对bilibiliJava程序员学前端的总结,完整视频点击链接去b站学习)目录CSS定义:格式建议:1)选择器type选择器(元素选择器)class选择器id选择器选择器选择重复时:2)属性和值推荐一个网站:讲解一个常用的:3)布局介绍:实现:4)template标签:(模板复用)描述了网页的表现与展示效果为了代码的层次更加清晰,我们通常会将html文件和css文件放在同一文件夹下,但不在同一

2025-06-08 02:06:14 950

原创 Java程序员必备的前端知识(HTML初级篇)

(注意:以下内容来自对bilibiliJava程序员学前端的总结,完整视频点击链接去b站学习)目录HTML定义:介绍:VisualCode:常见元素:1)文本2)多媒体3)表单HTML是超文本标记语言,用来定义网页的内容和结构.超文本:超链接,将不同的网页链接起来标记:<**>就是标记,通俗的叫标签 标记的特征:不同的标记代表不同的内容:<head>作为标题<p>段落<a>超链接例子:完整的HTML页面介绍:<DOCTYPE>文档类型声明,告诉浏览器以什么模式展示html文档其余部分:(HTM

2025-06-08 01:15:35 1565

原创 FTL文件(学习FreeMarket模版语言)

用来定义重复片段代码</#macro>

2025-06-07 19:46:01 516

原创 配置文件:小心IPV4的变化!

如果写代码时,我们需要借用网络将图片,音频等传输到本地FTP时,IPv4地址发生变化,而你在配置文件中写死了某个IPv4地址,就会导致访问失败.1.动态IP分配:大多数家庭和小型企业使用动态IP分配,意味着每次设备连接到网络是,都会从ISP(互联网服务提供商)那里获得一个新的IP地址.2.DHCP租约更新:DHCP(动态主机配置协议)会设定一个租约期限,到期后设备需要重新请求IP地址,可能会导致地址变化.(注意:提交代码到Git时不要将配置文件提交!还有配置文件:(所有以192开头的)

2025-06-07 03:01:19 266

原创 Linux学习地址

作为JavaEE开发工程师,企业开发中用到的数据库,中间件技术,比如MySQL,Redis,MQ等技术,这些应用软件大多数在Linux操作系统中安装使用,开发人员往往需要通过远程工具连接Linux操作系统,然后来操作这些软件.2.虚拟机安装:在学习阶段我们没有自己的服务器,就需要将Linux安装在虚拟机上。虚拟机:指的是通过软件模拟一套独立的计算机操作系统(学习时一般使用VMvare)(在 Linux 系统运行过程中,“挂载” 指的是将。Linux是一套免费使用和自由传播的操作系统。

2025-06-04 12:17:00 281

原创 每日一LeetCode:验证IP地址

比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。所以, 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即,忽略 0 开头,忽略大小写)。比如, 2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。比如, 02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的。同时,IPv4 地址内的数不会以 0 开头。

2025-06-03 23:35:56 687

原创 每日一LeetCode:最长公共前缀

2.我们在进行charAt()方法时一定要注意空指针异常,必须做到i <= str[n].length - 1,这个代码比较巧妙的是i == str[j].length ||strs[0].charAt(i)!数据范围: 0≤n≤50000≤n≤5000, 0≤len(strsi)≤50000≤len(strsi​)≤5000。进阶:空间复杂度 O(1)O(1),时间复杂度 O(n∗len)O(n∗len)都>=这个前缀(包含),所以我们从str[0]开始遍历即可。1.最小前缀意味着所有字符数组中的。

2025-06-03 22:22:33 214

原创 如何将idea中自己的项目上传到GitHub上

如果存在类似id_ed266619类似的结果说明已存在SSH秘钥,可直接使用现有秘钥。如果只想推送到本地存储库,点击提交,如果想推送到远程存储库,那么点击提交并推送。(1)打开GitBash(如果不会使用GitBash在我的主页文章中搜索)(3)若无秘钥(修改为自己GitHub的email),配置自己的秘钥。new一个新的存储库,存储库名和项目名保持一致,其余按照默认配置。(3)点击测试,显示Git版本则ideaGit功能正常。将Git存储库中复制过来的SSH连接地址复制过来连接。

2025-06-03 20:07:20 690

原创 查看变更(Git协作第五篇)

在进行大的变更之前,比如合并到主分支或向公共发布更新,开发人员会进行代码审查,包括系统地检查所有代码的更改.这个协作过程需要一个或多个代码审查员仔细检查代码中潜在的问题,比如错误,bug和对编码标准的遵守.

2025-06-03 15:49:43 401

原创 Mysql高级:存储引擎

innoDB对应的表以xxx.ibd格式存储,xxx是表名,ibd是文件后缀,InnoDB存储引擎的每张表对应一个表空间文件,表中存储着该表的结构(frm,sdi),数据和索引.ibd文件就是一个表空间,表空间中由段组成,段由区(1M)组成的,区是由一个一个数据页组成的,每一页(16K)由一个个数据行组成的.存储引擎是存储数据,建立索引,查询/更新数据等技术的实现方式.存储引擎是基于表的,而不是基于库的,所以存储引擎也被称为表类型.以MYD,MYI,sdi后缀存储。1.不支持事务,不支持外键。

2025-06-03 14:31:50 1018

原创 整合分支(Git分支第四篇)

当完成了一个功能分支的工作,通常会与一个开发分支合并.你可以使用git合并或git分支命令完成这个操作.合并方法:保留合并分支的所有更改和历史记录,多次修改后,修订历史记录可能会变得复杂.变基方法:维护一个干净的历史修订记录,合并的提交会附加在目标分支的末尾.与合并的方法相比,冲突可能会更频繁的发生.

2025-06-02 23:25:52 370

原创 计网:HTTP2相对于HTTP1.1有哪些改进

HTTP2通过Stream复用,在一条TCP连接上并行传输所有资源的请求与响应,比如HTML内容,CSS内容,JS脚本等,Steam的数据帧在TCP连接中交错传输,显著加快网页加载速度.传统HTTP请求推送资源是"请求-应答"工作模式,而HTTP2服务端不再是被动的应答信息,可以主动的发送信息。举个例子:UserAgent:1,UserAgent:2属于两个不同的字段,其对应生成的索引不相同。2.对于所有请求的字段,如果是第一次出现,则将该字段存入头信息表并生成唯一。减少重复信息头的发送,提高了效率。

2025-05-31 00:00:35 309

原创 Redis怎么实现的io多路复用?

因为Redis是跑在单线程中的,所有的操作都是顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以I/O操作在一般情况下往往不能直接返回,这会导致某一文件的I/O阻塞导致整个进程都无法为客户端提供服务,而I/O多路复用就是为了解决这个问题出现的,为了让单线程的服务端同时处理多个客户端的事件Redis采用了IO多路复用机制.Redis的I/O多路复用模式使用的是Reactor设置模式的方式来实现.1.为什么Redis要使用I/O多路复用技术?(摘自小林coding)

2025-05-30 01:07:33 156

原创 Redis哪些地方用到了多线程?

从Redis 6.0版本开始,引入了多线程来处理网络IO操作,主要是网络请求的读写和响应的写入,这里需要注意的是,命令的执行仍然是单线程的,这是为了保持Redis原子性操作的特性.虽然生成RDB文件的操作默认是主线程执行的,但在执行BGSAVE命令时,会通过fork子进程来完成,而子进程可以看作是一种特殊的多线程实现方式,[接受客户端请求->解析请求->进行数据读写等操作->发送数据给客户端]这一过程是在一个线程(主线程)中进行的.在某些特定的配置下,AOF文件的配置会在后台线程中完成.

2025-05-29 23:25:34 224

原创 每日一LeetCode:字符串变形

我将字符串所有字符均大小写互换后,按照" "分块,倒序添加到StringBulider中,但是对于类似"H L "末尾有空格的用例时无法处理,末尾的空格被丢弃。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。数据范围: 1≤n≤1061≤n≤106 , 字符串中包括大写英文字母、小写英文字母、空格。进阶:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)改进后的代码:通过双指针进行二翻转。

2025-05-29 22:34:52 378

原创 Java idea中不同项目需要切换jdk版本

我们在java开发中,往往需要接受不同的项目,而不同的项目往往有不同的JDK版本,这个时候我们要将JDK版本切换到对应的版本.4.运行maven环境时可以将设置中Maven的JRE也修改为当前项目版本。3.平台设置中的SDK也可以修改。3.在模块中修改模块SDK。

2025-05-29 21:21:18 719

原创 每日一LeetCode:编辑距离(一)

dp[i][j]表示将str1的前i个字符转换为str2的前j个字符所需的最少操作次数。

2025-05-29 12:11:23 260

原创 Redis为什么这么快?

Redis采用I/O多路复用机制处理大量客户端Socket请求,即一个线程处理多个IO流,原理是内核中有多个监听Socket和已连接Socker,一旦有请求到达就会交给Redis线程处理.Redis所有的操作在内存中完成,因此Redis瓶颈是机器内存或网络带宽,并非CPU,因此采用单线程的解决方案.Redis采用单线程模型,避免了多线程直接和竞争和多线程切换带来的时间和性能上的开销,也不会造成死锁.单线程的Redis吞吐量可达到10W/每秒.内置哈希表,跳表,压缩列表等高性能数据结构.

2025-05-29 10:31:43 256

原创 HTTPS是如何防范中间人的攻击?

服务器会向证书颁发机构申请数字证书,证书包含了服务器的公钥和其他相关信息.握手期间客户端接收并验证证书的合法性,校验通过后通过公钥来加密通信数据,并将加密后的数据发送给服务器,由服务器的私钥解密.由于攻击者无法获取服务的私钥,因此无法正确解密客户端发送的加密数据,同时客户端在建立连接时也会验证服务器的证书,验证失败则发出警告或中断连接.中间人的攻击在于攻击者冒充服务器与客户端建立连接,并同时与服务器建立连接.https握手期间会通过非对称加密的方式协商出对称加密秘钥。

2025-05-29 01:27:29 128

原创 Redis中String字符串为什么用SDS不用C语言的字符串

而Redis的SDS结构引入了alloc和Len成员变量,SDS API通过alloc - len计算可以算出剩余可用空间,空间不足是Redis会自动扩大SDS到执行所需的空间大小.3.不会发生缓冲区溢出问题:C语言吧缓冲区大小是否满足需求的任务交给开发者保证,程序内部不会判断缓冲区是否够用,可能发生缓冲区异常导致程序异常结束.1.有len的存在,获取字符串长度,直接返回该成员变量即可,复杂度为O(1):字符数组,用来保存实际数据。:用来表示不同类型的SDS。:分配给字符数组的长度。

2025-05-29 01:06:59 678

原创 每日一LeetCode:数字字符串转化成IP地址(dfs+回溯)

回溯法是一种通过尝试所有的路径来寻找问题的解法,通常搭配深度优先算法,在搜索过程中一旦发现当前路径无法得到有效解,就回溯到上一步尝试其它路径.

2025-05-28 22:06:45 272

原创 每日一LeetCode:打家劫舍(二)(动态规划)

你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。数据范围:数组长度满足 1≤n≤2×105 1≤n≤2×105 ,数组中每个值满足 1≤nums[i]≤5000 1≤nums[i]≤5000。给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

2025-05-28 21:03:01 232

原创 HTTPS的握手过程说一下

服务器选择客户端支持的TLS版本和加密套件,发送服务器证书(含共钥匙)等。HTTPS基于TCP连接,其握手过程在TCP握手之后进行,主要分为。简历三个阶段,设计SSL/TLS协议(当前主流为TLS1.3)发送支持的TLS版本,加密套件列表,压缩算法等。

2025-05-28 19:27:18 309

原创 计算机网络:HTTP断点重传是什么

断点重传是HTTP/1.1协议支持的特性.实现断点续传的功能,需要客户端记录当前下载的进度,并在需要续传是通知服务端当前要下载的内容.

2025-05-28 18:52:45 216

原创 计网:HTTP1.1怎么对请求进行拆包的,具体来说是怎么拆的

在HTTP/1.1中,请求的拆包是在请求的请求头"Content-Length"中进行的,该字段指示了请求正文的长度,服务器根据该长度来正确解析和处理请求.(如图,摘自小林coding)

2025-05-28 15:35:18 156

原创 计网:HTTP和HTTPS的区别

HTTP是超文本传输协议,信息是明文传输,存在安全风险的问题.HTTPS则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输.HTTP连接建立相对简单,只需要经过三次握手就可以传输数据,而HTTPS还需要进行SSL/TLS的握手过程,才能够进行加密报文传输.HTTPS需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的.HTTP默认端口是80,HTTPS默认端口是443。

2025-05-28 11:25:12 232

原创 计网:HTTP长连接是什么

HTTP是基于TCP传输协议实现的,流程为客户端发送请求->服务器响应->连接关闭,每次请求都要经历三次握手建立连接->传输数据->四次挥手关闭连接这一套完整的流程.客户端与服务器建立一次连接后,可以在该连接上发送多次请求和接受响应,连接在一段时间内保持打开状态,只到双方决定关闭.HTTP协议采用的是"请求-应答"模式,客户端发起了请求,服务端才会返回响应,一来一回的样子.频繁请求时,连接建立和关闭的开销(TCP握手延迟,资源消耗等)都会降低性能.:减少重复握手和挥手,降低网络延迟和资源消耗。

2025-05-28 11:11:16 113

原创 每日一LeetCode:打家劫舍(一)

你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。数据范围:数组长度满足 1≤n≤2×105 1≤n≤2×105 ,数组中每个值满足 1≤num[i]≤5000 1≤num[i]≤5000。给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。

2025-05-28 01:51:34 141

原创 每日LeetCode:最长回文子串

2.推导状态转移方程: 判断dp[n][n]是否为回文子串,只需要判断两边字符是否相等以及dp[n-1][n-1]是否为回文子串。对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。1.定义状态:int[][] dp = new int[n][n];表示从n到n是否为最长回文子串。要求:空间复杂度 O(1)O(1),时间复杂度 O(n2)O(n2)进阶: 空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)

2025-05-28 00:56:57 183

原创 Java后端实习:本地文件.pdf以表单格式(form-data)发送给远程端口

包括url(模拟浏览器请求的地址),File(就是我们要上传的文件它的地址),不过注意我这里是pdf地址。模拟http请求,将本地数据以表单格式(form-data)发送给远程端口,其中有一个pdf文件。4.将返回的respose转换为实体,并对返回的code进行判断,看发送是否成功。在HttpUtil类中添加以下方法,用于发送带文件的form-data请求。2.文件路径通过通过其它逻辑方法找到存储在本地文件中的文件。:调用我们刚刚在HttpUtil中创建的工具。:像手机号,身份证号这种非文件参数。

2025-05-27 19:43:54 222

原创 在vsCode运行node代码

安装依赖:运行:打包:

2025-05-27 14:24:41 116

原创 异:org.apache.tomcat.util.http.fileupload.FileUploadException

异常描述:the request was rejected because no multipart boundary was found。比如:如果你后端使用的是@RequestBody接受数据,那么,你的前端就必须传json格式的数据,而不是form-data表单格式的数据。解决方案:查看自己的前端请求数据类型和后端接口接受类型是否一致。错误分析:multipart表单解析错误。

2025-05-27 11:17:23 256

空空如也

空空如也

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

TA关注的人

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