Linux之web服务器
一、web 服务器简介
1.www 简介
www 是全球信息广播的意思,上网即使用 www 来查询信息,它结合多种多媒体,通过超链接以 Internet 传递信息。上网时,网站提供数据,客户端用浏览器解析数据。
www 所用协议为 HTTP(超文本传输协议)。
主流 Web 服务器有 Apache、Microsoft 的 Internet 信息服务器(IIS)和 Unix nginx。
服务器提供的数据主要是 HTML 和多媒体文件,HTML 用标记规范数据格式。
著名浏览器有 Windows 内的 IE、Firefox 和 Google 的 chrome。
2.网址及 HTTP 简介
URL(统一资源定位符)是互联网上标准资源的地址,包括协议、主机或主机名、端口号和目录资源。
浏览器常支持的协议有 http、https、ftp 等。主机地址是服务器 IP 地址或需域名解析的主机名。端口号方面,http 为 80,https 为 443。端口号分为特权端口(0 - 1023)、注册端口(1024 - 41951)和动态端口(41952 - 60000)。
http 请求方法告诉 web 服务器执行具体动作,状态代码由三位数字组成,分为五类表示不同响应情况。
HTTP 报文分为请求报文和响应报文。请求报文由请求行、请求头部、空行和请求报文主体组成;响应报文由起始行、响应头部、空行和响应报文主体组成。
MIME 用于描述数据并标记不同数据内容类型,存在于 HTTP 响应报文的响应头部信息里。
3.http 协议请求的工作流程
终端客户在浏览器输入访问地址。
浏览器请求 DNS 服务器解析域名成 IP 地址。
浏览器解析出端口号。
浏览器与服务器建立 TCP 连接。
浏览器向服务器发送 HTTP 请求报文。
服务器响应并返回 HTTP 响应报文。
服务器关闭连接,浏览器显示网站内容。
二、web 服务器的类型
1.单向静态网页
服务器单向提供数据,用户只能浏览,无法上传数据。
2.提供用户互动接口的动态网站
可让服务器与用户互动,如留言板、博客等。实现方式有服务器端网页程序语言(如 PHP 配合数据库系统)和客户端可执行程序代码(如 JavaScript、flash 动画)。
搭建动态网站需求 LAMP(linux+Apache+MySQL+PHP),Apache 提供服务器平台,MySQL 是优化过读写的数据库系统,PHP 可建立动态网页且可直接在 HTML 网页中嵌入。
三、静态页面资源特征
1.处理文件类型包括.html 等多种格式。
2.地址中不含有问号或特殊符号。
3.保存在服务器文件系统上,是实体文件。
4.内容固定,易被搜索引擎收录。
5.交互性差,不能与数据库配合。
6.网页程序在客户端浏览器解析,服务器直接从磁盘文件系统返回数据。
四、动态网页资源
1.URL 后缀为.asp 等形式。
2.页面交互性强,可与数据库配合。
3.地址中含有问号或特殊符号。
4.不便于被搜索引擎收录。
五、不同服务器特点
1.Apache:模块化服务器,支持模块多,性能稳定,可支持多种语言,本身静态解析,可扩展支持动态页面,使用 java 需 tomcat 后台支持。
2.Tomcat:应用服务器,是 servlet 容器,可独立运行或作为 Apache 的扩展。
3.Nginx:轻量级服务器,高性能的 http 和反向代理服务器,同时也是 IMAP/POP3/SMTP 代理服务器,相对 Apache 占用更少内存及资源。
web服务基本配置
使用nginx提供web服务
[root@server ~]# yum install nginx -y
[root@localhost ~]# nginx -v
[root@localhost ~]# nginx -V
[root@localhost ~]# rpm -ql nginx
[root@localhost httpd]# tree /etc/nginx
[root@localhost ~]# tree /etc/nginx/
/etc/nginx/
├── conf.d #子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params #用以翻译nginx的变量供php识别
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types #用以配置支持的媒体文件类型
├── mime.types.default
├── nginx.conf #主配置文件
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params #用以配置nginx的变量供python识别
├── uwsgi_params.default
└── win-utf
[root@localhost ~]# tree /usr/share/nginx/html/ #默认的nginx网站根目录
[root@localhost ~]# tree /var/log/nginx/ #nginx的日志文件所在目录
#nginx服务主配置文件nginx.conf的结构
[root@localhost nginx]# grep ^[^#] /etc/nginx/nginx.conf
=========全局配置(无{}标志)=======================
user nginx; #进程所属用户
worker_processes auto; #worker数量
error_log /var/log/nginx/error.log notice; #错误日志存放路径
pid /run/nginx.pid; #pid文件路径
include /usr/share/nginx/modules/*.conf; #include导入的功能模块配置文件
=========全局配置(无{}标志)=======================
==========性能配置(有{}标志)=================
events {worker_connections 1024; #TCP连接数
}
==========性能配置(有{}标志)=================
=========http模块配置(有{}标志)==================
http { #http区块开始log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"'; #错误日志格式access_log /var/log/nginx/access.log main; #访问日志路径sendfile on; #开启高效文件传输模式tcp_nopush on; #性能优化参数tcp_nodelay on; #性能优化参数keepalive_timeout 65; #持久连接时间或超时时间types_hash_max_size 4096; #性能优化参数include /etc/nginx/mime.types; #可解析的静态资源类型default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.include /etc/nginx/conf.d/*.conf; #子配置文件存放路径server { #server区块开始listen 80; #监听端口listen [::]:80;server_name _; #服务器的名字root /usr/share/nginx/html; #主页存放路径# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf; #子配置文件存放路径error_page 404 /404.html; #404错误返回的页面location = /40x.html { #使用location定义用户请求的uri}error_page 500 502 503 504 /50x.html; #500、502、503、504返回的页面location = /50x.html {}} #server区块结束
} #http区块结束
=========http模块配置(有{}标志)==================
[root@localhost ~]#systemctl disable firewalld --now
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive #每次启动虚拟机时都需要做以上操作后才能开启服务器,也可以/etc/selinux/config修改 SELINUX=enforcing为SELINUX=permissive
[root@localhost ~]# systemctl restart nginx
#测试可以使用curl命令访问web服务器或者使用浏览器访问
[root@localhost ~]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Sun, 03 Nov 2024 07:26:42 GMT
Content-Type: text/html
Content-Length: 2713881
Last-Modified: Tue, 04 Jun 2024 22:57:12 GMT
Connection: keep-alive
ETag: "665f9bc8-296919"
Accept-Ranges: bytes
虚拟主机配置实战
搭建静态网站–基于HTTP协议
实验1:搭建一个web服务器,访问该服务器时显示“hello world”欢迎界面。
[root@localhost ~]# echo "hello world" > /usr/share/nginx/html/index.html
[root@localhost ~]# curl localhost
hello world
[root@localhost ~]# curl 192.168.121.10
hello world
实验2:建立两个基于ip地址访问的网站,要求如下
该网站ip地址的主机位为100,设置首页目录为/www/ip/100,网页内容为:this is 100。
该网站ip地址主机位为200,设置首页目录为/www/ip/200,网页内容为:this is 200。
#添加ip地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.100/24 +ipv4.gateway 192.168.121.2 ipv4.dns 114.114.114.114
ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.200/24
[root@localhost ~]# nmcli connection up ens33
#创建两个网页文件根目录,并定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html
#设置selinux,必须设置,否则无法看到网页页面内容
[root@server html]# setenforce 0
[root@server html]# getenforce
Permissive
#定义基于不同ip地址来访问网站的配置文件
#新建文件,写入如下配置
[root@localhost ~]# vim /etc/nginx/conf.d/test_ip.conf
server {listen 192.168.121.100:80;root /www/ip/100;location / {}
}
server {listen 192.168.121.200:80;root /www/ip/200;location / {}
}[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl 192.168.121.100
this is 100
[root@localhost ~]# curl 192.168.121.200
this is 200
实验3:建立两个基于不同端口访问的网站,要求如下:
建立一个使用web服务器默认端口的网站,设置网站首页目录为/www/port/80,网页内容为:the
port is 80。
建立一个使用10000端口的网站,设置网站首页目录为/www/port/10000,网页内容为:the port
is 10000。
[root@localhost ~]# mkdir -pv /www/port/{80,10000}
[root@localhost ~]# echo the port is 80 > /www/port/80/index.html
[root@localhost ~]# echo the port is 10000 > /www/port/10000/index.html
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.153/24
[root@localhost ~]# nmcli connection up ens33
[root@localhost ~]# cat /etc/nginx/conf.d/test_port.conf
server {listen 192.168.121.153:80;root /www/port/80;location / {}
}
server {listen 192.168.121.153:10000;root /www/port/10000;location / {}
}[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl 192.168.121.153:10000
the port is 10000
[root@localhost ~]# curl 192.168.121.153
the port is 80
实验4:建立两个基于域名访问的网站,要求如下:
新建一个网站,域名为www.ceshi.com,设置网站首页目录为/www/name,网页内容为this is
test。
新建一个网站,域名为rhce.first.day,同时可通过ce.first.day访问,设置网站首页目录
为/www/ce,网页内容为:today is first day of class。
浏览器如何通过域名去查询URL对应的IP(对应服务器地址):
1、浏览器缓存:浏览器会按照一定的频率缓存DNS记录。
2、操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件
找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建
立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文
件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址
提交DNS域名解析服务器进行IP地址的解析。
windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts
Linux下的hosts文件路径:/etc/hosts
3、路由缓存:路由器也有DNS缓存。
4、ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的
DNS服务器应对DNS查询请求。
5、根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询
(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类
推)
[root@localhost conf.d]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.154/24
[root@localhost conf.d]# nmcli connection up ens33
[root@localhost ~]# mkdir /www/{name,ce}
[root@localhost ~]# echo this is test > /www/name/index.html
[root@localhost ~]# echo today is first day of class > /www/ce/index.html
[root@localhost ~]# vim /etc/nginx/conf.d/test_servername.conf
server {listen 192.168.121.154:80;server_name www.ceshi.com; #server_name 指令用于指定该服务器块处理的域名root /www/name;location / {}
}
server {listen 192.168.121.154:80;server_name rhce.first.day ce.first.day;root /www/ce;location / {}
}[root@localhost ~]# vim /etc/hosts
192.168.121.154 www.ceshi.com rhce.first.day ce.first.day
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# curl www.ceshi.com
this is test
[root@localhost ~]# curl rhce.first.day
today is first day of class
[root@localhost ~]# curl ce.first.day
today is first day of class
实验5:基于虚拟目录和用户控制的web网站
#虚拟目录实现
[root@localhost conf.d]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.155/24
[root@localhost conf.d]# nmcli connection up ens33
[root@localhost ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
server {listen 192.168.121.155:80;root /usr/share/nginx/html;location /real { #指令用于定义如何处理特定的 URL 路径。在这个例子中,它定义了对路径 /real 的处理方式alias /www/real; #alias 指令将指定的路径映射到另一个文件系统路径。在这个例子中,当客户端请求 /real 路径时,Nginx 会将其映射到 /www/real 目录auth_basic on; #auth_basic 指令启用基本认证(Basic Authentication)。这意味着访问该路径需要用户名和密码。auth_basic_user_file /etc/nginx/conf.d/auth-password; #auth_basic_user_file 指令指定存储用户名和密码的文件}
}
[root@localhost ~]# mkdir /www/real/
[root@localhost ~]# echo real-virtual > /www/real/index.html
[root@localhost ~]# yum install httpd-tools -y
[root@localhost ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1
123
[root@localhost ~]# systemctl restart nginx
[root@server ~]# curl 192.168.121.155/real/
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.26.1</center>
</body>
</html>
[root@server ~]# curl 192.168.121.155/real/ -u user1
Enter host password for user 'user1':
real-virtual
[root@server ~]# curl user1:123@192.168.121.155/real/
real-virtual
[root@server ~]#
搭建静态网站–基于https协议的静态网站
(一)https 简介
1.HTTP 协议以明文方式发送内容,存在安全缺陷,不适合传输敏感信息。
2.HTTPS 是以安全为目标的 HTTP 通道,并非新协议,而是 HTTP + SSL(TLS)。
3.SSL 被嵌在 HTTP 和 TCP 之间,分为两层:
SSL 记录协议:为高层协议提供数据封装、压缩、加密等基本功能。
SSL 握手协议:用于通讯双方进行身份认证、协商加密算法、交换加密密钥等。
4.SSL 协议提供的服务包括认证用户和服务器、加密数据、维护数据完整性。
(二)https 协议加密所使用的算法
1.HASH 算法是一种单向算法,常用于不可还原的密码存储、信息完整性校验等。常见的 HASH 算法有 MD2、MD4、MD5 等。
2.共享密钥加密(对称密钥加密):加密和解密使用相同密钥。常见对称加密算法有 DES、AES 等。
3.公开密钥加密(非对称密钥加密):使用一对非对称的密钥,一把私有密钥,一把公开密钥。常见非对称加密算法有 RSA、ECC 等。
4.HTTPS 采用综合对称密钥加密和非对称密钥加密的方式,在交换密钥阶段使用公开密钥加密方式,之后建立通信交换报文阶段则使用共享密钥加密方式。
5.为证明公开密钥的真实性,需要第三方公证单位 CA。客户端浏览器向 CA 单位确认服务器证书是否合法注册,若合法则建立连接,否则发出警告信息。
(三)浏览器访问 https 网站的通信过程
1.客户端浏览器向服务器端发送:
客户端支持的 SSL/TLS 协议的版本号。
Cipher Suite(密钥算法套件)。
客户端产生的随机数,用于生成“对话密钥”。
2.服务器端向客户端发送:
确认使用的加密通信协议版本,若不一致则关闭加密通信。
确认使用的加密方法。
服务器证书。
服务器生成的随机数,用于生成“对话密钥”。
3.客户端利用服务器传过来的信息验证服务器的合法性:
若合法性验证未通过,通讯断开。
若通过,则可知认证服务器的公开密钥是真实有效的数字证书认证机构,且服务器的公开密钥值得信赖。多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。
4.客户端随机产生一个对称密钥,用服务器的公钥对其加密后传给服务器。
5.HTTPS 的安全通信工作流程分为三个阶段:
认证服务器:浏览器内置受信任的 CA 机构列表,若服务器证书的 CA 机构在列表中且证书信息与当前访问网站一致,则认为服务端可信,从服务器证书中取得服务器公钥。否则,提示用户决定是否继续。
协商会话密钥:客户端获得服务器公钥后,利用该公钥与服务器进行加密通信,协商出客户端会话密钥和服务端会话密钥。使用对称密钥加密可节省计算资源,且会话密钥随机生成,安全性高。
加密通讯:客户端和服务器双方有了会话密钥后,所有 http 数据通过会话密钥加密,保证数据的私密性和完整性。
#https功能由ngx_http_ssl_module模块提供
[rootlocalhost ~]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.156/24
[root@localhost ~]# nmcli connection up ens33
[root@localhost ~]# mkdir -pv /www/https/
[root@localhost ~]# echo https > /www/https/index.html
[root@localhost conf.d]# cd /etc/pki/tls/certs/
#key是私钥文件
[root@localhost certs]# openssl genrsa -out https.key
#crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持
有人的公钥,以及签署者的签名等信息
[root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days
100 -out https.crt
[[root@localhost ~]# cat /etc/nginx/conf.d/test_https.conf
server { #定义一个新的服务器块。Nginx 使用这种结构来组织和管理不同的虚拟主机(Virtual Host)listen 192.168.121.156:443 ssl; #指定服务器监听的 IP 地址和端口。在这里,服务器监听 192.168.88.150 的 443 端口,并且启用了 SSL(HTTPS)root /www/https; #指令设置服务器的根目录。当客户端请求一个文件时,Nginx 会从这个目录中查找文件ssl_certificate /etc/pki/tls/certs/https.crt; #指令指定 SSL 证书文件的位置ssl_certificate_key /etc/pki/tls/certs/https.key; #指令指定 SSL 私钥文件的位置location / { #指令用于定义如何处理特定的 URL 路径}
}
[root@localhost ~]# systemctl restart nginx
[root@server certs]# curl --insecure https://192.168.121.156
https
[root@server certs]# curl -k https://192.168.121.156
https
[root@server certs]#
搭建动态网站
动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站,一般情况下
动态网站通过数据库进行架构。 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更
多自动的和高级的功能。
动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访问网
站是通过读取数据库来动态生成网页的方法
[root@localhost nginx]# nmcli connection modify ens33 +ipv4.addresses
192.168.121.157/24
[root@localhost nginx]# nmcli connection up ens33
[root@localhost ~]# dnf install php php-fpm -y
[root@localhost ~]# systemctl restart nginx php-fpm
[root@ntp-server ~]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php
#使用浏览器访问
相关文章:
Linux之web服务器
一、web 服务器简介 1.www 简介 www 是全球信息广播的意思,上网即使用 www 来查询信息,它结合多种多媒体,通过超链接以 Internet 传递信息。上网时,网站提供数据,客户端用浏览器解析数据。 www 所用协议为 HTTP&…...
十二、Pod的扩缩容-手动/自动-HPA
在实际生产系统中,经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景。此时可以利用Deployment/RC的Scale机制来完成这些工作。 Kubernetes对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过运行kubectl sca…...
RabbitMQ高级特性:TTL、死信队列与延迟队列
RabbitMQ高级特性:TTL、死信队列与延迟队列 RabbitMQ作为一款开源的消息代理软件,广泛应用于分布式系统中,用于实现消息的异步传递和系统的解耦。其强大的高级特性,包括TTL(Time-To-Live)、死信队列&#…...
UPLOAD LABS | UPLOAD LABS 靶场初识
关注这个靶场的其它相关笔记:UPLOAD LABS —— 靶场笔记合集-CSDN博客 0x01:UPLOAD LABS 靶场简介 UPLOAD LABS 靶场是一个专门用于学习文件上传漏洞攻击和防御的靶场。它提供了一系列文件上传漏洞的实验环境,用于帮助用户了解文件上传漏洞的…...
杰发科技AC7803——不同晶振频率时钟的配置
计算公式 PLL_POSDIV [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62] PLL_PREDIV_1 1 2 4 USE_XTAL 24M SYSCLK_FREQ 64M SYSCLK_DIVIDER 1 VCO USE_XTAL*…...
cocos creator 触摸事件官方案例
cocos creator 触摸事件官方案例 1、官方示例; 2、对官方示例的总结: (1)介绍了鼠标事件和触摸事件的类型,这里主要关注的是在移动端和PC端都可以触发的触摸事件。 (2)节点事件的派发&#…...
浅谈人工智能之基于容器云进行图生视频大模型搭建
浅谈人工智能之基于容器云进行图生视频大模型搭建 根据之前我们所讲过的内容: 文生图 文生视频 我们继续讲解图生视频大模型搭建。 引言 随着深度学习技术的不断发展,图生视频(image-to-video)大模型成为了计算机视觉和自然语言…...
【爬虫框架:feapder,管理系统 feaplat】
github:https://github.com/Boris-code/feapder 爬虫管理系统 feaplat:http://feapder.com/#/feapder_platform/feaplat 爬虫在线工具库 :http://www.spidertools.cn :https://www.kgtools.cn/1、feapder 简介 对于学习 Python…...
txt地图格式处理
1、txt地图格式 [属性描述] 坐标系2000国家大地坐标系 几度分带3 投影类型高斯克吕格 计量单位米 带号38 精度0.001 转换参数,,,,,, [地块坐标] 5,475.888,1,测试地块1,面,J50G077061,公路用地,地下, J1,1,113.22222222222222,23.129111721551794 J2,1,113.2722314…...
【0346】Postgres内核 Startup Process 通过 signal 与 postmaster 交互实现 (5)
1. Startup Process 进程 postmaster 初始化过程中, 在进入 ServerLoop() 函数之前,会先通过调用 StartChildProcess() 函数来开启辅助进程,这些进程的目的主要用来完成数据库的 XLOG 相关处理。 如: 核实 pg_wal 和 pg_wal/archive_status 文件是否存在Postgres先前是否发…...
蜜罐攻击网络渗透工具推荐
推荐一批侧重蜜罐攻击的网络渗透测试工具: Glastopf – 主要用于监测网络安全事件的工具。以蜜罐形式可以模拟数千个漏洞,以收集针对Web应用程序的攻击数据。 Kippo – 中交互性的SSH 蜜罐攻击器,用于记录暴力破解攻击。 Kojoney – 一种低…...
26页PDF | 数据中台能力框架及评估体系解读(限免下载)
一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台,小前台”战略出发,探讨了数据中台如何通过整合企业内部的数据资源和能力,加速业务迭代、降低成本,并推动业务增长…...
AI开发 - GPT之魂 用Python 演示chatGPT的自注意力机制 - 机器学习
自注意力机制(Self-Attention)就是让模型在处理每个词时,学会“关注重点”,而不是平均地对每个词一视同仁。这种机制让 GPT 能更聪明地理解句子的上下文和语义之间的关系。 自注意力机制是 GPT 的核心,它帮助模型在理解…...
Vue CLI 提供了哪些功能
前言 Vue CLI 为开发者提供了一整套强大且灵活的工具链,极大地提升了开发效率和代码质量。无论是创建项目、管理依赖、配置环境,还是进行测试和优化,Vue CLI 都能为你提供全面的支持。本文将深入探讨 Vue CLI 所提供的各种功能,并…...
网络爬虫的原理
网络爬虫就是根据网络,把上面的相关信息比如源代码以字符串的形式爬取下来,并且涉及到网站下的一系列网站。 DNS域名解析服务器可以通过ping域名/ip来测试是否连通,dns可以记录网站访问次数,从而评估出网站的使用权重,…...
02_Django路由Router
二、Django路由Router 在实际开发过程中,一个Django 项目会包含很多的 app ,这时候如果我们只在主路由里进行配置就会显得杂乱无章,所以通常会在每个 app 里,创建各自的urls.py路由模块,然后从根路由出发,…...
计算属性和监听属性
Vue.js 中的计算属性与监听属性 Vue.js 是一个流行的前端框架,它提供了许多强大的特性来简化 Web 应用的开发。其中,计算属性(Computed Properties)和监听属性(Watchers)是两个非常重要的概念,…...
JAVA项目-------医院挂号系统
1,项目目的 1、科室管理:新增科室,删除科室(如果有医生在,则不能删除该科室),修改科室。 2、医生管理:录入医生信息,以及科室信息。修改医生信息(主要是修改…...
《Learn Three.js》学习(3)光源
前言: WebGL本身不支持光源,不使用three.js,则需使用着色程序来模拟光源。 学习大纲: Three.js中的光源 特定光源的使用时机 如何调整和配置所有光源的行为 如何创建镜头光晕 光源表 基础光源:THRER.AmbientLight、THERE.Point…...
npm error code ETIMEDOUT 简单排查
今天突然没到一个仓库的ius问题。改完之后想发布npm包 出现下面的场景 npm addUser npm adduser npm notice Log in on https://registry.npmjs.org/ Create your account at: https://www.npmjs.com/login?next/login/cli/12596c8b-ba4a-4763-8a97-215087d380c4 Press ENTER…...
Flink高可用配置(HA)
从Flink架构中我们可以看到,JobManager这个组件非常重要,是中心协调器,负责任务调度和资源管理。默认情况下,每个Flink集群只有一个JobManager实例。这会产生单点故障(SPOF):如果JobManager崩溃,则无法提交新程序,正在运行的程序也会失败。通过JobManager的高可用性,…...
VITE+VUE3+TS环境搭建
前言(与搭建项目无关): 可以安装一个node管理工具,比如nvm,这样可以顺畅的切换vue2和vue3项目,以免出现项目跑不起来的窘境。我使用的nvm,当前node 22.11.0 目录 搭建项目 添加状态管理库&…...
windows上安装使用kubectl访问容器内服务
以云服务商提供的容器服务为例: 登录云服务,选择容器服务选择集群管理,选择集群概览点击kubeconfig按钮,进入说明页面官网下载kubectl 1、到 Kubernetes 版本变更 页面,查看 kubernetes 已发行版本,确认需要安装的 kubectl 版本。 2、kubectl 版本和集群的 kubernetes 版…...
软件工程第14章小测
单项选择题 第1题 定义类A和B Class A{ public B methodA(){...} } Class B{ public void methodB(){...} } 下面代码中的耦合是()。 Class Client{ public static void main(String args){ A oa new A(); a.methodA().methodB(); } } …...
HarmonyOS4+NEXT星河版入门与项目实战(23)------组件转场动画
文章目录 1、控件图解2、案例实现1、代码实现2、代码解释3、实现效果4、总结1、控件图解 这里我们用一张完整的图来汇整 组件转场动画的用法格式、属性和事件,如下所示: 2、案例实现 这里我们对上一节小鱼游戏进行改造,让小鱼在游戏开始的时候增加一个转场动画,让小鱼自…...
word转pdf
在线xml格式化: 在线 XML 格式化 | 菜鸟工具 Java使用FreeMarker自动生成Word文档(带图片和表单) Java使用FreeMarker自动生成Word文档(带图片和表单)_freemarker word模板-CSDN博客 将word转pdf JAVA 使用aspose…...
@bytemd/vue掘金markdown插件预览内容有误
vue项目使用bytemd/vue 来预览字符串格式的markdown内容,总会多出如图的一段代码, 请问有没有大佬知道为什么? 很急,求教!!!!!...
产品知识培训全面指南
在当今竞争激烈的市场环境中,产品知识已成为企业成功的关键因素。特别是对于软件即服务(SaaS)公司而言,产品的复杂性要求团队对产品有深入的了解,以便有效地与潜在客户沟通并促成交易。本指南将深入探讨产品知识培训的…...
VSCode修改资源管理器文件目录树缩进(VSCode目录结构、目录缩进、文件目录外观)workbench.tree.indent
文章目录 方法点击左下角小齿轮点击设置点击工作台,点击外观,找到Tree: Indent设置目录树的缩进 方法 点击左下角小齿轮 点击设置 点击工作台,点击外观,找到Tree: Indent设置目录树的缩进 "workbench.tree.indent"默认…...
周鸿祎再次“创业”,盯上百度
周鸿祎特地拍了部短剧来推广的新产品,终于上线了。 11月27日晚间,360正式发布多模态内容创作引擎“纳米搜索”。 作为当前AI应用最红的赛道之一,AI搜索已经有腾讯、秘塔、商汤、抖音等公司入局。传统搜索老大百度也在发力。竞争不妨碍有搜索…...
夜神模拟器+安卓7安装burpsuite系统证书
夜神模拟器安卓7安装burpsuite系统证书 安卓 7.0 以上安装 CA 证书: 安卓 5 所安装的 burp 证书是安装到系统根目录下的,从 Android 7.0 开始,系统不再信任用户 CA 证书,所以需要把 CA 证书安装到系统 CA 证书目录。 效果: 导出…...
TavilySearchResults报错
报错 pydantic_core._pydantic_core.ValidationError: 1 validation error for TavilySearchAPIWrapper Value error, Did not find tavily_api_key, please add an environment variable TAVILY_API_KEY which contains it, or pass tavily_api_key as a named parameter. …...
avcodec_alloc_context3,avcodec_open2,avcodec_free_context,avcodec_close
avcodec_alloc_context3 是创建编解码器上下文,需要使用 avcodec_free_context释放 需要使用avcodec_free_context 释放 /** * Allocate an AVCodecContext and set its fields to default values. The * resulting struct should be freed with avcodec_free_co…...
HttpClient
是apache旗下的项目 可以用来提供高效的 最新的 功能丰富的 支持HTTP协议的客户端编程工具包,并且支持HTTP协议最新的版本和建议 核心API HttpClient HttpClientsCloseableHttpClientHttpGetHttpPost 发送请求步骤 创建HttpClient对象创建Http请求对象调用H…...
Flink解决延迟数据问题
总结: 水印:对于迟到数据不长 allowedLateness: 迟到时间很长 侧道输出:对于迟到时间特别长 对于延迟数据的理解: 水印机制(水位线、watermark)机制可以帮助我们在短期延迟下,允许乱序数据的到来。 这个机制很好的…...
基于matlab程序实现人脸识别
1.人脸识别流程 1.1.1基本原理 基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。…...
ESP32 wifi smartConfig 配网时密码错误导致一直死循环问题解决
项目场景 硬件:ESP32-LyraT-Mini V1.2开发板,使用的是ESP32-WROVER-E 模组。 程序:基于smart_config示例程序测试 问题描述 烧录程序后,debug打印“smartconfig_example: Scan done”信息后,打开手机app“EspTouch”进行配网,如果密码输入正确,正常的debug信息如下:…...
串口通讯介绍
详情学习 12. 串口通讯与终端设备 — [野火]嵌入式Linux基础与应用开发实战指南——基于i.MX6ULL开发板 文档 (embedfire.com) 问题 DB9接口 RS232,RS485 标准DB9接口(串口通信线标准接口)_485接口接线方法9针-CSDN博客 DB9 各引脚定义 1 DCD 载波检测 2 RX 接收数据…...
出于安全考虑,你的平板电脑已设置为禁止安装来源不明的应用,对于这种工业的安卓平板,应该怎么解决问题呢
在一些工业安卓平板上,出于安全考虑,通常会禁止安装来自未知来源的应用程序。这是为了防止恶意软件或不可信的应用程序被安装到设备上。为了绕过这个限制并安装来自未知来源的应用程序,你可以按照以下步骤进行操作: 1. 启用“未知…...
Java技术复习提升 15IO流
先给各位读者致歉 笔者因身体抱恙 未能及时更新 以后会按时更新 和大家一起学习探究~ 第15章 IO流 15.1 文件 文件就是保存数据的地方 文件流 15.2 常用文件操作 创建文件对象构造器和方法 import org.junit.Test;import java.io.File; import java.io.IOException;publ…...
Oracle 19C Data Guard 单实例1+1部署(Duplicate方式)
环境描述 项目主库备库操作系统CentOS 7.9CentOS 7.9数据库版本Oracle 19.3.0.0Oracle 19.3.0.0ORACLE_UNQNAMEhishisdgIP地址10.172.1.10110.172.1.102Hostnamehisdb01hisdb02SIDhishisdb_namehishisdb_unique_namehishisdg 说明 主库和备库建议采用相同服务器配置。主库和…...
网安小白的端口关闭实践
proceeding 扫描 $ nmap --top-ports 10000 10.162.8.227 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-29 17:07 CST Nmap scan report for star (10.162.8.227) Host is up (0.00023s latency). Not shown: 8367 closed tcp ports (conn-refused) PORT ST…...
微软要求 Windows Insider 用户试用备受争议的召回功能
拥有搭载 Qualcomm Snapdragon 处理器的 Copilot PC 的 Windows Insider 计划参与者现在可以试用 Recall,这是一项臭名昭著的快照拍摄 AI 功能,在今年早些时候推出时受到了很多批评。 Windows 营销高级总监 Melissa Grant 上周表示:“我们听…...
nginx反向代理、负载均衡
nginx反向代理、负载均衡 一、反向代理 proxy模块1、作用2、语法3、配置后端服务器记录真实的客户端地址 二、负载均衡 upstream模块2.1 负载均衡作用2.2 调度算法/策略2.3 配置语法 一、反向代理 proxy模块 1、作用 提升业务的性能、并发能力 隐藏后端真实业务服务器的信息&…...
mysql集群NDB方式部署
1. 基本信息 部署机器角色部署路径192.168.0.1管理节点部署目录: /alidata1/mysql-cluster-8.4.3192.168.0.2管理节点192.168.0.3数据/SQL节点数据目录:192.168.0.4数据/SQL节点/alidata1/mysql-cluster-8.4.3/data/ndb-mgmd192.168.0.5数据节点 – 新增/alidata1/mysql-clust…...
Fabric.js 中文文档
Fabric.js 中文文档 基于canvas画布的实用类Fabric.js的使用 4、Fabric.js 常用的方法&事件 Fabric.js 画布 defaultCursor 属性(1) 官网文档地址:http://fabricjs.com/docs/github 地址:https://github.com/fabricjs/fabric.js Demo地址&#x…...
【面试重难点问题】c++中为什么可以函数重载,但是c语言中不可以
本文章是对于“c中为什么可以函数重载,但是c语言中不可以”这个问题的探究: 当然这是一个值得深入探讨的问题。在面对难题时,我们常常会竭尽全力寻找答案,不惜挖掘三尺以探究竟。面对上面这个问题时,理解计算机系统的…...
Elasticsearch优化汇总
文章目录 引言硬件设置优化禁用swap给系统留足够的内存JVM配置使用更快的硬件,使用 SSD 参数优化分片设计增加Buffer大小(增加吞吐量)预热文件系统 cache es查询设计优化预索引数据使用filter代替query字段映射避免使用脚本优化日期搜索为只读索引执行 force-merge预热全局序号…...
【落羽的落羽 C语言篇】指针·之其四
文章目录 一、字符指针变量二、数组指针变量1. 创建2. 数组指针类型3. 二维数组传参的本质 三、函数指针变量1. 创建2. 函数指针类型3. 函数指针的使用4. 分析两句“有趣”的代码(doge)5. typedef关键字 四、函数指针数组1. 创建2. 函数指针数组的用途—…...
十二、正则表达式、元字符、替换修饰符、手势和对话框插件、字符串截取
1. 正则表达式 1.1 基本使用 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&g…...