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

Memcached缓存系统:从部署到实战应用指南

#作者:猎人

文章目录

  • 一、安装libevent
  • 二、安装配置memcached
  • 三、安装Memcache的PHP扩展
  • 四、使用libmemcached的客户端工具
  • 五、Nginx整合memcached:
  • 六、php将会话保存至memcached

Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。

memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在
已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件。其设计哲学思想主要反映在如下方面:

  1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
  2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
  3. 各服务器间彼此无视:不在服务器间进行数据同步;
  4. O(1)的执行效率
  5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;

Memcached提供了为数不多的几个命令来完成与服务器端的交互,这些命令基于memcached的协议实现。

存储类命令:set, add, replace, append, prepend
获取数据类命令:get, delete, incr/decr
统计类命令:stats, stats items, stats slabs, stats sizes
清理命令: flush_all

一、安装libevent

memcached依赖于libevent API,因此一定要事先安装之,项目主页:http://libevent.org/,读者可自行选择需要的版本下载。本文采用的是目前最新版本的源码包libevent-2.0.16-stable.tar.gz。安装过程:

# tar xf libevent-2.0.20-stable.tar.gz
# cd libevent-2.0.20
# ./configure --prefix=/usr/local/libevent
# make && make install# echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
# ldconfig 

yum安装cyrus-sasl-devel 认证

二、安装配置memcached

安装和配置 Memcached 时,有几个关键点需要注意,以确保其高效、稳定地运行。以下是一些重要的注意事项:

  1. 系统准备
    操作系统兼容性:确认你的操作系统版本与 Memcached 兼容。Memcached 支持多种操作系统,包括 Linux、Windows 和 macOS,但建议在生产环境中使用 Linux。
    依赖项检查:确保所有必要的库都已经安装,例如 libevent。

  2. 安装 Memcached
    选择合适的安装方式:
    从源码编译:可以自定义编译选项,如最大内存大小、连接数等。
    通过包管理器安装(推荐):对于 Debian/Ubuntu 使用 apt-get,CentOS/RHEL 使用 yum。这种方式更简单快捷,并且便于后续的更新维护。

  3. 配置 Memcached
    编辑配置文件(通常位于 /etc/memcached.conf 或 /etc/sysconfig/memcached):
    内存限制:设置 -m 参数指定 Memcached 可使用的最大内存量。
    监听地址:默认情况下,Memcached 监听本地回环接口(127.0.0.1)。如果需要外部访问,请修改为服务器的实际 IP 地址或 0.0.0.0 表示接受所有来源的请求,但要注意安全性。
    端口号:默认端口是 11211,可以根据需要更改。
    并发连接数:通过 -c 参数调整最大并发连接数,默认值可能不足以应对高负载环境。
    日志级别:根据需要调整日志记录的详细程度,以便于调试和监控。

  4. 安全设置
    防火墙规则:确保只有可信的 IP 地址能够访问 Memcached 服务。
    权限控制:避免使用 root 用户启动 Memcached,应创建专用用户并赋予适当权限。
    SASL 认证:对于需要更高安全性的场景,考虑启用 SASL 认证机制来保护数据传输。

  5. 性能优化
    调整内核参数:根据实际工作负载调整操作系统的网络缓冲区大小和其他相关参数。
    缓存策略:合理设计缓存失效策略,避免雪崩效应。
    监控与报警:利用工具如 Prometheus、Grafana 等对 Memcached 进行实时监控,及时发现潜在问题。

安装步骤如下
1、安装memcached

# tar xf memcached-1.4.15.tar.gz 
# cd memcached-1.4.15
# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
# make && make install

2、memcached SysV的startup脚本代码如下所示,将其建立为/etc/init.d/memcached文件:以便用service启动关闭服务

#!/bin/bash
#
# Init file for memcached
#
# chkconfig: - 86 14
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /etc/sysconfig/memcached. /etc/rc.d/init.d/functions## Default variables
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"	//内存如果小可以改,马哥memcache视频有讲
OPTIONS=""RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
lockfile="/var/lock/subsys/memcached"start() {echo -n $"Starting $desc (memcached): "daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE  $OPTIONSRETVAL=$?echo[ $RETVAL -eq 0 ] && touch $lockfilereturn $RETVAL
}stop() {echo -n $"Shutting down $desc (memcached): "killproc $progRETVAL=$?echo[ $RETVAL -eq 0 ] && rm -f $lockfilereturn $RETVAL
}restart() {stopstart
}reload() {echo -n $"Reloading $desc ($prog): "killproc $prog -HUPRETVAL=$?echoreturn $RETVAL
}case "$1" instart)start;;stop)stop;;restart)restart;;condrestart)[ -e $lockfile ] && restartRETVAL=$?;;       reload)reload;;status)status $progRETVAL=$?;;*)echo $"Usage: $0 {start|stop|restart|condrestart|status}"RETVAL=1
esac
exit $RETVAL

使用如下命令配置memcached成为系统服务:

# chmod +x /etc/init.d/memcached
# chkconfig --add memcached
# service memcached start
netstat  -tunlap |grep  11211    会发现两个11211端口,分别是tcp和udp

3、使用telnet命令测试memcached的使用

memcached提供一组基本命令用于基于命令行调用其服务或查看服务器状态等。

# telnet 127.0.0.1 11211   //回车后即可输入add、get、set等等命令了

add命令:添加新键
格式:add keyname flag timeout datasize
举例:add mykey 0 10 12
Hello world!
get命令:获取键值
格式:get keyname
如:get mykey
VALUE mykey 0 12
Hello world!
END

set命令 可以修改键值
stats命令 查看状态

4、memcached命令的常用选项说明 /user/local/memcached/bin/memcached源码安装的命令位置
-l <ip_addr>:指定进程监听的地址;
-d: 以服务模式运行;即在后台运行
-u :以指定的用户身份运行memcached进程;
-m :用于缓存数据的最大内存空间,单位为MB,默认为64MB;
-c :最大支持的并发连接数,默认为1024;
-p : 指定监听的TCP端口,默认为11211;同时是memcache端口
-U :指定监听的UDP端口,默认为11211,0表示关闭UDP端口;
-t :用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;
-f :设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;
-n: 指定最小的slab chunk大小;最小设置48字节。单位是字节;解决碎片问题
-S: 启用sasl进行用户认证;
-r
-p 指定pid文件

/user/local/memcached/bin/Memcached -m 128 -n 20 -f 1.25 -vv -u nobady -d 在后台运行

三、安装Memcache的PHP扩展

客户端库:
Perl module
Cache::memcached 这是perl模块
Php:两个客户端库,一般用第二个
Memcache
Memcached
C/C++:
libmemcached

①安装PHP的memcache扩展

# tar xf memcache-2.2.5.tgz
# cd memcache-2.2.5
/usr/local/php/bin/phpize   //这是php模块
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
# make && make install

上述安装完后会有类似以下的提示:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

②编辑/usr/local/php/lib/php.ini,在“动态模块”相关的位置添加如下一行来载入memcache扩展:

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so

而后对memcached功能进行测试,在网站目录中建立测试页面test.php,添加如下内容:php语言脚本

vim  /web/htdocs/test.php
<?php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211)  or die("Could not connect");$version = $mem->getVersion();
echo "Server's version: ".$version."<br/>\n";$mem->set('testkey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");
echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";$get_result = $mem->get('testkey');
echo "$get_result is from memcached server.";         
?>

脚本完
测试:
访问此主机,ip/test.php回车,会输出测试内容。如果有输出“Hello World is from memcached.”等信息,则表明memcache已经能够正常工作。
再测试,输入telnet localhost 11211回车,输入get testkey 可以看到是否成功

四、使用libmemcached的客户端工具

访问memcached的传统方法是使用基于perl语言开发的Cache::memcached模块,这个模块在大多数perl代码中都能良好的工作,但也有着众所周知的性能方面的问题。libMemcached则是基于C语言开发的开源的C/C++代码访问memcached的库文件,同时,它还提供了数个可以远程使用的memcached管理工具,如memcat, memping,memstat,memslap等。

  1. 编译安装libmemcached
# tar xf libmemcached-1.0.2.tar.gz 
# cd libmemcached-1.0.2
# ./configure 
# make && make install
# ldconfig
  1. 客户端工具
# memcat --servers=127.0.0.1:11211 mykey
# memping 
# memslap
# memstat

五、Nginx整合memcached:

nginx数据缓存到memcache里,目的是不使用nginx本身缓存功能,用memcache缓存。因为nginx缓存是缓存到磁盘里了,缓存性能不好,所以推荐使用memcache缓存

server {listen       80;server_name  www.magedu.com;#charset koi8-r;#access_log  logs/host.access.log  main;location / {set $memcached_key $uri;  //往memcacae传递数据。设置键名:$memcached_key是键名,传递过去一个键,当前用户请求$uri就是键memcached_pass     127.0.0.1:11211;    //memcache服务器是哪个default_type       text/html;    //缓存哪一类数据  error_page         404 @fallback;   //缓存没有就返回404,到@fallback后端服务器去取数据,设置如下}location @fallback {   //进行处理proxy_pass http://172.16.0.1; //传递给后端服务器,从后端服务器取过来缓存到memcache服务器里}
}

六、php将会话保存至memcached

前提:

  1. 配置各php支持使用memcache;
  2. 安装配置好memcached服务器,这里假设其地址为172.16.200.11,端口为11211;

1、配置php将会话保存至memcached中 比保存在本地更快
编辑php.ini文件,确保如下两个参数的值分别如下所示:
session.save_handler = memcache //默认是fail
session.save_path = “tcp://172.16.200.11:11211?persistent=1&weight=1&timeout=1&retry_interval=15”
上面最后一行含义:session保存到什么位置。基于tcp协议找memcache服务器的11211端口,如果是本机可以考虑使用locahost,?是传递参数,persistent=1表示持久连接方式。weight=1权重。timeout=1超时时间为1秒。retry_interval=15每隔15秒重试一次
另外:session.name = PHPSESSID 这个参数很多地方会用到,注意
service php-fpm restart

2、测试

vim /web/htdocs/setsess.php
新建php页面setsess.php,为客户端设置启用session:

<?php
session_start();
if (!isset($_SESSION['www.MageEdu.com'])) {$_SESSION['www.MageEdu.com'] = time();
}
print $_SESSION['www.MageEdu.com'];
print "<br><br>";
print "Session ID: " . session_id();
?>

vim /web/htdocs/showsess.php 测试用

新建php页面showsess.php,获取当前用户的会话ID:

<?php
session_start();
$memcache_obj = new Memcache;
$memcache_obj->connect('172.16.200.11', 11211);
$mysess=session_id();
var_dump($memcache_obj->get($mysess));
$memcache_obj->close();
?><?php 
// Generating cookies must take place before any HTML. 
// Check for existing "SessionId" cookie 
$session = $HTTP_COOKIE_VARS["SessionId"]; 
if ( $session == "" ) { 
// Generate time-based unique id. 
// Use user's IP address to make more unique. 
$session = uniqid ( getenv ( "REMOTE_ADDR" ) ); 
// Send session id - expires when browser exits 
SetCookie ( "SessionId", $session ); 
} 
?> 
<HTML> 
<HEAD><TITLE>Session Test</TITLE></HEAD> 
<BODY> <br> 16 Current session id: <?php echo $session ?> 
</BODY></HTML>

访问页面:
生成一个session的id

Memcache负载均衡是开发的事情:取值方法和一致哈希算法
Memcache管理工具的安装: 此工具很好
Memcache-master软件,解压
Mv Memcache-master /web/htdocs/mmaster 改名为mmaster
Vim /web/htdocs/mmaster/config.php 配置文件
改用户名和密码

之后访问,ip/mmaster/回车,输入用户名和密码,之后设置和连接
命中率由zabbix监控

相关文章:

Memcached缓存系统:从部署到实战应用指南

#作者&#xff1a;猎人 文章目录 一、安装libevent二、安装配置memcached三、安装Memcache的PHP扩展四、使用libmemcached的客户端工具五、Nginx整合memcached:六、php将会话保存至memcached Memcached是一款开源、高性能、分布式内存对象缓存系统&#xff0c;可应用各种需要缓…...

【rdma tx data flow问题】

rdma data flow问题 1 SQ_doorbell如何产生&#xff1f; --RDMA网卡doorbell寄存器触发&#xff1b;2 CPU如何访问网卡的Doorbell寄存器&#xff1f;3 为什么需要roce_qid_convert把local_qid转换成global_qid;4.WQE的format是什么&#xff1f;5.WQE在网卡硬件中的处理流程&…...

Vue 框架组件间通信方式

组件间通信方式 不管是 vue2 还是 vue3&#xff0c;组件通信方式很重要&#xff0c;以下是常见的几种通信方式&#xff1a; props&#xff1a;可以实现父子组件、子父组件、甚至兄弟组件通信自定义事件&#xff1a;可以实现子父组件通信全局事件总线 $bus&#xff1a;可以实现…...

React 第三十节 使用 useState 和 useEffect Hook实现购物车

不使用 redux 实现 购物车案例 使用 React 自带的 useState 和 useEffect Hook 即可实现购物车 export default function ShoppingCar() {// 要结算的商品 总数 以及总价const [totalNum, setTotalNum] useState(0)const [totalPerice, setTotalPerice] useState(0)// 商品…...

卷积神经网络CNN

目录 一、图像基础知识 图像基本概念 图像的加载 二、CNN概述 CNN概述 三、卷积层 卷积计算 Padding Stride 多通道卷积计算 PyTorch卷积层API 四、池化层 池化层计算 Stride Padding 多通道池化层计算 PyTorch 池化 API 五、图像分类案例 CIFAR10 数据集 …...

【大数据生态】Hive的metadata服务未开启

解决办法 进入到Hive的bin目录下,键入命令: #启动元服务 [atguiguhadoop102 bin]$ pwd /opt/module/hive-3.1.2/bin [atguiguhadoop102 bin]$ ./hive --service metastore & #启动hive [atguiguhadoop102 hive-3.1.2]$ pwd /opt/module/hive-3.1.2 [atguiguhadoop102 hiv…...

【RabbitMQ】死信队列

1.概述 死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;也就是没有被传到消费者的消息&#xff0c;或者即使传到了也没有被消费。当然有死信就有死信队列。死信队列就是用来存储死信的。 它的应用场景就是保证订单业务的消息数据不丢失&#xff0c;当消息消费发 生…...

区间 dp 系列 题解

1.洛谷 P4342 IOI1998 Polygon 我的博客 2.洛谷 P4290 HAOI2008 玩具取名 题意 某人有一套玩具&#xff0c;并想法给玩具命名。首先他选择 W, I, N, G 四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好&#xff0c;将名字中任意一个字母用 W, I, N, G …...

Typora使用笔记

文章目录 主题自动编号字体设置两端对齐Step1Step 2 代码块显示行号设置快捷键参考文献 主题自动编号 typora-theme-auto-numbering 字体设置两端对齐 Step1 切记从typora的偏好设置中打开主题所在的文件夹&#xff0c;并修改对应的css文件。&#xff08;以 github.css 为例…...

k8s部署grafana

先决条件 这里部署过程的前提是已经部署好storageclass,所以pv会根据pvc自动创建. 详情参考:k8s-StoargClass的使用-基于nfs_a volume that contains injected data from multiple-CSDN博客 直接开始: 部署pvc [rootmodule /zpf/grafana]$cat pvc.yml apiVersion: v1 kind…...

第三章:SQL 高级功能与性能优化

1. 窗口函数&#xff08;Window Functions&#xff09;​​ 用于在结果集的“窗口”&#xff08;指定行范围&#xff09;内执行计算&#xff0c;保留原数据行的同时生成聚合或排序结果。 ​​1.1 核心语法​​ SELECT column1,column2,[窗口函数] OVER (PARTITION BY 分组列…...

[ACM_3] n组数据 | getchar() | getline(cin,s)

目录 14. 第⼀⾏是⼀个整数n&#xff0c;表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串 15. 第⼀⾏是⼀个整数n&#xff0c;然后是n组数据&#xff0c;每组数据2⾏&#xff0c;每⾏ 为⼀个字符串&#xff0c;为每组数据输出⼀个字符串&#xff0c;每组输出占⼀⾏ 16. 多组测试…...

富士相机照片 RAF 格式如何快速批量转为 JPG 格式教程

富士&#xff08;Fujifilm&#xff09;相机拍摄的 RAW 格式文件&#xff08;RAF&#xff09;因其高质量和丰富的图像信息而受到摄影师的喜爱。然而&#xff0c;RAF 文件通常体积较大且不易于分享或直接使用。为了方便处理&#xff0c;许多人选择将其转换为更通用的 JPG 格式。在…...

[特殊字符]【高并发实战】Java Socket + 线程池实现高性能文件上传服务器(附完整源码)[特殊字符]

大家好&#xff01;今天给大家分享一个 Java Socket 线程池 实现的高性能文件上传服务器&#xff0c;支持 多客户端并发上传&#xff0c;代码可直接运行&#xff0c;适合 面试、项目实战、性能优化 学习&#xff01; &#x1f4cc; 本文亮点&#xff1a; ✅ 完整可运行代码&a…...

2025 年天津消防设施操作员考试攻略:深挖地区特色考点​

天津作为重要的港口城市与工业基地&#xff0c;消防安全形势复杂多样&#xff0c;其消防设施操作员考试也带有鲜明的地区特色。​ 地区特色考点解析&#xff1a;天津化工产业发达&#xff0c;涉及众多危化品场所。因此&#xff0c;危化品储存场所的消防设施配置与应急处置成为…...

chrome extension开发框架WXT之Browser.runtime

以下是对 Browser.runtime API 中主要方法的参数、返回值、作用及运用场景的详细解释: 1. 连接与通信方法 connect(connectInfo?: ConnectInfo) / connect(extensionId: string, connectInfo?: ConnectInfo) 参数: extensionId(可选):目标扩展的 ID,未指定时默认连接当…...

dav_1_MySQL数据库排查cpu消耗高的sql

CPU消耗高sql定位 以下从2个维度进行分析&#xff0c;一个是当前cpu高占用排查&#xff0c;一个是历史sql占用高排查 一.当前cpu占用高排查 1 从os资源消耗逐步到mysql查询 1.1 输入top 然后按大P 使之进程按照消耗cpu排序 比如3889为mysql进程ID&#xff0c;接下来再用它查…...

数据结构刷题之贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09; 是一种在每个步骤中都选择当前最优解的算法设计策略。它通常用于解决优化问题&#xff0c;例如最小化成本或最大化收益。贪心算法的核心思想是&#xff1a;在每一步选择中&#xff0c;都做出局部最优的选择&#xff0c;希望…...

每日一题(小白)暴力娱乐篇23

由题意得知给我们一串数字&#xff0c;我们每次交换两位&#xff0c;最少交换多少次成功得到有顺序的数组。我们以平常的思维去思考&#xff0c;加入给你一串数字获得最少的交换次数&#xff0c;意味着你的交换后续基本不会变&#xff0c;比如说2 1 3 5 4 中1与2交换后不变&…...

回归预测 | Matlab实现RIME-CNN-GRU-Attention霜冰优化卷积门控循环单元注意力机制多变量回归预测

回归预测 | Matlab实现RIME-CNN-GRU-Attention霜冰优化卷积门控循环单元注意力机制多变量回归预测 目录 回归预测 | Matlab实现RIME-CNN-GRU-Attention霜冰优化卷积门控循环单元注意力机制多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RIME…...

第1章 对大型语言模型的介绍

人类正处在一个关键转折点。自2012年起&#xff0c;基于深度神经网络的人工智能系统研发进入快速通道&#xff0c;将这一技术推向了新高度&#xff1a;至2019年底&#xff0c;首个能够撰写与人类文章真假难辨的软件系统问世&#xff0c;这个名为GPT-2&#xff08;生成型预训练变…...

PGA 简介

PGA&#xff08;Programmable Gain Amplifier&#xff0c;可编程增益放大器&#xff09;是一种可以通过外部控制信号改变增益大小的放大器&#xff0c;常用于需要灵活调节信号放大倍数的应用中&#xff0c;比如在模拟信号采集、数据转换&#xff08;如 ADC 之前&#xff09;、传…...

2025年CCF-C NCA:导航变量多目标粒子群算法NMOPSO,深度解析+性能实测

目录 1.摘要2.运动学模型和约束3.路径规划目标函数3.多目标粒子群算法4.结果展示5.参考文献6.代码获取 1.摘要 路径规划是无人机&#xff08;UAV&#xff09;任务执行的核心&#xff0c;因为它决定了无人机完成任务所需的飞行路径。为了解决这一问题&#xff0c;本文提出了一种…...

FFMpeg音视频解码实战

音频解码 一、初始化阶段 avformat_open_input 打开输入媒体文件。avformat_find_stream_info 读取媒体流信息&#xff0c;查找音频流。avcodec_find_decoder 查找对应的解码器&#xff08;如 AAC、MP3 解码器&#xff09;。avcodec_alloc_context3 分配解码器上下文。avcodec…...

day25学习Pandas库

文章目录 三、Pandas库4.函数计算7.合并8.随机抽样9.空值处理9.1检测空值9.2填充空值9.3删除空值行/列 5.读取CSV文件5.1 to_csv()5.2 read_csv() 6.绘图 三、Pandas库 4.函数计算 7.合并 merge 函数用于将两个 DataFrame 对象根据一个或多个键进行合并 函数&#xff1a; …...

去除Mysql表中的空格、回车、换行符和特殊字符

系列文章目录 文章目录 系列文章目录前言一、示例1.sql层面2.java层面 前言 一、示例 1.sql层面 参考 ## 例子1 ## CHAR(10) 表示换行符 ## CHAR(13) 表示回车UPDATE 表名 SET 列名 REPLACE(REPLACE(列名, CHAR(10), ), CHAR(13), )## 例子2 ## 删除字段中的空格、换行符、…...

以普通用户身份启动pure-ftpd服务端

Pureftp的优点包括 : 高性能&#xff0c;适用于大容量数据传输。安全性强&#xff0c;通过SSL/TLS加密和身份验证机制保证文件传输安全。易用性高&#xff0c;具有直观的用户界面。灵活性强&#xff0c;支持多种文件存储方式。没有漏洞&#xff0c;便于维护 基于Centos 9的pu…...

国内下载不了镜像,可以用国外机器下载完成,打成tar文件,在国内机器上重新加载

可以在 已经拉取过镜像的机器上打包&#xff08;导出&#xff09;镜像文件&#xff0c;然后 拷贝到另一台机器上导入使用。这是离线部署 Docker 镜像的常用方法&#xff0c;非常适合网络受限的环境。 &#x1f6e0;️ 步骤如下&#xff1a; ✅ 1. 在已有镜像的机器上打包镜像 …...

【Java】Java 中不同类型的类详解

目录 Java 中不同类型的类详解一、基础类类型1. 普通类&#xff08;Concrete Class&#xff09;2. 抽象类&#xff08;Abstract Class&#xff09;3. 接口&#xff08;Interface&#xff09;4. 枚举类&#xff08;Enum Class&#xff09; 二、嵌套类与特殊类5. 内部类&#xff…...

Cadence学习笔记之---热风焊盘制作

目录 01 | 前 言 02 | 环境描述 03 | 热风焊盘 04 | 规则热风焊盘制作 05 | 不规则热风焊盘制作 06 | 总 结 01 | 前 言 在上一篇Cadence小记中讲述了如何制作贴片(SMD)焊盘、通孔焊盘、以及过孔&#xff1b;本篇关于Cadence的小记主要讲如何制作热风焊盘。 上篇小记&a…...

518. Coin Change II

这是完全背包问题。 由于求的是组合数&#xff0c;所以外层循环只能是对硬币遍历&#xff0c;内层循环只能是对总金额的遍历。 另外&#xff0c;虽然题目数据保证结果符合 32 位带符号整数。但是第28个测试用例&#xff0c;dp[j]dp[j-conis[i]]中间结果会整数溢出&#xff0c…...

GPIO子系统与Pinctrl子系统的交互

我们前面呢&#xff0c;已经讲过GPIO子系统的数据结构以及他的设备树信息是怎么转换成我们的C代码存储在结构体里面了&#xff0c;我们知道&#xff0c;如果想去使用一个GPIO&#xff0c;避免不了得把这个引脚复用成GPIO功能&#xff0c;那么就避不开Pinctrl子系统&#xff0c;…...

DeepSeek实用操作及行业应用系列2

DeepSeek的本地化部署与AI通识教育之未来 DeepSeek之火&#xff0c;可以燎原 面向审计行业DeepSeek大模型操作指南v1.0 DeepSeek提示词设计、幻觉避免与应用&#xff08;大数据百家讲坛&#xff09; DeepSeek 搞钱教程&#xff08;0基础入门&#xff09; DeepSeek基础知识…...

面向数据库场景的大模型交互微调数据集

关键要点 研究表明&#xff0c;面向数据库场景的大模型交互微调数据集通常包括数据库模式、自然语言查询和对应的SQL查询。证据倾向于认为&#xff0c;数据集应以JSON格式组织&#xff0c;覆盖多种查询类型&#xff0c;并确保高质量和多样性。对于自定义数据库&#xff0c;建议…...

解锁ChatGPT-4o文生图潜力:精选提示词收集整理更新中

示例一&#xff1a;按元素和描述要求生成图片 示例二&#xff1a;“吉卜力”风格 示例三&#xff1a;3D Q版风格 示例四&#xff1a;生成指定布局和主题图片 具体的提示词参考&#xff0c;陆续更新中&#xff1a;https://blog.luler.top/d/25...

WHAT - React 进一步学习推荐

书籍 adevnadia 的《Advanced React》TejasKumar_ 的《Fluent React》addyosmani 和 djirdehh 的《Building Large Scale Web Apps》 面试准备 reactjs-interview-questions 文章&#xff1a;最佳实践 如果你想了解最佳实践并学习技巧&#xff0c;请务必关注以下专家&…...

有关串口的知识点

轻微了解 一般都是 前这俩01 Ren1才能接受 开局T1 R1要给0 所以就是0x50的起手 终端服务是接受的 ———————————————————————————— 进入实际引用 使用的时候1 初始化 2要给个500ms的延时函数即可...

无线插卡话机如何接入呼叫中心系统?

一、接入原理与技术架构 ​ ​无线插卡话机通过内置SIM卡模块&#xff08;支持GSM/CDMA/4G/5G等网络制式&#xff09;&#xff0c;将移动网络信号转化为语音通信信号&#xff0c;再通过SIP协议或专用网关与呼叫中心系统对接。其核心流程包括&#xff1a; ​ ​1、网络信号…...

prometheus有几种数据类型

Prometheus 数据类型主要有以下四种&#xff1a; Counter&#xff08;计数器&#xff09;&#xff1a; 单调递增的数值&#xff0c;表示某个事件发生的次数。计数器的值只会增加&#xff0c;除非被重置为0&#xff08;例如在系统重启时&#xff09;。示例&#xff1a;HTTP 请求…...

C++设计模式+异常处理

#include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #include <sstream> #include <vector> #include <memory> #include <stdexcept> // 包含异常类using namespace std;// 该作业要求各位写一…...

字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;每日两三题 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 字符串替换 &#xff08;模拟&#xff09;神奇数 &#xff08;数学&#xff09;DNA序列 &#xff08;固定长度的滑动窗口&am…...

echarts地图详解

获取地图坐标json数据 <template><div id"china-map" style"width:500px;height:500px"></div> </template> <script>import * as echarts from echarts;// 坐标jsonimport chinaJson from "/assets/china.json" …...

Redis 哨兵模式:告别手动故障转移!

目录 前言一、 Redis哨兵模式是啥&#xff1f;&#x1f914;二、 为什么需要哨兵模式&#xff1f;&#x1f937;‍♀️三、 哨兵模式的原理是什么&#xff1f;&#x1f91d;1. 监控&#xff08;Monitoring&#xff09;2. 信息共享与客观下线判断3. 哨兵领导者选举4. 故障转移5.…...

地理数据输出

为了便于数据共享和交换&#xff0c;可以将地理数据库中的要素数据输出为Shapefiles或者Coverage&#xff0c;将相应的属性表输出为Info或者dBase格式的数据文件。 1.输出为 Shapefile (1)在AreCatalog目录树或者内容栏中&#xff0c;右键点击需要输出的地理要素类&#xff0c;…...

springboot + security + redis + jwt 实现验证登录上

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…...

SomeIP通讯机制

在SOME/IP协议中&#xff0c;通讯方式主要围绕服务的交互模式进行的设计&#xff0c;核心机制包括Event&#xff08;时间&#xff09;、Method&#xff08;方法&#xff09;以及其变种Fire-and-Forget&#xff08;FF&#xff09;。以下是SOME/IP中所有通信方式的总结&#xff1…...

线代第三课:n阶行列式

引言 行标取自然排列 不同行不同列的3个元素相乘 列标取排列的所有可能 列标排列的逆序数的奇偶性决定符号&#xff0c;- n阶行列式 第一种&#xff1a;按行展开 (1) 行标取自然排列 (2) 列标取排列的所有可能 &#xff08;PS&#xff1a;可以理解为随意取&#xff09; (3) 从…...

人工智能在高中教育中的应用现状剖析与挑战应对

第一章&#xff1a;绪论 1.1 研究背景与意义 随着全球化的加速和科技的飞速发展&#xff0c;高中教育在培养未来社会所需人才方面的重要性日益凸显。高中阶段是学生知识体系构建和思维能力发展的关键时期&#xff0c;然而&#xff0c;当前高中教育面临着诸多挑战&#xff0c;…...

如何在powerbi使用自定义SQL

我们在刚使用到powerbi的时候发现当直接连接到数据库的时候我们只能使用数据库中已存在的表&#xff0c;我们没有办法使用自定义SQL来准备数据&#xff0c;这给我们的开发造成很大的困扰&#xff1b;我目前使用的是vertica数据库&#xff0c;首先我们需要在本地有vertica的驱动…...

边缘计算盒子是什么?

边缘计算盒子是一种小型的硬件设备&#xff0c;通常集成了处理器、存储器和网络接口等关键组件&#xff0c;具备一定的计算能力和存储资源&#xff0c;并能够连接到网络。它与传统的云计算不同&#xff0c;数据处理和分析直接在设备本地完成&#xff0c;而不是上传到云端&#…...