ps:这篇笔记是笔者在尚硅谷学习雷神的SpringBoot3
的时候写的。文章包含看视频时产生疑问的回答,和一些常见linux指令,和使用IDEA开发,学习的一些小技巧,功能键啥的.
SpringBoot3
从jar启动的线程 – jps
jps
是用于查看当前正在运行的 Java 进程的命令。
1找到正在运行的jar包的PID
2 taskkill /pid pid号 -f -t
ctrl + f 可以在console里面开启搜索
@Target可以看该注解可以放在哪
Ctrl+ N 可以在源码中查找类
###### web开发
webjars默认从这个路径开始找
#自定义webjars的路径前缀 -- webjars就是项目引入的jar包
spring.mvc.webjars-path-pattern=/wj/**
#静态资源访问前缀 -- 以前的http://localhost:8080/1.jpg --> http://localhost:8080/static/1.jpg
spring.mvc.static-path-pattern=/static/**
#自定义静态资源文件夹的位置
spring.web.resources.static-locations=classpath:/a/
@Autowired(required = false)
的作用是:
- 如果找到匹配的依赖项,它会正常地将依赖项注入到目标对象中。
- 如果找不到匹配的依赖项,它将会将依赖项设置为
null
,而不是抛出异常
Thymeleaf
路径可以加上@{} 也可以不加,但是加上后会有一个动态的判断增加项目路径的效果
使用bootstrap来进行美化
导入
在title下:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
在body的最后:
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script><script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-7ymO4nGrkm372HoSbq1OY2DP4pEZnMiA+E0F3zPr+JQQtQ82gQ1HPY3QIVtztVua" crossorigin="anonymous"></script>
butter相关的
引用模板
1.打开bootstrap
2.找到对应的资源
3.单击右键检查 – 复制对应元素
使用bootstrap渲染网页的时候,有些浏览器打开不了
目前电脑上只有联想自带的浏览器能正常访问
在Spring Boot中,内容协商(Content Negotiation)指的是根据客户端请求的特征,选择合适的响应格式来返回数据。它允许客户端和服务器之间进行协商,以确定最适合的响应格式,可以是JSON、XML、HTML等。
内容协商的常见应用场景是RESTful API中,客户端可以通过设置请求头中的"Accept"字段来指定期望的响应格式。服务器根据请求头中的"Accept"字段和支持的响应格式,选择最佳的响应格式返回给客户端。
Spring Boot提供了多种实现内容协商的方式:
- 扩展路径扩展名:可以通过在URL中添加不同的扩展名来指定期望的响应格式。例如,
.json
表示JSON格式,.xml
表示XML格式。 - 查询参数:可以通过在URL中添加查询参数来指定期望的响应格式。例如,使用
?format=json
表示期望的响应格式为JSON。 - 请求头:可以通过设置请求头中的"Accept"字段来指定期望的响应格式。例如,使用
Accept: application/json
表示期望的响应格式为JSON。 - 默认响应格式:如果客户端没有明确指定期望的响应格式,服务器可以通过设置默认响应格式来返回数据。可以通过配置文件或代码来设置默认的响应格式。
Spring Boot通过内容协商机制,使得服务器能够根据客户端的需求返回合适的响应格式,提高了系统的灵活性和可扩展性。开发者可以根据具体的需求选择适合的内容协商方式来实现数据的返回。
###### 数据访问
注意区分mapper和controller中形参栏的变化
需要给用户返回一个页面的话,需要导入thymeleaf依赖!
idea通过命令行激活环境
核心原理
ctrl + O 实现继承类的方法
"ping"是一个常用的网络工具命令,用于测试主机之间的连通性。当你使用ping命令向某个目标主机发送一个网络请求时,目标主机将接收到这个请求并返回一个响应。通过这个响应,你可以确定你的计算机是否能够和目标主机成功进行网络通信。
以下是ping命令的一些常用参数和作用:
-c
:指定发送的ping请求次数。-i
:指定ping请求之间的时间间隔。-s
:指定发送的ping请求的数据包大小。-t
:在Windows系统上,指定ping命令连续发送ping请求。
当你执行ping命令并指定目标主机的IP地址或域名时,命令行界面上将会显示每个ping请求的结果,包括目标主机的IP地址、数据包大小、响应时间等信息。正常情况下,ping命令会连续发送ping请求并接收响应,直到指定的次数达到或者手动终止。
通过ping命令的结果,你可以判断目标主机是否可达、网络延迟的大小以及丢包率等网络连接的相关信息。ping命令常用于网络故障排除、网络性能测试和监测等场景中。
ctrl + h 可以查看接口的实现类
接口文档
使用`@RequestBody`注解的方法参数可以是任意类型的Java对象,包括自定义对象、集合等。Spring Boot会根据请求的内容类型(如JSON、XML等)自动将请求体的内容转换为指定的Java对象。
配置ui,然后访问就可以得到接口文档
Swagger是一种用于生成和展示接口文档的工具,它通过解析代码中的注解或配置来自动生成接口文档,并提供了一个可交互的UI界面来展示和测试API。使用Swagger可以方便地生成和维护API文档,提高开发效率和API的可用性。
远程调用
java里面string和json的关系
在Java中,我们可以使用String类型来表示JSON数据。可以将JSON数据作为一个字符串赋值给String变量。例如:
String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
@PathVariable 和 @RequestParam 有什么异同
- 用法:
@PathVariable
用于获取URL路径中的参数,而@RequestParam
用于获取URL查询参数或者表单参数。@PathVariable
示例:/users/{id}
,其中id
是路径参数。@RequestParam
示例:/users?id=123
,其中id
是查询参数。
抽取类
在Reactor库中,Mono.just()
是用于创建一个包含单个值的Mono对象的静态方法。它接受一个参数作为值,并将该值封装在Mono对象中。
如:
Mono<String> mono = Mono.just("Hello, World!");
阿里云的这些数据一个账号是一样的
使用post发请求时 Body的请求参数 选 x-www-form-xxxx
消息服务
StopWatch
是Spring Boot框架中的一个实用工具类,用于测量代码块的执行时间
如:
StopWatch stopWatch = new StopWatch();
stopWatch.start();
// 需要测量执行时间的代码块
Thread.sleep(1000);
stopWatch.stop();
long elapsedTime = stopWatch.getTime();
System.out.println("Execution time: " + elapsedTime + "ms");
可观测性
Ops"一词通常是指"Operations",在技术领域中常用于表示系统或软件的运维操作和管理。
mkdir -p
是一个常用的命令行指令,用于创建目录(文件夹)。该指令可以递归地创建多级目录结构,如果目录已经存在则不会报错。
创建单个目录:
mkdir directory_name
这将创建一个名为"directory_name"的目录。
创建多级目录:
mkdir -p path/to/directory
pwd
是一个常用的命令行指令,用于显示当前工作目录的路径。pwd
是 “Print Working Directory” 的缩写。
ps -ef | grep boot3
是一个常用的命令行指令,用于列出正在运行的进程并通过过滤器查找包含"boot3"关键字的进程。
让我们逐步解释这个指令的含义:
ps
是 “Process Status” 的缩写,用于显示当前系统中运行的进程信息。-ef
是ps
命令的选项,用于显示所有进程的详细信息,包括进程的PID(进程ID)、PPID(父进程ID)、进程状态、CPU占用等。|
是管道操作符,将前一个命令的输出作为后一个命令的输入。grep boot3
是用于在输入中过滤包含 “boot3” 关键字的行的过滤器命令。grep
是一个强大的文本搜索工具,用于在文件或输入中查找匹配指定模式的行。
因此,ps -ef | grep boot3
命令的作用是列出所有正在运行的进程,并通过过滤器找出其中包含 “boot3” 关键字的进程。这个命令通常用于查找与特定进程或应用程序相关的进程信息。
安装yum install lrzsz
后就可以使用rz命令
rz
命令:将选定的文件从本地主机上传到当前终端会话的远程主机。
wget
是一个常用的命令行工具,用于在Linux和Unix系统中下载文件。它可以从指定的URL下载文件并保存到本地目录中。
wget
的基本语法如下:
wget [options] [URL]
cd ~
是一个常用的命令,用于将当前工作目录切换到用户的家目录(home directory)。
例如,假设当前用户是"johndoe",使用cd ~
命令将切换到"/home/johndoe"目录:
nohub如何启动一个jar
对于使用nohup
命令启动JAR文件,你可以按照以下步骤进行操作:
- 打开终端或命令行界面。
- 使用以下命令来启动JAR文件并将其输出重定向到一个文件:
nohup java -jar /path/to/your.jar > output.log 2>&1 &
将 /path/to/your.jar
替换为你的JAR文件的实际路径。
3. 执行上述命令后,JAR文件将在后台运行,并且标准输出和错误输出将被重定向到 output.log
文件中。
4. 你可以关闭终端或命令行界面,JAR文件将继续在后台运行。
如果你想要访问JAR文件的输出日志,可以使用文件浏览器或命令行界面打开 output.log
文件。
请注意,nohup
命令将使JAR文件在后台运行,并且在终端关闭后仍然保持运行状态。这对于长时间运行的程序或服务器应用非常有用。另外,你可以根据需要调整输出日志文件的名称和路径。
如何在linux里面 关闭 nohub启动的jar
要关闭通过 nohup
启动的 JAR 进程,可以按照以下步骤进行:
- 使用
ps
命令查找正在运行的 JAR 进程的进程ID(PID):
ps -ef | grep java
这将显示与 Java 相关的进程列表。请查找与你的 JAR 文件相关的进程。
2. 找到 JAR 进程的 PID 后,使用 kill
命令发送终止信号给进程:
kill <PID>
将 <PID>
替换为 JAR 进程的实际进程ID。
3. 如果进程不会立即终止,你可以使用 kill -9
命令强制终止进程:
kill -9 <PID>
请注意,使用 -9
选项会发送一个无法被进程忽略的强制终止信号。
这样,通过 nohup
启动的 JAR 进程将会被终止。你可以使用 ps
命令再次确认该进程是否已经停止运行。
[root@VM-16-9-centos ~]# 和 [root@VM-16-9-centos /]# 有什么区别
[root@VM-16-9-centos ~]#
和 [root@VM-16-9-centos /]#
是相同的提示符,它们只是显示格式上的差异。
[root@VM-16-9-centos ~]#
中的~
表示当前登录的 root 用户的家目录。[root@VM-16-9-centos /]#
中的/
表示当前工作目录是根目录。
通常情况下,~
表示当前用户的家目录,而 /
表示根目录。在这两个提示符中,#
符号表示当前是以 root 用户身份运行的终端。
请注意,~
可以根据当前登录用户的不同而有所不同,而 /
表示的是根目录,始终不变。这两个提示符的区别在于显示的当前工作目录,并没有其他实质性的差异。
curl
是一个强大的命令行工具,用于与网络服务器进行数据传输。
AOT
AOT:Ahead-of-Time(提前编译):程序执行前,全部被编译成机器码
JIT:Just in Time(即时编译): 程序边编译,边运行;
Compiler - 编译型
Interpreter - 解释型
VM-16-9-centos ~]#中的
~` 表示当前登录的 root 用户的家目录。
[root@VM-16-9-centos /]#
中的/
表示当前工作目录是根目录。
通常情况下,~
表示当前用户的家目录,而 /
表示根目录。在这两个提示符中,#
符号表示当前是以 root 用户身份运行的终端。
请注意,~
可以根据当前登录用户的不同而有所不同,而 /
表示的是根目录,始终不变。这两个提示符的区别在于显示的当前工作目录,并没有其他实质性的差异。
curl
是一个强大的命令行工具,用于与网络服务器进行数据传输。
此文章用于笔者记录学习,也希望对你有帮助