第二部分:网页的妆容 —— CSS(下)
目录
- 6 布局基础:Display 与 Position - 元素如何排列和定位
- 6.1 小例子
- 6.2 练习
- 7 Flexbox 弹性布局:一维布局利器
- 7.1 小例子
- 7.2 练习
- 8 Grid 网格布局:强大的二维布局系统
- 8.1 小例子
- 8.2 练习
- 9 响应式设计与媒体查询:适应不同设备的“装修方案”
- 9.1 小例子:根据屏幕宽度改变导航栏和布局
- 9.2 练习
- 10 CSS 动画与过渡:让页面“动”起来
- 10.1 小例子
- 10.2 练习
- 结语
6 布局基础:Display 与 Position - 元素如何排列和定位
现在我们开始真正地“摆放家具”了。display
决定了元素是像“积木块”(block
,堆叠起来)还是像“文字”(inline
,排成一行)。position
则允许我们更自由地控制元素的位置,甚至让它脱离正常的排列顺序。
- 文档流: 浏览器默认排列元素的方式。块级元素从上到下依次排列,行内元素从左到右依次排列。
display: inline-block
的妙用: 它结合了inline
(不换行)和block
(可设置宽高)的优点,常用于将多个块状元素(如图标和文字、几个卡片)并排显示。position: relative;
+position: absolute;
组合: 这是非常常用的布局技巧。给父元素设置position: relative
(不移动位置,只是为了成为定位参照),然后给子元素设置position: absolute
和top/right/bottom/left
,就可以精确地把子元素定位在父元素的任意位置,常用于制作角标、弹出层内的关闭按钮等。z-index
: 只对设置了position
(非static
) 的元素有效。当你需要控制哪个元素盖在哪个元素上面时使用。比如,确保弹出的菜单总是在页面其他内容之上。
6.1 小例子
1. 简单并排显示 (inline-block)
创建06.html
<div class="item">项目一</div>
<div class="item">项目二</div>
<div class="item">项目三</div>
创建06.css
.item {display: inline-block; /* 让 div 可以并排 */width: 100px;height: 80px;background-color: lightcoral;margin: 5px;text-align: center;line-height: 80px; /* 垂直居中 (简单方法) */
}
运行后的效果
2. 固定顶栏 (fixed)
创建07.html
<nav class="fixed-nav">固定导航栏</nav>
<div style="height: 1000px; background-color: #eee; padding-top: 60px;">页面内容...</div>
创建07.css
.fixed-nav {position: fixed; /* 固定定位 */top: 0; /* 距离视口顶部 0px */left: 0; /* 距离视口左边 0px */width: 100%; /* 宽度占满 */height: 50px;background-color: navy;color: white;text-align: center;line-height: 50px;z-index: 100; /* 确保在最上层 */
}
运行后的效果
3. 父相子绝 (relative + absolute)
创建08.html
<div class="card"><span class="badge">热门</span>卡片内容...
</div>
创建08.css
.card {position: relative; /* 父元素相对定位,作为参照物 */width: 200px;height: 150px;border: 1px solid #ccc;background-color: #f0f0f0;padding: 10px;margin: 20px;
}.badge {position: absolute; /* 子元素绝对定位 */top: -10px; /* 相对于父元素顶部向上偏移 10px */right: -10px; /* 相对于父元素右侧向右偏移 10px */background-color: red;color: white;padding: 3px 8px;font-size: 12px;border-radius: 5px;
}
运行后的效果
6.2 练习
- 尝试制作一个简单的“图片在左,文字在右”的图文混排效果。可以使用
inline-block
或者后面将学到的 Flexbox/Grid。 - 创建一个带有“关闭”按钮(比如一个 ‘X’)的提示框。将提示框本身
position: fixed
或absolute
放在页面中间或角落,然后将“关闭”按钮position: absolute
定位在提示框的右上角。使用z-index
确保提示框在其他内容之上。 - 实现一个
position: sticky
的侧边栏或导航元素,让它在页面向下滚动时能“粘”在顶部。
7 Flexbox 弹性布局:一维布局利器
Flexbox(弹性盒子)是 CSS3 引入的一种强大的布局模式,特别适合用于一维布局(即沿着一条直线排列元素,无论是水平还是垂直)。想象一下你有几个积木,Flexbox 让你能非常方便地控制它们是紧挨着、均匀分布、居中对齐,还是自动伸缩填满空间。
核心概念:
- 容器 (Flex Container): 设置了
display: flex
的父元素。 - 项目 (Flex Items): 容器内的直接子元素。
- 主轴 (Main Axis): 项目排列的主要方向,由
flex-direction
决定。默认是水平方向 (row
)。 - 交叉轴 (Cross Axis): 与主轴垂直的方向。如果主轴是水平的,交叉轴就是垂直的。
上图展示了:
- Flexbox 的主轴(红色箭头)和交叉轴(绿色箭头)
- justify-content 属性的不同值(flex-start、center、flex-end)对齐效果
- align-items 属性的不同值(flex-start、center、stretch)对齐效果
justify-content
控制项目在主轴上的排列,align-items
控制项目在交叉轴上的排列。这是最常用的两个属性。
justify-content: center;
主轴居中。align-items: center;
交叉轴居中。- 同时使用这两个可以让项目在容器中水平垂直居中!
flex-grow
, flex-shrink
, flex-basis
控制项目的弹性伸缩能力:
flex-grow: 1;
意味着该项目会“贪婪地”占据所有可用的额外空间。如果有多个项目设置了flex-grow
,它们会按比例分配空间。flex-shrink: 0;
意味着该项目即使空间不足也不会缩小。flex-basis
定义了项目在计算如何分配空间之前的“理想”尺寸。
7.1 小例子
1. 水平垂直居中
创建09.html
<div class="container center-content"><div class="box">居中</div>
</div>
创建09.css
.container {display: flex;height: 200px; /* 需要容器有高度才能看到垂直居中 */background-color: lightgray;
}
.center-content {justify-content: center; /* 主轴(水平)居中 */align-items: center; /* 交叉轴(垂直)居中 */
}
.box {width: 80px;height: 50px;background-color: dodgerblue;color: white;text-align: center;line-height: 50px;
}
运行后的效果
2. 等高列布局 & 导航菜单
创建10.html
<nav class="nav-menu"><a href="#" class="nav-item">首页</a><a href="#" class="nav-item">产品</a><a href="#" class="nav-item grow-item"></a> <a href="#" class="nav-item">关于我们</a><a href="#" class="nav-item">联系</a>
</nav>
创建10.css
.nav-menu {display: flex;background-color: #333;padding: 10px;align-items: center; /* 垂直居中对齐(如果项目高度不同) */gap: 15px; /* 设置项目间距 */
}
.nav-item {color: white;text-decoration: none;padding: 8px 12px;border-radius: 4px;/* 默认 flex: 0 1 auto; */
}
.nav-item:hover {background-color: #555;
}
.grow-item {flex-grow: 1; /* 这个空项目会占据所有剩余空间,把后面的项推到右边 */
}
运行后的效果
3. 横向滚动效果
创建11.html
<div class="scroll-container"><div class="scroll-item">项目一</div><div class="scroll-item">项目二</div><div class="scroll-item">项目三</div><div class="scroll-item">项目四</div><div class="scroll-item">项目五</div>
</div>
创建11.css
.scroll-container {display: flex;overflow-x: auto; /* 允许水平滚动 */white-space: nowrap; /* 防止换行 */gap: 10px; /* 设置项目间距 */
}
.scroll-item {flex: 0 0 auto; /* 项目不会增长或收缩,宽度由内容决定 */width: 100px; /* 固定宽度 */height: 100px;background-color: lightblue;text-align: center;line-height: 100px;margin: 10px;
}
运行后的效果
7.2 练习
使用 Flexbox 布局一个卡片列表。
- 让卡片(比如
div.card
)能够在一行内显示。 - 当一行放不下时,自动换行 (
flex-wrap: wrap;
)。 - 尝试使用
justify-content
的不同值(如space-between
,space-around
)来调整卡片在一行内的分布方式。 - 给卡片设置
flex-basis
(比如flex-basis: 200px;
)来建议它们的初始宽度,并使用flex-grow: 1;
让它们在空间允许时可以伸展填充。 - 使用
gap
属性设置卡片之间的间距。
8 Grid 网格布局:强大的二维布局系统
如果 Flexbox 擅长一维布局,那么 Grid 就是二维布局的王者!它允许你将页面划分成行和列组成的网格,然后将元素精确地放置在这些网格单元格中,甚至让元素跨越多个单元格。非常适合构建复杂的页面结构,如仪表盘、杂志布局、经典的网站布局(如圣杯布局)。
核心概念:
- 网格容器 (Grid Container): 设置了
display: grid
的父元素。 - 网格项目 (Grid Items): 容器内的直接子元素。
- 网格线 (Grid Lines): 划分网格的水平和垂直线条。
- 网格轨道 (Grid Tracks): 两条相邻网格线之间的空间(即行或列)。
- 网格单元格 (Grid Cell): 四条网格线包围的最小单位。
- 网格区域 (Grid Area): 由任意四条网格线包围的矩形区域,可以包含一个或多个单元格。
上图展示了:
- Grid 网格线、轨道、单元格和区域的基本结构
- grid-template-columns 和 grid-template-rows 的分布效果
- grid-template-areas 的实际布局示例
常用技巧:
fr
单位: 代表 “fraction” (分数),用于按比例分配网格容器中的可用空间。1fr 2fr
表示将可用空间分成 3 份,第一个轨道占 1 份,第二个轨道占 2 份。grid-template-areas
: 非常直观的方式来定义布局。先给网格项目用grid-area
命名,然后在容器上用grid-template-areas
像画图一样排列这些名字。repeat()
函数: 简化重复的轨道定义,如grid-template-columns: repeat(3, 1fr);
等同于1fr 1fr 1fr;
。minmax()
函数: 定义轨道的最小和最大尺寸,如minmax(100px, 1fr)
表示轨道宽度至少 100px,但可以放大以占据可用空间。
8.1 小例子
1. 经典圣杯布局 (Header, Nav, Content, Sidebar, Footer)
创建12.html
<div class="holy-grail-container"><header class="hg-header">Header</header><nav class="hg-nav">Navigation</nav><main class="hg-content">Main Content Area</main><aside class="hg-sidebar">Sidebar</aside><footer class="hg-footer">Footer</footer>
</div>
创建12.css
.holy-grail-container {display: grid;min-height: 100vh; /* 容器至少和视口一样高 *//* 定义命名的网格区域 */grid-template-areas:"header header header""nav content sidebar""footer footer footer";/* 定义列宽:导航固定宽,内容自适应,侧边栏固定宽 */grid-template-columns: 150px 1fr 120px;/* 定义行高:头部页脚自适应,中间内容区域占满剩余高度 */grid-template-rows: auto 1fr auto;gap: 10px; /* 网格间距 */
}/* 将 HTML 元素分配到对应的网格区域 */
.hg-header { grid-area: header; background-color: lightblue; }
.hg-nav { grid-area: nav; background-color: lightpink; }
.hg-content{ grid-area: content; background-color: lightyellow; }
.hg-sidebar{ grid-area: sidebar; background-color: lightgreen; }
.hg-footer { grid-area: footer; background-color: lightgray; }/* 给每个区域加点内边距方便看 */
.holy-grail-container > * {padding: 15px;text-align: center;
}
运行后的效果
8.2 练习
使用 Grid 布局来创建一个复杂的仪表盘 (Dashboard) 界面的框架。
- 定义一个包含侧边栏 (sidebar)、主内容区 (main-content)、可能还有一个顶部信息栏 (top-info) 的网格布局。
- 尝试使用
grid-template-columns
,grid-template-rows
和grid-area
来实现。 - 让主内容区能够占据大部分空间。
- 思考如果要在主内容区内部再嵌套一个两列或三列的布局,该如何做(Grid 可以嵌套使用)。
9 响应式设计与媒体查询:适应不同设备的“装修方案”
现在的用户通过各种设备访问网页:手机、平板、笔记本、大屏台式机。响应式设计 (Responsive Web Design, RWD) 的目标就是让你的网页能够在所有这些设备上都提供良好的阅读和交互体验。这就好比同一套房子,我们需要为小户型和大户型准备不同的家具摆放和装饰方案。
核心技术:
-
设置 Viewport Meta 标签: 这是必须加在 HTML
<head>
中的第一步!<meta name="viewport" content="width=device-width, initial-scale=1.0">
width=device-width
:告诉浏览器将视口宽度设置为设备的屏幕宽度。initial-scale=1.0
:设置初始缩放比例为 1,禁止移动端浏览器默认的缩放行为。
没有这个标签,媒体查询可能无法在移动设备上正常工作!
-
使用媒体查询 (
@media
): 这是实现响应式的关键。它允许你根据设备的特性(最常用的是屏幕宽度)来应用不同的 CSS 规则。- 断点 (Breakpoints): 我们通常会选择几个关键的屏幕宽度值作为“断点”,在这些断点处改变布局或样式。例如,小于 600px 认为是手机,600px 到 900px 是平板,大于 900px 是桌面。
max-width
vsmin-width
:@media (max-width: 600px) { ... }
:规则应用于屏幕宽度 小于等于 600px 的设备。@media (min-width: 601px) { ... }
:规则应用于屏幕宽度 大于等于 601px 的设备。
设计方法论:
- 移动优先 (Mobile First): 推荐! 先为移动设备(窄屏幕)设计和编写基础 CSS,然后使用
min-width
的媒体查询逐步为更大的屏幕添加或修改样式。这通常能产生更简洁、性能更好的 CSS。 - 桌面优先 (Desktop First): 先为桌面设备(宽屏幕)设计,然后使用
max-width
的媒体查询来调整或简化布局以适应更小的屏幕。
9.1 小例子:根据屏幕宽度改变导航栏和布局
假设我们有一个 Flexbox 导航栏和一个两列布局。
创建
HTML (基本结构):
<nav class="main-nav"><a href="#">Logo</a><div class="nav-links"><a href="#">首页</a><a href="#">产品</a><a href="#">关于</a><a href="#">联系</a></div>
</nav><div class="content-area"><main class="main-content">主要内容...</main><aside class="sidebar">侧边栏...</aside>
</div>
CSS (移动优先):
/* --- 默认样式 (Mobile First) --- */
.main-nav {display: flex;flex-direction: column; /* 移动端:Logo 在上,链接在下 */align-items: center;background-color: #f8f8f8;padding: 10px;
}
.nav-links {display: flex;flex-direction: column; /* 移动端:链接垂直排列 */align-items: center;width: 100%;margin-top: 10px;
}
.nav-links a {padding: 8px;text-decoration: none;color: #333;width: 100%;text-align: center;border-bottom: 1px solid #eee;
}
.nav-links a:last-child {border-bottom: none;
}.content-area {display: flex;flex-direction: column; /* 移动端:主内容在上,侧边栏在下 */
}
.main-content, .sidebar {padding: 15px;
}
.sidebar {background-color: lightgoldenrodyellow;
}/* --- 平板及以上样式 (Tablet and Up) --- */
@media (min-width: 768px) {.main-nav {flex-direction: row; /* 平板:水平排列 */justify-content: space-between; /* Logo 左对齐,链接右对齐 */}.nav-links {flex-direction: row; /* 平板:链接水平排列 */width: auto;margin-top: 0;}.nav-links a {width: auto;border-bottom: none;margin-left: 15px;}.content-area {flex-direction: row; /* 平板:主内容和侧边栏并排 */gap: 20px;}.main-content {flex-grow: 1; /* 主内容占据更多空间 */}.sidebar {flex-basis: 250px; /* 侧边栏固定宽度 */flex-shrink: 0; /* 不缩小 */}
}
移动端的效果
PC端的效果
9.2 练习
将你的阶段项目 1(个人博客/食谱页面)改造成一个响应式页面。
- 确保添加了
viewport
meta 标签。 - 采用移动优先的策略。首先让页面在窄屏幕(手机)上看起来不错(可能需要单列布局,较大的字体)。
- 选择至少一个断点(例如
768px
或992px
)。 - 使用
@media (min-width: ...)
媒体查询,为大于该断点的屏幕调整布局(例如,从单列变为两列或三列,调整导航栏样式,减小字体大小等)。 - 在浏览器的开发者工具中模拟不同的设备尺寸,测试响应式效果。
10 CSS 动画与过渡:让页面“动”起来
静态的页面虽然能看,但适当的动态效果可以极大地提升用户体验,引导用户注意力,或者纯粹增加趣味性。CSS 提供了两种主要方式来实现动态效果:transition
用于简单的状态间平滑过渡,animation
用于创建更复杂的、可重复的动画序列。transform
属性经常与它们配合使用,来实现移动、旋转、缩放等视觉变换,并且性能通常比直接改变 top/left
或 width/height
要好。
transition
: 最适合用在交互反馈上,比如鼠标悬停按钮时,颜色、大小平滑变化,而不是瞬间改变。只需要在元素原始状态下定义transition
属性,然后在触发状态(如:hover
,:focus
, 或通过 JavaScript 添加/移除类)下改变相应的 CSS 属性即可。animation
: 需要先用@keyframes
定义动画的名字和过程(从什么状态from/0%
到什么状态to/100%
,以及中间状态),然后在元素上通过animation
属性来“调用”这个定义好的动画,并设置时长、次数等参数。适合做加载指示器、循环播放的特效等。
10.1 小例子
1. 按钮悬停过渡效果
创建14.html
<button class="my-button">Hover Me</button>
创建14.css
.my-button {padding: 10px 20px;background-color: steelblue;color: white;border: none;border-radius: 5px;cursor: pointer;font-size: 16px;/* 定义过渡效果 */transition: background-color 0.3s ease, transform 0.3s ease;/* 过渡背景色和变换效果,持续 0.3 秒,使用 ease 速度曲线 */
}.my-button:hover {background-color: darkslateblue;transform: scale(1.1); /* 悬停时放大 10% */
}
运行后的效果
2. 简单加载动画 (旋转)
创建15.html
<div class="loader"></div>
创建15.css
/* 定义旋转动画 */
@keyframes spin {from {transform: rotate(0deg);}to {transform: rotate(360deg);}
}.loader {width: 50px;height: 50px;border: 5px solid #f3f3f3; /* 浅灰色背景圆环 */border-top: 5px solid #3498db; /* 蓝色顶部圆环,形成旋转效果 */border-radius: 50%; /* 使其成为圆形 *//* 应用动画 */animation-name: spin; /* 使用名为 spin 的动画 */animation-duration: 1s; /* 每次旋转持续 1 秒 */animation-timing-function: linear; /* 匀速旋转 */animation-iteration-count: infinite; /* 无限循环 */
}
运行后的效果
10.2 练习
为你之前练习中创建的“卡片列表”中的卡片添加一个简单的交互动画:
- 使用
transition
,当鼠标悬停在卡片上时,让卡片轻微向上移动(transform: translateY(-5px);
)并/或添加一个细微的阴影 (box-shadow
) 效果,让这个变化过程平滑进行。 - (可选挑战) 尝试创建一个更复杂的动画,比如使用
@keyframes
让一个元素(比如一个小图标)实现跳动或闪烁的效果。
阶段项目 2:美化你的第一个项目
现在,是时候把你学到的所有 CSS 知识应用到你的第一个阶段项目(个人博客/食谱页面)上了!
目标:
- 视觉设计: 给页面选择合适的配色方案、字体、间距,让它看起来专业、美观、协调。运用你学到的
color
,font-*
,background
,padding
,margin
,border
等属性。 - 布局: 使用 Flexbox 或 Grid(或者两者结合)来构建页面的主要布局结构。确保内容组织清晰、合理。
- 响应式: 让你的页面在不同屏幕尺寸下(至少模拟手机和桌面)都能良好显示。使用媒体查询调整布局、字体大小、元素的显示/隐藏等。
- 交互增强 (可选): 添加一些简单的
transition
效果,比如链接悬停变色、按钮悬停放大、图片悬停加亮等,提升用户体验。
要求:
- 所有 CSS 代码必须写在外部样式表 (
.css
文件) 中。 - 代码结构清晰,最好添加注释说明。
- 在浏览器开发者工具中测试不同屏幕尺寸下的效果。
这个项目将是你综合运用 CSS 知识的绝佳机会。大胆尝试,发挥创意,把你的“毛坯房”装修成一个漂亮的“精装房”吧!
结语
恭喜你!完成了 CSS 部分的学习。现在你已经掌握了给网页“化妆”和“布局”的核心技能。从简单的颜色、字体调整,到复杂的 Flexbox、Grid 布局,再到响应式设计和动画效果,你已经具备了将一个朴素的 HTML 结构打造成视觉吸引、用户友好的网页的能力。
CSS 的世界非常广阔,还有很多高级特性和技巧(如变量、Sass/Less 预处理器、更复杂的动画库等)等待你去探索。但目前所学的基础已经足够你构建出非常专业和现代的网页界面了。
最重要的还是不断练习!尝试去模仿一些你喜欢的网站的布局和样式,动手去实现它们,这是提高 CSS 技能最快的方法。
接下来,我们将进入激动人心的 JavaScript 篇章,学习如何给我们的网页添加交互行为,让它真正“活”起来!准备好迎接编程逻辑的挑战吧!
项目开源地址
https://github.com/wedalowcode/my-first-web-project.git
相关文章:
第二部分:网页的妆容 —— CSS(下)
目录 6 布局基础:Display 与 Position - 元素如何排列和定位6.1 小例子6.2 练习 7 Flexbox 弹性布局:一维布局利器7.1 小例子7.2 练习 8 Grid 网格布局:强大的二维布局系统8.1 小例子8.2 练习 9 响应式设计与媒体查询:适应不同设备…...
vite项目tailwindcss4的使用
1、安装taillandcss 前几天接手了一个项目,看到别人用tailwindcss节省了很多css代码的编写,所以自己也想在公司项目中接入tailwindcss。 官网教程如下: Installing Tailwind CSS with Vite - Tailwind CSS 然而,我在vite中按…...
css中:is和:where 伪函数
在 CSS 里,:is() 属于伪类函数,其作用是对一组选择器进行匹配,只要元素与其中任何一个选择器相匹配,就可以应用对应的样式规则。以下是详细介绍: 基本语法 :is() 函数的参数是一个或多个选择器,各个选择器之…...
线下零售数据采集:在精度与效率之间寻找平衡点
线下零售数据采集:在精度与效率之间寻找平衡点 为什么线下零售必须重视数据采集? 随着零售行业竞争加剧,门店执行的标准化与透明化成为供应链协作、销售提升的基础工作。 POG(陈列执行规范)的落地效果、陈列策略的调整…...
【Robocorp实战指南】Python驱动的开源RPA框架
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:网页数据抓取案例2:Excel报表生成 运行结果验证 三、性能对比测试方…...
新ubuntu物理机开启ipv6让外网访问
Ubuntu 物理机 SSH 远程连接与 IPv6 外网访问测试指南 1. 通过 SSH 远程连接 Ubuntu 物理机 1.1 安装 SSH 服务 sudo apt update sudo apt install openssh-server1.2 检查 SSH 服务状态 sudo systemctl status ssh确认出现 active (running)。 1.3 获取物理机 IP 地址 i…...
驱动开发硬核特训 │ Regulator 子系统全解
一、Regulator子系统概述 在 Linux 内核中,Regulator 子系统是专门用于管理电源开关、电压调整、电流控制的一套完整框架。 它主要解决以下问题: 设备需要的电压通常不一样,如何动态调整?有些设备休眠时需要关闭供电࿰…...
入门版 鸿蒙 组件导航 (Navigation)
入门版 鸿蒙 组件导航 (Navigation) 注意:使用 DevEco Studio 运行本案例,要使用模拟器,千万不要用预览器,预览器看看 Navigation 布局还是可以的 效果:点击首页(Index)跳转到页面(…...
怎样将visual studio 2015开发的项目 保存为2010版本使用
用的老旧电脑跑vs2015太慢了,实在忍不了了! 想把用 Visual Studio 2015 的做的项目保存为 Visual Studio 2010 兼容的格式,以后都使用2010写了。自己在网上搜了一下,亲测以下步骤可以的 手动修改解决方案和项目文件 修改解决方案…...
【学习笔记】软件测试流程-测试设计阶段
软件测试设计阶段这个阶段主要工作是编写测试用例。 什么是测试用例? 测试用例(TestCase)是为项目需求而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序是否满足客户需求。简而言之,测试用例是每一个测…...
Rust 学习笔记:关于切片的两个练习题
Rust 学习笔记:关于切片的两个练习题 Rust 学习笔记:关于切片的两个练习题引用和切片引用的大小以下程序能否通过编译? Rust 学习笔记:关于切片的两个练习题 参考视频: https://www.bilibili.com/video/BV1GrDQYeEzS…...
BeeWorks企业内部即时通讯软件支持国产化,已在鸿蒙系统上稳定运行
一、企业用户面临的困境与痛点 一些企业用的即时通讯软件比较旧,存在的问题不仅影响了日常工作的正常开展,也阻碍了企业信息化建设的进程: ● 国产系统与移动端不兼容:仅支持Windows和MAC系统,无法在银河麒麟、统信U…...
java对文字按照语义切分
实现目标 把一段文本按照一个完整的一句话为单元进行切分。如:以逗号,感叹号结尾看作是一个句子。 实现方案 StanfordCoreNLP切分 引入依赖 <dependency><groupId>edu.stanford.nlp</groupId><artifactId>stanford-corenlp<…...
华纳云:centos如何实现JSP页面的动态加载
JSP(JavaServer Pages)作为Java生态中常用的服务器端网页技术,具有动态内容生成、可扩展性强、与Java无缝结合等优势。 而CentOS作为一款稳定、高效、安全的Linux服务器操作系统,非常适合部署JSP应用。 想要让JSP页面实现动态更新加载,避免…...
Android 消息队列之MQTT的使用(二):会话+消息过期机制,设备远程控制,批量控制实现
目录 一、实际应用场景 室内温湿度数据上传设备远程控制批量控制实现 二、会话管理、消息过期设置 4.1 会话管理 Clean Session参数 新旧会话模式对比典型应用场景 4.2 消息过期设置 MQTT 5.0消息过期机制 Message Expiry Interval属性QoS级别影响 三、实际应用场景 …...
一、JVM基础概念
一、JVM的设计目标 一次编译,到处运行(跨平台) ➔ Java编译成字节码,由JVM在不同平台解释/编译执行,实现跨平台。 内存管理与垃圾回收 ➔ JVM统一负责内存分配和回收,降低内存泄漏的风险。 性能优化 ➔ JIT(即时编译…...
深度学习---Pytorch概览
一、PyTorch 是什么? 1. 定义与定位 开源深度学习框架:由 Facebook(Meta)AI 实验室开发,基于 Lua 语言的 Torch 框架重构,2017 年正式开源,主打动态计算图和易用性。核心优势:灵活…...
第33周JavaSpringCloud微服务 分布式综合应用
第33周JavaSpringCloud微服务 分布式综合应用 一、分布式综合应用概述 分布式知识体系内容广泛,主要包括分布式事务、分布式锁、RabbitMQ等消息中间件的应用以及跨域问题的解决。 1.1 课程重点内容介绍 分布式事务 :在大型项目中普遍存在,…...
Paramiko 完全指南
目录 Paramiko 概述核心功能与模块框架安装与依赖基础用法与案例详解 SSH 连接与命令执行密钥认证SFTP 文件传输交互式会话端口转发 高级功能与实战技巧常见问题与解决方案总结与资源推荐 1. Paramiko 概述 是什么? Paramiko 是一个纯 Python 实现的 SSHv2 协议库…...
夜莺监控V8(Nightingale)二进制部署教程(保姆级)
夜莺监控部署 前置工作 1. 部署好mysql 2. 部署好redis 3. 部署好prometheus夜莺压缩包下载 本教程基于Centos7系统下的二进制方式部署,先去官网进行压缩包下载 在系统创建/opt/n9etest目录,并将压缩包拖进目录 mkdir /opt/n9etest进入/opt/n9etest࿰…...
鸿蒙应用开发 知识点 官网快速定位表
ArkTS 语言介绍 ArkTS 语言介绍 基础入门 资源分类与访问 添加组件(基础组件) 显示图片 (Image) 按钮 (Button) 单选框 (Radio) 切换按钮 (Toggle) 进度条 (Progress) 视频播放 (Video) 使用文本 文本显示 (Text/Span) 文本输入 (TextInput/TextArea) 使用弹窗 使用弹…...
【神经网络与深度学习】两种加载 pickle 文件方式(joblib、pickle)的差异
引言 从深度学习应用到数据分析的多元化需求出发,Python 提供了丰富的工具和模块,其中 pickle 和 joblib 两种方式在加载数据文件方面表现尤为突出。不同场景对性能、兼容性以及后续处理的要求不尽相同,使得这两种方式各显优势。本文将通过深…...
quickbi finebi 测评(案例讲解)
quickbi & finebi 测评 国产BI中入门门槛比较低的有两个,分别是quickbi和finebi。根据我的经验通过这篇文章做一个关于这两款BI的测评文章。 quickbi分为个人版、高级版、专业版、私有化部署四种。这篇文章以quickbi高级版为例,对quickbi进行分享。…...
vue的生命周期 以及钩子
最早可以在created 时调用后端接口获取数据,因为beforecreated的时候 那个data 都还还是初始化出来 修改数据的时候触发 update 案例1:create 案例2:一进来页面获取搜索框焦点 echarts 饼图渲染 初始化dom后才去准备实例,所以必须要在dom之后…...
Mariadb 防火墙服务器和端口:mysql | 3306
Centos7 Mariadb 理解:Mariadb数据库就类似于我们生活中常见的Excel。 主要工作原理就是我们创造一个数据库其中创造一个数据表再在数据表中输入内容,分为三类。在详细点就是打开Excel(数据库),我们在其中加入…...
爬虫学习笔记(二)--web请求过程
Web请求全过程(重要) 从输入完网址(如输入百度网址)到返回页面以及页面中的数据这一完整的过程发生了什么事情? 服务器端渲染 在服务器端直接把数据和html整合,统一返回给浏览器,在页面源代码…...
开发vue项目所需要安装的依赖包
在开发Vue项目时,通常需要安装以下几个核心依赖包:1、Vue CLI、2、Vue Router、3、Vuex、4、Axios。这些依赖包可以确保你的Vue项目拥有基础的功能和良好的开发体验。接下来,我们将详细介绍每个依赖包的作用、安装方法以及使用案例。 一、VUE…...
Java SE(4)——方法详解
1.方法的概念&使用 1.1 什么是方法? Java中的方法类似于C语言中的函数,是用于执行特定任务的代码块。 那么用方法组织起来的代码块和普通的代码相比有什么优势呢? 1.当代码规模较大且应用场景较为复杂时,方法能够模块化地组…...
网络安全实战指南:从安全巡检到权限维持的应急响应与木马查杀全(命令查收表)
目录 一、安全巡检的具体内容 1. 巡检的频率与目标是什么 2. 巡检的内容是什么以及巡检后如何加固 二、Windows环境下应急响应的主要流程 1. 流程概述及每个步骤详细解释 步骤1:隔离与遏制 步骤2:识别与分析 步骤3:清除与恢复 步骤4…...
Infrared Finance:Berachain 生态的流动性支柱
在加密市场中,用户除了参与一级和二级交易,还有一种低门槛参与的就是空投。从 2021 年 DeFi 成为主流开始,空投一直都是“以小搏大”的机会,通过参与项目早期的链上交互和任务以获取空投奖励,近几年已成为一种广受欢迎…...
Hadoop和Spark大数据挖掘与实战
1.概述 本节将系统讲解大数据分析的完整流程,包括数据采集、预处理、存储管理、分析挖掘与结果可视化等核心环节。与此同时,我们还将对主流数据分析工具进行横向对比,帮助读者根据实际需求选用最合适的工具,提升数据价值挖掘的效…...
TCP vs UDP:核心区别、握手过程与应用场景(附对比图)
🌐 引言 在网络通信中,TCP(传输控制协议)和UDP(用户数据报协议)是两大核心传输层协议。它们各有优劣,适用于不同场景。本文将用图文对比实战示例,帮你彻底理解两者的区别࿰…...
人工智能-深度学习之多层感知器
深度学习 任务任务1任务2任务3 机器学习的弊端多层感知器 (MLP/人工神经网络)MLP实现非线性分类Keras介绍与实战准备Keras or TensorflowKeras建立MLP模型 实战(1): 建立MLP实现非线性二分类实战(2): MLP实…...
Improving Deep Learning For Airbnb Search
解决问题 问题1: 解决推荐酒店与用户实际预定酒店价格存在偏差问题,实际预定比推荐要更便宜: 所以问题为是否更低价格的list更倾向于用户偏好,应该被优先推荐? 1. 该文通过数据分析与模型演进,将模型改造为item sco…...
多模态大型模型,实现以人为中心的精细视频理解
大家看完觉得有帮助记得点赞和关注!!! 抽象 精细理解视频中人类的动作和姿势对于以人为中心的 AI 应用程序至关重要。在这项工作中,我们介绍了 ActionArt,这是一个细粒度的视频字幕数据集,旨在推进以人为中…...
向量数据库Milvus的部署与使用
Milvus介绍 Milvus是一个开源、高性能、高扩展性的向量数据库,Milvus可以用来存储文本、图像、音频等非结构化数据,本质上是用Embeddings将非结构化数据转换成能够捕捉其基本特征的数字向量,然后将这些向量存储在向量数据库中,从…...
1.文档搜索软件Everything 的使用介绍
Everything 是 Windows 文件搜索的效率天花板,通过灵活语法和极速响应,彻底告别「找文件焦虑」。 定位:一款专注于 极速文件名搜索 的 Windows 工具,免费且轻量(安装包仅几 MB)。 核心优势…...
2025系统架构师---论企业集成平台的技术与应用
摘要 本文探讨了企业集成平台的技术与应用,以某商业银行开发的绩效考核平台系统为例,分析了企业集成平台的基本功能及关键技术,并详细阐述了在表示集成、数据集成、控制集成和业务流程集成方面的应用和实施方式。通过异构系统之间的集成,绩效考核平台与其他系统实现了有机…...
STM32Cubemx-H7-16-FreeRTOS-1-创建工程,实现两个灯的基本亮灭
前言 裸机也是开发到一半快要结束了,接下来开始上操作系统,然后先能使用基本的,后面再讲理论。 Cubemx创建工程 基本打开生成就不说了,直接从界面开始 从这里开始吧 1.首先开启外部高速晶振 2.先这样选择 选择HSE时钟环ÿ…...
深入浅出限流算法(二):更平滑的滑动窗口
好的,接续上一篇关于固定窗口计数器的讨论,我们现在来看看它的改进版——滑动窗口算法,它旨在解决固定窗口那个恼人的“临界突变”问题。 在上一篇文章中,我们探讨了最简单的固定窗口计数器限流算法,并指出了它最大的缺…...
纷析云开源财务软件:基于Spring Boot的轻量化财务中台实践
一、技术架构与核心设计 全栈开源技术栈 后端框架:基于Spring Boot 3.x构建,集成MyBatis-Plus作为ORM层,支持JDK 17特性(如虚拟线程并发处理),确保高吞吐与稳定性。 前端框架:采用Vue 3 TypeS…...
软考-软件设计师中级备考 5、数据结构 树和二叉树
1、树的基本概念 节点的度:节点拥有的子树数目。例如,若一个节点有 3 棵子树,其度为 3。树的度:树中节点的最大度数。如树中所有节点的度最大为 4,则树的度是 4。叶子节点:度为 0 的节点,也…...
php 需要学会哪些技术栈,掌握哪些框架
作为一个「野生」程序员,我的学习过程比较急功近利。 我记得自己写的第一个 PHP 程序是留言本。一上来对 PHP 一窍不通,所以直接去网上找了个留言本的源码,下载下来后先想办法让它在自己电脑上运行起来。通过这个过程掌握了 PHP 开发环境的搭…...
短视频矩阵系统贴牌批量剪辑功能开发,支持OEM
一、引言 在短视频行业蓬勃发展的当下,短视频矩阵运营已成为企业和个人实现品牌推广、流量增长的重要策略。然而,面对大量的视频素材和多个运营账号,传统的单个视频剪辑、发布方式效率极低,难以满足矩阵运营的需求。为了提高内容…...
【Java EE初阶】多线程(二)
1.在图中代码,我们调用了start方法,真正让系统调用api创建了一个新线程,而在这个线程跑起来之后,就会自动执行到run。调用start方法动作本身速度非常快,一旦执行,代码就会立即往下走,不会产生任…...
分布式链路追踪理论
基本概念 分布式调用链标准-openTracing Span-节点组成跟踪树结构 有一些特定的变量,SpanName SpanId traceId spanParentId Trace(追踪):代表一个完整的请求流程(如用户下单),由多个Span组成…...
conda和bash主环境的清理
好的!要管理和清理 Conda(或 Bash)安装的包,可以按照以下步骤进行,避免冗余依赖,节省磁盘空间。 📌 1. 查看已安装的包 先列出当前环境的所有安装包,找出哪些可能需要清理ÿ…...
Linux系统管理与编程14:Shell变量及定制bash登录界面
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1.准备工作 创建用户wu useradd wu passwd wu 修改权限 chmod uw /etc/sudoers 编辑 visudo 在root行下,添加:“wu ALL……” 图14- 1 恢复文件权限并…...
微信小程序开发笔记
一、首先,下载一个微信开发者工具。前端项目就正常创建,由于本人的前端一塌糊涂,就让AI给我生成了一个我想要的前端项目(包括后面写功能)。 这里开发的时候会用到这个,但是一定注意服务部署到服务器上再本…...
SEO长尾关键词优化核心策略
内容概要 在搜索引擎优化领域,长尾关键词因其精准的流量捕获能力与较低的竞争强度,已成为提升网站自然流量的核心突破口。本文围绕长尾关键词优化的全链路逻辑,系统拆解从需求洞察到落地执行的五大策略模块,涵盖用户搜索意图解析…...