当前位置: 首页 > article >正文

ES6相关操作

一.JavaScript的基础语法

1.Demo1.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JavaScript基础语法</title><script>function firstMethod(){var d=new Date()d.setDate(d.getDate()-3)alert(d.toString())}</script><script src="javascript.js"></script>
</head>
<body><input type="button" value="按钮1" onclick="alert('Hello World')"><br><input type="button" value="按钮2" onclick="firstMethod()"><br><input type="button" value="按钮3" onclick="method1()"><br>基础<br>常量和变量<br>声明变量的语法结构:var 变量名=初始值;变量名(标识符):由字母,数字,下划线,$符号组成,不能以数字开头,不能是系统的关键字,常量名大写<br>注释://和/**/<br>Javascript大小写敏感数据类型<br><pre>数据类型:    基本类型:string number boolean特殊类型:null undefined复杂类型:Date Math Array Object   </pre><br>数组的操作<input type="text" id="txtArray" value="123,2,5,96,8,56"><input type="button" value="翻转" onclick="method2(1)"><input type="button" value="排序(按字母排序)" onclick="method2(2)"><input type="button" value="翻转(按数字排序)" onclick="method2(3)"><br>随机数1-30<input type="button" value="1-30随机数" onclick="randomNumber()"><br>数据类型转换:隐式转换--转换函数<br><input type="button" value="隐式转换" onclick="converDate()"><br>显示转换:parseInt\parseFloat\toString\isNaN(是否是数字)<br><input type="text" id="txtDate"><input type="button" value="计算平方" onclick="getSquare()"><br>运算符<br>== ===严格相等(包括类型)三元运算符 表达式?value1:value2<br><input type="text" id="txtNumber" onblur="guess()"><br>流程控制语句:条件(if/else--switch/case) 循环(for while)<br><input type="button" value="累加1到50的和" onclick="getSum()"><br>用户名(3-5位字母和数字的组合)<input type="text" id="txtName" onblur="judgeName()"><br><input type="button" value="方法重载" onclick="tryArguments(10,10)"><br><input type="button" value="函数的定义方式" onclick="testFunction()"><br><input type="button" value="1" onclick="cal(this.value)"><input type="button" value="2" onclick="cal(this.value)"><input type="button" value="3" onclick="cal(this.value)"><input type="button" value="4" onclick="cal(this.value)"><input type="button" value="+" onclick="cal(this.value)"><input type="button" value="-" onclick="cal(this.value)"><input type="button" value="=" onclick="cal(this.value)"><input type="text" id="txtData1"></body>
</html>

二.BOM对象:浏览器对象模型

2.Demo2.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>BOM对象</title><script>//删除提示框function deleteDate(){var r=window.confirm("你是否真的要删除")alert(r)}//打开窗口function openWin(){window.open("http://www.baidu.com","baidu","width=200,height=300,toolbar=yes")}//显示时间function showTime(){var now=new Date()document.getElementById("txtTime").value=now.toLocaleTimeString()}//启动时间var timer;function startTime(){timer=window.setInterval("showTime()",1000)}//停止函数function stopTime(){window.clearInterval(timer)}//定时操作function wait(){window.setTimeout("alert('hello')",3000)}</script>
</head>
<body>删除提示框<input type="button" value="删除文本" onclick="deleteDate()"><br>打开窗口<input type="button" value="打开窗口" onclick="openWin()"><br>有关时间的操作<input type="text" id="txtTime"><input type="button" value="显示时间"onclick="showTime()"><input type="button" value="启动时间"onclick="startTime()"><input type="button" value="停止时间"onclick="stopTime()"><input type="button" value="定时操作"onclick="wait()">
</body>
</html>

三.DOM对象:文档对象模型

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>DOM对象操作</title><script>function testDOM(){//页面中由多少个input元素var n=document.getElementsByTagName("input").length//修改图形var imgObj=document.getElementById("img1")imgObj.src="2.png"//修改链接var linkObj=document.getElementById("link1")linkObj.innerHTML="AAAAA"linkObj.href="http://www.baidu.com"//修改段落var pObj=document.getElementById("p1")pObj.innerHTML="后天也休息"pObj.style.color="red"pObj.style.backgroundColor="green"pObj.style.fontSize="30px"//修改标题样式var h3Obj=document.getElementById("h31")h3Obj.className="mystyle"//列表个数var ulObj=document.getElementById("ul1")var count=0for(var i=0;i<ulObj.childNodes.length;i++){if(ulObj.childNodes[i].nodeName=="LI"){count++}}alert(count)}</script><style rel="stylesheet">.mystyle{border:1px solid #000;}</style>
</head>
<body><input type="button" value="开始" onclick="testDOM()"><br><img src="1.png" id="img1"><a href="#" id="link1">click me</a><p id="p1">明天休息了</p><h3 id="h31">可以利用休息的时间来武装自己</h3><ul id="ul1"><li>1</li><li>2</li><li>3</li></ul>
</body>
</html>

四.综合练习---购物车

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JavaScript5综合练习</title><script>//增加的函数function add(btnObj){//得到传入对象的父对象的所有子对象var nodes=btnObj.parentNode.childNodes;//循环所有的子节点找到文本框对象for(var i=0;i<nodes.length;i++){var child=nodes[i]if(child.nodeName=="INPUT"&&child.type=="text"){var n=parseInt(child.value)n++child.value=n}}//计算小计及总计calSum()}//减少函数function sub(btnObj){//得到传入对象的父对象的所有子对象var nodes=btnObj.parentNode.childNodes;//循环所有的子节点找到文本框对象for(var i=0;i<nodes.length;i++){var child=nodes[i]if(child.nodeName=="INPUT"&&child.type=="text"){var n=parseInt(child.value)n--child.value=n}} //计算小计及总计calSum()}//对表格进行操作function calSum(){//找到表格中所有的trvar tableObj=document.getElementById("table1")//获得表格中的所有行var rows=tableObj.getElementsByTagName("tr")//循环获得每一行var total=0//存放总计的值for(var i=1;i<rows.length;i++){//得到当前行var row=rows[i]//找到价格var price=parseFloat(row.getElementsByTagName("td")[1].innerHTML)//找到数量var num= parseInt(row.getElementsByTagName("td")[2].getElementsByTagName("INPUT")[1].value)//计算小计var sum=price*num//将计算的小计结果给到小计单元格中row.getElementsByTagName("td")[3].innerHTML=sum.toFixed(2)//累加总计total+=sum}//将总计的值赋值给总计元素document.getElementById("totalPrice").innerHTML=total.toFixed(2)}</script>
</head>
<body onload="calSum()"><table border="1" id="table1"><tr><td>名称</td><td>价格</td><td>数量</td><td>小计</td></tr><tr><td>红烧肉</td><td>35</td><td><input type="button" value="-" onclick="sub(this)"><input type="text" value="1" readonly><input type="button" value="+" onclick="add(this)"></td><td></td></tr><tr><td>锅包肉</td><td>45</td><td><input type="button" value="-" onclick="sub(this)"><input type="text" value="2" readonly><input type="button" value="+" onclick="add(this)"></td><td></td></tr><tr><td>回锅肉</td><td>25</td><td><input type="button" value="-" onclick="sub(this)"><input type="text" value="1" readonly><input type="button" value="+" onclick="add(this)"></td><td></td></tr></table>总计:<span id="totalPrice"></span>
</body>
</html>

五.级联操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JavaScript5综合练习</title>
</head>
<body>级联操作:通过一个元素控制另外一个元素中的内容,如省市的选择<br>省:<select id="sel1" onchange="createCities()"><option>---请选择---</option><option>北京</option><option>河南</option><option>辽宁</option><option>河北</option></select>城市:<select id="selCity"><option>---请选择---</option></select><script>//创建数组用于存放城市信息var array=new Array()array[0]=["请选择"]array[1]=["海淀","朝阳"]array[2]=["郑州","开封"]array[3]=["沈阳","大连","鞍山"]array[4]=["石家庄","邯郸"]//创建用于选择城市的函数function createCities(){//获得省份下拉列表中对应的下标值var index=document.getElementById("sel1").selectedIndex//获得对应省份的城市var data=array[index]//清除城市中所包含的原选项var selCity=document.getElementById("selCity")//设置城市子选项的长度为0selCity.options.length=0//加入新选项for(var i=0;i<data.length;i++){var obj=new Option(data[i])selCity.add(obj)}}</script>
</body>
</html>

六.节点操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>节点的操作</title>
</head>
<body><form id="form1"><input type="button" value="添加节点" onclick="addNewNode()"></form><script>function addNewNode(){//找到表单元素var formObj=document.getElementById("form1")//添加文本框var inputTextObj=document.createElement("input")inputTextObj.type="text"inputTextObj.value="doudou"formObj.appendChild(inputTextObj)//添加段落var pObj=document.createElement("p")pObj.innerHTML="孙桂月"formObj.insertBefore(pObj,formObj.firstChild)//添加按钮var btnObj=document.createElement("input")btnObj.type="button"btnObj.value="提交"//为按钮定义事件btnObj.onclick=function(){alert("click me")}formObj.appendChild(btnObj)}</script>
</body>
</html>

七.表格操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>表格操作</title>
</head>
<body>ID:<input type="text" id="txtID">Name:<input type="text" id="txtName"><input type="button" value="添加" onclick="addRow()"><table id="t1" border="1"><tr><td>ID</td><td>Name</td></tr><tr><td>1</td><td>doudou</td></tr></table><script>function addRow(){//获得表格对象var t=document.getElementById("t1")//获得表格的行数var v=t.rows.length//在表格中新增一行var row=t.insertRow(v)//为新增行添加单元格var cell1=row.insertCell(0)cell1.innerHTML=document.getElementById("txtID").valuevar cell2=row.insertCell(1)cell2.innerHTML=document.getElementById("txtName").value}</script>
</body>
</html>

八.练习----随机点名

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>随机点名</title><script>var interFunc;//存放姓名的数组var arr=new Array()arr[0]="张三"arr[1]="李四"arr[2]="王五"arr[3]="赵六"arr[4]="马七"arr[5]="侯八"//根据下标数获取姓名的函数function displayName(index){//将获取的姓名赋值给文本框document.getElementById("name").value=arr[index]}//获得随机数的函数function getRandom(small,big){return small+Math.floor(Math.random()*(big-small+1))}//整合随机数获取姓名function dealFunc(){displayName(getRandom(0,(arr.length-1)))}//运行function run(val){if(val=="开始"){document.getElementById("btn").value="停止"//文本框中滚动出现姓名,回调函数,每隔30毫秒调用一次整合函数interFunc=setInterval("dealFunc()",30)}else{document.getElementById("btn").value="开始"clearInterval(interFunc)}}</script>
</head>
<body><div align="center"><input type="text" id="name" style="width:4em; height:1.2em; font-size: 72px; vertical-align: middle; text-align: center;" readonly><input type="button" id="btn" value="开始" style="width:5em; height:1.2em; font-size: 42px;" onclick="run(this.value)"></div>
</body>
</html>

九.变量的声明及特性

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>变量的声明及特性</title><style>.item{width:100px;height:50px;border:1px solid #000;margin-left:20px;float:left;}</style>
</head><body><script>//声明变量let a;let d,b,c;let e=100let f=120,g='ilovescript',h=[]//注意//1.变量不能重复声明let star='刘德华'//let star='华仔'//2.块级作用域 if else while for {}{let name='周杰伦'}console.log(name)//3.不能在声明前使用//console.log(age)//let age=20// console.log(age)// var age=20//4.不影响作用域链// {//     let goods='显示器'//     function fn(){//         console.log(goods)//     }//     fn()// }</script><div><h2>点击切换颜色</h2><div class="item"></div><div class="item"></div><div class="item"></div></div><script>//获得div元素let items=document.getElementsByClassName('item')//遍历item数组,获得每一个元素,并为元素添加单击事件for(let i=0;i<items.length;i++){items[i].onclick =function(){//设置背景颜色items[i].style.backgroundColor='pink'}}</script>
</body>
</html>

十.常量声明及特点

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>常量声明及特点</title>
</head>
<body><script>//常量:在程序执行的过程中不会发生改变的值称为常量//1.声明常量const SCHOOL='东北大学'//2.常量的特点//2.1.一定要付初始值const CORDID=1;//2.2常量的名字要大写(潜规则)const A=1//2.3常量值不能修改//A=2//2.4可以对数组和对象的元素进行修改const team=['A','B','C']team.push('D')//向数组中追加数据</script>
</body>
</html>

十一.解构赋值

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>解构赋值</title>
</head>
<body><script>//解构赋值:将复杂结构数据拆解开,与简单结构进行数据交互//数组:const F4=['小沈阳','赵四','刘能','宋小宝']let[f1,f2,f3,f4]=F4console.log(f1)console.log(f2)console.log(f3)console.log(f4)const zhaobenshan={name:'赵本山',age:76,sex:'男',sayHi:function(){console.log("我的特长是演小品")}}let {name,age,sex,sayHi}=zhaobenshanconsole.log(name)console.log(age)console.log(sex)sayHi()</script>
</body>
</html>

十二.模板字符串

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>模板字符串</title>
</head>
<body><script>//模板字符串:ES6引入新的字符串的方式"",'',``//1.声明let str=`我是ES6中增加的定义字符串的方式`console.log(str,typeof str)//2.特点//2.1在字符串中可以出现换行let str1=`<ul></ul>`//2.2.变量拼接let name1='鹊刀门2'let out =`${name1}是一部具备东北特色喜剧`console.log(out)</script>
</body>
</html>

十三.函数

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>函数</title>
</head>
<body><script>//函数:JavaScript函数用于执行特定任务或计算功能的代码块。可以重复使用的代码块//语法结构:function 函数名(参数列表){执行过程}//特点:函数可以接收输入的参数,并可以通过return关键字返回数据//优势:函数的优势在于提高代码的可重用性和模块化编程//声明一个函数let fn=function(a,b){console.log(a,b,a+b)return a+b}let sum=fn(1,2)console.log(sum)//ES6允许使用箭头函数let fn1 =(a,b)=>{return a+b}let sum1=fn1(1,2)console.log(sum1)/*注意:关于this的使用在箭头函数中,this是在定义函数的时候绑定的,而不是在执行函数的时候绑定的。this指向的固定化,是因为箭头函数根本没有自己的this,所以不能用作构造函数*/// var x=1;// var obj={//     x:2,//     sayHi:()=>{//         console.log(this.x)//     }// }// obj.sayHi()// //对比普通函数// var obj={//     x:2,//     sayHi:function(){//         console.log(this.x)//     }// }// obj.sayHi()//注意:箭头函数不能构造实例化对象// let Person=(name,age)=>{//     this.name=name;//     this.age=age;// }// let me=new Person('小沈阳',30)// console.log(me)// let Person=function(name,age){//     this.name=name;//     this.age=age;// }// let me=new Person('小沈阳',30)// console.log(me)//注意:箭头函数不能使用arguments//arguments解释:不用形参(函数的参数列表),通过arguments可以记录传入的实参。// function showArguments(){//     console.log(arguments[0],arguments[1])// }// showArguments(1,2)// //注意:箭头函数可以简写// let pow=(n)=>n*n// console.log(pow(9))</script><div id="box" style="width: 200px;height: 200px;background-color: aquamarine;"></div><script>//箭头函数的应用案例//需求1:单击div 2s后颜色变换//获得页面中id值为div的元素let box =document.getElementById("box")//为box元素添加单击事件// box.addEventListener("click",function(){//     let _this=this//     //定时函数//     setTimeout(function(){//         _this.style.background='pink'//     },2000)// })//ES6箭头函数实现,箭头函数可以找到事件源box.addEventListener("click",function(){//定时函数setTimeout(()=>{this.style.background='pink'},2000)})//需求2:从数组中获取偶数的元素const arr=[1,6,9,10,100,21]//filter()过滤器,用于遍历数组的每一个元素// const result=arr.filter(function(item){//     if(item%2==0){//         return true;//     }else{//         return false;//     }// })// console.log(result)//使用箭头函数完成需求// const result=arr.filter((item)=>{//     if(item%2==0){//         return true;//     }else{//         return false;//     }// })//简易写法const result=arr.filter(item=>item%2==0)console.log(result)</script>
</body>
</html>

十四.函数参数的设置

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>函数参数的设置</title>
</head>
<body><script>//在ES6中允许参数赋初值function add(a,b,c=3){}add(1,2)//ES6中支持参数解构function connection({host='127.0.0.1',username,password,prot}){// let host=options.host// let username=options.username}connection({host:'192.168.1.1',username:'root',password:'123123',port:3306})//ES6引入了rest参数,用于替换arguments,注意...args写在最后function date(a,b,...args){console.log(a)console.log(b)console.log(args)}date('小沈阳','赵四','刘能','宋小宝')</script>
</body>
</html>

十五.数组的相关操作

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数组的相关操作</title>
</head>
<body><div></div><div></div><div></div><script>//数组的合并const fenghuang = ['曾毅','玲花']const kaixin = ['沈腾','马丽','艾伦']const kuajie = fenghuang.concat(kaixin)const kuajie1 = [...fenghuang,...kaixin]console.log(kuajie1)//数组的克隆const fh = [...fenghuang]//将伪数组转换成真正的数组数据const divs = document.querySelectorAll('div')//页面中所有的div元素const divArr = [...divs]console.log(divArr)</script>
</body>
</html>

十六.数据类型

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数据类型</title>
</head>
<body><script>//数据类型:在程序执行的过程中可以操作哪些数据种类//在JavaScript中共提供了7种基本数据类型/*USONBu---undefined 空(什么都没有)s---string  字符串 symbol 唯一(ES6中新增的)o---object  对象n---number  数字 null 空值b---boolean 布尔Symbol特点:1.值是唯一的2.不能与其他的数据进行运算3.定义的对象属性不能使用for......in循环遍历*///创建let a=Symbol()console.log(a,typeof a)let b=Symbol('wahaha')let b1=Symbol('wahaha')console.log(b===b1)let c=Symbol.for('wahaha')let c1=Symbol.for('wahaha')console.log(c===c1)//let result=a+100//let result1=b>'gaga'//使用场景var age=Symbol()var person={[Symbol('name')]:'zs',[age]:12}console.log(person.name)console.log(person.age)//symbol内部提供了哪些内置函数</script>
</body>
</html>

十七.Promise

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Promise</title>
</head>
<body><script>//Promise是ES6引入的异步编程工具。// 语法上Promise是一个构造函数,用于封装异步操作并可以获取操作成功或失败的结果//Promise构造函数:Promise(excutor){}//Promise的常用函数:then,catch//实例化Promise对象(创建Promise工具)//     let data="请求数据"//该数据为服务器的数据//     reject(data)// })// //调用Promise的then方法// p.then(function(value){//     //编写响应值// })</script>
</body>
</html>

十八.ECMA的相关操作

#一·ECMA的相关介绍

##1.什么是ECMA,欧洲计算机制造商协会(谷歌,微软,IBM),这个组织的目标是评价,开发和认可电信和计算机的相关标准。1994年更名为ECMA

##2.官网

https://ecma-international.org/

#二.ECMAScript相关介绍

##1.什么是ECMAScript

由ECMA国际通过ECMA-262标准化的脚本程序设计语言,ECMA国际制定了许多标准,而ECMA-262是其中之一

#三.ECMAScript262的发展历史

##1.官网

1.https://ecma-international.org/publications-and-standards/standards/ecma-262/

##2.各版本特点

-第1版本  1997年  制定了语言的基本语法

-第2版本  1998年   略

-第3版本  1999年  引入了正则表达式,异常处理,格式化输出,IE开始支持。

-第4版本  2007年    略

-第5版本  2009年    引入严格模式,JSON,扩展对象,数组,原型,字符串,日期等函数

-第6版本  2015年    模块化,面向对象语法,Promise,箭头函数,let,const,数组解构赋值等

-第7版本  2016年    幂运算符,数组拓展,async/await关键字

-第8版本  2017年    async/await关键字,字符串扩展

-第9版本  2018年    对象解构赋值,正则扩展

-第10版本 2019年   扩展对象,数组方法


十九.使用Promise封装Ajax

//创建可以读取外部文件的工具
const fs=require('fs') //   fs.readFile('为学.md',(err,data)=>{//        if(err) throw err;//如果读取文件失败则输出错误信息//        console.log(data.toString())//   })
//将读取文件的过程封装到Promise中
const p=new Promise(function(resolve,reject){fs.readFile('为学.md',(err,data)=>{//判断是否读取失败if(err) reject(err);//如果读取成功resolve(data)})
})
//配合promise展示数据
p.then(function(value){console.log(value.toString())
},function(reason){console.log("读取失败!!")
})
//使用Promise封装Ajax
//Ajax是ES5中提供的用于异步提交的工具,可以通过该工具实现客户端与服务器端进行数据交互
//Ajax也称为局部提交或局部刷新
//1.创建Ajax对象
const xhr=new XMLHttpRequest()
//2.配置访问地址及访问方式
xhr.open("GET","http://www.baidu.com")
//3.发送数据
xhr.send('向服务端发送的数据')
//4.处理响应结果
xhr.onreadystatechange=function(){//判断响应协议值if(xhr.readyState===4){//4有返回值if(xhr.status >=200 &&xhr.status<300){//表示成功console.log(xhr.response)//打印数据}else{//表示失败console.error(xhr.status)}}
}
//使用Promise封装Ajax
const p1=new Promise((resolve,reject)=>{//1.创建Ajax对象const xhr=new XMLHttpRequest()//2.配置访问地址及访问方式xhr.open("GET","http://www.baidu.com")//3.发送数据xhr.send('向服务端发送的数据')//4.处理响应结果xhr.onreadystatechange=function(){//判断响应协议值if(xhr.readyState===4){//4有返回值if(xhr.status >=200 &&xhr.status<300){//表示成功resolve(xhr.response)//打印数据}else{//表示失败reject(xhr.status)}}}
})
//指定回调
p1.then(function(value){console.log(value)
},function(reason){console.log(reason)
})

相关文章:

ES6相关操作

一.JavaScript的基础语法 1.Demo1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>JavaScrip…...

在Linux上创建一个Docker容器并在其中执行Python脚本

在Linux上创建一个Docker容器并在其中执行Python脚本的过程&#xff0c;涉及多个方面的内容&#xff0c;包括安装Docker、编写Dockerfile、构建镜像、运行容器等。 1. 安装Docker 在Linux上使用Docker之前&#xff0c;你需要确保系统已安装Docker。Docker支持的Linux发行版有…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数

ngx_os_init 声明在 src/os/unix/ngx_os.h ngx_int_t ngx_os_init(ngx_log_t *log); 定义在 src\os\unix\ngx_posix_init.c ngx_int_t ngx_os_init(ngx_log_t *log) {ngx_time_t *tp;ngx_uint_t n; #if (NGX_HAVE_LEVEL1_DCACHE_LINESIZE)long size; #endif#if (NGX…...

【Python项目】基于Python的语音数据及标注核对审核系统

【Python项目】基于Python的语音数据及标注核对审核系统 技术简介&#xff1a; 采用Python技术、MySQL数据库、Django框架等实现。 系统简介&#xff1a; 语音数据及标注核对审核系统是一个基于B/S架构的语音数据处理平台&#xff0c;旨在通过自动化的方式对语音数据进行标…...

深入解析BFS算法:C++实现无权图最短路径的高效解决方案

在无权图中&#xff0c;广度优先搜索&#xff08;BFS&#xff09;是解决最短路径问题的高效算法。接下来博主从专业角度深入探讨其实现细节&#xff0c;并给出C代码示例&#xff1a; 目录 一、核心原理 二、算法步骤 三、C实现关键点 1. 数据结构 2. 边界检查 3. 路径回溯…...

LeetCode刷题---二分查找---441

排列硬币 441. 排列硬币 - 力扣&#xff08;LeetCode&#xff09; 题目 你总共有 n 枚硬币&#xff0c;并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯&#xff0c;其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。 给你一个数字 n &#xff0c;计算…...

Unity结合Vuforia虚拟按键实现AR机械仿真动画效果

零、最终效果 待上传 一、资源准备 1、Vuforia Vuforia版本不能高于10.17.4&#xff08;往上的版本虚拟按键功能被删除&#xff09; 2、Unity Unity版本必须要高于2022.3.x&#xff0c;不然使用Vuforia插件时会出现bug 二、主要内容 1、添加虚拟按钮 2、为虚拟按钮设置…...

网络安全 linux学习计划 linux网络安全精要

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 2.使用命令行 文件系统层次标准&#xff08;FHS&#xff09;是一个文件和目录在Unix和Linux操作系统上面应该如何存储的定义。 /bin 重要的二进制可执行程序/bo…...

深度解析2025最新微服务版本特性

当程序猿张三在凌晨三点对着满屏报错日志抓狂时&#xff0c;他绝对想不到2025年的微服务架构已经进化成了会哄睡的技术保姆。这年头要是谁家系统还像俄罗斯套娃般环环相扣&#xff0c;出门都不好意思跟同行打招呼。且看这群代码世界的乐高大师们&#xff0c;今年又给我们整了哪…...

世界棒球经典赛(World Baseball Classic)·棒球1号位

世界棒球经典赛&#xff08;World Baseball Classic&#xff09;是一项由美国职棒大联盟&#xff08;MLB&#xff09;和国际棒球总会&#xff08;IBAF&#xff0c;现更名为世界棒垒球联盟WBSC&#xff09;共同主办的国际棒球赛事。该赛事吸引了来自世界各地的顶尖棒球队伍参与&…...

为AI聊天工具添加一个知识系统 之115 详细设计之56 知识表征 之2

本文要点 要点 知识表征的顶级范畴中最好是先将九个原语primitive T, ⊥, Independent, Relative, Mediating, Physical, Abstract, Continuant,和 Occurrent 进行分组&#xff08;分成2大组 和 4个小组&#xff09;并写出它们的满足公司&#xff0c;然后将它们和三种设计&am…...

rust 实例化动态对象

在功能开发中&#xff0c;动态创建或获取某个对象的情况很多。在前端JS开发中&#xff0c;可以使用工厂函数&#xff0c;通过给定的类型标识创建不同的对象实例&#xff1b;还可以通过对象映射来实现动态创建对象。 在Rust中&#xff0c;我们也可以使用这两种方式去创建对象实…...

支持向量机 (Support Vector Machine, SVM)

支持向量机 (Support Vector Machine, SVM) 支持向量机&#xff08;SVM&#xff09;是一种广泛应用于分类、回归分析以及异常检测的监督学习算法。它基于结构风险最小化&#xff08;Structural Risk Minimization&#xff0c;SRM&#xff09;原则&#xff0c;通过寻找一个最优…...

C#初级教程(1)——C# 与.NET 框架:探索微软平台编程的强大组合

图片来源&#xff1a; https://www.lvhang.site/docs/dotnettimeline 即梦AI - 一站式AI创作平台 一、历史发展脉络 在早期的微软平台编程中&#xff0c;常用的编程语言有 Visual Basic、C、C。到了 20 世纪 90 年代末&#xff0c;Win32 API、MFC&#xff08;Microsoft Found…...

Mac m1 连接公司内网

1、创建VPN 1、在系统偏好设置 2、选择网络 3、进行添加 2、添加设置 1、选择VPN 2、类型选择L2TP/IPSec 3、填写服务器IP和账号 4、点击认证设置-填写密码 。然后应用 3、进行特殊配置 网上说苹果系统的问题。 1、创建命令 sudo vim /etc/ppp/options 2、添加内容-主要别…...

C++:类与对象,定义类和构造函数

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //如何让定义一个类 // 封装 // 1、将数据和方法定义到一起。 // 2、把想给你看的数据给你看&#xff0c;不想给你看的封装起来。 通过访问限定符来实现 class Stack { public: //1.成…...

杨校老师课堂之信息学奥赛结构体操作使用经典题集锦汇总

C基础:结构体数组综合训练 员工信息处理系统题目描述输入描述输出描述解题思路参考代码 员工信息处理系统 题目描述 在一家企业中&#xff0c;员工信息的准确性和时效性是日常人事管理工作的关键。由于企业员工数量众多&#xff0c;手动统计与更新员工信息不仅耗费大量时间&a…...

8. Flink-CDC

1. Flink-CDC的介绍 Flink-cdc主要是用来同步数据库中的数据&#xff0c;它的主要优势在于基于Flink框架直接用Flink Stream Api 或Flink SQL 直接编程&#xff0c;不需要引入第三方组件 2.Flink-CDC的使用 Flink-cdc在使用上需要注意的点 注意Flink-cdc在2.1版本之前需要导…...

Windows 权限结构和原理:深入浅出

一、什么是权限&#xff1f; 权限&#xff0c;是指在操作系统或应用程序中&#xff0c;某个对象&#xff08;如用户、程序、设备等&#xff09;对特定资源的可操作范围。具体来说&#xff0c;权限控制了一个主体&#xff08;通常是用户或应用程序&#xff09;对某个资源&#…...

Nginx环境安装

一、官网地址 Nginx官网&#xff1a;http://nginx.org/ Nginx中文网&#xff1a;https://nginx.p2hp.com/ 二、Nginx版本 mainline version 开发版本stableversion 稳定版本legacy version 历史版本 三、Windows系统安装Nginx 第一步&#xff1a;选择Windows版本&#xff0c;…...

Spring AI + Ollama 实现调用DeepSeek-R1模型API

一、前言 随着人工智能技术的飞速发展&#xff0c;大语言模型&#xff08;LLM&#xff09;在各个领域的应用越来越广泛。DeepSeek 作为一款备受瞩目的国产大语言模型&#xff0c;凭借其强大的自然语言处理能力和丰富的知识储备&#xff0c;迅速成为业界关注的焦点。无论是文本生…...

android系统SystemServer进程启动流程分析

目录 一,SystemServer整体框架 二,SystemServer启动源码分析 2.1,重要的概念 2.2,启动入口 2.3,创建对应进程的binder 三,binder驱动和binder线程池 四,SystemServer真正启动方法 4.1 SystemServer main方法里面主要做了几件事情 1)创建SystemServiceManager管理所有的…...

【雅思博客06】Daily Life

对话 A: Honey, the house is such a mess! I need you to help me tidy up a bit. My boss and her husband are coming over for dinner, and the house needs to be spotless! B: I’m in the middle of something right now. I’ll be there in a second. A: This can’t …...

Oracle 深入理解Lock和Latch ,解析访问数据块全流程

Oracle 锁机制介绍 根据保护对象的不同&#xff0c;单实例Oracle数据库锁可以分为以下几大类&#xff1a; DML lock&#xff08;data locks&#xff0c;数据锁&#xff09;&#xff1a;用于保护数据的完整性&#xff1b; DDL lock&#xff08;dictionary locks&#xff0c;字典…...

19、《Springboot+MongoDB整合:玩转文档型数据库》

SpringbootMongoDB整合&#xff1a;玩转文档型数据库 摘要&#xff1a;本文全面讲解Spring Boot与MongoDB的整合实践&#xff0c;涵盖环境搭建、CRUD操作、聚合查询、事务管理、性能优化等核心内容。通过15个典型代码示例&#xff0c;演示如何高效操作文档数据库&#xff0c;深…...

如何基于transformers库通过训练Qwen/DeepSeek模型的传统分类能力实现文本分类任务

文章目录 模型与环境准备文档分析源码解读模型训练及推理方式进阶:CPU与显存的切换进阶:多卡数据并行训练🔑 DDP 训练过程核心步骤🚫 DDP 不适用于模型并行⚖️ DDP vs. Model Parallelism⚙️ 解决大模型训练的推荐方法🎉进入大模型应用与实战专栏 | 🚀查看更多专栏…...

Unity中一个节点实现植物动态(Shader)

1 . 核心思路就操作顶点作往复运动&#xff1b; 核心代码&#xff1a; half stage1 dot(positionOS, float3(0, 1, 0)) * _Strength; half stage2 sin(dot(positionOS, float3(1, 0, 0)) * _Strength _Time.y * _Speed); half stage3 stage1 * stage2 * float3(0.001,…...

PrimeTime:工具简介

相关阅读 PrimeTimehttps://blog.csdn.net/weixin_45791458/category_12900271.html?spm1001.2014.3001.5482 PrimeTime是PrimeTime Suite中的一个工具&#xff0c;能够执行全芯片级、门级的静态时序分析&#xff0c;这是芯片设计和分析流程中的一个关键部分。该工具通过检查…...

FFmpeg+WebSocket+JsMpeg实时视频流实现方案

之前写的使用FFmpeg Nginx HLS流媒体播放方案&#xff0c;适合对实时性要求不高的需求&#xff0c;存在延迟&#xff0c;FFmpeg需要将视频流存储到本地文件&#xff0c;而本次方案FFmpeg不需要将视频流存储到本地文件&#xff0c;而是直接将转换后的视频流&#xff08;如MJPE…...

《论系统需求分析方法》写作心得 - 系统分析师

系统需求分析方法论述 一、项目概述及本人职责 本人曾参与一项企业级客户关系管理系统&#xff08;CRM&#xff09;的开发项目&#xff0c;担任系统分析师的角色。该项目旨在为企业提供一个集客户信息管理、销售过程跟踪、客户服务支持于一体的综合管理平台&#xff0c;以提升…...