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

Docker 构建 nginx-redis-alpine 项目详解

Docker 构建 nginx-redis-alpine 项目详解

一、课程概述

嘿,朋友们!今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine!这个项目可不简单,它包含了好多重要的知识点,像文件目录结构、核心文件的作用及配置、自签名证书的生成,还有镜像构建和容器运行等等。我保证,跟着我一步步走,你就能彻底搞懂这个项目的实现原理和各种应用场景,让你在 Docker 世界里更加游刃有余!

二、课程目标

  • 理解 nginx-redis-alpine 项目的整体架构和文件组织方式。
  • 掌握 Dockerfile 多阶段构建、Nginx 配置、启动脚本编写等关键技术。

三、课程内容

(一)文件目录结构

nginx-redis-alpine/
├── Dockerfile        # 构建镜像的魔法秘籍
├── nginx.conf        # Nginx 的核心配置文件
├── ssl               # SSL 证书的小窝
│   ├── cert.pem      # 证书文件
│   └── key.pem       # 密钥文件
└── start_nginx.sh    # 启动 Nginx 的启动脚本1 directory, 5 files
  • Dockerfile:用于构建 Docker 镜像,包含了构建和运行阶段的指令。
  • nginx.conf:Nginx 的配置文件,定义了服务器的运行参数、虚拟主机、缓存配置等。
  • ssl 目录:存放 SSL 证书文件,包括 cert.pem(证书文件)和 key.pem(密钥文件)。
  • start_nginx.sh:启动 Nginx 的脚本,负责检查环境变量、替换配置文件中的占位符、检查配置文件有效性等。

(二)核心文件详解

1. Dockerfile
# 第一阶段:构建阶段
FROM alpine:latest AS builder# 安装必要的依赖
RUN apk update && apk add --no-cache \build-base \pcre-dev \zlib-dev \openssl-dev \wget \unzip \git# 下载Nginx 1.25源码
RUN wget http://nginx.org/download/nginx-1.25.0.tar.gz && \tar -zxvf nginx-1.25.0.tar.gz && \rm nginx-1.25.0.tar.gz# 下载Redis插件源码
RUN git clone https://github.com/openresty/redis2-nginx-module.git && \cd redis2-nginx-module && \git checkout v0.15# 编译并安装Nginx
WORKDIR /nginx-1.25.0
RUN ./configure \--with-http_ssl_module \--add-module=../redis2-nginx-module \--prefix=/etc/nginx \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--pid-path=/var/run/nginx.pid \--lock-path=/var/run/nginx.lock && \make && \make install# 第二阶段:运行阶段
FROM alpine:latest# 更换软件源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories# 安装运行时必要的依赖
RUN apk update && apk add --no-cache \pcre \zlib \openssl# 创建新用户
RUN addgroup -S nginxgroup && \adduser -S -G nginxgroup nginxuser && \id nginxuser# 复制编译好的Nginx文件
COPY --from=builder /etc/nginx /etc/nginx
COPY --from=builder /usr/sbin/nginx /usr/sbin/nginx# 复制自定义的 Nginx 配置文件
COPY nginx.conf /etc/nginx/nginx.conf# 复制 SSL 证书
COPY ssl/cert.pem /etc/nginx/ssl/cert.pem
COPY ssl/key.pem /etc/nginx/ssl/key.pem# 创建必要的目录
RUN mkdir -p /var/log/nginx
RUN mkdir -p /var/run/nginx
RUN mkdir -p /var/cache/nginx# 以 root 用户执行权限修复
USER root
RUN chown -R nginxuser:nginxgroup /etc/nginx /var/log/nginx /var/run/nginx /var/cache/nginx /etc/nginx/ssl# 复制启动脚本
COPY start_nginx.sh /start_nginx.sh
# 以 root 用户修改启动脚本权限
RUN chmod +x /start_nginx.sh# 暴露 80 和 443 端口
EXPOSE 80 443# 健康检查
HEALTHCHECK --interval=30s --timeout=3s \CMD curl -f http://localhost/ || exit 1# 以 root 用户启动脚本
CMD ["/start_nginx.sh"]

知识点讲解

  • 多阶段构建
    • 目的:将构建过程分为两个阶段,第一阶段(builder)用于构建 Nginx 并安装 Redis 模块,包含了许多构建工具和依赖,比较臃肿;第二阶段只复制第一阶段构建好的必要文件和运行时依赖,生成的最终镜像会非常精简,减少了镜像的体积,提高了安全性和部署效率。
    • 实现方式:通过 FROM alpine:latest AS builder 定义第一阶段,使用 COPY --from=builder 从第一阶段复制文件到第二阶段。
  • 基础镜像选择
    • 选择 alpine:latest 作为基础镜像,因为 Alpine Linux 非常轻量级,它的镜像体积很小,适合作为基础镜像来构建 Docker 镜像,能减少最终镜像的大小。
  • HEALTHCHECK 指令
    • 作用:用于定期检查容器的健康状态。
    • 配置:HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/ || exit 1,表示每隔 30 秒检查一次,如果 3 秒内 curl 请求本地地址失败,就认为容器不健康。
    • 应用场景:在容器编排系统(如 Docker Compose、Kubernetes)中自动重启不健康的容器。
2. nginx.conf
user nginxuser nginxgroup;  # 指定用户和用户组
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;# 引入环境变量,放在 main 上下文
env BACKEND_SERVER;events {worker_connections 1024;multi_accept on;use epoll;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;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 2048;server_tokens off;# 启用 Gzip 压缩gzip on;gzip_disable "msie6";gzip_vary on;gzip_proxied any;gzip_comp_level 6;gzip_buffers 16 8k;gzip_http_version 1.1;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;# 缓存配置proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off;# 定义 upstream 块upstream backend {server $BACKEND_SERVER;}# HTTP 服务器配置server {listen 80;server_name _;# 重定向 HTTP 请求到 HTTPS#return 301 https://$host$request_uri;proxy_redirect http:// https://;}# HTTPS 服务器配置server {listen 443 ssl;server_name _;ssl_certificate /etc/nginx/ssl/cert.pem;ssl_certificate_key /etc/nginx/ssl/key.pem;# 尝试代理请求到后端服务location / {proxy_pass http://backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 缓存配置proxy_cache my_cache;proxy_cache_valid 200 302 60m;proxy_cache_valid 404 1m;# 如果后端服务不可用,返回默认页面error_page 502 503 504 = @fallback;}# 错误页面配置error_page 500 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# 备用页面配置location @fallback {root /usr/share/nginx/html;index index.html;}}
}

知识点讲解

  • 环境变量引入
    • 方式:在 nginx.conf 中使用 env BACKEND_SERVER; 引入环境变量,然后在 upstream 块中使用 $BACKEND_SERVER 作为后端服务器地址。
    • 作用:可以在运行容器时通过环境变量动态指定后端服务器地址,提高了配置的灵活性。
  • Gzip 压缩配置
    • 启用:gzip on; 开启 Gzip 压缩功能。
    • 参数配置:如 gzip_comp_level 6 表示压缩级别为 6,gzip_types 定义了需要压缩的文件类型。
    • 作用:减少数据传输量,提高网站的加载速度,尤其是对于文本类型的文件(如 HTML、CSS、JavaScript 等)效果明显。
  • 缓存配置
    • 缓存路径定义:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off; 定义了缓存路径、缓存区大小等参数。
    • 缓存规则配置:在 location 块中使用 proxy_cache my_cache;proxy_cache_valid 200 302 60m; 配置缓存规则。
    • 作用:减少对后端服务器的请求次数,提高响应速度,尤其是对于一些静态资源或频繁访问的页面。
3. start_nginx.sh
#!/bin/sh# 检查环境变量是否设置
if [ -z "$BACKEND_SERVER" ]; thenecho "Warning: BACKEND_SERVER environment variable is not set. Using localhost (127.0.0.1) as the backend server."BACKEND_SERVER="127.0.0.1"
fi# 替换 nginx.conf 中的占位符
sed -i "s|\$BACKEND_SERVER|$BACKEND_SERVER|g" /etc/nginx/nginx.conf# 检查配置文件是否有效
nginx -t# 以 root 用户启动 Nginx,Nginx 会根据 nginx.conf 中的 user 指令切换用户
exec nginx -g 'daemon off;'

知识点讲解

  • 环境变量检查与替换
    • 检查:使用 if [ -z "$BACKEND_SERVER" ]; then 检查 BACKEND_SERVER 环境变量是否设置。
    • 替换:如果未设置,则使用默认值 127.0.0.1,然后使用 sed 命令替换 nginx.conf 中的占位符。
    • 作用:确保在不同环境中 Nginx 都能正确连接到后端服务器。
  • 配置文件检查
    • 命令:nginx -t 用于检查配置文件是否有效。
    • 作用:避免因配置错误导致 Nginx 启动失败。

(三)生成自签名证书(测试环境)

mkdir ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout ssl/key.pem \-out ssl/cert.pem \-subj "/C=CN/ST=Zhejiang/L=Hangzhou/O=Example Company/OU=IT Department/CN=example.com/emailAddress=admin@example.com"

知识点讲解

  • OpenSSL 命令
    • 作用:使用 OpenSSL 生成自签名证书。
    • 参数解释:-x509 表示生成自签名证书,-nodes 表示不加密私钥,-days 365 表示证书有效期为 365 天,-newkey rsa:2048 表示生成 2048 位的 RSA 密钥,-subj 用于一次性设置证书的各种信息(如国家、省份、公司等)。
    • 应用场景:在测试环境中可以用来测试 HTTPS 连接,但在生产环境中建议使用正规的 CA 机构颁发的证书。

(四)构建镜像

docker build --cache-from nginx-1.25-redis-alpine -t nginx-1.25-redis-alpine . 

知识点讲解

  • docker build 命令
    • 参数解释:--cache-from 用于指定缓存镜像,-t 用于指定镜像的标签,最后的 . 表示使用当前目录作为构建上下文。
    • 作用:根据 Dockerfile 构建 Docker 镜像。

(五)运行容器

docker run -d -p 80:80 -p 443:443 nginx-1.25-redis-alpine

如果要指定后端服务器,可以继续使用 -e 参数:

docker run -d -p 80:80 -p 443:443 -e BACKEND_SERVER=backend_server_ip:backend_server_port nginx-1.25-redis-alpine

知识点讲解

  • 端口映射
    • 方式:使用 docker run -p 80:80 -p 443:443 将容器的 80 和 443 端口映射到主机的对应端口。
    • 作用:通过主机的 IP 地址访问容器内的 Nginx 服务。
  • 环境变量传递
    • 方式:使用 -e BACKEND_SERVER=backend_server_ip:backend_server_port 在运行容器时传递环境变量。
    • 作用:动态指定后端服务器地址。

访问测试curl localhost 看熟悉的Nginx欢迎页面来了。

curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

四、课程总结

通过本课程的学习,你应该对 nginx-redis-alpine 项目有了深入的理解,包括 Dockerfile 的多阶段构建、Nginx 的配置、启动脚本的编写、自签名证书的生成以及 Docker 镜像的构建和容器的运行等知识点。这些知识在实际的项目开发和运维中非常有用,希望你能熟练掌握并应用到实际工作中。

相关文章:

Docker 构建 nginx-redis-alpine 项目详解

Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿&#xff0c;朋友们&#xff01;今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine&#xff01;这个项目可不简单&#xff0c;它包含了好多重要的知识点&#xff0c;像文件目录结构、核心文件的作用及配…...

【教学类-43-26】20240312 数独4宫格的所有可能(图片版 576套样式,空1格-空8格,每套65534张*576小图=3千万张小图)

背景需求&#xff1a; 之前做了三宫格所有可能图片 510小图*12套6120图&#xff0c;所以3分钟就生成了 【教学类-43-25】20240311 数独3宫格的所有可能&#xff08;图片版 12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120小图&#xff09;-CSDN博客…...

ChromeOS 134 版本更新

ChromeOS 134 版本更新 一、ChromeOS 134 更新内容 1. ChromeOS 自助终端&#xff08;Kiosk&#xff09;模式支持隔离 Web 应用&#xff08;Isolated Web Apps&#xff09; 从 ChromeOS 134 开始&#xff0c;自助终端&#xff08;Kiosk&#xff09;模式支持 隔离 Web 应用&a…...

Redis面试篇

目录 Redis面试篇 1.什么是Redis&#xff1f;作用是什么&#xff1f; 2.什么是缓存穿透、缓存击穿、缓存雪崩 2.1缓存穿透 2.2缓存击穿 2.3缓存雪崩 3.redis如何持久化 1. RDB&#xff08;快照存储&#xff09; 2. AOF&#xff08;追加日志&#xff09; 4.Redis 的过…...

C#中通过Response.Headers设置自定义参数

一、基础设置方法 1. 直接添加自定义头 // ASP.NET Core方案 Response.Headers.Append("X-API-Version", "2.3.1"); Response.Headers.Append("Custom-Auth-Token", Guid.NewGuid().ToString());• 底层原理&#xff1a;通过IHeaderDictionary…...

C++标准模板库学习--函数模板返回值参数类型

template<typename T1, typename T2> 2 T1 max (T1 a, T2 b) 3 { 4 return b < a ? a : b; 5 } 6 ... 7 auto m ::max(4, 7.2); // OK, 不过返回类型与第一个参数类型一样 如何解决模板的返回类型 法一&#xff0c;使用decltype进行类型推断&#xff0c;在编译时…...

BUG修复 | 一次钉钉工作台应用远程调试实战(开发者工具)

#1 ℹ️背景故事 最近用户反馈&#xff0c;钉钉工作台的应用无法正常使用&#xff0c;卡在自动登录页面。 天&#xff0c;这是运行10年的老程序&#x1f631;&#xff0c;我当时真是吓得不轻。这老古董完全不记得怎么改了&#x1f602;。 #2 &#x1f41e;开启远程调试 钉钉…...

[目标检测] 训练之前要做什么

背景&#xff1a;训练一个Yolo8模型&#xff0c;在训练之前&#xff0c;数据集的处理是影响效果的关键因素。 Step1 定义规则 什么是人/车&#xff0c;比如人的话可能是站着的人&#xff0c;如果是骑电动车/自行车就不算是人。 Step2 收集数据集 1. 自己标注。如果是自己标…...

一窥DeepSeek开源EPLB项目:揭开技术背后的面纱

摘要 在DeepSeek开源DualPipe项目的同一天&#xff0c;EPLB项目也正式对外公开。EPLB&#xff08;Enhanced Pipeline Balancing&#xff09;并非一蹴而就的奇迹&#xff0c;而是经过长时间的研发与优化。该项目旨在通过改进管道平衡机制&#xff0c;提升系统的稳定性和效率。本…...

达梦数据库中插入导出图片的方法与应用

达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中&#xff0c;图片存储是一项常见且重要的需求。以电商平台为例&#xff0c;商品展示图片是吸引消费者的关键元素&#xff1b;而在社交软件里&#xff0c;用户头像更是个人形象的直观体现。针对达梦数据库&#…...

问deepseek: OpenFOAM并行分区后,是如何实现ldumatrix矩阵向量乘法计算逻辑的?

在OpenFOAM中&#xff0c;lduMatrix 是用于存储稀疏矩阵的类&#xff0c;支持并行计算。并行分区后&#xff0c;lduMatrix 的矩阵向量乘法通过以下步骤实现&#xff1a; 1. 矩阵分区 分区&#xff1a;将矩阵和向量分配到多个处理器上&#xff0c;每个处理器负责一部分。接口&…...

linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)

文章目录 一、常规办法二、继续三、继续四、缺少 libgomp库&#xff08;最终解决&#xff09;在 Conda 环境中安装 libgomp 如果符合标题情况 执行的&#xff1a; pip install "xinference[all]"大概率是最终解决的情况。 一、常规办法 llama-cpp-python 依赖 CMak…...

蓝耘携手通义万象 2.1 图生视频:开启创意无限的共享新时代

在科技飞速发展的今天&#xff0c;各种新奇的技术不断涌现&#xff0c;改变着我们的生活和工作方式。蓝耘和通义万象 2.1 图生视频就是其中两项非常厉害的技术。蓝耘就像是一个超级大管家&#xff0c;能把各种资源管理得井井有条&#xff1b;而通义万象 2.1 图生视频则像是一个…...

04 1个路由器配置一个子网的dhcp服务

前言 这是最近一个朋友的 ensp 相关的问题, 这里来大致了解一下 ensp, 计算机网络拓扑 相关基础知识 这里一系列文章, 主要是参照了这位博主的 ensp 专栏 这里 我只是做了一个记录, 自己实际操作了一遍, 增强了一些 自己的理解 当然 这里仅仅是一个 简单的示例, 实际场景…...

Android studio运行报错处理

没装HAXM报错&#xff1a; Intel HAXM 7.6.5 下载 下载链接&#xff1a; https://www.filehorse.com/download-intel-haxm/54766/download/#google_vignette 运行时弹窗提示&#xff1a;Device manager The emulator process for AVD Pixel_3a_API_34_extension_level_7_x86_6…...

【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>

std::shared_ptr 的 Rust 绑定称为 SharedPtr。 限制&#xff1a; SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权&#xff0c;应改用 Box&#xff08;C 中的 rust::Box&#xff09;。 示例 // src/main.rsuse std::ops::Deref; …...

NocoBase 本周更新汇总:双因素身份认证(2FA)

原文链接&#xff1a;https://www.nocobase.com/cn/blog/weekly-updates-202503013 汇总一周产品更新日志&#xff0c;最新发布可以前往我们的博客查看。 本周我们发布了 NocoBase 1.6.0 版本&#xff0c;带来集群模式部署、安全策略优化和迁移管理等多项新特性。 NocoBase …...

【Go学习】04-1-Gin框架-路由请求响应参数

【Go学习】04-1-Gin框架 初识框架go流行的web框架GinirisBeegofiber Gin介绍Gin快速入门 路由RESTful API规范请求方法URI静态url路径参数模糊匹配 处理函数分组路由 请求参数GET请求参数普通参数数组参数map参数 POST请求参数表单参数JSON参数 路径参数文件参数 响应字符串方式…...

DataX的python3使用

datax这东西本身是python2写的&#xff0c;这导致python3&#xff0c;就各种语法报错&#xff0c;问题是&#xff0c;现在的工程都是python3搞的&#xff0c;这就很难受.... 网上找到一篇帖子&#xff0c;可以解决这个问题&#xff1a; 原帖&#xff1a;python3执行datax报错…...

部署项目至服务器:响应时间太长,无法访问此页面?

在我们部署项目到服务器上的时候&#xff0c;一顿操作猛如虎&#xff0c;打开页面..... 这里记录一下这种情况是怎么回事。一般就是服务器上的安全组没有放行端口。 因为我是用宝塔进行项目部署的。所以遇到这种情况&#xff0c;要去操作两边&#xff08;宝塔and服务器所属平台…...

Map<String,Object>中Fastjson提取entrys对应的值

今天在处理接口数据时&#xff0c;需要解析出对方传入的json数据&#xff0c;并需要取出其中一个字段的值来判断&#xff0c;记录下我的步骤&#xff0c;提供参考&#xff1a; 1.json数据准备 {"hrOrgUnit": "00000000-0000-0000-0000-000000000000CCE7AED4&q…...

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果...

Android,Java,Kotlin 确保线程顺序执行的多种实现方式

在多线程编程中&#xff0c;有时需要确保一个线程必须等待另一个线程执行完毕后再执行。本文将介绍几种常见的方法来实现这一需求&#xff0c;并提供详细的代码示例。 1. 使用 Thread.join() Thread.join() 是最简单直接的方法&#xff0c;它会让当前线程等待目标线程执行完毕…...

AWK 入门教程:强大的文本处理工具

AWK 是一种强大的文本处理工具&#xff0c;广泛用于 Linux/Unix 系统中对文本文件或数据流进行操作。它能够基于条件筛选、统计字段、重新排列数据等。主要特点包括&#xff1a; 2. AWK 的基本语法 2.1 AWK 程序的结构 AWK 程序的结构: awk pattern { action } file 2.2 常…...

【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#

今天田辛老师为大家带来一篇关于在VMWare虚拟机上安装Ubuntu系统的详细教程。无论是学习、开发还是测试&#xff0c;虚拟机都是一个非常实用的工具&#xff0c;它允许我们在同一台物理机上运行多个操作系统。Ubuntu作为一款开源、免费且用户友好的Linux发行版&#xff0c;深受广…...

基于yolov8+streamlit实现目标检测系统带漂亮登录界面

【项目介绍】 基于YOLOv8和Streamlit实现的目标检测系统&#xff0c;结合了YOLOv8先进的目标检测能力与Streamlit快速构建交互式Web应用的优势&#xff0c;为用户提供了一个功能强大且操作简便的目标检测平台。该系统不仅具备高精度的目标检测功能&#xff0c;还拥有一个漂亮且…...

安装 Powerlevel10k 及 Oh My Zsh 的使用

1. 简介 Powerlevel10k 是 Oh My Zsh 最流行的终端主题&#xff0c;它不仅美观&#xff0c;还提供 Git 状态显示、命令执行时间、网络状态、Python 虚拟环境指示等 实用功能。相比其他主题&#xff0c;Powerlevel10k 速度更快、可定制性更强。 本教程将详细介绍如何安装 Powe…...

虚拟机下ubuntu进不了图形界面

6.844618] piix4_smbus 0000:07.3: SMBus Host ContrFoller not enabled! 7.859836] sd 2:0:0:0:0: [sda] Assuming drive cache: wirite through /dev/sda1: clean, 200424/1966080 files, 4053235/7864064 blocks ubuntu启动时&#xff0c;卡在上面输出位置 当前遇到的原因…...

从 root 一滴水看 Spring Data JPA 的汪洋大海

&#x1f525; 从 root 一滴水看 Spring Data JPA 的汪洋大海 &#x1f30a; 在 Spring Data JPA 的世界里&#xff0c;Specification 是个让人又爱又恨的家伙 &#x1f4a1;。它能帮你动态构建查询&#xff0c;但那个神秘的 Root<T> root 却总让人摸不着头脑&#xff1…...

二进制安装指定版本的MariaDBv10.11.6

一、官网下载mariadb安装包 Download MariaDB Server - MariaDB.org 找到对应的版本 下载安装包后上传到服务器这里不再赘述。 二、安装二进制包 1、解压安装包 2、查看安装包内的安装提示文档根据提示文档进行安装 # 解压安装包 tar xf mariadb-10.11.6-linux-systemd-x8…...

日志Python安全之SSTI——Flask/Jinja2

ssti的概念和模板引擎介绍等基础知识前面已经学过了&#xff0c;接下来直接进入正题 先了解flask/jinja2&#xff1a; flask&#xff1a; 用python编写的一个框架&#xff0c;集成 Jinja2 模板引擎&#xff08;用于动态生成 HTML 内容&#xff09;。 Flask 的核心组件&…...

梯度下降法以及随机梯度下降法

梯度下降法就是在更新weight的时候&#xff0c;向函数值下降的最快方向进行更新&#xff0c;具体的原理我就不再写了&#xff0c;就是一个求偏导的过程&#xff0c;有高数基础的都能够很快的理解过程。我在我的github里面会一直更新自己学习pytorch的过程&#xff0c;地址为&am…...

从零基础到能独立设计单片机产品,一般需要经历哪些学习阶段?

相信很多人&#xff0c;内心都有“钢铁侠”的幻想&#xff0c;成为能写程序&#xff0c;能设计硬件&#xff0c;能设计结构&#xff0c;能焊接的全能型人才。 上次徐工问我&#xff0c;如果你财富自由了&#xff0c;想去做啥&#xff1f; 我说出来&#xff0c;可能大家都不信&a…...

ORACLE 19.8版本遭遇ORA-600 [kqrHashTableRemove: X lock].宕机的问题分析

客户反馈单机环境的一个数据库半夜突然宕机了&#xff0c;这是一个比较重要的系统&#xff1b;接到通知后分析对应日志&#xff0c;发现ALERT日志中有明显报错&#xff1a;ORA-600 [kqrHashTableRemove: X lock]. 600报错我简单的分为2类&#xff0c;一类不会导致宕机&#x…...

OpenCV实现图像分割与无缝合并

一、图像分割核心方法 1、阈值分割 #include <opencv2/opencv.hpp> using namespace cv; int main() {Mat img imread("input.jpg", IMREAD_GRAYSCALE);Mat binary;threshold(img, binary, 127, 255, THRESH_BINARY); // 固定阈值分割imwrite("binary.…...

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成

《AI浪潮中的璀璨新星&#xff1a;Meta Llama、Ollama与DeepSeek的深度剖析》&#xff1a;此文为AI自动生成 引言&#xff1a;AI 大模型的群雄逐鹿时代 在科技飞速发展的当下&#xff0c;AI 大模型领域已成为全球瞩目的焦点&#xff0c;竞争激烈程度堪称白热化。从 OpenAI 推出…...

如何搭建个人静态住宅IP:从零开始

你好&#xff01;今天我们将一起探索如何从头开始搭建个人静态住宅IP。无论您是为了远程办公、在线教育还是游戏加速&#xff0c;静态住宅IP都能带给您更稳定的网络体验。 一、准备阶段 1. 明确需求 首先&#xff0c;您需要清楚自己为什么需要静态住宅IP。可能是为了实现远程…...

机器人触觉的意义

机器人触觉的重要性 触觉在机器人领域至关重要&#xff0c;尤其是在自主操作、精细操控、人机交互等方面。虽然视觉和语音技术已高度发展&#xff0c;但机器人在现实世界中的操作仍然受限&#xff0c;因为&#xff1a; 视觉有局限性&#xff1a;仅凭视觉&#xff0c;机器人难…...

【赵渝强老师】达梦数据库的目录结构

达梦数据库安装成功后&#xff0c;通过使用Linux的tree命令可以非常方便地查看DM 8的目录结构。 tree -L 1 -d /home/dmdba/dmdbms#输出的信息如下&#xff1a; /home/dmdba/dmdbms ├── bin 存放DM数据库的可执行文件&#xff0c;例如disql命令等。 ├── bin2 ├── d…...

centos7使用gpu加速的MinerU

https://mineru.readthedocs.io/zh-cn/latest/user_guide/install/boost_with_cuda.html 由于官方只有ubantu的安装教程&#xff0c;并没有基于centos7的&#xff0c;故需要自己修改命令安装并使用。 在运行此 Docker 容器之前&#xff0c;您可以使用以下命令检查您的设备是否…...

反射、反射调用以及修改成员变量,成员方法,构造函数、反射的应用

DAY11.2 Java核心基础 反射&#xff08;第二弹&#xff09; 第一弹请访问链接&#xff1a; 反射&#xff08;第一篇&#xff09; getMethod(String name, Class… parameterTypes)getMethods()getDeclaredMethod(String name,Class… parameterTypes)getDeclaredMethods() …...

对Spring的每种事务传播级别的应用场景和失效场景

好的&#xff0c;下面针对Spring的每种事务传播级别&#xff0c;详细说明其应用场景和失效场景&#xff0c;帮助更好地理解它们的实际使用。 1. REQUIRED&#xff08;默认&#xff09; 应用场景&#xff1a; 大多数业务方法&#xff0c;尤其是需要事务支持的操作。例如&#x…...

DeepSeek linux服务器(CentOS)部署命令笔记

Linux&#xff08;CentOS&#xff09;FinalShellOllama远程访问&#xff0c;本地部署deepseek 自备CentOS服务器&#xff0c;并且已经使用FinalShell连接到服务器 一、准备工作 1.更新服务器 apt-get update-y 2.下载Ollama curl -fsSL https://ollama.com/install.sh | …...

阿里巴巴发布 R1-Omni:首个基于 RLVR 的全模态大语言模型,用于情感识别

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

OpenCV 拆分、合并图像通道方法及复现

视频讲解 OpenCV 拆分、合并图像通道方法及复现 环境准备&#xff1a;安装 OpenCV 库&#xff08;pip install opencv-python&#xff09; 内容&#xff1a; 1. 读取任意图片&#xff08;支持 jpg/png 等格式&#xff09; 2. 使用 split () 函数拆解成 3 个单色通道&#xf…...

Node 使用 SSE 结合redis 推送数据(echarts 图表实时更新)

1、实时通信有哪些实现方式&#xff1f; 特性轮询&#xff08;Polling&#xff09;WebSocketSSE (Server-Sent Events)通信方向单向&#xff08;客户端 → 服务端&#xff09;双向&#xff08;客户端 ↔ 服务端&#xff09;单向&#xff08;服务端 → 客户端&#xff09;连接方…...

提升 Instagram 账号安全性:防止数据泄露的步骤

提升 Instagram 账号安全性&#xff1a;防止数据泄露的步骤 在这个数字化时代&#xff0c;Instagram 不仅是我们分享生活点滴的平台&#xff0c;也是个人信息交换的场所。随之而来的&#xff0c;是数据泄露的风险。保护好自己的 Instagram 账号&#xff0c;防止个人信息外泄&a…...

实现“XXX一张图“进行环境设施设备可视化管理

实现“电网一张图”、“铁路一张图”、“水库一张图”、“森林一张图”等概念,本质上是将某一领域的空间数据、设施设备、运行状态等信息整合到一个统一的数字化平台上,实现全域可视化、智能化管理和协同运营。这种“一张图”模式依赖于地理信息系统(GIS)、物联网(IoT)、…...

RTDETR融合[CVPR2025]ARConv中的自适应矩阵卷积

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《Adaptive Rectangular Convolution for Remote Sensing Pansharpening》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2503.00467 代码链接&#xff1a;https:/…...

深度解读DeepSeek部署使用安全(48页PPT)(文末有下载方式)

深度解读DeepSeek&#xff1a;部署、使用与安全 详细资料请看本解读文章的最后内容。 引言 DeepSeek作为一款先进的人工智能模型&#xff0c;其部署、使用与安全性是用户最为关注的三大核心问题。本文将从本地化部署、使用方法与技巧、以及安全性三个方面&#xff0c;对Deep…...