CSS零基础快速入门(详细教程)

news2024/11/15 20:35:53

1,CSS概述

CSS是层叠样式表,由Cascading Style Sheets简称而来。

CSS的功能为:能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,并且能够做到页面的样式和结构分离。

CSS的作用效果跟我们日常使用的化妆术是一样的,化妆术能使人看起来更好看,而CSS能够美化页面,从而使页面变得更加好看。

CSS使用前后的对比效果就如下面的化妆前后的对比:


2,CSS语法规则

CSS语法规则可归纳为:选择器 + 若干属性声明

  • 选择器,决定针对谁进行修改
  • 属性声明,决定对其进行何种修改
  • CSS语法规则示意图如下:

image-20230509225104937


3,CSS引入方式

CSS引入方式有3种,分别为内部样式,内联样式和外部样式。

1,内部样式

内部样式:使用<style> 标签,直接将CSS写到该标签内,从而实现嵌入到Html文件中的作用。

<style>
    p {
        font-size: 28px;
        color: red;
    }
</style>
  • 理论上,上述<style> 标签里面的CSS能够放到HTML的任何位置,但是一般都是放到<head>标签内。
  • 内部样式的优点是能够使样式和页面结构分离,而缺点是分离的不够彻底,尤其是在CSS内容多的时候。

2,内联样式

内联样式:使用style属性,针对指定的元素进行设置样式,样式直接写属性键值对,不需要写选择器,而该样式只对当前元素生效。

<body>
    <p style="color: blue;">hello world!</p>
</body>
  • 内联样式方式只适合于写简单的样式,而不能写过于复杂的样式,并且只针对某个标签生效。

  • 内联样式方式的优先级较高,当同一部分使用多种方式进行引入时,内联样式会覆盖其他的样式。

    image-20230509232950986

3,外部样式

外部样式:把CSS代码单独作为一个.css文件,然后再通过link属性将该css文件引入到对应的html文件中。

image-20230509235533089

  • 外部样式的主要步骤分为两步,分别为创建个对应的css文件 和 使用<link>标签引入css文件。
  • 外部样式是实际开发中最常用的引入css方式,该方式使样式和结构彻底分离,但受到浏览器缓存的影响,修改后不一定立马生效。

小知识:缓存

缓存:就是数据交换的缓冲区(称作Cache),是存贮数据(使用频繁的数据)的临时地方。当用户查询数据,首先在缓存中寻找,如果找到了则直接执行。如果找不到,则去数据库中查找。

缓存的本质就是用空间换时间,牺牲数据的实时性,以服务器内存中的数据暂时代替从数据库读取最新的数据,减少数据库IO,减轻服务器压力,减少网络延迟,加快页面打开速度。

这是计算机中一种常见的提升性能的技术手段。

网页依赖的资源(图片/CSS/JS等)通常是从服务器上获取的,如果频繁访问该网站,那么这些外部资源就没必要反复从服务器获取,就可以使用缓存将这些网页依赖的资源先存起来(也就是将其存在本地磁盘上),等下次访问时直接从本地磁盘上获取该资源,从而提高访问的效率。

可以通过 ctrl + F5 强制刷新页面,强制浏览器重新获取 css 文件。


4,CSS选择器

1,基础选择器

基础选择器是由单个选择器构成的,主要有以下4种基础选择器,分别为标签选择器,类选择器,id选择器和通配符选择器。

1.1,标签选择器

标签选择器: 在{ 前面写标签名,此时就表示会选中当前页面中的所有的指定标签。

标签选择器的特点为:能够快速地将同一类型的标签都选择出来,但是不能进行差异化选择。

image-20230510221111532

1.2,类选择器

类选择器: 在{ 前面写类名,类名用.开头,类名不能使用纯数字,中文以及标签名来进行命名,若类名过长,可以使用-分割。

当前html页面的标签使用class属性来进行调用,一个类可以被多个标签使用,而一个标签也可以使用多个类,类名之间使用空格分割。

类选择器的特点为:不仅能够差异化表示不同的标签,还可以让多个标签使用同一个类选择器,从而实现代码更好复用。

image-20230510223329291

1.3,id选择器

id选择器: 在{ 前面写id,id用#开头,id是标签的唯一身份标识,不能被多个标签使用,id选择器的值和html中某个标签的id值相同。

image-20230510225057848

1.4,通配符选择器

通配符选择器:在{ 前面写*,使用* 通配符定义,选取当前html页面所有的标签,不需要被页面结构的调用。

image-20230510225528188


2,复合选择器

复合选择器是由多种基础选择器搭配使用的,主要由以下4种复合选择器,分别为后代选择器,子选择器,并集选择器和伪类选择器。

2.1,后代选择器

后代选择器:也叫包含选择器,选择某个父元素的某个子元素。

image-20230510231423662

  • 上述的后代选择器的含义是:先将当前页面中所有的ol标签找到,然后在这些ol标签内找所有的li标签。
  • 注意,只要是ol标签内的后代li标签就行,也就是包含子元素,孙子元素,重孙子元素…,不一定非得是子元素。

2.2,子选择器

子选择器:与后代选择器相类似,但是只能选择子元素标签,不可以选择孙子元素标签,元素之间使用>进行分割。

image-20230511000503444

2.3,并集选择器

并集选择器:集体声明,用于选择多组标签,标签之间使用分隔,但最后一个标签后不需使用,表示同时选中多个标签。

并集选择器建议竖着写,每个选择器占一行,能够提高代码的可读性,便于程序员后续地操作。

image-20230510235329651

2.4,伪类选择器

伪类选择器:复合选择器的特殊用法,表示选中某个标签元素的某个特定状态。

伪类选择器主要讲以下4类伪类选择器,分别为:

  • a:link 选择未被访问过的链接
  • a:visited 选择已经被访问过的链接
  • :hover 选择鼠标指针悬停时的状态
  • :active 选择鼠标指针按下时的状态(鼠标按下了但是未弹起)

小知识:如何让一个已经被访问过的链接恢复成未访问的状态?

清空浏览器历史记录即可,使用快捷键: ctrl + shift + delete。


5,CSS常用属性

1,字体属性

1.1,设置字体家族

设置字体家族:使用font-family 来确定当前文本内容使用何种字体来显示。

使用font-family 指定的字体,需要求这些字体在当前系统上已经安装了,如果你指定的字体在当前系统上未安装,则不能正确显示。

如果遇到这种情况,该怎么处理呢?

这种情况一般解决方式为:可以通过浏览器请求对应的服务器,从而获取到指定字体文件,进而就能解决上述字体无法正确显示的情况。

image-20230512201639199

  • 字体名称可以使用中文,但是不建议使用,建议使用英文;如果字体名中有空格,使用引号包裹字体名。
  • font-family 内可以写多种字体,字体之间使用,分隔,使用规则:从左往右依次在系统上查找指定的字体,若指定的字体都找不到,使用默认字体。
  • 系统上会自带一些常见的字体,如微软雅黑,宋体,黑体,华文行楷… 一般建议使用这些常见的字体,避免出现兼容性问题。

1.2,设置字体大小

设置字体大小:使用font-size 来确定当前文本内容字体的大小,单位为px

使用font-size 确定当前文本内容字体的大小,实际上设置的是字体中字符框的高度,实际的字符字型可能会比字符框高或矮。

浏览器中的每个文字,都可以近似为一个方框。如果文本内容为阿拉伯数字,方框会比较窄,而如果是中文,方框一般为一个正方形。

不同的浏览器默认字体的大小一般不一样,最好确定一个明确值,标题标签需要单独指定字体大小,也可给body标签使用font-size

1.3,设置字体粗细

设置字体粗细:使用font-weight 来确定当前文本内容字体的粗细。

使用font-weight 来设置字体粗细有2种典型设置风格,分别为使用数字和使用单词。

font-weight 的属性值常用的有以下3种,分别为:

  • normal,字体正常粗细,与400等值。
  • bold,字体加粗,与700等值。
  • <bumber>,一个处于1到1000范围的值,值越大,文字越粗。

使用font-weight 可实现把段落文本内容字体粗细设置成标题标签类似的文字粗细,也可把标题标签设置成段落文本内容字体的粗细。

1.4,设置字体样式

设置字体样式:使用font-style 来确定当前文本内容字体使用何种样式。

使用font-style 设置当前文本字体是否倾斜,使用font-style: italic来设置倾斜样式,使用font-style: normal来取消倾斜。


2,文本属性

2.1,设置文本颜色

设置文本颜色:使用color来进行设置文本颜色。

使用color来进行设置文本颜色时,color属性值有3种写法,分别为预定义的颜色值(颜色的单词),十六进制形式,RGB方式。

小知识:计算机是如何表示颜色的?

颜色就是不同波长频率的光,在日常中看到的很多光都是混合合成的,红绿蓝三种颜色光等比例混合就形成了我们日常最常见的白光。

需要注意的是,红绿蓝这三种颜色是光的三原色,而一些人所说的三原色是红黄蓝,这是美术上的颜料三原色,等比例混合得到黑色。

计算机中表示颜色,使用一种名为RGB的典型表示方式,R表示red,G表示green,B表示blue

在前端中,给RGB各分配了一个字节,每个字节的取值范围为0~255 / 00~FF(十六进制形式)。

image-20230512213123240

注意:如果每个分量的两个十六进制数字都相同,就可以把6位十六进制数缩写为3位十六进制数,如#ff0000 可缩写成#f00

2.2,设置文本对齐

设置文本对齐:使用text-align来进行控制文本水平方向的对齐方式。

使用text-align不光可以用来进行设置文本水平方向的对齐方式,还能控制图片等元素的对齐方式。

text-align的属性值有3种,分别为:center 居中对齐,left 左对齐,right 右对齐。

2.3,设置文本装饰

设置文本装饰:使用text-decoration来进行设置文本装饰操作。

text-align的常用属性值有4种,分别为:underline 下划线,none 无修饰, overline 上划线, line-through 删除线。

text-align的属性值none 可以实现将a标签产生的下划线去掉,从而提高页面的美观性的功能。

2.4,设置文本缩进

设置文本缩进:使用text-indent来进行设置文本缩进操作。

text-indent进行设置文本缩进操作,用于控制段落的首行缩进,其他行无影响。

text-indent的属性值单位可以是px,也可以是em

  • px为单位,就相当于文本首行缩进的长度是绝对的量,这个是不随着文字的尺寸变化而改变的。
  • em为单位,就相当于文本首行缩进的长度是相对的量,这个是以文字的尺寸为基础来进行设置的,会随着文字尺寸变化而改变。
  • 推荐使用em为单位,1em就相当于一个文字的间距,而这个间距是当前文本的字体大小。

文本缩进不只是仅能往右进行缩进操作,也可以往左进行缩进操作,属性值为负的,往左缩进会导致文字就会冒出去。

2.5,设置文本行高

设置文本行高:使用line-height来进行设置文本行高操作。

文本行高是啥呢? 文本行高指的是上下文本行之间的基线距离,行高等于文字高度与行间距之和。

HTML中展示文字涉及到4个基准线,分别为:顶线,中线,基线和底线。

image-20230512220859420

注意1:行间距等于上边距和下边距之和,而上边距与下边距是相等的,行高 = 文本高度 + 上边距 + 下边距。

  • 例如,字体大小是 16px,上下边距就分别是 12px,则该文本行高为 40px 。

注意2:行高也可以设置为normal,表示这个行高为浏览器默认行高,该取决于浏览器的实现。

注意3:行高设置成与元素高度一样的值,就可以实现文字居中对齐的效果。


3,背景属性

3.1,设置背景颜色

设置背景颜色:使用background-color来进行指定背景颜色操作。

使用background-color来进行指定背景颜色时,属性值书写方式也是有3种,分别为预定义的颜色值,十六进制形式,RGB方式。

background-color属性值默认是 transparent (透明) 的,可以通过设置颜色的方式来进行修改。

3.2,设置背景图片

设置背景图片:使用background-image来进行设置背景图片操作。

使用background-image来进行设置背景图片比直接使用img标签方式更加方便控制图片在盒子中的位置。

background-image的属性值url(...)不可以遗漏,url可以是绝对路径,也可以是相对路径,并且url的路径引号可加也可不加。

当引入背景图片后,图片默认情况上是以平铺的形式展示给我们。

3.3,设置背景平铺

设置背景平铺:使用background-repeat来进行设置背景平铺方式操作。

background-repeat属性值有4种,分别为:repeat 平铺 (默认) , no-repeat 不平铺, repeat-x 水平平铺,repeat-y 垂直平铺。

背景颜色background-color与背景图片background-image可以同时存在,背景图片在背景颜色的上方。

3.4,设置背景位置

设置背景位置:使用background-position来进行设置背景的位置操作。

background-position的参数有两个,分别为x 水平坐标 和 y 垂直坐标。

background-position的参数有以下3种书写风格:

  • 方位名词:top,left,right,bottom
  • 精确单位:坐标或者百分比(以左上角为原点)
  • 混合单位:同时包含方位名词和精确单位

background-position的参数书写注意事项:

  • 如果两个参数的值都是方位名词,则参数的前后顺序无影响。 (top left 和 left top 等效)
  • 如果只指定了一个方位名词,则第二个默认居中。(left 则意味着垂直居中,top 意味着水平居中)
  • 如果两个参数的值是精确值,则第一个值为 x坐标,第二个值为 y 坐标。 (100 200 意味着 x 为 100,y 为 200)
  • 如果只给了一个参数值,且参数是精确值,则该数值一定是 x 坐标,另一个默认垂直居中。(100 表示横坐标为 100,垂直居中)
  • 如果两个参数是混合单位,则第一个值为 x坐标,第二个值为 y 坐标。 (100 center 表示横坐标为 100,垂直居中)

3.5,设置背景尺寸

设置背景尺寸:使用background-size来进行设置背景尺寸操作。

background-position的参数取值有4个,分别为:length ,perccentage, cover, contain.

  • lengt:使用具体像素来指定背景尺寸的大小。

    • background-size:600px 400px; 
      
  • perccentage:使用百分比来指定背景尺寸的大小,百分比相对于包含元素的尺寸,并且并不需要包含元素显示设置宽高。

    • background-size:50% 50%; 
      
  • cover:扩展图片来填满元素(保持像素的长宽比),是图片宽高最短的那个边覆盖元素一边,可能导致背景图片不完整。

    • background-size:cover; 
      
  • contain:缩小图片来适应元素的尺寸(保持像素的长宽比),是图片宽高最长的那个边覆盖元素一边,可能导致背景有空白。

    • background-size:contain; 
      

注意:参数containcover的区别,当元素为矩形(不是正方形) 时,区别是比较明显的。


4,显示模式

4.1,标签的显示模式

在CSS中,HTML标签的显示模式有多种,但主要使用的标签显示模式有2种,分别为块级元素和行内元素。

块级元素:独占一行,高度,宽度,内外边距,行高都可以进行控制,宽度默认是父级元素宽度的100%,也就是和父元素一样宽。

常见的块级元素有以下几种,分别为:h1~h6pdivulolli

注意:文字类的元素内不能使用放块级元素,例如p标签主要用于存放段落文本,其内部不能存放块级元素,尤其是div块级元素。

行内元素:不独占一行,一行可以显示多个;高度,宽度,行高不可以进行控制,设置会无效;宽度默认是本身内容的宽度。

行内元素的内边距和左右外边距可以进行控制,但上下外边距不可以进行控制;并且其只能容纳文本和其他行内元素, 不能放块级元素。

常见的行内元素有以下几种,分别为:astrongbemidelsinsuspan

注意:a标签内不能再存放a标签,尽管在chrome中不报错,若想在a标签内存放a标签,因a标签内可放块级元素,故可先将其转换成块级元素。

总结:行内元素与块级元素的区别?

  • 块级元素独占一行,而行内元素不独占一行。
  • 块级元素可以设置宽度,高度和行高,而行内元素不可以设置宽度,高度和行高。
  • 块级元素4个方向都能设置内外边距,而行内元素可以设置内边距,左右外边距,垂直方向不能设置外边距。
  • 块级元素的默认宽度是和父元素等宽,而行内元素的默认宽度是和元素里面的的内容一样宽。

4.2,改变标签显示模式

改变显示模式:使用display来进行改变标签的显示模式操作。

使用display 可将div等块级元素转换成行内元素,也可以将a,span等行内元素转换成块级元素。

display的参数取值有3种,分别为:block 改成块级元素, inline 改成行内元素, inline-block改成行内块元素。

因行内元素使用时限制比较多,而块级元素使用比较正常,一般在使用时,都会先把行内元素转换成块级元素。


5,CSS盒子模型

1,盒模型

盒模型:每个HTMl元素都相当于一个矩形的盒子,而这个盒子由4部分构成,分别为外边距,边框,内边距,内容。

image-20230513084027015

2,边框 border

边框border 有以下几种基础属性,分别为border-width边框粗细, border-style 边框样式,border-color 边框颜色。

border-style 边框样式,默认情况是无边框的,可以通过该属性的设置变成有边框的,常见的属性值有以下几种,分别为:solid 实线边框,dashed 虚线边框,dotted点线边框 …

边框border 的四个方向可以分别进行设置,属性分别为:border-top 上边框,border-bottom下边框, border-left 左边框,border-right右边框。

边框border 的基础属性可以分别书写,也可以支持简写,而这个简写的属性先后顺序没有要求。

  • border-width: 10px;
    border-style: solid;
    border-color: green;
    

    等效为:

  • border: 10px solid green;
    

注意:边框在默认情况下会撑大盒子,进而可能会影响当前元素和其他元素的相对位置。

image-20230513093240355

**若不想边框撑大盒子该怎么办呢? **CSS中可通过设置box-sizing属性修改浏览器行为,若将其设置为border-box,则边框就不再撑大盒子。

image-20230513094110853

边框border 除了上述那几种基础属性外,还有一个比较常用的属性border-radius,通过border-radius可使边框带圆角效果。

border-radius属性值为lengthlength是内切圆的半径,数值越大,弧线的弧度越弧。

border-radius属性值的写法有2种,分别为基础写法和复合写法。

基础写法:使用border-top-left-radius 左上角, border-top-right-radius 右上角, border-bottom-left-radius 左下角, border-bootom-right-radius 右下角分别设置圆角效果。

复合写法:可以把多个方向的border-radius合在一起使用,写法分别为:

  • border-radius:10px;
    
    • 针对四个方向的角统一设置border-radius为10px。
  • border-radius: 10px 20px 30px 40px; 
    
    • 上述圆角方向按照顺时针排列分别设置,排列方向分别为左上方,右上方,右下方,左下方。

border-radius属性值设为正方形盒子宽度的一半就可生成圆形,当 border-radius属性值设为矩形高度的一半就可生成圆角矩形。

3,内边距 padding

内边距padding指的是内容和边框之间的距离。

在默认情况下,内容是顶着边框来放置的,可以通过使用内边距padding来控制这个距离。

内边距padding的写法有2种,分别为基础写法和复合写法。

基础写法:使用padding-toppadding-bottompadding-leftpadding-right分别给4个不同的方向设置上内边距。

复合写法:可以把多个方向的padding合在一起使用,复合写法有4种,分别为:

  • padding:5px;:表示四个方向的内边距都是5px。
  • padding:5px 10px;表示上下内边距为5px,左右内边距为10px。
  • padding:5px 10px 20px; 表示上内边距为5px,左右内边距为10px,下内边距为20px。
  • padding:5px 10px 20px 30px; 表示上内边距为5px,右内边距为10px,下内边距为20px,左内边距为30px。

注意:内边距padding的设置也会撑大盒子,从而影响盒子的真实大小。使用box-sizing: border-box属性可使其不再撑大盒子。

4,外边距 marign

外边距marign指的是盒子与盒子之间的距离。

外边距margin的写法同内边距padding一样都有2种,分别为基础写法和复合写法。

基础写法:使用marign-topmarign-bottommarign-leftmarign-right分别给4个不同的方向设置上内边距。

复合写法:可以把多个方向的padding合在一起使用,复合写法有4种,分别为:

  • marign:5px;:表示四个方向的外边距都是5px。
  • marign:5px 10px;表示上下外边距为5px,左右外边距为10px。
  • marign:5px 10px 20px; 表示上外边距为5px,左右外边距为10px,下外边距为20px。
  • marign:5px 10px 20px 30px; 表示上外边距为5px,右外边距为10px,下外边距为20px,左外边距为30px。

外边距marign的特殊用法:实现块级元素在父类元素内水平居中的效果。

  • 实现前提:指定块级元素的宽度(如果不指定,默认和父元素一致),将水平外边距marign设为auto,表示让浏览器自动调节。

  • 实现方式:marigm-leftmarign-right都设为automarign设为automarign设为0 auto

注意:该块级元素水平居中方式和text-align不一样,text-align:center是让行内元素或行内块元素水平居中,而marign:auto是让块级元素在父类元素内水平居中。


6,弹性布局

1,弹性布局

弹性布局:用来实现页面布局,也就是控制某个指定元素放在指定位置。

实现页面布局的方式有很多种,分别为:基于表格的布局方式,基于浮动的布局方式,弹性布局和网络布局这四种网页布局方式。

因弹性布局相较于其他几种布局方式,实现操作更简单,使用限制更少,功能更丰富等优点,故使用弹性布局来进行实现页面布局最好。

知识:行内元素与行内块元素不适合进行水平布局的原因?

  • 行内元素虽然在水平方向上是排列的,但因其尺寸边距等属性不可控,故其不适合进行水平布局。

  • 行内块元素虽然可以设置尺寸边距等属性,但因其默认不占一行,故其也不适合进行水平布局。

  • 行内元素和行内块元素一样,都会将源码中的换行当作成一个空格,也会对页面的元素布局产生一些不必要的影响。

弹性布局方式的本质是:给父盒子添加display:flex属性来控制子盒子的位置和排列方式。

任何一个 html 元素,都可以指定为display:flex 来完成弹性布局,flex flexible box的缩写,译为弹性盒子。

此时,弹性容器内的元素,则不再是块级元素,行内元素,而是转换成了弹性元素,遵守弹性布局规则,可以设置尺寸和边距。

image-20230513182911628

注意:当父元素设置为display: flex之后,子元素的 float,clear, vertical-align 都会失效。

2,弹性布局属性

2.1,justify-content

justify-content:设置主轴上的子元素排列方式,使用之前必须明确好主轴是哪个方向。

justify-content的属性取值有5种,分别为:flex-startflex-endcenterspace-betweenspace-around

  • 当未指定 justify-content 时,效果同将属性取值为flex-start,按照从左到右的方向布局。

    image-20230513214820613

  • 设置 justify-content: flex-end,此时元素都排列到右侧。

    image-20230513214749145

  • 设置 jutify-content: center,此时元素居中排列

  • 设置 justify-content: space-around,此时平分剩余空间

    image-20230513214918037

  • 设置 justify-content: space-between,先两边元素贴近边缘, 再平分剩余空间.

    image-20230513214936759

2.2,align-items

align-items:设置了侧轴上的元素排列方式。

align-items的属性取值有6种,分别为:stretch,flex-startflex-endcenterspace-betweenspace-around

align-items的属性取值与justify-content的属性取值差不多,效果也差不多,只是按纵轴方向排列。

align-items的属性未指定时,效果同其取值为stretch,效果为拉伸。即当子元素未被显式指定高度,其就会填充满父元素的高度。

image-20230513221759514

align-items可以实现垂直居中效果,但只能针对单行元素来实现,如果有多行元素,就需要使用item-contents

image-20230513222003554


总结

以上就是CSS的所有基础内容,希望能够对大家有帮助。如果大家有什么解决不了的问题,欢迎大家评论区留言或者私信告诉我。如果感觉对自己有用的话,可以点个赞或关注鼓励一下博主,我会越做越好的,感谢各位的支持,我们下期见!

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/547389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

这个 快速排序详解过程 我能吹一辈子!

文章目录 快速排序概念快速排序递归实现Hoare版本挖坑法前后指针法 快速排序非递归实现Hoare版本挖坑法前后指针法 快速排序的俩个优化三数取中小区间优化 快速排序概念 快速排序是公认的排序之王&#xff0c;快速排序是Hoare于1962年提出的一种二叉树结构的交换排序算法&#…

【Linux】静态库与动态库

前言 对于C/C的学习者&#xff0c;我们经常听到C/C的标准库&#xff0c;我们也经常使用它们&#xff0c;但是我们在使用的时候经常只包含一下头文件&#xff0c;然后就使用了&#xff0c;我们从来没有认真的研究过C/C的标准库&#xff0c;而且C/C的头文件中只有声明并没有声明的…

文件上传,解析漏洞编译器安全(23)文件上传为什么加空格和修改为其他符号(例如换行符)问题

apache低版本解析漏洞 这个网站目录里有两个文件&#xff0c;一个是正常的php文件&#xff0c;另一个xx.php.xxx&#xff0c;源码是php源码&#xff0c;命名的文件&#xff0c;而访问中xxx的文件依旧可以执行出php代码的结果&#xff0c;而xxx就能当php文件解析&#xff0c;这…

uvc摄像头驱动uvc设备的注册分析

uvc摄像头驱动uvc设备的注册分析 文章目录 uvc摄像头驱动uvc设备的注册分析uvc_inituvc_probeuvc_register_videouvc_register_chainsuvc_register_termsuvc_register_video uvc_ioctl_opsuvc_fops uvc_init /driver/media/usb/uvc/uvc_driver.c /** UVC 驱动结构体*/ struct…

每日学术速递5.19

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.On the Hidden Mystery of OCR in Large Multimodal Models 标题&#xff1a;论大型多模态模型中 OCR 的隐藏奥秘 作者&#xff1a;Yuliang Liu, Zhang Li, Hongliang Li, Wenwen…

计算机图形学-GAMES101-11

显式几何的表示方法 Point Cloud 使用一系列点表示物体的表面。理论上可以表达空间中任何物体。如物体扫描会得到空间中一系列点&#xff0c;但在建模时我们要提取出大量多边形的面。点云对密度要求很高&#xff0c;因此不常使用。 Polygon Mesh 使用三角形表示物体。涉及三…

备份树莓派SD卡 — 保姆级教学

在我们树莓派项目开发的过程中&#xff0c;经常遇到以下问题&#xff1a; 1.自己辛辛苦苦开发出来的项目&#xff0c;害怕内存卡损坏&#xff0c;系统被破坏掉&#xff0c;想做一个备份。 2.自己的树莓派内存卡内存不够了&#xff0c;想将原来卡上的内容放在新的大容量内存卡…

Arm微架构分析系列3——Arm的X计划

1. 引言 前文介绍了Arm公司近几年在移动处理器市场推出的Cortex-A系列处理器。Cortex-A系列处理器每年迭代&#xff0c;性能和能效不断提升&#xff0c;是一款非常成功的产品。但是&#xff0c;Arm并不满足于Cortex-A系列每年的架构小幅度升级&#xff0c;又推出了X计划&#x…

esp32CAM环境安装教程---串口驱动安装

前言 &#xff08;1&#xff09;本人安装好arduino 的ESP32环境之后&#xff0c; 发现一直下载不进去程序。一直说Cannot configure port, something went wrong. Original message: PermissionError。 &#xff08;2&#xff09;查阅了很多资料&#xff0c;用了各种办法&#…

怎么消除文法的左递归性

除文法的左递归性可以采用以下方法&#xff1a; 直接左递归转换为间接左递归消除间接左递归 举例说明&#xff1a; 直接左递归转换为间接左递归 原文法&#xff1a;A → Aα | β 转换后的文法&#xff1a;A → βA A → αA | ε 例如&#xff1a;S → Sabc | ε 转换后…

4. QT中的事件函数 --- 鼠标事件、键盘事件、定时器事件、绘图事件

1. 说明 在QT的控件或者窗口当中&#xff0c;如果对于当前鼠标或者键盘的功能需要自己定义&#xff0c;可以重写父类当中对应虚函数&#xff0c;主要包括以下几个&#xff1a; //键盘按键按下 virtual void keyPressEvent(QKeyEvent *event); //键盘按键抬起 virtual void ke…

11.1网络编程

多线程 一、基础知识概念相关API二、任务创建一个简单的本地客户端迭代服务器select系统调用并发服务器数据报三、总结四、问题一、基础知识 概念 网络编程中客户端和服务器指的是进程,而不是常提到的机器或者主机。注意三个概念:请求、响应、事务。 网络编程中客户端-服务器…

面向对象的三大特性之继承(C++)

文章目录 继承的概念和定义概念定义定义格式继承关系和访问限定符继承基类成员访问方式的变化 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员菱形继承与虚拟继承菱形继承虚拟继承 继承的总结与反思继承和组合 继承的概念和定义 概念 继…

微信小程序 nodejs+vue+uniapp付费自习室图书馆教室座位系统-

系统分为用户和管理员角色 管理员的主要功能有&#xff1a; 1.管理员输入账户登陆后台 2.个人中心&#xff1a;管理员修改密码和账户信息 3.用户管理&#xff1a;对注册的用户信息进行添加&#xff0c;删除&#xff0c;修改&#xff0c;查询 4.自习室管理&#xff1a;对系统的自…

由浅入深Netty协议设计与解析

目录 1 为什么需要协议&#xff1f;2 redis 协议举例3 http 协议举例4 自定义协议要素4.1 编解码器4.2 什么时候可以加 Sharable 1 为什么需要协议&#xff1f; TCP/IP 中消息传输基于流的方式&#xff0c;没有边界。 协议的目的就是划定消息的边界&#xff0c;制定通信双方要…

每日学术速递5.18

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Make-A-Protagonist: Generic Video Editing with An Ensemble of Experts 标题&#xff1a;Make-A-Protagonist&#xff1a;与专家合奏的通用视频编辑 作者&#xff1a;Yuyang Z…

云端一体助力体验升级和业务创新

随着音视频和AI技术的发展&#xff0c;在满足用户基础体验和需求情况下&#xff0c;更极致的用户体验和更丰富的互动玩法&#xff0c;成为各个平台打造核心竞争力的关键。LiveVideoStackCon 2022 北京站邀请到火山引擎视频云华南区业务负责人——张培垒&#xff0c;基于节跳动音…

虚幻引擎4利用粒子系统实现物体轨迹描绘

虚幻引擎4利用粒子系统实现物体轨迹描绘 目录 虚幻引擎4利用粒子系统实现物体轨迹描绘前言粒子系统利用粒子系统实现物体轨迹描绘创建粒子系统将粒子系统的产生位置绑定到运动物体上 小结 前言 由于在物体运动时&#xff0c;想要观察其总的运动轨迹&#xff0c;以便对其控制做…

Java实现天气预报功能

如果要实现类似百度天气、手机App这样的天气预报功能该如何实现&#xff1f;首先想到的是百度... 背景&#xff1a; 最近公司做了一个项目&#xff0c;天气预报的功能也做上去了&#xff0c;不仅有实时天气、未来7天预报的功能、还有气象预警的功能。 天气包括基本天气、白天夜…

【K8s】什么是helm?helm的常用指令

文章目录 一、Helm介绍1、背景2、介绍3、核心概念4、chart的基本结构5、helm官网 二、部署Helm1、安装helm客户端2、安装Tiller 三、常用指令1、仓库相关 helm repo2、chart相关3、release相关 四、入门案例1、构建第一个chart2、将chart包发布到Repository3、在 Kubernetes 中…