CSS全解析
文章目录
- CSS全解析
- 一、CSS是什么
- 二、基本语法规范
- 三、引入方式
- (一)内部样式表
- (二)行内样式表
- (三)外部样式
- 四、代码风格
- (一)样式格式
- (二)样式大小写
- (三)空格规范
- 五、选择器
- (一)选择器的功能
- (二)选择器的种类
- 1. 基础选择器
- 2. 复合选择器
- 六、常用元素属性
- (一)字体属性
- (二)文本属性
- (三)背景属性
- (四)圆角矩形
- 七、Chrome调试工具
- (一)标签页含义
- 八、元素的显示模式
- (一)块级元素
- (二)行内元素/内联元素
- 九、盒模型
- (一)边框
- (二)内边距
- (三)外边距
- (四)去除浏览器默认样式
- 十、弹性布局
- (一)初体验
- (二)flex布局基本概念
- (三)常用属性
CSS全解析
在现代网页开发中,CSS(层叠样式表,Cascading Style Sheets)就像是一位幕后的魔法师,将平淡无奇的HTML结构变幻成视觉上令人惊艳的网页。今天,我们就来深入探索CSS的奇妙世界。
一、CSS是什么
CSS是层叠样式表,它在网页开发中扮演着不可或缺的角色。它能够对网页中元素位置的排版进行像素级精确控制,就像一位技艺精湛的工匠,精心雕琢每个元素的布局。通过CSS,我们可以轻松实现美化页面的效果,将内容与样式分离,使HTML文件专注于结构,而CSS文件专注于样式呈现。这就好比化妆术(被誉为“东方四大邪术”之一),可以为网页这个“脸庞”增添魅力。
二、基本语法规范
CSS的基本语法遵循“选择器 + {一条/N条声明}”的模式。其中,选择器如同指挥官,决定针对哪些元素进行修改(也就是“找谁”);而声明则像指令,决定对这些元素修改什么(也就是“干啥”)。声明中的属性是键值对的形式,使用“;”来区分不同的键值对,使用“:”区分键和值。
CSS的注释使用“/* */”,这在代码中添加解释和说明时非常有用,我们还可以使用“ctrl + /”在代码编辑器中快速切换注释状态。在HTML中,CSS可以写在“style”标签内,这个“style”标签理论上可以放到页面的任意位置,但一般放到“head”标签内,这样有助于提高代码的可读性和维护性。
三、引入方式
(一)内部样式表
内部样式表是将CSS代码写在“style”标签中,然后嵌入到HTML内部。虽然理论上“style”标签可以放在HTML的任何地方,但将其放在“head”标签中是一种良好的实践,这样可以使样式和页面结构分离。然而,这种方式也有缺点,当CSS内容较多时,分离得还不够彻底。在实际开发中,这种方式并不常用,不过在一些简单的页面或者小型项目中,还是可以看到它的身影,比如搜狗搜索中仍然保留着这种写法。
(二)行内样式表
行内样式表是通过元素的“style”属性来指定某个标签的样式。这种方式适合编写简单的样式,并且只针对某个特定的标签生效。它的缺点是不能编写太复杂的样式,不过它的优先级较高,会覆盖其他方式定义的样式。例如:
<style>p {/* 设置字体颜色 */color: red;/* 设置字体大小 */font - size: 30px;}
</style>
<p style="color: green;">hello</p>
在这个例子中,行内样式的“color: green”会覆盖在“style”标签中定义的“color: red”。
(三)外部样式
外部样式是实际开发中最常用的方式。其步骤包括创建一个.css文件,然后使用“link”标签将这个CSS文件引入到HTML文件中。这种方式的优点是样式和结构彻底分离,使得代码的可维护性大大提高。但它也有一个小缺点,那就是受到浏览器缓存的影响,修改之后不一定立刻生效。这是因为浏览器为了提高访问效率,会对网页依赖的资源(如图片、CSS、JS等)进行缓存。当我们修改了外部的CSS文件后,可能需要通过“ctrl + F5”强制刷新页面,才能让浏览器重新获取最新的CSS文件。
四、代码风格
(一)样式格式
- 紧凑风格:这种风格的代码较为紧凑,节省空间,但可能在可读性上稍逊一筹。
- 展开风格(推荐):代码展开,结构清晰,易于阅读和维护,是一种比较好的代码编写风格。
(二)样式大小写
虽然CSS不区分大小写,但为了保持代码的规范性和一致性,在开发时统一使用小写字母是一种良好的编程习惯。
(三)空格规范
在CSS中,冒号后面带空格,选择器和“{”之间也有一个空格,这样可以使代码更加清晰易读。
五、选择器
(一)选择器的功能
选择器的主要功能是选中页面中指定的标签元素,只有先选中元素,才能设置元素的属性。这就好比在游戏(如SC2、War3)中,需要先选中单位,才能指挥该单位行动。
(二)选择器的种类
1. 基础选择器
- 标签选择器:能够快速为同一类型的标签都选择出来,但不能进行差异化选择。例如,我们可以使用“p”标签选择器来设置所有“p”标签的样式:
p {color: red;
}
- 类选择器:它可以实现差异化表示不同的标签,多个标签可以使用同一个类名,一个标签也能使用多个类名(多个类名之间用空格分割)。类名以“.”开头,下方的标签使用“class”属性来调用。类选择器是最灵活、最常用的选择器之一。例如:
.blue {color: blue;
}
<div class="blue">咬人猫</div>
<div>咬人猫</div>
- id选择器:和类选择器类似,但在HTML中,id是唯一的,不能被多个标签使用,同一个id在一个HTML中只能出现一次。CSS中使用“#”开头表示id选择器,并且id选择器的值和html中某个元素的id值相同,html的元素id不必带“#”。例如:
#myElement {background - color: yellow;
}
<div id="myElement">这是一个独特的元素</div>
- 通配符选择器:使用“*”定义,选取所有的标签。不过这种选择器通常在特殊情况下使用,因为它会选中页面的所有内容。例如:
* {color: red;
}
2. 复合选择器
- 后代选择器:又叫包含选择器,用于选择某个父元素中的某个子元素。元素1和元素2之间使用空格分割,元素1是父级,元素2是子级,只会选择元素2,而不影响元素1。这种选择器非常灵活,可以是任意基础选择器的组合。例如:
ol li {color: red;
}
- 子选择器:和后代选择器类似,但只能选择子标签,使用大于号“>”分割。它只会选择亲儿子元素,不选孙子元素。例如:
.two > a {color: red;
}
- 并集选择器:用于选择多组标签(集体声明),通过逗号“,”分割多个元素,表示同时选中这些元素。任何基础选择器都可以使用并集选择器,建议竖着写,每个选择器占一行,最后一个选择器不能加逗号。例如:
div, h3 {color: red;
}
- 伪类选择器
- 链接伪类选择器:用于选择不同状态的链接,如“a:link”选择未被访问过的链接,“a:visited”选择已经被访问过的链接,“a:hover”选择鼠标指针悬停上的链接,“a:active”选择活动链接(鼠标按下了但是未弹起)。在书写时要按照“LVHA”的顺序,否则可能会导致某些样式失效。在实际开发中,主要给链接做一个样式,然后给“a:hover”做一个样式即可,“link”、“visited”、“active”用的相对较少。例如:
a:link {color: black;/* 去掉a标签的下划线 */text - decoration: none;
}a:visited {color: green;
}a:hover {color: red;
}a:active {color: blue;
}
- **:focus伪类选择器**:选取获取焦点的input表单元素。例如:
.three > input:focus {color: red;
}
六、常用元素属性
(一)字体属性
- 字体设置:字体名称可以使用中文,但不建议,因为可能会存在兼容性问题。多个字体之间使用逗号分隔,从左到右查找字体,如果都找不到,会使用默认字体。如果字体名有空格,需要使用引号包裹。例如:
body {font - family: '微软雅黑', 'Microsoft YaHei';
}
- 字体大小:不同浏览器的默认字号不一样,所以最好给一个明确的值,单位通常为“px”。可以给“body”标签设置一个全局的字体大小,同时标题标签可能需要单独指定大小。例如:
p {font - size: 20px;
}
- 字体粗细:可以使用数字表示粗细,“700 == bold”,“400 == normal”,取值范围是100 - 900。例如:
p {font - weight: bold;font - weight: 700;
}
- 文字样式:虽然很少把某个文字变倾斜,但经常需要把“em”、“i”标签改成不倾斜。例如:
.font - style em {font - style: normal;
}
(二)文本属性
- 文本颜色:可以使用预定义的颜色值(直接是单词)、十六进制形式或者RGB方式来设置文本颜色。例如:
color: red;
color: #ff0000;
color: rgb(255, 0, 0);
- 文本对齐:用于控制文字水平方向的对齐,也能控制图片等元素的水平对齐方式,取值有“center”(居中对齐)、“left”(左对齐)、“right”(右对齐)。例如:
.text - align.three {text - align: center;
}
- 文本装饰:常用取值有“underline”(下划线,常用于链接)、“none”(啥都没有,可用于去掉a标签的下划线)、“overline”(上划线,不常用)、“line - through”(删除线,不常用)。例如:
.text - decorate.one {text - decoration: none;
}
- 文本缩进:控制段落的首行缩进(其他行不影响),单位可以使用“px”或者“em”,使用“em”作为单位更好,1个“em”就是当前元素的文字大小。缩进可以是负的,表示往左缩进,但可能会导致文字冒出去。例如:
.text - indent.one {text - indent: 2em;
}
- 行高:行高指的是上下文本行之间的基线距离,它等于上边距 + 下边距 + 字体大小。行高也可以取“normal”等值,这个值取决于浏览器的实现。当行高等于元素高度时,可以实现文字的垂直居中对齐。例如:
.line - height.two {height: 100px;line - height: 100px;
}
(三)背景属性
- 背景颜色:默认是“transparent”(透明)的,可以通过设置颜色的方式修改。例如:
body {background - color: #f3f3f3;
}
- 背景图片:比“img”标签更方便控制位置(图片在盒子中的位置)。在设置背景图片时,要注意“url”不要遗漏,“url”可以是绝对路径,也可以是相对路径,并且可以加引号,也可以不加。例如:
.bgi.one {background - image: url(rose.jpg);height: 300px;
}
- 背景平铺:重要取值有“repeat”(平铺)、“no - repeat”(不平铺)、“repeat - x”(水平平铺)、“repeat - y”(垂直平铺),默认是“repeat”。背景颜色和背景图片可以同时存在,背景图片在背景颜色的上方。例如:
.bgr.one {background - image: url(rose.jpg);height: 300px;background - repeat: no - repeat;
}
- 背景位置:可以通过方位名词(如“top”、“left”、“right”、“bottom”)、精确单位(坐标或者百分比,以左上角为原点)或者混合单位(同时包含方位名词和精确单位)来修改图片的位置。例如:
.bg p.one {background - image: url(rose.jpg);height: 500px;background - repeat: no - repeat;background - color: purple;background - position: center;
}
- 背景尺寸:可以填具体的数值(如“40px 60px”表示宽度为40px,高度为60px),也可以填百分比(按照父元素的尺寸设置),还可以使用“cover”(把背景图像扩展至足够大,以使背景图像完全覆盖背景区域,但背景图像的某些部分也许无法显示在背景定位区域中)或者“contain”(把图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域)。例如:
.bgs.one {width: 500px;height: 300px;background - image: url(rose.jpg);background - repeat: no - repeat;background - position: center;background - size: contain;
}
(四)圆角矩形
通过“border - radius”属性可以使边框带圆角效果。如果“border - radius”的值为正方形宽度的一半,则可以生成圆形;如果为矩形高度的一半,则可以生成圆角矩形。例如:
div {width: 200px;height: 200px;border: 2px solid green;border - radius: 100px;/* 或者用50%表示宽度的一半 */border - radius: 50%;
}
“border - radius”是一个复合写法,实际上可以针对四个角分别设置,例如:
border - top - left - radius: 10px;
border - top - right - radius: 20px;
border - bottom - right - radius: 30px;
border - bottom - left - radius: 40px;
七、Chrome调试工具
在开发过程中,Chrome调试工具是一个非常强大的助手。我们可以通过两种方式打开它,直接按“F12”键或者鼠标右键页面然后选择“检查元素”。
(一)标签页含义
- elements:可以查看标签结构,还能通过“ctrl + 滚轮”进行缩放,“ctrl + 0”恢复原始大小。使用左上角箭头选中元素后,在右侧可以查看当前元素的属性,包括引入的类,也可以修改选中元素的CSS属性,并且如果CSS样式写错了,会在这里有提示(黄色感叹号)。
- console:用于查看控制台信息。
- source:查看源码并进行断点调试。
- network:查看前后端交互过程。
- application:查看浏览器提供的一些扩展功能,如本地存储等。
- Performance、Memory、Security、Lighthouse:这些暂时不使用,先不深究。
八、元素的显示模式
在CSS中,HTML标签的显示模式主要有块级元素和行内元素两种。
(一)块级元素
常见的块级元素有“h1 - h6”、“p”、“div”、“ul”、“ol”、“li”等。块级元素的特点是独占一行,高度、宽度、内外边距、行高都可以控制,宽度默认是父级元素宽度的100%,并且是一个容器(盒子),里面可以放行内和块级元素。不过要注意,文字类的元素内不能使用块级元素,例如“p”标签主要用于存放文字,内部不能放“div”等块级元素。
(二)行内元素/内联元素
常见的行内元素有“a”、“strong”、“b”、“em”、“i”、“del”、“s”、“ins”、“u”、“span”等。行内元素的特点是不独占一行,一行可以显示多个;设置高度、宽度、行高无效;左右外边距有效(上下无效),内边距有效;默认宽度就是本身的内容;并且行内元素只能容纳文本和其他行内元素,不能放块级元素。同时要注意,“a”标签中不能再放“a”标签(虽然chrome不报错,但不建议这么做),“a”标签里可以放块级元素,但更建议先把“a”转换成块级元素。
我们可以使用“display”属性来改变元素的显示模式,例如“display: block”可以将元素改成块级元素(常用),“display: inline”改成行内元素(很少用),“display: inline - block”改成行内块元素。
九、盒模型
在CSS中,每一个HTML元素都可以看作是一个矩形的“盒子”,这个盒子由边框(border)、内容(content)、内边距(padding)、外边距(margin)这几个部分构成。
(一)边框
边框有基础属性,包括粗细(border - width)、样式(border - style,默认没边框,如solid为实线边框、dashed为虚线边框、dotted为点线边框)、颜色(border - color),这些属性支持简写且没有顺序要求。我们可以单独修改四个方向的任意边框,例如只给上边框设为红色,其余为蓝色:
div {width: 500px;height: 250px;border - width: 10px;border - style: solid;border - color: green;border - top: red;
}
需要注意的是,边框会撑大盒子,例如设置了10px的边框后,width和height原本是500 * 250,但最终整个盒子大小变成了520 * 270。我们可以通过box - sizing属性修改浏览器的行为,使边框不再撑大盒子,如使用通配符选择器“* {box - sizing: border - box;}”。
(二)内边距
padding用于设置内容和边框之间的距离。它有基础写法,可以给四个方向分别添加边距(padding - top、padding - bottom、padding - left、padding - right)。当添加padding后,盒子的大小会被撑大,例如:
div {height: 200px;width: 300px;padding - top: 5px;padding - left: 10px;
}
原本盒子大小为300 * 200,添加内边距后变成了310 * 205。同样,使用box - sizing: border - box属性可以使内边距不再撑大盒子。此外,padding还有复合写法,可以将多个方向的padding合并到一起,常见的有四种情况:
- padding: 5px;表示四个方向都是5px。
- padding: 5px 10px;表示上下内边距5px,左右内边距为10px。
- padding: 5px 10px 20px;表示上边距5px,左右内边距为10px,下内边距为20px。
- padding: 5px 10px 20px 30px;表示上5px,右10px,下20px,左30px(顺时针)。
(三)外边距
外边距(margin)的基础写法可以控制盒子和盒子之间的距离,能给四个方向都加上边距(margin - top、margin - bottom、margin - left、margin - right)。其复合写法规则同padding。例如:
.div1 {margin - bottom: 20px;
}.div2 {margin: 10px; /* 四个方向都设置 */margin: 10px 20px; /* 上下为10,左右20 */margin: 10px 20px 30px; /* 上10,左右20,下30 */margin: 10px 20px 30px 40px; /* 上10,右20,下30,左40 */
}
对于块级元素水平居中,可以在指定宽度(如果不指定宽度,默认和父元素一致)的前提下,将水平margin设为auto,有三种写法:margin - left: auto; margin - right: auto;、margin: auto;、margin: 0 auto;。需要注意的是,这个水平居中的方式和text - align不一样,margin: auto是给块级元素用的,text - align: center是让行内元素或者行内块元素居中的,并且对于垂直居中,不能使用“上下margin为auto”的方式。
(四)去除浏览器默认样式
浏览器会给元素加上一些默认的样式,尤其是内外边距,并且不同浏览器的默认样式存在差别。为了保证代码在不同的浏览器上都能按照统一的样式显示,我们往往会去除浏览器默认样式,使用通配符选择器“* {margin: 0; padding: 0;}”即可完成这件事情。
十、弹性布局
(一)初体验
创建一个div,内部包含三个span元素,初始状态下它们按照行内元素的特性排列。当给div加上display: flex之后,span元素有了一些变化,看起来更像是块级元素,有了高度等属性。再给div加上justify - content: space - around;后,这些span元素能够水平隔开;若把justify - content: space - around;改为justify - content: flex - end;,则三个元素会在右侧显示。
(二)flex布局基本概念
flex是flexible box的缩写,意为“弹性盒子”。任何一个html元素都可以指定为display: flex来完成弹性布局。其本质是给父盒子添加display: flex属性,从而控制子盒子的位置和排列方式。被设置为display: flex属性的元素称为flex container(弹性容器),它的所有子元素立刻成为该容器的成员,称为flex item(弹性项目)。flex item可以纵向排列,也可以横向排列,这个方向称为flex direction(主轴)。需要注意的是,当父元素设置为display: flex之后,子元素的float、clear、vertical - align都会失效。
(三)常用属性
- justify - content
- 此属性用于设置主轴上的子元素排列方式,但使用之前一定要确定好主轴是哪个方向。它有多个属性取值:
- 未指定时,默认按照从左到右的方向布局。
- 当设置为justify - content: flex - end时,元素都排列到右侧。
- 当设置为jutify - content: center时,元素居中排列。
- 当设置为justify - content: space - around时,会平分剩余空间。
- 当设置为justify - content: space - between时,先让两边元素贴近边缘,再平分剩余空间。
- 此属性用于设置主轴上的子元素排列方式,但使用之前一定要确定好主轴是哪个方向。它有多个属性取值:
- align - items
- 该属性用于设置侧轴上的元素排列方式。它的取值和justify - content差不多。其中,stretch(拉伸)是align - content的默认值,表示如果子元素没有被显式指定高度,那么就会填充满父元素的高度。我们可以使用align - items实现垂直居中,但需要注意的是,align - items只能针对单行元素来实现,如果有多行元素,就需要使用item - contents。
CSS是一个功能强大且内容丰富的样式语言,掌握它需要不断地学习和实践。无论是构建简单的个人博客还是复杂的商业网站,CSS都是我们实现精美页面布局和视觉效果不可或缺的工具。希望通过这篇博客,能让大家对CSS有更深入、更全面的理解,从而在网页开发的道路上更加得心应手。
相关文章:
CSS全解析
文章目录 CSS全解析一、CSS是什么二、基本语法规范三、引入方式(一)内部样式表(二)行内样式表(三)外部样式 四、代码风格(一)样式格式(二)样式大小写…...
一款基于 Java 的可视化 HTTP API 接口快速开发框架,干掉 CRUD,效率爆炸(带私活源码)
平常我们经常需要编写 API,但其实常常只是一些简单的增删改查,写这些代码非常枯燥无趣。 今天给大家带来的是一款基于 Java 的可视化 HTTP API 接口快速开发框架,通过 UI 界面编写接口,无需定义 Controller、Service、Dao 等 Jav…...
CSS3渐变
一、线性渐变 通过background-image: linear-gradient(...)设置线性渐变 语法: linear-gradient(direction,color1,color2, . . ) direction:渐变方向,默认从上到下,可选值: 简单选取: ① to right&…...
Emissive CEO Fabien Barati谈《消失的法老》背后的故事:XR大空间体验的创新与未来
在最近的一次播客访谈中,虚拟现实之声(Voices of VR)的主持人Kent Bye与Emissive公司的联合创始人兼CEO Fabien Barati进行了深入交流。Emissive是全球顶级的VR大空间体验制作商之一,以其沉浸式探险项目如《永恒的巴黎圣母院》和《胡夫地平线》而闻名。以下是这次访谈的核心…...
mysql设置表的某一个字段每天定时清零
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...
实例分割、语义分割和 SAM(Segment Anything Model)
实例分割、语义分割和 SAM(Segment Anything Model) 都是图像处理中的重要技术,它们的目标是通过分割图像中的不同对象或区域来帮助识别和分析图像,但它们的工作方式和适用场景各有不同。 1. 语义分割(Semantic Segme…...
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
前言 前几天在看论文,打算复现,论文用到了LSTM,故这一篇文章是小编学LSTM模型的学习笔记;LSTM感觉很复杂,但是结合代码构建神经网络,又感觉还行;本次学习的案例数据来源于GitHub,在…...
《精通开关电源设计》笔记一
重点 效率 纹波 环路响应 尺寸,从静态到动态的研究方法,假设开关电源稳态运行,以电感为中心,根据半导体器件(mos管或二极管)分段分析电路的状态,工具有电路原理和能量守恒 影响效率的主要是开关损耗,所以…...
QLoRA代码实战
QLoRA原理参考: BiliBili:4bit量化与QLoRA模型训练 zhihu:QLoRA(Quantized LoRA)详解 下载llama3-8b模型 from modelscope import snapshot_download model_dir snapshot_download(LLM-Research/Meta-Llama-3-8B-In…...
pyqt QGraphicsView 以鼠标为中心进行缩放
注意几个关键点: 1. 初始化 class CustomGraphicsView(QGraphicsView):def __init__(self, parentNone):super(CustomGraphicsView, self).__init__(parent)self.scene QGraphicsScene()self.setScene(self.scene)self.setGeometry(0, 0, 1024, 600)# 以下初始化…...
FPGA-Vivado-IP核-逻辑分析仪(ILA)
ILA IP核 背景介绍 在用FPGA做工程项目时,当Verilog代码写好,我们需要对代码里面的一些关键信号进行上板验证查看。首先,我们可以把需要查看的这些关键信号引出来,接好线通过示波器进行实时监测,但这会用到大量的线材…...
基于webComponents的纯原生前端框架
我本人的个人开发web前端前框架xui,正在开发中,业已完成50%的核心开发工作,并且在开发过程中逐渐完善. 目前框架未采用任何和市面上框架模式,没有打包过程,实现真实的开箱即用。 当然在开发过程中也会发现没有打包工…...
OpenCV-背景建模
文章目录 一、背景建模的目的二、背景建模的方法及原理三、背景建模实现四、总结 OpenCV中的背景建模是一种在计算机视觉中从视频序列中提取出静态背景的技术。以下是对OpenCV背景建模的详细解释: 一、背景建模的目的 背景建模的主要目标是将动态的前景对象与静态的…...
一个简单的摄像头应用程序6
主要改进点: 使用 ThreadPoolExecutor 管理多线程: 使用 concurrent.futures.ThreadPoolExecutor 来管理多线程,这样可以更高效地处理图像。 在 main 函数中创建一个 ThreadPoolExecutor,并在每个循环中提交图像处理任务。 减少…...
Pikachu-目录遍历
目录遍历,跟不安全文件上传下载有差不多; 访问 jarheads.php 、truman.php 都是通过 get 请求,往title 参数传参; 在后台,可以看到 jarheads.php 、truman.php所在目录: /var/www/html/vul/dir/soup 图片…...
用Python实现基于Flask的简单Web应用:从零开始构建个人博客
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 前言 在现代Web开发中,Python因其简洁、易用以及丰富的库生态系统,成为了许多开发者的首选编程语言。Flask作为一个轻量级的Python Web框架,以其简洁和灵活性深受开…...
IDEA的lombok插件不生效了?!!
记录一下,防止找不到解决方案,已经遇到好几次了 前面啰嗦的多,可以直接跳到末尾的解决方法,点击一下 问题现场情况 排查过程 确认引入的依赖正常 —》🆗 idea 是否安装了lombok插件 --》🆗 貌似没有问题…...
CSP-S 2022 T1假期计划
CSP-S 2022 T1假期计划 先思考暴力做法,题目需要找到四个不相同的景点,那我们就枚举这四个景点,判断它们之间的距离是否符合条件,条件是任意两个点之间的距离是否大于 k k k,所以我们需要求出任意两点之间的距离。常用…...
为什么要学习大模型?AI在把传统软件当早餐吃掉?
前言 上周末在推特平台上有一篇写在谷歌文档里的短文,在国外的科技/投资圈得到了非常广泛的浏览,叫做 The End of Software(软件的终结), 作者 Chris Paik 是位于纽约市的风险投资基金 Pace Capital 的创始合伙人&…...
全流程Python编程、机器学习与深度学习实践技术应用
近年来,人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态,如大型语言模型和深度学习技术的发展,展示了深度学习和机器学习技术的强大潜力,成为推动创新和提升竞争力的关键。特别是PyTorch,凭借其…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...
