Web---http、Nginx

news2024/10/9 7:20:46

文章目录

  • Web---http/Nginx
    • http
      • html网页文件基本格式
      • 静态网页和动态网页的区别
      • http协议
        • http协议版本
        • 请求方法
        • 响应状态码
        • 请求报文
        • 响应报文
    • Ngnix
      • Apache和Nginx区别
      • nginx 进程
      • 最大并发如何设置
      • 页面跳转
        • location
          • root(根目录配置)
          • alias(别名目录配置)
        • rewrite
          • 格式
          • rewrite重写后访问过程
          • 匹配URL路径的方式:
      • 访问状态统计
      • 访问认证
      • 访问控制
      • 网站虚拟主机
        • 基于域名的虚拟主机
        • 基于IP的虚拟主机
        • 基于端口的虚拟主机
      • 应用场景
      • yum安装Nginx
      • 编译安装Nginx
      • nginx优化
        • 配置文件优化
          • 性能优化
          • 连接优化
          • 安全优化
        • 系统内核优化
            • /etc/security/limits.conf 内核资源限制文件
            • /etc/sysctl.conf 内核参数配置文件
      • nginx模块
      • 代理
        • 反向代理类型
          • 七层反向代理
          • 四层反向代理
      • 负载均衡调度策略
        • 配置
        • nginx做负载均衡如何实现会话保持?
      • 限流
        • 限流有3种
        • Nginx的限流都是基于漏桶流算法
        • 实现三种限流算法

Web—http/Nginx

http

访问网站:通过网站的IP地址访问,也可以用域名访问(因为IP地址不易记忆)

域名结构: 主机名.子域.二级域.顶级域.
(根域)

域名解析: 先使用本地的 hosts 文件,如果没有相关记录再使用 DNS 解析

DNS解析过程: 客户端 -> 本地域名服务器 -> 根域名服务器 -> 顶级域名服务器 -> 二级域名/子域名服务器 -> 根据主机名解析出IP (查询方式:递归查询、迭代查询)

网页文件 html文件(文件名后缀通常以 .html 或 .htm 结尾)

html网页文件基本格式

<html>

<head>                         #网页的标题部分
<title>.....</title>
</head>

<body>                        #网页的内容部分

<p>......</p>              #整行内容

</br>                      #换行
<img src="图片路径" />     #插入图片
</body>
</html>

静态网页和动态网页的区别

静态网页:就是 标准的HTML网页,网页文件后缀通常以 .html .htm .shtml 等结尾。没有后台数据库支持,不包含任何应用程序,网页不可交互,网页URL路径中不含有 ?

动态页面:有后台数据库支持,网页可交互,也可以自动更新,网页内容会包含用 php java python 等高级编程语言编写的应用程序,网页URL路径中会含有 ? 用于传参

http协议

http协议版本

http1.0 只支持短连接(在一个TCP连接中只能完成一次http请求和响应过程)
http1.1 支持长连接(连接保持、持久连接)和管道机制,即支持在一个TCP连接中可完成多次http请求和响应,且要求按照顺序一一对应
http2.0 支持长连接和多路复用,即支持在一个TCP连接中可完成多次http请求和响应,且不用按照顺序一一对应;还支持网页头部压缩和服务端主动推送;使用二进制格式代替文本格式
http3.0 基于UDP协议实现。具有更高的传输效率

请求方法

GET 发送查询资源请求,用于查询、读取、下载资源内容
PUT 向服务器提交资源,用于修改资源内容
POST 向服务器提交资源,用于添加资源内容
DELETE 用于删除资源内容
HEAD 用于查询网页的头部信息和元数据

响应状态码

正常的响应状态码 1XX(提示信息) 2XX(正常处理) 3XX(重定向)
异常的响应状态码 4XX(客户端请求错误) 5XX(服务器请求错误)

200 一切正常
301 永久重定向
302 临时重定向
400 客户端请求的语法错误或格式不正确
401 客户端认证失败,通常是因为提供的账号密码错误
403 客户端请求被拒绝,通常是因为没有权限访问
404 客户端请求的文件不存在,通常是因为客户端请求的路径有误
500 服务器内部错误,通常是因为服务器程序错误、配置问题或资源不足导致
502 无效网关,通常是因为网关代理服务器收到后端上游服务器返回的无效响应消息导致
503 服务可不用,通常是因为临时的服务器维护或者过载,服务器当前无法处理请求导致
504 网关超时,通常是因为网关代理服务器收到后端上游服务器未在规定时间内返回响应消息导致

请求报文

请求行 包含请求方法、请求的URL路径、http协议版本
请求头 键值对类型的元数据信息
请求体 包含向服务器提交的数据

响应报文

响应行 包含http协议版本、响应状态码和描述
响应头 键值对类型的元数据信息
响应体 包含服务器返回的网页数据

Ngnix

Apache和Nginx区别

最核心的区别在于

nginx 采用的是 异步非阻塞机制,一个进程可以同时处理多个连接;

apache 采用的是 同步阻塞+多进程/多线程模型,一个进程只能同时处理一个连接

nginx 抗并发能力更高(处理 2-3 万并发连接数,最高能支持 5 万并发);

更轻量; CPU、内存资源消耗更少;

配置简洁,使用场景多,性能稳定

nginx 进程

master进程:管理worker进程,加载配置文件
worker进程:处理连接请求

最大并发如何设置

nginx应用程序配置   nginx.conf    worker_processes(设置工作进程数,一般为与CPU数量相同或auto)    worker_connections(每个worker进程能够处理的连接数)
                                  worker_rlimit_nofile(设置每个worker进程最大可以打开的文件数)

linux操作系统配置   ulimit -SHn  65535                                            #指定进程能够打开的文件数
                    /etc/security/limits.conf      *   soft    nofile   65535
  												   *   hard    nofile   65535

页面跳转

location

匹配用户访问请求的URL路径(优先最长匹配),跳转页面

root(根目录配置)

location /abc {
root /var/www;
}
处理方式:root路径 追加 location路径 http://192.168.80.20/abc/xy103/test.html --> /var/www/abc/xy103/test.html

location /abc/xy103 {
root /var/www;
}
http://192.168.80.20/abc/xy103/test.html --> /var/www/abc/xy103/test.html

alias(别名目录配置)

location /abc {
alias /var/www;
}
处理方式:alias路径 替换 location路径 http://192.168.80.20/abc/xy103/test.html --> /var/www/xy103/test.html

location /abc/xy103 {
alias /var/www;
}
http://192.168.80.20/abc/xy103/test.html --> /var/www/test.html

rewrite

地址重写调转页面

格式
rewrite  正则表达式   重写的地址   标记位;
                                   last  break  permanent  redirect

rewrite默认情况下只对从域名后面的根目录 / 开始到传递参数的 ? 号前面的URL路径进行重写

rewrite ^/ /新URL地址; http://域名/旧URL地址 --> http://域名/新URL地址 #默认只对域名后的URL地址重写
rewrite ^/ http://新域名/新URL地址; http://旧域名/旧URL地址 --> http://新域名/新URL地址 #如果要全路径重写,需要加上协议和新的域名
rewrite ^/(.*)$ http://新域名/$1; http://旧域名/旧URL地址 --> http://新域名/旧URL地址 #仅对域名进行重写,URL路径不变

rewrite ^/ /新URL地址 permanent; #重写后会修改浏览器地址栏再重新访问

rewrite重写后访问过程

rewrite 正则表达式 /新URL地址;
http://域名/旧URL 重写成 http://域名/新URL 后直接在nginx内部匹配相关配置跳转页面

rewrite 正则表达式 /新URL地址 permanent;
http://域名/旧URL 重写成 http://域名/新URL 浏览器地址栏也会改为 http://域名/新URL 并再次发送访问请求给nginx --> 重新匹配nginx相关配置跳转页面

注:如果rewrite配置不当可能会导致死循环
if (KaTeX parse error: Expected '}', got 'EOF' at end of input: … rewrite ^/(.*) http://www.xy103.com/$1 permanent;
}
此时 http://www.xy103.com 访问任何网页都会访问出错

匹配URL路径的方式:
location ~ URL访问路径正则表达式 {
    rewrite ....   ;
}
if ($uri ~ URL访问路径正则表达式) {
    rewrite ....   ;
}

访问状态统计

1)安装nginx时添加状态统计模块 ./configure --with-http_stub_status_module
2)修改nginx配置文件,开启状态统计功能  stub_status on;     access_log off;
3)测试验证 curl -s  ....

访问认证

1)安装 httpd-tools 工具,使用 htpasswd 生成用户密码文件,并修改文件的归属为nginx和权限为400
2)修改nginx配置文件,添加 auth_basic  和  auth_basic_user_file 配置
3)使用浏览器测试验证 

访问控制

在 http{} 配置块(对所有站点生效) server{} 配置块(对当前的server站点的所有访问路径生效) location{} 配置块(只对当前的server站点的指定URL访问路径生效) 中添加配置

allow IP或网段; #允许指定的IP或网段访问
deny IP或网段; #拒绝指定的IP或网段访问

黑名单配置: deny IP或网段;

白名单配置: allow IP或网段;
deny all;

网站虚拟主机

可实现在一个服务器上部署多个网站站点,充分利用服务器的硬件资源

基于域名的虚拟主机
server {
    server_name  XXX;               #在不同的server配置块中设置不同的域名
}
基于IP的虚拟主机
server {
    listen  <IP>:端口;              #在不同的server配置块中设置不同的监听IP地址
}
基于端口的虚拟主机
server {
    listen IP:<端口>;               #在不同的server配置块中设置不同的监听端口
}

应用场景

  • 用作web网站服务,处理静态网页请求
  • 用做虚拟主机,实现在一个服务器上部署多个网站站点
  • 用作反向代理、负载均衡,可作为网关代理服务器接受客户端的请求再转发给后端上游服务器处理
  • 用作web缓存服务器,缓存经常被访问的静态网页资源

yum安装Nginx

配置yum源
cd /etc/yum.repos.d

将所有源移入备份文件bak

将nginx源移入
nginx.repo

保证能ping通网络
ping www.baidu.com

yum安装nginx
yum install -y nginx

开启服务
systemctl start nginx

查看端口
netstat -lntp | grep nginx

nginx -v   # 显示版本号

nginx -V   # 显示版本号、详细参数

编译安装Nginx

本机浏览器搜索https://nginx.org/en/download.html
此处下载了 nginx-1.26.2.tar.gz

将安装nginx所需软件包传到/opt目录下
cd /opt
nginx-1.26.2.tar.gz

解压
tar xf nginx-1.26.2.tar.gz

使用本地yum源安装依赖包
yum install -y pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

创建运行用户
useradd -M -s /sbin/nologin nginx

编译安装
cd /opt/nginx-1.26.2/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

make -j 2
make install

优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx优化

配置文件优化
性能优化

开启网页压缩 gzip on;
网页缓存 expires 缓存时间;
连接保持超时 keepalive_timeout 服务端超时时间 客户端超时时间;
连接保持最大请求次数 keepalive_requests
工作进程数 worker_processes(与服务器CPU数量相同或auto)
工作进程连接数 worker_connections
工作进程打开文件数 worker_rlimit_nofile
工作进程静态绑核 worker_cpu_affinity
IO多路复用模型 use epoll;

启用内核复制模式(可用于提高文件下载传输效率) sendfile on; tcp_nopush on; tcp_nodelay;

连接优化

multi_accept on;(让工作进程可以尽可能多的接收连接请求) accept_mutex on;(以串行方式接入新连接,防止惊群问题)

安全优化

隐藏版本号 server_tokens off;
防盗链 先用valid_referers设置信任的跳转路径,再用if($invalid_referer)对不信任的跳转来的路径进行rewrite地址重写或直接return返回403页面
访问控制 通过脚本分析访问日志,使用 deny 攻击主机的IP 设置加入黑名单进行访问控制
设置运行用户/组(对网站文件读取时使用专用账户进行访问控制) user 用户名 组名;
限制连接数 limit_conn_zone limit_conn
限制请求速率 limit_req_zone limit_req

系统内核优化
/etc/security/limits.conf 内核资源限制文件
  • soft nofile 65535 #进程打开文件数 ulimit -n
  • hard nofile 65535
  • soft nproc 65535 #打开的系统进程数 ulimit -u
  • hard nproc 65535
/etc/sysctl.conf 内核参数配置文件

#解决TIME_WAIT数量过多问题
net.ipv4.tcp_tw_reuse=1 开启TIME_WAIT连接重用于新的TCP连接
net.ipv4.tcp_tw_recycle=1 开启TIME_WAIT连接快速回收,已废弃,高版本的内核此参数可能会导致连接问题
net.ipv4.tcp_max_tw_buckets=5000 设置系统可以处理的TIME WAIT连接的最大数量,默认值为16384
net.ipv4.tcp_fin_timeout=30 设置系统TCP连接关闭的超时时间(MSL),默认值为60,减少等待关闭连接的时间,尽快释放系统资源

#进一步优化本地的可用端口范围,提升服务器的并发能力,还能适当预防syn flood攻击
net.ipv4.ip_local_port_range=1024 65535 设置系统用于向外连接的本地端口范围,默认情况下范围很小,为32768 60999
net.ipv4.tcp_keepalive_time=1200 设置发送keepalive探测包确认客户端是否断网的间隔时间,默认值为7200秒

net.ipv4.tcp_max_syn_backlog=32768 设置系统能接受的tcp半连接状态的最大队列长度,TCP三次握手建立阶段接受SYN请求队列的最大长度,默认值为128
net.core.netdev_max_backlog=16384 设置网络接口接收数据包的最大队列长度,默认值为1000
net.core.somaxconn=16384 设置系统中每个端口允许的最大监听队列长度,默认值为128,需要配合Nginx的配置才能生效 listen 80 backlog=16384;

net.ipv4.tcp_syncookies=1 开启SYN Cookies功能,可以适当预防syn flood攻击
net.ipv4.tcp_synack_retries=2 设置发起syn+ack的最大重试次数,默认为5,可以适当预防syn flood攻击

net.ipv4.ip_forward=1 开启IP数据包转发功能

nginx模块

http_stub_status_module 访问状态统计模块
http_rewrite_module URL地址重写模块
http_gzip_module 网页压缩模块
http_ssl_module https安全加密模块
http_access_module 访问控制模块
http_cache_module web网页缓存模块
http_proxy_module 代理转发模块
http_upstream_module 负载均衡模块
http_limit_conn_module 限制连接数模块
http_limit_req_module 限制请求速率模块

代理

服务端和客户端之间架设的一层服务器。代理负责接收客户端的请求并将它转发给服务端,然后再将服务端返回的响应转发给客户端。

正向代理:为客户端服务的,客户端可以根据正向代理访问到它本身无法访问到的服务器资源。

反向代理:为服务端服务的,反向代理可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发,负载均衡等。

nginx负载均衡:通过反向代理实现的,可以将nginx反向代理服务器接收到的请求根据调度策略转发给多个后端应用服务器处理。

nginx动静分离:通过location匹配用户的访问路径来判断是静态资源请求还是动态资源请求。静态资源请求就由nginx自行处理并响应,动态资源请求则通过反向代理转发请求给后端应用服务器处理。

反向代理类型
七层反向代理

基于http https等七层应用协议的代理转发,可以根据用户请求访问的URL路径来转发请求,通常用于做 动静分离 等应用场景

配置

http {
	1)在 http 配置块中使用 upstream 定义后端应用服务器池的名称和各个节点的参数
    upstream 服务器池名称 {
        server IP1:PORT1 weight=1;
        server IP2:PORT2 weight=1;
        [调度策略;]
    }

	2)在 server 配置块中使用 location 匹配用户请求的动态资源的URL路径,在 location 配置块里使用 proxy_pass 基于协议配置转发
    server {
	    listen 
        server_name
        .....
        location ~ .*\.jsp$ {
		    proxy_pass http://服务器池名称;
			 

        #还可以添加一些转发参数,用于为后端服务器获取真实的客户端地址
        proxy_set_header HOST $host;		
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    }		
    }
}
四层反向代理

基于IP 端口实现的代理转发,可以根据用户请求的IP或端口来转发请求,通常用于做 网络接入层的负载均衡器 等应用场景

1)编译安装nginx时需要添加 stream 四层代理模块  ./configure --with-stream

2)在 http 配置块上面同层级添加 stream 配置块,在 stream 配置块里添加 upstream 配置块,使用 upstream 定义后端应用服务器池的名称和各个节点的参数
stream {
    upstream 服务器池名称 {
	    server IP1:PORT1 weight=1;
        server IP2:PORT2 weight=1;
        [调度策略;]
	}
	
3)在 stream 配置块里添加 server 配置块,在 server 配置块里使用 listen 定义监听地址和端口,使用 proxy_pass 配置转发
    server {
	    listen  IP:PORT;
        proxy_pass 服务器池名称;
	}
}

http {....}

四层反向代理 比 七层反向代理 转发性能更高;
七层反向代理 比 四层反向代理 转发功能更多、更灵活

负载均衡调度策略

(调度算法、调度模式、负载均衡模式)

轮询                     是nginx默认调度策略,按照时间顺序逐一分配请求
加权轮询                 使用weight参数设置权重,权重值越高的后端节点被分配请求的概率越大
least_conn(最少连接)     优先将请求分配给当前连接数最少的后端节点
ip_hash                  根据客户端IP做hash缓存调度,会将来自同一个IP的请求都分配给固定的一个后端节点
url_hash                 根据客户端请求的URL路径做hash缓存调度,会将相同的URL路径的请求都分配给固定的一个后端节点。需要第三方插件模块支持
fair                     优先将请求给给响应时间最少的后端节点。需要第三方插件模块支持

random                   随机分配请求
hash $remote_addr consistent     一致性hash算法,根据nginx全局变量的值来做hash缓存调度
配置
upstream 服务器池名称 {
    server IP1:PORT1   weight=权重  max_fails=最大的失败次数  fail_timeout=暂时服务的时间;
	.....
	least_conn;/ip_hash;/fair;/hash $request_uri;/random;
}
nginx做负载均衡如何实现会话保持?
1)ip_hash    url_hash    hash $remote_addr consistent        基于客户端IP或请求的URL路径将请求发送到同一个后端节点服务器来实现会话保持,但是此法容易出现负载失衡问题

2)sticky_cookie_insert                基于cookie判断实现会话保持
upstream backend {
    server IP1:PORT1;
    server IP2:PORT2;
    sticky;  #可选参数:domain=www.xy103.com(设置cookie作用的域名)  expires=1h(设置cookie的生存期,默认不设置,浏览器关闭即失效)  path=/(设置cookie作用的URL路径,默认根目录)
}

3)通过后端应用服务器自身机制,配合使用缓存数据库(redis、memcached等)为后端节点服务器做session同步复制实现会话保持

限流

Nginx限流就是限制用户请求速度,防止服务器受不了

限流有3种
  1. 正常限制访问频率(正常流量)
  2. 突发限制访问频率(突发流量)
  3. 限制并发连接数
Nginx的限流都是基于漏桶流算法
实现三种限流算法
  1. 正常限制访问频率(正常流量)
    限制一个用户发送的请求,我Nginx多久接收一个请求。
    Nginx中使用ngx_http_limit_req_module模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。在nginx.conf配置文件中可以使用limit_req_zone命令及limit_req命令限制单个IP的请求处理频率。

    • 定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;

    • 绑定限流维度
    server{
    
    	location/seckill.html{
        	limit_req zone=zone;
       		proxy_pass http://lj_seckill;
    	}
    
    }
    

    1r/s代表1秒一个请求,1r/m一分钟接收一个请求, 如果Nginx这时还有别人的请求没有处理完,Nginx就会拒绝处理该用户请求。

  2. 突发限制访问频率(突发流量):
    限制一个用户发送的请求,我Nginx多久接收一个。
    上面的配置一定程度可以限制访问频率,但是也存在着一个问题:如果突发流量超出请求被拒绝处理,无法处理活动时候的突发流量,这时候应该如何进一步处理呢?
    Nginx提供burst参数结合nodelay参数可以解决流量突发的问题,可以设置能处理的超过设置的请求数外能额外处理的请求数。我们可以将之前的例子添加burst参数以及nodelay参数:

    • 定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉

    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;

    • 绑定限流维度
    server{
    
    	location/seckill.html{
        	limit_req zone=zone burst=5 nodelay;
        	proxy_pass http://lj_seckill;
    	}
    
    }
    

    为什么就多了一个 burst=5 nodelay; 呢,多了这个可以代表Nginx对于一个用户的请求会立即处理前五个,多余的就慢慢来落,没有其他用户的请求我就处理你的,有其他的请求的话我Nginx就漏掉不接受你的请求

  3. 限制并发连接数
    Nginx中的ngx_http_limit_conn_module模块提供了限制并发连接数的功能,可以使用limit_conn_zone指令以及limit_conn执行进行配置。接下来我们可以通过一个简单的例子来看下:

    http {
        limit_conn_zone $binary_remote_addr zone=myip:10m;
        limit_conn_zone $server_name zone=myServerName:10m;
    }
    
    server {
        location / {
            limit_conn myip 10;
            limit_conn myServerName 100;
            rewrite / http://www.lijie.net permanent;
        }
    }
    

    上面配置了单个IP同时并发连接数最多只能10个连接,并且设置了整个虚拟服务器同时最大并发数最多只能100个链接

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

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

相关文章

代码随想录day22:回溯part4

491.递增子序列 class Solution {List<List<Integer>> result new ArrayList<>();List<Integer> path new ArrayList<>();public List<List<Integer>> findSubsequences(int[] nums) {backTracking(nums, 0);return result;}priv…

室内物品墙体脱落分割系统源码&数据集分享

室内物品墙体脱落分割系统源码&#xff06;数据集分享 [yolov8-seg-dyhead-DCNV3&#xff06;yolov8-seg-AFPN-P345等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI G…

计组与体系软题1-数据表示与校验码

一、数的编码方式 题1-0的表示 题2-补码的补码原码 1. 这道题涉及到数的编码范围和进制转换2. 题3-采用补码的目的 二、编码范围 题1-补码的表示范围(-2^(n-1)~2 ^(n-1)-1) n是字长/位数&#xff0c;2^7128&#xff0c;范围为-128~127题2-原码范围&#xff08;-2^&#xff0…

GNURadio 平台实现DSB信号调制解调实验

目录 一、DSB 信号调制解调原理 二、搭建的GRC流图 一、DSB 信号调制解调原理 1.调制原理 由于AM 信号载波信号占用很大的能量&#xff0c;但是不携带信息&#xff0c;不传递信息&#xff0c;直接去掉载波信号就得到了DSB信号。可见 DSB 信号与 AM 信号的不同之处是&#xff…

来了,使用YOLOv11目标检测教程

来了&#xff0c;使用YOLOv11目标检测教程 概述 YOLO11 在 2024 年 9 月 27 日的 YOLO Vision 2024 活动中宣布&#xff1a;https://www.youtube.com/watch?vrfI5vOo3-_A。 YOLO11 是 Ultralytics YOLO 系列的最新版本&#xff0c;结合了尖端的准确性、速度和效率&#xff…

【CPP】类与多态

目录 15 类与多态15.1 如何理解多态15.2 动态绑定15.3 虚函数及重写的生效方式15.4 动态多态的生效方式15.5 坑15.6 协变15.7 析构函数的重写15.8 CPP11新增关键字15.8.1 override15.8.2 final 15.8 纯虚函数与抽象类15.9 虚函数表指针和虚函数表15.9.1 粗看虚函数表指针和虚函…

List子接口

1.特点&#xff1a;有序&#xff0c;有下标&#xff0c;元素可以重复 2.方法&#xff1a;包含Collection中的所有方法&#xff0c;还包括自己的独有的方法&#xff08;API中查找&#xff09; 还有ListIterator&#xff08;迭代器&#xff09;&#xff0c;功能更强大。 包含更多…

一篇文章快速认识YOLO11 | 关键改进点 | 安装使用 | 模型训练和推理

前言 本文分享YOLO11的关键改进点、性能对比、安装使用、模型训练和推理等内容。 YOLO11 是 Ultralytics 最新的实时目标检测器&#xff0c;凭借更高的精度、速度和效率重新定义了可能性。 除了传统的目标检测外&#xff0c;YOLO11 还支持目标跟踪、实例分割、姿态估计、OBB…

ACM介绍

ACM介绍 1. ACM简介 ACM&#xff08;Association for Computing Machinery&#xff0c;国际计算机学会&#xff09;是世界上最大的计算机领域专业性学术组织&#xff0c;汇集了国际计算机领域教育家、研究人员、工业界人士及学生。ACM致力于提高在中国的活动的规格与影响力&a…

【微服务】—SpringBoot入门

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 文章目录 1 SpringBoot快速入门1.1 SpringBoot简介1.1.1 简介1.1.2…

新电脑 Windows 系统初始配置

文章目录 前言1 前置配置2 安装软件2.1 通讯工具2.2 后端开发工具2.3 硬件开发工具2.4 前端开发工具2.4 其它工具 3 Windows 11 优化4 写在最后 前言 分区&#xff08;个人习惯&#xff09;&#xff1a;1TB SSD 分为 2 个分区&#xff0c;一个 256GB 分区为系统盘&#xff0c;剩…

网络受限情况下安装openpyxl模块提示缺少Jdcal,et_xmlfile

1.工作需要处理关于Excel文件内容的东西 2.用公司提供的openpyxl模块总是提示缺少jdcal文件,因为网络管控,又没办法直接使用命令下载&#xff0c;所以网上找了资源&#xff0c;下载好后上传到个人资源里了 资源路径 openpyxl jdcal et_xmlfile 以上模块来源于&#xff1a;Py…

[已解决]Mac使用更改idea.vmoptions文件导致idea打不开

直接在访达中全局搜索 idea.vmoptions 文件&#xff0c;然后根据报错信息更改成默认的或者更改成默认的格式即可。

陪伴系统,会成为女性向游戏的下一个争夺点吗?

乙游提供给女性玩家的只有恋爱感吗&#xff1f; 一般来说&#xff0c;对于乙女游戏的概括常常以为玩家提供“恋爱陪伴感”为主&#xff0c;恋爱很好理解&#xff0c;通过与多位男主角的剧情互动来模拟在真实恋爱中的情感交互&#xff0c;当下乙游都将重点放在了营造恋爱感上。…

武汉正向科技|无人值守起重机,采用格雷母线定位系统,扎根智能制造工业

武汉正向科技开发的无人值守起重机系统在原起重机系统的基础上&#xff0c;利用格雷母线位置检测技术&#xff0c;信息技术&#xff0c;网络技术及传感器技术为起重机系统添加管理层&#xff0c;控制层和基础层。实现起重机智能化&#xff0c;无人化作业的库区综合管理系统。 正…

用AI构建小程序需要多久?效果如何?

随着移动互联网的快速发展&#xff0c;多端应用的需求日益增长。为了提高开发效率、降低成本并保证用户体验的一致性&#xff0c;前端跨端技术在如今的开发界使用已经非常普遍了&#xff0c;技术界较为常用的跨端技术有小程序技术、HTML5技术两大类。 2023年以来&#xff0c;伴…

antd-tree的半选回显,不联动父类节点,非严格模式下也可以

出现的问题&#xff0c;树节点在非严格模式下&#xff0c;如果回显&#xff0c;会自动选中父节点以下的所有节点 方案1 在请求回来前设置 check-strictly 为true,请求完成后&#xff0c;设置为 false&#xff0c;没生效 方案2 在请求回来回显的接口时&#xff0c;取没有childr…

[C++ 核心编程]笔记 1 内存分区模型

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域&#xff1a; 代码区: 存放函数体的二进制代码&#xff0c;由操作系统进行管理的。 全局区: 存放全局变量和静态变量以及常量。 栈区: 由编译器自动分配释放&#xff0c;存放函数的参数值、局部变量等。 堆…

Linux 之 Linux应用编程概念、文件IO、标准IO

Linux应用编程概念、文件IO、标准IO 学习任务&#xff1a; 1、 学习Linux 应用开发概念&#xff0c;什么是系统调用&#xff0c;什么是库函数 2、 学习文件IO&#xff1a;包括 read、write、open、close、lseek 3、 深入文件IO&#xff1a;错误处理、exit 等 4、 学习标准IO&a…

wsl环境下安装Ubuntu,并下载MySQL5.7

安装操作需root权限&#xff0c;切换root用户有两种方式&#xff1a; 1-通过 sudo su - &#xff0c;切换到root用户&#xff08;登录后长期有效&#xff09;。 2-在每一个命令前加上sudo&#xff0c;临时提升权限&#xff08;仅对一条命令有效&#xff09;。 1、下载apt仓库…