web前端(简洁版)

 0. 开发环境 && 安装插件

 这里我使用的是vscode开发环境

 

 

  • Auto Rename Tag是语法自动补齐
  • view-in-browser是快速在浏览器中打开
  • live server实时网页刷新 

1. HTML 文件基本结构

<html><head><title>第一个页面</title></head><body>hello world</body>
</html>
  • html 标签是整个 html 文件的 根标签 ( 最顶层标签 )
  • head 标签中写页面的 属性 .
  • body 标签中写的是页面上显示的 内容
  • title 标签中写的是页面的 标题 .

 2. 快速生成代码框架

! + 回车 

 快速复制快捷键: shift + alt + 小键盘

  • <!DOCTYPE html> 称为 DTD ( 文档类型定义 ), 描述当前的文件是一个 HTML5 的文件 .
  • <html lang="en"> 其中 lang 属性表示当前页面是一个 " 英语页面 ". 这里暂时不用管 . ( 有些浏览器会根据此处的声明提示是否进行自动翻译).
  • <meta charset="UTF- 8"> 描述页面的字符编码方式 . 没有这一行可能会导致中文乱码 .
  • <meta name="viewport" content="width=device-width, initial- scale=1.0">
    • name="viewport" 其中 viewport 指的是设备的屏幕上能用来显示我们的网页的那一块区
      .
    • content="width=device- width, initial - scale=1.0" 在设置可视区和设备宽度等宽 ,
      设置初始缩放为不缩放 . ( 这个属性对于移动端开发更重要一些 ).

3. HTML 常见标签

3.1 注释标签

<!-- 我是一个注释 -->

  • 快捷键: ctrl + /
  • 注释不会显示在界面上. 目的是提高代码的可读性.  

3.2 标题标签

 <h1>这是一个标题</h1>

 

3.3 段落标签

 <p>这是一个段落</p>

 

3.4 换行标签

<br/>

 

3.5 格式化标签 

  • 加粗 : strong 标签 和 b 标签
  • 倾斜: em 标签 和 i 标签
  • 删除线: del 标签 和 s 标签
  • 下划线: ins 标签 和 u 标签

3.6 图片标签: img  

<img src = "路径" alt = "替换文本 " title = "提示文本 " width = "像素" height = "像素" border = "像素" >

 

3.8 超链接标签: a

<a href="网址" target = "_blank">文字</a> 

  •  target不写默认是_selft, 默认是在当前页面打开

 3.8.1 外部链接

<a href="http://www.baidu.com">百度</a>

  3.8.2 内部链接

<!-- 1.html -->

我是 1.html
<a href = "2.html" > 点我跳转到 2.html </a>
<!-- 2.html -->
我是 2.html
<a href = "1.html" > 点我跳转到 1.html </a>

3.8.3 空链接

<a href = "#" > 空链接 </a>

3.8.4 下载链接

<a href="test.zip">下载文件</a>  

3.8.5 网页元素链接

<a href = "http://www.sogou.com" >
<img src = "rose.jpg" alt = "" >
</a>

 3.8.6 锚点链接

  

3.9 表格标签: table

<table>

        <tr>

                <td>

                </td>

        </tr>

</table>

  • align 是表格相对于周围元素的对齐方式. align="center" (不是内部元素的对齐方式)
  • border 表示边框. 1 表示有边框(数字越大, 边框越粗), "" 表示没边框.
  • cellpadding: 内容距离边框的距离 , 默认 1 像素
  • cellspacing: 单元格之间的距离 . 默认为 2 像素
  • width / height: 设置尺寸
     

3.9.1 合并单元格 

跨行合并 : rowspan="n"
跨列合并 : colspan="n"

 

  1. 先确定跨行还是跨列
  2. 找好目标单元格(跨列合并, 左侧是目标单元格; 跨行合并, 上方是目标单元格)
  3. 删除的多余的单元格

3.10 列表标签

无序列表 [ 重要 ] ul li , .
有序列表 [ 用的不多 ] ol li
自定义列表 [ 重要 ] dl ( 总标签 ) dt ( 小标题 ) dd ( 围绕标题来说明 )

3.11 form 标签 

<form action = "test.html" >
  ... [form 的内容 ]
</form>
  • 关于 form 需要结合 服务器 & 网络编程 来进一步理解. 后面再详细研究.

3.12 input 标签 

各种输入控件 , 单行文本框 , 按钮 , 单选框 , 复选框
button, checkbox, text, file, image, password, radio .
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><!-- 文本框 --><input type="text"><br> <!-- 密码框 --><input type="password"><br><!-- 单选框 --><input type="radio" name="sex"> 男<input type="radio" name="sex" checked="checked"> 女<!-- 注意: 单选框之间必须具备相同的 name 属性, 才能实现 多选一 效果 --><br><!-- 多选框      --><input type="checkbox">吃饭<input type="checkbox">睡觉<input type="checkbox">打游戏<br><input type="button" value="我是一个普通按钮"><!-- 注意:按钮需要和js配合使用 --><br><!-- 提交按钮 --><form action=""><input type="text" name="username"><input type="submit" value="提交"></form><br><!-- 清空 --><form action=""><input type="text" name="username"><input type="submit" value="提交"><input type="reset" value="清空"></form><br><!-- 提交文件  --><input type="file">
</body>
</html>

  • name: input 起了个名字
  • value: input 中的默认值
  • checked: 默认被选中
  • maxlength : 设定最大长度

3.13 label标签 

  •  搭配 input 使用. 点击 label 也能选中对应的单选/复选框, 能够提示用户体验
  • 比如: 点男字的时候也会勾选,点小圆点的时候也会勾选

3.14 select标签

  • option 中定义 selected="selected" 表示默认选中

 3.15 textarea 标签

  •  这个标签又叫做留言框

 3.16 无语义标签: div & span

主要用于页面布局

  •  div 独占一行的, 是一个大盒子.
  • span 不独占一行, 是一个小盒子.

4. Emmet 快捷键(常用的) 

4.1 快速输入标签

input[tab]

4.2 快速输入多个标签

div*3[tab]

4.3  标签带id

div#sex[tab]

 4.4 标签带类名

div.sex[tab]

4.5 标签带子元素

ul>li*3[tab]  

4.6  标签带兄弟元素

span+span

4.7  标签带内容

div{hello}

4.8 标签带内容(带编号) 

div{$.hello}

5. 特殊字符

6. CSS

6.1 基本语法规范

 选择器 + {一条/N条声明}

<style>p {/* 设置字体颜色 */color: red;/* 设置字体大小 */font-size: 30px;}
</style>
<p>hello</p>
  • 选择器决定针对谁修改 ( 找谁 )
  • 声明决定修改啥 . ( 干啥 )
  • 声明的属性是键值对 . 使用 ; 区分键值对 , 使用 : 区分键和值 .

 6.2 引入方式

6.2.1 内部样式表

  • 优点: 这样做能够让样式和页面结构分离
  • 缺点: 分离的还不够彻底. 尤其是 css 内容多的时候

6.2.2 行内样式表  

  • 优点: 优先级较高会覆盖其他样式
  • 缺点 : 不能写太复杂的样式 .

6.2.3 外部样式

1. 创建一个 css 文件 .
2. 使用 link 标签引入 css

  •  优点: 样式和结构彻底分离了.
  • 缺点: 受到浏览器缓存影响, 修改之后 不一定 立刻生效.

6.3 基础选择器: 标签 类 id *

作用特点
标签选择器
能选出所有相同标签
不能差异化选择
类选择器
能选出一个或多个标签
根据需求选择 , 最灵活 , 最常用
id 选择器
能选出一个标签
同一个 id 在一个 HTML 中只能出现一次
通配符选择器
选择所有标签
特殊情况下使用

  •  姓名是类选择器, 可以重复.

  • 身份证号码是 id 选择器, 是唯一

6.4 复合选择器

6.4.1 后代选择器 

  • 可以选择子类: 亲儿子 孙子等等

6.4.2 子选择器

  • 只选亲儿子, 不选孙子元素  

6.4.3 并集选择器

  •  每个选择器之前使用 逗号隔开 最后一个不用加

6.4.3 伪类选择器

链接伪类

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

force 伪类选择器 

<div class="three"><input type="text"><input type="text"><input type="text"><input type="text">
</div>
.three>input:focus {color: red;
}

6.5 小结

选择器
作用
注意事项
后代选择器
选择后代元素
可以是孙子元素
子选择器
选择子元素
只能选亲儿子 , 不能选孙子
并集选择器
选择相同样式的元素
更好的做到代码重用
链接伪类选择器
选择不同状态的链接
重点  a:hover 的写法
:focuse 伪类选择器
选择被选中的元素
重点  input:focus

6.6 常用元素属性

参考手册: CSS 参考手册

.shuxing {font-size: 16px;font-family: 宋体;font-weight: 700;/* 取消字体倾斜 */font-style: normal;/* 设置字体倾斜 */font-style: italic;color: red;/* color: #ff0000;color: rgb(255, 0, 0); */border: 10px solid green;text-align: left;/* text-decoration: none; 一般给a链接去掉下划线 */text-decoration: underline;/* 1 个 em 就是当前元素的文字大小 */text-indent: 2em;/* 注: 行高等与元素高度, 就可以实现文字居中对齐 *//* 行高 = 上下边距 + 字体大小 */line-height: 40px;/* background-color: transparent; 背景透明 */background-color: blue;background-image: url(./001.png);background-repeat: no-repeat;/* 注: 背景位置的y轴是向下的 */background-position: 20 50;background-size: contain;/* 圆角矩形 */border-radius: 10%;
}

 6.7 显示模式

6.7.1 块级元素

h1 - h6 p div ul ol li等等
  • 独占一行
  • 高度, 宽度, 内外边距, 行高都可以控制.
  • 宽度默认是父级元素宽度的 100% (和父元素一样宽)
  • 是一个容器(盒子), 里面可以放行内和块级元素

6.7.2 行内元素/内联元素

a strong b em i del s ins u span ...  
  •  不独占一行, 一行可以显示多个
  • 设置高度, 宽度, 行高无效
  • 左右外边距有效(上下无效). 内边距有效.
  • 默认宽度就是本身的内容
  • 行内元素只能容纳文本和其他行内元素, 不能放块级元素

6.7.3 行内元素和块级元素的区别

  • 块级元素独占一行 , 行内元素不独占一行
  • 块级元素可以设置宽高, 行内元素不能设置宽高 .
  • 块级元素四个方向都能设置内外边距, 行内元素垂直方向不能设置

6.7.3 改变显示模式

display: block 改成块级元素 [常用] 

display: inline 改成行内元素 [ 很少用 ]
display: inline - block 改成行内块元素

7. 盒模型 

  •  边框 border+内容 content+内边距 padding外边距 margin

7.1 边框

div {width: 500px;height: 250px;border-width: 10px;border-style: solid;border-color: green;
}
  • border: 1px solid red;  支持简写, 没有顺序要求

  • border-top/bottom/left/right 可以改四个方向的任意边框

7.1.1 取消边框撑大盒子

* {box-sizing: border-box;
}

 7.2 内边距

padding 设置 内容和边框 之间的距离
div {height: 200px;width: 300px;padding-top: 5px;padding-left: 10px; 
}

  • padding: 5px; 表示四个方向都是 5px
  • padding: 5px 10px; 表示上下内边距 5px, 左右内边距为 10px
  • padding: 5px 10px 20px; 表示上边距 5px, 左右内边距为 10px, 下内边距为 20px
  • padding: 5px 10px 20px 30px; 表示 上5px, 右10px, 下20px, 左30px (顺时针)

 7.3 外边距

控制 盒子和盒子 之间的距离
<div class="first">蛤蛤</div>
<div>呵呵</div>
div {background-color: red;width: 200px;height: 200px;
}
.first {margin-bottom: 20px;
}
  • margin: 10px; // 四个方向都设置
  • margin: 10px 20px; // 上下为 10, 左右 20
  • margin: 10px 20px 30px; // 上 10, 左右 20, 30
  • margin: 10px 20px 30px 40px; // 上 10, 20, 30, 40

7.4 块级元素水平居中

margin-left: auto; margin-right: auto;
margin: auto;
margin: 0 auto;
  • margin: auto 是给块级元素用得到.
  • text-align: center 是让行内元素或者行内块元素居中的

7.4.1 去除浏览器默认样式

* {marign: 0;padding: 0;
}

 8. 弹性布局

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./testcss.css"><style>div {width: 100%;height: 150px;background-color: red;}div>span {background-color: green;width: 100px;}</style>
</head>
<body><div><span>1</span><span>2</span><span>3</span></div>
</html>

 8.1 display:flex

  • 父级添加上了 display:flex,就是子类的行内元素 变成了 块级元素
  • 就可以更改宽高

8.2 justify-content: space-around; 

  •  此时可以看到这些 span 已经能够水平隔开

8.3 flex 布局基本概念 

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

  •  被设置为 display:flex 属性的元素, 称为 flex container
  • 它的所有子元素立刻称为了该容器的成员, 称为 flex item
  • flex item 可以纵向排列, 也可以横向排列, 称为 flex direction(主轴)
  • 注意: 当父元素设置为 display: flex 之后, 子元素的 float, clear, vertical-align 都会失效

8.4 常用属性

8.4.1 justify-content(横轴)

 8.4.2 align-items(侧轴)

9. JavaScript

9.1 JavaScript HTML CSS 之间的关系

 9.2 JavaScript 的组成

  • ECMAScript( 简称 ES ): JavaScript 语法
  • DOM : 页面文档对象模型 , 对页面中的 元素 进行操作
  • BOM : 浏览器对象模型 , 浏览器窗口 进行操作

9.3 hello world

 

9.4 JavaScript 的书写形式

  •  行内式 内嵌式 外部样式(推荐)

 9.5 输入输出 : prompt alert console.log

9.6 变量

  • JS 的变量类型是程序运行过程中才确定的(运行到 = 语句才会确定类型)
  • 随着程序运行 , 变量的类型可能会发生改变 .
  • 这一点和 C Java 这种静态类型语言 差异较大

9.7  基本数据类型

<script>// 1.number 数字类型// JS 中不区分整数和浮点数, 统一都使用 "数字类型" 来表示var a = 07; // 八进制整数, 以 0 开头var b = 0xa; // 十六进制整数, 以 0x 开头var c = 0b10;// 二进制整数, 以 0b 开头var d = 100.00; // 十进制数var max = Number.MAX_VALUE;console.log(max * 2);// 得到 Infinity->无穷大console.log(-max * 2);// 得到 -Infinity->无穷小console.log('hehe' - 10);// 得到 NaN->不是数字// 2.string 字符类型var msg = "My name is 'zhangsan'"console.log(msg.length)console.log(100 + 100);// 200console.log('100' + 100);// 100100// 3.boolean 布尔类型// boolean在参与运算的时候 真表示1 假表示0console.log(true + 1)console.log(false + 1)// 4.undefined 未定义数据类型// 如果一个变量没有被初始化过, 结果就是 undefined, 是 undefined 类型let taconsole.log(typeof(ta))// 5. null 空值类型// null 表示当前的变量是一个 "空值".var tb = null;console.log(b + 10); // 10console.log(b + "10"); // null10</script>
  • number : 数字 . 不区分整数和小数 .
  • boolean : true 真 , false .
  • string : 字符串类型 .
  • undefined : 只有唯一的值 undefined. 表示未定义的值 .
  • null : 只有唯一的值 null. 表示空值

9.8 运算符

  • <
  • >
  • <=
  • >=
  • == 比较相等(会进行隐式类型转换)
  • !=
  • === 比较相等(不会进行隐式类型转换)
  • !==

 9.9 switch

  •  在对话框中输入数字的时候,会默认输入的是字符
  • 需要使用parseInt进行转换

9.10 数组

<script>// 1.创建数组let arr = new Array()let arr1 = [12,'23',true]// 不要求同类型// 2.访问数组console.log(arr1)console.log(arr1[0])// 也是可以使用[]进行访问数组console.log(arr1[-1])// 如果超过范围,那就是undefined// 3.修改数组长度let arr2 = [9, 5, 2, 7];arr2.length = 6;// 可以通过length修改数组长度console.log(arr2);console.log(arr2[4], arr2[5]);// 新增的元素默认值为 undefinedlet arr3 = []arr3[2] = 1014// 可以通过[]直接修改数组长度,此时这个数组的 [0] 和 [1] 都是 undefinedlet arr4 = [1,2,3,4]console.log(arr4)arr4.push(1024)// 可以通过push直接修改数组长度,相当于尾插console.log(arr4)// 4.删除数组元素let arr5 = [8,5,6,11]arr5.splice(2,1)// 从下标为2的位置开始,删除1个元素console.log(arr5)// 结果应该是[8,5,11]
</script>
  • arr.length, length 使用的时候不带括号, 此时 length 就是一个普通的变量

9.11 函数

<script>// 函数的定义function test(){console.log('hello')}// 函数的调用test()// 函数的定义和调用的(先后顺序没有要求)// 函数的参数function Sum(a,b,c){return a + b + c}Sum(1,2,3,5)// 如果实参个数比形参个数多, 则多出的参数  (不参与函数运算)Sum(8)// 如果实参个数比形参个数少, 则此时多出来的形参值为 (undefined)// 函数变量let tmp = function(a,b){return a+b} console.log(tmp(2,5))
</script>

 9.12 作用域

作用域: 全局 + 局部

<script>// 局部变量function _test(){let num = 1024}console.log(num)// 这里会报错// 全局变量function test() {num = 100;// 不写let 就是全局变量}test();console.log(num);
</script>
  • 另外, 很多语言的局部变量作用域是按照代码块(大括号)来划分的, JS 在 ES6 之前不是这样的

 9.12.1 作用域链

  • 内部函数可以访问外部函数的变量. 采取的是链式查找的方式. 内到外依次进行查找 

 9.12 对象

<script>// 1. 创建对象let a = {}; // 创建了一个空的对象let student = {name: '蔡徐坤',height: 175,weight: 170,// 这里是匿名函数 赋值给函数变量sayHello: function() {console.log("hello");}};console.log(student.name)// 访问对象console.log(student['height'])// 访问对象student.sayHello()// 访问方法// 2. 使用object创建对象let student1 = new Object(); // 和创建数组类似student1.name = "蔡徐坤";student1.height = 175;student1['weight'] = 170;student1.sayHello = function () {console.log("hello");}console.log(student1.name);console.log(student1['weight']);student1.sayHello();// 3. 使用构造函数创建对象(推荐)function Cat(name, type, sound) {this.name = name;this.type = type;this.miao = function () {console.log(sound); // 别忘了作用域的链式访问规则}}let mimi = new Cat('咪咪', '中华田园喵', '喵');let xiaohei = new Cat('小黑', '波斯喵', '猫呜');let ciqiu = new Cat('刺球', '金渐层', '咕噜噜');console.log(mimi);mimi.miao();
</script>

9.12 补充

  • JavaScript 没有 "类" 的概念
  • JavaScript 对象不区分 "属性" 和 "方法"
  • JavaScript 对象没有 private / public 等访问控制机制
  • JavaScript 对象 没有 "继承"
  • JavaScript 没有 "多态"

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

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

相关文章

开源事件通知库libevent及网络连接管理模块bufferevent详解

目录 1、libevent介绍 1.1、什么是libevent&#xff1f; 1.2、libevent特点 1.3、网络连接管理模块bufferevent 2、bufferevent有什么用&#xff1f; 3、bufferevent的整体设计与实现细节 3.1、整体概况 3.2、evbuffer与bufferevent 3.3、defer callback 4、bufferev…

python爬虫之爬取微博评论(4)

一、获取单页评论 随机选取一个微博&#xff0c;例如下面这个 【#出操死亡女生家属... - 冷暖视频的微博 - 微博 (weibo.com) 1、fnf12&#xff0c;然后点击网络&#xff0c;搜索评论内容&#xff0c;然后预览&#xff0c;就可以查看到网页内容里面还有评论内容 2、编写代码…

【C#】rdlc报表答应报错:未能加载文件或程序集“Microsoft.SqlServer.Types

文章目录 一、报错信息二、解决方式 一、报错信息 Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. —> Microsoft.Reporting.DefinitionInvalidException: The definition of the report ‘’ is invalid. —&…

Vmware 虚拟机自定义IP地址 - UbuntuServer2204

Vmware 虚拟机自定义IP地址 - UbuntuServer2204 设置网段 选择喜欢的网段&#xff0c; 例如&#xff1a; 166 自定义 IP地址 打开虚拟机&#xff0c; 输入命令查看网卡名 ip addr查看网卡配置文件 ls -al /etc/netplan/编辑网卡配置文件 sudo vim /etc/netplan/00-installe…

C++ //练习 12.20 编写程序,逐行读入一个输入文件,将内容存入一个StrBlob中,用一个StrBlobPtr打印出StrBlob中的每个元素。

C Primer&#xff08;第5版&#xff09; 练习 12.20 练习 12.20 编写程序&#xff0c;逐行读入一个输入文件&#xff0c;将内容存入一个StrBlob中&#xff0c;用一个StrBlobPtr打印出StrBlob中的每个元素。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工…

《从零开始的Java世界》07常用类与基础API

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…

电脑显示有音量但是没有声音?5个方法足够解决问题!

“为什么我的电脑明明打开了声音&#xff0c;但是我看视频时却没有任何声音呢&#xff1f;应该怎么解决呀&#xff1f;” 在日常使用电脑的过程中&#xff0c;电脑声音的正常播放是很重要的&#xff0c;我们无论是听音乐还是看电影&#xff0c;都是离不开电脑声音的。遇到电脑显…

iOS 在OC旧项目中使用Swift进行混编

iOS 在OC旧项目中使用Swift进行混编 1、创建桥接文件 ​ 第一次在Swift创建OC文件&#xff0c;或者第一次OC创建Swift时&#xff0c;xcode会提示桥接&#xff0c;Creat Bridging Header即可,这个文件用于Swift调用OC文件&#xff0c;与OC调用Swift无关。 2、在TARGETS中设置D…

Linux文件系统 软硬链接

文章目录 文件背景知识磁盘文件磁盘物理结构磁盘存储结构对磁盘的存储进行逻辑抽象Boot BlockSuper blockData blocksInode TableBlcokBitmapinode BitmapGroup Descriptor Table 文件名和inode编号创建文件删除文件查找文件 软硬链接软链接硬链接查看文件信息stat命令取消软硬…

玩转智能:深度强化学习在游戏AI中的应用

玩转智能&#xff1a;深度强化学习在游戏AI中的应用 1 引言 1.1 简述深度强化学习(DRL)在游戏AI中的革命性影响。 当我们回顾人工智能的发展历程&#xff0c;可以明显地看到深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;的出现&#xff0c;在游戏AI…

【埋点探针】微信小程序SDK安装

一、下载微信小程序SDK埋点代码 选择Wechat&#xff0c;复制sdk代码 在项目根目录下&#xff0c;创建sdk文件&#xff0c;webfunny.event.js 二、在app.js文件中&#xff0c;引入埋点SDK代码 首先引入sdk代码 require("./webfunny.event.js")引入兼容代码&#x…

DHT11实验

文章目录 11.11.2 234 DS18B20 只能检测温度 右边这几个 都能 1 1.1 数字信号输出 指 0/1使用单总线通信 1个IO口就能获取温湿度 T/H要有 模数转化&#xff08;内部还有个8位单片机&#xff09;电容感湿元件 白色的 还有个ic NTC测温 可能在ic内部 使用单片机内部测温 精确度不…

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而…

基于STM32温控风扇冷却系统设计

摘要&#xff1a; 在当前社会&#xff0c;随着大家对生活质量的追求和环保意识的加强&#xff0c;温控风扇作为一种节能产品备受社会的关注。温控风扇广泛应用于工业生产、家用电器、医疗美容设备和公共场所&#xff0c;提高了人们的生活效率和生活上的便利。这篇文章是根据单…

【网络协议】 TCP与UDP协议区别及应用场景深度分析

1. TCP与UDP简介 1.1 TCP 1.1 定义 TCP&#xff08;TransmissionControl Protocol&#xff09;传输控制协议。 是一种可靠的、面向连接的协议&#xff08;eg:打电话&#xff09;、传输效率低全双工通信&#xff08;发送缓存&接收缓存&#xff09;、面向字节流。使用TCP的应…

电子印章盖骑缝章

电子印章盖骑缝章是指在电子文档&#xff08;如PDF文件&#xff09;中&#xff0c;使用电子印章技术&#xff0c;为文档添加一个跨越多页、连续显示的电子印章图像&#xff0c;以模拟传统纸质文档上的骑缝章效果。以下是实现电子印章盖骑缝章的步骤&#xff1a; 一. 准备电子印…

docker的安装以及docker中nginx配置

机器 test3 192.168.23.103 1机器初始化配置 1.1关闭防火墙&#xff0c;清空防火墙规则 systemctl stop firewalld iptables -F setenforce 01.2部署时间同步 yum install ntp ntpdate -y1.3安装基础软件包 yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c make…

【webrtc】m98 RoundRobinPacketQueue的优先级处理

m98 代码 PacedSender::EnqueuePackets 的调用者可能是多个地方,所以这个要加锁保护。RoundRobinPacketQueue 本身是没有锁的发现m98和新版本不同,参考:【webrtc】m114自己实现的PrioritizedPacketQueuepush和pop都是RtpPacketToSend 但是实际上,内部是封装为QueuedPacket 处…

基于Springboot的人职匹配推荐系统

基于SpringbootVue的人职匹配推荐系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 企业信息 岗位信息 新闻资讯 后台管理 用户管理 企业信息管理 岗位信…

Docker之注册中心的使用与操作

一、Docker注册中心与仓库 Reastry 可译为注册中心或注册服务器&#xff0c;是存放仓库的地方&#xff0c;一个注册中心往往有很多仓库。Docker默认的注册中心是Docker Hub&#xff0c;其可以通过浏览器访问&#xff0c;也可以使用docker search命令访问。 仓库是集中存放镜像…