JavaScript——函数、事件与BOM对象

一、系统函数(JS中预置的函数)

JS的预置函数在遇到非数字字符时会停止解析 

parseInt    转整型
parseFloat  转浮点型
isNaN       !isNaN("10") 检测是否纯数字
eval        把字符串转成算式并计算

1.parseInt(string, radix);

语法:

  • string:要解析的字符串。
  • radix:可选参数,表示要解析的数字的基数。取值范围从 2 到 36。如果未指定或值为 0,则基数会根据字符串的格式自动确定。当基数为 10 时(默认值),解析的字符串可以包含小数点。
console.log(parseInt("12.5")); // 12
console.log(parseInt("1a2.5")); // 1
console.log(parseInt("10")); // 10
console.log(parseInt("10.00")); // 10
console.log(parseInt("10.95")); // 10
console.log(parseInt("34 45 66")); // 34
console.log(parseInt("   60   ")); // 60
console.log(parseInt("40 years")); // 40
console.log(parseInt("He was 40")); // NaN,因为字符串中没有数字开头
console.log(parseInt("4.5")); // 4
console.log(parseInt("0x10")); // 16,因为 "0x" 表示十六进制
console.log(parseInt("10.69", 2)); // 2 解析小数点前的二进制数
console.log(parseInt("10", 2)); // 2

2.parseFloat(string);

console.log(parseFloat("10")); // 10
console.log(parseFloat("10.00")); // 10
console.log(parseFloat("10.95")); // 10.95
console.log(parseFloat("34 45 66")); // 34
console.log(parseFloat("   60   ")); // 60
console.log(parseFloat("40 years")); // 40
console.log(parseFloat("He was 40")); // NaN,因为字符串中没有数字开头
console.log(parseFloat("-4.5")); // -4.5
console.log(parseFloat("0x10")); // 0
console.log(parseFloat("10.00px")); // 10

3.isNaN(value);

console.log(!isNaN("10")); // true
console.log(isNaN("10")); // false

4.eval(expression);

console.log(eval("2+3*5")); // 17

注意事项: 

  • 安全性:使用 eval() 可能导致安全问题,因为它可以执行任何传递给它的字符串。如果字符串来自不可信的源,可能会导致代码注入攻击。
  • 性能:eval() 的执行速度通常比直接写代码慢,因为它需要在运行时解析和执行字符串。
  • 调试:使用 eval() 可能会使调试变得更加困难,因为错误信息会指向 eval() 调用,而不是实际的代码位置。

二、自定义函数

自定义函数通俗理解就是:自己封装函数给自己使用。

注意点:

1.js中如果函数名重复,会发生覆盖(注意函数名不要重复,也不要跟变量重复)

2.实参与形参可以不对应,执行结果与预期会不符(使用时,形参要与实参个数对应)

两种函数格式:

1.声明式函数

声明式函数对象:
function 函数名(参数列表 ...){doSomething.......// 如果需要返回值 直接加returnreturn 返回的数据;
}
function myFun(num1) {console.log(num1);
}function myFun(num1, num2) {// debugger// console.log(num1 + num2);return num1 + num2;
}
let total = myFun(10, 20);
console.log(total); // 30

2.匿名函数 

匿名函数定义:
let 变量名(函数名) = function(参数列表...){// console.log(a+b);return a + b;
}
let myFun = function (a, b) {return a + b;
};let total = myFun(5, 6);
console.log(total); // 11

三、变量作用域:

全局变量:整个页面都可以使用,可以在多个函数内共享。
局部变量:函数内可以使用。

函数内如果没声明直接使用的变量 会被js解析器补全为全局变量(不要用这个特性)。

// 全局变量:记录程序执行过程中的数据
let myNum = 1;
let myFun = function () {myNum++;console.log(myNum); // 2// 局部变量:仅对当前的函数体生效// var myNum2 = 5;// let myNum2 = 5;// 如果没有添加let,会自动补全成全局变量(避免在函数内,不声明就使用变量,生成的是全局变量)myNum2 = 5;console.log(myNum2); // 5
};
myFun(); 
console.log(myNum); // 2
console.log(myNum2); // 5

四、JS断点调试

在代码中需要加断电的地方协商debugger; 如果触发代码时会进入断点

F11 一行一行看

F8 跳过断点

五、事件

事件就是js中触发函数的机制。定义出了用户交互的常用事件,来触发自定义函数。

(一)html元素--- >事件--- >函数

<body><input type="button" value="点我" onclick="myTest()" />
</body>
<script>function myTest() {console.log("运行了......");}
</script>

(二)编写JS交互效果的流程(套路)

考虑流程:
1.在哪个元素上加哪个事件,触发哪个函数

操作页面的元素:DOM编程


2.获取哪个元素,操作哪个属性,属性改成什么值

获取元素:doucument.getElementById("id值")  可以获取页面中所有元素 需要搭配id使用

操作属性:
     元素.属性             DOM通用操作
     写操作                  元素.属性 = xxxx
     读操作                  元素.属性
     html元素的属性都可以操作
 
常用属性:属性值参考属性本身的规则
      value       表单元素的值
      type         表单元素类型
      id             元素id
      style        style中还有其他的子样式 参考css
                      color 文字颜色         
                      backgroundColor 背景颜色 
 innerHTML    标签体中的内容 适用于所有的双标签


JS中经常有效果切换的场景(执行的代码相同,赋值不同)

    可以在函数中加上形参,调用时传入实参,例如:οnmοuseοver="changeBGC('green')" 
    实参数据类型:

  •     如果是字符串            'green'
  •     如果是数字                123
  •     如果是boolean值       true 
  •     如果修改的元素与触发的元素是同一个,实参此时可以传this,表示发生事件的元素

传值方式:

1.函数调用时主动传值

2.传this,从元素身上读值,例如select元素可以有多个值,可以借助元素传值

(三)JS中常用事件

1. onclick 鼠标点击事件

<html lang="en"><head><style>.pre {width: 100px;height: 50px;}.myDiv {width: 100px;height: 100px;border: 1px solid black;}</style></head><body><!-- 需求:点击按钮后改变输入框的内容 --><input id="president" type="text" value="拜登" class="pre" /><input type="button" value="换总统" onclick="changePresident()" /><hr /><!-- 需求:点击按钮后更改div的背景颜色 --><div id="myDiv" class="myDiv"></div><input type="button" value="换颜色" onclick="changeColor()" /><hr /><!-- 需求:点击按钮后更改标题文字 --><h1 id="title">总统选举进行中......</h1><input type="button" value="选举结束" onclick="changeTitle()" /></body><script>  function changePresident() {let pre = document.getElementById("president");pre.value = "特朗普";pre.type = "button";pre.style.color = "red";pre.style.fontWeight = "bold";pre.style.fontSize = "30px";}function changeColor() {let myDiv = document.getElementById("myDiv");//   myDiv.style.backgroundColor = "green";myDiv.style.backgroundColor = "#FF0000";// 简写:document.getElementById("myDiv").style.backgroundColor = "green";}function changeTitle() {let title = document.getElementById("title");title.style.color = "red";title.innerHTML = "特朗普当选美国总统!";}</script>
</html>

2. onmouseover 鼠标移入;onmouserout 鼠标移出

<style>.mycls {width: 100px;height: 100px;border: 1px solid black;}</style>
</head>
<body><!-- 需求:鼠标悬浮与离开都更改div的背景色 --><divid="myDiv"class="mycls"onmouseover="changeBGC('blue',this)"onmouseout="changeBGC('white',this)"></div>
</body>
<script>function changeBGC(currentColor, myObj) {myObj.style.backgroundColor = currentColor;}
</script>

3. onfocus 获得焦点;onblur 失去焦点

焦点事件主要用在表单元素

输入框同一时间只有一个框获得输入提示符,获得输入提示符的叫获得焦点

通常用鼠标触发,也可以被tab键触发

<body><!-- 需求:输入内容时,文字颜色是红色;鼠标点击外部时,文字内容为黑色 --><inputtype="text"onfocus="changeTextColor('red',this)"onblur="changeTextColor('black',this)"/><br /><inputtype="text"onfocus="changeTextColor('green',this)"onblur="changeTextColor('black',this)"/><br /><inputtype="text"onfocus="changeTextColor('blue',this)"onblur="changeTextColor('black',this)"/>
</body>
<script>function changeTextColor(currentColor, myObj) {myObj.style.color = currentColor;}
</script>

4. onchange 内容改变

<body><!-- 需求:文本框内容复制 --><input type="text" onchange="setTextVal(this)" /><input id="myText" type="text" />
</body>
<script>function setTextVal(myObj) {document.getElementById("myText").value = myObj.value;}
</script>

内容改变经常用在输入框和下拉列表中

与失去焦点不同的是,onchange在失去焦点时,并且内容发生改变了,才会触发

需求一:文本框内容复制
<body><input type="text" onchange="getTextVal(this)" />
</body>
<script>function getTextVal(myObj) {console.log(myObj.value);}
</script>

 

需求二:下拉列表选取的内容传入后台
<body><!-- 需求:下拉列表选取的内容传入后台 -->请选择希望的旅游地点:<select onchange="showAreaId(this)"><option disabled selected>---请选择---</option><option value="001">北京</option><option value="002">上海</option><option value="003">深圳</option></select><h1>要发送给后台的值是:<span id="showAreaSpan"></span></h1><hr />  
</body>
<script>function showAreaId(myObj) {console.log(myObj.value);document.getElementById("showAreaSpan").innerHTML = myObj.value;}
</script>

需求三:修改div的背景颜色
<body><!-- 需求:修改div的背景颜色 -->请选择页面主题:<select onchange="changeDivGBC(this)"><option disabled selected>---请选择---</option><option value="lightgreen">清新绿</option><option value="orange">温暖橙</option><option value="gray">简约灰</option></select><divid="myDiv"style="width: 200px; height: 200px; border: 1px solid black"></div>
</body>
<script>function showAreaId(myObj) {console.log(myObj.value);document.getElementById("showAreaSpan").innerHTML = myObj.value;}
</script>

5. onload 加载事件

页面加载顺序 从上到下读取和加载

Cannot set properties of null (setting 'value')  相当于空指针异常
Cannot set properties of undefined               变量未定义

onload不常用,一般会把script标签放在body标签下边,保证页面元素加载完成再进行赋值

<script>function myInit() {document.getElementById("myText").value = "早上好";}</script><body onload="myInit()"><input id="myText" type="text" /></body>

6.键盘事件——onkeydown:键盘按下;onkeyup:键盘弹起

系统识别按键,每个按键都有按键码

键盘按下:       onkeydown     阻止某些按键生效
键盘弹起:       onkeyup          读取生效的数据
    

onkeydown            键盘按下
onkeyup                 键盘弹起
// onkeypress         复合事件 很少用

<body><input type="text" onkeyup="getTextVal(event)" />
</body>
<script>function getTextVal(event) {console.log(event.keyCode);}
</script>

7.onkeyup 键盘弹起与正则表达式进行输入框校验

onkeyup表示每次输入后,获取当前值的事件,通常搭配正则表达式来进行输入框的校验

正则表达式:

 

 

// js中 正则表达式 是在两个//中间
let myReg =  /^1(3|4|5|7|8)\d{9}$/
// test 检测字符串是否符合正则表达式
console.log(myReg.test("23333333333"));

输入框校验: 

<body>请输入手机号:<inputid="phoneText"type="text"onkeyup="phoneCheck()"/><span id="phoneSpan"></span>
</body>
<script>function phoneCheck() {// 正则表达式let myReg = /^1(3|4|5|7|8)\d{9}$/;// 获取输入口当前值let phoneTextVal = document.getElementById("phoneText").value;// 校验if (myReg.test(phoneTextVal)) {console.log("格式正确");document.getElementById("phoneSpan").innerHTML = "格式正确";document.getElementById("phoneSpan").style.color = "green";} else {console.log("格式错误");document.getElementById("phoneSpan").innerHTML = "格式错误";document.getElementById("phoneSpan").style.color = "red";}}
</script>

 

8.综合案例——表单校验

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>Document</title><style>img {vertical-align: auto;display: none;}</style></head><body><formaction="/myserver"onsubmit="return allCheck()"method="get"enctype="application/x-www-form-urlencoded"><table><tr><td>请输入姓&emsp;名:</td><td><inputid="usernameId"name="username"type="text"onchange="usernameCheck()"/><img id="usernameImg" src="../imgs/wrong.png" /></td></tr><tr><td>请输入手机号:</td><td><inputid="phoneId"name="userPhone"type="text"onchange="phoneCheck()"/><img id="phoneImg" src="../imgs/wrong.png" /><br /></td></tr><tr><td>请输入邮箱号:</td><td><inputid="emailId"name="userEmail"type="text"onchange="emailCheck()"/><img id="emailImg" src="../imgs/wrong.png" /></td></tr></table><input type="submit" /></form></body><script>let flag = false;function usernameCheck() {let myReg = /^\w{3,15}$/;let usernameVal = document.getElementById("usernameId").value;if (myReg.test(usernameVal)) {document.getElementById("usernameImg").src = "../imgs/ok.png";flag = true;} else {document.getElementById("usernameImg").src = "../imgs/wrong.png";flag = false;}document.getElementById("usernameImg").style.display = "inline-block";return flag;}function phoneCheck() {let myReg = /^1(3|4|5|7|8)\d{9}$/;let phoneVal = document.getElementById("phoneId").value;if (myReg.test(phoneVal)) {document.getElementById("phoneImg").src = "../imgs/ok.png";flag = true;} else {document.getElementById("phoneImg").src = "../imgs/wrong.png";flag = false;}document.getElementById("phoneImg").style.display = "inline-block";return flag;}function emailCheck() {let myReg = /^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/;let emailVal = document.getElementById("emailId").value;if (myReg.test(emailVal)) {document.getElementById("emailImg").src = "../imgs/ok.png";flag = true;} else {document.getElementById("emailImg").src = "../imgs/wrong.png";flag = false;}document.getElementById("emailImg").style.display = "inline-block";return flag;}function allCheck() {return usernameCheck() && phoneCheck() && emailCheck();}</script>
</html>

六、BOM浏览器对象模型

(一)window对象

window对象表示当前窗口;this默认指向当前窗口

window对象中包含其他对象,调用时不需要指明window

注意:

  • alert()函数用于显示一个带有文本消息的模态对话框,用户必须点击“确定”按钮才能继续执行后面的代码。
  • prompt()函数用于显示一个对话框,用户可以输入文本。该函数返回用户输入的字符串,如果用户点击“取消”按钮,则返回null。
  • confirm()函数用于显示一个带有文本消息和“确定”及“取消”按钮的模态对话框。用户必须点击其中一个按钮才能继续执行后面的代码。该函数返回一个布尔值,true表示用户点击了“确定”,false表示用户点击了“取消”。

这些函数会阻止js解析器(js解析器执行引擎读取运行js) 执行,不要使用,一般通过UI库替代

(二)history对象

历史记录对象

对应浏览器前进后退按钮

history 在历史记录里:
        back         前进  
        forward     后退
        go             0表示当前文档    负数表示后退n个文档    正数表示前进n个文档

<body><input type="button" value="后退" onclick="myBack()" />当前页面<input type="button" value="前进" onclick="myForward()" /><input type="button" value="历史移动" onclick="myGo()" />
</body>
<script>function myBack() {history.back();}function myForward() {history.forward();}function myGo() {history.go(-2);}
</script>

(三)location对象

location对象可以可以控制浏览器跳转(意义重大)

location.href属性 浏览器地址栏,可以使用三种路径做页面跳转

location.reload()  刷新当前页面,比history.go(0)更好

页面跳转的方式:

  1. a标签 
  2. 表单提交
  3. location.href    可以使用任意元素做跳转
<body><input type="button" value="跳转页面" onclick="changePage()" /><input type="button" value="刷新页面" onclick="reFreshPage()" />
</body>
<script>function changePage() {// 相对路径location.href = "1内容改变事件.html";// 相对根路径location.href = "/day4_javascript2/1内容改变事件.html";// 绝对路径location.href = "https://www.baidu.com";}function reFreshPage() {location.reload();}
</script>

(四)document对象

document对象用来操作当前页面的html文档

获取元素的常用方法:

getElementById("id值")                                  查找到唯一一个元素
getElementsByClassName("class值")           查找指定class的元素数组
getElementsByTagName("标签名")               查找指定标签名的元素

获取元素的组合使用:

查找第二组元素中的input标签(在元素内部查找指定元素):
 document.getElementById("myDiv").getElementsByTagName("input")    


查找第二组元素中class值是mycls的元素(在元素内部查找指定元素):
 document.getElementById("myDiv").getElementsByClassName("mycls")  

<div><input id="myText" type="text" value="aaa"><input class="mycls" type="text" value="aaa"><input class="mycls" type="text" value="aaa">
</div>
<div id="myDiv"><input id="myText" type="text" value="aaa"><input class="mycls" type="text" value="aaa"><input class="mycls" type="text" value="aaa">
</div>

遍历数组元素的常用方式:

1.基础for循环(标准 有索引 有元素)

for(let i = 0; i< eles.length;i++){eles[i].style.color ="red";
}

2.for in 循环

for(let x in eles){// 需要排除掉元素之外的数据if(eles[x].style!=undefined){eles[x].style.color ="red";}
}

3.for of 循环(语法最简单 没有索引)

for(let x of eles){console.log(x);x.style.color ="red";
}

注意点: 

1.在js中获取class属性 ---> className

2.js中如果调用元素属性不存在 得到的是undefined

         如果获取元素查找不到 得到的是null

(五)open打开窗口;close关闭窗口

<body><input type="button" value="打开新窗口" onclick="myOpen()" /><input type="button" value="关闭窗口" onclick="myClose()" />
</body>
<script>let newWin;function myOpen() {newWin = open("https://www.baidu.com");}function myClose() {newWin.close();}
</script>

(六)定时函数

定时函数:函数的执行器

 页面中 定时可以开启多个定时反复执行setInterval(执行的函数,间隔的毫秒数)clearInterval(taskId) taskId任务编号延时执行setTimeout(执行的函数,间隔的毫秒数)clearTimeout(taskId) taskId任务编号

传入函数三种写法:

1. setInterval("myTest()",1000)    "myTest()" 有引号和括号
2. setInterval(myTest,1000)         myTest     直接函数名 不能加括号 否则会立即执行
3. setInterval(function(){          传入匿名函数 通过匿名函数指定要执行的代码console.log(22222);},1000)

代码示例: 

//开启定时函数
let taskId = setInterval(function(){console.log(22222);},1000)
// 通过任务编号 停止定时
function stopInterval(){clearInterval(taskId)
}

实现按钮点击开始定时任务与结束定时: 

<body><inputid="start"type="button"value="开启定时"onclick="startInterval(this)"/><inputid="stop"type="button"value="结束定时"onclick="stopInterval(this)"/>
</body>
<script>let taskId;function startInterval(myObj) {myObj.disabled = true;taskId = setInterval(function () {console.log(222);}, 1000);}function stopInterval(myObj) {document.getElementById("start").disabled = false;clearInterval(taskId);}
</script>

 

倒计时跳转练习 

<!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><style>.numSpan {color: chocolate;font-size: 20px;}</style></head><body><span id="numSpan" class="numSpan">3</span>秒后页面跳转<span id="docSpan">.</span></body><script>// 延时跳转到百度setTimeout(function () {location.href = "https://www.baidu.com";}, 3000);// 定时变换文字内容setInterval(function () {document.getElementById("numSpan").innerHTML--;}, 1000);// 定时变换.的数量setInterval(function () {document.getElementById("docSpan").innerHTML += ".";if (document.getElementById("docSpan").innerHTML.length == 6) {document.getElementById("docSpan").innerHTML = ".";}}, 200);</script>
</html>

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

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

相关文章

Python酷库之旅-第三方库Pandas(208)

目录 一、用法精讲 971、pandas.MultiIndex.set_levels方法 971-1、语法 971-2、参数 971-3、功能 971-4、返回值 971-5、说明 971-6、用法 971-6-1、数据准备 971-6-2、代码示例 971-6-3、结果输出 972、pandas.MultiIndex.from_arrays类方法 972-1、语法 972-2…

相亲小程序(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时&#xff0c;无意间发现了一个相当给力的系统——相亲小程序管理系统。这个系统不仅功能实用&#xff0c;而且代码结构清晰&#xff0c;易于二次开发。作为一名技术爱好者&#xff0c;我觉得有必要把这个好东西推荐给我的读者们。接下来&#…

spring cloud 入门笔记1(RestTemplate,Consul)

最大感受&#xff1a; spring cloud无非是将spring boot中的各个工作模块拆分成独立的小spring boot&#xff0c;各个模块之间&#xff0c;不再是通过导包什么的&#xff0c;调用而是通过网路进行各个模块之间的调用 工具一&#xff1a;RestTemplate 在Java代码中发送HTTP请…

高性能分布式缓存Redis-高可用部署

一、主从架构搭建 为什么要进行主从架构搭建&#xff0c;一台redis不行吗&#xff1f; ①、持久化后的数据只在一台机器上&#xff0c;因此当硬件发生故障时&#xff0c;比如主板或CPU坏了&#xff0c;这时候无法重启服务器&#xff0c;有什么办法可以保证服务器发生故障时数…

新的恶意软件活动通过游戏应用程序瞄准 Windows 用户

一种新的恶意软件 Winos4.0 被积极用于网络攻击活动。FortiGuard实验室发现&#xff0c;这种先进的恶意框架是从臭名昭著的 Gh0strat 演变而来的&#xff0c;配备了模块化组件&#xff0c;可在受感染的设备上进行一系列恶意活动。 这些攻击已在游戏相关应用程序中发现&#xf…

Python教程笔记(1)

Python教程笔记 3.1.1 数字3.1.2 文本3.1.3 列表4.2 for语句4.3 range()函数4.7 match语句4.8 定义函数4.9.1 默认值参数4.9.3 特殊参数4.9.5. 解包实参列表 对官方教程中自我感觉生疏的知识点做个记录&#xff0c;以便后面回顾。 3.1.1 数字 除法运算 (/) 总是返回浮点数。 如…

C++笔记---异常

1. 异常的概念 1.1 异常和错误 异常通常是指在程序运行中动态出现的非正常情况&#xff0c;这些情况往往是可以预见并可以在不停止程序的情况下动态地进行处理的。 错误通常是指那些会导致程序终止的&#xff0c;无法动态处理的非正常情况。例如&#xff0c;越界访问、栈溢出…

【RabbitMQ】08-延迟消息

1. 延迟消息 2. 死信交换机 正常队列不需要接受消息。 Configuration public class NormalQueueConfig {Beanpublic DirectExchange normalExchange() {return new DirectExchange("normal.direct");}Beanpublic Queue normalQueue() {return QueueBuilder.durable(…

软件测试——认识测试

在本篇文章中&#xff0c;我会给大家说明一下几个问题&#xff1a; 什么是测试软件测试和开发的区别优秀的测试人员需要具备的素质 通过这几个问题&#xff0c;带大家了解测试这个岗位。 1. 什么是测试&#xff1f; 在我们的日常生活中就有很多测试的例子&#xff0c;比如我…

LLMs之PDF:zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略

LLMs之PDF&#xff1a;zeroX(一款PDF到Markdown 的视觉模型转换工具)的简介、安装和使用方法、案例应用之详细攻略 目录 zeroX的简介 1、支持的文件类型 zeroX的安装和使用方法 T1、Node.js 版本&#xff1a; 安装 使用方法 使用文件 URL&#xff1a; 使用本地路径&…

5G 现网信令参数学习(3) - RrcSetup(1)

目录 1. rlc-BearerToAddModList 1.1 rlc-Config 1.1.1 ul-AM-RLC 1.1.2 dl-AM-RLC 1.2 mac-LogicalChannelConfig 2. mac-CellGroupConfig 2.1 schedulingRequestConfig 2.2 bsr-Config 2.3 tag-Config 2.4 phr-Config 2.5 skipUplinkTxDynamic 3. physicalCellG…

力扣 LeetCode 27. 移除元素(Day1:数组)

解题思路&#xff1a; 注意&#xff1a;数组只能覆盖&#xff0c;不能删除 erase方法的复杂度为O( n )而不是O( 1 )&#xff0c;因为需要把删除后后面的数组向前移动 方法一&#xff1a;双层for循环暴力 方法二&#xff1a;快慢指针 fast表示新数组的元素 slow表示新数组元…

Redis - String 字符串

一、基本认识 字符串类型是Redis最基础的数据类型&#xff0c;关于字符串需要特别注意&#xff1a; Redis中所有的键的 类型都是字符串类型&#xff0c;⽽且其他⼏种数据结构也都是在字符串类似基础上构建的&#xff0c;例如列表和集合的 元素类型是字符串类型&#xff0c;所…

树-好难-疑难_GPT

// // Created by 徐昌真 on 2024/11/10. // #include <iostream> using namespace std;template<typename T> struct ListNode{ //新建链表节点T data; //指向下一个子节点 ListNode< TreeNode<T>* > childHead; 这里的 T 是TreeNde类型的…

Mysql数据类型面试题15连问

整数类型的 UNSIGNED 属性有什么用&#xff1f; MySQL 中的整数类型可以使用可选的 UNSIGNED 属性来表示不允许负值的无符号整数。使用 UNSIGNED 属性可以将正整数的上限提高一倍&#xff0c;因为它不需要存储负数值。 例如&#xff0c; TINYINT UNSIGNED 类型的取值范围是 0 ~…

【go从零单排】Mutexes互斥锁

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 语言中&#xff0c;互斥锁&#xff08;Mutex&#xff09;是一种用于保护共…

LLM时代下Embedding模型如何重塑检索、增强生成

文章目录 一、背景二、C-MTEB评测结果三、性能不错的向量模型腾讯Conan系列阿里GTE系列商汤Piccolo系列合合信息acge系列智源BGE系列数元灵Dmeta系列jina系列OpenAI系列 四、业务中选择向量模型有哪些考量五、洞察与总结为什么需要RAG和Embedding向量化技术&#xff1f;RAG 和 …

[SWPUCTF 2022 新生赛]Power! 反序列化详细题解

知识点: PHP反序列化(执行顺序) 构造POP链 代码审计 题目主页: 输入框可以输入内容,习惯性先查看一下页面的源代码,收集信息 发现源码中有提示参数source 先不急,再看一下其他信息 是apache服务器,php版本为7.4.30 url传参 ?sourceindex.php 回显了index.php的源码 …

【go从零单排】Rate Limiting限流

&#x1f308;Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 &#x1f4d7;概念 在 Go 中&#xff0c;速率限制&#xff08;Rate Limiting&#xff09;是一种控制…

【GPTs】MJ Prompt Creator:轻松生成创意Midjourney提示词

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | GPTs应用实例 文章目录 &#x1f4af;GPTs指令&#x1f4af;前言&#x1f4af;MJ Prompt Creator主要功能适用场景优点缺点 &#x1f4af; 小结 &#x1f4af;GPTs指令 中文翻译&#xff1a; 任务说明 您是一款为幻灯片工…