HTML、CSS 和 JavaScript 常见用法及使用规范

一、HTML 深度剖析

1. 文档类型声明

HTML 文档开头的 <!DOCTYPE html> 声明告知浏览器当前文档使用的是 HTML5 标准。它是文档的重要元信息,能确保浏览器以标准模式渲染页面,避免怪异模式下的兼容性问题。

2. 元数据标签

  • <meta> 标签:用途广泛,比如设置字符编码 <meta charset="UTF-8">,保证页面能正确显示各种语言字符。还可用于设置页面描述 <meta name="description" content="这是一个示例网页的描述">,利于搜索引擎优化。
  • 视口设置<meta name="viewport" content="width=device-width, initial-scale=1.0"> 可让页面在不同设备上正确缩放,实现响应式布局。

3. 超链接标签

  • <a> 标签:基本用法是 <a href="https://www.example.com">访问示例网站</a>。此外,还能创建邮件链接 <a href="mailto:example@example.com">发送邮件</a> 和下载链接 <a href="example.pdf" download>下载 PDF 文件</a>
  • 锚点链接:用于页面内跳转,先在目标位置设置 <a id="section1"></a>,然后在链接处使用 <a href="#section1">跳转到第一节</a>

4. 列表标签

  • 无序列表<ul> 标签,每个列表项用 <li> 包裹,如 <ul><li>苹果</li><li>香蕉</li></ul>
  • 有序列表<ol> 标签,同样用 <li> 表示列表项,浏览器会自动为其编号。
  • 定义列表:由 <dl> 包裹,包含 <dt>(定义术语)和 <dd>(术语定义),例如 <dl><dt>HTML</dt><dd>超文本标记语言</dd></dl>

5. 表单标签

  • <form> 标签:用于收集用户输入,通过 action 属性指定表单数据提交的 URL,method 属性指定提交方式(GET 或 POST)。
  • 输入字段:常见的有 <input type="text">(文本输入框)、<input type="password">(密码输入框)、<input type="radio">(单选框)、<input type="checkbox">(复选框)、<input type="submit">(提交按钮)等。
  • 下拉列表:使用 <select> 和 <option> 标签创建,如 <select><option value="option1">选项 1</option></select>
  • 文本域<textarea> 标签用于输入多行文本。

6. 多媒体标签

  • <img> 标签:用于显示图片,除了 src 和 alt 属性,还可通过 width 和 height 属性设置图片尺寸。
  • <video> 标签:可嵌入视频,支持多种视频格式,如 <video src="example.mp4" controls></video>controls 属性添加视频控制条。
  • <audio> 标签:用于播放音频,用法与 <video> 类似,如 <audio src="example.mp3" controls></audio>

7. 框架标签

  • <iframe> 标签:可在页面中嵌入另一个网页,例如 <iframe src="https://www.example.com" width="500" height="300"></iframe>

8. HTML 实体

当需要显示特殊字符(如 <>& 等)时,可使用 HTML 实体,如 &lt; 表示 <&gt; 表示 >&amp; 表示 &

9. 表单元素及属性

表单 <form>

表单是 HTML 中用于收集用户输入数据的重要元素,以下是常见属性:

属性描述示例
action指定表单数据提交的 URL<form action="submit.php">
method表单数据提交的方式,有 GET 和 POST 两种<form method="POST">
enctype当表单包含文件上传时,指定表单数据的编码类型,常见值有 application/x-www-form-urlencodedmultipart/form-data 等<form enctype="multipart/form-data">

除了基本的 actionmethod 和 enctype 属性外,还可以使用 novalidate 属性来禁用表单的默认验证。

<form action="submit.php" method="POST" enctype="multipart/form-data" novalidate><!-- 表单内容 -->
</form>
文本框 <input type="text">

文本框用于接收用户输入的单行文本,常见属性如下:

属性描述示例
name表单数据提交时的名称<input type="text" name="username">
value文本框的初始值<input type="text" value="默认文本">
placeholder提示用户输入的文本,当文本框为空时显示<input type="text" placeholder="请输入用户名">
readonly设置文本框为只读,用户不能修改其内容<input type="text" readonly>
disabled禁用文本框,用户不能与之交互,且提交表单时该字段数据不会被发送<input type="text" disabled>
maxlength限制用户输入的最大字符数<input type="text" maxlength="20">
  • 自动完成autocomplete 属性可设置文本框是否启用自动完成功能,值可以是 on 或 off
<input type="text" name="email" autocomplete="off">
  • 输入模式inputmode 属性可以指定输入的类型,如 numeric 表示只能输入数字。
<input type="text" name="phone" inputmode="numeric">
密码框 <input type="password">

密码框用于输入密码,其属性与文本框类似,输入的内容会以星号或圆点显示。

<input type="password" name="password" placeholder="请输入密码">
按钮 <input type="button"><button>

按钮可用于触发操作,常见属性如下:

属性描述示例
value按钮上显示的文本(<input type="button"><input type="button" value="点击我">
disabled禁用按钮,用户不能点击<button disabled>禁用按钮</button>
onclick定义按钮被点击时执行的 JavaScript 代码<button onclick="alert('按钮被点击')">点击触发事件</button>

除了使用 onclick 事件,还可以通过 disabled 属性动态控制按钮的可用性。

<button id="myButton" disabled>禁用按钮</button>
<script>const button = document.getElementById('myButton');// 模拟一段时间后启用按钮setTimeout(() => {button.disabled = false;}, 3000);
</script>
复选框 <input type="checkbox">

复选框允许用户选择多个选项,常见属性如下:

属性描述示例
name表单数据提交时的名称<input type="checkbox" name="hobbies">
value复选框选中时提交的值<input type="checkbox" value="reading">
checked设置复选框默认选中<input type="checkbox" checked>
单选框 <input type="radio">

单选框允许用户从一组选项中选择一个,同一组单选框需使用相同的 name 属性。

属性描述示例
name用于分组,同一组单选框使用相同名称<input type="radio" name="gender">
value单选框选中时提交的值<input type="radio" value="male">
checked设置单选框默认选中<input type="radio" checked>

可以使用 JavaScript 来控制复选框和单选框的选中状态。

<input type="checkbox" id="check1"> 选项 1
<input type="checkbox" id="check2"> 选项 2
<button onclick="checkAll()">全选</button>
<script>function checkAll() {const checkboxes = document.querySelectorAll('input[type="checkbox"]');checkboxes.forEach(checkbox => {checkbox.checked = true;});}
</script>
列表框 <select> 和 <option>

列表框用于提供一组选项供用户选择,常见属性如下:

属性描述示例
name表单数据提交时的名称<select name="city">
multiple允许用户选择多个选项<select multiple>
size指定列表框中可见的选项数量<select size="3">
value<option> 标签的属性,指定该选项被选中时提交的值<option value="beijing">北京</option>
selected设置 <option> 默认选中<option selected>默认选项</option>

10. 其他 HTML 元素和属性

表格 <table>

表格用于展示数据,包含 <tr>(行)、<th>(表头单元格)和 <td>(数据单元格)。

<table><tr><th>姓名</th><th>年龄</th></tr><tr><td>张三</td><td>25</td></tr>
</table>
图像 <img>

图像元素用于显示图片,常见属性如下:

属性描述示例
src图片的 URL 地址<img src="image.jpg">
alt图片无法显示时显示的替代文本<img alt="这是一张图片">
width 和 height设置图片的宽度和高度<img width="200" height="150">
视频 <video>

可以使用 preload 属性来控制视频的预加载策略,有 autometadata 和 none 三种值。

<video src="video.mp4" preload="metadata" controls></video>
音频 <audio>

可以使用 loop 属性让音频循环播放。

<audio src="audio.mp3" loop controls></audio>

二、CSS 深入探究

1. 盒模型

盒模型由内容区(content)、内边距(padding)、边框(border)和外边距(margin)组成。可通过 width 和 height 属性设置内容区大小,paddingborder 和 margin 属性分别控制内边距、边框和外边距。

.box {width: 200px;height: 200px;padding: 20px;border: 1px solid black;margin: 20px;
}

2. 浮动与清除浮动

  • 浮动:使用 float 属性(left 或 right)可让元素脱离正常文档流,实现多列布局。但浮动元素会导致父元素高度塌陷。
  • 清除浮动:可使用 clear 属性(leftright 或 both)清除浮动影响,也可使用 BFC(块级格式化上下文)来解决高度塌陷问题。

3. 定位

  • 静态定位:默认值,元素按照正常文档流排列。
  • 相对定位position: relative,元素相对于其正常位置进行偏移,不会脱离文档流。
  • 绝对定位position: absolute,元素相对于最近的已定位祖先元素进行定位,会脱离文档流。
  • 固定定位position: fixed,元素相对于浏览器窗口固定位置,常用于创建固定导航栏等。
  • 粘性定位position: sticky,元素在滚动时固定在某个位置,直到滚动出特定区域。

4. 弹性布局(Flexbox)

弹性布局是一种一维布局模型,可轻松实现元素的水平和垂直对齐。

.container {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */
}

5. 网格布局(Grid)

网格布局是二维布局模型,可创建复杂的网格结构。

.grid-container {display: grid;grid-template-columns: 1fr 1fr 1fr; /* 三列布局 */grid-gap: 20px; /* 网格间距 */
}

6. 响应式设计

  • 媒体查询:使用 @media 规则根据不同的屏幕尺寸应用不同的样式。
@media (max-width: 768px) {/* 当屏幕宽度小于等于 768px 时应用的样式 */body {font-size: 14px;}
}
  • 弹性单位:如 emremvwvh 等,可根据父元素或视口大小动态调整元素尺寸。

7. 动画与过渡

  • 过渡:使用 transition 属性实现元素状态的平滑过渡,如颜色、大小等的变化。
.button {background-color: blue;transition: background-color 0.3s ease;
}
.button:hover {background-color: red;
}
  • 动画:使用 @keyframes 规则定义动画,然后通过 animation 属性应用动画。
@keyframes slide {from {transform: translateX(0);}to {transform: translateX(100px);}
}
.box {animation: slide 2s infinite;
}
1. 旋转角度

使用 transform 属性的 rotate() 函数可以实现元素的旋转,单位可以是度(deg)、弧度(rad)、梯度(grad)或圈数(turn)。

.rotate-element {transform: rotate(45deg); /* 顺时针旋转 45 度 */
}
2. 缩放

使用 transform 属性的 scale() 函数可以实现元素的缩放,参数可以是一个值(等比例缩放)或两个值(分别指定水平和垂直方向的缩放比例)。

.scale-element {transform: scale(1.5); /* 等比例放大 1.5 倍 */
}
3. 倾斜

使用 transform 属性的 skew() 函数可以实现元素的倾斜,参数分别指定水平和垂直方向的倾斜角度。

.skew-element {transform: skew(20deg, 10deg); /* 水平倾斜 20 度,垂直倾斜 10 度 */
}
4. 平移

使用 transform 属性的 translate() 函数可以实现元素的平移,参数分别指定水平和垂直方向的平移距离。

.translate-element {transform: translate(50px, 20px); /* 水平向右平移 50px,垂直向下平移 20px */
}
5. 过渡效果

使用 transition 属性可以实现元素状态变化时的平滑过渡,常见属性如下:

属性描述示例
transition-property指定要过渡的 CSS 属性transition-property: width;
transition-duration指定过渡的持续时间transition-duration: 0.5s;
transition-timing-function指定过渡的时间曲线,如 easelinear 等transition-timing-function: ease-in-out;
transition-delay指定过渡的延迟时间transition-delay: 0.2s;
.box {width: 100px;height: 100px;background-color: blue;transition: width 0.5s ease-in-out;
}
.box:hover {width: 200px;
}
6. 动画效果

使用 @keyframes 规则定义动画,然后通过 animation 属性应用动画。

@keyframes slide {from {transform: translateX(0);}to {transform: translateX(200px);}
}
.animated-element {animation: slide 2s infinite; /* 应用名为 slide 的动画,持续 2 秒,无限循环 */
}

三、JavaScript 深度解读

1. 数据类型

  • 基本数据类型:包括 NumberStringBooleanNullUndefinedSymbol
  • 引用数据类型:如 ObjectArrayFunction 等。

2. 变量声明

  • var:旧的变量声明方式,存在变量提升和函数作用域问题。
  • let:块级作用域变量声明,避免了变量提升带来的问题。
  • const:声明常量,一旦赋值不能再重新赋值,但对于引用类型,其内部属性可以修改。

3. 函数

  • 函数声明function add(a, b) { return a + b; }
  • 函数表达式const add = function(a, b) { return a + b; };
  • 箭头函数const add = (a, b) => a + b;

4. 作用域

  • 全局作用域:变量在整个脚本中都可访问。
  • 函数作用域:变量只能在函数内部访问。
  • 块级作用域:使用 let 和 const 声明的变量在块级作用域内有效。

5. 面向对象编程

  • 构造函数:用于创建对象实例,如 function Person(name, age) { this.name = name; this.age = age; }
  • 原型链:每个对象都有一个原型对象,通过原型链可以实现继承。
  • 类和继承:ES6 引入了 class 关键字,可使用 extends 实现类的继承。
class Animal {constructor(name) {this.name = name;}speak() {console.log(`${this.name} makes a noise.`);}
}
class Dog extends Animal {speak() {console.log(`${this.name} barks.`);}
}

6. 事件处理

  • 事件绑定:可使用 addEventListener 方法为元素添加事件监听器,支持多种事件类型,如 clickmouseoverkeydown 等。
const button = document.getElementById('myButton');
button.addEventListener('click', function() {alert('Button clicked!');
});
  • 事件冒泡和捕获:事件在 DOM 树中传播有冒泡和捕获两个阶段,可通过 addEventListener 的第三个参数控制。

7. 异步编程

  • 回调函数:是最基本的异步处理方式,但容易出现回调地狱问题。
function getData(callback) {setTimeout(() => {const data = { message: 'Hello' };callback(data);}, 1000);
}
getData((data) => {console.log(data.message);
});
  • Promise:用于处理异步操作,避免回调地狱,有 pendingfulfilled 和 rejected 三种状态。
const promise = new Promise((resolve, reject) => {setTimeout(() => {resolve('Success');}, 1000);
});
promise.then((result) => {console.log(result);
});
  • async/await:是基于 Promise 的语法糖,使异步代码看起来更像同步代码。
async function fetchData() {const response = await fetch('https://api.example.com/data');const data = await response.json();return data;
}
fetchData().then((data) => {console.log(data);
});

8. 模块化

  • ES6 模块:使用 import 和 export 关键字实现模块的导入和导出。
// module.js
export const add = (a, b) => a + b;// main.js
import { add } from './module.js';
console.log(add(1, 2));

9. DOM 操作

JavaScript 可以通过 DOM(文档对象模型)操作 HTML 元素,常见方法如下:

方法描述示例
document.getElementById()根据元素的 ID 获取元素const element = document.getElementById('myElement');
document.getElementsByTagName()根据元素的标签名获取元素集合const elements = document.getElementsByTagName('p');
document.getElementsByClassName()根据元素的类名获取元素集合const elements = document.getElementsByClassName('myClass');
document.querySelector()根据 CSS 选择器获取第一个匹配的元素const element = document.querySelector('.myClass');
document.querySelectorAll()根据 CSS 选择器获取所有匹配的元素集合const elements = document.querySelectorAll('p');
element.innerHTML获取或设置元素的 HTML 内容element.innerHTML = '<p>新内容</p>';
element.style获取或设置元素的样式element.style.color = 'red';

10. 事件处理

JavaScript 可以监听 HTML 元素的各种事件,如点击、鼠标移动等。常见事件和绑定方法如下:

事件描述绑定方法
click元素被点击时触发element.addEventListener('click', function() { /* 处理代码 */ });
mouseover鼠标悬停在元素上时触发element.addEventListener('mouseover', function() { /* 处理代码 */ });
keydown按下键盘按键时触发document.addEventListener('keydown', function(event) { /* 处理代码 */ });

11. 表单验证

在用户提交表单之前,可以使用 JavaScript 对表单数据进行验证,确保数据的有效性。

<form id="myForm"><input type="text" id="username" required><input type="submit" value="提交">
</form>
<script>const form = document.getElementById('myForm');form.addEventListener('submit', function(event) {const username = document.getElementById('username').value;if (username.length < 3) {alert('用户名长度不能少于 3 个字符');event.preventDefault(); // 阻止表单提交}});
</script>

12. 异步编程

JavaScript 中的异步操作可以避免阻塞主线程,提高程序的性能。常见的异步编程方式有回调函数、Promise 和 async/await。

回调函数
function getData(callback) {setTimeout(() => {const data = { message: 'Hello' };callback(data);}, 1000);
}
getData((data) => {console.log(data.message);
});
Promise
const promise = new Promise((resolve, reject) => {setTimeout(() => {const success = true;if (success) {resolve('成功');} else {reject('失败');}}, 1000);
});
promise.then((result) => {console.log(result);
}).catch((error) => {console.error(error);
});
async/await
async function fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();return data;} catch (error) {console.error(error);}
}
fetchData().then((data) => {console.log(data);
});

13. 事件委托

事件委托是一种利用事件冒泡原理,将事件处理程序绑定到父元素上,从而处理子元素事件的技术。

<ul id="myList"><li>列表项 1</li><li>列表项 2</li>
</ul>
<script>const list = document.getElementById('myList');list.addEventListener('click', function(event) {if (event.target.tagName === 'LI') {console.log('点击了列表项:', event.target.textContent);}});
</script>

14. 本地存储

JavaScript 提供了 localStorage 和 sessionStorage 对象,用于在浏览器中存储数据。

// 存储数据
localStorage.setItem('username', 'John');
// 获取数据
const username = localStorage.getItem('username');
console.log(username);
// 删除数据
localStorage.removeItem('username');

15. 定时器

使用 setTimeout() 和 setInterval() 函数可以实现定时任务。

// 延迟 2 秒后执行函数
setTimeout(() => {console.log('2 秒后执行');
}, 2000);// 每隔 1 秒执行一次函数
const intervalId = setInterval(() => {console.log('每秒执行一次');
}, 1000);// 停止定时器
clearInterval(intervalId);

16. AJAX 请求

使用 XMLHttpRequest 或 fetch API 可以实现异步数据请求。

// 使用 fetch API
fetch('https://api.example.com/data').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));

四、综合使用与最佳实践

1. 代码分离

将 HTML、CSS 和 JavaScript 代码分离到不同的文件中,提高代码的可维护性和复用性。

2. 命名规范

  • HTML 类名和 ID 采用有意义的命名,如 header-navmain-content
  • CSS 类名遵循 BEM(块、元素、修饰符)命名规范,如 .button--primary
  • JavaScript 变量和函数名使用驼峰命名法,如 userNamegetUserInfo

3. 注释与文档

添加必要的注释解释代码的功能和实现思路,特别是复杂的逻辑部分。同时,编写文档说明项目的整体架构和使用方法。

4. 性能优化

  • HTML 中减少不必要的标签嵌套,压缩代码。
  • CSS 避免使用内联样式,合并和压缩 CSS 文件。
  • JavaScript 减少 DOM 操作,合理使用事件委托,压缩代码。

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

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

相关文章

基于CNN+ViT的蔬果图像分类实验

本文只是做一个简单融合的实验&#xff0c;没有任何新颖&#xff0c;大家看看就行了。 1.数据集 本文所采用的数据集为Fruit-360 果蔬图像数据集&#xff0c;该数据集由 Horea Mureșan 等人整理并发布于 GitHub&#xff08;项目地址&#xff1a;Horea94/Fruit-Images-Datase…

Ubuntu24.04安装libgl1-mesa-glx 报错,软件包缺失

在 Ubuntu 24.04 系统中&#xff0c;您遇到的 libgl1-mesa-glx 软件包缺失问题可能是由于该包在最新的 Ubuntu 版本中被重命名为 libglx-mesa0。以下是针对该问题的详细解决方案&#xff1a; 1. 问题原因分析 包名称变更&#xff1a;在 Ubuntu 24.04 中&#xff0c;libgl1-me…

webpack vite

​ 1、webpack webpack打包工具&#xff08;重点在于配置和使用&#xff0c;原理并不高优。只在开发环境应用&#xff0c;不在线上环境运行&#xff09;&#xff0c;压缩整合代码&#xff0c;让网页加载更快。 前端代码为什么要进行构建和打包&#xff1f; 体积更好&#x…

如何在爬虫中合理使用海外代理?在爬虫中合理使用海外ip

我们都知道&#xff0c;爬虫工作就是在各类网页中游走&#xff0c;快速而高效地采集数据。然而如果目标网站分布在多个国家或者存在区域性限制&#xff0c;那靠普通的网络访问可能会带来诸多阻碍。而这时&#xff0c;“海外代理”俨然成了爬虫工程师们的得力帮手&#xff01; …

数据仓库分层存储设计:平衡存储成本与查询效率

数据仓库分层存储不仅是一个技术问题,更是一种艺术:如何在有限的资源下,让数据既能快速响应查询,又能以最低的成本存储? 目录 一、什么是数据仓库分层存储? 二、分层存储的体系架构 1. 数据源层(ODS,Operational Data Store) 2. 数据仓库层(DW,Data Warehouse)…

YOLO学习笔记 | 基于YOLOv8的植物病害检测系统

以下是基于YOLOv8的植物病害检测系统完整技术文档,包含原理分析、数学公式推导及代码实现框架。 基于YOLOv8的智能植物病害检测系统研究 摘要 针对传统植物病害检测方法存在的效率低、泛化性差等问题,本研究提出一种基于改进YOLOv8算法的智能检测系统。通过设计轻量化特征提…

高级语言调用C接口(二)回调函数(4)Python

前面2篇分别说了java和c#调用C接口&#xff0c;参数为回调函数&#xff0c;回调函数中参数是结构体指针。 接下来说下python的调用方法。 from ctypes import * import sysclass stPayResult(Structure):_pack_ 4 # 根据实际C结构体的对齐方式设置&#xff08;常见值为1,4,…

springboot启动动态定时任务

1.自定义定时任务线程池 package com.x.devicetcpserver.global.tcp.tcpscheduler;import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio…

pytorch框架认识--手写数字识别

手写数字是机器学习中非常经典的案例&#xff0c;本文将通过pytorch框架&#xff0c;利用神经网络来实现手写数字识别 pytorch中提供了手写数字的数据集&#xff0c;我们可以直接从pytorch中下载 MNIST中包含70000张手写数字图像&#xff1a;60000张用于训练&#xff0c;10000…

WPF 使用依赖注入后关闭窗口程序不结束

原因是在ViewModel中在构造函数中注入了Window 对象&#xff0c;即使没有使用&#xff0c;主窗口关闭程序不会退出&#xff0c;即使 ViewModel 是 AddTransient 注入的。 解决方法&#xff1a;不使用构造函数注入Window&#xff0c;通过GetService获取Window 通过注入对象调用…

用户管理(添加和删除,查询信息,切换用户,查看登录用户,用户组,配置文件)

目录 添加和删除用户 查询用户信息 切换用户 查看当前的操作用户是谁 查看首次登录的用户是谁 用户组&#xff08;对属于同个角色的用户统一管理&#xff09; 新增组 删除组 添加用户的同时&#xff0c;指定组 修改用户的组 组的配置文件&#xff08;/etc/group&…

PyTorch学习-小土堆教程

网络搭建torch.nn.Module 卷积操作 torch.nn.functional.conv2d(input, weight, biasNone, stride1, padding0, dilation1, groups1) 神经网络-卷积层

MVCC详细介绍及面试题

目录 1.什么是mvcc&#xff1f; 2.问题引入 3. MVCC实现原理&#xff1f; 3.1 隐藏字段 3.2 undo log 日志 3.2.1 undo log版本链 3.3 readview 3.3.1 当前读 ​编辑 3.3.2 快照读 3.3.3 ReadView中4个核心字段 3.3.4 版本数据链访问的规则&#xff08;了解&#x…

企业级Active Directory架构设计与运维管理白皮书

企业级Active Directory架构设计与运维管理白皮书 第一章 多域架构设计与信任管理 1.1 企业域架构拓扑设计 1.1.1 林架构设计规范 林根域规划原则&#xff1a; 采用三段式域名结构&#xff08;如corp.enterprise.com&#xff09;&#xff0c;避免使用不相关的顶级域名架构主…

android11 DevicePolicyManager浅析

目录 &#x1f4d8; 简单定义 &#x1f4d8;应用启用设备管理者 &#x1f4c2; 文件位置 &#x1f9e0; DevicePolicyManager 功能分类举例 &#x1f6e1;️ 1. 安全策略控制 &#x1f4f7; 2. 控制硬件功能 &#x1f9f0; 3. 应用管理 &#x1f512; 4. 用户管理 &am…

Java学习手册:Java线程安全与同步机制

在Java并发编程中&#xff0c;线程安全和同步机制是确保程序正确性和数据一致性的关键。当多个线程同时访问共享资源时&#xff0c;如果不加以控制&#xff0c;可能会导致数据不一致、竞态条件等问题。本文将深入探讨Java中的线程安全问题以及解决这些问题的同步机制。 线程安…

PyTorch核心函数详解:gather与where的实战指南

PyTorch中的torch.gather和torch.where是处理张量数据的关键工具&#xff0c;前者实现基于索引的灵活数据提取&#xff0c;后者完成条件筛选与动态生成。本文通过典型应用场景和代码演示&#xff0c;深入解析两者的工作原理及使用技巧&#xff0c;帮助开发者提升数据处理的灵活…

声学测温度原理解释

已知声速&#xff0c;就可以得到温度。 不同温度下的胜诉不同。 25度的声速大约346m/s 绝对温度-273度 不同温度下的声速。 FPGA 通过测距雷达测温度&#xff0c;固定测量距离&#xff0c;或者可以测出当前距离。已知距离&#xff0c;然后雷达发出声波到接收到回波的时间&a…

【网络篇】UDP协议的封装分用全过程

大家好呀 我是浪前 今天讲解的是网络篇的第二章&#xff1a;UDP协议的封装分用 我们的协议最开始是OSI七层网络协议 这个OSI 七层网络协议 是计算机的大佬写的&#xff0c;但是这个协议一共有七层&#xff0c;太多了太麻烦了&#xff0c;于是我们就把这个七层网络协议就简化为…

spring-ai-alibaba使用Agent实现智能机票助手

示例目标是使用 Spring AI Alibaba 框架开发一个智能机票助手&#xff0c;它可以帮助消费者完成机票预定、问题解答、机票改签、取消等动作&#xff0c;具体要求为&#xff1a; 基于 AI 大模型与用户对话&#xff0c;理解用户自然语言表达的需求支持多轮连续对话&#xff0c;能…