Web08--JavaScript高级

1、BOM对象

BOM:browser object model   浏览器对象模型

BOM对象包括window对象、screen对象、history对象、location对象、navigator对象。

1.1 window对象

所有的浏览器都支持window对象。它表示的浏览器窗口

window对象是js中的顶层对象,所有的js函数,变量等都是window对象成员

甚至Dom的document也是window对象的属性之一

1.1.1 三种弹出框

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>三种弹出框</title></head><body><script>// 警告框alert("Hello");// 确认框var bl = confirm("你确定要删除吗?");console.log(bl);// 输入框--接受的内容类型为Stringvar str = prompt("请输入内容");console.log(str);console.log(typeof(str));</script></body>
</html>

1.1.2 定时器

clearInterval()

取消由setInterval()设置的timeout

clearTimeout()

取消setTimeout()设置的timeout

setInterval()

按照指定的周期(以毫秒计)来调用函数或计算表达式。

setTimeout()

在指定的毫秒数后调用函数或计算表达式。

案例:让时间走动,进行开始或者停止控制

<script>//设置一个时间周期,参数1:表示是一个调用的方法,参数2:表示的时间周期var interval_id = window.setInterval("_setTime()",1000);//页面一刷新,用户就可以看到时间,但是这个是静态的window.onload = function(){//获取idvar _time = document.getElementById("_time");//获取当前时间var date = new Date();//把时间写入到span标签中_time.innerHTML = date.toLocaleString();}function _setTime(){//获取idvar _time = document.getElementById("_time");//获取当前时间var date = new Date();//把时间写入到span标签中_time.innerHTML = date.toLocaleString();}//停止时间function _stopTime(){window.clearInterval(interval_id);//获取设置时间周期的id}//开始时间function _stratTime(){interval_id = window.setInterval("_setTime()",1000);}</script>
</head>
<body><span style="color: red;" id="_time"></span><input type="button" value="停止时间" onclick="_stopTime()"/><input type="button" value="开始时间" onclick="_stratTime()"/>
</body>

倒记时案例

<!DOCTYPE html>
<html><head><meta charset="utf-8"><!-- html中有一个meta标签,可以实现页面刷新,可以看作是倒记时 --><meta http-equiv="refresh" content="10;url=https://www.baidu.com"><title></title><!-- 通过js配合meta标签,把这个倒记时的时间,显示给用户,效果是时间递减 --><script>var time = 10;window.onload = function(){window.setInterval("setTime()",1000);}function setTime(){document.getElementById("spanid").innerHTML = time;time--;}</script></head><body><center><span style="font-size: 78px; color:orange; text-align: center;"  id="spanid"></span>秒后跳转到<a href="https://www.baidu.com"> 百度</a></center><div align="center"><img src="img/404.jpg" /></div></body>
</html>

1.1.3 关闭,打开浏览器

close()

关闭浏览器

open()

打开浏览器

1.2 history对象

history对象包含用户访问过的url,  注意: 一定是访问过的历史url

history是window对象的一部份,可以通过window.history属性进行访问

demo04--history对象.html

html
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>History对象01</title><script>function after(){history.forward();}</script></head><body><a href="demo05--history对象.html">第二页</a><button onclick="after()">下一页</button></body>
</html>

demo05--history对象.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>History对象02</title><script>function before(){history.back();}function after(){history.forward();}// history.go(1)  :是返回到上一页// history.go(-1) :是返回到下一页// history.go(0)  :是刷新页面</script></head><body><a href="demo06--history对象.html">第三页</a><button onclick="before()">上一页</button><button onclick="after()">下一页</button></body>
</html>

demo06--history对象.html

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>History对象03</title><script>function before(){history.back();}</script></head><body><a href="demo04--history对象.html">第一页</a><button onclick="before()">上一页</button></body>
</html>

1.3 Location对象

Location对象是window对象的一部份,可以通过window.location属性来访问

location表示是当前浏览器的地址对象。浏览器的地址中主要保存的是访问某个网站的url地址

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>location对象</title><script>function baidu(){location.assign("http://www.baidu.com");}function sina(){location.replace("http://www.sina.com.cn");}</script></head><body><button onclick="baidu()">百度</button><button onclick="sina()">新浪</button></body>
</html>

2、Dom对象

Dom对象: Document Object Model  文档对象模型

W3C组织规定:

        当浏览器把一个html文件加载到内存中之后,这个html文件,就是一个Document对象。并且在浏览器加载html文件中的所有标签时,把html文件中的所有标签页加载成不同的标签对象,以及标签中的属性,也加载成属性对象,标签中的文本也加载成文本对象。

        浏览器在加载某个标签时,标签的文本数据,被加载成当前标签的一个子标签。当我们把一个html文件加载完成之后,他们就得到这个html文件中的所有标签,属性,文本对象。可以使用js技术结合Document对象,对html文件中的所有标签,进行各种操作。

        在浏览器把html文件加载完成之后,标签被称作标签对象(元素节点),标签中的文件称为文本节点(文本对象),标签的属性称为属性节点(属性对象)。

2.1 document对象

Document对象代表整个html文档,可用来访问页面中的所有元素,快速获取html中的页面的标签对象

document.getElementById()

返回指定id对象的引用

document.getElementsByName()

返回指定带有名称的对象集合

document.getElementsTagName()

返回指定带有标签名的对象集合

document.getElementsByClassName()

根据Class属性值获取元素对象们。返回值是一个数组

document.querySelector(id选择器)

根据id选择器,获取元素

document.querySelectorAll(css选择器)

根据css选择器获取元素,返回是一个数组

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Document对象</title><script>window.onload = function(){// getElementById();console.log(document.getElementById("nav").innerText);// querySelector()console.log(document.querySelector("#nav").innerText);// getElementsByTagNam()var aArray = document.getElementsByTagName("a");console.log(aArray)for (var s of aArray) {console.log(s.innerText)}// getElementsByName()var hobbies = document.getElementsByName("hobby");console.log(hobbies)for (var s of hobbies) {console.log(s.value)}// getElementsByClassName()var cls1 = document.getElementsByClassName("d1");console.log(cls1)for (var s of cls1) {console.log(s.innerText)}// querySelectorAll(".hd1") css选择器var cls2 = document.querySelectorAll(".d1");console.log(cls2)for (var s of cls2) {console.log(s.innerText)}}</script></head><body><div id="nav" class="d1">111</div><a href="#" class="d1">链接1</a><a href="#">链接2</a><input type="checkbox" name="hobby" value="sing">唱歌<input type="checkbox" name="hobby" value="dance">跳舞<input type="checkbox" name="hobby" value="rap">rap</body>
</html>

2.2 操作内容

属性名

描述

element.innerText

获取或者修改元素的纯文本内容

element.innerHTML

获取或者修改元素的html内容

element.outerHTML

获取或者修改包含自身的html内容

1. innerText 获取的是纯文本 innerHTML获取的是所有html内容

2. innerText 设置到页面中的是纯文本 innerHTML设置到页面中的html会展示出外观效果

3. innerHTML不包含自身 outerHTML包含自身的html内容

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><style>#myDiv {border: 1px solid red;}</style></head><body><div id="myDiv"><h4>注释</h4>程序猿最讨厌自己写注释,同时也最讨厌别人不写注释</div><script>//获取idlet myDiv = document.getElementById('myDiv');//innerHTML 获取标签中所有内容,包括标签;从对象的起始位置到终止位置的全部内容console.info(myDiv.innerHTML);console.info(myDiv.innerHTML="拉出去");console.info(myDiv.innerHTML+="拉出去");// innerText 获取标签中纯文本内容,不包括标签;console.info(myDiv.innerText);console.info(myDiv.innerText="拉出去");console.info(myDiv.innerText+="拉出去");// outerHTML 获取标签本身,修改标签本身 ,添加标签本身的后面console.info(myDiv.outerHTML);console.info(myDiv.outerHTML="<h1>别人从不写注释,不写文档... </h1>");console.info(myDiv.outerHTML +="<h1>别人从不写注释,不写文档... </h1>");</script></body>
</html>

2.3 操作节点

createElement(标签名称)

创建标签

appendChild

为某一个标签,去添加子标签

removeChild

为某一个标签,删除孩子标签

setAttribute

为某一个标签添属性

removeAttribute

删除某一个标签中的属性

2.3.1 appendChild添加子标签

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>添加子标签--appendChild</title></head><body><ul id="uls"><li>jack</li><li>rose</li></ul><input type="button" onclick="addElement()"  value="添加子标签" /><script>function addElement(){// 创建标签var lis = document.createElement("li");//<li></li>// 给标签中添加内容lis.innerText = "tom";//添加到父标签中document.getElementById("uls").appendChild(lis);}</script></body>
</html>

2.3.2 removeChild删除子标签

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>删除子标签--removeChild</title></head><body><ul id="uls"><li>jack</li><li id="x1">rose</li><li>tom</li><li>mary</li></ul><input type="button" onclick="deleteOne()" value="删除子标签" /><input type="button" onclick="deleteAll()" value="删除全部标签" /><input type="button" onclick="deleteOneByOne()"  value="依次删除子标签" /><script>// 删除指定子标签function deleteOne(){// 找到要删除的指定子标签var li = document.getElementById("x1");// 删除子标签li.parentNode.removeChild(li);}// 删除全部子标签function deleteAll(){// 获取父元素标签var uls = document.getElementById("uls");// 根据父元素获取所有的子元素标签var childs = uls.childNodes;//删除全部,必从后往前遍历,否则无法删除全部for(var i = childs.length - 1; i >= 0; i--){uls.removeChild(childs[i]);}}// 依次删除子标签function deleteOneByOne(){// 获取全部的li元素标签var lis = document.getElementsByTagName("li");// 获取第一个li元素标签var li = lis[0];// 删除第一个元素标签li.parentNode.removeChild(li);}</script></body>
</html>

2.3.3 setAttribute添加属性

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>添加属性--setAttribute</title></head><body><input type="text" name="username"  autocomplete="off"><input type="text" name="username"><input type="text" name="username"><input type="text" name="username"><input type="text" name="username"><script>window.onload = function(){//给所有input添加 autocomplete="off"var tagName = document.getElementsByTagName("input");for (var i = 0; i < tagName.length; i++) {tagName[i].setAttribute("autocomplete","off");}}</script></body>
</html>

2.3.4 removeAttribute删除属性

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>删除属性--removeAttribute</title></head><body><input type="text" name="username"  autocomplete="off"><input type="text" name="username"><input type="text" name="username"><input type="text" name="username"><input type="text" name="username"><script>window.onload = function(){//给所有input添加 autocomplete="off"var tagName = document.getElementsByTagName("input");//遍历for (var i = 0; i < tagName.length; i++) {//移除input框中所有name属性tagName[i].removeAttribute("name");}}</script></body>
</html>

2.4 操作样式

设置一个css样式

js对象.style.样式名='样式值'

批量设置css样式-了解

js对象.style.cssText='属性名:属性值;...'

通过class设置样式【重点】

js对象.className='样式名称1; 样式名称2;...'

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>操作样式</title><style>.mpp {background-color: orange;}</style></head><body><p id="p1">1. 设置一个css样式</p><p id="p2">2. 批量设置css样式</p><p id="p3">3. 通过class设置样式</p><script>// 1. 设置一个css样式// 设置字体大小p1.style.fontSize = "20px";// 设置背景颜色p1.style.backgroundColor = "green";// 设置字体颜色p1.style.color = "red";// 2. 批量设置css样式// 缺点:写起来太痛苦,而且还有耦合性p2.style.cssText = "border:2px solid red; font-size:40px";// 3. 通过class设置样式p3.className = "mpp";</script></body>
</html>

案例

案例1 表单验证

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>注册页面</title><style>*{margin: 0;padding: 0;box-sizing: border-box;}body{background-image: url(./img/bg-01.jpg);background-repeat: no-repeat;background-size: cover;}.nav{height: 300px;width: 500px;/* background-color: white; */font-size: 20px;color: white;margin: 200px auto;padding-top: 10px;}.nav .btn{height: 40px;width: 100px;font-size: 16px;text-align: center;line-height: 40px;border-radius: 15px;margin: 10px 220px;}table tr{height: 40px;line-height: 40px;}.in{height: 30px;width: 280px;text-indent: 5px;font-size: 15px;}</style></head><body><div class="nav"><form action="#" onsubmit="return isSubmit()"><table width="500px"><tr><td width="200px" align="right">用户名:</td><td><input type="text" class="in" placeholder="用户名是以字母开头的3-8位的任意字符" onchange="getUsername(this)" name="username"/><span id="userMess"></span></td></tr><tr><td align="right">密码:</td><td><input type="password" class="in" placeholder="密码由8-16位的字母或数字组成" onchange="getPassword(this)" name="password"/><span id="pwdMess"></span></td></tr><tr><td align="right">手机号:</td><td><input type="tel" class="in" placeholder="请输入手机号" onchange="getPhone(this)" name="phone"/><span id="telMess"></span></td></tr><tr><td align="right">性别:</td><td><input type="radio" name="sex" value="1" checked id="man"/><label for="man">男</label><input type="radio" name="sex" value="0" id="woman"/><label for="woman">女</label></td></tr><tr><td align="right">爱好:</td><td><input type="checkbox" name="hobby" id="music" checked value="music"/><label for="music">听音乐</label><input type="checkbox" name="hobby" id="noval" value="noval"/><label for="noval">看小说</label><input type="checkbox" name="hobby" id="player" value="player"/><label for="player">追剧</label></td></tr><tr><td colspan="2"><input type="submit" value="注册" class="btn" id="btn"/></td></tr></table></form></div><script>let flag1 = false;let flag2 = false;let flag3 = false;function getUsername(e){console.log(e.value)let username = e.value;// 用户名是以字母开头的3-8位的任意字符var reg = /^[a-zA-Z].{2,7}$/;// if(!reg.test(username)){// 	alert("用户名是以字母开头的3-8位的任意字符");// 	// 用户输错时,清除输入框// 	e.value = "";// }// var flag = false;if(reg.test(username)){document.getElementById("userMess").innerHTML = "<font color = 'green'>✔</font>";flag1 = true;} else {document.getElementById("userMess").innerHTML = "<font color = 'red'>✘</font>";flag1 = false;}}function getPassword(e){console.log(e.value);let password = e.value;// 密码由8-16位的字母或数字组成var reg = /^[a-zA-Z0-9]{8,16}$/;// if(!reg.test(password)){// 	alert("密码由8-16位的字母或数字组成");// 	e.value = "";// }// var flag = false;if(reg.test(password)){document.getElementById("pwdMess").innerHTML = "<font color = 'green'>✔</font>";flag2 = true;} else {document.getElementById("pwdMess").innerHTML = "<font color = 'red'>✘</font>";flag2 = false;}}function getPhone(e){console.log(e.value);let phone = e.value;// 手机号由11为纯数字且首字母为1且第二位不为0var reg = /^[1][1-9][0-9]{9}$/;// if(!reg.test(phone)){// 	alert("你输入的手机号不正确,请重新输入");// 	e.value = "";// }// var flag = false;if(reg.test(phone)){document.getElementById("telMess").innerHTML = "<font color = 'green'>✔</font>";flag3 = true;} else {document.getElementById("telMess").innerHTML = "<font color = 'red'>✘</font>";flag3 = false;}}function isSubmit(){if (flag1 && flag2 && flag3){return true;}else{return false;}}</script></body>
</html>

案例2:全选全不选

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>全选全不选</title></head><body><input type="checkbox" id="input" onclick="checkAll()" />全选/全不选<br /><input type="checkbox" name="hobby" value="足球" />足球<br /><input type="checkbox" name="hobby" value="篮球" />篮球<br /><input type="checkbox" name="hobby" value="游泳" />游泳<br /><input type="checkbox" name="hobby" value="唱歌" />唱歌<br /><br /><input type="button" name="checkall" id="checkall" value="全选"/><input type="button" name="checkall" id="checkallNo" value="全不选" onclick="checkAllNo()"/><input type="button" name="checkall" id="checkReverse" value="反选" onclick="checkReverse()"/><script>// 全选window.onload = function(){// 页面加载完毕,获取全选按钮var checkall = document.getElementById("checkall");checkall.onclick = function(){// 根据name属性获取所有的复选框var hobbies = document.getElementsByName("hobby");// 遍历数组for (var i = 0; i < hobbies.length; i++) {// 为每个复选框的checked属性设置true,表示选中状态hobbies[i].checked = true;}}}// 全不选function checkAllNo(){// 根据name属性获取所有的复选框var hobbies = document.getElementsByName("hobby");// 遍历数组for (var i = 0; i < hobbies.length; i++) {// 为每个复选框的checked属性设置true,表示选中状态hobbies[i].checked = false;}}// 反选function checkReverse(){// 根据name属性获取所有的复选框var hobbies = document.getElementsByName("hobby");// 遍历数组for (var i = 0; i < hobbies.length; i++) {// 如果为hobbies[i]true修改为false,如果为false修改为true/* if(hobbies[i].checked == true){hobbies[i].checked = false}else{hobbies[i].checked = true} */hobbies[i].checked = !hobbies[i].checked}}// 全选/全不选function checkAll(){var btn = document.getElementById("input");// 根据name属性获取所有的复选框var hobbies = document.getElementsByName("hobby");// 遍历数组for (var i = 0; i < hobbies.length; i++) {// 如果为hobbies[i]true修改为false,如果为false修改为true/* if(btn.checked == true){hobbies[i].checked = true}else{hobbies[i].checked = false} */hobbies[i].checked = btn.checked}}</script></body>
</html>

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

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

相关文章

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32EC11编码器实现增减调节及单击、双击、长按功能 &#x1f4fa;实现效果演示&#xff1a; &#x1f4d8;内容提要 &#x1f4dd;本文主要实现&#xff0c;通过STM32 HAL库开发&#xff0c;实现的EC11编码器功能&#xff0c;按键结合状态机思想实现的拓展单击、双击、…

Web--HTML基础

文章目录 安装环境HTMLhtml框架html基础标签语义标签html特殊符号 安装环境 安装vscode后 安装插件 可以先不写后台直接将前度界面展示出来 自动补全tag&#xff0c;同时修改tag时自动改另一半 在设置里将保存自动格式化的选项勾上 创建一个index.htm文件&#xff0c;这个…

力扣80、删除有序数组中的重复项Ⅱ(中等)

1 题目描述 图1 题目描述 2 题目解读 对于有序数组nums&#xff0c;要求在不使用额外数组空间的条件下&#xff0c;删除数组nums中重复出现的元素&#xff0c;使得nums中出现次数超过两次的元素只出现两次。返回删除后数组的新长度。 3 解法一&#xff1a;双指针 双指针法可以…

防御第三次作业-防火墙组网实验(3)

目录 实验拓扑图 要求 1 2 针对10.0.2.10设备的安全策略&#xff1a; 针对10.0.2.20设备的安全策略&#xff1a; 3 4 实验拓扑图 各设备ip和接口已配好&#xff0c;均可可ping通防火墙。 要求 1.生产区在工作时间内可以访问dmz区域&#xff0c;仅可以访问http服…

Kali如何启动SSH服务并实现无公网ip环境远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

最佳的reCAPTCHA v3验证码解析器,使用API或扩展自动解析reCAPTCHA v3

在在线安全领域&#xff0c;reCAPTCHA v3作为一种重要工具&#xff0c;用于保护网站免受自动机器人和恶意活动的侵害。在本文中&#xff0c;我们探讨了Capsolver的能力&#xff0c;这是征服reCAPTCHA v3挑战的终极解决方案。凭借其先进的功能&#xff0c;包括API集成和多功能的…

AI新工具(20240124) ComfyUI-InstantID-ComfyUI下的非官方InstantID实现;Lumiere是由谷歌时空扩散模型

ComfyUI-InstantID-ComfyUI下的非官方InstantID实现 ComfyUI InstantID是对InstantID的非官方实现&#xff0c;支持本地和huggingface hub模型&#xff0c;同时支持通用styler。它包括基础模型加载、InsightFace模型加载、ID ControlNet模型加载、Ipadapter_instantid模型加载…

【ProtoBuf】使用指南

一.什么是ProtoBuf 特点&#xff1a;ProtoBuf是用于序列化和反序列化的一种方法&#xff0c;类似xml和json&#xff0c;但是效率更高&#xff0c;体积更小。ProtoBuf具有语⾔⽆关、平台⽆关&#xff0c;扩展性、兼容性好等特点。 ProtoBuf是需要依赖通过编译生成的头文件和源…

oracle 12 查询数据库锁

在Oracle 12c中&#xff0c;查询数据库锁信息可以通过以下视图进行&#xff1a; v$locked_object&#xff1a;这个视图显示了当前被锁定的对象&#xff08;如表、行等&#xff09;的信息。 SELECT l.session_id sid, s.serial#, l.locked_mode,o.object_name,s.osuser,s.userna…

1.25学习总结

今天学习了二叉树&#xff0c;了解了二叉树的创建和遍历的过程 今天所了解的遍历过程主要分为三种&#xff0c;前序中序和后序&#xff0c;都是DFS的想法 前序遍历&#xff1a;先输出在遍历左节点和右节点&#xff08;输出->左->右&#xff09; 中序遍历&#xff1a;先…

网络工程师:新兴科技基础知识面试题(十四)

116.简述模拟信号到数字信号是怎么转化的。 模拟信号到数字信号的转化过程是通过模数转换器&#xff08;ADC&#xff09;完成的&#xff0c;该过程也被称为采样和量化。 1. 采样&#xff1a; 模拟信号是连续的&#xff0c;而数字信号是离散的。在转换过程中&#xff0c;模拟信…

ip数据库.

IP库(也叫IP地址数据库)&#xff0c;是由专业技术人员经过长时间通过多种技术手段收集而来的&#xff0c;并且长期有专业人员进行更新、维护、补充。 IP库里面存放了大量的IP地址&#xff0c;方便用户查询&#xff0c;比如&#xff0c;你知道了某个IP&#xff0c;就可以查到这…

华为云磁盘性能指标(参考)

MD[华为云磁盘性能指标(参考)] 云硬盘&#xff08;Elastic Volume Service, EVS&#xff09; 根据性能&#xff0c;磁盘可分为极速型SSD V2、极速型SSD、通用型SSD V2、超高IO、通用型SSD、高IO、普通IO。 性能指标(参考)&#xff0c;测速说明&#xff1a;操作系统-windows …

如何配置Tomcat服务环境并实现无公网ip访问本地站点

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器&#xff0c;不仅名字很有趣&#xff0…

conda环境下使用youtube_dl模块下载youtube视频异常解决方法

1 问题描述 使用python的youtube_dl模块下载youtube视频时失败&#xff0c;错误信息如下&#xff1a; ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/up…

LeeCode 438.找到字符串中所有字母异位词.

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s “cbaebabacd”, p “abc” 输出:…

jquery练习

jquery练习 1.多图片展示 <!doctype html> <html> <head> <meta charset"utf-8"> <title>多图片展示效果</title> <link href"zns_style.css" rel"stylesheet" type"text/css" /> <sc…

从 Apk 提取代码到单独 dex

从 Apk 提取代码到单独 dex Android 中动态加载是指应用程序在运行时加载和执行 Dex 文件的过程&#xff0c;可以在运行时加载不同的代码或功能&#xff0c;而无需重新编译整个应用程序&#xff0c;动态加载 Dex 文件通常涉及以下步骤&#xff1a; 创建 Dex 文件 我们接触到的…

Redis的五种常用数据类型详解及相关面试问题

目录 Redis的五种常用数据类型详解 简述 Redis五种基本数据类型 String字符串 常用命令 应用场景 Hash散列表 常用命令 使用场景 List链表 常用命令 应用场景 Set( 集合) 常用命令 应用场景 SortedSet( 有序集合) zset 常用命令介绍 应用场景 面试题常问的数…

【Pytorch 第一讲】 如何加载预训练模型

一. 封装Pytorch的Model 加载pre-trianed Model import torch import torchvision.models as models from torchvision import transforms# 1. 下载并加载预训练模型 model models.resnet18(pretrainedFalse) # 设置pretrainedFalse&#xff0c;表示不加载预训练权重# 2. 下载…