云原生之高性能web服务器学习(持续更新中)

高性能web服务器

  • 1 Web服务器的基础介绍
    • 1.1 Web服务介绍
      • 1.1.1 Apache介绍
      • 1.1.2 Nginx-高性能的 Web 服务端
  • 2 Nginx架构与安装
    • 2.1 Nginx概述
      • 2.1.1 Nginx 功能介绍
      • 2.1.2 基础特性
      • 2.1.3 Web 服务相关的功能
    • 2.2 Nginx 架构和进程
      • 2.2.1 架构
      • 2.2.2 Ngnix进程结构
    • 2.3 Nginx 模块介绍
    • 2.4 Nginx安装
      • 2.4.1 安装方式
      • 2.4.2 源码编译安装
      • 2.4.3 平滑升级和回滚
  • 3 Nginx核心配置
    • 3.1 配置文件说明
    • 3.2 主配置文件结构
    • 3.3 核心配置示例
      • 3.3.1 新建一个PC web站点
      • 3.3.2 root和alias
      • 3.3.3 Location
      • 3.3.4 账户认证
      • 3.3.5 自定义错误界面
      • 3.3.6 自定义错误日志
      • 3.3.7 制作下载文件
  • 4 Nginx高级配置
    • 4.1 状态页
    • 4.2 压缩功能
    • 4.3 变量使用
  • 5 Nginx的Rewrite相关功能
    • 5.1 if判定
    • 5.2 break
    • 5.3 return
    • 5.4 rewrite
  • 6 Nginx反向代理
    • 6.1 实现http反向代理
      • 6.1.1
      • 6.1.2 动静分离
      • 6.1.3 http反向代理负载均衡
    • 6.2 实现FastCGI
      • 6.2.1 配置nginx
      • 6.2.2 php配置
      • 6.2.3 php配置优化
      • 6.2.4 测试页面

1 Web服务器的基础介绍

  • 这是一张正常情况下单次web服务的访问流程
    这是一张正常情况下单次web服务的访问流程

1.1 Web服务介绍

现有流行的Web服务有两种:一种是Apache,另一种就是Nginx。

1.1.1 Apache介绍

(1)Apache prefork 模型

  • 预派生模式,有一个主控制进程,然后生成多个子进程,使用select模型,最大并发1024
  • 每个子进程有一个独立的线程响应用户请求
  • 相对比较占用内存,但是比较稳定,可以设置最大和最小进程数
  • 是最古老的一种模式,也是最稳定的模式,适用于访问量不是很大的场景

优点:稳定
缺点:每个用户请求需要对应开启一个进程,占用资源较多,并发性差,不适用于高并发场景

(2)Apache worker 模型

  • 一种多进程和多线程混合的模型
  • 有一个控制进程,启动多个子进程
  • 每个子进程里面包含固定的线程
  • 使用线程程来处理请求
  • 当线程不够使用的时候会再启动一个新的子进程,然后在进程里面再启动线程处理请求
  • 由于其使用了线程处理请求,因此可以承受更高的并发

优点:相比prefork 占用的内存较少,可以同时处理更多的请求
缺点:使用keepalive的长连接方式,某个线程会一直被占据,即使没有传输数据,也需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用(该问题在prefork模式下,同样会发生)

(3)Apache event模型

  • Apache中最新的模式,2012年发布的apache 2.4.X系列正式支持event 模型,属于事件驱动模型(epoll)
  • 每个进程响应多个请求,在现在版本里的已经是稳定可用的模式
  • 它和worker模式很像,最大的区别在于,它解决了keepalive场景下长期被占用的线程的资源浪费问题(某些线程因为被keepalive,空挂在哪里等待,中间几乎没有请求过来,甚至等到超时)
    event MPM中,会有一个专门的线程来管理这些keepalive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放。这样增强了高并发场景下的请求处理能力

缺点:没有线程安全控制
优点:单线程响应多请求,占据更少的内存,高并发下表现更优秀,会有一个专门的线程来管理keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务线程,执行完毕后,又允许它释放

1.1.2 Nginx-高性能的 Web 服务端

  • 基于Nginx的工作场景:
    在这里插入图片描述

2 Nginx架构与安装

2.1 Nginx概述

2.1.1 Nginx 功能介绍

  • 静态的web资源服务器html,图片,js,css,txt等静态资源
  • http/https协议的反向代理
  • 结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求
  • tcp/udp协议的请求转发(反向代理)
  • imap4/pop3协议的反向代理

2.1.2 基础特性

  • 模块化设计,较好的扩展性
  • 高可靠性
  • 支持热部署:不停机更新配置文件,升级版本,更换日志文件
  • 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
  • event-driven,aio,mmap,sendfile

2.1.3 Web 服务相关的功能

  • 虚拟主机(server)
  • 支持 keep-alive 和管道连接(利用一个连接做多次请求)
  • 访问日志(支持基于日志缓冲提高其性能)
  • url rewirte
  • 路径别名
  • 基于IP及用户的访问控制
  • 支持速率限制及并发数限制
  • 重新配置和在线升级而无须中断客户的工作进程

2.2 Nginx 架构和进程

2.2.1 架构

在这里插入图片描述

2.2.2 Ngnix进程结构

(1)web请求处理机制

  • 多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,直到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务器资源耗尽而无法提供请求
  • 多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个线程和此客户端进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器对系统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可以相互访问同样的内存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作了,IIS服务器使用了多线程的方式,需要间隔一段时间就重启一次才能稳定。

(2)Nginx是多进程组织模型,而且是一个由Master主进程和Worker工作进程组成。

#主进程(master process)的功能:
- 对外接口:接收外部的操作(信号)
- 对内转发:根据外部的操作的不同,通过信号管理 Worker
- 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
- 读取Nginx 配置文件并验证其有效性和正确性
- 建立、绑定和关闭socket连接
- 按照配置生成、管理和结束工作进程
- 接受外界指令,比如重启、升级及退出服务器等指令
- 不中断服务,实现平滑升级,重启服务并应用新的配置
- 开启日志文件,获取文件描述符
- 不中断服务,实现平滑升级,升级失败进行回滚处理
- 编译和处理perl脚本
#工作进程(worker process)的功能:
- 所有 Worker 进程都是平等的
- 实际处理:网络请求,由 Worker 进程处理
- Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争
- CPU资源
- 增加上下文切换的损耗
- 接受处理客户的请求
- 将请求依次送入各个功能模块进行处理
- I/O调用,获取响应数据
- 与后端服务器通信,接收后端服务器的处理结果
- 缓存数据,访问缓存索引,查询和调用缓存数据
- 发送请求结果,响应客户的请求
- 接收主程序指令,比如重启、升级和退出等

2.3 Nginx 模块介绍

nginx 有多种模块

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能
  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如: Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
    邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持
  • Stream服务模块: 实现反向代理功能,包括TCP协议代理
  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

2.4 Nginx安装

2.4.1 安装方式

  • 源码编译安装(这里使用源码安装)(可以自定义安装相关内容)
  • yum安装(yum安装版本比较旧)
实验环境
1.一台虚拟机,内存4g,存储40g(大一点没事)
2.网络正常
3.有软件仓库
4.关闭防火墙和selinux

2.4.2 源码编译安装

(1)首先安装需要的编译软件

[root@nginx ~]# dnf install gcc pcre-devel zlib-devel openssl-devel -y

(2)导入并解压
首先导入压缩包(也可以直接拉取链接直接下载),解压(可以解压到指定目录),解压后创建用户
在这里插入图片描述
(3)环境检测
在这里插入图片描述
(4)编译

[root@nginx nginx-1.24.0]# make && make install

(5)完成后查看
在这里插入图片描述
安装完成后有四个目录

conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有一个样板配置文件,是以.default为后缀,使用时可将其复制并将default后缀去掉即可。
html:目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

(6)验证版本并编辑参数
在这里插入图片描述
(7)启动nginx服务
在这里插入图片描述
网页访问,表示启动成功
在这里插入图片描述

2.4.3 平滑升级和回滚

有时候我们需要对Nginx版本进行升级以满足对其功能的需求,例如添加新模块,需要新功能,而此时Nginx又在跑着业务无法停掉,这时我们就可能选择平滑升级

平滑升级
(1)原理

  • 将旧Nginx二进制文件换成新Nginx程序文件(注意先备份)
  • 向master进程发送USR2信号
  • master进程修改pid文件名加上后缀.oldbin,成为nginx.pid.oldbin
  • master进程用新Nginx文件启动,新master进程成为旧master的子进程,系统中将有新旧两个Nginx主进程共同提供Web服务,当前新的请求仍然由旧Nginx的worker进程进行处理,将新生成的master进程的PID存放至新生成的pid文件nginx.pid
  • 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止
  • 向旧master进程发送QUIT信号,关闭老master,并删除Nginx.pid.oldbin文件
  • 如果发现升级有问题,可以回滚∶向老master发送HUP,向新master发送QUIT

(2)示例
1.解压新版本
在这里插入图片描述
2.检测
在这里插入图片描述
3.make,不用make install

[root@nginx nginx-1.26.1]# make

4.查看两个版本
在这里插入图片描述
5.备份老版本
在这里插入图片描述
6.复制新版本到指定目录

[root@nginx sbin]#  \cp -f /root/nginx-1.26.1/objs/nginx /usr/local/nginx/sbin

7.检测
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版本回滚
(1)进行新版本的启动文件备份
在这里插入图片描述
(2)切换到老版本
在这里插入图片描述
(3)回滚
在这里插入图片描述

3 Nginx核心配置

3.1 配置文件说明

Nginx配置文件的组成部分:
a.主配置文件:nginx.conf
b.子配置文件: include conf.d/*.conf
c.fastcgi, uwsgi,scgi 等协议相关的配置文件
d.mime.types:支持的mime类型,MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,MIME消息能包含文本、图像、音频、视频以及其他应用程序专用的数据,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

3.2 主配置文件结构

a. main block #主配置段
b. event{} #事件驱动相关配置
c. http{} #http/https协议相关配置段
d. mail #协议相关配置段和stream服务器相关配置段

3.3 核心配置示例

3.3.1 新建一个PC web站点

(1)相关配置(server和{之间需要空格,排错两小时崩溃了)
在这里插入图片描述

#在这个配置文件里面添加一条代码
vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

(2)结果演示

#这里我在自己windows上做的解析,是在自己电脑的这个目录底下,一个hosts文件里面做解析。
C:\Windows\System32\drivers\etc

访问成功
在这里插入图片描述

3.3.2 root和alias

1.root

  • root:指定web的家目录,在定义location的时候,文件的绝对路径等于 root+location
    (1)配置
    在这里插入图片描述
    保存退出并重启nginx
    (2)测试
    在这里插入图片描述

2.alias
(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述
测试成功

3.3.3 Location

  • 在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;
  • ngnix会根据用户请求的URI来检查定义的所有location,按一定的优先级找出一个最佳匹配,而后应用其配置在没有使用正则表达式的时候,nginx会先在server中的多个location选取匹配度最高的一个uri
  • uri是用户请求的字符串,即域名后面的web文件路径,然后使用该location模块中的正则url和字符串,如果匹配成功就结束搜索,并使用此location处理此请求。
#语法规则:
location [ = | ~ | ~* | ^~ ] uri { ... }= #用于标准uri前,需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止向下匹配并立
即处理请求
^~ #用于标准uri前,表示包含正则表达式,并且匹配以指定的正则表达式开头
#对uri的最左边部分做匹配检查,不区分字符大小写
~ #用于标准uri前,表示包含正则表达式,并且区分大小写
~* #用于标准uri前,表示包含正则表达式,并且不区分大写
不带符号 #匹配起始于此uri的所有的uri
\ #用于标准uri前,表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号#匹配优先级从高到低:
=, ^~, ~/~*, 不带符号

(1)配置+测试
在这里插入图片描述

在这里插入图片描述
测试
在这里插入图片描述
讲web2放在最后
在这里插入图片描述
重启测试
在这里插入图片描述
在这里插入图片描述
接着测试
在这里插入图片描述
按照这个思路测试的最后优先级同上边总结一致

3.3.4 账户认证

(1)创建默认认证文件
在这里插入图片描述
(2)修改配置文件,加认证
在这里插入图片描述
(3)测试,登录,用注册的用户
在这里插入图片描述
(4)登录完成后
在这里插入图片描述

3.3.5 自定义错误界面

(1)配置
在这里插入图片描述
在这里插入图片描述

(2)测试
在这里插入图片描述

3.3.6 自定义错误日志

(1)配置
在这里插入图片描述
在这里插入图片描述

(2)测试
在这里插入图片描述

3.3.7 制作下载文件

(1)配置
在这里插入图片描述
在这里插入图片描述

(2)测试
在这里插入图片描述
可以点击liufile下载

4 Nginx高级配置

4.1 状态页

(1)配置
在这里插入图片描述

在这里插入图片描述

(2)测试
在这里插入图片描述

4.2 压缩功能

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述

4.3 变量使用

(1)配置
在这里插入图片描述

(2)测试
这台虚拟机需要做解析

vim /etc/hosts

在这里插入图片描述

5 Nginx的Rewrite相关功能

  • Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求
  • 此功能依靠 PCRE(perl compatible regular expression),因此编译之前要安装PCRE库
  • rewrite是nginx服务器的重要功能之一,用于实现URL的重写,URL的重写是非常有用的功能
  • 比如它可以在我们改变网站结构之后,不需要客户端修改原来的书签,也无需其他网站修改我们的链接,就可以设置为访问
  • 另外还可以在一定程度上提高网站的安全性。

5.1 if判定

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述

5.2 break

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述

5.3 return

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述

5.4 rewrite

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述

6 Nginx反向代理

实验环境:三台虚拟机,一台nginx服务器,两台webserver,其中两台webserver做apache。

在这里插入图片描述

  • 反向代理:reverse proxy,指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

访问逻辑图:
在这里插入图片描述

同构代理:用户不需要其他程序的参与,直接通过http协议或者tcp协议访问后端服务器
异构代理:用户访问的资源时需要经过处理后才能返回的,比如php,python,等等,这种访问资源需要经过处理才能被访问

6.1 实现http反向代理

官方文档: https://nginx.org/en/docs/http/ngx_http_proxy_module.html

6.1.1

(1)配置
在这里插入图片描述
在这里插入图片描述
在webserver2上
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)测试
在这里插入图片描述
在这里插入图片描述

6.1.2 动静分离

(1)配置
在webserver1中做php
在这里插入图片描述

在这里插入图片描述
(2)测试
在这里插入图片描述

6.1.3 http反向代理负载均衡

(1)配置
在这里插入图片描述

(2)测试
在这里插入图片描述
关闭两个http服务,测试backup在这里插入图片描述
测试成功

6.2 实现FastCGI

6.2.1 配置nginx

删掉之前的nginx,接着导入
在这里插入图片描述
解压后进入到nginx1.26.1中进行编译,编译完进行make和make install

#编译语句
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd

6.2.2 php配置

(1)配置
在编译之前需要安装相应的软件依赖

yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel

遇见下载不到的就搜索,没有的就在阿里云镜像站的软件包栏目下去找。

dnf search 软件包
找到就下载x86结构的

在这里插入图片描述
编译完成
接着

make && make install

6.2.3 php配置优化

(1)配置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6.2.4 测试页面

(1)配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(2)测试
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527502.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理

前言 在模型推理时,需要使用GPU加速,相关的CUDA和CUDNN安装好后,通过onnxruntime-gpu实现。 直接运行python程序是正常使用GPU的,如果使用PyInstaller将.py文件打包为.exe,发现只能使用CPU推理了。 本文分析这个问题…

流媒体与直播的基础理论(其一)

欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力 文章目录 一、流媒体简介二、流媒体协议常见的流媒体协议 三、视频直播原理与流程通用的视频直播模型视频直播链路 一、流媒体简介…

隐私计算实训营:联邦学习在垂直场景的开发实践

纵向联邦学习 纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据,通过共有样本数据进行安全联合建模,在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比,纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和…

Openharmony 下载到rk3568实现横屏

前言: Openharmony 源码版本4.1 release 板子:rk3568 1.修改“abilities”中的“orientation”实现横竖屏 entyr->src->module.json5文件里面添加 "orientation": "landscape", 2.修改系统源码属性实现横竖屏切换 通过这…

以太网--TCP/IP协议(二)

上文中讲述了IP协议,本文主要来讲一下TCP协议。 TCP协议 (1)端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中,就是端到端通信。 (2)传输层端口 公认端口&#xff0…

ansible--role

简介 roles是ansible,playbooks的目录的组织结构,将代码或文件进行模块化,成为roles的文件目录组织结构。 易读,代码可冲哟美好,层次清晰 目录机构 mkdir roles/nginx/{files,handlers,tasks,templates,vars} -ptou…

Google Play结算防掉单方案

我们公司的产品主要是出海产品,使用的是Google Play支付,但是在上线以后,经常有客诉,说支付以后,权益没有到账,于是对整个Google支付体系做了研究了一下。 我们的整个支付流程图大概如下: 其中后端参考的文档地址为: https://developers.google.com/android-publishe…

GB35114 USC安防平台 中星微国密摄像机配置 流程

中星微国密摄像机配置介绍 如下以中星微VS-IPC8021S-Y-T4摄像机为例,需要先各自获取p10文件,并通过证书签发机构或者测试SM2证书签发获取证书。 网络配置如下: 摄像机的IP地址为192.168.1.108,国标ID为34020000001320000015 系统的IP地址…

C#/.NET/.NET Core推荐学习路线文档文章

前言 专门为C#/.NET/.NET Core推荐学习路线&文档&文章提供的一个Issues,各位小伙伴可以把自己觉得不错的学习路线、文档、文章相关地址分享出来🤞。 https://github.com/YSGStudyHards/DotNetGuide/issues/10 🏷️C#/.NET/.NET Cor…

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 FeatureExtraction 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(calculateSmoothness())2. 标记遮挡点(markOcc…

nvm及nodejs安装相关

安装 1.清空文件夹,卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases (也下载有) 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本 nvm install 16.20.2 //安装对应版…

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关 项目合作管理相关 后话 前…

idea快捷键_idea 2024 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备)

Ctrl G 在当前文件跳转到指定行处 Ctrl J 插入自定义动态代码模板 (必备) Ctrl P 方法参数提示显示 (必备) Ctrl Q 光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文…

基于SpringBoot的校园跑腿系统+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

tabBar设置底部菜单以及选项iconfont图标

1.tabBar设置底部菜单 在官网里面可以了解到tabBar组件的一些知识和注意点: 需要给页面设置一个底部导航的话可以在pages.json里面设置一个tabBar标签,在其里面设置pagePath和text属性。 可以看的pagePath是跳转的地址,text是下面导航的文字…

DataLoader使用

文章目录 一、认识dataloader二、DataLoader整合数据集三、使用DataLoader展示图片方法四、去除结尾不满足batch_size设值图片的展示 一、认识dataloader DataLoader 用于封装数据集,并提供批量加载数据的迭代器。它支持自动打乱数据、多线程数据加载等功能。datas…

SpringDataJPA系列(7)Jackson注解在实体中应用

SpringDataJPA系列(7)Jackson注解在实体中应用 常用的Jackson注解 Springboot中默认集成的是Jackson,我们可以在jackson依赖包下看到Jackson有多个注解 一般常用的有下面这些: 一个实体的示例 测试方法如下: 按照上述图片中的序号做个简…

汽车网络安全的未来:将车辆视为端点

汽车行业面临着许多与其他行业的成功企业相同的网络安全风险和威胁,但它也在应对一些独特的风险和威胁。 Nuspire 的首席威胁分析师 Josh Smith(一家在汽车领域有着深厚根基并保护通用汽车和斯巴鲁等客户的托管安全服务提供商)谈到了当前的风…

多个路由器级联实现子网的方式

好久没写博客啦,最近搬家,换了网络环境,简单记录一下网络配置。 拓扑图就不画了,光猫 - > 华为TC7102路由 -> 华为AX2 Pro路由 -> 各种设备,简单表示就是这样。 原因是第一个路由是房东的,我希望自…

Lombok jar包引入和用法

大家好,今天分享一个在编写代码时的快捷方法。 当我们在封装实体类时,会使用set、get等一些方法。如下图,不但费事还影响代码的美观。 那么如何才能减少代码的冗余呢,首先lib中导入lombok的jar包并添加库。 此处我已导入&#xf…