详细介绍:【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
文章目录
- 引言:
- 一、问题描述:
- 1.1 报错示例:
- 1.2 报错分析:
- 1.3 解决思路:
- 二、解决方法:
- 2.1 方法一:在Spring Boot配置文件中修改端口(推荐)
- 2.1.1 使用application.properties配置文件
- 2.1.2 使用application.yml配置文件
- 2.2 方法二:通过命令行查找并终止占用8080端口的进程
- 2.2.1 Windows系统
- 2.2.2 Linux或Mac系统
- 2.3 方法三:通过命令行参数指定端口
- 2.3.1 使用jar包启动时指定端口
- 2.3.2 在IDE中通过命令行参数指定端口
- 2.4 方法四:在代码中通过编程方式设置端口
- 三、其他解决方法
- 3.1 检查并关闭重复启动的应用
- 3.2 检查防火墙设置
- 3.3 重启计算机
- 3.4 使用端口占用检测工具
- 四、总结:
引言:
在Spring Boot开发过程中,启动应用时遇到端口被占用的情况是非常常见的问题,尤其是8080这个默认端口。对于开发者来说,当精心编写的代码准备运行测试时,却被"Web server failed to start. Port 8080 was already in use."这样的报错信息拦住去路,无疑会影响开发进度和心情。这个问题看似简单,但如果不了解其背后的原因和多种解决方法,可能会花费不少时间去排查。本文将深入探讨这个报错的产生原因,并提供多种实用的解决方法,帮助开发者快速解决该问题,让Spring Boot应用顺利启动。
一、问题描述:
在实际的开发场景中,很多开发者都曾遇到过端口被占用的问题。比如,有一位开发者在本地开发一个Spring Boot的Web应用,当他通过IDE(如IntelliJ IDEA、Eclipse)启动应用时,控制台突然抛出了"Web server failed to start. Port 8080 was already in use."的错误信息,应用启动失败。他检查了自己的代码,没有发现明显的配置或逻辑错误,这让他十分困惑。其实,这就是典型的端口被占用导致的Spring Boot启动失败案例。
1.1 报错示例:
当Spring Boot应用启动时,如果8080端口已被其他进程占用,控制台会输出类似以下的报错信息:
***************************
APPLICATION FAILED TO START
***************************
Description:
Web server failed to start. Port 8080 was already in use.
Action:
Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.
Process finished with exit code 1
1.2 报错分析:
从上述报错信息可以明确看出,问题的核心在于8080端口已经被其他进程占用。Spring Boot应用默认会使用8080端口来启动内嵌的Web服务器(如Tomcat),当该端口被其他程序(可能是另一个正在运行的Spring Boot应用、Tomcat服务器、或者其他任何使用8080端口的应用程序)占用时,当前的Spring Boot应用就无法正常绑定到8080端口,从而导致Web服务器启动失败,应用也就无法启动。
具体来说,在计算机网络中,每个端口就像一个通道,一个端口在同一时间只能被一个进程占用。当Spring Boot应用尝试启动并绑定8080端口时,操作系统会检查该端口的使用情况,如果发现已被占用,就会拒绝当前应用的绑定请求,进而导致应用启动失败。
1.3 解决思路:
解决"Port 8080 was already in use"的问题,主要有两个方向:
一是为当前的Spring Boot应用配置一个新的未被占用的端口,避开端口冲突。这是在开发环境中最推荐、最高效的解决方式,因为它允许你快速继续工作并避免终止其他可能有用的服务。
二是找到并停止正在占用8080端口的进程,释放该端口。这种方法适用于生产环境或确认该占用进程可以安全终止的情况。
基于这两个思路,可以衍生出多种具体的解决方法,接下来将详细介绍这些方法。
二、解决方法:
2.1 方法一:在Spring Boot配置文件中修改端口(推荐)
如果不想终止占用8080端口的进程,或者该进程是必要的,那么可以通过修改Spring Boot应用的配置文件,将应用的启动端口改为其他未被占用的端口。这是在开发环境中首选的解决方案。
Spring Boot支持多种配置文件格式,如application.properties、application.yml等,下面分别介绍在不同配置文件中修改端口的方法。
2.1.1 使用application.properties配置文件
在项目的src/main/resources目录下找到application.properties文件(如果没有可以自行创建),在文件中添加以下配置:
server.port=8081
这里将端口修改为8081,当然也可以根据实际情况修改为其他未被占用的端口,如8090、9000等。
2.1.2 使用application.yml配置文件
如果项目使用的是application.yml配置文件,同样在src/main/resources目录下找到该文件,添加或修改以下配置:
server:
port: 8081
同样,8081可以替换为其他合适的端口。
修改配置文件后,重新启动Spring Boot应用,应用就会使用新配置的端口启动,从而避免端口冲突。
2.2 方法二:通过命令行查找并终止占用8080端口的进程
这种方法适用于熟悉命令行操作的开发者,通过命令可以快速定位占用端口的进程并将其终止。适用于生产环境或确认可以安全终止占用进程的情况。
2.2.1 Windows系统
在Windows系统中,可以按照以下步骤操作:
- 打开命令提示符(CMD)或PowerShell。
- 输入命令
netstat -ano | findstr :8080
,该命令的作用是查找所有使用8080端口的网络连接及其对应的进程ID(PID)。
例如,可能会得到类似以下的输出:
其中,1234就是占用8080端口的进程ID。TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1234 TCP [::]:8080 [::]:0 LISTENING 1234
- 找到进程ID后,输入命令
taskkill /F /PID 1234
(将1234替换为实际的进程ID),强制终止该进程。
执行成功后,会显示"成功: 已终止 PID 为 1234 的进程。"
2.2.2 Linux或Mac系统
在Linux或Mac系统中,操作步骤如下:
- 打开终端。
- 输入命令
lsof -i :8080
,该命令用于列出占用8080端口的进程信息。
可能的输出如下:
其中,12345是进程ID。COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 12345 user 45u IPv6 0x1234567890abcdef 0t0 TCP *:http-alt (LISTEN)
- 输入命令
kill -9 12345
(将12345替换为实际的进程ID),强制杀死该进程。
通过这种方法,释放8080端口后,重新启动Spring Boot应用,通常就可以正常启动了。
2.3 方法三:通过命令行参数指定端口
除了在配置文件中修改端口外,还可以在启动Spring Boot应用时,通过命令行参数临时指定端口,这种方法非常灵活,适用于临时测试不同端口的情况。
2.3.1 使用jar包启动时指定端口
如果应用已经打包成jar包,可以在命令行中使用以下命令启动:
java -jar your-application.jar --server.port=8081
其中,your-application.jar是你的Spring Boot应用的jar包名称,8081是指定的新端口。
2.3.2 在IDE中通过命令行参数指定端口
在IntelliJ IDEA中,可以按照以下步骤设置:
- 点击菜单栏中的Run -> Edit Configurations…
- 在左侧找到你的Spring Boot应用的启动配置,点击进入。
- 在右侧的Program arguments中输入
--server.port=8081
。 - 点击Apply和OK,然后启动应用,应用就会使用8081端口。
在Eclipse中,设置方法如下:
- 右键点击项目,选择Run As -> Run Configurations…
- 在左侧选择Java Application,找到你的应用配置。
- 在右侧的Arguments标签页中的Program arguments中输入
--server.port=8081
。 - 点击Apply和Run,应用将使用指定的端口启动。
2.4 方法四:在代码中通过编程方式设置端口
在一些特殊场景下,可能需要通过代码来动态设置Spring Boot应用的端口。可以通过实现WebServerFactoryCustomizer接口来实现。这种方法适用于需要非常动态(例如,从数据库读取端口号)或程序化控制端口的特殊场景。
创建一个配置类,代码如下:
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ServerConfig
implements WebServerFactoryCustomizer<
ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
// 设置端口为8081
factory.setPort(8081);
// 也可以将端口设置为0,让Spring Boot随机选择一个可用的端口,非常适合测试环境
// factory.setPort(0);
}
}
当Spring Boot应用启动时,会自动加载该配置类,将端口设置为8081。对于绝大多数只是需要改个端口的情况,不推荐使用此方法,因为配置文件和命令行参数更加灵活和标准。
三、其他解决方法
3.1 检查并关闭重复启动的应用
有时候,开发者可能会不小心多次启动同一个Spring Boot应用,导致第一个启动的应用占用了8080端口,后续启动的应用就会报错。这时,只需要在IDE中检查是否有多个相同应用的启动实例,关闭多余的实例即可。
在IntelliJ IDEA中,可以在底部的Run面板中查看正在运行的应用,右键点击不需要的应用,选择Stop即可。在Eclipse中,在底部的Console面板中,找到对应的应用进程,点击红色的停止按钮即可关闭。
3.2 检查防火墙设置
虽然这种情况比较少见,但防火墙的设置有时也可能影响端口的使用。如果防火墙对8080端口进行了限制,可能会导致应用无法正常绑定端口,或者误认为端口被占用。可以检查系统防火墙设置,确保8080端口(或修改后的端口)处于开放状态。
以Windows系统为例,打开"控制面板"->“系统和安全”->“Windows Defender防火墙”->“高级设置”,查看入站规则和出站规则中是否有对8080端口的限制,如果有,可以适当修改规则或开放该端口。
3.3 重启计算机
如果以上方法都无法解决问题,或者无法确定哪个进程占用了端口,重启计算机是一个简单但有效的方法。重启计算机后,所有进程都会被终止,端口会被释放,此时再启动Spring Boot应用,通常可以解决端口被占用的问题。
3.4 使用端口占用检测工具
除了命令行之外,还有一些图形化的端口占用检测工具可以帮助查找占用端口的进程,如TCPView(Windows)、lsof的图形化工具等。这些工具可以更直观地显示端口的占用情况,方便开发者操作。
以TCPView为例,启动该工具后,在列表中找到本地端口为8080的条目,对应的进程名称和PID会显示出来,右键点击该条目,选择"End Process"即可终止对应的进程。
四、总结:
本文详细探讨了Spring Boot应用启动时出现"Web server failed to start. Port 8080 was already in use."报错的原因及解决方法。该报错的核心原因是8080端口被其他进程占用,导致当前应用无法绑定该端口。
解决该问题的方法主要有两大类:一是为当前应用更换新的端口,二是释放被占用的8080端口。在开发环境中,修改应用端口通常是比终止现有进程更推荐的首选方案,因为它操作更简单、安全,并且允许多个应用同时运行。而在生产环境或确定占用端口的进程是无用的僵尸进程时,则可以采用终止进程的方法。
当下次再遇到这类报错时,开发者可以按照以下步骤进行排查和解决:
- 首选尝试在
application.properties
中修改server.port
为其他值(如8081
)并重启应用。 - 如果必须使用
8080
端口,再按照文中方法查找并终止占用进程。 - 若问题依旧,再依次检查防火墙、重复实例等问题。
- 对于测试环境,可以考虑使用
server.port=0
让Spring Boot随机分配端口,完美避免冲突。
通过掌握这些方法,开发者可以快速有效地解决Spring Boot应用端口被占用的问题,提高开发效率,减少因环境问题带来的困扰。在实际开发中,根据具体情况选择合适的解决方法,能够让开发过程更加顺畅。同时,在开发多个应用时,养成主动修改默认端口的习惯,可以有效避免端口冲突问题的发生。
相关文章:
详细介绍:【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
详细介绍:【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…...
Nordic Neuton.AI 技术优势;
Nordic Neuton.AI 技术的主要优势包括: 极小模型体积 Neuton.AI 能自动生成极小的机器学习模型,通常仅需几 KB(平均小于 5 KB),比传统框架(如 TensorFlow Lite for Microcontrollers)小 10 倍以上。 自动化建模,无需 ML 专业知识 Neuton.AI 平台无需开发者具备神经网络…...
channel Sounding 工作流程
1、必须要建立连接,并且配对绑定模式; 2、通过发送LL_CS_CONFIG_REQ PDU Select “启动器(Initiator) 或 反射器Reflector; 3、LL_CS_CONFIG_RSP PDU Select “与 DEVICE A 相反的角色 ” 4、启动器( Initiator )和反射器都可以发起channel sounding的流程; 如果对这个…...
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
1.算法运行效果图预览 (完整程序运行后无水印)将数据导入到matlab中显示图片:可以看到,图3,通过FPGA细化之后,可以获得和MATLAB一样的效果(图2),两者相对于原图(图1)都实现了图像的细化处理。2.算法运行软件版本 vivado2019.2matlab2024b/matlab2022a3.部分核心程序 (…...
channel Sounding RTT和PBR 属性总结
1、蓝牙联盟规定了有72个信道可以使用,每个信道带宽1M; 2、跳频模式和普通ble 跳频方式是不一样的; 3、channel Sounding 必须要是建立连接的; 4、角色分为启动器和反射器; 6、启动器:计算自身到另一个设备的距离 7、反射器:对启动器进行响应的设备; 8、跳频机制和我们普…...
二分查找方法
/*二分查找方法,前提是这个数组是有序的,无序的先排序 1-100; 50 25 判断结构,循环结构(比较),区间为零时找完,则没有找到 / //public static boolean binarySearch(int[]array,int target) //{//定义左右坐标 // int left=0; // int right=array.length-1; /因为…...
复制一个数组的方法
public class DemoArray { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; int[] array1 = new int[array.length]; // for(int i:array){//特殊方法(遍历数据的时候),只需要输出数据的时候使用 // System.out.println(i); //…...
判断目标是否在数组里面
public static boolean fiandTarget(int[] array,int target){ // boolean flag = false; for (int i = 0; i < array.length; i++) { if (array[i] == target){ return true; //flag = true; } } // return flag; return false; }...
选择排序方法
public static void chooseSort(int[] array){for (int i = 0; i < array.length - 1; i++){//记住索引位置int min = array[i];int minIndex = i;//开始内存比较for (int j = i+1; j < array.length; j++) {// 如果发现比标志的小的,就将赋值给标志位if (array[j] <…...
ArcGIS Pro 遇到严重的应用程序错误而无法启动 - 教程
ArcGIS Pro 遇到严重的应用程序错误而无法启动 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monos…...
第一次作业
大家好我日常有三个常做的事:刷视频、玩游戏、偶尔画画。刷视频时,我不只是看娱乐内容,遇到 “Python 基础操作”“PS 简单修图” 这类实用知识,会随手存到收藏夹,每周还会抽 1 小时把零散知识点整理成笔记,现在已经攒了厚厚一本,之前帮同学修图时,还从笔记里找到过调整…...
markdown文件上传到博客园教程
如何将Markdown文件上传到博客园文本内容 图片资源前期准备 vscode软件下载并安装vscode软件安装博客园插件并登录账号在vscode中,通过搜索栏搜索并安装博客园插件,插件名称为:博客园cnblogs客户端,安装后重启vscode软件。登录账号登录成功后可以上传到博客园markdown文件上…...
自我介绍
大家好,我是 谢燚欣 一名来自数据科学与大数据技术专业的学生,很高兴加入博客园以及接下来对我的学习过程进行记录。在学习之外,我还有一颗好奇和勇于尝试的心。当我对滑滑板和滑雪很好奇时,我就会去尝试它们,尽管每一次的摔跤都伴随着剧烈的疼痛,那是也阻挡不了我对它的…...
【展厅多媒体】从技术到体验,AR在展厅中的一体化整合 - 指南
【展厅多媒体】从技术到体验,AR在展厅中的一体化整合 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New"…...
LilCTF 2025
Qt_Creator Solve 通过字符串找到槽函数sub_410100()发现判断点为this == v21,直接动调(附加)到这个地方取值就行(跳过下面部分)根据字符串找到注册信号的位置向上翻找到该类的this指针What I have learned此题不止在demo_code_editor.exe执行过程中存在反调试,在加载库时应该也…...
AES算法原理与举例说明
AES算法原理与举例说明AES( Advanced Encryption Standard,高级加密标准 )是当前全球主流的对称分组密码,用于替代安全性不足的 DES,广泛应用于 HTTPS、文件加密、物联网通信等场景。其核心特点是分组长度固定为 128 位,密钥长度支持 128 位、192 位、256 位(对应算法称…...
ffplay音频重采样 - 教程
ffplay音频重采样 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size:…...
devexpress gridcontrol表格知识
过滤 高亮显示 ,不过滤非匹配行行选择,单行编辑 活动行着色 保存...
深入解析:Qt串口通信学习
深入解析:Qt串口通信学习pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size…...
字符串算法笔记
记号约定:\(|s|\):字符串 \(s\) 的长度。 \(\mathbb{S}\):字符串集。 \(\Sigma\):字符集。一些约定:下标从 \(0\) 开始。1. 哈希 1.1 定义 我们想要快速求出字符串 \(s\) 是否等于 \(t\)。 如果 \(|s| \neq |t|\),那么一定不相等,所以令 \(|s| = |t| = n\)。那么有 \(O(…...
【光照】Unity[经验模型]和[物理模型]
Unity URP(Universal Render Pipeline)中的光照模型BRDF(双向反射分布函数)是PBR(基于物理的渲染)的核心组成部分,用于模拟真实世界的光照交互。【从UnityURP开始探索游戏渲染】专栏-直达一、BRDF发展历史(时间线)1971年:Bouknight提出首个光反射模型,引入Lambe…...
实用指南:浅聊一下Redisson分布式锁
实用指南:浅聊一下Redisson分布式锁pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...
JavaScript起源
为什么学习 JavaScript? JavaScript 是 web 开发人员必须学习的 3 门语言中的一门:HTML 定义了网页的内容 CSS 描述了网页的布局 JavaScript 控制了网页的行为本教程是关于 JavaScript 及介绍 JavaScript 如何与 HTML 和 CSS 一起工作。谁适合阅读本教程? 1. 如果您想学习 J…...
9.14做题随记
OI学习,宁可不学不可逆向,要么知道题目怎么做后学习代码写法,要么知道代码基础学习题目怎么做,要么两种都会学习另外一种解法,万万不可逆向学习,费心费力。P1678 烦恼的高考志愿 题目背景 计算机竞赛小组的神牛 V 神终于结束了高考,然而作为班长的他还不能闲下来,班主任…...
树-学习笔记
定义:一个树是由n个元素组成的有限集合。其中,每个元素叫结点(node) 性质:有一个特殊的结点叫根节点(root node) 从图论的角度,一个树有n-1条边,所以它是无环的。同时,它是连通的,因为可以直接或间接地从一个结点走到另一个结点 除了根结点以外,其余的结点可以分成m(m&…...
centos 安装 postgresql 数据库
* 安装必要的工具yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm* 移除可能冲突的默认 PostgreSQL 模块(如有)yum remove -y postgresql** 查看 postgresql 版本yum list postgresql** 按 y 一直安…...
个人问题反省--致命问题(急需解决)
目前尝试投了几家距离较远的公司,但是沟通均未深入,所以停止盲目投递,跳脱出来反思个人问题。...
STM32 HAL学习笔记:EC11的使用和定时器中编码器模式的中断
本文使用STM32Cube软件包提供的驱动对EC11进行读取,包含部分电路原理图和代码。背景 之前买了一个EC11,想要拿来实现音量调节之类的功能,现在终于有时间研究了。 原理图 一开始R1、R2、R3选择的是100k,测试发现下降沿只有几百纳秒,但上升沿过于平缓,如下图,旋转较快时容…...
题解:P12546 [UOI 2025] Convex Array
目前暂无修正。 % 你赛出了这题,赛后补题参照FFTotoro的题解详细化了一下具体转移过程及思路,在此感谢原作者(怎么套娃了)。 不难得出题意等价于找出两个不同的序列使得相邻两数差单调不降,两个序列的并集为原序列集合(可重集),两个序列的交集为升序排序后的 \(\{a_1\}…...
Java并发编程(1)
基础 1、并行跟并发的区别 并行:同一时刻,多个线程都在执行,这就要求有多个CPU分别执行多个线程。 并发:在同一时刻,只有一个线程执行,但在一个时间段内,两个线程都执行了。其实现依赖于CPU切换线程,因为切换时间很短,所以基本对于用户是无感知的。2、什么是进程和线程…...
玩转 hostnamectl set-hostname:Linux 主机名管理的优雅方式 - 实践
玩转 hostnamectl set-hostname:Linux 主机名管理的优雅方式 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier Ne…...
DES原理与举例说明
DES原理与举例说明一、DES 核心原理:6 大关键步骤 DES 的加密过程可拆解为 “初始置换→密钥扩展→16 轮迭代→逆初始置换” 四大阶段,其中 16 轮迭代是加密的核心,每轮又包含 “扩展置换、异或、S 盒替换、P 盒置换”4 个步骤。整体流程如下: 1. 预处理:明文初始置换(IP…...
Spring八股文 - 实践
Spring八股文 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-size: 14p…...
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
漏洞信息 漏洞报告https://code4rena.com/audits/2025-08-morpheus/submissions/S-709漏洞代码https://github.com/code-423n4/2025-08-morpheus/blob/a65c254e4c3133c32c05b80bf2bd6ff9eced68e2/contracts/capital-protocol/ChainLinkDataConsumer.sol#L78-L107漏洞背景 Heart…...
「嘶吼」第一章:吃饭睡觉打豆豆
标准的鹅蛋脸圆圆的,瞪着一双大眼,大双眼皮显得格外精神,小肚子微微隆起,头发及腰,常常梳着高马尾。因为从小营养过剩,她个子在幼儿园里偏高,跑得快,力气大,小胳膊小腿扑腾起来可折腾人了,用不完的精力都用在调皮捣蛋上了。小胖妞?这无疑是对李鹤然最好的形容。一岁…...
Clion 基础设置
切换中英文切换老 UI 在 CLion 2024.2 及更高版本中,旧版 UI 已不再作为内置选项,而是通过插件提供。...
《Vuejs设计与实现》第 16 章(解析器) 上 - 教程
《Vuejs设计与实现》第 16 章(解析器) 上 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospac…...
go代码(1)
package main import "fmt" func main() { fmt.Println("hello world") } 运行: $ go run hello-world.go hello world $ go build hello-world.go $ ls hello-world hello-world.go $ ./hello-world hello world本文来自博客园,作者:gosamuel,转载…...
7种常见的入侵检测系统规避技术解析
本文详细解析了攻击者常用的7种入侵检测系统(IDS)规避技术,包括文件恶意软件、混淆技术、IP分片、源路由等,并提供了相应的缓解措施,帮助企业安全团队加强网络防护。7种常见的入侵检测系统规避技术 恶意攻击者使用各种规避策略渗透网络,而入侵检测系统(IDS)却未能察觉。了解…...
js的引用
js代码 JavaScript又称ECMAScript,常用的版本通常有es5以及es6 元素中的代码 a元素除了能定义链接地址,同样可以定义js <a href="javascript:window.alert(hello)">Hello</a>我们可以通过按钮的单击事件实现上面相同的效果,其中事件也就是什么情况下执…...
P3957 [NOIP 2017 普及组] 跳房子
题目描述 给出 \(n\) 个点的坐标 \(a_i\) 和权值 \(s_i\),每次向右移动正距离 \(p\),满足 \(d-x \le p \le d+x\) 且落在给定的点上,求使经过点值的最大和不小于 \(k\) 的最小 \(x\)。 思路 step1-二分答案 这道题我们要求的是最小的 \(x\),可显然我们无法将 \(x\) 设计到状…...
C++中常用的STL容器
C++中常用的STL容器: Vector:变长数组:数组长度是可以动态变化的,倍增 Pair<X,Y>:二元组:前后两个元素类型可以不同 string:字符串:常见的函数:substr()截取一段字串,c_str()返回字符串的头指针 queue:队列:先进先出,push()插入,pop() 弹出,front() 返回…...
我的数据科学探索之旅:从兴趣到公考与学习计划
一.关于我:不止于代码的多面手我的兴趣:在热爱里收获成长 生活中的我,总喜欢在艺术相关的领域折腾。从初中开始,我就爱上了跳舞,第一次跟着视频练基础动作时,肢体僵硬得像 “机器人”,连简单的 wave 都做不流畅,反复练习后还总跟不上节奏。但我没放弃,每周坚持练 3 …...
MySQL 核心记录解析:从配置到存储的 “说明书 + 记录仪” 系统
MySQL 核心记录解析:从配置到存储的 “说明书 + 记录仪” 系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&quo…...
JavaScript Array 对象
JavaScript 中的 Array 对象是用于存储多个值的特殊类型的对象。 Array 是按顺序存储元素的,可以根据索引(从 0 开始)来访问它们。 创建数组 可以通过几种方式创建数组: 使用 Array 构造函数: let arr1 = new Array(3); // 创建一个长度为 3 的空数组 let arr2 = new Arr…...
代码规范
C++ 编码规范 一 版式 1.程序块缩进 4 个空格,只能使用空格键,不能使用 TAB 键。 2.相对独立的程序块之间、变量说明之后必须加空行,函数之间也用空行分开。 3.一行只写一条语句,if、for、do、while 等语句自占一行,且执行语句部分无论多少都要加括号 {}。 4.代码行之内应…...
mac远程连接windows
安装 Windows App 在app store 中安装windows app添加pcip可以在windows 电脑的终端上键入ipconfig查看ipv4地址。 双击连接 凭据是windows电脑的账户跟密码,例如Administrator,password 要求是在同一局域网内! 在mac终端上ping一下windows的ip看能否ping的通就知道了。...
子类不依赖泛型,重写父类方法,通过强制类型转换父类方法参数出现的问题。——— 一个例子引发的思考
使用泛型(推荐)public interface FlowHandlerGateway<P extends FlowApprovalPageCondition> {Page<FlowApprovalPage> pageQuery(P condition); }//父类 @Slf4j @Component @RequiredArgsConstructor public class FlowHandlerGatewayImpl<P extends FlowApp…...
WebStorm代码一键美化
还在手动调整代码格式?还在为团队代码风格不统一而头疼? 相信很多朋友都遇到过这样的痛苦场景:写完代码一团糟,看着就难受 团队成员代码风格千差万别,维护起来要命 每次提交代码前都要手动整理格式,费时费力上一篇《10分钟搞定Vue3项目》已经搭建好了项目基础架构,脚手架…...
3分钟搞定Vue组件库
还在为写前端页面发愁?还在为设计按钮、表格这些基础组件浪费时间? 经过上一篇《WebStorm代码一键美化》的学习,相信你已经掌握了 Prettier、ESLint、TypeScript 这三大开发神器。 今天,我要教你一个更厉害的招式:3分钟搞定高颜值UI组件库!学会这一招,你的前端开发效率将…...