当前位置: 首页 > news >正文

Apache防盗链、网页压缩、网页缓存

目录

网页压缩

类型

示例

动态添加模块操作步骤

重装Apache操作步骤

网页缓存

示例

操作步骤

隐藏版本信息

操作步骤

Apache防盗链

定义

原理

配置防盗链实验环境

实验环境

本地图片盗链示例

操作步骤

防盗链示例

操作步骤


网页压缩

网站的访问速度是由多个因素所共同决定的,这些因素包括应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是 Apache本身的响应速度。可以使用网页压缩提升应用程序的速度。更重要的是,它完全不需要任何的成本,只不过是会让服务器 CPU 占用率稍微提升一两个百分点或者更少。

类型

  • gzip
    • 压缩效率高,对CPU占用较大
  • deflate
    • 压缩效率没有gzip高,对CPU占用小

示例

通过deflate模块实现网页压缩

在已经通过源码包安装过Apache的情况下,如果还保留着源码包,可以重新配置、编译、安装,重装Apache的操作不会影响以前的参数

或者在上一次安装时配置过动态加载模块的功能,就可以利用apxs的工具去不用重装动态添加模块

动态添加模块操作步骤

在不用重装Apache的情况下动态添加deflate模块

cd到Apache HTTP服务器用于存放与过滤器相关的模块代码

使用apxs工具进行操作

  • -i:安装模块。将编译后的模块安装到 Apache 服务器中。
  • -c:编译模块。将源代码文件(这里是mod_deflate.c)编译成共享对象文件(.so文件)。
  • -a:自动激活模块。编译并安装模块后,立即启用它,不需要手动编辑配置文件。

最后使用apachectl命令配合管道和grep查看是否成功加载了deflate模块

[root@localhost filters]# cd /root/httpd-2.4.25/modules/filters/
[root@localhost filters]# apxs -i -c -a mod_deflate.c
[root@localhost filters]# apachectl -t -D DUMP_MODULES | grep deflatedeflate_module (shared)

在httpd的配置文件启用mod_deflate模块

[root@localhost filters]# vim /usr/local/httpd/conf/httpd.conf
在末行模式下搜索:/deflate
LoadModule deflate_module     modules/mod_deflate.so    # 去掉开头注释
<IfModule mod_deflate.c># 对指定的类型应用deflat进行压缩(文本、样式表、图像)AddOutputFilterByType DEFLATE text/html text/css text/jpg text/png text/gifDeflateCompressionLevel 9    # 指定了压缩级别为9,表示最高级别的压缩(压缩比最高,但消耗CPU资源较多)SetOutputFilter DEFLATE    # 指定默认的输出过滤器为deflate进行输出内容的压缩
</IfModule>

重装Apache操作步骤

使用直接重装Apache的方式添加deflate模块

先使用apachectl -t -D DUMP_MODULES | grep deflate命令查看当前Apache有没有deflate模块

如果Apache是开启状态,要使用systemctl stop httpd关闭服务

进入源码包解压目录,指定安装目录,开启一些功能,网页压缩用到的就是deflate模块

./configure处理完后,使用make && make install命令编译并安装

[root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
[root@localhost httpd-2.4.25]# make && make install

使用ll命令查询deflate模块有没有被启用,可以看到mod_deflate.so文件是存在的

[root@localhost httpd-2.4.25]# ll /usr/local/httpd/modules/mod_deflate.so 
-rwxr-xr-x 1 root root 53096 7月  10 20:43 /usr/local/httpd/modules/mod_deflate.so

但是使用apachectl -t -D DUMP_MODULES | grep deflate命令就查询不到,那是因为在Apache的配置文件中并没有启用

编辑httpd的主配置文件,在大概143行左右,可以看到有很多LoadModule语句,我们就在这些LoadModule下面添加新的模块加载语句

在模块加载语句的第二部分,可以使用绝对路径也可以使用相对路径,因为在安装Apache时,通过./configure脚本定义了prefix(前缀)规则,所以在Apache的配置文件里想要指定某一个文件的路径,前缀路径可以省去

IfModule标签用于条件地加载模块配置,它的作用是检查当前的 Apache 环境中是否加载了指定的模块,只有当模块加载后,包裹在 IfModule 标签内的配置指令才会生效。

[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.confLoadModule deflate_module modules/mod_deflate.so
<IfModule mod_deflate.c>    # 只有当 mod_deflate 模块加载时才会执行下面的配置DeflateCompressionLevel 6 # 压缩级别,数字越大压缩比就越大SetOutputFilter DEFLATE   # 启用deflate模块# 告诉服务器对哪些文件进行压缩,如果是已经压缩过的,就不再压缩AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/jsonSetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-varySetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-varyAddOutputFilterByType DEFLATE text/*AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascriptAddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
</IfModule>

保存并退出,可以使用httpd -t来检测配置文件中是否有语法错误,如果提示Syntax OK,说明没有错误

因为需要httpd重新加载修改后的配置文件,使新添加的配置生效,所以重启服务

此时在浏览器中访问Web服务器,按下键盘上的F12打开开发人员工具,选中Web服务器的ip地址,在响应标头中可以看到压缩技术是gzip

实验结束


网页缓存

网页缓存是将一部分经常不会改变和变动很少的页面缓存起来,下次浏览器再次访问这些页面时,不需要再次去下载这些页面,从而提高了用户的访问速度。Apache的mod_expires模块会自动生成页面头部信息中的Expires标签和Cache-Control 标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。

示例

实现网页缓存

操作步骤

打开httpd主配置文件,开启expires模块并添加,重启服务

[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
在末行模式搜索:/expires_module
将前面的注释去掉,开启expires模块
LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>ExpiresActive On    # 开启缓存功能ExpiresDefault "access plus 60 seconds"    # 缓存时间设置为60秒
</IfModule>检测语法正确性,重启服务[root@localhost httpd-2.4.25]# httpd -t
Syntax OK
[root@localhost httpd-2.4.25]# systemctl restart httpd

重启服务后,来到浏览器访问Web服务器,可以看到响应头的信息中多了两行信息


隐藏版本信息

软件的漏洞信息和特定版本是相关的,因此版本号对于攻击者来说是很有用的,在浏览器中的开发人员工具,响应标头中的server项,可以看到Apache的版本信息

如果网络攻击者得到Apache的版本信息,就会有针对性的进行攻击,给网站造成损失。所以在实际的生产环境中要隐藏Apache的版本号,减少攻击风险。

操作步骤

[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
在末行模式下搜索:/httpd-default
将Include语句前的注释去掉,表示包含Include语句后面指定的文件在当前文件中(相当于把指定文件的内容复制粘贴到当前文件的当前Include语句的位置)
# Various default settings
Include conf/extra/httpd-default.conf

保存并退出,打开httpd.default文件

[root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
在第55行就可以设置隐藏版本信息,这里改为Prod
ServerTokens Prod

可以看到注释里提供了选项:Set to one of: Full | OS | Minor | Minimal | Major | Prod

选项

说明

ServerTokens Full

返回最详细的服务器信息,包括操作系统类型和编译的模块列表。

例如:Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11

ServerTokens OS

只返回操作系统类型。

例如:Apache/2.4.41 (Unix)

ServerTokens Minor

返回主版本号和次版本号。

例如:Apache/2.4

ServerTokens Minimal

返回主版本号。

例如:Apache/2

ServerTokens Major

只返回主版本号。

例如:Apache/2

ServerTokens Prod

返回最少的信息,只显示 Apache,省略版本号。

例如:Apache

保存并退出,重启服务。访问Web服务器

可以看到版本信息只显示了一个Apache


Apache防盗链

Apache防盗链(Hotlinking)是一种保护措施,意思是阻止其他网站或未经授权的第三方直接链接到您网站上的图片、视频、音频或其他资源的行为。

当某个网站直接使用您网站上的资源时,他们实际上是在消耗您的带宽和服务器资源,而且可能未经您许可。

定义

  • 防盗链是指通过服务器配置,禁止外部网站或者未授权的第三方直接使用您网站上的资源链接。如果有人尝试在其网页中直接使用您的资源链接,访问者在该网页上就会看到无法加载资源的问题,或者显示代替内容。

原理

  • HTTP Referer检查:服务器通过检查HTTP请求中的Referer头部来判断资源请求的来源。如果发现Referer并不是您允许的来源(比如您自己的网站),服务器可以拒绝提供资源或者返回替代内容。
  • Rewrite规则:使用Apache的Rewrite规则可以重写请求,检查Referer头部,然后根据设置决定是提供资源还是拒绝请求。

配置防盗链实验环境

主机名

域名

IP地址

操作系统

主要软件及版本

apache1

www.e1.com

192.168.10.101

CentOS7.9

httpd-2.4.25.tar.gz

apache2

www.e2.com

192.168.10.201

CentOS7.9

httpd-2.4.25.tar.gz 或 yum安装

客户端

Windows 10

浏览器

实验环境

将第一台服务器直接克隆一个或者直接用yum -y install httpd安装httpd,并修改IP地址为192.168.10.102

修改两台服务器的主机名

101主机
[root@localhost ~]# hostname apache1
[root@localhost ~]# bash
[root@apache1 ~]#
201主机
[root@localhost ~]# hostname apache2
[root@localhost ~]# bash
[root@apache2 ~]#

修改两个Web服务器的hosts文件,使其都能解析对应域名

按照下方同样的步骤修改201主机

[root@apache1 ~]# vim /etc/hosts
在hosts文件末尾追加
192.168.10.101 www.e1.com
192.168.10.201 www.e2.com

对于Win10客户端主机的hosts文件,在C:\Windows\System32\drivers\etc下,双击hosts文件使用记事本打开

关闭两个Web服务器的防火墙和内核安全机制,开启httpd服务,在客户端主机试试能不能访问两个Web服务器

在两个Web服务器操作
[root@apache1 ~]# systemctl start httpd
[root@apache1 ~]# setenforce 0

本地图片盗链示例

101主机是我的站点,需要盗取201主机Web服务器上的图片

也就是www.e1.com盗取www.e2.com的图片链接

操作步骤

来到201主机

进入httpd存放网页文件的目录,拖入一张图片,编辑index.html文件,

[root@apache2 ~]# cd /usr/local/httpd/htdocs/
在该目录下从宿主机拖入一张图片
[root@apache2 htdocs]# vim index.html
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>标题</title>
</head>
<body><h1>原图网站</h1><img src="logo.jpg" />    # 如果图片文件是在网页文件同一目录下,可以不用加路径
</body>
</html>

保存并退出,此时在宿主机使用浏览器访问www.e2.com可以看到网页中有了图片

如果要盗取其他网站的图片,需要有该图片的链接,在浏览器中右键图片,选择复制图像连接

来到101主机

在101Web服务器的首页上添加图片的链接

[root@apache1 ~]# cd /var/www/html    # 使用yum安装httpd的存放网页文件的目录
[root@apache1 html]# vim index.html
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>标题</title>
</head>
<body><h1>盗图网站</h1><img src="http://www.e2.com/logo.jpg" />
</body>
</html>

保存并退出,来到客户端Win10主机访问两个网址www.e1.com和www.e2.com

使用F12打开开发人员工具,在网络中可以看到www.e2.com的请求URL和图片链接都是www.e2.com自己的

而www.e1.com的请求URL是www.e1.com,但图片请求是www.e2.com主机的IP + 图片链接

至此就实现了简单本地图片盗链

防盗链示例

如果有其他主机盗取201主机的图片链接,就只显示固定的图片,而不是对方想要盗用的图片

操作步骤

在提供原图的201主机(www.e2.com)的htdocs目录下再导入一张图片(error.jpg),用于防盗链实验

然后编辑httpd的配置文件,启用rewrite模块(地址重写),rewrite的目的是如果有人请求我的logo.jpg,就把请求重定向给error.jpg

有了地址重写的功能,就可以对请求进行审核判断,如果请求是www.e2.com作为前缀的,就允许访问,如果请求的前缀不是www.e2.com,就不允许访问该图片

[root@apache2 htdocs]# vim /usr/local/httpd/conf/httpd.conf
在末行模式下搜索:/rewrite
LoadModule rewrite_module modules/mod_rewrite.so # 将开头注释去掉,启用rewrite模块在末行模式下搜索:/htdocs
在<Directory "/usr/local/httpd/htdocs">标签内往下翻
找到AllowOverride参数的行,修改内容为下方内容AllowOverride NoneRewriteEngine OnRewriteCond %{HTTP_REFERER} !^http://e2.com$ [NC]RewriteCond %{HTTP_REFERER} !^http://e2.com/.*$ [NC]RewriteCond %{HTTP_REFERER} !^http://www.e2.com$ [NC]RewriteCond %{HTTP_REFERER} !^http://www.e2.com/.*$ [NC]RewriteRule .*\.(gif|jpg|swf)$ http://www.e2.com/error.png

参数

说明

AllowOverride ALL

允许在 .htaccess 文件中使用 RewriteEngine 和其他重写规则。

ALL:允许所有类型的重写指令被 .htaccess 文件中的规则覆盖。

None:禁止在该目录中使用 .htaccess 文件来覆盖服务器配置

RewriteEngine On

启用重写功能,这是开启重写规则的第一步

RewriteCond

定义重写条件

%{HTTP_REFERER}

是Apache内置的一个变量,该变量可以获取到用户访问时请求报文头部信息里的URL

匹配请求中的 Referer 值

!^http://www.e2.com/.*$

该URL下的任意一个文件(.*:匹配单个或多个任意字符)

表示不匹配以 http://www.e2.com/ 开头的字符串并以任意单个或多个字符结尾

[NC]

过滤时不区分大小写

RewriteRule

定义重写规则

.*\.(gif|jpg|swf)$ http://www.e2.com/error.png

当前面的重写条件匹配时,如果请求的 URL 以 .gif、.jpg 或 .swf 结尾

则将请求重定向到 http://www.e2.com/error.png

.*:匹配任意数量的任意字符

\.:被转义符转义的点,这里就是单纯的点的意思

保存并退出,重启服务。

最后来到客户端主机(Win10)测试,避免图片被浏览器缓存,所以使用Ctrl + Shift + Delete快捷键清理浏览器缓存

然后访问www.e2.com,一切正常

访问www.e1.com,盗取的图片链接变成了重定向的error.png图片

相关文章:

Apache防盗链、网页压缩、网页缓存

目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…...

LocalAI - 笔记

1.localAI https://localai.io/ 2 使用笔记本电脑搭建本地LLMs大模型环境 使用笔记本电脑搭建本地LLMs大模型环境 - 大模型知识库|大模型训练|开箱即用的企业大模型应用平台|智能体开发|53AI 3LocalAI视频 【LocalAI】&#xff08;3&#xff09;&#xff1a;超级简单&…...

Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(edit) 控件样式 创建控件 初始控件 消息处理 示例代码 编辑框(edit) 控件样式 编辑框&#xff08;Edit Control&#xff09;是Windows中最常用的控件之一&#xff0c;用于接收用户…...

区块链学习05-web3中solidity和move语言

Solidity 和 Move 语言的比较&#xff1a;Web3 开发中的两种选择 Solidity 和 Move 都是用于开发区块链平台智能合约的编程语言。它们具有一些相似之处&#xff0c;但也存在一些关键差异。 相似之处: Solidity 和 Move 都是图灵完备语言&#xff0c;这意味着它们可以表达计算…...

web滚动页面到指定位置

方法&#xff1a;scrollTo(x-coord,y-coord) 方法是Web API中Element接口的一部分&#xff0c;但它主要用于Window对象或可滚动的元素&#xff08;如具有overflow属性为auto或scroll的<div>&#xff09;。此方法用于将窗口滚动到文档中的特定位置&#xff0c;或者将某个元…...

操作系统真象还原:实现文件写入

14.7 实现文件写入 这是一个网站有所有小节的代码实现&#xff0c;同时也包含了Bochs等文件 本节要实现的 sys_write 是系统调用 write 的内核实现&#xff0c;咱们之前的 write 是个简易版&#xff0c;它是为了临时完成输出打印的功能&#xff0c;不支持文件描述符。如今要让…...

FastAPI 学习之路(四十九)WebSockets(五)修复接口测试中的问题

其实代码没有问题&#xff0c;但是我们忽略了一个问题&#xff0c;就是在正常的开发中&#xff0c;肯定是遇到过这样的情况&#xff0c;我们频繁的有客户端链接&#xff0c;断开连接&#xff0c;需要统一的管理这些链接&#xff0c;那么应该如何管理呢。其实可以声明一个类去管…...

STM32智能楼宇照明系统教程

目录 引言环境准备智能楼宇照明系统基础代码实现&#xff1a;实现智能楼宇照明系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;楼宇照明管理与优化问题解决方案与优化收尾与总结 1. 引言 智能楼宇照明系…...

【C语言】原码、反码、补码详解 -《码上有道 ! 》

目录 原码、反码、补码详解及其在C语言中的应用一、原码&#xff08;Sign-Magnitude&#xff09;1.1 定义与表示1.2 历史来源与作用1.3 示例1.4 C语言示例1.5 代码运行结果 二、反码&#xff08;Ones Complement&#xff09;2.1 定义与表示2.2 历史来源与作用2.3 示例2.4 C语言…...

C++找到错误的具体信息

fprintf(stderr, "Errno: %d, Error message: %s\n", errno, strerror(errno));为什么不用printf来打印输出&#xff1f; 使用 fprintf(stderr, …)&#xff0c;将错误消息输出到标准错误流 stderr。这种做法是为了将错误信息输出到一个专门用于记录错误的流中&…...

Windows 安装Zookeeper

安装 下载地址&#xff1a;Apache ZooKeeper 我下载的版本&#xff1a;zookeeper-3.4.12 下载后&#xff0c;解压 配置 1、 在D:\zookeeper-3.4.12文件夹中创建一个“data”文件夹和“log”文件夹 2、 复制zoo_sample.cfg&#xff0c;改名&#xff1a;zoo.cfg 修改zoo.c…...

从人工巡检到智能预警:视频AI智能监控技术在水库/河湖/水利防汛抗洪中的应用

一、背景需求分析 近日&#xff0c;我国多省市遭遇连日暴雨&#xff0c;导致水库、湖泊、河道等水域水位暴涨&#xff0c;城市内涝频发。随着夏季汛期的到来&#xff0c;降雨天气频繁&#xff0c;水利安全管理面临严峻挑战。为保障水库安全、预防和减少洪涝灾害&#xff0c;采…...

【轻松拿捏 】Java-static关键字(面试)

Java-static关键字 1. 定义和基本概念 回答要点&#xff1a; 示例回答&#xff1a; 2. static 变量 回答要点&#xff1a; 示例回答&#xff1a; 代码示例&#xff1a; 3. static方法 回答要点&#xff1a; 示例回答&#xff1a; 代码示例&#xff1a; 4. static 代…...

【阶乘】个人练习-Leetcode-LCP 22. 黑白方格画

题目链接&#xff1a;https://leetcode.cn/problems/ccw6C7/description/ 题目大意&#xff1a;给出一块白方格面积为n*n&#xff0c;给出一个数字k&#xff0c;每一次操作可以把方格的某一整行或者某一整列涂黑&#xff0c;求使得黑色格子数字为k的【最终图案】的个数。 思路…...

十七、【文本编辑器(三)】图像坐标变换

目录 一、缩放功能 二、旋转功能 三、镜像功能 四、QMatrix简单介绍 一、缩放功能 &#xff08;1&#xff09;在头文件中添加 “protected slots:" 变量&#xff1a; void ShowZoomln( ); &#xff08;2&#xff09;在 createActionso函数的最后添力口事件关联&…...

生活中生智慧

【 圣人多过 小人无过 】 觉得自己做得不够才能做得更好&#xff0c;互相成全&#xff1b;反求诸己是致良知的第一步&#xff1b;有苦难才能超越自己&#xff0c;开胸怀和智慧&#xff1b;不浪费任何一次困苦&#xff0c;危机中寻找智慧&#xff0c;成长自己。 把困苦当作当下…...

2024第18届中国西部(成都)教育装备展12月14日举办

2025中国国际工业气体设备技术及应用展览会 2025 China International Industrial Gas Equipment Technology and Application Exhibition 时间&#xff1a;2025年3月18-20日 地点&#xff1a;北京全国农业展览馆&#xff08;新馆&#xff09; 展览前言 随着需求市场的持续…...

Webpack看这篇就够了

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

基于京东电商蓝牙耳机产品评论数据的情感分析与文本分析

摘要 随着电子商务的迅速发展&#xff0c;了解用户对产品的意见和情感倾向对企业至关重要。本研究旨在利用Python大数据技术对电商产品评论进行情感分析和主题建模&#xff0c;为企业提供有价值的市场洞察。 通过爬虫获取电商评论数据&#xff0c;使用pandas清洗和预处理数据&a…...

【Linux网络】poll{初识poll / poll接口 / poll vs select / poll开发多客户端echo服务器}

文章目录 1.初识pollpoll与select的主要联系与区别poll的原理poll的优点poll的缺点poll vs select 2.poll开发多客户端echo服务器封装套接字接口Makefile主函数日志服务聊天服务器 1.初识poll poll是Linux系统中的一个系统调用&#xff0c;它用于监控多个文件描述符&#xff08…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...