从0开始搭建个人博客《第十一期:优化网站访问速度》

目录

一、背景说明

二、Nginx性能优化

(一)文件句柄

        1.系统全局性修改和用户局部性修改

        2.进程局部性修改

(二)CPU亲和配置

        1.设置工作进程数

        2.设置连接数

(三)事件处理模型优化

(四)设置会话保持时间

(五)开启Gzip压缩

        1.安装Gzip模块

        2.配置Gzip模块

        3.判断Gzip压缩是否开启成功

(六)开启高效文件传输模式

(七)使用HTTP/2协议

        1.安装HTTP2模块

        2.配置HTTP2模块

        3.验证是否开启成功

(八)缓存策略配置

        1. 浏览器缓存

​编辑        2. Nginx 本地缓存

(九)日志配置优化

        1. 调整nginx输出日志的级别

        2. 优化日志写入规则

三、搭建免费的CDN加速

(一)免费CDN介绍

        1.FreeCDN

        2.Procdn

        3.cloudflare

(二)搭建过程

(三)完善配置

(四)验证是否成功开启

四、网站优化后的效果

五、其他优化建议

(一)数据库表增加索引

(二)对图片进行压缩上传

(三)提高服务器配置

六、结语


一、背景说明

        网站上线后,受限于服务器配置和网络带宽等因素,致使用户每次访问网站首页,加载速度都非常的慢。尤其是首页如果需要加载大量图片和文件资源进行页面渲染时,这种卡顿感就会无限放大,如下图所示,加载时间最长的图片,都需要近16秒,平均6~7秒,这是不能够接受的。

        如果不进行优化,则会降低访问者的浏览体验,最终导致网站访问量的流失。那么如何在有限的资源条件下,做到最极致的优化呢?本文将从多个方面进行实践和验证,最终实现网站访问速度的提高。

二、Nginx性能优化

(一)文件句柄

        在linux或Unix系统上,一切皆文件,每一次用户发起请求就会生成一个文件句柄,文件句柄可以理解为就是一个索引。随着请求量的增多,进程调用的频率增加,文件句柄的产生就越多。系统对文件句柄默认的限制是1024个,对Nginx来说非常小了,需要改大一点,设置方式有以下几种。

        1.系统全局性修改和用户局部性修改

        输入以下命令,打开用于设置Linux系统中用户和进程的资源限制的配置文件。‌这个文件允许系统管理员设定用户和进程的资源使用限制,‌包括打开文件的数量、‌线程数和内存用量等。‌

vim /etc/security/limits.conf

        在文件末尾添加以下4个参数配置。

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

        参数说明:

        soft:软控制,到达设定值后,操作系统不会采取措施,只是发提醒

        hard:硬控制,到达设定值后,操作系统会采取机制对当前进程进行限制,这个时候请求就会受到影响

        root:这里代表root用户(系统全局性修改)

        *:代表全局,即所有用户都受此限制(用户局部性修改)

        nofile:指限制的是文件数的配置项。后面的数字即设定的值,一般设置10000左右

        ps:这个地方应该根据实际情况进行设置,可以设置全局的,也可以设置用户级别的

        2.进程局部性修改

        使用以下命令,查看系统打开文件的最大数量限制。

ulimit -n

        接着打开nginx配置文件。

vim /usr/local/nginx/conf/nginx.conf

        在配置文件中添加以下配置项,设置每个进程的最大文件打开数。这个参数对于Nginx的性能优化至关重要,‌因为它直接影响到Nginx能够处理的文件句柄数量,‌进而影响其并发处理能力,最好与ulimit -n查出的值保持一致,以确保Nginx能够充分利用系统资源。‌

worker_rlimit_nofile 65535; #进程限制

(二)CPU亲和配置

        cpu的亲和能够使nginx对于不同的work工作进程绑定到不同的cpu上去。这能够减少在work间不断切换cpu,使得进程通常不会在处理器之间频繁迁移,进程迁移的频率小,以此来减少性能损耗。

在这里插入图片描述

        1.设置工作进程数

        Nginx运行工作进程个数一般设置CPU的核心或者核心数x2,输入以下命令可查询服务器的cpu数量和核心数。

lscpu | grep '^CPU(s):'   #获取逻辑CPU数量
nproc   #获取CPU的逻辑核心总数

        工作进程数worker_processes最多开启8个,8个以上性能提升就有限了,而且稳定性变得更低,所以8个进程够用了,核心数和对应配置如下:

        2核:

worker_processes 2; #工作进程数
worker_cpu_affinity 01 10;  #指定每个工作进程绑定的CPU核心

        4核:

worker_processes 4; #工作进程数
worker_cpu_affinity 0001 0010 0100 1000; #指定每个工作进程绑定的CPU核心

        8核:

worker_processes 8; #工作进程数
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; #指定每个工作进程绑定的CPU核心

        根据自己的实际情况,将配置添加到nginx配置文件中。

        2.设置连接数

        在Nginx中,‌work_connections参数是关键配置项之一,‌它指定了每个worker进程可以同时处理的客户端连接的最大数量。‌这个数值的设置通常基于服务器的性能和内存状况来决定,‌以确保Nginx能够高效地处理来自客户端的请求。‌实际上,‌Nginx的最大并发连接数是由worker进程的数量和每个进程允许的最大连接数共同决定的。‌

        具体配置如下:

worker_connections  1024; #设置每个工作进程的线程数

(三)事件处理模型优化

        nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路复用模型,在freebsd使用kqueue的IO多路复用模型,在solaris使用/dev/pool方式的IO多路复用模型,在windows使用的icop等等。要根据系统类型不同选择不同的事务处理模型,博主服务器操作系统是Centos,因此将nginx的事件处理模型调整为epoll模型。

‌        epoll模型是‌Linux内核为处理大批量文件描述符而设计的多路复用IO接口,它是‌select和‌poll的增强版本。 epoll模型能够显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不需要遍历整个被侦听的描述符集,只需遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合。‌

        具体配置如下:

events {use epoll; #指定事件处理模型
}

        ps:在不指定事件处理模型时,nginx默认会自动的选择最佳的事件处理模型服务。

(四)设置会话保持时间

        在Nginx中,‌keepalive_timeout参数用于配置长连接的超时时间,单位为秒。‌这个参数的作用是保持客户端与服务器之间的连接在一定时间内保持活动状态,‌以便客户端可以重用这些连接来发送后续的请求,‌而无需每次都建立新的连接。‌这样做可以减少连接建立和关闭的开销,‌提高服务器的资源利用率和响应速度,‌尤其是在处理大量并发请求时。‌

        具体配置如下:

keepalive_timeout  60; #设置会话保持时间,单位为秒

(五)开启Gzip压缩

        Nginx的Gzip压缩功能主要用于压缩HTTP响应内容,‌以减小数据传输的大小,‌从而提高网站的性能和速度。‌Gzip功能通过在发送给客户端之前对响应内容进行压缩,‌可以有效减少数据传输的带宽消耗和响应时间。‌

        1.安装Gzip模块

        在Linux系统中,编译Nginx时使用以下命令安装Gzip模块。

./configure --prefix=/usr/local/nginx --with-http_gzip_static_modulemake install

        2.配置Gzip模块

        在Nginx配置文件中添加以下内容(PS:以下配置可根据自己网站的实际需求做调整):

gzip on; # 开启Gzip压缩功能
gzip_min_length 1k; # 设置最小压缩文件大小为1KB
gzip_buffers 4 32k; # 设置压缩缓冲区个数和大小
gzip_http_version 1.1; # 设置支持的HTTP协议版本为1.1
gzip_comp_level 6; # 压缩比率, 一般选择4-6
gzip_types text/plain application/x-javascript text/css application/xml; # 设置需要压缩的文件类型

        3.判断Gzip压缩是否开启成功

        添加以上配置后,重启nginx,打开F12,查看请求,出现如下图所示红框字样则说明开启成功。

(六)开启高效文件传输模式

        当在 Nginx 配置中设置 sendfile on,‌Nginx 将使用零拷贝技术来传输文件,‌这种技术只需要两次上下文切换和两次数据拷贝,‌从而减少了系统开销,‌提高了文件传输的效率。‌相比之下,‌当 sendfile 设置为off时,‌Nginx 会使用传统的文件传输技术,‌即通过read + write的方式进行文件传输,‌这需要四次上下文切换和四次数据拷贝,‌效率较低。此外,‌与 sendfile 相关的另一个配置选项是tcp_nopush。‌当 tcp_nopush设置为on时,‌Nginx 会等待数据包最大时一次性传输出去,‌这有助于解决网络堵塞问题,‌减少网络报文段的数量。‌

        具体配置如下:

sendfile on; # 开启高效文件传输模式。
tcp_nopush on; #需要在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量。将响应头和正文的开始部分一起发送,而不一个接一个的发送。

(七)使用HTTP/2协议

        HTTP/2 协议相较于传统的 HTTP/1.1 协议,具有多路复用、头部压缩等特性,可以显著提高图片加载的效率。启用 HTTP/2 就好比为数据传输开辟了多条高速公路,不再是一条道走到黑,能够同时传输多个请求,大大减少了等待时间。

        1.安装HTTP2模块

        在Linux系统中,编译Nginx时使用以下命令安装HTTP2模块。

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_v2_modulemake install

        2.配置HTTP2模块

        在Nginx配置文件中,只需要在在监听的443端口配置这一栏,添加以下代码即可启用 HTTP/2。

http2 on; #启用HTTPS并启用HTTP/2协议支持功能(需要操作系统和SSL库支持)

        3.验证是否开启成功

        访问测试网站:https://domsignal.com/test/,输入网站域名,即可知道结果。

(八)缓存策略配置

        缓存是提高网站性能的重要手段之一。Nginx提供了多种缓存策略,可以根据实际需求进行配置。以下是一些常见的缓存策略:

        1. 浏览器缓存

        通过设置正确的 HTTP 头信息,让浏览器缓存图片、css、js资源。当用户再次访问相同的页面时,如果这些资源没有更新,浏览器将直接使用本地缓存,而无需再次从服务器下载。

        配置如下:

location ~* \.(jpg|jpeg|png|gif|svg|css|js)$ {expires 30d; #设置缓存有效期时间为30天,可自行调整时间add_header Cache-Control "public";
}

        2. Nginx 本地缓存

        在Nginx中设置本地缓存可以通过配置文件中的proxy_cache_path指令和相关的缓存指令来实现。

        配置示例:

http {proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10ginactive=60m use_temp_path=off;server {listen 80;server_name localhost;location / {proxy_pass  # proxy_cache my_cache;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;}}
}

        参数解释:

  • proxy_cache_path 定义了缓存的存储路径、缓存目录的层次结构、缓存键的区域、最大缓存大小以及缓存内容在多长时间没有被访问后应被视为不活跃并可能被删除。

  • levels=1:2 指定了缓存目录的层次结构。

  • keys_zone=my_cache:10m 设置了内存区域以存储缓存键,大小为10MB。

  • max_size=10g 指定了最大缓存大小为10GB。

  • inactive=60m 指定了缓存数据在60分钟内未被访问就会被移除。

  • use_temp_path=off 关闭临时文件的使用,这样Nginx就不会将大文件写入临时目录。

  • proxy_cache my_cache  启用代理缓存。

  • proxy_cache_valid 200 302 10m  设置HTTP状态码为200和302的响应缓存有效期为10分钟。

  • proxy_cache_valid 404 1m 设置HTTP状态码为404的响应缓存有效期为1分钟。

  • proxy_cache_use_stale 指定了在指定的错误情况下使用过期的缓存内容。

  • 确保替换 http://my_upstream 为你实际的上游服务器配置。这个配置假设你已经设置了一个名为 my_upstream 的上游服务器块。

(九)日志配置优化

        日志是排查问题的重要手段,但是过多的日志会导致磁盘空间不足,影响系统性能。因此,需要对Nginx的日志进行优化。以下是一些优化方法:

        1. 调整nginx输出日志的级别

        Nginx支持的日志级别有:debug、info、notice、warn、error等。可以通过修改Nginx配置文件中的log_level参数来调整日志级别。具体配置如下:

        2. 优化日志写入规则

        Nginx支持的日志级别有:debug、info、notice、warn、error等,可以通过修改Nginx配置文件中的log_level参数来调整日志级别。还有如果每次请求成功都会写入一条日志,这显然会增加磁盘的压力,因此需要优化nginx的日志级别、写入规则和压缩等级,配置如下:

access_log /usr/local/nginx/logs/access.log combined buffer=32k gizp flush=1m info; # 配置访问日志写入规则、压缩、日志级别
error_log /usr/local/nginx/logs/error.log info; # 配置错误日志,并设置日志级别为info

参数说明:

/usr/local/nginx/logs/access.log 是访问日志文件的路径。

combined 是日志格式,这是一个常用的日志格式,它记录的信息比较全面,包括时间、客户端IP、请求方法等。

buffer=32k 指明了缓冲区的大小,这里设置为32KB。

gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。

flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空,当产生第一条数据后过了一分钟才写入。

info 日志级别,常见的日志级别有 debug、info、notice、warn、error、crit、alert、merg,级别越高,记录的信息越少,默认为 error。

三、搭建免费的CDN加速

        CDN加速主要是解决因分布、‌带宽、‌服务器性能带来的访问延迟问题,‌适用于站点加速、‌点播、‌直播等场景。‌它使用户可以就近取得所需内容,‌解决Internet网络拥挤的状况,‌提高用户访问网站的响应速度和成功率。CDN的基本技术思路是尽可能避开互联网上可能影响数据传输速度和稳定性的环节,‌提升内容传输的速度和稳定性。‌通过将源站资源缓存到全国各地的边缘服务器,‌供用户就近获取,‌从而降低源站压力。

(一)免费CDN介绍

        收集了网上目前仍在运行的免费cdn,有以下几家:

        1.FreeCDN

        能够同时提供DDOS防御、CC防御和支持HTTPS/SSL证书并且不限流量,这个是目前发现的唯一 一家可以提供这种免费的服务,其他大多是限制了流量或者不提供DDOS防御/CC防御,能够支持HTTPS/SSL证书的也不多,提供国内和国外的免费cdn。

        网址: https://www.freecdn.pw/

        2.Procdn

        是一家新兴的cdn服务提供商,采用了lecdn系统,仅需要1元即可获得cdn服务,如您不会用,还可进群找技术人员免费提供支持,节点30+。

        网址:http://procdn.cn

        3.cloudflare

        这个家喻户晓,可谓最大方的cdn服务提供商了,随便跑,并且有着不错的防御,就是国内速度不太行,但是可以通过优选ip来缓解这个问题,问题不大,对应个人用户来说是个很好的选择。

        网址:https://www.cloudflare-cn.com/

(二)搭建过程

        这里以cloudflare为例,进行CDN加速搭建。打开cloudflare网站首页后,先进行注册登录。

        应用程序服务选择免费->添加一个网站

        接着输入邮箱和密码进行注册。

        注册成功后,会进入以下页面,先切换右上角的语言为简体中文,方便后续操作,然后点击添加网站或应用程序按钮。

        接着输入网站的域名地址,点击继续。

        选择Free套餐并点击继续。

        自动加载或导入DNS记录,点击继续。

        点击继续。

        进入后台后,我们需要把cloudflare分配给我们的DNS服务器,在我们购买域名的注册机构或经销商哪进行更换,由cloudflare负责对我们的域名进行解析。

        以阿里云为例,博主的域名是在阿里云进行购买注册的,进入阿里云域名控制台->域名列表->DNS管理->DNS修改

        修改成cloudflare分配给我们的DNS服务器。

        修改DNS配置完成后,cloudflare后台显示如下图所示则说明DNS解析成功配置。

(三)完善配置

        进入DNS->设置菜单,开启DNSSEC配置,该配置通过提供数字签名和验证机制,‌增强了DNS数据的可信度和安全性,‌保护用户免受恶意重定向和其他网络攻击的影响,‌同时提高了整个互联网的安全性和可靠性。

        进入SSL/TLS->概述菜单,将SSL/TLS加密模式设置为完全,该配置用于解决使用 CloudFlare 导致网站「重定向的次数过多」导致的访问失败问题。同时将CDN的回源端口设置为443(‌HTTPS协议的端口)‌,‌这样CDN回源时会以HTTPS协议请求源站,‌避免触发源站的强制跳转逻辑。‌

        进入安全性->自动程序菜单,开启自动程序攻击模式和阻止AI爬虫程序和爬网程序。

        进入安全性->设置菜单,可配置网站的安全级别、质询通过期、浏览器完整性检查、替换不安全的 JavaScript 库。

(四)验证是否成功开启

        进入站长工具网站 https://ping.chinaz.com/,输入网站域名进行ping测试,如果发现有多个不同的解析响应IP,则说明开启成功。

四、网站优化后的效果

        如下图所示,网站的加载时间明显得到显著的提升。

五、其他优化建议

(一)数据库表增加索引

        数据库表增加索引对网站的好处主要体现在提高查询速度、‌减少IO操作、‌提高数据的唯一性和完整性、‌以及提高并发性能。‌

(二)对图片进行压缩上传

        主要原因是为了提高网站加载速度并节省存储空间。‌在数字时代,‌图片是网页和社交媒体上不可或缺的元素,‌但大尺寸的图片不仅会拖慢网站的加载速度,‌影响用户体验,‌还会占用大量的存储空间,‌增加网站的运营成本。‌因此,‌对图片进行压缩变得尤为重要。‌压缩图片可以通过减少图片的文件大小,‌从而加快网页的加载速度,‌提高用户体验和满意度。‌此外,‌压缩图片还能有效节省存储空间,‌降低网站的存储成本。‌

(三)提高服务器配置

        网站优化需要提升服务器的配置主要包括处理器(‌CPU)‌、‌内存(‌RAM)‌、‌存储空间、‌带宽(‌Bandwidth)‌、‌操作系统和虚拟化技术。‌

        处理器(‌CPU)‌:‌选择多核心的中央处理器,‌如四核或更高,‌以及较大的高速缓存可以提供更快的数据读写速度,‌提升网站性能。‌

        内存(‌RAM)‌:‌需要较大的内存容量来支持处理大量的数据和请求。‌选择具有可扩展性的内存模块,‌以便在需要时进行升级。‌

        存储空间:‌选择具有足够存储空间的硬盘或固态硬盘(‌SSD)‌,‌以容纳网站的数据和文件。‌确保服务器配置有数据冗余和备份机制,‌以防止数据丢失或损坏。‌

        带宽(‌Bandwidth)‌:‌选择具有较高带宽的网络连接,‌满足用户对快速加载网站的需求。‌使用内容分发网络(‌CDN)‌来加速网站的访问速度,‌减少服务器负载。‌

        操作系统(‌Operating System)‌:‌选择稳定性较高的操作系统,‌如Linux或Windows Server等,‌确保具有良好的安全性能,‌以保护网站免受恶意攻击。‌

        虚拟化技术:‌使用虚拟化技术可以提高服务器的资源利用率,‌并简化管理和维护工作。‌

        此外,‌还有一些具体的优化措施可以帮助提高服务器的性能和可靠性,‌包括合理配置内存和CPU、‌优化磁盘I/O性能、‌调整网络配置、‌加强服务器安全性、‌使用性能监控工具等。‌这些措施共同作用,‌可以显著提升网站的访问速度和用户体验,‌确保网站的稳定运行。

六、结语

        扫下方二维码关注或访问个人网站 https://www.xiaolin-code.com/,第一时间获取最新文章更新。 

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

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

相关文章

MySql 高阶 概念(了解即可)

mysql 分为4层结构: 连接层:负责处理链接,鉴权,安全。 服务层:负责sql接口,sql分析,sql优化,sql缓存。 引擎层:负责执行服务层的操作,不同的引擎拥有不同的特…

《机器学习》一元、多元线性回归的实现 No.4

一、一元线性回归实现 先直接看完整代码: import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegressiondate pd.read_csv(data.csv) #导入数据plt.scatter(date[广告投入],date[销售额]) # 用散点图展示数据 plt.sh…

这对二婚夫妻结婚半年,一起生活才一个月,就走到了婚姻尽头!

这对二婚夫妻结婚半年,一起生活才一个月,就走到了婚姻尽头! 这是一篇涉离婚纠纷的民事起诉状 (范文点评) 离 婚 起 诉 状 原告:韩某斌,男,现年37岁,汉族,打…

记录一个变量溢出的bug

文章目录 如题 如题 count2变量溢出了(超过了255),结果导致busOff_16bitRecordHILTime变量莫名其妙被清0

「C++系列」vector 容器

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站:人工智能教程 文章目录 一、vector 容器1. 基本特性2. 基本操作3. 注意事项 二、应用场景1. 应用场景2. 案例案例一&#xff1…

DRF——请求的封装与版本管理

文章目录 django restframework1. 快速上手2. 请求数据的封装3. 版本管理3.1 URL的GET参数传递(*)3.2 URL路径传递(*)3.3 请求头传递3.4 二级域名传递3.5 路由的namespace传递 小结 django restframework 快速上手请求的封装版本…

公司的全称可以申请注册商标吗,还有什么注意!

近日有个网友找到普推知产商标老杨,发来公司全称,问这个可以申请注册商标不,看发来是“贵州**酒业有限公司”,应该是做茅台镇酒的,以前以分析过《公司全称能不能注册商标》,这次帮网友分析完做下补充。 公…

基于springboot的招聘系统的设计与实现

TOC springboot614基于springboot的招聘系统的设计与实现--论文 研究背景 近年来,由于计算机技术和互联网技术的快速发展,使得所有企事业单位内部都是数字化、信息化、无纸化的发展趋势,随着趋势的发展,各种决策系统、辅助系统…

编码器精度

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、影响因素二、编码器精度三、位置因素四、环境因素五、磁编码器 前言 送给大学毕业后找不到奋斗方向的你&…

IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表

背景 众所周知,IntelliJ IDEA 是 Java 领域常用的开发工具之一,IDEA Ultimate(旗舰版)或其他例如 DataGrip 等 Intellij 平台的工具都集成了对数据库的访问能力。 但是,对于做了分库分表的项目,直接使用 …

中秋节月饼销售利用106短信群发平台业绩翻倍案例分析

在中秋节这一传统佳节,月饼作为节日的标志性食品,其销售市场竞争尤为激烈。为了在众多品牌中脱颖而出,不少月饼销售企业开始探索创新的营销方式。其中,利用106短信群发平台进行精准营销,成为众多企业实现业绩翻倍的有效…

TCP端口范围

ip_local_port_range sysctl -a | grep ip_local_port_range | head 默认情况下,net.ipv4.ip_local_port_range的默认值为32768-60999。这意味着本地应用程序可以使用的端口号范围为32768到60999。 sysctl -a | grep net.ipv4.ip_local_reserved_ports |head …

C++ 特殊类设计以及单例模式

目录 1 不能被拷贝 2 只能在堆上创建对象 3 只能在栈上创建对象 4 禁止在堆上创建对象 5 不能被继承的类 6 单例类 特殊类就是一些有特殊需求的类。 1 不能被拷贝 要设计一个防拷贝的类,C98之前我们只需要将拷贝构造以及拷贝赋值设为私有,同时只声明…

2 种方式申请免费 SSL 证书,阿里云 Certbot

如何使用免费的 SSL 证书,有时在项目中需要使用免费的 SSL 证书,Aliyun 提供免费证书,三个月有效期,可以直接在aliyun 申请,搜索 SSL 证书,选择测试证书。 Aliyun 证书需要每三月来来换一次,页…

【学习笔记】8、脉冲波形的变换与产生

本章简略记录。 8.1 单稳态触发器(脉冲触发) 单稳态触发器 应用于 :(1)脉冲整型(2)脉冲延时 (3)定时 单稳态触发器的工作特性: 没有触发脉冲作用时&#xf…

Vue项目-三级联动的路由跳转与传参

三级联动组件的路由的跳转与传参 三级联动,用户可以点击的:一级分类、二级分类和三级分类 以商城项目为例,Home模块跳转到Search模块,以及会把用户选中的产品(产品名字、产品ID)在路由跳转的时候&#xff…

《黑神话.悟空》:一场跨越神话与现实的深度探索

《黑神话.悟空》:一场跨越神话与现实的深度探索 在国产游戏日益崛起的今天,《黑神话.悟空》以其独特的剧情、丰富的人物设定和深刻的主题,成为了无数玩家翘首以盼的国产3A大作。这款游戏不仅是一次对传统故事的创新演绎,更是一场对…

操作系统:内存管理策略

外部碎片 当应用程序启动时,由操作系统负责给该应用程序分配其内存空间,假设此时启动了三个应用程序,操作系统分别给其分配了100m,10m和50m的内存,内存情况如下图 此时如果程序B下线,程序A和程序C之间便会…

【css】伪元素实现图片个悬停文字聚焦效果

实现重点: 文字覆盖在图片上: 通过使用 position: absolute 将 .box 文字盒子定位在图片上方。父容器 .img-wrap 使用了 position: relative 确保子元素的绝对定位在父容器的边界内生效。 创建悬停效果: 通过使用 &::before 和 &::…

国富基金入股的关联性与奇瑞依赖症,大昌科技业务独立性引关注

《港湾商业观察》廖紫雯 日前,安徽大昌科技有限公司(以下简称:大昌科技)更新招股书并完成三轮问询,公司冲刺深交所创业板得到进一步进展。此前,2023年6月,大昌科技IPO获深交所受理,…