web服务器基础
目录
web服务器简介
(1)什么是www
(2)网址及HTTP简介
(3)http协议请求的工作流程
主配置文件内的参数
目录标签
缺点
虚拟主机vhosts
示例的格式如下
实例
多IP实现多网页
修改监听端口号
hosts文件及域名解析
修改hosts文件内缓存格式
实现效果
实现多域名解析IP地址
在linux上解析:
在windows上解析:
httpd错误信息及访问记录
参数Alias的使用
网页认证
htpasswd命令
语法
选项
参数
实例
动图实例
web服务器简介
(1)什么是www
www是world wide web的缩写,也就是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去。
与其他服务器类似,当你连接上www网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可以解析这些数据的软件来处理,那就是浏览器。www服务器与客户端浏览器之间的连接图。
1、 www所用的协议: 浏览器怎样向web服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是由http协议来定义的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。
2、www服务器需要提供可让客户端浏览的平台。目前最主流的Web服务器是Apache、Microsoft的Internet信息服务器(Internet Information Services,IIS)和unix nginx。
3、服务器所提供的最主要数据是超文本标记语言(Hyper Text Markup Language,HTML)、多媒体文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体),HTML只是一些纯文本数据,通过所谓的标记来规范所要显示的数据格式。
4、客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那么著名的浏览器就有内建在Windows操作系统内的IE浏览器了,还有Firefox浏览器和Google的chrome浏览器。
(2)网址及HTTP简介
web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。
URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>
浏览器常支持的协议有:http、https、ftp等。
主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。
端口号(port):http为80,https为443 (IANA:互联网数字分配机构)
- 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)
- 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP
- 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口
http请求方法:在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。
状态代码:
由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息 —— 表示请求已接收,继续处理
2xx:成功 —— 表示请求已被成功接收、理解、接受
3xx:重定向 —— 要完成请求必须进行更进一步的操作
4xx:客户端错误 —— 请求有语法错误或请求无法实现
5xx:服务器端错误 —— 服务器未能实现合法的请求
常见状态代码、状态描述的说明如下:
200 OK:客户端请求成功
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
403 Forbidden:服务器收到请求,但是拒绝提供服务
404 Not Found:请求资源不存在,举个例子:输入了错误的URL
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP报文:http报文中有很多行内容,这些行的字段内容都是由一些ASCII码串组成,但各个字段的长度是不同的。http报文可分为两种,一种是从web客户端发往web服务器的http报文,称为请求报文。另外一种是从web服务器发往web客户端的报文,称为响应报文 。
http请求报文由请求行、请求头部、空行和请求报文主体几个部分组成
http响应报文由起始行、响应头部、空行和响应报文主体这几个部分组成
MIME(Multipurpose Internet Mail Extension,多用途因特网邮件扩展)最初是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。后来http也支持了这个功能,用它来描述数据并标记不同的数据内容类型。当web服务器响应http请求时,会为每一个http对象数据加一个MIME类型。当web浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,并进行相应的处理。MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型。常见的MIME类型:
(3)http协议请求的工作流程
- 终端客户在web浏览器地址栏输入访问地址http://www.ceshi.com:80/index.html
- web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址
- web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
- web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
- 建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
- web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
- web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。
web服务器的类型
(1)仅提供用户浏览的单向静态网页单纯是由服务器单向提供数据给客户端,Server不需要与client端有互动,所以你可以到该网站上去浏览,但是无法进行数据的上传。
(2)提供用户互动接口的动态网站这种类型的网站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过“网页程序语言”来实现与用户互动的行为。常见的例如:PHP网页程序语言,配合数据库系统来进行数据的读、写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据库,变动的是数据库的内容,网页程序并没有任何改变。另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码(JavaScript)传送给客户端,客户端的浏览器如果提供JavaScript的功能,那么该程序就可以在客户端的计算机上面工作了;另外一种可在客户端执行的就是flash动画格式,在这种动画格式内还可以进行程序设计。搭建动态网站的需求:
LAMP(linux+Apache+MySQL+PHP)Apache主要提供www的服务器平台MySQL:传统的文件读取是很麻烦的,如果你只要读取该文件当中的一小部分,系统还是会将整个文件读出来,若又有人同时读取同一个文件时,那就会造成效率与系统上的问题,所以才会有数据库系统的推出。数据库其实是一种特殊格式的文件,这种文件要通过特殊接口(数据库软件)来进行读写。由于这个特殊接口已经针对数据的查询、写入做过优化设计,因此很适合多人同时写入与查询工作。PHP:PHP可以被用来建立动态网页,PHP程序代码可以直接在HTML网页当中嵌入,就像编辑HTML网页一样简单。PHP是一种“程序语言”,这种程序语言可以直接在网页当中编写,不需要经过编译即可执行。
# 服务主路径,程序运行只会先打开此配置文件(主配置文件),然后下面这个参数意思是从/etc/httpd下去查找相关的配置文件
主配置文件内的参数
ServerRoot "/etc/httpd"
监听端口
Listen 80
# 在以上serverRoot参数的前提下找到此httpd路径,系统会扫描以下包含的文件
Include conf.modules.d/*.conf
用户apache,使用httpd服务的时候会使用apache这个普通用户去管理此服务,root用户的任务太多了
User apache
Group apache
用户管理员
ServerAdmin root@localhost
# 服务主机名 域名/ip 访问
#ServerName www.example.com:80
目录标签
<Directory />
# 不允许被覆盖
AllowOverride none
# 请求所有拒绝,保护信息安全
Require all denied
</Directory>
# 文本主目录,网页文件的路径,此参数是全局变量,优先级比较低,如果有在.conf文件中设置虚拟机标签,会优先使用标签内定义的变量
DocumentRoot "/var/www/html"
# 虽然对根目录没有权限但是对/var/www下的目录有权限
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
# 在以上已经使用了DocumentRoot 指定了网站的路径,以下就是指定的文件
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
默认查找网页的路径是/var/www/html/index.html 由于以上参数DocumentRoot 设置,如果文件存在查看文件内容,如果不存在查找的是/var/www/html/.noindex.html redhat 测试界面
缺点
此方法可以实现一个网页,但是想要实现一台主机上多个网页就必须要使用到虚拟主机vhosts ,他的一个示例文件在/usr/share/doc/httpd-core/httpd-vhosts.conf
虚拟主机vhosts
[root@Server ~]# find / -name '*vhosts*'
/usr/share/doc/httpd-core/httpd-vhosts.conf
示例的格式如下
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
#精确定位,优先级高于全局匹配的网站资源路径(类似于精确查询和模糊查询)
DocumentRoot "/var/www/dummy-host.example.com"
ServerName dummy-host.example.com
#服务器别名
ServerAlias www.dummy-host.example.com
ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>
实例
多IP实现多网页
[root@Server conf.d]# pwd
/etc/httpd/conf.d
[root@Server conf.d]# vim newvhosts.conf
[root@Server conf.d]# vim newvhosts.conf
<VirtualHost 192.168.221.137:80>
#精确定位
DocumentRoot /www/137
#服务器主机命名
ServerName 192.168.221.137
</VirtualHost>
<Directory /www>
AllowOverride none
Require all granted
</Directory>
#在ens160这张网卡上增加一个IP地址
[root@Server conf.d]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.137/24 ipv4.gateway 192.168.221.2 ipv4.dns 114.114.114.114
#重新启动网卡
[root@Server conf.d]# nmcli device up ens160
成功用 "ens160899ea601-c004-3e76-93a3-dde18cef82f4" 激活了设备 ""。
#创建数据库目录
[root@Server /]# mkdir www
[root@Server /]# mkdir /www/{135,136,137}
[root@Server /]# cd www
[root@Server www]# ls
135 136 137
#假如带内容的html文件
[root@Server www]# echo 我是135 > 135/index.html
[root@Server www]# echo 我是136 > 136/index.html
[root@Server www]# echo 我是137 > 137/index.html
[root@Server www]# cd 135
[root@Server 135]# ls
index.html
[root@Server 135]# cat index.html
我是135
#关闭防火墙与selinux,重启服务
[root@Server 135]# setenforce 0
[root@Server 135]# systemctl stop firewalld
[root@Server 135]# systemctl restart httpd
linux上测试
[root@Server conf.d]# curl http://192.168.221.135
我是135
[root@Server conf.d]# curl http://192.168.221.136
我是136
[root@Server conf.d]# curl http://192.168.221.137
我是137
windows上测试
完整过程
修改监听端口号
[root@Server conf.d]# vim vhosts.conf
[root@Server conf.d]# systemctl restart httpd
Listen 8909
<VirtualHost 192.168.221.135:80>
DocumentRoot /www/135
ServerName 192.168.221.135
</VirtualHost>
<VirtualHost 192.168.221.136:8909> --修改端口号为8909
#精确定位
DocumentRoot /www/136
#服务器主机命名
ServerName 192.168.221.136
</VirtualHost>
<Directory /www>
AllowOverride none
Require all granted
</Directory>
使用netstat -tuanlp 查看端口号是否正确
hosts文件及域名解析
基于域名的网站,需要用到域名解析。 域名------->ip地址
浏览器如何通过域名去查询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域名服务器,依次类推)
修改hosts文件内缓存格式
实现效果
实现多域名解析IP地址
在linux上解析:
需要在本地修改hosts文件使得本地存有缓存
将虚拟主机的名称修改
创建DocumentRoot数据库文件夹并在文件夹下添加一个有内容的index.html文件,使得局部变量生效,这里局部变量就相当于数据库的精确查询,全局变量就相当于模糊查询
实现效果:
实验流程视频:
在windows上解析:
windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts
实现效果:
httpd错误信息及访问记录
错误信息
通过status来查看状态信息
[root@Server ~]# systemctl status httpd
访问记录
[root@Server ~]# tail -f /etc/httpd/logs/access_log
参数Alias的使用
[root@Server ~]# vim /etc/httpd/conf.d/newvhosts.conf
<VirtualHost 192.168.221.136:80>
#精确定位
DocumentRoot /www/hah
#服务器主机命名
ServerName www.hah.com
Alias /hah /pub/hah/hah.html ---当访问http://www.hah.com/hah 的时候会直接跳转到 /pub/hah/hah.html文件 等同于http://www.hah.com/pub/hah/hah.html
</VirtualHost>
#放通pub目录的访问权限
<Directory /pub>
AllowOverride none
Require all granted
</Directory>
#重新运行httpd程序
[root@Server ~]# systemctl restart httpd
#创建目录
[root@Server /]# mkdir pub
[root@Server /]# cd pub/
[root@Server pub]# mkdir hah
[root@Server pub]# echo 我是hah > hah/hah.html
[root@Server pub]# cat hah/hah.html
我是hah
测试结果
[root@Server pub]# curl http://www.hah.com/hah
我是hah
网页认证
htpasswd命令
apache服务器创建密码认证文件
补充说明
htpasswd命令 是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
语法
htpasswd(选项)(参数)
选项
-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。
参数
用户:要创建或者更新密码的用户名;
密码:用户的新密码。
实例
利用htpasswd命令添加用户
htpasswd -bc .passwd www.jsdig.com php
在bin目录下生成一个.passwd文件,用户名www.jsdig.com,密码:php,默认采用MD5加密方式。
在原有密码文件中增加下一个用户
htpasswd -b .passwd Jack 123456
去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
不更新密码文件,只显示加密后的用户名和密码
htpasswd -nb Jack 123456
不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码。
利用htpasswd命令删除用户名和密码
htpasswd -D .passwd Jack
利用htpasswd命令修改密码
htpasswd -D .passwd Jack
htpasswd -b .passwd Jack 123456
即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。
[root@Server conf.d]# htpasswd -c /etc/httpd/users shuyan
New password:
Re-type new password:
Adding password for user shuyan
[root@Server conf.d]# vim newvhosts.conf
<VirtualHost 192.168.221.136:80>
#精确定位
DocumentRoot /www/hah
#服务器主机命名
ServerName www.hah.com
Alias /hah /pub/hah/hah.html
</VirtualHost>
<Directory /pub>
AuthType Basic
AuthName "Login"
AuthUserFile /etc/httpd/users
Require user shuyan
</Directory>
[root@Server conf.d]# systemctl restart httpd
实现效果
第一次访问过后第次再访问就不需要用户名和密码了,这是因为浏览器的缓存需要清除掉浏览器缓存才能重新实现效果
动图实例
相关文章:

web服务器基础
目录 web服务器简介 (1)什么是www (2)网址及HTTP简介 (3)http协议请求的工作流程 主配置文件内的参数 目录标签 缺点 虚拟主机vhosts 示例的格式如下 实例 多IP实现多网页 修改监听端口号 hosts文件及域名解析 修改hosts文件内缓存格式 实现效果 实现多域名解析IP地址 在linux…...

矢量图片转换软件Vector Magic mac中文版功能特色
Vector Magic mac中文版是一款非常流行的矢量图片转换软件,它的功能特色主要体现在以下几个方面: 首先,Vector Magic mac中文版拥有出色的矢量转换能力。它采用世界上最好的全彩色自动描摹器,能够将JPG、PNG、BMP和GIF等位图图像…...

Window部署Oracle并实现公网环境远程访问本地数据库
文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…...

灵魂指针,教给(三)
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 目录 一、 字符指针变量 二、数组指针变量 2.1 数组指针变量是什么 2.2 数组指针变量如何初始化 三、二维数组传参本质 四、函数…...

纯手工搭建一个springboot maven项目
前言:idea社区版无法自动搭建项目,手动搭建的经验分享如下: 1 包结构 参考下图: 2 项目结构 3 maven依赖 具体的项目包结构如下图: 依据这个项目包结构配置一个springboot 的 pom依赖: <?xml ve…...
【Java】使用`LinkedList`类来实现一个队列,并通过继承`AbstractQueue`或者实现`Queue`接口来实现自定义队列
使用LinkedList类来实现一个队列,并通过继承AbstractQueue或者实现Queue接口来实现自定义队列。 以下是一个简单的示例,其中队列的大小与另一个List的容量保持一致: import java.util.LinkedList; import java.util.List; import java.util…...
ChatGPT消息发不出去了?我找到解决方案了
现象 今天忽然发现 ChatGPT无法发送消息,能查看历史对话,但是无法发送消息。 猜测原因 出现这个问题的各位,应该都是点击登录后顶部弹窗邀请[加入多语言 alapha 测试]了,并且语言选择了中文,抓包看到ab.chatgpt.com…...

《量子计算:下一个大风口,还是一个热炒概念?》
引言 量子计算,作为一项颠覆性的技术,一直以来备受关注。它被认为是未来计算领域的一次革命,可能改变我们对计算能力和数据处理的理解。然而,随着技术的不断进步和商业应用的探索,人们开始思考,量子计算到底是一个即将到来的大风口,还是一个被过度炒作的概念? 量子计…...
在Ubuntu中如何基于conda安装jupyterlab
在Ubuntu中如何创建ipykernel 可以用下面命令完成 conda create -n newenv python3.8conda activate enwenvconda install ipykernel5.1.4conda install ipython_genutilsipython -m ipykernel install --user --namepython3 --display-name Python3conda install -c conda-fo…...
Unity 中的 PlayFab 入门
要开始在 Unity 中使用 PlayFab,你只需执行以下两个简单步骤即可。第一步是设置 PlayFab 帐户。第二步是通过安装 Unity 编辑器扩展将其连接到 Unity。或者,你也可以下载 PlayFab SDK 并在没有扩展的情况下进行配置。 设置你的 PlayFab 帐户 访问 PlayFab 的网站并创建你的…...
常见排序算法(C++)
评判一个排序算法时除了时间复杂度和空间复杂度之外还要考虑对cache的捕获效果如何,cache友好的排序算法应该对数据的访问相对集中,快速排序相较于堆排序优点就是在于对cache的捕获效果好。 堆排序 时间复杂度:O(n log n …...
多线程编程互斥锁mutex的创建
在Linux下的多线程编程中,互斥锁(mutex)的创建主要有两种方式:静态分配和动态分配。这两种方式的主要区别在于互斥锁的生命周期和初始化方式。 静态分配(静态方式) 静态分配方式是在程序编译时就已经确定互…...

在 SpringBoot3 中使用 Mybatis-Plus 报错
在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…...

【libwebrtc】基于m114的构建
libwebrtc A C++ wrapper for binary release, mainly used for flutter-webrtc desktop (windows, linux, embedded).是 基于m114版本的webrtc 最新(20240309 ) 的是m122了。官方给出的构建过程 .gclient 文件 solutions = [{"name" : src,"url...

ansible-playbook的角色(role)
1前言 角色目录如下(分别为httpd角色和nginx角色) handlers/ :至少应该包含一个名为 main.yml 的文件; 其它的文件需要在此文件中通过include 进行包含 vars/ :定义变量,至少应该包含一个名为 main.yml 的…...

SNR = 6.02N + 1.76dB 公式推导
简介 接触ADC或DAC时您一定会碰到这个经常被引用的公式,用于计算转换器理论信噪比 (SNR)。与其盲目地相信表象,不如从根本上了解其来源,因为该公式蕴含着一些微妙之 处,如果不深入探究,可能导致对数据手册技术规格和转…...

归并排序 刷题笔记
归并排序的写法 归并排序 分治双指针 1.定义一个mid if(l>r)return ; 2.分治 sort(q,l,mid); sort(q,mid1,r); 3. 双指针 int il,jmid,k0; 将双序列扫入 缓存数组 条件 while(i<mid&&j<r) 两个数列比较大小 小的一方 进入缓存数组 4. 扫尾 while(…...
字节一面:TCP 和 UDP 可以使用同一个端口吗?
数据包是计算机网络通信的核心,包含头部和数据负载。TCP和UDP协议在传输层使用端口号区分服务和应用。操作系统通过IP头部中的协议字段和端口号来管理网络流量,确保TCP和UDP流量即使共用端口号也不会相互干扰。 在现代计算机网络中,数据传输…...

java guide 八股
Java语言特点 简单易学、面向对象(继承、封装、多态)、平台无关性(Java虚拟机jvm)、支持多线程、可靠、安全、高效、支持网络编程、编译与解释共存 JVM:Java虚拟机(跨平台的关键) JREÿ…...
Windows上使用client-go远程访问安装在本地WMware上的Linux虚拟机里的minikube
我在自己的Windows上安装了WMware,并在WMware上安装了CentOS操作系统,然后在CentOS上创建了一个叫minikube的用户,使用minikube用户启动了一个minikube集群,但是我在Windows上使用client-go并无法连通minikube,搜遍全网…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...