Nginx01-HTTP简介与Nginx简介(安装、命令介绍、目录介绍、配置文件介绍)

目录

  • HTTP简介
    • HTTP原理
    • 查看访问网站的详细流程
      • curl -v
      • wget --debug
    • 查看网站访问量
    • HTTP协议版本
    • HTTP协议交互
      • HTTP 请求
        • 请求报文起始行
        • 请求头
      • HTTP响应
        • 响应报文起始行
        • 响应头
  • Nginx
    • 常见的Web服务
      • 常见网站服务
    • 安装Nginx
    • Nginx目录结构
    • Nginx启动管理
      • Nginx常用命令
    • Nginx配置文件
      • 主配置文件
      • 子配置文件

HTTP简介

HTTP原理

  • WebServer为Client提供网页浏览等服务,又称HTTPServer或WWWServer。
  • HTTP采用B/S模型,Client和Server通过HTTP或HTTPS进行数据的传输。
  • HTTP采用TCP链接,HTTP默认监听80端口,HTTPS默认监听443端口。
  • HTTP的工作原理:
    1. 链接:Browser和WebServer建立链接,通过打开socket表明链接建立成功。
    2. 请求:Browser通过socket向WebServer提交请求,一般为HTTP的GET或POST。
    3. 应答:Server通过特定端口接收监听到的Web页面请求,若请求存在再通过HTTP发送Browser需要的信息;若请求不存在则返回错误提示。
    4. 关闭连接:每完成一次应答,就会断开一次链接。

查看访问网站的详细流程

curl -v

[root@front ~]# curl -v www.baidu.com
* Rebuilt URL to: www.baidu.com/
*   Trying 153.3.238.110...
* TCP_NODELAY set
* Connected to www.baidu.com (153.3.238.110) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Sun, 02 Jun 2024 12:25:56 GMT
< Etag: "588604eb-94d"
< Last-Modified: Mon, 23 Jan 2017 13:28:11 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必读</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a>&nbsp;京ICP证030173号&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
* Connection #0 to host www.baidu.com left intact

wget --debug

[root@front ~]# wget --debug www.baidu.com
DEBUG output created by Wget 1.19.5 on linux-gnu.

Reading HSTS entries from /root/.wget-hsts
URI encoding = ‘UTF-8’
Converted file name 'index.html' (UTF-8) -> 'index.html' (UTF-8)
--2024-06-02 20:28:06--  http://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... 153.3.238.110, 153.3.238.102, 2408:873d:22:18ac:0:ff:b021:1393, ...
Caching www.baidu.com => 153.3.238.110 153.3.238.102 2408:873d:22:18ac:0:ff:b021:1393 2408:873d:22:1a01:0:ff:b087:eecc
Connecting to www.baidu.com (www.baidu.com)|153.3.238.110|:80... connected.
Created socket 3.
Releasing 0x0000557a357bf620 (new refcount 1).

---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: www.baidu.com
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Content-Length: 2381
Content-Type: text/html
Server: bfe
Date: Sun, 02 Jun 2024 12:28:06 GMT

---response end---
200 OK
Registered socket 3 for persistent reuse.
Length: 2381 (2.3K) [text/html]
Saving to: ‘index.html’

index.html                 100%[=======================================>]   2.33K  --.-KB/s    in 0s

2024-06-02 20:28:06 (123 MB/s) - ‘index.html’ saved [2381/2381]

查看网站访问量

alexa.chinaz.com

指标说明
IP访问网站的独立IP数量,公网IP。
PV页面访问量Page view。
UV独立访客数量,接近于用户数量 Unique Visitor。
DAU每天的活跃用户的数量:日活(日活跃用户)。
MAU月活(月活跃用户)。

HTTP协议版本

http1.0http1.1http2.0http3.0
特点短连接,每次请求都需要重复建立断开连接加入长连接功能增加并发,访问更快基于udp更快,应用于流媒体
占用服务端资源keepalive(响应后不会立刻断开)
是否加密http不加密,https加密默认基于https
基于tcp/udptcptcptcpudp

HTTP协议交互

  1. 浏览器发送request请求
  2. 服务器回复response响应

HTTP 请求

---request begin---
GET / HTTP/1.1  
User-Agent: Wget/1.19.5 (linux-gnu) 
Accept: */*
Accept-Encoding: identity
Host: www.baidu.com
Connection: Keep-Alive

---request end---
请求报文起始行

GET / HTTP/1.1

  • 请求方法:用于指定客户端如何访问服务端(下载,上传,查看服务端信息)
常见的请求方法说明
GET下载(大部分请求),用于请求服务器发送指定资源。
POST上传(上传文件内容、登录),用于向服务器提交数据,通常导致服务器上的状态变化或副作用。
HEAD类似于GET,仅仅输出响应的头部信息(查看服务端的信息,一般用于检查)。
  • 资源的位置(URI): 这个资源在网站站点目录的哪个地方,叫什么名字.
    这里面写的/,斜线并非是Linux系统的根目录.这个/叫网站的站点目录

  • http协议版本

请求头

User-Agent: Wget/1.19.5 (linux-gnu)
Accept: /
Accept-Encoding: identity
Host: www.baidu.com
Connection: Keep-Alive

HTTP请求头解释
User-Agent: Wget/1.19.5 (linux-gnu)请求头,告诉服务器发起请求的应用类型和版本,这里是Wget命令行下载工具。
Accept: /请求头,告诉服务器客户端接受任何类型的 MIME 响应。
Accept-Encoding: identity请求头,告诉服务器客户端不接受任何编码转换,即希望服务器发送原始数据。
Host: www.baidu.com请求头,指定请求的服务器域名,这里是百度网站的域名。
Connection: Keep-Alive请求头,告诉服务器客户端希望保持连接活跃,以便为后续请求重用相同的TCP连接。

HTTP响应

---response begin---
HTTP/1.1 200 OK
Content-Length: 2381
Content-Type: text/html
Server: bfe
Date: Sun, 02 Jun 2024 12:49:11 GMT

---response end---
响应报文起始行

HTTP/1.1 200 OK

  • HTTP版本

  • 状态码 状态码描述
    状态码是反应服务器是否正确的处理用户请求
    |状态码 |含义|
    |-|-|
    |2xx |表示正常|
    |3xx |表示需要进行跳转,表示正常|
    |4xx |表示异常,客户端问题|
    |5xx |表示异常,服务端问题|

状态码状态码描述解释
200OK访问正常,服务器成功处理了请求。
301Moved Permanently永久跳转,请求的资源已被永久移动到新位置。
302Found或Moved Temporarily临时跳转,请求的资源临时移动到新位置。
304Not Modified浏览器缓存,请求的资源未修改,可以使用缓存的内容。
403Forbidden权限拒绝(拒绝访问)。权限问题,如未授权访问;首页文件问题,如配置错误导致无法访问首页。
404Not Found文件找不到,一般辅助错误日志排查,用于定位请求的资源不存在的问题。
500Internal Error内部错误,如服务器配置错误、应用程序错误等。SElinux开启时,可能会导致一些异常。一般需要辅助错误日志来排查。
502Bad Gateway网关错误,一般发生在负载均衡器中,请求发送到后端服务器,但后端服务器没有响应,导致网关返回错误。
503Service Unavailable服务临时不可用,后端负载异常等情况,或者人为设置(如系统升级)导致服务暂时不可用。
504Gateway Time-out网关超时,请求发送到网关,但网关在规定时间内没有响应。
响应头

Content-Length: 2381
Content-Type: text/html
Server: bfe
Date: Sun, 02 Jun 2024 12:49:11 GMT

HTTP响应组成部分解释
Content-Length: 2381响应头,指示实体主体的大小(以字节为单位),这里是2381字节。
Content-Type: text/html响应头,指示响应的内容类型,这里是HTML文本。
Server: bfe响应头,指示处理请求的服务器软件,这里是百度的前端服务器(Baidu Front End)。
Date: Sun, 02 Jun 2024 12:49:11 GMT响应头,指示消息发送的时间,这里是2024年6月2日星期日,格林尼治标准时间12:49:11。

Nginx

常见的Web服务

类型说明
WEB服务网站服务,部署并启动了这个服务,你就可以搭建一个网站。
WEB中间件等同于WEB服务,用于提供网站的托管和访问服务。
中间件范围更加广泛,指的负载均衡之后的服务,包括各种应用程序层和网络层的中间件。
数据库中间件数据库缓存、消息队列等功能的中间件,用于提高数据库性能和处理数据。

常见网站服务

网站服务说明官网
Nginx大部分使用nginx, Engine Xhttp://nginx.org/en/docs/
Tengine基于Nginx二开, 淘宝开源, 更多内置模块http://tengine.taobao.org/
Openresty基于Nginx二开, 加强Lua功能与模块http://openresty.org/
Tomcat运行Java环境的Web服务https://tomcat.apache.org/
Jboss运行Java环境的Web服务https://www.jboss.org/
Jetty运行Java环境的Web服务https://www.eclipse.org/jetty/
Weblogic运行Java环境的Web服务https://www.oracle.com/weblogic/
PHP运行PHP环境的Web服务,需要nginx (LNMP)https://www.php.net/

安装Nginx

从官网安装 nginx.org/en
在这里插入图片描述

在这里插入图片描述

  • Mainline 主线版本 – 奇数版本 - 开发&测试版本 --> 开发团队 - 二次开发
  • Stable 稳定版本 – 偶数版本 - 稳定&生产 - 中小企业
  • Lengacy 历史版本 – 偶数版本 - 稳定的

download->stable 最下面->RHEL and derivatives->yum
在这里插入图片描述

# 配置官网yum源(stable版)
[root@front ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

#安装
yum install -y nginx

#检查
[root@front ~]# rpm -qa nginx
nginx-1.26.1-2.el8.ngx.x86_64
[root@front ~]# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/fastcgi_params
/etc/nginx/mime.types
/etc/nginx/modules
/etc/nginx/nginx.conf
/etc/nginx/scgi_params
/etc/nginx/uwsgi_params
/usr/lib/.build-id
/usr/lib/.build-id/3d
/usr/lib/.build-id/3d/2e2d5ec454efae0e8f8abeb6f056b4636a8a0c
/usr/lib/.build-id/4f
/usr/lib/.build-id/4f/adbe3f34e65c805137a92caf2f2035f1112f6a
/usr/lib/systemd/system/nginx-debug.service
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx
/usr/lib64/nginx/modules
/usr/libexec/initscripts/legacy-actions/nginx
/usr/libexec/initscripts/legacy-actions/nginx/check-reload
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
/usr/sbin/nginx
/usr/sbin/nginx-debug
/usr/share/doc/nginx-1.26.1
/usr/share/doc/nginx-1.26.1/COPYRIGHT
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx
/usr/share/nginx/html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/var/cache/nginx
/var/log/nginx

Nginx目录结构

不同的安装方式,目录、文件会有所变化

目录结构说明
/etc/nginx/Nginx各种配置的目录
/etc/nginx/nginx.conf主配置文件
/etc/nginx/conf.d/子配置文件(网站)目录
/etc/nginx/conf.d/default.conf默认的子配置文件
/usr/sbin/nginxngx命令,用于启动、停止、重启Nginx服务器
/usr/share/nginx/html/ngx默认的站点目录,网站的根目录
/var/log/nginx/ngx日志:访问日志、错误日志、跳转日志
其他目录和文件说明
/etc/logrotate.d/nginx日志切割(防止文件过大)
/etc/nginx/mime.types媒体类型文件,定义了MIME类型和扩展名的映射
/etc/nginx/fastcgi_params包含FastCGI参数的文件,用于处理PHP请求
/etc/nginx/uwsgi_params包含uWSGI参数的文件,用于处理Python请求
/usr/lib/systemd/system/nginx.servicesystemctl配置文件,用于使用systemd管理Nginx服务
/var/cache/nginx/缓存目录,用于存储临时文件和缓存内容

Nginx启动管理

源码安装的nginx启动方式不同,建议菜鸟教程

# 启动
[root@front ~]# systemctl enable nginx --now

# 查看端口
[root@front ~]# ss -tunlp | grep 80
tcp   LISTEN 0      128          0.0.0.0:80         0.0.0.0:*    users:(("nginx",pid=2403,fd=6),("nginx",pid=2402,fd=6),("nginx",pid=2225,fd=6))                                                                      
# 查看进程
[root@front ~]# ps -ef | grep nginx
root        2225       1  0 16:56 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx       2402    2225  0 19:51 ?        00:00:00 nginx: worker process
nginx       2403    2225  0 19:51 ?        00:00:00 nginx: worker process
root        2851    1384  0 21:22 pts/0    00:00:00 grep --color=auto nginx

# 访问测试
[root@front ~]# curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Nginx常用命令

命令选项解释
nginx -s stop停止Nginx服务器
nginx -s quit优雅地停止Nginx服务器
nginx -s reload重新加载Nginx配置文件
nginx -s reopen重新打开日志文件
nginx -s configtest测试Nginx配置文件的语法错误
nginx -t测试Nginx配置文件的语法错误
nginx -c filename指定配置文件路径
nginx -p path指定Nginx的运行路径
nginx -g “options”设置全局配置选项
nginx -V显示Nginx版本信息
nginx -h显示帮助信息

Nginx配置文件

主配置文件

在这里插入图片描述

指令说明
user指定Nginx进程运行的用户和组,默认是nobody
worker_processes指定工作进程的数量,默认为1
error_log指定错误日志文件的位置和级别,默认为/var/log/nginx/error.log
pid指定Nginx进程ID文件的位置,默认为/var/run/nginx.pid
events配置事件模块,包括工作进程的数量和类型
http配置HTTP模块,包括全局设置和监听端口
server配置虚拟主机,包括域名、根目录、日志文件等
location配置请求匹配的规则,包括资源路径、重定向、缓存等
access_log指定访问日志文件的位置和格式,默认为/var/log/nginx/access.log
error_log指定错误日志文件的位置和格式,默认为/var/log/nginx/error.log
sendfile指定是否开启sendfile传输模式,默认为on
tcp_nopush指定是否在发送数据前压缩缓冲区,默认为on
keepalive_timeout指定长连接的超时时间,默认为65
client_max_body_size指定客户端请求的最大体长,默认为1M
client_body_buffer_size指定客户端请求体长缓冲区的大小,默认为8k
gzip指定是否开启gzip压缩,默认为on
gzip_vary指定是否在响应头中包含gzip压缩的信息,默认为on
gzip_proxied指定是否压缩代理请求的响应,默认为any
gzip_types指定需要压缩的MIME类型,默认为text/html
gzip_disable指定不需要压缩的MIME类型,默认为msie6
fastcgi_pass指定FastCGI后端服务器的地址和端口,默认为127.0.0.1:9000
uwsgi_pass指定uWSGI后端服务器的地址和端口,默认为127.0.0.1:9000
proxy_pass指定代理后端服务器的地址和端口,默认为http://127.0.0.1:80
proxy_set_header指定代理请求的头部信息,默认为Host: $host
proxy_http_version指定代理请求的HTTP版本,默认为1.1
proxy_connect_timeout指定代理连接的超时时间,默认为60s
proxy_send_timeout指定代理发送请求的超时时间,默认为60s
proxy_read_timeout指定代理读取响应的超时时间,默认为60s
proxy_buffer_size指定代理请求缓冲区的大小,默认为4k
proxy_buffering指定是否启用代理缓冲区,默认为on
proxy_cache指定代理缓存的相关设置,默认为off
proxy_cache_key指定代理缓存键的生成规则,默认为 s c h e m e scheme schemeproxy_host$request_uri
proxy_cache_valid指定代理缓存的有效时间,默认为1d
proxy_cache_min_uses指定代理缓存的最小使用次数,默认为1
proxy_cache_use_stale指定代理缓存是否使用过时的数据,默认为off
proxy_cache_lock指定代理缓存是否锁定数据,默认为on
proxy_cache_lock_timeout指定代理缓存锁定数据的时间,默认为5s
proxy_cache_lock_age指定代理缓存锁定数据的时间,默认为5s
proxy_cache_lock_timeout指定代理缓存锁定数据的时间,默认为5s
proxy_cache_lock_age指定代理缓存锁定数据的时间,默认为5s
proxy_cache_lock_timeout指定代理缓存锁定

子配置文件

在这里插入图片描述

指令说明
listen指定监听端口
server_name指定域名,多个通过空格分割
location匹配请求中的uri(资源地址)
root指定站点目录(网站的根目录)
index指定站点的首页文件。用户访问的时候不加上任何的文件,展示首页文件
error_log指定错误状态码与对应的错误页面

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

牛客周赛 Round 45VP

这场应该是十分仁慈的一场了 1.签到&#xff1a;https://ac.nowcoder.com/acm/contest/84244/A AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int a,b,c,d,e; int main() {cin>>a>>b>>c>>d>>e;int sabcde;if(s>1…

关于nodejs单线程

Node是使用C++语言写的一款JavaScrip解析器。 高并发 一般来说,高并发的解决方案就是多线程模型,服务器为每隔客户端请求分配一个线程,使用同步I/o,比如Apache就是这种策略,由于I/O一般都是耗时操作,因为这种策略很难实现高性能,但非常简单,可以实现复杂的交互逻辑。…

深度学习复盘与论文复现B

文章目录 1、Knowledge Review1.1 NLLLoss vs CrossEntropyLoss1.2 MNIST dataset1.2.1 Repare Dataset1.2.2 Design Model1.2.3 Construct Loss and Optimizer1.2.4 Train and Test1.2.5 Training results Pytorch-Lightning MNIST :rocket::fire:1.3 Basic Convolutional Neu…

都说美国去工业化了,那美国人都做什么工作啊?

美国&#xff0c;这个全球经济的重要参与者&#xff0c;经历了一场深刻的变革——去工业化。这一过程意味着&#xff0c;曾经以制造业为荣的美国&#xff0c;逐渐将重心转移到了其他领域。那么&#xff0c;美国人都做什么工作呢&#xff1f;让我们走近这位“经济体巨人”&#…

Nginx企业级负载均衡:技术详解系列(17)—— 长连接优化策略与下载服务器高效搭建

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 今天咱们来聊聊Nginx的两个知识点&#xff1a;Nginx的长连接优化、如何将Nginx配置成下载服务器。 长连接配置详解 在Nginx的配置中&#xff0c;长连接是一个重要的性能优化手段。它允许一个TCP连接上发送多个请求和…

centos7下安装MySQL,Oracle数据库

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 操作系统版本为CentOS 7 使⽤ MySQ…

“人工智能AI+” 应用场景盘点

在这个科技与梦想交相辉映的时代&#xff0c;人工智能已不再停留于遥不可及的概念构想&#xff0c;而是化身为一股汹涌的创新洪流&#xff0c;深刻塑造着社会的每一个角落。从文化艺术的智慧火花到生命科学的精密探索&#xff0c;从工业制造的革新升级到日常生活的细致入微&…

解决sd-webui中rembg插件使用报错问题

stable-diffusion-webui-rembg是我非常喜欢的sd-webui插件&#xff0c;PS抠图手残党的福音&#xff0c;一键抠图太爽啦。对于主体明确线条简单的图片&#xff08;如汽车、服饰简洁的人像等&#xff09;效果相当好&#xff1b;即便对于毛茸茸的对象&#xff08;如动物&#xff0…

轻松上手MYSQL:优化MySQL慢查询,让数据库起飞

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索MYSQL慢查询之旅✨ &#x1f44b; 大家好&#xff01;我是你们的…

牛客网刷题 | BC112 空心三角形图案

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi学习了循环&am…

961题库 北航计算机 操作系统 附答案 选择题形式

有题目和答案&#xff0c;没有解析&#xff0c;不懂的题问大模型即可&#xff0c;无偿分享。 第1组 习题 计算机系统的组成包括&#xff08; &#xff09; A、程序和数据 B、处理器和内存 C、计算机硬件和计算机软件 D、处理器、存储器和外围设备 财务软件是一种&#xff…

从 @MapperScan 看 Spring 和 MyBatis 的整合

在 Spring Boot 中使用 Mybatis 时&#xff0c;会经常使用到一个注解 MapperScan&#xff0c;它可以指定对哪些包进行扫描&#xff08;basePackages&#xff09;&#xff0c;将哪些类作为 Mapper 类&#xff08;basePackageClasses&#xff09;&#xff0c;多数据源下的一些设置…

【JavaScript详解】Day01

JavaScript 基础 - 第1天 了解变量、数据类型、运算符等基础概念&#xff0c;能够实现数据类型的转换&#xff0c;结合四则运算体会如何编程。 体会现实世界中的事物与计算机的关系理解什么是数据并知道数据的分类理解变量存储数据的“容器”掌握常见运算符的使用&#xff0c;了…

win+mac通用的SpringBoot+H2数据库集成过程。

有小部分大学的小部分老师多毛病&#xff0c;喜欢用些晦涩难搞的数据库来折腾学生&#xff0c;我不理解&#xff0c;但大受震撼。按我的理解&#xff0c;这种数据库看着好像本地快速测试代码很舒服&#xff0c;但依赖和数据库限制的很死板&#xff0c;对不上就是用不了&#xf…

对HTTP和HTTPS的介绍

HTTP HTTP 是什么&#xff1f; HTTP (全称为 “超⽂本传输协议”) 是⼀种应⽤⾮常⼴泛的 应用层协议. 所谓 “超⽂本” 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据 HTTP 往往是基于传输层…

JavaScript数组应用

检测数据类型 1.typeof()可以检测基本数据类型&#xff0c;但是在检测null时会返回object。另外它不能检测负责的数据类型&#xff0c;如正则表达式对象 2.constructor可以检测绝大部分数据的类型&#xff0c;但是不能检测null和underfined的数据类型 3.toString()方法&#x…

C++的List

List的使用 构造 与vector的区别 与vector的区别在于不支持 [ ] 由于链表的物理结构不连续,所以只能用迭代器访问 vector可以排序,list不能排序(因为快排的底层需要随机迭代器,而链表是双向迭代器) (算法库里的排序不支持)(需要单独的排序) list存在vector不支持的功能 链…

国产操作系统上Vim的详解01--vim基础篇 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统上Vim的详解01–vim基础篇 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在国产操作系统上使用Vim的详解文章。Vim是一款功能强大且高度可定制的文本编辑器&#xff0c;广泛应用于编程和日常文本编辑中。…

SELF-RAG: Learning to Retrieve, Generate, and Critique Through Self-reflection

更多文章&#xff0c;请关注微信公众号&#xff1a;NLP分享汇 原文链接&#xff1a;ICLR2024&#xff1a;能够自我反思的SELF-RAG 下面介绍的这篇论文是最近被ICLR 2024 accepted oral&#xff0c;作者来自University of Washington & Allen Institute for AI & IBM R…

Z字形变换 ---- 模拟

题目链接 题目: 分析: 题意如图所示:如果我们按照题意, 真的实现一个矩阵, 这样做的时间和空间复杂度很高, 所以我们可以试试看找规律, 优化一下我们观察他们的下标: 如果找到下标的规律, 那么我们就不用创建矩阵, 就能找到最终结果的下一个字符是什么特殊情况, 当numRows 1…