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

DockerTLS加密/不加密传输

前言:

       在Docker容器的网络通信中,安全性是至关重要的。DockerTLS作为一种加密传输协议,通过为Docker守护进程与客户端之间的通信提供加密层,有效防止数据在传输过程中被窃取或篡改。然而,在某些特定场景下,如内网环境或性能优先的应用中,不加密传输也有其应用场景。本文将深入探讨DockerTLS加密与不加密传输的利弊,帮助读者根据实际需求做出明智选择。

实验内容:

1、前期准备:

 准备两台Linux机器:一台为服务端rocky,ip:10.1.1.8

  一台为客户端centos,IP:10.1.1.9(注意:可以使用其他)

  两台都安装docker,验证命令:docker –version

  服务端关闭防火墙(省的麻烦):systemctl stop firewalld

2、添加加速器

vim /etc/docker/daemon.json

文件内容:

{

        "registry-mirrors": [

                                "https://docker.registry.cyou",

                                "https://docker-cf.registry.cyou",

                                "https://dockercf.jsdelivr.fyi",

                                "https://docker.jsdelivr.fyi",

                                "https://dockertest.jsdelivr.fyi",

                                "https://mirror.aliyuncs.com",

                                "https://dockerproxy.com",

                                "https://mirror.baidubce.com",

                                "https://docker.m.daocloud.io",

                                "https://docker.nju.edu.cn",

                                "https://docker.mirrors.sjtug.sjtu.edu.cn",

                                "https://docker.mirrors.ustc.edu.cn",

                                "https://mirror.iscas.ac.cn",

                                "https://docker.rainbond.cc"

        ]

再执行以下命令:

systemctl daemon-reload 更新源

systemctl restart docker

修改默认存储位置

使用命令查看docker镜像及容器的存储路径

docker info | grep Docker

但是该路径默认使用的是系统盘的存储,如果挂载了数据盘,需要把docker的默认存储路径修改至数据盘的挂载目录,则需要修改docker的相关配置。

3、修改 Docker 守护进程配置文件

1. 编辑 /etc/docker/daemon.json

添加hosts参数以启用 TCP 监听,同时保留本地 UNIX 套接字:

tcp://0.0.0.0:2375 :表示监听所有 IP 的 2375 端口(非加密,仅限内网使用)。

2. 处理 systemd 冲突

若系统使用systemd(如 Rocky Linux/CentOS),需创建覆盖文件:

mkdir -p /etc/systemd/system/docker.service.d

vim /etc/systemd/system/docker.service.d/override.conf

文件内容:

[Service]

ExecStart=

ExecStart=/usr/bin/dockerd

重启服务:

systemctl daemon-reload && systemctl restart docker

客户端验证

docker -H tcp://10.0.0.20:2375 info

#info 就是在对方docker 执行的指令,此处ip为linux本机ip

4、启用 TLS 加密(公网必备)

生成 TLS 证书

在/etc/docker目录下创建一个certs目录并进入次目录:

mkdir -p /etc/docker/certs && cd /etc/docker/certs

生成CA根证书

# 生成加密的 CA 私钥(4096位,AES-256加密)

openssl genrsa -aes256 -out ca-key.pem 4096

#注意需要输入至少4个字符,不然报错

# 生成 CA 根证书(有效期10年)

openssl req -new -x509 -days 3650 -key ca-key.pem -sha256 -out ca.pem

# 填写信息示例:

生成服务端证书

# 生成服务端私钥(不加密,便于自动加载)

openssl genrsa -out server-key.pem 4096

# 创建证书签名请求(CSR)

openssl req -subj "/CN=<服务器IP或域名>" -sha256 -new -key server-key.pem -out server.csr

例如:

openssl req -subj "/CN=IP:10.1.1.128" -sha256 -new -key server-key.pem -out server.csr

# 设置扩展属性(仅用于服务端认证)

echo extendedKeyUsage = serverAuth > extfile.cnf

例如:

echo subjectAltName=10.1.1.128 > extfile.cnf

上面只是一个例子,文件内容需要这么多

# 签发服务端证书

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem 

\

-CAcreateserial -out server-cert.pem -extfile extfile.cnf 

使用ai发现命令格式有问题:

修改后命令:

openssl x509 -req -days 365 \

  -sha256 \

  -in server.csr \

  -CA ca.pem \

  -CAkey ca-key.pem \

  -CAcreateserial \

  -out server-cert.pem \

  -extfile extfile.cnf \

  -extensions server_ext

验证生成的证书:

openssl x509 -in server-cert.pem -noout -text | grep -A 1 "Subject Alternative Name"

生成客户端证书

# 生成客户端私钥

openssl genrsa -out client-key.pem 4096

# 创建客户端 CSR(证书签名请求)

openssl req -subj "/CN=<客户端标识>" -sha256 -new -key client-key.pem -out client.csr

例如:

openssl req -subj "/CN=client" -new -key client-key.pem -out client.csr

#创建客户端扩展文件

echo -e "[ext]\nextendedKeyUsage = clientAuth" > extfile-client.cnf

签发客户端证书

openssl x509 -req -days 365 -sha256 \

  -in client.csr \

  -CA ca.pem \

  -CAkey ca-key.pem \

  -CAcreateserial \

  -out client-cert.pem \

  -extfile extfile-client.cnf \

  -extensions ext  # 必须与 extfile-client.cnf 中的节名一致

设置证书的权限

chmod 0400 ca-key.pem server-key.pem client-key.pem

chmod 0444 ca.pem server-cert.pem client-cert.pem

注:默认也是上面的权限

5、docker服务端配置 TLS 监听

1.修改 daemon.json :

{

  "tlsverify": true,

  "tlscacert": "/etc/docker/certs/ca.pem",

  "tlscert": "/etc/docker/certs/server-cert.pem",

  "tlskey": "/etc/docker/certs/server-key.pem",

  "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]

}

配置 Systemd 覆盖

设置证书权限

sudo chmod 600 /etc/docker/certs/*.pem

sudo chown root:docker /etc/docker/certs/*.pem

 重启 Docker 服务

sudo systemctl daemon-reload

sudo systemctl restart docker

验证端口监听

netstat -tulnp | grep 2376

防火墙放行(若启用)
sudo firewall-cmd --permanent --add-port=2376/tcp
sudo firewall-cmd --reload

6、服务重启与验证

重启 Docker 服务

systemctl restart docker

journalctl -u docker.service -f # 检查日志

 远程客户端测试连接

传输证书到客户端

将 ca.pem 、client-cert.pem 、client-key.pem 复制到客户端 ~/.docker/ 目录

测试连接TLS 加密连接

例如:

docker -H tcp://10.0.0.20:2376 --tlsverify ps

修改文件名

mv ~/.docker/client-cert.pem ~/.docker/cert.pem

mv ~/.docker/client-key.pem ~/.docker/key.pem

设置严格的文件权限
权限要求

chmod 600 ~/.docker/key.pem    # 私钥仅用户可读写

chmod 644 ~/.docker/ca.pem ~/.docker/cert.pem

再次使用命令

docker -H tcp://10.0.0.20:2376 --tlsverify ps

docker -H tcp://10.0.0.20:2376 --tlsverify run hello-world

docker -H tcp://10.0.0.20:2376 --tlsverify run -d -p 80:80 nignx

需要在服务端的/etc/docker/daemon.json文件加一个源:

"https://hub-mirror.c.163.com"

此次实验成功!

相关文章:

DockerTLS加密/不加密传输

前言&#xff1a; 在Docker容器的网络通信中&#xff0c;安全性是至关重要的。DockerTLS作为一种加密传输协议&#xff0c;通过为Docker守护进程与客户端之间的通信提供加密层&#xff0c;有效防止数据在传输过程中被窃取或篡改。然而&#xff0c;在某些特定场景下&#xff0c;…...

基于微信小程序的充电桩管理系统

一、开发背景 在开发充电汽车管理系统之前&#xff0c;深入的需求分析至关重要。我们要充分了解不同用户群体的需求&#xff0c;比如私家车主希望充电过程便捷、高效、安全&#xff0c;能够实时查看充电状态和费用明细&#xff1b;出租车、网约车司机则更注重充电速度和充电桩…...

Excel导出工具类--复杂的excel功能导出(使用自定义注解导出)

Excel导出工具类 前言: 简单的excel导出,可以用easy-excel, fast-excel, auto-poi,在导出实体类上加上对应的注解,用封装好的工具类直接导出,但对于复杂的场景, 封装的工具类解决不了,要用原生的excel导出(easy-excel, fast-excel, auto-poi都支持原生的) 业务场景: 根据…...

创新实训项目初始化——gitee的使用

创新实训项目管理采用gitee&#xff0c;写下这篇博客熟悉gitee进行项目创建和版本同步 一、gitee概述 Gitee 是一个基于 Git 的代码托管平台&#xff0c;与 GitHub 类似&#xff0c;Gitee 提供了丰富的功能&#xff0c;比如代码仓库的创建、分支管理、代码审查等。 二、gite…...

【原创】使用ElasticSearch存储向量实现大模型RAG

一、概述 检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;已成为大型语言模型&#xff08;LLM&#xff09;应用的重要架构&#xff0c;通过结合外部知识库来增强模型的回答能力&#xff0c;特别是在处理专业领域知识、最新信息或企业私有数…...

Gymnasium Cart Pole 环境与 REINFORCE 算法 —— 强化学习入门 2

Title: Gymnasium Cart Pole 环境与 REINFORCE 算法 —— 强化学习入门 2 文章目录 I. Gymnasium Cart Pole 环境II. REINFORCE 算法1. 原理说明2. REINFORCE 算法实现 I. Gymnasium Cart Pole 环境 Gymnasium Cart Pole 环境是一个倒立摆的动力学仿真环境. 状态空间: 0: Ca…...

响应式数据 和 Pinia 状态

响应式数据 和 Pinia 状态 是 Vue.js 应用中用于管理数据的两种重要机制&#xff0c;它们之间有密切的关系。以下是它们的定义、特点以及关系&#xff1a; 1. 响应式数据 定义 响应式数据 是 Vue.js 的核心特性之一&#xff0c;指的是当数据发生变化时&#xff0c;视图会自动…...

在大数据开发中hive是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在大数据技术的浩瀚星空中&#xff0c;Apache Hive犹如一座桥梁&#xff0c;连接着传统数据仓库理念…...

LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 过去2年多的深入超过此前7年&#xff0c;全靠夜以继日的勤奋&#xff0c;一天当两天用&#xff0c;抠论文 抠代码 和大模型及具身同事讨论&#xff0c;是目前日常 而具身库里&#xff0c;idp3、π0、lerobot值得反复研究&#xff0c;故&#xff0c;近期我一直在抠π0及l…...

Python生成requirements.txt的两种方法

Python生成requirements.txt的两种方法 方法一&#xff1a;导出当前环境的依赖包 使用pipreqs --encodingutf8为使用utf8编码&#xff0c;避免编码报错 --force 强制执行覆盖生成目录下的requirements.txt # 安装 python3 -m pip install pipreqs # 在当前目录生成 pipreqs . …...

如何判断 MSF 的 Payload 是 Staged 还是 Stageless(含 Meterpreter 与普通 Shell 对比)

在渗透测试领域&#xff0c;Metasploit Framework&#xff08;MSF&#xff09;的 msfvenom 工具是生成 Payload&#xff08;载荷&#xff09;的核心利器。然而&#xff0c;当我们选择 Payload 时&#xff0c;经常会遇到一个问题&#xff1a;这个 Payload 是 Staged&#xff08;…...

HTML5与CSS3新特性详解

一、HTML5新特性 1.概述 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特…...

Redis常用进阶 存储原理和主从思路

Redis常用进阶 存储原理和主从思路 简介 此篇用于需要时随时查阅的知识. 由于不断的学习总是会忘记一些 所以用于记录 笔记对应视频为黑马redis https://www.bilibili.com/video/BV1Pu411Y7bq 单点redis的问题 : 数据丢失问题 持久化并发能力弱 主从集群存储能力问题 ES故…...

本地部署DeepSeek-R1(Dify升级最新版本、新增插件功能、过滤推理思考过程)

下载最新版本Dify Dify1.0版本之前不支持插件功能&#xff0c;先升级DIfy 下载最新版本&#xff0c;目前1.0.1 Git地址&#xff1a;https://github.com/langgenius/dify/releases/tag/1.0.1 我这里下载到老版本同一个目录并解压 拷贝老数据 需先停用老版本Dify PS D:\D…...

分治-快速排序系列一>快速排序

目录 题目方法&#xff1a;优化方法&#xff1a;代码&#xff1a; 题目方法&#xff1a; 忘记快速排序看这里&#xff1a;链接: link 优化方法&#xff1a; 代码&#xff1a; public int[] sortArray(int[] nums) {qsort(nums,0,nums.length-1);return nums;}private void qso…...

【spring对bean Singleton和Prototype的管理流程】

在 Spring 框架中&#xff0c;Bean 的作用域决定了 Bean 的生命周期和创建方式。Spring 支持多种作用域&#xff0c;其中最常用的是 单例&#xff08;Singleton&#xff09; 和 原型&#xff08;Prototype&#xff09;。以下是 Spring 对单例和原型 Bean 的管理流程详解&#x…...

【Java】grpc-java在IDEA中build不成功的相关问题,Android,codegen C++语言排除

一、解决Android依赖问题 在当前grpc-java项目根目录下创建gradle.properties文件,输入以下内容: skipAndroid=true或者 android.useAndroidX=true二、com.google.cloud.tools.appengine插件找不到的问题 Plugin [id: ‘com.google.cloud.tools.appengine’, version: ‘…...

十七、实战开发 uni-app x 项目(仿京东)- 后端指南

前面我们已经用uniappx进行了前端实战学习 一、实战 开发uni-app x项目(仿京东)-规划-CSDN博客 二、实战 开发uni-app x项目(仿京东)-项目搭建-CSDN博客 三、实战开发 uni-app x 项目(仿京东)- 技术选型-CSDN博客 四、实战开发 uni-app x 项目(仿京东)- 页面设计-C…...

SpringSecurity——基于角色权限控制和资源权限控制

目录 基于角色权限控制 1.1 自定义 UserDetailsService 1.2 加载用户角色 1.3. 给角色配置能访问的资源&#xff08;使用切面拦截&#xff0c;使用注解&#xff09; 总结 资源权限控制 2.2. 需要有一个用户&#xff1b;&#xff08;从数据库查询用户&#xff09; 2.2 基…...

经历过的IDEA+Maven+JDK一些困惑

注意事项&#xff1a;由于使用过程中是IDEA绑定好另外2个工具&#xff0c;所以报错统一都显示在控制台&#xff0c;但要思考和分辨到底是IDEA本身问题导致的报错&#xff0c;还是maven导致的 标准配置 maven Java Compiler Structure 编辑期 定义&#xff1a;指的是从open pr…...

基于Arduino控制的温室蔬菜园环境监控系统(论文+源码)

2.1系统总体方案设计 本课题为基于Arduino控制的温室蔬菜园环境监控系统&#xff0c;在硬件上结合Arduino 控制器&#xff0c;土壤湿度传感器&#xff0c;ESP8266模块&#xff0c;环境温湿度传感器&#xff0c;光敏电阻&#xff0c;液晶等来构成整个系统&#xff0c;其可以实现…...

关于HAL库的知识1----MSP函数

在 HAL 库中&#xff0c;大部分外设在初始化时都会调用一个对应的 MSP 初始化函数&#xff0c;这个函数的主要作用就是配置与外设相关的底层硬件资源&#xff0c;比如时钟、GPIO、中断、DMA 等。常见的外设及其对应的 MSP 函数包括&#xff1a; UART/USART&#xff1a;对应 HA…...

QT 磁盘文件 教程04-创建目录、删除目录、遍历目录

【1】新建目录 bool CreateDir(QString name){QString fileName name ;QDir dir(fileName);if (dir.isEmpty()) {dir.mkdir(fileName);return true;}else{qDebug()<<"文件夹已存在";return false;} } 【2】删除目录 bool DeleteDir(QString fileName){if (…...

高级java每日一道面试题-2025年3月06日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?

如果有遗漏,评论区告诉我进行补充 面试官: Eureka Server和Eureka Client关系? 我回答: 在微服务架构中&#xff0c;Eureka作为Netflix开源的服务发现组件&#xff0c;由Eureka Server&#xff08;服务端&#xff09;和Eureka Client&#xff08;客户端&#xff09;两大部分…...

MAC-在使用@Async注解的方法时,分布式锁管理和释放

在使用 @Async 注解的异步方法中管理分布式锁时,需要特别注意 ​锁的获取、释放与异步执行的生命周期匹配。以下是结合 Spring Boot 和 Redis 分布式锁的实践方案: 1. 为什么需要分布式锁? 异步方法可能被多个线程/服务实例并发执行,若访问共享资源(如数据库、缓存),需…...

Kafka 八股文

一、基础概念 1. Kafka 是什么&#xff1f;它的核心组件有哪些&#xff1f; Kafka 的定义 Kafka 是一个 分布式流处理平台&#xff0c;最初由 LinkedIn 开发&#xff0c;后成为 Apache 顶级项目。它主要用于 高吞吐量的实时数据流处理&#xff0c;支持发布-订阅模式的消息传递…...

现代前端开发框架对比:React、Vue 和 Svelte 的选择指南

引言 在当今快速发展的 Web 开发领域&#xff0c;前端框架的选择往往直接影响项目的开发效率、维护成本和用户体验。React、Vue 和 Svelte 作为当前最受关注的三大框架&#xff0c;各自拥有独特的设计哲学与技术实现。本文将通过 5000 字的深度解析&#xff0c;从架构设计、开…...

ffmpeg(库编译) 01 搭建环境和安装依赖

创建目录在home目录下创建 ffmpeg_sources:用于下载源文件 ffmpeg_build: 存储编译后的库文件 bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等) mkdir ffmpeg_sources ffmpeg_build bin安装依赖 先执行sudo apt-get update进行更新,再往下走sudo apt-get -…...

Java后端开发技术详解

Java作为一门成熟的编程语言&#xff0c;已广泛应用于后端开发领域。其强大的生态系统和广泛的支持库使得Java成为许多企业和开发者的首选后端开发语言。随着云计算、微服务架构和大数据技术的兴起&#xff0c;Java后端开发的技术栈也不断演进。本文将详细介绍Java后端开发的核…...

Python高级:GIL、C扩展与分布式系统深度解析

文章目录 &#x1f4cc; **前言**&#x1f527; **第一章&#xff1a;Python语言的本质与生态**1.1 **Python的实现与版本演进**1.2 **开发环境与工具链** &#x1f527; **第二章&#xff1a;元编程与动态特性**2.1 **描述符协议&#xff08;Descriptor Protocol&#xff09;*…...

数学之握手问题

问题描述 小蓝组织了一场算法交流会议&#xff0c;总共有 50人参加了本次会议。在会议上&#xff0c;大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人&#xff0c;这 7 人彼此之间没有进行握手 (但这 7 人与除这 …...

【Nodejs】2024 汇总现状

之前已经调研了容器、nexus-public&#xff0c;实现了本地构建应用镜像和基础设施的镜像。为实现分布式一体化协作开发的目标&#xff0c;还需要配套的线上协作开发环境。故而重回前端调研现状&#xff0c;比较 5 年前的 nodejs 快好的啊。 以下是针对 Node.js 工具链的深度解析…...

人工智能之数学基础:矩阵的降维

本文重点 在现实世界中,我们经常会遇到高维数据。例如,图像数据通常具有很高的维度,每个像素点都可以看作是一个维度。高维数据不仅会带来计算和存储上的困难,还可能会导致 “维数灾难”,即随着维度的增加,数据的稀疏性和噪声也会增加,从而影响数据分析的效果。因此,我…...

数仓开发那些事(10)

某神州优秀员工&#xff1a;&#xff08;没错&#xff0c;这个diao毛被评为了优秀员工&#xff09;一闪&#xff0c;听说你跑路了&#xff0c;不做零售行业了 一闪&#xff1a;没错&#xff0c;老东家的新it总监上任后大家都开始躺平&#xff0c;失去了当年的动力&#xff0c;所…...

【手工】早教游戏:下楼的猴子

一、效果 二、准备材料 吸管: 10.4 c m 10.4cm 10.4cm&#xff1b;棉签&#xff1a; 6 6 6 根双头棉签&#xff1b;硬币&#xff1a;1角&#xff1b;纸皮人: 2.0 c m 4.0 c m 2.0cm4.0cm 2.0cm4.0cm&#xff1b;纸板&#xff1a; 12.0 c m 30.0 c m 12.0cm30.0cm 12.0cm30…...

力扣刷题46. 全排列

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 使用dfs搜索&#xff0c;查找所有的情况&#xff0c;首先定义所有的链表集合list&#xff0c;在定义每一种情况的链表res&#xff0c;在主函数中遍历所有的初始元素&#xff0c;首先初始化res&#xff0c;并且添加到res中&…...

【工作记录】pytest使用总结

1、 fixture夹具 可参考&#xff1a; python3.x中 pytest之fixture - 漂泊的小虎 - 博客园 fixture是指夹具&#xff08;把用例夹在中间&#xff09;&#xff0c;它包括前置工作和后置工作&#xff0c;前置是用例代码的准备阶段&#xff0c;后置是用例执行之后的清理阶段,用…...

linux 命令 mkdir

以下是 Linux mkdir 命令的简明总结&#xff0c;适合快速查阅和实际场景应用&#xff1a; 基础语法 mkdir [选项] 目录名... 常用选项速查 选项作用-p自动创建父目录&#xff08;解决多级目录问题&#xff09; mkdir -p a/b/c-m直接设置权限&#xff08;替代chmod&#xff0…...

浏览器对一个资源设置了缓存,如何清除缓存,且后续请求不命中缓存

方式1、浏览器端强制刷新 方式2、修改资源url eg&#xff1a;如下图&#xff0c;添加了查询参数 <link rel"stylesheet" href"style.css?v1.2.1"> <script src"app.js?t20231010"></script> 原理&#xff1a;1、在资源的…...

k8s的存储

一 configmap 1.1 configmap的功能 configMap用于保存配置数据&#xff0c;以键值对形式存储。 configMap 资源提供了向 Pod 注入配置数据的方法。 镜像和配置文件解耦&#xff0c;以便实现镜像的可移植性和可复用性。 etcd限制了文件大小不能超过1M 1.2 configmap的使用…...

[JavaScript]如何利用作用域块避免闭包内存泄漏?

出自《你不知道的JavaScript》上卷 以下是本书给出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click会被回调在其他位置, 在addEventListener函数内…...

Pytorch使用手册—扩展 TorchScript 使用自定义 C++ 操作符(专题五十三)

提示 本教程自 PyTorch 2.4 起已弃用。有关 PyTorch 自定义操作符的最新指南,请参阅 PyTorch 自定义操作符。 PyTorch 1.0 版本引入了一种名为 TorchScript 的新编程模型。TorchScript 是 Python 编程语言的一个子集,可以被 TorchScript 编译器解析、编译和优化。此外,编译后…...

CellOracle|基因扰动研究基因功能|基因调控网络+虚拟干预

在gzh“生信小鹏”同步文章 论文来源: 发表期刊:Nature发表时间:2023年2月23日论文题目:Dissecting cell identity via network inference and in silico gene perturbation研究团队:Kenji Kamimoto 等,华盛顿大学医学院1. 研究背景与问题提出 细胞身份(Cell Identit…...

深入探索JVM字节码增强技术与调优实践

引言 Java虚拟机(JVM)是Java程序运行的基石,而字节码增强技术则是JVM生态中一项强大的工具。通过字节码增强,开发者可以在不修改源代码的情况下,动态地修改或增强类的行为。本文将深入探讨字节码增强技术的原理、常用工具,并结合JVM调优和排错实践,帮助开发者更好地理解…...

vue 中常用操作数组的方法

操作数组方法 记录一下自己常用到的操作数组的方法 1.forEach() 遍历数组 在回调函数中对原数组的每个成员进行修改&#xff08;不用 return&#xff09; 方法接收一个回调函数 回调函数接收两个参数 第一个是遍历的当前元素 第二个是元素的索引 const arr [{name: 张三},…...

envoy 源码分析

整体架构 Envoy 的架构如图所示: Envoy 中也可能有多个 Listener&#xff0c;每个 Listener 中可能会有多个 filter 组成了 chain。 Envoy 接收到请求后&#xff0c;会先走 FilterChain&#xff0c;通过各种 L3/L4/L7 Filter 对请求进行微处理&#xff0c;然后再路由到指定的集…...

c++基础知识--返回值优化

在 C 中&#xff0c;Named Return Value Optimization&#xff08;NRVO&#xff0c;具名返回值优化&#xff09; 是一种编译器优化技术&#xff0c;用于消除函数返回一个局部对象时的拷贝或移动操作。它是 返回值优化&#xff08;RVO&#xff09; 的一种更复杂的变体&#xff0…...

【第14节】windows sdk编程:进程与线程介绍

目录 一、进程与线程概述 1.1 进程查看 1.2 何为进程 1.3 进程的创建 1.4 进程创建实例 1.5 线程查看 1.6 何为线程 1.7 线程的创建 1.8 线程函数 1.9 线程实例 二、内核对象 2.1 何为内核对象 2.2 内核对象的公共特点 2.3 内核对象句柄 2.4 内核对象的跨进程访…...

实测 Gemini 2.0 Flash 图像生成:多模态 AI 的创作力边界

近日&#xff0c;Google 发布了 Gemini 2.0 Flash 的实验性图像生成功能&#xff08;Gemini 2.0 Flash (Image Generation) Experimental&#xff09;。我也第一时间体验了这一功能&#xff0c;再次感受到 AI 技术对传统图像处理工具的颠覆性冲击。 引言 Gemini 2.0 Flash 的…...

每日一题——买卖股票的最佳时机

买卖股票的最佳时机 问题描述示例示例 1示例 2 提示 问题分析难点分析 算法设计思路 代码实现复杂度分析测试用例测试用例 1测试用例 2测试用例 3 总结 问题描述 给定一个数组 prices&#xff0c;其中第 i 个元素 prices[i] 表示一支给定股票在第 i 天的价格。你可以选择某一天…...