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

《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用MATLAB画一朵会动的3D玫瑰:从零开始的浪漫编程之旅

《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-🌹用MATLAB画一朵会动的3D玫瑰:从零开始的浪漫编程之旅在这里插入图片描述

你是否想过用代码创造一朵永不凋谢的玫瑰?今天,我将带你走进MATLAB的奇妙世界,用数学公式和编程技巧,打造一朵专属于你的3D动态玫瑰。这不仅是技术教程,更是一场浪漫的数学艺术创作!

🌟 前言:当代码遇上玫瑰

“程序员不懂浪漫?” 让我们用MATLAB打破这一刻板印象!玫瑰不仅是爱情的象征,它的优美曲线也蕴含着丰富的数学规律。通过这篇教程,你将学会:

  • 用极坐标方程描述玫瑰花瓣的优雅曲线
  • 将2D图形拓展到3D空间,赋予玫瑰立体生命
  • 添加光影效果,让玫瑰更加真实动人
  • 创建平滑动画,让你的玫瑰"活"起来
  • 导出作品,送给特别的人或分享到社交网络

准备好了吗?让我们一起开始这段代码与艺术交融的奇妙旅程!

🧮 第一章:玫瑰背后的数学之美

1.1 玫瑰曲线的历史渊源

玫瑰曲线(Rose Curve)最早由意大利数学家Guido Grandi在1723年研究,因其形状酷似玫瑰花瓣而得名。这种曲线在极坐标下展现出惊人的对称美,是数学与自然完美结合的典范。

1.2 极坐标下的玫瑰方程

基础玫瑰曲线方程为:

r = a × cos(k × θ)

其中:

  • r:极径(点到原点的距离)
  • θ:极角(点与极轴的夹角)
  • a:控制花瓣大小
  • k:控制花瓣数量和形状

趣味实验:尝试不同的k值,观察花瓣变化规律:

  • 当k为整数时:花瓣数量为k(k为奇数)或2k(k为偶数)
  • 当k为分数时:会产生更复杂的花瓣图案

1.3 3D玫瑰的魔法公式

要将玫瑰带入三维世界,我们需要更丰富的参数方程:

x = r × sin(θ) × cos(φ)
y = r × sin(θ) × sin(φ)
z = r × cos(θ)

其中φ是第二个角度参数,让我们能在z轴上创造变化。

💻 第二章:从零开始绘制2D玫瑰

2.1 基础绘图代码

让我们先用最简单的代码绘制一朵2D玫瑰:

% 清空工作区,准备画布
clf; clear; close all;% 设置参数
a = 2;       % 花瓣大小
k = 5;       % 花瓣数量
theta = linspace(0, 2*pi, 1000);  % 创建1000个角度点% 计算极坐标
r = a * cos(k * theta);% 转换为笛卡尔坐标
x = r .* cos(theta);
y = r .* sin(theta);% 绘制玫瑰
figure('Color', 'black')  % 黑色背景更显艺术感
plot(x, y, 'Color', [0.9 0.2 0.3], 'LineWidth', 3)
title('\fontsize{16}\color{white}MATLAB绘制的2D玫瑰', 'Interpreter', 'tex')
axis equal off  % 保持比例并隐藏坐标轴
set(gca, 'Color', 'black')  % 设置坐标区背景为黑色

运行效果:你会看到一朵鲜艳的红色五瓣玫瑰绽放在黑色背景上,就像夜空中绽放的烟火。

2.2 个性化你的玫瑰

尝试修改这些参数,创造属于你的独特玫瑰:

% 尝试不同的颜色
colors = {'#FF1493', '#FFD700', '#00FF7F', '#9370DB', '#00BFFF'};figure('Position', [100 100 800 600], 'Color', 'black')
for i = 1:5subplot(2,3,i)k = i+2;  % 不同花瓣数量r = a * cos(k * theta);x = r .* cos(theta);y = r .* sin(theta);plot(x, y, 'Color', colors{i}, 'LineWidth', 2)title(sprintf('%d瓣玫瑰', k), 'Color', 'white')axis equal offset(gca, 'Color', 'black')
end

这段代码会生成一个包含5种不同颜色和花瓣数量的玫瑰画廊。
在这里插入图片描述

🌌 第三章:进入3D世界 - 让玫瑰立体起来

3.1 基础3D玫瑰

现在,让我们把玫瑰带入三维空间:

% 3D玫瑰参数
a = 1;          % 大小
k = 5;          % 花瓣数
n = 2;          % 形状控制
m = 3;          % 形状控制% 创建角度网格
[theta, phi] = meshgrid(linspace(0, 2*pi, 100), linspace(0, pi, 50));% 计算极径
r = a * sin(n * theta) .* cos(m * phi);% 转换为3D坐标
x = r .* sin(theta) .* cos(phi);
y = r .* sin(theta) .* sin(phi);
z = r .* cos(theta);% 绘制3D玫瑰
figure('Position', [100 100 800 600], 'Color', [0.1 0.1 0.3])
rose = surf(x, y, z, 'EdgeColor', 'none');
title('\fontsize{16}\color{white}3D玫瑰', 'Interpreter', 'tex')
colormap('hot')  % 使用热力图颜色
axis equal off
view(30, 30)    % 设置视角% 添加专业光照
light('Position', [1 1 1], 'Style', 'infinite', 'Color', [1 1 0.8])
light('Position', [-1 -1 -1], 'Style', 'infinite', 'Color', [0.3 0.3 1])
lighting gouraud  % 使用Gouraud着色,更平滑
material shiny    % 使表面有光泽

效果说明:你会看到一朵立体的玫瑰,表面有漂亮的光影渐变,就像被阳光照射的真实花朵。
在这里插入图片描述

3.2 高级美化技巧

让我们进一步提升视觉效果:

% 创建更精细的玫瑰
[theta, phi] = meshgrid(linspace(0, 2*pi, 200), linspace(0, pi, 100));% 更复杂的形状公式
r = a * (sin(n*theta).^2) .* (cos(m*phi).^3);% 重新计算坐标
x = r .* sin(theta) .* cos(phi);
y = r .* sin(theta) .* sin(phi);
z = r .* cos(theta);% 创建专业级可视化
figure('Position', [100 100 1000 800], 'Color', [0.05 0.05 0.1])
ax = axes('Color', 'none', 'Position', [0 0 1 1]);  % 全屏坐标区% 绘制带透明度的玫瑰
rose = surf(x, y, z, 'FaceColor', [0.9 0.2 0.3], ...'EdgeColor', 'none', ...'FaceAlpha', 0.9, ...'DiffuseStrength', 0.8, ...'SpecularStrength', 0.5, ...'BackFaceLighting', 'lit');% 设置视角和光照
view(45, 30)
axis equal vis3d off
camlight('left')  % 添加相机相关光照
lighting phong    % 更高质量的光照% 添加颜色条
c = colorbar('eastoutside', 'Color', 'white');
c.Label.String = '深度';
c.Label.FontSize = 12;% 添加艺术字标题
annotation('textbox', [0.3 0.9 0.4 0.1], ...'String', 'MATLAB 3D艺术玫瑰', ...'Color', 'white', ...'FontSize', 24, ...'FontWeight', 'bold', ...'EdgeColor', 'none', ...'HorizontalAlignment', 'center');

效果提升:这朵玫瑰现在拥有更精细的表面细节、更自然的光照效果和专业的排版布局,完全可以作为数字艺术品展示。
在这里插入图片描述

🎬 第四章:让玫瑰动起来 - MATLAB动画魔法

4.1 基础旋转动画

让我们先创建一个简单的旋转动画:

% 准备动画参数
n_frames = 120;  % 总帧数
azimuth_step = 360 / n_frames;  % 每帧旋转角度% 创建图形窗口
fig = figure('Position', [100 100 800 800], 'Color', [0.1 0.1 0.3]);
ax = axes('Position', [0 0 1 1], 'Color', 'none');
axis equal off
view(30, 30)% 预分配电影帧
movie_frames(n_frames) = struct('cdata', [], 'colormap', []);% 生成动画
for i = 1:n_frames% 更新视角view(30 + (i-1)*azimuth_step, 30 + 10*sin(2*pi*(i-1)/n_frames))% 添加动态标题title(ax, sprintf('旋转的玫瑰 - 帧 %d/%d', i, n_frames), ...'Color', 'white', 'FontSize', 16)% 捕获当前帧drawnowmovie_frames(i) = getframe(fig);
end% 在MATLAB中播放动画
figure('Position', [100 100 800 800])
movie(movie_frames, 3, 30)  % 播放3次,30fps

动画效果:玫瑰会平滑旋转,同时视角有轻微上下浮动,模拟手持相机拍摄的效果。

4.2 绽放动画 - 从花苞到盛开

更令人惊叹的是让玫瑰从花苞逐渐绽放:

% 参数设置
a_final = 1.5;  % 最终大小
k = 7;          % 花瓣数
n = 3;          % 形状参数
m = 4;          % 形状参数% 创建精细网格
[theta, phi] = meshgrid(linspace(0, 2*pi, 200), linspace(0, pi, 100));% 准备动画
fig = figure('Position', [100 100 1000 800], 'Color', [0.05 0.05 0.15]);
ax = axes('Position', [0 0 1 1], 'Color', 'none');
axis equal vis3d off
view(45, 25)% 设置光照
light('Position', [0 0 10], 'Style', 'local', 'Color', [1 0.8 0.6])
light('Position', [10 10 10], 'Style', 'local', 'Color', [0.6 0.6 1])
lighting gouraud% 动画参数
n_frames = 90;
bloom_frames(n_frames) = struct('cdata', [], 'colormap', []);% 绽放过程
for t = linspace(0, 1, n_frames)% 计算当前大小和形状current_a = a_final * smoothstep(t);  % 使用平滑函数r = current_a * (sin(n*theta).^2) .* (cos(m*phi).^3);% 计算坐标x = r .* sin(theta) .* cos(phi);y = r .* sin(theta) .* sin(phi);z = r .* cos(theta);% 绘制玫瑰(首次绘制或更新)if t == 0rose = surf(x, y, z, 'FaceColor', [0.9 0.2*t 0.3], ...'EdgeColor', 'none', 'FaceAlpha', 0.9);elseset(rose, 'XData', x, 'YData', y, 'ZData', z, ...'FaceColor', [0.9 0.2+0.5*t 0.3]);end% 添加动态视角view(45 + t*180, 25 + 10*sin(t*2*pi))% 添加进度文本annotation('textbox', [0.4 0.05 0.2 0.05], ...'String', sprintf('绽放进度: %.0f%%', t*100), ...'Color', 'white', 'FontSize', 14, ...'EdgeColor', 'none', 'HorizontalAlignment', 'center')% 捕获帧drawnowbloom_frames(round(t*(n_frames-1))+1) = getframe(fig);% 删除进度文本if t < 1delete(findall(fig, 'Type', 'annotation'))end
end% 平滑过渡函数
function y = smoothstep(x)y = x.^2 .* (3 - 2*x);
end

动画亮点

  1. 玫瑰从中心逐渐向外绽放
  2. 颜色从深红渐变为亮红
  3. 视角缓慢旋转,展示不同角度
  4. 底部有进度条显示绽放百分比
  5. 使用平滑函数使动画更加自然
    在这里插入图片描述

🎁 第五章:导出与分享你的作品

5.1 保存为GIF动画

filename = 'blooming_rose.gif';% 调整帧率
delay_time = 0.08;  % 每帧延迟时间for i = 1:length(bloom_frames)% 将帧转换为图像img = frame2im(bloom_frames(i));[imind, cm] = rgb2ind(img, 256);% 写入GIFif i == 1imwrite(imind, cm, filename, 'gif', ...'Loopcount', inf, ...'DelayTime', delay_time, ...'BackgroundColor', 0);elseimwrite(imind, cm, filename, 'gif', ...'WriteMode', 'append', ...'DelayTime', delay_time);end% 显示进度fprintf('正在保存GIF: %.1f%%\n', 100*i/length(bloom_frames));
end

在这里插入图片描述

5.2 保存为高清视频

% 创建VideoWriter对象
v = VideoWriter('blooming_rose_hd.mp4', 'MPEG-4');
v.Quality = 100;      % 最高质量
v.FrameRate = 30;     % 30帧/秒
open(v);% 写入帧
for i = 1:length(bloom_frames)writeVideo(v, bloom_frames(i));fprintf('正在保存视频: %.1f%%\n', 100*i/length(bloom_frames));
end% 关闭文件
close(v);

MATLAB制作会旋转的玫瑰花

🌈 第六章:创意扩展 - 打造你的玫瑰花园

6.1 多朵玫瑰组合

% 创建画布
figure('Position', [100 100 1200 800], 'Color', [0.05 0.05 0.15])
ax = axes('Color', 'none');
axis equal vis3d off
view(40, 25)
lighting gouraud
hold on% 定义不同玫瑰参数
roses = {struct('a',1,'k',5,'n',2,'m',3,'color',[0.9 0.2 0.3],'pos',[0 0 0]), struct('a',0.8,'k',7,'n',3,'m',2,'color',[0.2 0.8 0.5],'pos',[2 1 0]),struct('a',1.2,'k',4,'n',1,'m',4,'color',[0.4 0.3 0.9],'pos',[-1 2 0])
};% 绘制每朵玫瑰
for r = roses[theta, phi] = meshgrid(linspace(0, 2*pi, 150), linspace(0, pi, 75));r_val = r.a * sin(r.n*theta) .* cos(r.m*phi);x = r_val .* sin(theta) .* cos(phi) + r.pos(1);y = r_val .* sin(theta) .* sin(phi) + r.pos(2);z = r_val .* cos(theta) + r.pos(3);surf(x, y, z, ...'FaceColor', r.color, ...'EdgeColor', 'none', ...'FaceAlpha', 0.85);
end% 添加统一光照
light('Position', [5 5 10], 'Color', [1 1 0.8])
light('Position', [-5 -5 5], 'Color', [0.5 0.5 1])% 添加地面
[x_ground, y_ground] = meshgrid(-5:0.5:5, -5:0.5:5);
z_ground = -0.5 * ones(size(x_ground));
surf(x_ground, y_ground, z_ground, ...'FaceColor', [0.2 0.3 0.2], ...'EdgeColor', 'none', ...'FaceAlpha', 0.7)% 添加标题
title('\fontsize{20}\color{white}MATLAB玫瑰花园', 'Interpreter', 'tex')
hold off

在这里插入图片描述

6.2 季节变化动画

创建一个展示玫瑰四季变化的动画:

% 参数设置
seasons = {'春', '夏', '秋', '冬'};
season_colors = {[0.9 0.3 0.4],   % 春 - 鲜红[0.8 0.1 0.2],    % 夏 - 深红[0.7 0.4 0.3],    % 秋 - 橙红[0.6 0.5 0.7]     % 冬 - 紫红
};
season_alphas = [0.9, 1.0, 0.8, 0.6];  % 透明度变化% 创建动画
fig = figure('Position', [100 100 1000 800], 'Color', [0.1 0.1 0.2]);
ax = axes('Position', [0 0 1 1], 'Color', 'none');
axis equal vis3d off
view(45, 25)
lighting gouraud% 预分配帧
season_frames(120) = struct('cdata', [], 'colormap', []);% 创建基础玫瑰
[theta, phi] = meshgrid(linspace(0, 2*pi, 150), linspace(0, pi, 75));
r = sin(3*theta) .* cos(4*phi);
x = r .* sin(theta) .* cos(phi);
y = r .* sin(theta) .* sin(phi);
z = r .* cos(theta);
rose = surf(x, y, z, 'EdgeColor', 'none');% 动画循环
for i = 1:120% 计算当前季节(0-3)和季节内进度(0-1)season_idx = floor((i-1)/30) + 1;season_progress = mod(i-1, 30)/30;% 季节间颜色过渡if season_idx < 4next_idx = season_idx + 1;elsenext_idx = 1;endcolor = season_colors{season_idx} * (1-season_progress) + ...season_colors{next_idx} * season_progress;% 更新玫瑰属性set(rose, 'FaceColor', color, ...'FaceAlpha', season_alphas(season_idx)*(1-season_progress) + ...season_alphas(next_idx)*season_progress);% 添加季节文本annotation('textbox', [0.4 0.9 0.2 0.05], ...'String', sprintf('季节: %s', seasons{season_idx}), ...'Color', 'white', 'FontSize', 18, ...'EdgeColor', 'none', 'HorizontalAlignment', 'center')% 缓慢旋转view(45 + i, 25 + 5*sin(i/10))% 捕获帧drawnowseason_frames(i) = getframe(fig);end% 播放动画
figure
movie(season_frames, 2, 30)  % 播放2次,30fps

在这里插入图片描述

🎉 结语:你的代码,你的艺术

通过这篇教程,你已经掌握了:

  • 玫瑰曲线的数学原理与MATLAB实现
  • 专业级的3D数据可视化技巧
  • 复杂动画的制作与优化方法
  • 艺术化呈现科学数据的多种手法

但更重要的是,你学会了如何用代码表达创意和美感。MATLAB不仅是科学计算的工具,也可以成为数字艺术创作的画布。

创意挑战

  1. 尝试为你的玫瑰添加花茎和叶子
  2. 创建一个心形玫瑰图案
  3. 设计一朵随时间变化颜色的彩虹玫瑰
  4. 模拟玫瑰在风中摇曳的效果

记住,每个伟大的数字艺术作品都始于一行简单的代码。现在,轮到你创造属于自己的MATLAB艺术了!

相关文章:

《MATLAB实战训练营:从入门到工业级应用》趣味入门篇-用MATLAB画一朵会动的3D玫瑰:从零开始的浪漫编程之旅

《MATLAB实战训练营&#xff1a;从入门到工业级应用》趣味入门篇-&#x1f339;用MATLAB画一朵会动的3D玫瑰&#xff1a;从零开始的浪漫编程之旅 你是否想过用代码创造一朵永不凋谢的玫瑰&#xff1f;今天&#xff0c;我将带你走进MATLAB的奇妙世界&#xff0c;用数学公式和编…...

激光院董事长龚赤坤到北京研发中心检查指导工作

4月11日&#xff0c;激光院党委书记、董事长龚赤坤到北京研发中心检查指导工作。 龚赤坤详细了解了北京研发中心的建设情况和科研进展&#xff0c;充分肯定所取得的成绩&#xff0c;对发展寄予厚望&#xff0c;龚赤坤指出北京研发中心的成立正处于激光院加速发展与产业进化的关…...

AbortController:让异步操作随时说停就停

AbortController&#xff1a;让异步操作随时说停就停 一、什么是 AbortController&#xff1f; AbortController 是 JavaScript 在浏览器和部分 Node.js 环境中提供的全局类&#xff0c;用来中止正在进行或待完成的异步操作&#xff08;如 fetch() 请求、事件监听、可写流、数…...

leetcode572 另一棵树的子树

1.与100、101解法相同 递归&#xff1a; class Solution { private:bool compare(TreeNode* p, TreeNode* q){if(!p && !q) return true;else if(!p || !q) return false;else if(p->val ! q->val) return false;bool leftside compare(p->left, q->lef…...

再看 MPTCP 时的思考

2022 年夏&#xff0c;居家办公时&#xff0c;第一次接手 mptcp 就觉得它不靠谱&#xff0c;以至于我后来搞了 mpudp for DC&#xff0c;再后来我调研了很多 mptcp-based 方案&#xff0c;发现它们都是向善而来&#xff0c;最终灰头土脸而终。mptcp 实则一个坑&#xff0c;业内…...

将三维非平面点集拆分为平面面片的MATLAB实现

将三维非平面点集拆分为平面面片的MATLAB实现 要将三维空间中不在同一平面上的点集拆分为多个平面面片&#xff0c;可以采用以下几种方法&#xff1a; 1. 三角剖分法 (Delaunay Triangulation) 最简单的方法是将点集进行三角剖分&#xff0c;因为三个点总是共面的&#xff1…...

Python(10.2)Python可变与不可变类型内存机制解密:从底层原理到工程实践

目录 一、类型特性引发的内存现象1.1 电商促销活动事故分析1.2 内存机制核心差异 二、内存地址追踪实验2.1 基础类型验证2.2 复合对象实验 三、深度拷贝内存分析3.1 浅拷贝陷阱3.2 深拷贝实现 四、函数参数传递机制4.1 默认参数陷阱4.2 安全参数模式 五、内存优化最佳实践5.1 字…...

华为hcie证书的有效期怎么判断?

在ICT行业&#xff0c;华为HCIE证书堪称含金量极高的“敲门砖”&#xff0c;拥有它往往意味着在职场上更上一层楼。然而&#xff0c;很多人在辛苦考取HCIE证书后&#xff0c;却对其有效期相关事宜一知半解。今天&#xff0c;咱们就来好好唠唠华为HCIE证书的有效期怎么判断这个关…...

【前端】CSS Grid 布局详解

CSS Grid 布局详解&#xff08;通俗易懂版&#xff09; 一、概述 CSS Grid 是一种二维布局系统&#xff0c;可以同时控制行和列&#xff0c;相比 Flex&#xff08;一维布局&#xff09;&#xff0c;更适合用在整体页面布局或复杂模块结构中。 二、基础概念 Grid 容器&#x…...

物美“外贸转内销”极速绿色通道正式开启

「TMT星球」获悉&#xff0c;在国家“提振消费、扩大内需”及“内外贸一体化”战略指引下&#xff0c;物美集团依托自身零售生态优势&#xff0c;打造“云超绿通”专项通道&#xff0c;助力中国优质外贸企业实现“出口转内销”的高效转型&#xff0c;通过极速绿通、线上线下全渠…...

【说明书#1】Node.js 和 npm安装与使用

系统提示 npm 不是内部或外部命令,也不是可运行的程序或批处理文件,也就是 npm 命令无法识别。这个错误通常是因为 Node.js 和 npm 没有正确安装,或者它们的路径没有添加到系统的环境变量中。 解决方法如下: 1. 安装 Node.js 和 npm: 如果你还没有安装 Node.js,可以从…...

【触想智能】安卓工业平板电脑和普通商业平板电脑的区别

安卓工业平板电脑是基于ARM架构开发的一种工业平板电脑&#xff0c;它在自助终端、智能制造、产线车间、智慧物流、商业金融等诸多领域有着广泛的应用。 触想安卓工业平板电脑TPC-A2系列 安卓工业平板电脑和普通商业平板电脑在一些方面存在一些区别&#xff0c;包括设计、硬件规…...

Java基于SSM的课程答疑微信小程序【附源码、文档说明】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

模板引擎语法-变量

模板引擎语法-变量 文章目录 模板引擎语法-变量&#xff08;一&#xff09;在Django框架模板中使用变量的代码实例&#xff08;二&#xff09;在Django框架模板中使用变量对象属性的代码实例&#xff08;三&#xff09;在Django框架模板中使用变量显示列表 &#xff08;一&…...

1260 最大公约数

1260 最大公约数 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;GCD &#x1f4d6; &#x1f4da; import java.util.Scanner; import java.util.Arrays;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int t …...

Node.js中net模块详解

Node.js 中 net 模块 API 详解 Node.js 的 net 模块提供了基于 TCP/IP 的网络功能&#xff0c;用于创建 TCP 服务器和客户端。以下是 net 模块的所有 API 详解&#xff1a; 1. 创建 TCP 服务器 const net require(net);// 1. 基本服务器 const server net.createServer((s…...

【从零开始学习JVM | 第三篇】虚拟机的垃圾回收学习(一)

堆空间的基本结构 Java 的自动内存管理主要是针对对象内存的回收和对象内存的分配。同时&#xff0c;Java 自动内存管理最核心的功能是 堆 内存中对象的分配与回收。 Java 堆是垃圾收集器管理的主要区域&#xff0c;因此也被称作 GC 堆&#xff08;Garbage Collected Heap&am…...

intellj idea 2024.1

参考资料 激活 https://www.microcharon.com/tech/5.htmlja-netfilter-all下载地址&#xff1a;https://drive.microcharon.com/OneDrive/Software/JetBrains%20ja-netfilter-all%20Build%202024.1.11.zip 步骤及问题 下载后&#xff1a;安全前确保旧版本的idea已经卸载。安…...

redis之缓存击穿

一、前言 本期我们聊一下缓存击穿&#xff0c;其实缓存击穿和缓存穿透很相似&#xff0c;区别就是&#xff0c;缓存穿透是一些黑客故意请求压根不存在的数据从而达到拖垮系统的目的&#xff0c;是恶意的&#xff0c;有针对性的。缓存击穿的情况是&#xff0c;数据确实存在&…...

Node.js中path模块详解

Node.js path 模块全部 API 详解 Node.js 的 path 模块提供了处理文件路径的工具函数&#xff0c;支持跨平台路径操作。以下是 path 模块的所有 API 详解&#xff1a; 1. 路径解析与操作 const path require(path);// 1. 路径连接 const fullPath path.join(__dirname, fi…...

重构艺术 | 内联与查询替代临时变量

重构艺术 | 内联与查询替代临时变量 在代码重构的殿堂里&#xff0c;临时变量常常扮演着双面角色&#xff1a;既是代码清晰的助力器&#xff0c;也可能成为代码腐败的温床。本文将深入探讨两种处理临时变量的重要手法&#xff1a;内联临时变量&#xff08;Inline Temp&#xf…...

数据分析-数据预处理

数据分析-数据预处理 处理重复值 duplicated( )查找重复值 import pandas as pd apd.DataFrame(data[[A,19],[B,19],[C,20],[A,19],[C,20]],columns[name,age]) print(a) print(--------------------------) aa.duplicated() print(a)只判断全局不判断每个 any() import p…...

Java基础 4.12

1.方法的重载&#xff08;OverLoad&#xff09; 基本介绍 Java中允许同一个类&#xff0c;多个同名方法的存在&#xff0c;但要求形参列表不一致&#xff01; 如 System.out.println(); out是PrintStream类型 重载的好处 减轻了起名的麻烦减轻了记名的麻烦 2.重载的快速入…...

PostgreSQL有类似oracle的move表吗

PostgreSQL有类似oracle的move表吗 PostgreSQL 提供了类似 Oracle MOVE 表功能的重组操作&#xff0c;但实现方式和具体命令有所不同。以下是详细对比和 PostgreSQL 中的实现方案&#xff1a; 一 Oracle MOVE 与 PostgreSQL 对比 特性Oracle MOVEPostgreSQL 等效操作主要用途…...

AUTO-RAG: AUTONOMOUS RETRIEVAL-AUGMENTED GENERATION FOR LARGE LANGUAGE MODELS

Auto-RAG&#xff1a;用于大型语言模型的自主检索增强生成 单位&#xff1a;中科院计算所 代码&#xff1a; https://github.com/ictnlp/Auto-RAG 拟解决问题&#xff1a;通过手动构建规则或者few-shot prompting产生的额外推理开销。 贡献&#xff1a;提出一种以LLM决策为中…...

ABC-CNN-GRU-Attention、CNN-GRU-Attention、ABC-CNN-GRU和CNN-GRU四类对比模型多变量时序预测

人工蜂群算法四模型对比&#xff01;ABC-CNN-GRU-Attention系列四模型多变量时序预测 目录 人工蜂群算法四模型对比&#xff01;ABC-CNN-GRU-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 本研究针对多变量时间序列预测任务&#xf…...

ssh 免密登录服务器(vscode +ssh 免密登录)

每次打开vscode连接服务器都需要输入密码&#xff0c;特别繁琐。 然后自己在网上翻阅了一下教程&#xff0c;发现说的内容比较啰嗦&#xff0c;而且个人感觉非常有误导性倾向。 因此自己直接干脆写一个简便易懂的教程算了。 &#xff08;以经过本人亲测&#xff0c;真实可靠&am…...

Elasticsearch 系列专题 - 第七篇:实战项目

理论学习固然重要,但实战才能真正巩固知识。本篇将通过两个项目,带你从需求分析到实现,体验 Elasticsearch 在真实场景中的应用。 1. 项目一:日志分析系统 1.1 需求分析与架构设计 需求: 实时采集服务器日志。按时间和日志级别(INFO、ERROR)分析。可视化错误趋势。架构…...

C++初阶-类和对象(上)

本章内容相对于之后的类和对象中和下都比较简单&#xff0c;但是整体还是有些难度的。 目录 1.类的定义 1.1类定义格式 1.2访问限定符 1.3类域 2.实例化 2.1实例化概念 2.2对象大小 3.this指针 4.练习 4.1选择题1 4.2选择题2 5.总结 1.类的定义 1.1类定义格式 &am…...

(十九)安卓开发中的Application类的使用详解

在 Android 开发中&#xff0c;Application 类是一个全局的单例类&#xff0c;代表应用进程本身。它常用于初始化全局资源、维护应用级别的状态和注册全局生命周期回调。以下是详细讲解和代码示例&#xff1a; 一、自定义 Application 类 1. 创建子类 public class MyApplica…...

算法思想之位运算(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之位运算(一) 发布时间&#xff1a;2025.4.12 隶属专栏&#xff1a;算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题位1的个数题目链接题目描述算法思路代码实现 比特位计数题目链接题目描述…...

十八、TCP多线程、多进程并发服务器

1、TCP多线程并发服务器 服务端&#xff1a; #include<stdio.h> #include <arpa/inet.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <pthread.h>…...

『生成内容溯源系统』详解

生成内容溯源系统详解 1. 定义与核心目标 生成内容溯源系统&#xff08;Generative Content Provenance System&#xff09;是指能够追踪AI生成内容的来源、生成过程、版权归属及修改历史的技术体系。其核心目标是&#xff1a; 验证真实性&#xff1a;证明内容由特定AI模型生…...

mac 解压 nsz 文件

nsz 地址 下载 nsz PIP 套餐 使用以下命令安装仅限 Console 的版本&#xff1a; pip3 install --upgrade nsz使用以下命令安装 GUI 版本&#xff1a; pip3 install --upgrade nsz[gui]解压 nsz 文件 nsz -D 文件路径...

Python进阶(3):函数(接上篇)

上一篇我们初步介绍python中函数的定义与调用 Python进阶(2):函数-CSDN博客 这里继续: 关键字参数: 形参1实参1,形参2实参2,...... 关键字参数是指使用形式参数的名字来确定输入的参数值。通过该方式指定实际参数时,不再需要与形式参数的位置完全一致。只要将参数名写正确…...

卒/兵过河前的判断和走法触发器优化

兵(卒)&#xff1a;兵(卒)在未过河前&#xff0c;只能向前一步步走&#xff0c;过河以后&#xff0c;除不能后退外&#xff0c;允许左右移动&#xff0c;但也只能一次一步。 迷你世界地图已上传 优化...

生物信息Rust-01

前言-为什么想学Rust&#xff1f; 一直想多学一门编译语言&#xff0c;主要有几个原因吧&#xff08;1. 看到一位老师实验室要求需要掌握一门编译语言&#xff1b;2. 自己享想试着开发一些实用的生信工具&#xff0c;感觉自己现在相比于数据分析&#xff0c;探索生物学层面的意…...

基于HTML + jQuery + Bootstrap 4实现(Web)地铁票价信息生成系统

地铁票价信息表生成系统 1. 需求分析 1.1 背景 地铁已经成为大多数人出行的首选,北京地铁有多条运营线路, 截至 2019 年 12 月,北京市轨道交通路网运营线路达 23 条、总里程 699.3 公里、车站 405 座。2019 年,北京地铁年乘客量达到 45.3 亿人次,日均客流为 1241.1 万人次…...

智慧水务项目(八)基于Django 5.1 版本PyScada详细安装实战

一、说明 PyScada&#xff0c;一个基于Python和Django框架的开源SCADA&#xff08;数据采集与监视控制系统&#xff09;系统&#xff0c;采用HTML5技术打造人机界面&#xff08;HMI&#xff09;。它兼容多种工业协议&#xff0c;如Modbus TCP/IP、RTU、ASCII等&#xff0c;并具…...

DeepSeek在消防救援领域的应用解决方案

DeepSeek在消防救援领域的应用解决方案 一、火灾风险动态感知与早期预警 火灾风险动态感知与早期预警是智慧消防的关键环节&#xff0c;DeepSeek通过多模态数据分析&#xff0c;融合烟雾传感器、热成像摄像头和气体浓度检测等数据&#xff0c;能够识别传统阈值法难以捕捉的火…...

VSCode CMake调试CPP程序

文章目录 1 安装C与CMake插件2 配置CMakeLists.txt3 使用CMake编译调试3.1 编译3.2 调试 4 自定义构建调试参考 1 安装C与CMake插件 C插件 CMake插件 2 配置CMakeLists.txt 编写测试程序 #include<iostream>int main(int argc, char const *argv[]) {int a 1, b 2;i…...

AI Agent工程师认证-学习笔记(3)——【多Agent】MetaGPT

学习链接&#xff1a;【多Agent】MetaGPT学习教程 源代码链接&#xff08;觉得很好&#xff0c;star一下&#xff09;&#xff1a;GitHub - 基于MetaGPT的多智能体入门与开发教程 MetaGPT链接&#xff1a;GitHub - MetaGPT 前期准备 1、获取MetaGPT &#xff08;1&#xff…...

Spring AI 结构化输出详解

一、Spring AI 结构化输出的定义与核心概念 Spring AI 提供了一种强大的功能&#xff0c;允许开发者将大型语言模型&#xff08;LLM&#xff09;的输出从字符串转换为结构化格式&#xff0c;如 JSON、XML 或 Java 对象。这种结构化输出能力对于依赖可靠解析输出值的下游应用程…...

AMGCL库使用示例

AMGCL库使用示例 AMGCL是一个用于解决大规模稀疏线性方程组的C库&#xff0c;它实现了代数多重网格(AMG)预处理器和Krylov子空间迭代求解器。下面是一些AMGCL的使用示例。 基本示例&#xff1a;求解稀疏线性系统 #include <iostream> #include <vector> #includ…...

关于 Java 预先编译(AOT)技术的详细说明,涵盖 GraalVM 的配置、Spring Boot 3.x 的集成、使用示例及优缺点对比

以下是关于 Java 预先编译&#xff08;AOT&#xff09;技术的详细说明&#xff0c;涵盖 GraalVM 的配置、Spring Boot 3.x 的集成、使用示例及优缺点对比&#xff1a; 1. 预先编译&#xff08;AOT&#xff09;技术详解 1.1 核心概念 AOT&#xff08;Ahead-of-Time&#xff09…...

Video Encoder:多模态大模型如何看懂视频

写在前面 大型语言模型(LLM)已经掌握了理解文本的超能力,而多模态大模型(MLLM)则更进一步,让 AI 拥有了“看懂”图像的眼睛。但这还不够!真实世界是动态的、流动的,充满了运动、变化和声音。视频,正是承载这一切动态信息的关键媒介。 让 LLM 看懂视频,意味着 AI 需…...

leetcode0622. 设计循环队列-medium

1 题目&#xff1a;设计循环队列 官方标定难度&#xff1a;中 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一…...

专题十四:动态路由——OSPF

一、OSPF简介 开放式最短路径优先OSPF&#xff08;Open Shortest Path First&#xff09;是IETF组织开发的一个基于链路状态的内部网关协议&#xff08;Interior Gateway Protocol&#xff09;&#xff0c;采用DIjkstra算法&#xff0c;协议号是89。用于自治系统&#xff08;A…...

【蓝桥杯】第十六届蓝桥杯 JAVA B组记录

试题 A: 逃离高塔 很简单&#xff0c;签到题&#xff0c;但是需要注意精度&#xff0c;用int会有溢出风险 答案&#xff1a;202 package lanqiao.t1;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWrit…...

一个项目的架构演进

1&#xff0c;单体架构 垂直升级&#xff1a;4核16GB -> 8核64G 水平扩展&#xff1a;一台服务器扩展成多台 存在以下几个问题 1&#xff0c;提升的性能是有限的 2&#xff0c;更新&#xff0c;维护成本非常高&#xff0c;对于系统中要修改或增加的功能&#xff0c;整个发…...