JavaScript的学习之BOM和DOM,就这一篇就OK了!(超详细)

目录

Day28 JavaScript(2)

1、BOM对象

1.1 window对象

1.2 Location ( 地址栏)对象

1.3 本地存储对象

2、DOM对象(JS核心)

2.1 查找标签

2.2 绑定事件

2.3 操作标签

2.4 常用事件


Day28 JavaScript(2)

1、BOM对象

BOM:Broswer object model,即浏览器提供我们开发者在javascript用于操作浏览器的对象。

1.1 window对象

  • 窗口方法

// BOM  Browser object model 浏览器对象模型
​
// js中最大的一个对象.整个浏览器窗口出现的所有东西都是window对象的内容.
console.log( window );
​
// alert()  弹出一个警告框
window.alert("hello");
​
//confirm  弹出一个确认框,点击确认,返回true, 点击取消,返回false
var ret = confirm("您确认要删除当前文件么?");
console.log( ret  );
​
// 弹出一个消息输入框,当点击确认以后,则返回可以接收到用户在输入框填写的内容.如果点击取消,则返回null
var ret = prompt("请输入一个内容","默认值");
console.log( ret );
​
// close() 关闭当前浏览器窗口
window.close();
​
//打开一个新的浏览器窗口
window.open("http://www.baidu.com","_blank","width=800px,height=500px,left=200px,top=200px";
  • 定时方法

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。而setTimeout是在指定的毫秒数后调用code一次。 ​

// 设置循环定时器
var ID = window.setInterval(code,millisec)   // 每millisec毫秒执行一次code
// 取消循环定时器
window.clearInterval(ID);
​
// 设置单次定时器
var ID = window.setTimeout(code,millisec) // millisec毫秒后执行code一次
// 取消单次定时器
window.clearTimeout(ID);

其中,code为要调用的函数或要执行的代码串。millisec周期性执行或调用 code 之间的时间间隔,以毫秒计。

显示时间案例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
​
<input id="ID1" type="text" >
<button onclick="begin()">开始</button>
<button onclick="end()">停止</button>
​
<script>function showTime(){var nowd2=new Date().toLocaleString();var temp=document.getElementById("ID1");temp.value=nowd2;
​}var ID;function begin(){if (ID==undefined){showTime();ID=setInterval(showTime,1000);}}function end(){clearInterval(ID);ID=undefined;}
​
</script>
​
</body>
</html>

1.2 Location ( 地址栏)对象

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<button onclick="func1()">查看Location对象</button>
<button onclick="func2()">跳转到百度</button>
<button onclick="func3()">F5</button>
<script>function func1(){console.log( location );}// 地址栏对象控制和操作地址栏// 所谓的地址就是当前页面所在地址// 地址结构:// 协议://域名:端口/路径/文件名?查询字符串#锚点console.log( `协议=>${location.protocol}` );console.log( `端口=>${location.port}` );console.log( `域名=>${location.hostname}` );console.log( `域名:端口=>${location.host}` );console.log( `路径=>${location.pathname}` );console.log( `查询字符串=>${location.search}` );console.log(`完整的地址信息=>${location.href}`);
​function func2(){// location.href="http://www.baidu.com"; // 页面跳转location.assign("http://www.baidu.com"); // 页面跳转}
​function func3(){location.reload(); // 刷新页面}
</script>
</body>
</html>

1.3 本地存储对象

使用存储对象的过程中, 对象数据会根据域名端口进行保存的,所以 js不能获取当前页面以外其他域名端口保存到本地的数据。也就是说,我们存储对象获取数据只能是自己当前端口或者域名下曾经设置过的数据,一旦端口或者域名改变,则无法获取原来的数据。

localStorage    本地永久存储localStorage.setItem("变量名","变量值");   保存一个数据到存储对象localStorage.变量名 = 变量值               保存一个数据到存储对象
​localStorage.getItem("变量名")   获取存储对象中保存的指定变量对应的数据localStorage.变量名              获取存储对象中保存的指定变量对应的数据
​localStorage.removeItem("变量名")   从存储对象中删除一个指定变量对应的数据localStorage.clear()               从存储对象中删除所有数据
​
sessionStorage  本地会话存储sessionStorage.setItem("变量名","变量值");   保存一个数据到存储对象sessionStorage.变量名 = 变量值               保存一个数据到存储对象
​sessionStorage.getItem("变量名")   获取存储对象中保存的指定变量对应的数据sessionStorage.变量名              获取存储对象中保存的指定变量对应的数据
​sessionStorage.removeItem("变量名")   从存储对象中删除一个指定变量对应的数据sessionStorage.clear()               从存储对象中删除所有数据

练习:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<button onclick="func1()">设置一个数据</button>
<button onclick="func2()">查看一个数据</button>
<script>function func1(){localStorage.setItem("name","yuan");}
​function func2(){var ret = localStorage.getItem("name");console.log(ret);}
</script>
</body>
</html>

localStorage和sessionStorage的区别:

1、localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。

2、他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。

3、localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。

4、不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。

 

2、DOM对象(JS核心)

DOM document Object Model 文档对象模型

// 整个html文档,会保存一个文档对象document
// console.log( document ); // 获取当前文档的对象

 

2.1 查找标签

  • 直接查找标签

document.getElementsByTagName("标签名")
document.getElementById("id值")
document.getElementsByClassName("类名")

1、方法的返回值是dom对象还是数组

2、document对象可以是任意dom对象,将查询范围限制在当前dom对象

  • 导航查找标签

elementNode.parentElement           // 父节点标签元素
elementNode.children                // 所有子标签
elementNode.firstElementChild       // 第一个子元素节点 (不包括文本节点)
elementNode.lastElementChild        // 最后一个子标签元素
elementNode.nextElementSibling     // 下一个兄弟标签元素
elementNode.previousElementSibling  // 上一个兄弟标签元素
  • CSS选择器查找

document.querySelector("css选择器")  //根据css选择符来获取查找到的第一个元素,返回标签对象(dom对象)
document.querySelectorAll("css选择器"); // 根据css选择符来获取查找到的所有元素,返回数组
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
​
​
<div id="i1">DIV1</div>
​
<div class="c1">DIV</div>
<div class="c1">DIV</div>
<div class="c1">DIV</div>
​
​
<div class="outer"><div class="c1">item</div>
</div>
​
​
<div class="c2"><div class="c3"><ul class="c4"><li class="c5" id="i2">111</li><li>222</li><li>333</li></ul></div>
</div>
​
<script>// 直接查找
​var ele = document.getElementById("i1");  // ele就是一个dom对象console.log(ele);
​var eles = document.getElementsByClassName("c1"); // eles是一个数组 [dom1,dom2,...]console.log(eles);
​var eles2 = document.getElementsByTagName("div"); // eles2是一个数组 [dom1,dom2,...]console.log(eles2);
​var outer = document.getElementsByClassName("outer")[0];var te = outer.getElementsByClassName("c1");console.log(te);
​// 导航查找
​var c5 = document.getElementsByClassName("c5")[0];console.log(c5);  // c5是一个DOM对象
​console.log(c5.parentElement.lastElementChild);  // 返回值是dom对象console.log(c5.parentElement.children);  // 返回值是dom对象数组console.log(c5.nextElementSibling.nextElementSibling);console.log(c5.parentElement.children);
​// css选择器
​var dom = document.querySelector(".c2 .c3 .c5");console.log(":::",dom);
​var doms = document.querySelectorAll("ul li");console.log(":::",doms);</script>
​
</body>
</html>

2.2 绑定事件

  • 静态绑定 :直接把事件写在标签元素中。

<div id="div" onclick="foo(this)">click</div>
​
<script>function foo(self){           // 形参不能是this;console.log("foo函数");console.log(self);   }
</script>

 

  • 动态绑定:在js中通过代码获取元素对象,然后给这个对象进行后续绑定。

<p id="i1">试一试!</p>
​
<script>
​var ele=document.getElementById("i1");
​ele.onclick=function(){console.log("ok");console.log(this);    // this直接用};
​
</script>

一个元素本身可以绑定多个不同的事件, 但是如果多次绑定同一个事件,则后面的事件代码会覆盖前面的事件代码

多个标签绑定事件

<ul><li>111</li><li>222</li><li>333</li><li>444</li><li>555</li>
</ul>
​
​
<script>
​var eles = document.querySelectorAll("ul li");for(var i=0;i<eles.length;i++){eles[i].onclick = function (){console.log(this.innerHTML)// console.log(eles[i].innerHTML)  // 结果?}}
​
</script>

 

2.3 操作标签

<标签名 属性1=“属性值1” 属性2=“属性值2”……>文本</标签名>
  • 文本操作

<div class="c1"><span>click</span></div>
​
<script>
​var ele =document.querySelector(".c1");
​ele.onclick = function (){// 查看标签文本console.log(this.innerHTML)console.log(this.innerText)}
​ele.ondblclick = function (){// 设置标签文本this.innerHTML = "<a href='#'>yuan</a>"//this.innerText = "<a href='#'>yuan</a>"}
​
</script>
  • value操作

像input标签,select标签以及textarea标签是没有文本的,但是显示内容由value属性决定

    <input type="text" id="i1" value="yuan"><textarea name="" id="i2" cols="30" rows="10">123</textarea><select  id="i3"><option value="hebei">河北省</option><option value="hubei">湖北省</option><option value="guangdong">广东省</option></select>
​
<script>
​// input标签var ele1 =document.getElementById("i1");console.log(ele1.value);ele1.onmouseover = function (){this.value = "alvin"}
​// textarea标签var ele2 =document.getElementById("i2");console.log(ele2.value);ele2.onmouseover = function (){this.innerText = "welcome to JS world!"this.value = "welcome to JS world!"}// select标签var ele3 =document.getElementById("i3");console.log(ele3.value);ele3.value= "hubei"
​
</script>
  • css样式操作

<p id="i1">Hello world!</p>
​
<script>var ele = document.getElementById("i1");ele.onclick = function (){this.style.color = "red"}
</script>

属性操作

elementNode.setAttribute("属性名","属性值")     //设置属性
elementNode.getAttribute("属性名")       
elementNode.removeAttribute("属性名");

并不是所有属性都可以像value那样操作。

  • class属性操作**

elementNode.className
elementNode.classList.add
elementNode.classList.remove

案例:tab切换

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
​<style>*{margin: 0;padding: 0;}
​.tab{width: 800px;height: 300px;/*border: 1px solid red;*/margin: 200px auto;}
​.tab ul{list-style: none;}
​.tab-title{background-color: #f7f7f7;border: 1px solid #eee;border-bottom: 1px solid #e4393c;}
​.tab .tab-title li{display: inline-block;padding: 10px 25px;font-size: 14px;}
​li.current {background-color: #e4393c;color: #fff;cursor: default;}
​.hide{display: none;}
​
​</style>
</head>
<body>
​
​
<div class="tab"><ul class="tab-title"><li class="current" index="0">商品介绍</li><li class="" index="1">规格与包装</li><li class="" index="2">售后保障</li><li class="" index="3">商品评价</li></ul>
​<ul class="tab-content"><li>商品介绍...</li><li class="hide">规格与包装...</li><li class="hide">售后保障...</li><li class="hide">商品评价...</li></ul>
</div>
​
​
<script>var titles = document.querySelectorAll(".tab-title li");var contents = document.querySelectorAll(".tab-content li");for (var i = 0;i<titles.length;i++){titles[i].onclick = function () {// (1) 触发事件标签拥有current样式for (var j = 0;j<titles.length;j++){titles[j].classList.remove("current")}
​console.log(this);this.classList.add("current");
​// (2) 显示点击title对应的详情内容var index = this.getAttribute("index");// console.log(this.getAttribute("index"));// console.log(contents[index]);
​
​for (var z = 0;z<contents.length;z++){contents[z].classList.add("hide");}
​contents[index].classList.remove("hide");}} 
​
</script>
​
</body>
</html>
  • 节点操作

// somenode代指:父标签且是一个dom对象(利用document找到父标签)
​
// 创建节点:
document.createElement("标签名")
// 插入节点
somenode.appendChild(newnode)             // 追加一个子节点(作为最后的子节点) 
somenode.insertBefore(newnode,某个节点)   // 把增加的节点放到某个节点的前边
// 删除节点
somenode.removeChild():获得要删除的元素,通过父元素调用删除
//替换节点
somenode.replaceChild(newnode, 某个节点);

案例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
​
​
<button class="add_btn">添加节点</button>
<button class="del_btn">删除节点</button>
<button class="replace_btn">替换节点</button>
<div class="c1"><h3>hello JS!</h3><h3 class="c2">hello world</h3>
</div>
​
​
<script>
​var add_btn = document.querySelector(".add_btn");var del_btn = document.querySelector(".del_btn");var replace_btn = document.querySelector(".replace_btn");
​var c1 = document.querySelector(".c1");var c2 = document.querySelector(".c2");add_btn.onclick = function () {// 创建节点
​var ele = document.createElement("img");  // <img>ele.src = "https://img2.baidu.com/it/u=1613029778,1507777131&fm=26&fmt=auto&gp=0.jpg"console.log(ele);
​
​// 添加节点// c1.appendChild(ele);
​c1.insertBefore(ele, c2)
​};
​
​del_btn.onclick = function () {// 删除子节点c1.removeChild(c2);};
​
​replace_btn.onclick = function () {
​// 创建替换节点
​var ele = document.createElement("img");  // <img>ele.src = "https://img2.baidu.com/it/u=1613029778,1507777131&fm=26&fmt=auto&gp=0.jpg"console.log(ele);
​// 替换节点c1.replaceChild(ele, c2);
​}
</script>
​
</body>
</html>

2.4 常用事件

  • onload事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
​
​<script>window.onload = function (){ele = document.getElementById("i1")console.log(ele.innerHTML);}</script></head>
<body>
​
<div id="i1">yuan</div>
​
</body>
</html>
  • onsubmit事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
​
</head>
<body>
​
<form action="" id="i1">用户名:<input type="text">密码:  <input type="password"><input type="submit">
</form>
​
​
<script>
​var ele = document.getElementById("i1");var user = document.querySelector("#i1 [type=text]")var pwd = document.querySelector("#i1 [type=password]")ele.onsubmit = function (e){console.log(user.value);console.log(pwd.value);
​return false;    // 终止事件执行// e.preventDefault() // 阻止元素默认行为}
​
</script>
</body>
</html>
  • onchange事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
​
</head>
<body>
​
<select name="provonce" id="s1"><option value="hebei">请选择省份</option><option value="hubei">湖北省</option><option value="hunan">湖南省</option><option value="hebei">河北省</option>
</select>
​
<select name="provonce" id="s2"><option value="hebei">请选择城市</option>
​
</select>
​
<script>
​var  data={"hunan":["长沙","岳阳","张家界"],"hubei":["武汉","襄阳","荆州"],"hebei":["石家庄","保定","张家口"]};console.log(data);var ele =  document.getElementById("s1");var ele2 =  document.getElementById("s2");ele.onchange=function () {console.log(this.value);var citys = data[this.value];console.log(citys);// 清空操作ele2.options.length=1;// 创建标签for (var i=0;i<citys.length;i++){var option =  document.createElement("option"); // </option></option>option.innerHTML=citys[i];ele2.appendChild(option)}}
​
</script>
​
​
</body>
</html>
  • onmouse事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>#container{width: 300px;}#title{cursor: pointer;background: #ccc;}#list{display: none;background:#fff;}
​#list div{line-height: 50px;}#list  .item1{background-color: green;}
​#list  .item2{background-color: rebeccapurple;}
​#list  .item3{background-color: lemonchiffon;}
​
​</style>
</head>
<body>
<div id="container"><div id="title">使用了mouseout事件↓</div><div id="list"><div class="item1">第一行</div><div class="item2">第二行</div><div class="item3">第三行</div></div>
</div>
<script>
​
// 1.不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
​
// 2.只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
​var container=document.getElementById("container");var title=document.getElementById("title");var list=document.getElementById("list");title.onmouseover=function(){list.style.display="block";};
​container.onmouseleave=function(){  // 改为onmouseout试一下list.style.display="none";};
​
/*
​
因为mouseout事件是会冒泡的,也就是onmouseout事件可能被同时绑定到了container的子元素title和list
上,所以鼠标移出每个子元素时也都会触发我们的list.style.display="none";
​
*/
</script>
</body>
</html>
  • onkey事件

<input type="text" id="t1"/>
​
<script type="text/javascript">
​var ele=document.getElementById("t1");
​ele.onkeydown=function(e){console.log("onkeydown",e.key)};
​ele.onkeyup=function(e){console.log("onkeyup",e.key)};
</script>
  • onblur和onfocus事件

<input type="text" class="c1">
​
​
<script>
​var ele = document.querySelector(".c1");
​// 获取焦点事件ele.onfocus = function () {console.log("in")};
​// 失去焦点事件ele.onblur = function () {console.log("out")}
​
</script>
  • 冒泡事件

<div class="c1"><div class="c2"></div>
</div>
​
​
<script>
​var ele1 = document.querySelector(".c1");ele1.onclick = function () {alert("c1区域")};
​var ele2 = document.querySelector(".c2");ele2.onclick = function (event) {alert("c2区域");// 如何阻止事件冒泡event.stopPropagation();}
​
</script>

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

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

相关文章

算法学习 day27

第二十七天 美化数组的最少删除数 2216. 美化数组的最少删除数 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int minDeletion(vector<int>& nums) {int len nums.size();if(len 0) return 0;int res 0,cur 0;for(int i 1;i < len;i)…

企业数字化转型所需的数据在哪里找?企业数据运营有什么用?

现阶段&#xff0c;越来越多企业考虑数字化转型。特别是中小型企业&#xff0c;他们察觉到&#xff1a;数字化转型的关键在于数据的运营。只有通过数据的有效管理和不断挖掘&#xff0c;企业才可以更好地了解市场需求&#xff0c;优化业务流程&#xff0c;提高决策效率&#xf…

[AutoSar]在Davinci developer中mapping Com interface port

目录 关键词平台说明一、实现步骤1.1 新建一个需要接入Com interface 的SWC1.2 Data mapping1.3 选择SWC和信号为分开的还是group1.4 添加前缀后缀1.5 在SWC中使用 关键词 嵌入式、C语言、autosar 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&…

ELK企业级日志分析平台

目录 一、elasticsearch 1、集群部署 2、cerebro部署 3、elasticsearch-head插件部署 4、elasticsearch集群角色分类 二、logstash 1、部署 2、elasticsearch输出插件 3、file输入插件 4、file输出插件 5、syslog 插件 6、多行过滤插件 7、grok过滤 三、kibana数…

微信关键词自动回复有什么用?

微信关键词自动回复有什么用&#xff1f; 关键词回复可以帮助解答客户的高频次问题。 假如&#xff0c;微信可以设置自动回复。。。 你还在担心一个个通过好友手动发欢迎语吗&#xff1f; 遇到常规问题&#xff0c;不用再复制粘贴那个已经回答了一百遍的答案吗&#xff1f;…

新加坡服务器托管-金融企业的选择

新加坡作为一个亚洲金融中心&#xff0c;其优越的地理位置和先进的信息通信技术基础设施&#xff0c;使得其成为了众多金融机构企业选择服务器机房托管的理想地点。金融行业对于服务器的安全性和可靠性要求很高&#xff0c;而将服务器托管在新加坡有许多好处。 首先&#xff0c…

多目标应用:基于多目标粒子群优化算法MOPSO求解微电网多目标优化调度(MATLAB代码)

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、多目标粒子群优化算法MOPSO 多目标粒子群优化算法MOPSO简介&#xff1a; 三、多目标粒子群优化算法MOPSO求解微电网多目标优化调度 &#xff08;1&…

BGP笔记实验

IGP(Interior Gateway Protocol)——内部网关协议 OSPF RIP IS-IS IGRP EIGRP EGP(External Gateway Protocol)——外部网关协议 EGP BGP——边界网关协议 AS——自治系统 由单一组织or机构独立维护的网络设备&网络资源的集合 网络范围太大 自治 AS号 为了区分不同…

电脑监控系统是如何支持远程监控的?

电脑监控系统支持远程监控的方式有多种&#xff0c;以下是其中几种常见的方法&#xff1a; 远程桌面协议 这是一种常见的远程监控协议&#xff0c;它允许用户通过互联网远程访问和控制被监控的电脑。RDP是一种加密的协议&#xff0c;可以保证数据传输的安全性和隐私性。使用RD…

4. Pandas行列操作

4.1 新增列 4.1.1 assign Pandas中的assign&#xff08;&#xff09;函数不仅可以实现不改变原数据情况下新增列&#xff0c;而且可以同时新增多列&#xff0c;还可以配合链式操作使用一行代码完成多个新增列创建&#xff0c;使得代码非常整洁。 &#xff08;1&#xff09;函…

初识树(c语言)

树 定义&#xff1a;树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 有一个特殊的结点&#xff0c;称为根结点&#xff0c;根节点没有前驱结点 除根节点外&#xff0c;其余结点被分成M(M>0)个互不相交…

如何在公网环境下使用笔记本的Potplayer访问本地群晖webdav中的影视资源

文章目录 如何在公网环境下使用笔记本的Potplayer访问本地群晖webdav中的影视资源**那么问题来了&#xff0c;potplayer只能局域网内访问资源&#xff0c;那我不在家中怎么看本地电影&#xff1f;** 本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果…

git撤销某一次commit提交

一&#xff1a;撤销上一次commit提交&#xff0c;但不删除修改的代码 可以使用使用VSCode 二&#xff1a;使用 git reset --hard命令删除提交时&#xff0c;将会删除该提交及其之后的所有更改&#xff08;相当于你想要回滚到的提交的提交ID&#xff09; git reset --hard 版本…

从Hugging Face上手动下载并加载预训练模型

0. 说明&#xff1a; 从 Hugging Face 上下手动载预训练的蛋白质语言模型&#xff08;以ProstT5为例&#xff09;&#xff0c;用模型中的 encoder 部分对蛋白质进行编码&#xff0c;得到 embedding features&#xff0c;用于下游的任务。 【ps. 除了手动下载之外&#xff0c;…

我在CSDN开组会1-蒙特卡洛模拟在矿床学的应用展望

各位老师、同学们&#xff0c;大家好。今天组会的内容是蒙特卡洛模拟在矿床学的应用展望。 为什么要讲蒙特卡洛模拟呢&#xff0c;因为我发现在地质学方面已经有不少应用&#xff0c;但是蒙特卡洛模拟延伸的知识太晦涩了&#xff0c;劝退了很多探究者们。因此&#xff0c;计划…

基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度matlab程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度——陈登勇 主要内容&#xff1a; 以碳交易和碳封存成本、燃煤机组启停和煤耗成本、弃风成本、购气成本之和为目标函数&…

软件设计中如何画各类图之一实体关系图(ER图):数据库设计与分析的核心工具

目录 1 前言2 符号及作用&#xff1a;3 绘制清晰的ER图步骤4 实体关系图的用途5 使用场景6 实际应用场景举例7 结语 1 前言 当谈到数据库设计与分析的核心工具时&#xff0c;实体关系图&#xff08;ER图&#xff09;无疑是其中最重要的一环。在软件开发、信息管理以及数据库设…

听GPT 讲Rust源代码--src/librustdoc

题图来自 Why is building a UI in Rust so hard? File: rust/src/librustdoc/core.rs 在Rust中&#xff0c;rust/src/librustdoc/core.rs文件的作用是实现了Rustdoc库的核心功能和数据结构。Rustdoc是一个用于生成Rust文档的工具&#xff0c;它分析Rust源代码&#xff0c;并生…

【每日一题】设计循环队列(C语言)

循环队列是我们可以对队列有更深一步的理解的题目&#xff0c;而且可以进一步加强其他方面的知识&#xff08;例如对循环数组的取模运算&#xff0c;指针的解引用&#xff09;&#xff0c;是个蛮不错的巩固习题&#xff0c;话不多说&#xff0c;进入正题。 链接在此&#xff1…

docker-compose安装harbor

docker-compose安装harbor 环境&#xff1a;centos7 1、安装docker 官方文档 https://docs.docker.com/engine/install/centos/ 1、卸载旧版本 $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate …