前端弹性布局:用Flexbox构建现代网页的魔法指南
引言:布局的进化史
在网页设计的黑暗时代(2010年前),开发者们用float、position和inline-block这些原始工具进行布局,就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范,前端世界终于迎来了布局的革命性突破。想象一下:只需几行CSS就能实现完美的垂直居中、等高等宽列和灵活响应式布局——这就是Flexbox的魔法魅力!
一、Flexbox核心概念解剖
1.1 容器与项目的共生关系
- 弹性容器(display: flex):布局的主宰者
- 弹性项目(flex items):服从容器规则的子元素
- 主轴(main axis) vs 交叉轴(cross axis):布局的双维度坐标系
1.2 神奇的轴系统
<div class="container"><div class="item">1</div><div class="item">2</div><div class="item">3</div>
</div>
<style>
.container {display: flex;flex-direction: row; /* 定义主轴方向 */justify-content: space-between; /* 主轴对齐方式 */align-items: center; /* 交叉轴对齐方式 */
}
</style>
二、Flexbox的九大必杀技
2.1 容器属性大全
以下是弹性布局(Flexbox)容器属性及属性值的完整解析表:
属性 | 取值 | 作用说明 | 默认值 | 适用场景示例 |
---|---|---|---|---|
display | flex | 创建块级弹性容器 | - | 常规页面布局容器 |
inline-flex | 创建行内弹性容器 | - | 导航栏等行内布局 | |
flex-direction | row | 主轴水平(从左到右) | row | 横向排列元素 |
row-reverse | 主轴水平反向(从右到左) | RTL语言支持 | ||
column | 主轴垂直(从上到下) | 移动端竖屏布局 | ||
column-reverse | 主轴垂直反向(从下到上) | 特殊滚动效果 | ||
flex-wrap | nowrap | 禁止换行(可能溢出) | nowrap | 导航栏等单行布局 |
wrap | 向下换行 | 卡片流式布局 | ||
wrap-reverse | 向上换行 | 特殊视觉效果需求 | ||
justify-content | flex-start | 主轴起始对齐 | flex-start | 左对齐布局 |
flex-end | 主轴末端对齐 | 右对齐布局 | ||
center | 主轴居中对齐 | 登录框居中 | ||
space-between | 两端对齐间隔相等 | 导航项均匀分布 | ||
space-around | 项目两侧间隔相等 | 图文混排布局 | ||
space-evenly | 全区间隔完全相等 | 数据仪表盘 | ||
align-items | stretch | 拉伸填满容器高度 | stretch | 等高栏布局 |
flex-start | 交叉轴起始对齐 | 顶部对齐表单 | ||
flex-end | 交叉轴末端对齐 | 底部对齐控件 | ||
center | 交叉轴居中对齐 | 垂直居中登录框 | ||
baseline | 基线对齐 | 文本混排对齐 | ||
align-content | stretch | 多行拉伸填充容器 | stretch | 多行文本布局 |
flex-start | 多行整体顶部对齐 | 流式布局顶部对齐 | ||
flex-end | 多行整体底部对齐 | 特殊视觉效果 | ||
center | 多行垂直居中 | 卡片墙居中 | ||
space-between | 多行两端对齐 | 瀑布流布局 | ||
space-around | 多行间隔相等 | 图文混排墙 | ||
gap | <length> | 定义项目间距 | 0 | 网格系统布局 |
row-gap | <length> | 定义行间距 | 0 | 垂直间距控制 |
column-gap | <length> | 定义列间距 | 0 | 水平间距控制 |
表格特性说明:
- 复合属性:flex-flow 是 flex-direction + flex-wrap 的组合简写(例:
row wrap
) - 现代浏览器支持:gap 系列属性需要浏览器支持(Chrome 84+/Firefox 63+)
- 特殊场景:
baseline
对齐适用于不同字号文本混排space-evenly
适合需要完全对称的仪表盘布局
- 性能优化:
align-items: stretch
可能触发重排,大数据量慎用
2.2 项目属性精要
.item {flex: 1 0 200px; /* 缩写:grow shrink basis */align-self: flex-end; /* 单个项目对齐覆盖 */order: 2; /* 视觉顺序控制 */
}
三、实战案例集锦
案例1:圣杯导航栏
- 效果图
- 实例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>圣杯导航栏 - Flexbox实现</title><style>/* 基础重置 */* {margin: 0;padding: 0;box-sizing: border-box;}/* 导航容器 */.nav-container {background: #2c3e50;padding: 1rem 2rem;box-shadow: 0 2px 15px rgba(0,0,0,0.2);}/* 弹性导航主体 */.nav-menu {display: flex;justify-content: space-between;align-items: center;max-width: 1200px;margin: 0 auto;}/* 导航品牌(左侧) */.nav-brand {flex: 0 1 200px;color: #ecf0f1;font-size: 1.5rem;font-weight: bold;text-decoration: none;transition: opacity 0.3s;}/* 导航项容器 */.nav-items {display: flex;gap: 2rem; /* 现代浏览器间距方案 */}/* 单个导航项 */.nav-item {position: relative;padding: 0.8rem 1.2rem;color: #bdc3c7;text-decoration: none;transition: all 0.3s ease;}/* 交互效果 */.nav-item:hover {color: #ecf0f1;transform: translateY(-2px);}/* 活动状态指示器 */.nav-item.active::after {content: '';position: absolute;bottom: 0;left: 50%;width: 60%;height: 3px;background: #3498db;transform: translateX(-50%);border-radius: 2px;}/* 响应式设计 - 移动端适配 */@media (max-width: 768px) {.nav-menu {flex-direction: column;gap: 1.5rem;}.nav-items {flex-direction: column;text-align: center;}.nav-brand {text-align: center;}}</style>
</head>
<body><nav class="nav-container"><div class="nav-menu"><a href="#" class="nav-brand">FlexMaster</a><div class="nav-items"><a href="#" class="nav-item active">首页</a><a href="#" class="nav-item">产品</a><a href="#" class="nav-item">服务</a><a href="#" class="nav-item">关于</a><a href="#" class="nav-item">联系</a></div></div></html></nav>
</body>
代码亮点解析:
- 弹性容器结构:
- 双层级Flex容器(
.nav-menu
+.nav-items
) justify-content: space-between
实现品牌与导航项自动分离gap
属性替代传统margin实现间距控制
- 双层级Flex容器(
- 响应式设计:
- 移动端自动转换为垂直布局
- 媒体查询中切换
flex-direction
- 保持可点击区域的可访问性
- 视觉增强:
- 动态下划线指示器(使用伪元素实现)
- 流畅的位移动画(transform优化性能)
- 色彩过渡效果增强交互反馈
- 最佳实践:
- 语义化HTML5标签(
<nav>
) - 安全的flex尺寸限制(
flex: 0 1 200px
) - 盒模型统一(
box-sizing: border-box
)
- 语义化HTML5标签(
效果说明:
- 桌面端:品牌居左,导航项居右,自动等间距分布
- 移动端:垂直堆叠,保持可点击区域
- 悬停时:元素上移+颜色变化双重反馈
- 活动状态:动态蓝色下划线指示
案例2:响应式卡片布局
- 效果图
- 实例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>响应式卡片布局 - Flexbox实现</title><style>/* 基础重置与字体设置 */* {margin: 0;padding: 0;box-sizing: border-box;font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;}body {background: #f5f5f5;line-height: 1.6;padding: 2rem;}/* 卡片容器 */.card-grid {display: flex;flex-wrap: wrap;gap: 2rem;max-width: 1200px;margin: 0 auto;}/* 单个卡片样式 */.card {flex: 1 1 300px;background: white;border-radius: 12px;overflow: hidden;box-shadow: 0 4px 6px rgba(0,0,0,0.1);transition: transform 0.3s ease, box-shadow 0.3s ease;}/* 卡片悬停效果 */.card:hover {transform: translateY(-5px);box-shadow: 0 8px 15px rgba(0,0,0,0.2);}/* 卡片图片容器 */.card-image {height: 200px;overflow: hidden;position: relative;}.card-image img {width: 100%;height: 100%;object-fit: cover;transition: transform 0.3s ease;}.card:hover .card-image img {transform: scale(1.05);}/* 卡片内容 */.card-content {padding: 1.5rem;}.card-title {font-size: 1.25rem;margin-bottom: 0.75rem;color: #333;}.card-description {color: #666;font-size: 0.9rem;margin-bottom: 1rem;display: -webkit-box;-webkit-line-clamp: 3;-webkit-box-orient: vertical;overflow: hidden;}/* 卡片底部信息 */.card-footer {display: flex;justify-content: space-between;align-items: center;padding-top: 1rem;border-top: 1px solid #eee;}.card-price {color: #2ecc71;font-weight: bold;}.card-button {background: #3498db;color: white;padding: 0.5rem 1rem;border-radius: 25px;text-decoration: none;font-size: 0.9rem;transition: background 0.3s ease;}.card-button:hover {background: #2980b9;}/* 响应式设计 */@media (max-width: 768px) {.card {flex-basis: 100%;}.card-image {height: 250px;}body {padding: 1rem;}}@media (max-width: 480px) {.card-image {height: 180px;}.card-title {font-size: 1.1rem;}}</style>
</head>
<body><div class="card-grid"><!-- 卡片1 --><div class="card"><div class="card-image"><img src="https://source.unsplash.com/random/800x600?tech" alt="科技产品"></div><div class="card-content"><h3 class="card-title">未来科技产品</h3><p class="card-description">革命性的智能设备,集成人工智能与物联网技术,为您带来前所未有的生活体验。采用最新纳米材料打造,轻便耐用。</p><div class="card-footer"><span class="card-price">¥1999</span><a href="#" class="card-button">立即购买</a></div></div></div><!-- 卡片2 --><div class="card"><div class="card-image"><img src="https://source.unsplash.com/random/800x600?nature" alt="自然景观"></div><div class="card-content"><h3 class="card-title">自然探险之旅</h3><p class="card-description">专业向导带领的深度自然探索行程,包含徒步、露营和生态观察。体验三天两夜的原始森林冒险之旅。</p><div class="card-footer"><span class="card-price">¥2999</span><a href="#" class="card-button">查看详情</a></div></div></div><!-- 卡片3 --><div class="card"><div class="card-image"><img src="https://source.unsplash.com/random/800x600?food" alt="美食"></div><div class="card-content"><h3 class="card-title">米其林星级料理</h3><p class="card-description">主厨特别套餐包含五道创意料理,搭配精选红酒。体验法式烹饪艺术与现代分子料理的完美结合。</p><div class="card-footer"><span class="card-price">¥899</span><a href="#" class="card-button">立即预订</a></div></div></div></div>
</body>
</html>
代码亮点解析:
- 弹性布局核心:
flex: 1 1 300px
实现卡片自动填充布局gap
属性控制间距,替代传统margin方案- 智能换行机制:
flex-wrap: wrap
- 响应式设计:
- 移动端自动切换为单列布局(
flex-basis: 100%
) - 图片高度自适应不同屏幕尺寸
- 文字内容自动截断(
-webkit-line-clamp
)
- 移动端自动切换为单列布局(
- 交互体验优化:
- 卡片悬停3D效果(transform + box-shadow)
- 图片缩放动画
- 按钮按压反馈
- 视觉层次:
- 多级标题字号差异
- 色彩对比度控制
- 微投影与边框分割内容区域
效果说明:
- 桌面端:自动呈现3列布局,间距均匀
- 平板端:自动切换为2列布局
- 手机端:单列全宽显示
- 所有卡片自动保持等高度(基于内容撑开)
- 图片始终维持比例且完整显示(object-fit: cover)
操作建议:
- 调整浏览器窗口观察响应式变化
- 尝试增减卡片数量体验自动布局
- 修改
flex-basis
值观察布局变化 - 调整
gap
值控制间距密度 - 在移动端模拟器上测试触控体验
此布局方案已包含:
- 自动图片适配
- 安全的内容截断
- 无障碍颜色对比
- 流畅的动画过渡
- 跨浏览器兼容处理
案例3:完美垂直居中
- 效果图
- 实例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flexbox完美垂直居中</title><style>/* 基础重置 */* {margin: 0;padding: 0;box-sizing: border-box;}/* 全屏居中容器 */.hero-section {display: flex;justify-content: center;align-items: center;min-height: 100vh;background: linear-gradient(135deg, #6366f1 0%, #a855f7 100%);padding: 2rem;}/* 内容盒子 */.centered-box {background: rgba(255, 255, 255, 0.95);padding: 3rem;border-radius: 15px;box-shadow: 0 10px 30px rgba(0,0,0,0.2);text-align: center;max-width: 600px;transition: transform 0.3s ease;}.centered-box:hover {transform: translateY(-5px);}/* 内容样式 */h1 {color: #2d3748;margin-bottom: 1.5rem;font-size: 2.5rem;}p {color: #4a5568;line-height: 1.8;margin-bottom: 2rem;}.cta-button {display: inline-block;background: #3b82f6;color: white;padding: 1rem 2rem;border-radius: 50px;text-decoration: none;font-weight: bold;transition: all 0.3s ease;}.cta-button:hover {background: #2563eb;transform: scale(1.05);}/* 复杂内容示例 */.content-group {display: flex;gap: 2rem;justify-content: center;margin: 2rem 0;}.feature-item {flex: 1;padding: 1rem;background: #f7fafc;border-radius: 8px;}/* 响应式设计 */@media (max-width: 768px) {.centered-box {padding: 2rem;margin: 1rem;}h1 {font-size: 2rem;}.content-group {flex-direction: column;gap: 1rem;}}</style>
</head>
<body><section class="hero-section"><div class="centered-box"><h1>欢迎来到未来世界 🌟</h1><div class="content-group"><div class="feature-item"><h3>创新科技</h3><p>突破性技术解决方案</p></div><div class="feature-item"><h3>智能设计</h3><p>人性化交互体验</p></div></div><p>立即加入我们,探索数字世界的无限可能。体验前所未有的网络服务,开启您的数字化转型之旅。</p><a href="#" class="cta-button">立即体验 →</a></div></section>
</body>
</html>
代码核心解析:
- Flexbox魔法三件套:
.hero-section {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */min-height: 100vh; /* 视口高度保证 */
}
- 响应式处理:
- 移动端自动转换弹性方向
- 智能调整内边距
- 文字大小自适应
- 视觉增强:
- 渐变背景与半透明遮罩
- 微交互动画(hover效果)
- 卡片阴影与圆角
- 复杂内容支持:
- 嵌套弹性布局(content-group)
- 等宽功能卡片(feature-item)
- 多类型内容混合排列
效果说明:
- 始终在视口中心保持垂直水平居中
- 内容盒子最大宽度限制避免过宽
- 支持文本、图片(可自行添加)、按钮等任意内容类型
- 完美响应式适应各种屏幕尺寸
扩展技巧:
- 绝对居中图片:
.centered-img {width: 200px;height: 200px;object-fit: cover;margin: 0 auto 1rem;
}
- 多元素不同对齐方式:
.special-layout {display: flex;flex-direction: column;align-items: flex-start; /* 左对齐 */justify-content: center; /* 垂直居中 */
}
- 溢出内容处理:
.scrollable-box {max-height: 80vh;overflow-y: auto;padding-right: 1rem; /* 防止滚动条遮挡内容 */
}
案例4:瀑布流布局
- 效果图
- 实例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Instagram瀑布流布局</title><style>* {margin: 0;padding: 0;box-sizing: border-box;}body {background: #fafafa;}/* 瀑布流容器 */.waterfall-container {column-count: 4;column-gap: 15px;max-width: 1200px;margin: 2rem auto;padding: 0 15px;}/* 瀑布流项目 */.waterfall-item {break-inside: avoid;margin-bottom: 15px;background: white;border-radius: 10px;box-shadow: 0 2px 4px rgba(0,0,0,0.1);transition: transform 0.3s ease;}.waterfall-item:hover {transform: translateY(-5px);}/* 图片容器 */.card-image {position: relative;padding-top: 100%; /* 1:1比例 */overflow: hidden;}.card-image img {position: absolute;top: 0;left: 0;width: 100%;height: 100%;object-fit: cover;}/* 卡片内容 */.card-content {padding: 12px;}.card-meta {display: flex;align-items: center;padding: 8px 12px;border-top: 1px solid #eee;}.avatar {width: 30px;height: 30px;border-radius: 50%;margin-right: 8px;}/* 响应式设计 */@media (max-width: 992px) {.waterfall-container {column-count: 3;}}@media (max-width: 768px) {.waterfall-container {column-count: 2;}}@media (max-width: 480px) {.waterfall-container {column-count: 1;}}</style>
</head>
<body><div class="waterfall-container"><!-- 自动生成20个示例卡片 --><script>const photos = [{id: 1, url: 'https://source.unsplash.com/random/800x800?mountain', likes: '12.3k'},{id: 2, url: 'https://source.unsplash.com/random/800x800?beach', likes: '8.9k'},{id: 3, url: 'https://source.unsplash.com/random/800x800?forest', likes: '15.2k'},{id: 4, url: 'https://source.unsplash.com/random/800x800?city', likes: '23.1k'},{id: 5, url: 'https://source.unsplash.com/random/800x800?animal', likes: '32.4k'},{id: 6, url: 'https://source.unsplash.com/random/800x800?food', likes: '9.7k'},{id: 7, url: 'https://source.unsplash.com/random/800x800?art', likes: '17.8k'},{id: 8, url: 'https://source.unsplash.com/random/800x800?tech', likes: '28.3k'},{id: 9, url: 'https://source.unsplash.com/random/800x800?car', likes: '14.6k'},{id: 10, url: 'https://source.unsplash.com/random/800x800?sport', likes: '19.5k'}];const container = document.querySelector('.waterfall-container');photos.forEach(photo => {const item = document.createElement('div');item.className = 'waterfall-item';item.innerHTML = `<div class="card-image"><img src="${photo.url}" alt="动态图片"></div><div class="card-content"><p>❤️ ${photo.likes}</p></div><div class="card-meta"><img src="https://source.unsplash.com/random/30x30?user" class="avatar" alt="用户头像"><span>@photographer_${photo.id}</span></div>`;container.appendChild(item);});</script></div>
</body>
</html>
代码核心特性:
- CSS多列布局魔法:
.waterfall-container {column-count: 4; /* 列数 */column-gap: 15px; /* 列间距 */break-inside: avoid; /* 防止内容断裂 */
}
- 智能响应式设计:
- 桌面(≥992px):4列
- 平板(768-992px):3列
- 小屏手机(480-768px):2列
- 超小屏(≤480px):1列
- 视觉增强技巧:
- 1:1 正方形图片容器(padding-top: 100%)
- 卡片悬停微动效(transform + transition)
- 真实阴影效果(box-shadow)
- 动态用户头像加载
- 性能优化:
- 图片懒加载(可扩展实现)
- CSS硬件加速(transform)
- 避免布局重排(break-inside)
扩展建议:
- 添加无限滚动:
window.addEventListener('scroll', () => {if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) {// 加载更多内容}
});
- 实现图片懒加载:
<img data-src="real-image.jpg" src="placeholder.jpg" class="lazyload">
- 添加加载动画:
.card-image::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 100%;background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);background-size: 200% 100%;animation: loading 1.5s infinite;
}@keyframes loading {0% { background-position: 200% 0; }100% { background-position: -200% 0; }
}
该实现方案在保持Instagram核心体验的同时,具备以下优势:
- 纯CSS布局(无JavaScript依赖)
- 完美响应式支持
- 高性能渲染
- 跨浏览器兼容性
- 易于扩展和维护
四、Flex布局的黑暗面
4.1 常见误区
- 过度使用margin:优先使用
gap
属性 - 固定尺寸滥用:灵活使用
flex-basis
- 嵌套失控:避免超过3层嵌套容器
4.2 浏览器兼容性贴士
- IE10/11需要
-ms-
前缀 - 使用Autoprefixer自动处理
- 渐进增强策略:
display: -webkit-box;
五、Flexbox的未来与超越
当Flexbox遇到CSS Grid:
.layout {display: grid;grid-template-columns: 200px 1fr;
}.sidebar {display: flex;flex-direction: column;
}
黄金组合原则:Grid管宏观布局,Flexbox管微观排列
结语:布局的艺术革命
Flexbox不仅是一个CSS模块,更是前端开发者的布局哲学——通过声明式的代码表达设计意图,让复杂的布局变得优雅简单。就像乐高积木,有限的属性通过不同组合,能构建出无限可能的界面世界。现在,你准备好用Flexbox的魔法,创造属于自己的布局杰作了吗?
实战练习推荐:
- 实现Instagram的瀑布流布局
- 创建可折叠的移动端菜单
- 构建自适应仪表盘面板
“好的布局应该像空气一样自然存在,不被用户察觉却处处体现用心。” —— 匿名Flexbox大师
延伸阅读:
- Flexbox青蛙小游戏
- Flexbox防御指南
- MDN Flexbox完全指南
相关文章:
前端弹性布局:用Flexbox构建现代网页的魔法指南
引言:布局的进化史 在网页设计的黑暗时代(2010年前),开发者们用float、position和inline-block这些原始工具进行布局,就像用石器时代的工具建造摩天大楼。直到2012年W3C正式推出Flexbox规范,前端世界终于迎…...
Python基于Django的高校教室管理系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
【金仓数据库征文】_金仓数据库在金融行业的两地三中心容灾架构实践
金仓数据库在金融行业的两地三中心容灾架构实践 🌟嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 引言 随着国家对信息技术应用创新࿰…...
利用多AI协作实现AI编辑器高效开发:创新架构与实践基本构想
在当今快速发展的科技领域,AI技术正以前所未有的速度重塑软件开发的流程和模式。传统的软件开发过程往往需要不同专业人员协同合作,从需求分析到产品设计,再到技术实现,每个环节都需要耗费大量的时间和人力。然而,随着…...
【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
我们非常高兴地向大家介绍 Seed-Coder,它是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体。Seed-Coder 通过以下亮点促进开放代码模型的发展。 以模型为中心:Seed-Coder主要利用大语言模型&#…...
C++GO语言微服务之gorm框架操作MySQL
目录 01 01-gorm介绍 02 02-MySQL操作回顾 03 03-gorm创建表 04 04-MySQL的init函数说明 05 05-gorm框架提供的MySQL连接池 06 06-gorm插入数据 07 07-gorm查询数据 08 08-gorm更新数据 09 09-gorm软删除-创建表 10 10-gorm软删除-实现 11 10-MySQL的8小时时区问题 …...
Webug4.0靶场通关笔记-靶场搭建方法(3种方法)
目录 一、虚拟机绿色版本 1. 开启phpstudy 2. 访问靶场 二、Docker版本 1.拉取镜像 2.启动镜像 三、源码安装版本 1. 搭建环境 (1)安装PHPStudy (2)WeBug4.0靶场源码 (3)安装Navicat ÿ…...
HTTP/3展望、我应该迁移到HTTP/2吗
1. HTTP/3展望 HTTP/3 基于 QUIC 协议,完全解决了“队头阻塞”问题,弱网环境下的表现会优于 HTTP/2;QUIC 是一个新的传输层协议,建立在 UDP 之上,实现了可靠传输;QUIC 内含了 TLS1.3,只能加密通…...
【Linux基础】系统监控和进程管理指令
目录 ps命令 top命令 kill命令 killall命令 1.1 命令介绍 1.2 命令格式 1.3 常用选项 1.4 示例 1.4.1 交互模式确认 1.4.2 指定信号 shutdown命令 ps命令 作用:查看当前进程信息。 常用选项: 作用 -e 显示所有进程,包括其他用户…...
【Linux实践系列】:进程间通信:万字详解共享内存实现通信
🔥 本文专栏:Linux Linux实践项目 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 人生就像一场马拉松,重要的不是起点,而是坚持到终点的勇气 ★★★ 本文前置知识: …...
无法更新Google Chrome的解决问题
解决问题:原文链接:【百分百成功】Window 10 Google Chrome无法启动更新检查(错误代码为1:0x80004005) google谷歌chrome浏览器无法更新Chrome无法更新至最新版本? 下载了 就是更新Google Chrome了...
CenOS7切换使用界面
永久切换 在开始修改之前,我们首先需要查看当前的启动模式。可以通过以下命令来实现: systemctl get-default执行此命令后,系统会返回当前的默认启动模式,例如graphical.target表示当前默认启动为图形界面模式。 获取root权限&…...
# YOLOv3:深度学习中的目标检测利器
YOLOv3:深度学习中的目标检测利器 引言 在计算机视觉领域,目标检测是一项核心任务,它涉及到识别图像或视频中的物体,并确定它们的位置。随着深度学习技术的快速发展,目标检测算法也在不断进步。YOLO(You …...
2025数维杯数学建模A题完整参考论文(共36页)(含模型、可运行代码、数据)
2025数维杯数学建模A题完整参考论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、符号定义与说明 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题2模型…...
在 Flink + Kafka 实时数仓中,如何确保端到端的 Exactly-Once
在 Flink Kafka 构建实时数仓时,确保端到端的 Exactly-Once(精确一次) 需要从 数据消费(Source)、处理(Processing)、写入(Sink) 三个阶段协同设计,结合 Fli…...
Python数据分析
目录 一、数据分析的核心流程 (一)明确数据分析目标 (二)数据收集 (三)数据清洗 1. 处理缺失值 2. 去除重复值 3. 修正错误值和异常值 (四)数据探索与可视化 1. 计算描述性…...
Java单例模式总结
说明:单例模式的核心是确保一个类只有一个实例,并提供全局访问点。饿汉式和懒汉式是两种常见的实现方式 一、饿汉式和懒汉式 1. 饿汉式(Eager Initialization) public class EagerSingleton {// 类加载时直接初始化实例private…...
《P7167 [eJOI 2020] Fountain (Day1)》
题目描述 大家都知道喷泉吧?现在有一个喷泉由 N 个圆盘组成,从上到下以此编号为 1∼N,第 i 个喷泉的直径为 Di,容量为 Ci,当一个圆盘里的水大于了这个圆盘的容量,那么水就会溢出往下流,直到…...
Pycharm(二十)张量的运算与操作
一、张量的数据类型转换 1.演示data.type(trch.DoubleTensor) #1.创建张量对象 [6 6 6;6 6 6] datatorch.full([2,3],6) print(data.dtype)#默认为torch.int64(LongTensor) #2.转化为double类型 datadata.type(torch.DoubleTensor) print(data.dtype) #3.转换成int类型 datad…...
JVM之内存管理(二)
部分内容来源:JavaGuide二哥Java 说⼀下 JDK1.6、1.7、1.8 内存区域的变化? JDK1.6、1.7/1.8 内存区域发⽣了变化,主要体现在⽅法区的实现: JDK1.6 常量池在方法区 JDK1.7 JDK1.6 使⽤永久代实现⽅法区:JDK1.7 时发…...
蓝桥杯嵌入式第十一届省赛真题
(一)题目 首先要知道P37对应的CubeMx上面的引脚是PB15,给PB15设置成ADC采集。使用到的PA6和PA7的端口要进行定时器配置 100Hz80 000 000/800 *1000 200Hz80 000 000/400 *1000 ADC采集只需要选择好adc1、adc2 再选择好它的通道就可以了,不…...
LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读
LLMs之ChatGPT:《Connecting GitHub to ChatGPT deep research》翻译与解读 导读:这篇OpenAI帮助文档全面介绍了将GitHub连接到ChatGPT进行深度代码研究的方法、优势和注意事项。通过连接GitHub,用户可以充分利用ChatGPT强大的代码理解和生成…...
多环境开发
# 应用环境(公共环境,写一些公共配置) spring:profiles:active: dev --- # 设置环境 # 生产环境 spring:config:activate:on-profile: pro server:port: 80 --- # 开发环境 spring:config:activate:on-profile: dev server:port: 81 --- # 测试环境 spring:config:activate:on-…...
游戏引擎学习第269天:清理菜单绘制
回顾并为今天的工作设定目标 昨天我们对调试系统中的菜单处理做了一些清理工作,今天我想继续对它们的展示和使用方式进行一些打磨和改进。今天的计划还不完全确定,我还没有完全决定要做什么,但是我希望能够完成这部分工作,所以我…...
《解锁React Native与Flutter:社交应用启动速度优化秘籍》
React Native和Flutter作为当下热门的跨平台开发框架,在优化应用启动性能方面各有千秋。今天,我们就深入剖析它们独特的策略与方法。 React Native应用的初始包大小对启动速度影响显著。在打包阶段,通过精准分析依赖,去除未使用的…...
Web3 初学者的第一个实战项目:留言上链 DApp
目录 📌 项目简介:留言上链 DApp(MessageBoard DApp) 🧠 技术栈 🔶 1. Solidity 智能合约代码(MessageBoard.sol) 🔷 2. 前端代码(index.html script.js…...
Innovus 25.1 版本更新:助力数字后端物理设计新飞跃
在数字后端物理设计领域,每一次工具的更新迭代都可能为项目带来巨大的效率提升与品质优化。今天,就让我们一同聚焦 Innovus 25.1 版本(即 25.10 版本)的更新要点,探寻其中蕴藏的创新能量。 一、核心功能的强势进 AI…...
Git简介和发展
Git 简介 Git是一个开源的分布式版本控制系统,跨平台,支持Windows、Linux、MacOS。主要是用于项目的版本管理,是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间,Linux内核开发团队使…...
adb 实用命令汇总
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 基础adb命令 # 重启adb adb kill-server# 查看已连接的设备 adb devices# 进入命令行 adb shell# 使用 -s 参数来指定设备 adb -s <设备序列号> shell…...
DAX 权威指南1:DAX计算、表函数与计算上下文
参考《DAX 权威指南 第二版》 文章目录 二、DAX简介2.1 理解 DAX 计算2.2 计算列和度量值2.3 变量2.3.1 VAR简介2.3.2 VAR的特性 2.4 DAX 错误处理2.4.1 DAX 错误类型2.4.1.1 转换错误2.4.1.2 算术运算错误2.4.1.3 空值或 缺失值 2.4.2 使用IFERROR函数拦截错误2.4.2.1 安全地进…...
使用fdisk 、gdisk管理分区
用 fdisk 管理分区 fdisk 命令工具默认将磁盘划分为 mbr 格式的分区 命令: fdisk 设备名 fdisk 命令以交互方式进行操作的,在菜单中选择相应功能键即可 [rootlocalhost ~]# fdisk /dev/sda # 对 sda 进行分区 Command (m for help): # 进入 fdis…...
Python----神经网络(《Deep Residual Learning for Image Recognition》论文和ResNet网络结构)
一、论文 1.1、论文基本信息 标题:Deep Residual Learning for Image Recognition 作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun 单位:Microsoft Research 会议:CVPR 2016 主要贡献:提出了一种深度残…...
PostgreSQL 的 pg_collation_actual_version 函数
PostgreSQL 的 pg_collation_actual_version 函数 pg_collation_actual_version 是 PostgreSQL 中用于检查排序规则实际版本信息的函数,主要与 ICU (International Components for Unicode) 排序规则相关。 函数基本概念 函数定义 pg_collation_actual_version(…...
使用Simulink开发Autosar Nvm存储逻辑
文章目录 前言Autosar Nvm接口设计模型及接口生成代码及arxmlRTE接口mappingRTE代码分析总结 前言 之前介绍过Simulink开发Dem故障触发逻辑,本文接着介绍另外一个常用的功能-Nvm存储的实现。 Autosar Nvm接口 Autosar Nvm中一般在上电初始化的时调用Nvm_ReadAll获…...
嵌入式STM32学习——继电器
继电器模块引脚说明 VCC(): 供电正极。连接此引脚到电源(通常是直流电源),以提供继电器线圈所需的电流。 GND(-): 地。连接此引脚到电源的负极或地。 IN(或…...
更换内存条会影响电脑的IP地址吗?——全面解析
在日常电脑维护和升级过程中,许多用户都会遇到需要更换内存条的情况。与此同时,不少用户也担心硬件更换是否会影响电脑的网络配置,特别是IP地址的设置。本文将详细探讨更换内存条与IP地址之间的关系,帮助读者理解这两者之间的本质…...
AWS SNS:解锁高并发消息通知与系统集成的云端利器
导语 在分布式系统架构中,如何实现高效、可靠的消息通知与跨服务通信?AWS Simple Notification Service(SNS)作为全托管的发布/订阅(Pub/Sub)服务,正在成为企业构建弹性系统的核心组件。本文深度…...
【Java ee初阶】网络编程 TCP
TCP的socket api 两个核心的类 ServerSocket 创建一个这样的对象,就相当于打开了一个socket文件。 这个socket对象是给服务器专门使用的 这个类本身不负责发送接收。 主要负责“建立连接” Socket 创建一个这样的对象,也就相当于打开了一个socket文…...
达索MODSIM实施成本高吗?哪家服务商靠谱?
在数字化转型的浪潮中,越来越多的制造企业开始关注达索系统的MODSIM技术。记得去年参加行业峰会时,一位来自汽车零部件企业的技术总监向我倾诉了他的困扰:"我们都知道MODSIM能提升研发效率,但听说实施成本很高,又…...
ISP接口隔离原则
任何层次的软件设计如果依赖了它并不需要的东西,就会带来意料之外的麻烦。ISP强调使用多个特定的接口,而不是一个总接口,避免依赖不需要的接口。即不需要则不应该知道。 ISP特点 降低耦合度:客户端只依赖它需要的接口࿰…...
AI Agent(8):安全与伦理考量
引言 AI Agent作为具有一定自主性的智能系统,其行为可能产生深远影响。确保这些系统安全、可靠、符合伦理标准,并遵守相关法规,不仅是技术挑战,也是社会责任。 随着AI Agent能力的增强,其潜在风险也在增加,从数据泄露到决策偏见,从自主性滥用到责任归属不清,这些问题…...
Python3虚拟环境与包管理:项目隔离的艺术
Python3虚拟环境与包管理 为什么需要虚拟环境?虚拟环境工具:你的岛屿建设者一、使用venv创建虚拟环境创建虚拟环境激活虚拟环境退出虚拟环境 二、 包管理:岛上的补给系统2.1 pip:Python的包安装工具基本用法依赖管理 2.2 高级包管…...
23、DeepSeekMath论文笔记(GRPO)
DeepSeekMath论文笔记 0、研究背景与目标1、GRPO结构GRPO结构PPO知识点**1. PPO的网络模型结构****2. GAE(广义优势估计)原理****1. 优势函数的定义**2.GAE(广义优势估计) 2、关键技术与方法3、核心实验结果4、结论与未来方向关键…...
Python自动化-python基础(下)
六、带参数的装饰器 七、函数生成器 运行结果: 八、通过反射操作对象方法 1.添加和覆盖对象方法 2.删除对象方法 通过使用内建函数: delattr() # 删除 x.a() print("通过反射删除之后") delattr(x, "a") x.a()3 通过反射判断对象是否有指定…...
用Python绘制动态彩色ASCII爱心:技术深度与创意结合
引言 在技术博客的世界里,代码不仅仅是解决问题的工具,更可以是表达创意的媒介。今天我将分享一个独特的Python爱心代码项目,它结合了数学之美、ASCII艺术和动态效果,展示了Python编程的无限可能。这个项目不仅能运行展示出漂亮的…...
【C++】红黑树
1.红黑树的概念 是一种二叉搜索树,在每个节点上增加一个存储位表示节点的颜色,Red或black,通过对任何一条从根到叶子的路径上各个结点着色方式的限制,确保没有一条路径会比其他路径长出俩倍,是接近平衡的。 2.红黑树…...
链表头插法的优化补充、尾插法完结!
头插法的优化补充 这边我们将考虑到可以将动态创建链表,和插入新链表到链表头前方,成为新链表头的方法分开,使其自由度上升,在创建完链表后,还可以添加链表元素到成为新的链表头。 就是说可以单独的调用这个insertHea…...
Java多线程(超详细版!!)
Java多线程(超详细版!!) 文章目录 Java多线程(超详细版!!)1. 线程 进程 多线程2.线程实现2.1线程创建2.1.1 继承Thread类2.1.2 实现runnable接口2.1.2.1 思考:为什么推荐使用runnable接口?2.1.2.1.1 更高的…...
超详细fish-speech本地部署教程
本人配置: windows x64系统 cuda12.6 rtx4070 一、下载fish-speech模型 注意:提前配置好git,教程可在自行搜索 git clone https://gitclone.com/github.com/fishaudio/fish-speech.git cd fish-speech 或者直接进GitHub中下载也可以 …...
Flink和Spark的选型
在Flink和Spark的选型中,需要综合考虑多个技术维度和业务需求,以下是在项目中会重点评估的因素及实际案例说明: 一、核心选型因素 处理模式与延迟要求 Flink:基于事件驱动的流处理优先架构,支持毫秒级低延迟、高吞吐的…...