JavaScript的DOM

DOM

  • DOM:
    • 查找元素:
      • 通过id查找元素:
      • 通过class查找元素:
      • 通过标签查找元素:
      • 通过name属性查找元素:
    • 操作元素:
      • 操作内容:
      • 操作属性:
      • 操作样式:
    • 事件:
      • 单击事件:
      • 页面加载事件:
      • 键盘事件:
        • 案例:
      • 鼠标事件:
        • 案例:
          • 改进:
      • 焦点事件:
        • 案例:
    • 节点:
      • 操作节点:
      • 案例:
    • 案例:
      • 计算器:
      • 二级联动:
        • 优化:
      • 提交案例:
        • 另一种:

DOM:

DOM:对事件做出反应
 
我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。

通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。

HTML DOM (文档对象模型):当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
 
HTML DOM 模型被构造为对象的树。

 
 

查找元素:

注意:document表示该文档,就是dom树。

 

通过id查找元素:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><span id="span01">今天天气真好</span><br /><span>微风吹过林梢</span><script type="text/javascript">//通过id获取元素var span01 = document.getElementById("span01");//绑定单击事件span01.onclick = function(){//设置内容span01.innerHTML = "今日骄阳真好";}</script></body>
</html>

 
 

通过class查找元素:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><span class="myclass">今天天气真好</span><br /><span class="myclass">微风吹过林梢</span><script type="text/javascript">//通过class属性获取元素数组var span01 = document.getElementsByClassName("myclass")[0];//绑定单击事件span01.onclick = function(){//设置内容span01.innerHTML = "xxxx";}</script></body>
</html>

 
 

通过标签查找元素:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><span>今天天气真好</span><br /><span>微风吹过林梢</span><script type="text/javascript">//通过标签获取元素数组var span01 = document.getElementsByTagName("span")[0];//绑定单击事件span01.onclick = function(){//设置内容span01.innerHTML = "xxxx";}</script></body>
</html>

 
 

通过name属性查找元素:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style type="text/css">img{width: 100px;}</style></head><body><img name="xxx" src="../../img/花.jpg" /><img name="xxx" src="../../img/花.jpg" /><script type="text/javascript">//通过name属性获取元素数组var img = document.getElementsByName("xxx")[0];//绑定单击事件img.onclick = function(){//设置属性img.src = "../../img/花1.jpg";}</script></body>
</html>

 
 

操作元素:

操作内容:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><button onclick="fun01()">获取内容 - innerText</button><button onclick="fun02()">设置内容 - innerText</button><br /><span>彼时阳光正好</span><br /><button onclick="fun03()">获取内容 - innerHTML</button><button onclick="fun04()">设置内容 - innerHTML</button><br /><span>彼时阳光正好</span><script type="text/javascript">var span01 = document.getElementsByTagName("span")[0];var span02 = document.getElementsByTagName("span")[1];function fun01(){console.log(span01.innerText);}function fun02(){span01.innerText = "<h1>微风吹过林梢</h1>";}function fun03(){console.log(span02.innerHTML);}function fun04(){//把文本当做html标签设置span02.innerHTML = "<h1>微风吹过林梢</h1>";}</script></body>
</html>

 
 

操作属性:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><button onclick="fun01()">获取属性</button><button onclick="fun02()">设置属性</button><br /><img src="../../img/花1.jpg" width="100px" height="100px" /><br /><button onclick="fun03()">获取属性</button><button onclick="fun04()">设置属性</button><br /><img src="../../img/花1.jpg" width="100px" height="100px" /><script type="text/javascript">var img1 = document.getElementsByTagName("img")[0];var img2 = document.getElementsByTagName("img")[1];function fun01(){console.log(img1.src);console.log(img1.width);console.log(img1.height);}function fun02(){img1.src = "../../img/花.jpg";//不带单位img1.width = "200";img1.height = "200";}function fun03(){console.log(img2.getAttribute("src"));console.log(img2.getAttribute("width"));console.log(img2.getAttribute("height"));}function fun04(){img2.setAttribute("src","../../img/花.jpg");//带单位img2.setAttribute("width","100%");img2.setAttribute("height","100%");}</script></body>
</html>

 
 

操作样式:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><button onclick="fun01()">获取样式</button><button onclick="fun02()">设置样式</button><br /><span>彼时阳光正好</span><script type="text/javascript">var span = document.getElementsByTagName("span")[0]function fun01(){console.log(span.style.color);console.log(span.style.fontSize);}function fun02(){span.style.color = "red";span.style.fontSize = "50px";}</script></body>
</html>

 
 

事件:

单击事件:

单击事件:鼠标点击之后发生的事件。
 
onclick

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><h1 onclick="this.innerText='微风吹过林梢'">彼时阳光正好</h1></body>
</html>

 

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><h1 onclick="fun01()">彼时阳光正好</h1><script type="text/javascript">var h1 = document.getElementsByTagName("h1")[0];function fun01(){h1.innerText = "微风吹过林梢";}</script></body>
</html>

 

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><h1 onclick="fun01(this)">彼时阳光正好</h1><script type="text/javascript">function fun01(obj){obj.innerText = "微风吹过林梢";}</script></body>
</html>

 

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><h1>彼时阳光正好</h1><script type="text/javascript">var h1 = document.getElementsByTagName("h1")[0];//绑定单击事件h1.onclick = function(){this.innerText = "微风吹过林梢";}</script></body>
</html>

 

页面加载事件:

页面加载事件:事件会在页面元素和图像加载完成后立即发生。
 
window.onload

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">//页面加载事件:事件会在页面元素和图像加载完成后立即发生window.onload = function(){var h1 = document.getElementsByTagName("h1")[0];h1.onclick = function(){this.innerText = "微风吹过林梢";}}</script></head><body><h1>彼时阳光正好</h1>		</body>
</html>

 
 

键盘事件:

键盘事件:onkeydown、onkeypress、onkeyup
 
onkeydown:键盘按下就执行。

onkeypress:键盘按下非功能键就执行。

onkeyup:键盘按下去并松开后执行。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><input type="text" onkeydown="myDown()"onkeypress="myPress()"onkeyup="myUp()"/><script type="text/javascript">function myDown(){//键盘按下事件console.log("down");}function myPress(){//键盘按下事件 - 功能键(上下左右、删除键...)是不会被触发的。console.log("press");}function myUp(){//键盘松开事件console.log("up");}			</script></body>
</html>

 
 

案例:

需求:设置一个文本框,每敲一个字母,会触发将输入文本转换为大写的函数。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><input type="text" onkeyup="myUp(this)"/><script type="text/javascript">function myUp(obj){//获取输入框的value属性var v = obj.value;//转大写v = v.toUpperCase();//设置value属性obj.value = v;}			</script></body>
</html>

 
 

鼠标事件:

onMouseDown —> 按下鼠标时触发 。

onMouseUp--------> 按下鼠标松开鼠标时触发 。

onMouseOver-----> 鼠标移入时触发 。

onMouseOut-------> 鼠标移出时触发 。

onMouseMove----> 鼠标移动时触发。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><img src="../../img/花.jpg" width="100px" height="100px"onmousedown="myDown()"  onmouseup="myUp()"  onmousemove="myMove()"onmouseover="myOver()"  onmouseout="myOut()"/><script type="text/javascript">function myDown(){//鼠标按下事件console.log("down");}function myUp(){//鼠标松开事件console.log("up");}function myMove(){//鼠标移动事件console.log("move");}function myOver(){//鼠标移入事件console.log("over");}function myOut(){//鼠标移出事件console.log("out");}</script></body>
</html>

 

 

案例:

需求:鼠标移动到哪个头像,哪个头像就高亮。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style type="text/css">img{width: 100px;height: 100px;opacity: 0.3;/*设置透明度为30%*/}</style></head><body><img src="../../img/touxiang01.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><img src="../../img/touxiang02.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><img src="../../img/touxiang03.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><img src="../../img/tx1.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><img src="../../img/tx2.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><img src="../../img/tx3.jpg" onmouseover="myOver(this)" onmouseout="myOut(this)"/><script type="text/javascript">function myOver(obj){//鼠标移入事件obj.style.opacity = 1;}function myOut(obj){//鼠标移出事件obj.style.opacity = 0.3;}</script></body>
</html>

 
 

改进:

简化代码,设置动态绑定事件。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style type="text/css">img{width: 100px;height: 100px;opacity: 0.3;/*设置透明度*/}</style></head><body><img src="../../img/touxiang01.jpg" /><img src="../../img/touxiang02.jpg" /><img src="../../img/touxiang03.jpg" /><img src="../../img/tx1.jpg" /><img src="../../img/tx2.jpg" /><img src="../../img/tx3.jpg" /><img src="../../img/花.jpg" /><script type="text/javascript">//动态绑定事件var imgArr = document.getElementsByTagName("img");for(var i = 0;i<imgArr.length;i++){var img = imgArr[i];img.onmouseover = function(){this.style.opacity = 1;}img.onmouseout = function(){this.style.opacity = 0.3;}}</script></body>
</html>

 
 

焦点事件:

焦点事件:onfocus、onblur。
 
onfocus:获取焦点事件。

onblur:失去焦点事件。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><input type="text"  onfocus="myFocus()"  onblur="myBlur()"	/><script type="text/javascript">function myFocus(){//获取焦点事件console.log("focus");}function myBlur(){//失去焦点事件console.log("blur");}   </script></body>
</html>

 
 

案例:

在输入框中用 value 属性来实现 placeholder 属性的功能。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><input type="text"value="请输入账号..."onfocus="myFocus(this)"onblur="myBlur(this)"	/><script type="text/javascript">function myFocus(obj){//获取焦点事件if(obj.value == "请输入账号..."){obj.value = "";}}function myBlur(obj){//失去焦点事件//判断浏览器是否兼容次方法if(obj.value.trim){if(obj.value.trim() == ""){obj.value = "请输入账号...";}}else{//注意:IE老版本是不支持trim()//将字符串的首尾空格的字符替换成空字符串,以达到去空格的目的if(obj.value.replace(/(^\s+)|(\s+$)/g,"") == ""){obj.value = "请输入账号...";}}}</script></body>
</html>

alert(obj.value.trim);

获取该函数里的代码,如果当前浏览器支持该函数,就返回函数里的代码(字符串),如果不支持就返回undefined

 
 

节点:

操作节点:

动态添加节点。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><button onclick="addP()">添加p标签</button><div id="manager"></div><script type="text/javascript">var manager = document.getElementById("manager");function addP(){//创建节点 - <p></p>var p = document.createElement("p");//创建文本内容 - 用良心做教育var text = document.createTextNode("用良心做教育");//将文本内容添加到节点里 - <p>用良心做教育</p>p.appendChild(text);//将节点添加到div中manager.appendChild(p);}</script></body>
</html>

 
 

动态添加节点和删除节点。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><button onclick="addImg()">添加img标签</button><button onclick="deleteImg()">删除img标签</button><div id="manager"></div><script type="text/javascript">var manager = document.getElementById("manager");function addImg(){//创建节点 - <img />var img = document.createElement("img");//设置属性img.setAttribute("src","../../img/tx2.jpg");img.setAttribute("width","100px");img.setAttribute("height","100px");//创建节点 - <br/>var br = document.createElement("br");//将节点添加到div中manager.appendChild(img);manager.appendChild(br);}function deleteImg(){//删除思路:由父节点删除子节点//查询需要删除的节点var img = document.getElementsByTagName("img")[0];var br = document.getElementsByTagName("br")[0];manager.removeChild(img);manager.removeChild(br);}</script></body>
</html>

 
 

案例:

点击删除按钮,删除该行。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><table border="1" width="300px"><tr><th>姓名</th><th>性别</th><th>年龄</th><th>操作</th></tr><tr><td>小红</td><td></td><td>27</td><td><button onclick="myDelete(this)">删除</button></td></tr><tr><td>小水</td><td></td><td>23</td><td><button onclick="myDelete(this)">删除</button></td></tr><tr><td>小惠</td><td></td><td>25</td><td><button onclick="myDelete(this)">删除</button></td></tr><tr><td>小香</td><td></td><td>24</td><td><button onclick="myDelete(this)">删除</button></td></tr></table><script type="text/javascript">function myDelete(obj){//parentNode:找父节点var tr = obj.parentNode.parentNode;var table = tr.parentNode;table.removeChild(tr);}</script></body>
</html>

 

 

案例:

计算器:

计算器

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><input type="text" id="text01"/>+<input type="text" id="text02"/><button onclick="add()">=</button><input type="text" id="text03"/><script type="text/javascript">function add(){//获取到输入框的value是string类型//parseInt()将字符串转换为数字。var result = parseInt(text01.value) + parseInt(text02.value);text03.value = result;}</script></body>
</html>

 
 

二级联动:

二级联动:省变了,对应的市也会改变。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><select id="province"><option value="sc">四川</option><option value="hn">湖南</option><option value="hb">湖北</option></select><select id="city"><option>成都</option><option>绵阳</option><option>雅安</option><option>乐山</option><option>攀枝花</option></select><script type="text/javascript">//给省份绑定改变事件province.onchange = function(){if(this.value == "sc"){city.innerHTML = "<option>成都</option><option>绵阳</option><option>雅安</option><option>乐山</option><option>攀枝花</option>";}else if(this.value == "hn"){city.innerHTML = "<option>长沙</option><option>永州</option><option>娄底</option><option>益阳</option><option>张家界</option>";}else if(this.value == "hb"){city.innerHTML = "<option>武汉</option><option>黄冈</option><option>仙桃</option><option>咸宁</option><option>孝感</option>";}}</script></body>
</html>

 

优化:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title></head><body><select id="province"><option value="sc">四川</option><option value="hn">湖南</option><option value="hb">湖北</option></select><select id="city"><option>成都</option><option>绵阳</option><option>雅安</option><option>乐山</option><option>攀枝花</option></select><script type="text/javascript">//给省份绑定改变事件province.onchange = function(){if(this.value == "sc"){updateCity(["成都","绵阳","雅安","乐山","攀枝花"]);}else if(this.value == "hn"){updateCity(["长沙","永州","娄底","益阳","张家界"]);}else if(this.value == "hb"){updateCity(["武汉","黄冈","仙桃","咸宁","孝感"]);}}function updateCity(arr){//清空city列表city.length = 0;for(var i = 0;i<arr.length;i++){var option = document.createElement("option");option.innerText = arr[i];city.appendChild(option);}}</script></body>
</html>

 
 

提交案例:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style type="text/css">span{color: red;}</style></head><body><form id="registerForm" action="#" method="post">账户:<input type="text" id="username" /><span></span><br />密码:<input type="password" id="password" /><span></span><br />确认密码:<input type="password" id="repassword" /><span></span><br /><input type="submit" value="提交" /></form><script type="text/javascript">var span01 = document.getElementsByTagName("span")[0];var span02 = document.getElementsByTagName("span")[1];var span03 = document.getElementsByTagName("span")[2];//给表单绑定提交事件registerForm.onsubmit = function(){//每次提交时,清空提示span01.innerText = "";span02.innerText = "";span03.innerText = "";var bool = true;if(username.value.trim() == ""){span01.innerText = "账号不能为空";bool = false;}if(password.value.trim() == ""){span02.innerText = "密码不能为空";bool = false;}if(repassword.value.trim() == ""){span03.innerText = "确认密码不能为空";bool = false;}else if(repassword.value.trim() != password.value.trim()){span03.innerText = "确认密码与密码不一致";bool = false;}return bool;}</script></body>
</html>

 
 

另一种:
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><style type="text/css">span{color: red;}</style></head><body><form action="#" method="post" onsubmit="return fun01()">账户:<input type="text" id="username" /><span></span><br />密码:<input type="password" id="password" /><span></span><br />确认密码:<input type="password" id="repassword" /><span></span><br /><input type="submit" value="提交" /></form><script type="text/javascript">var span01 = document.getElementsByTagName("span")[0];var span02 = document.getElementsByTagName("span")[1];var span03 = document.getElementsByTagName("span")[2];function fun01(){span01.innerText = "";span02.innerText = "";span03.innerText = "";var bool = true;if(username.value.trim() == ""){span01.innerText = "账号不能为空";bool = false;}if(password.value.trim() == ""){span02.innerText = "密码不能为空";bool = false;}if(repassword.value.trim() == ""){span03.innerText = "确认密码不能为空";bool = false;}else if(repassword.value.trim() != password.value.trim()){span03.innerText = "确认密码与密码不一致";bool = false;}return bool;}</script></body>
</html>

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

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

相关文章

详细分析Mysql中的 JSON_ARRAYAGG 基本知识(附Demo)

目录 1. 基本知识2. Demo2.1 简单聚合2.2 带排序聚合2.2.1 子查询进行排序2.2.2 创建临时表 2.3 带条件聚合2.4 多列聚合2.5 嵌套 JSON 结构 1. 基本知识 JSON_ARRAYAGG为 SQL 聚合函数&#xff0c;用于将一组值聚合为一个 JSON 数组 多行结果组合成一个 JSON 数组形式的场景…

企业研发数据泄露损失严重,研发数据保护到底怎么才能有效落地?

数据已成为企业毋庸置疑的核心资产&#xff0c;而企业众多数据中&#xff0c;研发数据则占据着重要的角色&#xff0c;近年来&#xff0c;发生了多起企业研发数据被窃取或泄露的事件&#xff0c;给企业带来严重的名誉、经济损失&#xff1a; 小米公司&#xff1a;2023年1月&am…

Linux驱动应用编程(三)UART串口

本文目录 前述一、手册查看二、命令行调试串口1. 查看设备节点2. 使用stty命令设置串口3. 查看串口配置信息4. 调试串口 三、代码编写1. 常用API2. 例程线程优化 前述 在开始实验前&#xff0c;请一定要检查测试好所需硬件是否使用正常&#xff0c;不然调试过程中出现的问题&am…

华为机考入门python3--(33)牛客33-图片整理

分类&#xff1a;排序 知识点&#xff1a; 对字符串中的字符ASCII码排序 sorted(my_str) 题目来自【牛客】 def sort_images(s):# 可以使用ord(A)求A的ASCII值&#xff0c;需要注意的是A的值&#xff08;65&#xff09;比a的值小&#xff08;97&#xff09;sorted_images …

常见排序算法,快排,希尔,归并,堆排

后面的排序中都要用到的函数 //交换 void Swap(int* p1, int* p2) {int* tmp *p1;*p1 *p2;*p2 tmp; } 包含的头文件 "Sort.h" #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<time.h> #include<s…

70 Realistic Mountain Environment Textures Cliff(70+张真实的山地环境纹理)

大量适合山区和其他岩石环境的纹理--悬崖、岩石、砾石等等 每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。 70种质地 70种材料 70个地…

C#——固态数组

固态数组 概念: 1.数组 是存储一组相同数据类型的集合 2.数组分为 一线数组 多维数组 交错数组 3.一般情况下 一维数组 就称之为数组 声明: 方法1: 数据类型[ ] 数组名 new 数据类型[ 长度 ] 实例: int[] arr new int[10] 方法2: 数据类型[ ] 数组名 new 数据类型[ 长度…

AI视频教程下载:用LangChain开发 ChatGPT和 LLMs 应用

在这个快速变化的人工智能时代&#xff0c;我们为您带来了一场关于语言模型和生成式人工智能的革命性课程。这不仅仅是一个课程&#xff0c;而是一次探险&#xff0c;一次深入人工智能核心的奇妙之旅。 在这里&#xff0c;您将开启一段激动人心的旅程&#xff0c;探索语言模型…

利用架构挖掘增强云管理

管理当今复杂的云环境比以往任何时候都更加重要。 大多数企业依赖 AWS、Azure、Kubernetes 和 Microsoft Entra ID 等各种平台来支持其运营&#xff0c;但管理这些平台可能会带来重大挑战。 云优化的最大挑战涉及安全性、成本管理和了解云基础设施内错综复杂的相互依赖关系。…

【数据库】255对比256的优势

文章目录 2552^8-1 &#xff0c;很多时候用到255却步凑整到256&#xff0c;这是为啥呢?一番了解总结 2552^8-1 &#xff0c;很多时候用到255却步凑整到256&#xff0c;这是为啥呢? 比如下面的两种情况: RabbitMQ的routing_key 和 binding_key 的最大长度255 字节。Navicat添…

基于springboot实现农产品直卖平台系统项目【项目源码+论文说明】

基于springboot实现农产品直卖平台系统的设计演示 摘要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔…

常见的Web漏洞——CORS

渗透做了多年的朋友都知道&#xff0c;大洞小洞都是漏洞。因此也学习、沉淀一下以前没重视的漏洞。 简介 CORS&#xff08;Cross-Origin Resource Sharing&#xff0c;跨源资源共享&#xff09;是一种由Web浏览器实现的安全策略&#xff0c;用于控制一个Web页面&#xff08;服…

finereport 9.0 Tomcat 集群-来自帆软

Tomcat服务器集群 目录: 1. 描述3. 配置过程4. 结果测试 1. 描述 在单一的服务器上执行WEB应用程序有一些问题&#xff0c;当网站成功建成并开始接受大量请求时&#xff0c;单一服务器无法满足需要处理的负荷量。 另外一个常见的问题是会产生单点故障&#xff0c;如果该服务器坏…

AppML 下载

要下载 AppML&#xff0c;您可以访问菜鸟教程网站或自强学堂网站。AppML 不是一个产品&#xff0c;而是一个基于浏览器和服务器脚本的想法。您可以从这些网站下载适用于 PHP 或 ASP.NET 的 AppML 版本。下载文件将包含服务端脚本、样式文件、浏览器脚本和本地配置文件&#xff…

Java桥接模式

桥接模式 最重要的是 将 抽象 与 实现 解耦 , 通过组合 在 抽象 与 实现 之间搭建桥梁 ; 【设计模式】桥接模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )-CSDN博客 桥接模式&#xff08;Bridge Pattern&#xff09;-&#xff08;最通俗易懂的案例&#xff09;_桥接模式 例子-…

力扣 242题 有效的字母异位 记录

题目描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 …

高效学习LabVIEW的方法

学习LabVIEW可以通过系统化课程、在线资源、自学实验、参与论坛、结合实际项目等多角度进行。系统课程提供全面基础&#xff0c;在线资源便于查漏补缺&#xff0c;自学实验强化理解&#xff0c;论坛互动解决疑难&#xff0c;结合实际项目应用提高实践技能。结合项目学习是最高效…

有趣的C语言——我的C语言之路

记录一下关于C语言竞赛重刷的例题&#xff0c;有些真的很有意思&#xff0c;如果你觉得特别简单&#xff0c;那说明你很牛&#xff0c;小弟我甘拜下风&#xff01;! 勿喷 勿喷&#xff0c;仅记录学习历程&#xff08;有些特别基础的就不弄了&#xff0c;弄一些我觉得处理方法很…

Docker 中运行的 MySQL 数据库与 Docker 外部的管理系统连接

步骤 1&#xff1a;运行 MySQL 容器 首先&#xff0c;确保你的 Docker 容器中运行了 MySQL 数据库。 docker run --name mysql-container -e MYSQL_ROOT_PASSWORDmy-secret-pw -d -p 3306:3306 mysql:latest--name mysql-container 为容器命名。-e MYSQL_ROOT_PASSWORDmy-sec…

python3 -m http.server 检查打包前端的项目

python3 -m http.server这是 Python 提供的一个内置的简单 HTTP 服务器。当你在终端中运行 python3 -m http.server 命令时(在对应的打包目录比如dist目录)&#xff0c;Python 会启动一个 HTTP 服务器&#xff0c;它会将当前工作目录下的文件作为静态文件提供给浏览器。这个服务…