【前端基础】--- HTML
个人主页 : 9ilk
专栏 : 前端基础
文章目录
- 🏠 初识HTML
- 🏠 HTML结构
- 认识HTML标签
- HTML文件基本结构
- 标签层次结构
- 快速生成代码框架
- 🏠 HTML常见标签
- 注释标签
- 标题标签 h1-h6
- 段落标签 p
- 换行标签 br
- 格式化标签
- 图片标签 img
- 超链接标签 a
- 表格标签
- 列表标签
- 表单标签
- 无语义标签
- 🏠 HTML特殊字符
🏠 初识HTML
什么是前端?
Web前端是用来给用户呈现一个个网页的,一个软件通常情况下是由于前端+后端完成的。生活中我们遇到的Web页面,PC端程序页面,移动端APP页面等就是前端页面,前端是指用户在浏览器中看到并与之交互的部分。
什么是HTML?
HTML(超文本标记语言
)是前端开发的基础,它用来定义网页的结构和内容。所谓超文本
指的是文本、声音、图片、视频、表格、链接等。
我们可以简单的使用记事本编写一个html页面:
- 编写hello world
- 保存之后修改文件后缀为html文件
注:上面只是简单展示一下html文件的效果,实际上这是不标准的。
🏠 HTML结构
认识HTML标签
<body>hello</body>
- 标签名(
body
)放到<>中 - 大部分标签成对出现,
<body>
为开始标签,</body>
为结束标签 - 少数标签只有开始标签,称为
"单标签"
- 开始标签和结束标签之间,写的是标签的内容
- 开始标签中可能会带有属性, id属性相当于给这个标签设置了一个唯一的标识符(身份证号码)
<body id="myId">hello</body>
HTML文件基本结构
<html><head><title>第一个页面</title></head><body>hello world</body>
</html>
html
标签是整个html文件的根标签(最顶层标签)head
标签中写页面的属性body
标签中写的是页面上显示的内容title
标签中写的是页面的标题
标签层次结构
标签之间存在两种关系:
- 父子关系
- 兄弟关系
<html><head><title>第一个页面</title></head><body>hello world</body>
</html>
其中:
head
和body
是html的子标签(html
就是head
和body
的父标签)title
是head
的子标签 ,head
是title
的父标签head
和body
之间是兄弟关系
在Chrome浏览器下我们可以使用开发者工具查看页面结构,具体操作是按F12或右键审查元素,开启开发者工具,然后切换到Elements
标签,就可以看到页面结构的细节
我们看到标签之间的结构关系,构成了一个DOM树
DOM
是Document Object Mode(文档对象模型)的缩写,每一个标签相当于是一个对象,程序员可以通过代码拿到这些对象,拿到之和进行增删查改。
快速生成代码框架
我们之前演示的步骤是:记事本编写内容,ctrl s保存,修改文件扩展名,但是这样开发效率是比较低下的,我们可以使用一些开发工具进行编写HTML。前端开发工具有很懂,比如VSCode,SubLime,IDEA等,其中VSCode是企业开发前端非常常用的一个工具,我们使用VSCode来演示。
VSCode中有三个比较好的插件能帮我们快速开发:
Auto Rename Tag
对于双标签,使用该插件时,修改开始标签,此时结束标签也会更着改变。
view in browser
该插件可以帮助我们在VSCode中直接打开浏览器查看我们HTML网页的效果。
Live Server
该插件可以实时地在浏览器中预览更改。你只需要保存文件,浏览器会自动刷新并显示最新的修改效果。
快速生成代码框架:在VSCode中创建完html文件之后,直接输入!,按tab键此时就能生成代码的主体框架。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body></body>
</html>
说明:
<!DOCTYPE html>
称为DTD(文档类型定义),描述当前的文件是一个HTML5的文件<html lang="en">
其中lang属性表示当前页面是一个**“英语页面”.**这里暂时不用管 (有些浏览器会根据此处的声明提示是否进行自动翻译)<meta charset="UTF-8">
描述页面的字符编码方式.没有这一行可能会导致中文乱码,编写代码的编码方式和浏览器解码方式需要一致<meta name="viewport" content="width=device-widith, initial-scale=1.0">
这是移动端适配用的。name="viewport"
其中 viewport 指的是设备的屏幕上能用来显示我们的网页的那一块区域 ;content="width=device-width, initial-scale=1.0"
在设置可视区和设备宽度等宽, 并设置初始缩放为不缩放 (这个属性对于移动端开发更重要一些)
🏠 HTML常见标签
注释标签
注释标签是不会显示在界面上的,它的目的是提高代码的可读性:
<!-- 我是注释 -->
- 注释快捷键:
ctrl + /
快捷键可以快速进行注释/取消注释 - 注释的原则:,在web页面可以按f12查看我们的html文件源码,也就是说用户可能通过一定方式拿到我们html代码,可能看到我们注释,所以注释要和代码逻辑一致,尽量使用中文,不要传递负能量。
标题标签 h1-h6
标题标签有六个,从h1-h6
,数字越大,则字体越小,也越来越细。
<h1>hello</h1>
<h2>hello</h2>
<h3>hello</h3>
<h4>hello</h4>
<h5>hello</h5>
<h6>hello</h6>
演示效果:
段落标签 p
把一段较长的文本粘贴到html中,我们会发现并没有分成段落,这是因为vscode中换行对浏览器渲染不起作用,需要使用标签来进行换行:
p
标签表示一个段落,即开始标签和结束标签之间内容表示一个段落。
<p>这是一个段落</p>
通过p标签改进上述代码,每个段落放到p标签中:
效果展示:
注意:
p
标签之间存在一个空隙。- 当前的
p
标签描述的段落,前面还没有缩进,后面可以使用CSS
来设置。 - 目前自动根据浏览器宽度来决定排版。
html
内容首尾处的换行,空格均无效
- 在
html
中文字之间输入的多个空格只相当于一个空格
换行标签 br
br
是break
的缩写,表示换行。
br
是一个单标签(不需要结束标签)。br
标签不像p
标签那样带有一个很大的空隙。<br/>
是规范写法,不建议写成<br>
。
我们可以使用br标签对之前文本进行一个换行:
注:换行标签换行之后的间隙比段落标签的间隙要小。
格式化标签
- 加粗 :
strong
标签和b
标签。 - 倾斜 :
em
标签和i
标签。 - 删除线 :
del
标签和s
标签 - 下划线 :
ins
标签和u
标签
<strong>strong 加粗</strong>
<b>b 加粗</b>
<em>倾斜</em>
<i>倾斜</i>
<del>删除线</del>
<s>删除线</s>
<ins>下划线</ins>
<u>下划线</u>
效果展示:
注意:
- 对于格式化标签,使用
CSS
也可以实现类似的效果,实际开发中以CSS
为主。 - 前面介绍的每种格式化标签中,前者和后者视觉效果上其实没有什么差别,只不过在语义上,前者起到强调作用。
图片标签 img
img
标签必须带有src
属性,表示图片的路径。
<img src="rose.jpg">
此时要把 rose.jpg 这个图片文件放到和 html 中的同级目录中。
关于目录结构:
- 相对路径 : 以
html
所在位置为基准, 找到图片的位置。同级路径使用./
+文件名表示,而上一级路径可以使用../
表示。 - 绝对路径:一个完整的磁盘路径, 或者网络路径。
img
标签的其他属性:
alt
: 替换文本,当文本不能正确显示的时候,会显示一个替换的文字。title
: 提示文本 ,鼠标放到图片上,就会有提示。width/height
: 控制高度和宽度,一般改一个就行,另外一个会等比例缩放.否则就会图片失衡。border
: 边框,参数是宽度的像素.但是一般使用CSS来设定。
注意:
- 属性可以有多个, 不能写到标签之前。
- 属性之间用空格分割, 可以是多个空格, 也可以是换行。
- 属性之间不分先后顺序。
- 属性使用键值对的格式来表示。
img标签不同属性展示
alt
属性使用示例
<!DOCTYPE html>
<html lang="en">
<head><meta charset-"utf-8">
<meta name "viewport" content-"width-device-width, initial-scale-1.0">
<title>document< /title>
</head>
<strong>hello 冰冰《/strong></br>
<img src="hts:/" alt:"图片加载失败">
图片加载失败就可以使用alt
属性进行提示,它的文案只有加载失败才会展示,我们这里故意放个错误的图片链接来展示效果 :
title
属性使用示例
<!DOCTYPE html>
<html lang="en'
<head
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head
<strong>hello Nagisa</strong></br>
<img src="./Nagisa.png" alt="图片加载失败" title="关注米汀谢谢喵">
我们需要把鼠标放到图片上才能看到title属性描述的信息:
width/height
使用示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-wwidth, initial-scale=1.0
<title>Document</title>
</head>
<strong>hello Nagisa</strong></br>
<img src="./Nagisa.png" alt="图片加载失败"title="关注米江谢谢喵
width="280px" height="180px" >
<!--px是像素 像素越大图片越大-->
width
控制宽度, height
控制高度 , 它们单位是px
,表示像素,px
越大图片越大。
border
使用示例:
<!DOCTYPE html>
<html lang="en"
<head
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<strong>hello Nagisa</strong></br>
<img src="./Nagisa.png" alt="图片加载失败"title="关注米汀谢谢喵
width="280px" height="180px" border="1px">
border
是用来给属性加边框的,属性值越大,边框越粗。
超链接标签 a
a标签主要有两个属性:
href
: 该属性必须具备,表示点击后会跳转到哪个页面。target
: 打开方式默认是_self
如果是_blank
则用新的标签页打开。
herf
属性介绍:herf表示链接,它有多种类型的取值。
- 外部链接:
href
引用其他网站的地址。
<a href="http://www.baidu.com">百度</a>
- 内部链接: 网站内部页面之间的链接,写相对路径即可。
<!-- 1.html -->
我是 1.html
<a href="2.html">点我跳转到 2.html</a>
<!-- 2.html -->
我是 2.html
<a href="1.html">点我跳转到 1.html</a>
- 空链接 : 使用
#
在href
中占位
<a href="#">空链接</a>
- 下载链接 :
href
对应的路径是一个文件,(可以使用zip
文件)
<a href="test.zip">下载文件</a>
- 网页元素链接: 可以给图片等任何元素添加链接(把元素放到
a
标签中)
此时点击图片就能跳转页面。 - 锚点链接: 可以快速定位到页面中的某个位置。使用
#
加上目标位置的id
,就可以创建指向这个位置的链接。
<a href="#one">第一集</a>
<a href="#two">第二集</a>
<a href="#three">第三集</a>
<p id="one">
第一集剧情 <br>
第一集剧情 <br>
...
</p>
<p id="two">
第二集剧情 <br>
第二集剧情 <br>
...
</p>
<p id="three">
第三集剧情 <br>
第三集剧情 <br>
...
</p>
注意:锚点链接只能在同一页面内跳转。
target
属性:该属性存在两个取值,表示链接的目标会在哪个窗口或标签页中打开,两个取值分别为_self
和_blank
。
_self
: 指定链接在当前窗口或标签页中打开,它是target
属性的默认行为。
_blank
: 指定链接在新的窗口或标签页中打开。
表格标签
基本使用
table
标签 : 表示整个表格。tr
: 表示表格的一行。td
: 表示一个单元格。th
: 表示表头单元格 会居中加粗。thead
: 表格的头部区域(注意和th
区分,范围是比th要大的)。tbody
: 表格的主体区域。
包含关系:table
包含 tr
, tr
包含 td
或者 th
。
说明:
- 表格标签有一些属性, 可以用于设置大小边框等. 但是一般使用
CSS
方式来设置。 - 这些属性都要放到
table
标签中。 align
是表格相对于周围元素的对齐方式 align=“center” (不是内部元素的对齐方式)border
表示边框 1 表示有边框(数字越大, 边框越粗), “” 表示没边框。cellpadding
: 内容距离边框的距离, 默认 1 像素。cellspacing
: 单元格之间的距离. 默认为 2 像素。width / height
: 设置尺寸。
代码演示
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><table><tr><td>姓名</td><td>性别</td><td>年龄</td></tr><tr><td>张三</td><td>男</td><td>18</td></tr><tr><td>李四</td><td>男</td><td>28</td></tr><tr><td>张红</td><td>女</td><td>男</td></tr></table>
</body>
</html>
效果展示:
我们要的表格需要有格子,这里没显示是因为浏览器默认是0像素,我们可以设置table
标签的border
属性:
<table border="2px">
效果展示:
但是这个表格有点小了,如果我们想变大,可以设置table
标签的width
和height
属性:
<table border="2px" width="500px" height="300px">
但是我们发现表格单元格之间有间隙,不是单纯的一条细直线,这是因为浏览器默认单元格之间的间隙有一定间距,值为2,我们可以更改cellspacing
:
<table border="2px" width="500px" height="300px" cellspacing="0">
还有问题就是单元格内元素位置偏左了,我们可以设置cellpadding
:
<table border="2px" width="600px" height="500px" cellspacing="0" cellpadding="70px">
如果我们想让整体表格整体放到网页中间,我们可以修改align
属性,它默认是left:
<table border="2px" width="600px" height="500px" cellspacing="0" cellpadding="70px"align="center">
注意:align控制的是表格整体而不是内容。
thead && tbody && th
thead
和th
搭配
注意:thead里面使用th的内容是会居中+加粗展示的。
tbody
:正常情况下,我们都是把表头放到thead
里,表格内容放到tbody
里。
合并单元格
- 跨行合并 :
rowspan
= “n” - 跨列合并 :
colspan
= “n”
步骤 :
- 先确定跨行还是跨列。
- 找好目标单元格(跨列合并,左侧是目标单元格;跨行合并,上方是目标单元格。
- 删除的多余的单元格。
合并行:
效果展示:
合并列:
效果展示:
列表标签
主要使用来布局的,整齐好看。
- 无序列表:
ul
li
- 有序列表:
ol
li
- 自定义列表:
dl
(总标签)dt
(小标题)dd
(具体内容)
注意:
- 元素之间是并列关系。
ul
/ol
中只能放li
不能放其他标签,dl
中只能放dt
和dd
。li
中可以放其他标签。- 列表带有自己的样式, 可以使用 CSS 来修改(例如前面的小圆点都会去掉) 。
无序列表使用示例
VSCode快捷键快速生成列表标签:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1>这是无序列表</h1><ul><li>内容1</li><li>内容2</li><li>内容3</li></ul>
</body>
</html>
效果展示:
这里每一个无序列表前面都是用一个实心圆开头,实际上可以通过更改ul
标签的type
属性来换成其他样式:
属性 | 值 | 描述 |
---|---|---|
type | disc square circle | HTML5不支持。HTML4.01已废弃。规定列表的项目符号的类型 |
type
= “square” 列表以方块开头 :
有序列表使用示例
<h1>这是有序列表</h1><ol><li>内容1</li><li>内容2</li><li>内容3</li><li>内容4</li></ol>
效果展示:
同样的,有序列表也可以更改type属性,换成英文字母计数,罗马数字计数等:
type取值 | 含义 |
---|---|
a | 表示小写英文字母 |
A | 表示大写英文字母 |
I | 表示大写罗马数字编号 |
i | 表示小写罗马数字编号 |
1 | 表示阿拉伯数字编号(默认) |
我们发现我们数字都是从1开始的,如果我想更改起始计数, 可以更改start
属性:
<ol type="i" start="2"><li>内容1</li><li>内容2</li><li>内容3</li><li>内容4</li></ol>
效果展示 :
自定义列表使用示例
<dl><dt> 自定义列表显示内容<dd>内容1</dd><dd>内容2</dd><dd>内容3</dd></dt></dl>
效果展示 :
表单标签
表单是让用户输入信息的重要途径 ,用表单标签来完成服务器的一次交互,它主要分为两个部分:
- 表单域 : 包含表单元素的区域 重点是
form
标签。 - 表单控件: 输入框, 提交按钮等, 重点是
input
标签。
form
标签
<form action="test.html">
... [form 的内容]
</form>
form
标签的action
属性定义了表单提交的目标地址,也就是服务器接收并处理提交数据的地方,如果 action
属性为空或者没有指定,表单会默认提交到当前页面的 URL,整体上form
标签描述了要把数据按照什么方式,提交到哪个页面中。
input
标签
input
标签用于创建 HTML 表单中的各种用户输入控件。它允许用户输入数据,如文本、密码、文件选择等,并将其发送到服务器。它有以下几个属性:
type
: 必须要设置该属性,该属性取值种类多 , button, checkbox,text,file,image,password,radio等。name
: 给input起了个名字,尤其是对于单选按钮,具有相同的name才能多选一。value
: input中的默认值。checked
: 默认被选中,(用于单选按钮和多选按钮)。maxlength
: 设定最大长度。
input
标签常见type
:
- 文本框
<input type="text">
测试代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><form action="">姓名<input type="text"></form>
</body>
</html>
注意:表单控件需要搭配表单域进行编写。
效果展示:
- 密码框
<input type="password">
测试代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><form action="">姓名<input type="text"><br>密码<input type="password"></form>
</body>
</html>
效果展示:
- 单选框
<form action="">姓名<input type="text"><br>密码<input type="password"><br>性别<input type="radio">男<input type="radio">女</form>
效果展示:
我们发现这里我们两个性别都能选,这显然是不符合实际的,要想实现多选一,单选框之间必须具备相同的 name 属性。
<form action="">姓名<input type="text"><br>密码<input type="password"><br>性别<input type="radio" name="gender">男<input type="radio" name="gender">女</form>
效果展示:
如果需要更细化一点,在打开页面时,选择性别之前可以设置个默认选项,此时可以设置默认选项值 checked
:
<form action="">姓名<input type="text"><br>密码<input type="password"><br>性别<input type="radio" name="gender">男<input type="radio" name="gender" checked="checked">女</form>
注意:如果将取值都设置为checked
,此时哪个默认展示取决于浏览器。
- 复选框
<form action="">姓名<input type="text"><br>密码<input type="password"><br>性别<input type="radio" name="gender">男<input type="radio" name="gender" checked="checked">女<br>爱好<input type="checkbox">吃饭<input type="checkbox">睡觉<input type="checkbox">打豆豆 </form>
效果展示:此时是能达到多选多的效果的
- 普通按钮
<form action="">姓名<input type="text"><br>密码<input type="password"><br>性别<input type="radio" name="gender">男<input type="radio" name="gender" checked="checked">女<br>爱好<input type="checkbox">吃饭<input type="checkbox">睡觉<input type="checkbox">打豆豆<br><input type="button" ></form>
效果展示:
我们可以发现这个按钮显示出来是有点单一的,我们可以更改value
属性添加一些提示信息:
<input type="button" value="这是一个普通按钮">
效果展示:
还有一个问题就是,既然是按钮,点击之后应该有些反应才对,要想有反应需要搭配JavaScript
:
<input type="button" value="我是个按钮" onclick="alert('hello')">
效果展示:
- 提交按钮
<form action="https://www.bilibili.com/"> //course提交到bilibili<input type="text" name="course"><input type="submit" ></form>
type="submit"
:这个按钮的作用是提交表单,触发浏览器将表单数据发送到action
属性指定的 URL。它会将表单中的所有数据一起发送,默认使用表单中的 method
属性(通常是 GET 或 POST)。
效果展示:URL
的?
后面就是提交的数据。
- 清空按钮
<form action="https://www.bilibili.com/"><input type="text" name="course"><input type="submit" value="提交按钮"><input type="reset" value="重置按钮"></form>
效果展示:
- 选择文件
<form action="https://www.bilibili.com/"><input type="text" name="course"><input type="submit" value="提交按钮"><input type="reset" value="重置按钮"><input type="file" value="选择文件按钮"></form>
效果展示:点击选择文件, 会弹出对话框, 选择文件。
lable
标签
搭配input
使用 点击 label
也能选中对应的单选/复选框, 能够提升用户体验 。
<body><label for="male">男</label><input type="radio" name="sex" id="male"><label for="female">女</label><input type="radio" name="sex" id="female">
</body>
for
属性: 指定当前 label
和哪个相同 id
的 input
标签对应,(此时点击才是有用的)
效果展示:
select
标签
该标签主要是用来设置下拉菜单的。
<select><option value="">请选择年份</option><option value="">2004</option><option value="">2005</option><option value="">2006</option><option value="">2007</option></select>
注意:第一个option是默认先展示的。 比如下面先展示“请选择年份”
option
中定义selected="selected"
表示默认选中
<select><option value="">请选择年份</option><option value="" selected="selected">2004</option><option value="">2005</option><option value="">2006</option><option value="">2007</option></select>
效果展示:
textarea
标签
该标签用于创建一个多行的文本输入区域,通常用于让用户输入较长的文本,比如评论、描述、留言等。
<body><label for="male">男</label><input type="radio" name="sex" id="male"><label for="female">女</label><input type="radio" name="sex" id="female"><br><select><option value="">请选择年份</option><option value="" selected="selected">2004</option><option value="">2005</option><option value="">2006</option><option value="">2007</option></select><br><textarea rows="10" cols="30">个人介绍</textarea>
</body>
效果展示:
小细节:
无语义标签
div
标签, division的缩写, 含义是分割。span
标签, 含义是跨度。
它们相当于是两个盒子,用于网页布局。
div
是独占一行的, 是一个大盒子。span
不独占一行, 是一个小盒子。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div><div><span>吃饭</span><span>睡觉</span><span>打豆豆</span></div><div>吃饭</div><div>睡觉</div><div>打豆豆</div></div>
</body>
</html>
效果展示:
我们可以看到span
标签的内容是没有独占一行的,而div
标签里的内容整体是独占一行的。
🏠 HTML特殊字符
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><body><p>我准备开始编写内容 开始编写内容</p></body>
</body>
</html>
效果展示 :
我们发现中间的多个空格并不能展示出来,我们之前也讲过了,空格在HTML中属于特殊字符,是不能直接表示的,像这样的特殊字符还有:
- 空格:
  ;
- 小于号 :
< ;
- 大于号:
> ;
- 按位与:
& ;
其中html
标签就是用 < > 表示的,因此内容里如果存在 < > , 就会发生混淆,所以文本中我们常用<
和>
来表示<>。具体的特殊字符还有很多,我们可以自行查找:HTML特殊字符编码对照表
完。
相关文章:
【前端基础】--- HTML
个人主页 : 9ilk 专栏 : 前端基础 文章目录 🏠 初识HTML🏠 HTML结构认识HTML标签HTML文件基本结构标签层次结构快速生成代码框架 🏠 HTML常见标签注释标签标题标签 h1-h6段落标签 p换行标签 br格式化标签图片标签 img超链接标签…...
各证券公司QMT的本地VSCode开发环境配置指南
各证券公司QMT变种的本地开发环境配置指南 各大证券公司的量化交易平台(如兴业证券的SMT-Q)基本都是基于QMT开发的变种系统,它们的底层架构相似,但在接口和功能上可能有所差异。下面介绍如何使用本地Python、Anaconda和VSCode搭建…...
注意力机制的改进
Transformer架构中的注意力机制优化是提升模型效率和扩展处理长序列能力的关键。以下从多个维度详细解析注意力机制的优化方法: arXIv论文链接 1. 稀疏注意力(Sparse Attention) 通过限制每个位置仅关注特定区域,减少计算量&am…...
Golang|select
文章目录 多路监听超时控制 多路监听 如果selcet外面没有for循环,则只会监听一次,要实现一直监听的话要加for循环但是如果要设置退出条件的话,break语句只会退出这个select而不会退出for循环 select也可以有default,用于不用等cha…...
网络安全与信息安全的区别及共通
在数字化时代,网络安全与信息安全已成为保障个人、企业乃至国家正常运转的重要防线。尽管二者紧密相关且常被混为一谈,但实则存在显著差异。当然,它们也有一些相同点,比如都以保障数字环境下的安全为核心目标,均需要通…...
【刷题2025】知识点梳理
1.常用操作 二进制异或 ans = a ^ b 向上取整 math.ceil(a/b) 向下取整 math.floor(a/b) 每次取最低字节:一个字节八位 while a > 0:aSum += a & 0xff # 累加最低字节的大小a >>= 8 # 一个字节八位, a右移八位, 将最低字节移除 正则匹配 # 编译正则表达式…...
# 从零开发小红书风格Flutter应用:图片上传功能实现踩坑记录
从零开发小红书风格Flutter应用:图片上传功能实现踩坑记录 作为第一次开发完整Flutter应用的经历,我在实现类似小红书的图片上传功能时遇到了不少挑战。本文将完整记录整个开发过程,包括技术选型、实现细节和遇到的问题。 技术栈选择 前端…...
Android studio配置Flutter遇到的问题总结
1、Android studio 安装cmdline-tools后 ,cmd里运行flutter doctor,依旧报错 如何处理: 先执行: flutter config --android-sdk "E:\sdk\Sdk(SDK路径)" 再执行:flutter doctor --android-licen…...
__progname宏的用途(摘自DeepSeek)
__progname 宏解析 __progname 是一个在许多 Unix-like 系统中用于获取当前程序名称的宏或全局变量,主要用于错误报告、日志记录等场景。 基本定义 __progname 通常定义在标准库或系统头文件中 使用方法 基本用法 #include <stdio.h> #include <stdl…...
AI agents系列之智能体框架介绍
1. 引言 智能体AI Agents框架通过赋予自主系统动态感知、推理和行动的能力,彻底改变了AI领域。本节将探讨智能体框架的核心概念,并重点介绍为什么开源解决方案对现代AI开发的创新和可扩展性至关重要。 1.1 什么是智能体框架? 智能体框架代…...
(2025-04-12)向老主机箱中安装新买的显卡及固态硬盘
目录 1 引言2 显卡及其驱动的安装3 固态硬盘的安装及C盘扩容3.1 固态硬盘正确连接到主板上后,操作系统上面仍然不显示对应盘符怎么办?3.2 如何对C盘扩容?3.3 新问题:原有D盘程序不能运行 4 总结 1 引言 今天安装昨天买的新固态硬…...
从 Spring Boot 到 Django —— 后端开发技术类比学习
从 Spring Boot 到 Django —— 后端开发技术类比学习 引言(从javaweb到pythonweb) Django,一个成熟而简洁的 Web 框架时,我们在学习这个框架的过程中不仅可以体验 Python 的便捷生态,更能发现 Django 与 Spring Boo…...
外接键盘与笔记本命令键键位不同解决方案(MacOS)
文章目录 修改键位第一步:打开设置第二步:进入键盘快捷键第三步:修改修饰键设置第四步:调整键位第五步:保存设置tips ikbc c87键盘win键盘没反应的解决亲测的方法这是百度的答案标题常规组合键尝试:型号差…...
测试基础笔记第四天(html)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 html介绍1. 介绍2.骨架标签3.常用标签标题标签段落标签超链接标签图片标签换行和空格标签布局标签input标签(变形金刚)form标签列表标签 htm…...
爱普生SG2520VGN差分晶振5G基站的时钟解决方案
在 5G 通信时代,数据流量呈爆发式增长,5G 基站作为信号的核心中转枢纽,承载着前所未有的数据传输与处理重任。从海量的物联网设备连接,到高速移动用户的数据交互,每一个环节都对基站的性能提出了严苛要求。而精准稳定的…...
广汽滴滴Robotaxi首次亮相,中国自动驾驶加速领跑新赛道
作者 |张马也 编辑 |德新 4月12日,在广汽科技日上,广汽与滴滴合作的前装量产Robotaxi首次正式亮相。 这款车基于广汽埃安的纯电平台打造,搭载了滴滴自动驾驶的全套软硬件方案。滴滴自动驾驶全新一代的硬件平台, 包含激光雷达、…...
从拥堵到畅行,智慧城市如何实现交通魔法?
实时交通监控与数据分析 在智慧城市的建设中,实时交通监控是基础。它依赖于广泛部署的传感器网络,如摄像头、雷达、地磁感应器等,用于收集道路交通信息。这些设备将数据传输至中央管理系统,利用大数据处理技术进行分析࿰…...
边缘计算场景下的模型轻量化:TensorRT部署YOLOv7的端到端优化指南
一、边缘计算场景下的技术挑战与优化路径 在边缘设备(如Jetson系列)部署YOLOv7需兼顾模型精度、推理速度与功耗限制三重约束。TensorRT作为NVIDIA官方推理加速库,通过算子融合、量化压缩和内存复用等优化技术,可将模型推理速度提…...
flutter json解析增强
依赖:xxf_json 反序列化兼容特征一览表 类型\是否兼容 int double num string bool int yes yes yes yes yes double yes yes yes yes yes num yes yes yes yes yes string yes yes yes yes yes bool yes yes yes yes yes 专业词语 .g…...
职坐标解码互联网行业转型发展新动能
当前,互联网行业正以前所未有的速度重塑全球产业格局。工信部最新数据显示,我国互联网企业营收连续三年保持双位数增长,其中百强企业在人工智能、物联网等领域的投入强度同比提升40%,展现出强劲的技术引领力。与此同时,…...
【软考-架构】13.4、质量属性-架构评估
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 质量属性软件架构评估✨质量属性质量属性场景敏感点&权衡点三种常用的评估方式基于场景的架构分析方式SAAM✨架构权衡分析法ATAM成本效益收益法CBAM 考试真题其他评估…...
Gitlab SSH Jenkins Pipeline Supervisor部署
Gitlab SSH Jenkins Pipeline方式部署 准备搞一搞简单部署SpringBoot项目的一种方式,通过Gitlabssh Jenkins Pipeline的方式,简单学习下。 环境准备 本地域名ip地址安装软件作用server01192.168.110.110Gitlab代码托管server02192.168.110.111Jenkins…...
Python Pandas实现导出两个Excel数据集的分组记录数分析
编写Python Pandas代码实现从一个Excel文件中的一个Sheet中的表格里取两个维度字段,根据这两个维度字段的数据分组统计,计算记录数的分组总计值,得到一个包含两个维度字段和记录数字段的分组总计值字段的dataframe,再从另一个Exce…...
维港首秀!沃飞长空AE200亮相香港特别行政区
4月13日-16日,第三届香港国际创科展在香港会议展览中心盛大举办。 作为国内领先、国际一流的eVTOL主机厂,沃飞长空携旗下AE200批产构型登陆国际舞台,以前瞻性的创新技术与商业化应用潜力,吸引了来自全球17个国家及地区的行业领袖…...
PyTorch 根据官网命令行无法安装 GPU 版本 解决办法
最近遇到一个问题,PyTorch 官网给出了 GPU 版本的安装命令,但安装成功后查看版本,仍然是 torch 2.6.0cpu 1. 清理现有 PyTorch 安装 经过探索发现,需要同时卸载 conda 和 pip 安装的 torch。 conda remove pytorch torchvision …...
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB测试 #USB HOST #USB 鼠标
1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试——USB…...
Java基础-超全总结
1.Java中的基本数据类型 Java中有四类八种基本的数据类型,四类数据类型包括整型、浮点型、字符型、布尔型。 整型包括:byte、short、int和long浮点型包括:float和double字符型是char布尔型是boolean。 2.Java中的包装类型和基本类型的区别…...
区块链技术在数据隐私保护中的应用:从去中心化到零知识证明
区块链技术在数据隐私保护中的应用:从去中心化到零知识证明 在数字化时代,数据隐私已成为全球关注的焦点。无论是个人身份信息、医疗数据还是企业的敏感业务数据,都面临着泄露、篡改和滥用的风险。传统的安全方案依赖中心化服务器进行加密和…...
【大模型实战篇】--阿里云百炼搭建MCP Agent
MCP协议(Model Communication Protocol,模型通信协议)是大语言模型(LLM)与外部系统或其他模型交互时的一种标准化通信框架,旨在提升交互效率、安全性和可扩展性。 目录 1.阿里云百炼--MCP 1.1.MCP 服务接…...
Android ExifInterface rotationDegrees图旋转角度,Kotlin
Android ExifInterface rotationDegrees图旋转角度,Kotlin import android.media.ThumbnailUtils import android.os.Bundle import android.util.Log import android.util.Size import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity …...
linux 内核 ida机制分析
在描述ida之前,需要读者对linux 内核的radix-tree有一定的了解。关于radix-tree(基数树)的描述,作者在之前有专门的文章对其进行描述,这里不再赘述。 IDA是什么?内核文档中解释如下: /*** IDA description** The IDA is an ID allocator which does not provide the ab…...
linux-定时任务清理buffer、cache
在清理 buffer 和 cache 之前,调用 sync 命令是一个好习惯。sync 会将文件系统缓冲区中的数据强制写入磁盘,确保数据的一致性,避免数据丢失的风险。以下是改进后的脚本,增加了多个 sync 语句: 1、脚本内容:…...
Linux常用命令整理
Linux 系统提供了大量常用命令行工具,涵盖文件操作、权限管理、网络诊断、软件安装、系统监控、脚本编程等各个方面。下面按照不同功能类别,整理常用的 Linux 命令及其中文说明和使用示例。 文件与目录操作 ● ls:列出目录内容,用于显示指定目录下的文件和子目录。常用参数…...
Python爬虫第14节-如何爬取Ajax的数据
目录 前言 一、什么是Ajax 1.1 具体举例 1.2 基本原理 二、Ajax的分析 2.1 查看请求 2.2 过滤请求 三、解析提取Ajax 结果 3.1 分析请求 3.2 分析响应 四、Ajax抓取实战 前言 咱们在使用requests抓取网页的时候,常常会发现,得到的结果和在浏览…...
mac上面使用zip命令压缩一劳永逸
问题 需要将当前目录的文件和目录(包含隐藏目录)都要压缩近一个zip包,但同时部分目录我不想压缩进去例如:.idea这个种idea的配置目录就不想压缩进zip包。 命令 zip -r flask-dev.zip . -x "*.idea*"-r:递归目录.:当前…...
错误地使用了 app.use() 来注册全局组件
我是import globalComponent from "/components"; /* eslint-disable */ // ts-nocheck // Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 export {}; /* prettier-ignore */ declare module vue { export interface…...
Python Django基于协同过滤算法的招聘信息推荐系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...
鹰角:EMR Serverless Spark 在《明日方舟》游戏业务的应用
作者:鹰角网络高级大数据研发 茅旭辉 背景介绍 鹰角网络是一家年轻且富有创新的游戏公司,致力于开发充满挑战性和艺术价值的游戏产品。公司目前涵盖了游戏开发、运营和发行的全生命周期业务。随着业务的扩展,鹰角网络从单一爆款游戏发展到多…...
C语言学习之两个数值交换的算法
前言:本篇文章仅仅是作为作者复习使用 在C语言中,交换两个两个变量的数值是很常见的应用。在学习到指针的时候,我们已经掌握了几种交换的算法了。今天我来做一个小汇总 1创建第三个变量 缺点:需要创造第三个变量 2加减交换 缺点…...
CExercise_13_1排序算法_2归并排序
题目:CExercise_ 请手动实现归并排序算法: void merge_sort(int arr[], int len) 如果学有余力,不妨尝试一下多种临时数组的方式: 1.局部变量数组 2.全局变量数组 3.堆数组 关键点 分析: : 代码 代码块解决…...
富斯i6遥控器,无法切换通道解决办法
开机后长按【OK】键,进入设置 按【DOWN】选择【setup】 点击【ok】进入设置 再点击【OK】进入Reverse 将2设置为下,长按【cancel】保存,返回到设置 进入【Aux.channels】 将第二行【Source】设置为【Source SwC】,长按【CANCEL】保存并返回。…...
Maven 编译指定模版
背景 基于SpringCloud 做的微服务项目,很多都是依赖公共模块下的包,并且多模板都是在一个项目下的。 问题 每次打包都很编译整个项目下的所有模块。这样太耗时间了,把流水线的时间拖的太长了。 解决方案 在maven打包时,我们选…...
solr安装及ik中文分词器配置
提示:solr9.x版本需要jdk17,solr8.x版本需要jdk8 1、Solr 简介 Solr 是Apache 下的一个顶级开源项目,采用 Java 开发,它是基于 Lucene 的全文搜索服务器。Solr 提供了比 Lucene 更为丰富的查询语句,同时实现了可配置、…...
详解LeetCode中用字符串实现整数相加,字符串转整数及其溢出处理详解
目录 题目背景 代码整体逻辑 变量初始化 逐位相加过程 处理最后进位 结果反转 示例演示 总结 在LeetCode中,有一道经典的算法题是实现两个字符串形式的非负整数相加,今天我们就来深入分析一段用C实现该功能的代码,探究其背后的逻辑与…...
vue学习笔记06
学习的课程地址:老杜Vue视频教程,Vue2,Vue3实战精讲,一套通关vue_哔哩哔哩_bilibili 1、vue程序初体验 2、vue核心技术(基础) 3、Vue组件化 前面参见: vue学习笔记01 vue学习笔记02 vue学习笔记03 vue学习笔记…...
如何查看自己抖音的IP属地?详细教程及如何修改
在当今互联网时代,IP属地信息已成为各大社交平台(如抖音、微博、快手等)展示用户真实网络位置的重要功能。以下是关于如何查看抖音IP属地的详细教程及常见问题解答,帮助您快速了解相关信息: 一、如何查看抖音账号的IP属…...
熟悉Linux下的编程
可能 目录 熟悉Linux下Python编程的含义及与非Linux环境编程的区别 一、核心含义解析 二、与非Linux环境的关键区别 三、典型应用场景对比 四、能力培养建议 openfoem的下载之路: 方法一:使用cd命令 方法二:使用快捷方式 方法三&am…...
Uniapp:获取当前定位坐标
目录 一、出现场景二、具体使用 一、出现场景 在项目的开发中,会出现打卡、定位当前位置的功能,那我们如何获取当前位置呢?这就需要使用getLocation来获取当前位置坐标 二、具体使用 uni.getLocation({type: wgs84, // 返回可以用于uni.op…...
GitHub实用手册
文章目录 一、GitHub 的定义二、GitHub 的主要功能三、GitHub 的优势四、GitHub 的使用相关工具GitSourcetreeGithub-Desktop 一、GitHub 的定义 GitHub 是一个基于 Git 的分布式版本控制系统,它允许开发者在本地和远程仓库中管理代码版本,支持多人协作…...
【从零实现高并发内存池】Central Cache从理解设计到全面实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...