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

19_20 js es6

目录

ES6

一、let 和 const关键字

1.1 var 和 let const的区别?

1.2 let 和const的区别

1.3 关于块级作用域

二、箭头函数

2.1箭头函数的特点

2.2 箭头函数的特殊性

this的问题

arguments参数集合

2.3函数传递参数时的默认值

2.4 箭头函数使用的场景有哪些

三、解构赋值

3.1解构对象

3.2 解构数组

四、对象扩展

五、模板字符串

六、展开运算符

七、 rest运算符 ...

八、新增的数据类型 symbol类型

九、set 和 map 数据结构

9.1 set

9.2 map

十一、JSON的方法 (ES5)

11.1 JSON的两个方法(ES5新增)

11.2 举例说明

十二、es6模块化开发

十三、 练习


 

ES6

  • 之前讲的内容都是es5的内容

  • es6 (ECMASCRIPT6的版本) 2015年,只是版本不同,语法简写

  • 自2015年之后,每年升级一次 现在都es14了

  • 但是es6的改动是最大的,也有人把es6,7,8,9,10... 统称为es6

一、let 和 const关键字

  • 之前都是使用var关键字声明变量

  • 多了let 和 const

  • 和var是有区别的

1.1 var 和 let const的区别?

1、let 和 const 不允许重复声明变量

var num = 10;
var num = 20;
console.log(num);//20let num1 = 10;
let num1 = 20; //报错const num2 = 10;
const num2 = 20;//报错

2、let 和 const声明的变量没有变量提升(没有预解析)

//提升前
console.log(num); //undefined
var num = 100;//提升后
var num;
console.log(num);//undefined
num = 100// console.log(num); // 报错
// let num = 100;console.log(num1);//报错
const num1= 100;

3、let和const声明的变量会有块级作用域

所有{} 的代码块都有块级作用域

function fn(){let num = 100; // 局部作用域
}
console.log(num);//num is not definedif(true){let num1 = 200; //局部作用域
}
// console.log(num1);//num is not definedfor(let i=0;i<3;i++){console.log(i); //局部作用域
}
console.log(i);// i is not definedwhile (condition) {let num2 = 300;
}
console.log(num2);//num2 is not defined

1.2 let 和const的区别

1、let声明的变量可以改变,const声明的变量值不能改变 (const声明的是常量 不能变的量)

let num = 100;
num = 200;
console.log(num);const num1 = 100;
num1 = 200;
console.log(num1); //报错const obj = {name:"张鑫",age:18
}
obj.name = "张鑫鑫";
console.log(obj); //可以修改

1.3 关于块级作用域

// 循环每走一次,就开启一个定时器,循环很快很快就走完了,启动的三个定时器,异步等待// 循环走完,30行的位置  打印出i最终的值  是3// 三个定时器里用的都是i i的值早就循环完变成了3 // 一秒钟之后,i的值一起打印3// for(var i=0;i<3;i++){//     setTimeout(function(){//         console.log(i);//3 3 3  一秒钟之后打印三遍//     },1000)// }// console.log(i);//3===============================================================================// 每循环一次,都会产生一个块级作用域,都会有一个局部变量,最后就有三个局部变量// 每个定时器内部都会使用自己的局部变量for(let i=0;i<3;i++){setTimeout(function(){console.log(i); //0 1 2},1000)}// console.log(i);i is not defined// {//     let i = 0;//     setTimeout(function(){//         console.log(i); //0//     },1000)// }// {//     let i = 1;//     setTimeout(function(){//         console.log(i); //1//     },1000)// }// {//     let i = 2;//     setTimeout(function(){//         console.log(i); //2//     },1000)// }

二、箭头函数

  • es6里的箭头函数就是函数的一种简写形式

  • 注意:声明式函数不能简写成箭头函数

 // 不能写成箭头函数function fn(){}
==========================================// let fn1 = function(){// }let fn1 = ()=>{}
================================================let obj = {// fn:function(){// }fn:()=>{}}

2.1箭头函数的特点

1、如果参数只有一个,小括号可以省略的

参数有2个及以上或者没有参数 括号不能省略了

// let fn = (a)=>{
//     return a+10;
// }let fn = a=>{return a+10;
}
console.log(fn(10));

2.2 箭头函数的特殊性

this的问题


var btn = document.querySelectorAll("button")
btn[0].onclick=function(){console.log(this); //事件处理函数  this执行的是当前的元素
}// 箭头函数内部 没有自己的this
// 箭头函数的this是上下文的this  (箭头函数所处的当前环境的this)
console.log(this);//箭头函数所出的环境位置是这个位置
btn[1].onclick=()=>{console.log(this); //window
}
// 2-在箭头函数定义的位置往上数,这一行可以打印出this
// 因为这里的this是window
// 所以箭头函数内部的this是window
console.log(this); //window
const obj = {fn:function(){console.log(this);  //执行的当前对象},// 箭头函数的this是上下文的this  (箭头函数所处的当前环境的this)// 1-箭头函数内部的this 书写箭头函数位置的上一行一个可以打印出this的位置fn1:()=>{console.log(this);//Window }
}
obj.fn();
obj.fn1();

arguments参数集合

在箭头函数中 不能用arguments

// 在普通函数里通过arguments获取到不确定个数的所有参数
function fn(){console.log(arguments);
}
fn(1,2,3,4)
fn(1,2)
fn(1,2,3,4,5)// 在箭头函数中  不能用arguments
const fn1 = ()=>{console.log(arguments); //报错
}
fn1(1,2)
fn1(1,2,3)
fn1(1,2,3,4)

2.3函数传递参数时的默认值

// 如果调用函数时 传递参数了  就用传来的参数
// 如果没传参数  就用默认值代表
function fn(a,b){a = a || 10; //如果a能取到值 那么就用a的值  取不到就用||后的值b = b || 10;console.log(a,b);
}
fn();
fn(1,2);
=======================================================================
  • 在es6中 可以直接把默认值写到形参的位置

function fn(a=10,b=10){console.log(a,b);
}
fn();
fn(1,2);
  • 默认值方式在箭头函数中也同样

const fn = (a=8,b=7)=>{console.log(a,b);
}
fn();
fn(1,2);

2.4 箭头函数使用的场景有哪些

适用于高阶函数:函数的参数也是一个函数,函数的参数一般写成箭头函数
setTimeout(()=>{},1000);var arr = [1,2,3];
arr.forEach(item=>{console.log(item);
})
arr.map(item=>{})
arr.filter(item=>{})
arr.every(item=>{})
arr.some(item=>{})
.....

三、解构赋值

  • 快速从对象或者数组中取出成员的一个语法方式

3.1解构对象

es5里
let obj = {username:"刘锦扬",age:18,address:"河北省邢台市"
}
// let name = obj.username;
// let age =  obj.age;
// let address = obj.address;
// console.log(name,age,address);es6解构
let obj = {username:"刘锦扬",age:18,address:"河北省邢台市"
}
let {username,age,address} = obj;
console.log(username,age,address)
注意:解构时的变量名 不能乱写  要和obj里的key值一致
let {username} = obj; 如果只用到一个  也可以取出来这一个!!

3.2 解构数组

es5
const arr = ["rose","Jack","TOM"];
let a = arr[0];
let b = arr[1];
let c = arr[2];
console.log(a,b,c);es6
let [a,b,c] = arr;
console.log(a,b,c);

注意:

  • {} 解构对象使用

  • [] 解构数组使用

  • 不能混用

四、对象扩展

  • 当key和value相同时 可以只写属性名

let username = "李福";
let age = 10;
let address = "黑龙江省";// 对象里  key:value的形式
// key 键名   自己定义
// value 键值  // 在es6中 当key和value相同时 可以只写一个
// let obj = {
//     username:username,
//     age:age,
//     address:address
// }let obj = {username,age,address
}
console.log(obj);
  • 对象合并方法 Object.assign

var obj1 = {username:"刘锦扬",age:18,
}var obj2 = {address:"河北省邢台市",sex:"男"
}
// 第一个参数:要合并到哪个对象中去
// 第二个参数:你要合并的是谁
Object.assign(obj1,obj2);
console.log(obj1);
console.log(obj2);

五、模板字符串

  • 在es5中表示字符串使用 单引号或者双引号

  • 在es6中 可以使用反引号 ``

    • 单引号或者双引号 在引号内回车时 会报错

    • `` 内部 不会报错

    • 反引号可以直接在字符串里边拼接变量

    • 需要解析的变量 ${变量}

var username = "杨浩";
let age = 19;
console.log("我的名字是"+username+",我的年龄是"+age);
console.log(`我的名字是${username},我的年龄是${age}`);
==============================================================
var content = [{id:1,con:"你好1"},{id:2,con:"你好2"},{id:3,con:"你好3"}
];var str = "";
content.forEach(item=>{str+=`<li>${item.con}</li>`
})
console.log(str);

六、展开运算符

  • ES6中新增了运算符... 叫做展开运算符

  • 作用:把数组和对象展开

//把obj1的值展开 都给obj2
// var obj1 = {
//     username:"刘锦扬",
//     age:18, 
//     address:"河北省邢台市",
//     sex:"男"
// }// let obj2 = {
//     ...obj1
// }
// console.log(obj2);  
=====================================
// 对象的合并var obj1 = {username:"刘锦扬",age:18
}var obj2 = {...obj1,address:"河北省邢台市",sex:"男"
}
console.log(obj2);

数组的展开

var arr = [1,2,3,4,5];
// console.log(arr[0],arr[1]);
console.log(...arr); //1,2,3,4,5

数组的合并

var arr = [1,2,3,4,5];
var arr1 = [...arr,6];
console.log(arr1);

函数传递参数时

var arr = [1,2,3,4,5];
function fn(){console.log(arguments);
}
fn(...arr)

七、 rest运算符 ...

rest运算符是获取剩余参数,是展开运算符的逆运算

// 是展开运算符的逆运算
// arr这个变量是啥  才能和1,2,3,4,5对应起来!!!// 如果arr是个数组[1,2,3,4,5]  ...arr  得到 1,2,3,4,5
function fn1(...arr){console.log(arr);
}
fn1(1,2,3,4,5);//剩余参数
function fn1(a,b,...arr) {console.log(arr); //[3,4,5]
}
fn1(1, 2, 3, 4, 5);//和arguments类似,但是箭头函数中不能用arguments  在箭头函数里可以用rest运算符

八、新增的数据类型 symbol类型

symbol 是基本数据类型,,表示一个独一无二的值

symbol 函数 :参数用来描述symbol的

基本数据类型:string  number boolean null undefined  symbol
引用数据类型:arr  objlet s1 = Symbol('a');
let s2 = Symbol('a');
console.log(s1===s2);

九、set 和 map 数据结构

之前数据存到 数组里 也可以存到对象里

9.1 set

set 类似数组,,可以存放不会重复的元素

  • 没传参数时

   // set 类似数组  没有索引let s1 = new Set();s1.add(1);s1.add(2);s1.add(3);s1.add(4);s1.delete(2);console.log(s1);s1.forEach(item=>{console.log(item);})
  • 传递参数时

//数组去重
// let s2 = new Set([1,2,3,4,1,2,3,4,1,2]);
// let arr = [...s2];
// console.log(arr);//[1,2,3,4]// 一句话实现数组去重
var arr1 = [1,2,3,4,1,2,3,4,1,2];
// console.log([...new Set(arr1)]);// Array.from  也可以把set结构转为数组
let arr3 = Array.from(new Set(arr1));
console.log(arr3);

9.2 map

map类似对象,可以存放键值对,属性名:属性值 ,,

map的属性名可以是任何类型,,而普通对象的属性名只能是字符串

let obj = {

name:”libai“

}

  let m1 = new Map();m1.set("name","李白");m1.set("age",18);let fn = function(){}m1.set(fn,"bbbb")console.log(m1);console.log(m1.get("name")); console.log(m1.get("age")); console.log(m1.get(fn)); m1.forEach((val,key)=>{console.log(val,key);})

十一、JSON的方法 (ES5)

  • json 是一种特殊的字符串格式,,本质是个字符串

var jsonobj = '{"name":"libai","age":18,"gender":"女"}'var jsonarr = '[{"name":"libai","age":18,"gender":"女"},{"name":"libai","age":18,"gender":"女"},{"name":"libai","age":18,"gender":"女"}]'
  • 对象内部的key 和 value都是用双引号包裹起来的字符串 (必须是双引号)

11.1 JSON的两个方法(ES5新增)

  • JSON.parse() 将json格式的字符串转化为对象

  • JSON.stringify() 将js对象或者数组转换成json格式的字符串

let obj = JSON.parse(jsonObj);//obj js里的对象
let arr = JSON.parse(jsonArr);//arr  js里的数组  
let obj1 = {name: "李白",age: 18
}let arr1 = [{id: 1,goodsname: "小米手机"
}, {id: 2,goodsname: "大米手机"
}]let objstr = JSON.stringify(obj1);
let arrstr = JSON.stringify(arr1);
console.log(objstr);
console.log(arrstr);

11.2 举例说明

存本地存储

存:
// 在本地存储中  只能存字符串!!!!!!
var obj = {name:"李白",age:18
}let arr1 = [{id: 1,goodsname: "小米手机"
}, {id: 2,goodsname: "大米手机"
}]localStorage.setItem("userinfo",JSON.stringify(obj));
localStorage.setItem("goodsinfo",JSON.stringify(arr1));取:
let obj = JSON.parse(localStorage.getItem("userinfo")) ;
console.log(obj);
let arr = JSON.parse(localStorage.getItem("goodsinfo")) 
console.log(arr[0]);

十二、es6模块化开发

历史上,js一直没有模块的体系,无法将一个大项目拆分成互相依赖的小文件,其他语言都有这些功能

在es6中 新增了这个模块化开发

模块化开发主要分成两部

第一步 导出 export

第二步 引入 import

导出

方式1:

module1.js

export let a  = 10;
export let b = 20;
export let c = 30;
export let fn = function(){return "我是模块1的fn函数"
}

方式2:

 let a  = 10;let b = 20;let c = 30;let fn = function(){return "我是模块1的fn函数"
}export {a,b,c,fn
}

引入

main.js

import {a,b,c,fn} from "./09-module1.js";
console.log(a,b,c,fn());//引入时通过as  取别名
import {a as aaa,b,c} from "./09-module2.js";
console.log(aaa,b,c);

页面中使用

<script src="./09-main.js" type="module"></script>

==========================================================

export default 导出

let a  = 10;
let b = 20;
let c = 30;
let fn = function(){return "我是模块1的fn函数"
}export default {a,b,c,fn
}

引入

import customName from "./09-module3.js";
console.log(customName.a);

十三、 练习

1、留言板数据做持久化 2、把代码模块化 (发布是一个模块 删除是一个模块)

01-留言板

<body><input type="text" id="ipt"><button id="btn">发布</button><ul id="ul"></ul><script>var ipt = document.querySelector("#ipt");var btn = document.querySelector("#btn");ul = document.querySelector("#ul");let arr = []; //存放所有留言let str = "";//把缓存中的数组取出来并渲染let localArr = JSON.parse(localStorage.getItem("arr")) || [];if (localArr.length > 0) {arr = localArr}// 写循环去展示arr.forEach(item => {str += `<li><h4>留言内容:${item.content}</h4><span>留言时间:${item.time}</span><button class="del">删除</button></li>`})ul.innerHTML = str;btn.onclick = function () {str = "";let val = ipt.value;let obj = {content: val,time: new Date().getTime()}arr.push(obj);arr.forEach(item => {str += `<li><h4>留言内容:${item.content}</h4><span>留言时间:${item.time}</span><button class="del">删除</button></li>`})ul.innerHTML = str;ipt.value = "";// 为了以后刷新也有数据 ,把arr存入到缓存里// 缓存里只能存字符串的形式  arr这个数组对象处理成json串localStorage.setItem("arr", JSON.stringify(arr));}</script>
</body>

但无法删除,只是数据持久化

02-留言板-封装

<body><input type="text" id="ipt"><button id="btn">发布</button><ul id="ul"></ul><script>var ipt = document.querySelector("#ipt");var btn = document.querySelector("#btn");ul = document.querySelector("#ul");let arr = []; //存放所有留言let str = "";// 页面一加载就让它显示一个列表loadlist();btn.onclick = function () {str = "";let val = ipt.value;let obj = {content: val,time: new Date().getTime()}arr.push(obj);ipt.value = "";// 为了以后刷新也有数据 ,把arr存入到缓存里// 缓存里只能存字符串的形式  arr这个数组对象处理成json串localStorage.setItem("arr", JSON.stringify(arr));loadlist();}// 封装一个函数  功能:显示列表function loadlist() {//把缓存中的数组取出来并渲染let localArr = JSON.parse(localStorage.getItem("arr")) || [];if (localArr.length > 0) {arr = localArr}// 写循环去展示arr.forEach(item => {str += `<li><h4>留言内容:${item.content}</h4><span>留言时间:${item.time}</span><button class="del">删除</button></li>`})ul.innerHTML = str;}</script>
</body>

03-留言板-模块化

模块化把功能抽离出去,尽可能在html里面只用html,js文件都用模块化去写

模块化,创建一个js存放留言板功能。模块化导出,用到谁导出谁。

//模块化,js存放留言板功能
// 导出let arr = []; //存放所有留言let str = "";
// 添加留言export function add(){var ipt = document.querySelector("#ipt");var btn = document.querySelector("#btn");btn.onclick = function () {str = "";let val = ipt.value;let obj = {content: val,time: new Date().getTime()}arr.push(obj);ipt.value = "";// 为了以后刷新也有数据 ,把arr存入到缓存里// 缓存里只能存字符串的形式  arr这个数组对象处理成json串localStorage.setItem("arr", JSON.stringify(arr));loadlist();}}loadlist();// 封装一个函数  功能:显示列表function loadlist() {var ul = document.querySelector("#ul");//把缓存中的数组取出来并渲染let localArr = JSON.parse(localStorage.getItem("arr")) || [];if (localArr.length > 0) {arr = localArr}// 写循环去展示arr.forEach(item => {str += `<li><h4>留言内容:${item.content}</h4><span>留言时间:${item.time}</span><button class="del">删除</button></li>`})ul.innerHTML = str;
}
<body><input type="text" id="ipt"><button id="btn">发布</button><ul id="ul"></ul><script type="module">import {add} from "./liuyan.js";//引入功能 //把add函数解构出来add()//调用一下,这样点击的时候就执行add里面的添加功能了</script></body>

不光是实现功能,连封装,连模块化都讲了

 

相关文章:

19_20 js es6

目录 ES6 一、let 和 const关键字 1.1 var 和 let const的区别&#xff1f; 1.2 let 和const的区别 1.3 关于块级作用域 二、箭头函数 2.1箭头函数的特点 2.2 箭头函数的特殊性 this的问题 arguments参数集合 2.3函数传递参数时的默认值 2.4 箭头函数使用的场景有哪…...

自动化释放linux服务器内存脚本

脚本说明 使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。 脚本用到sync系统命令 sync的作用&#xff1a;sync 是一个 Linux 系统命令&#xff0c;用于将文件系统缓存中的数据强制写入磁盘。 在你执行reboot、poweroff、shutdown命令时&#xff0c;系统会默认执…...

【强化学习】近端策略优化算法(PPO)的理解

本篇博客参考自上海大学刘树林老师的课程。B站课程链接&#xff1a;https://www.bilibili.com/video/BV17t4geUEvQ/?spm_id_from333.337.search-card.all.click&vd_source74af336a587568c23a499122c8ffbbee 文章目录 传统策略梯度训练面临的问题其他方法的改进TRPO算法的贡…...

Java基础 3.30

1.结合练习 /*随机生成10个整数(1-100的范围)保存到数组&#xff0c;并倒序打印以及求平均值、求最大值和最大值的下标&#xff0c;并查找里面是否有8 */ public class ArrayHomework02 {public static void main(String[] args) {int arr[] new int[10];for (int i 0; i &l…...

5.好事多磨 -- TCP网络连接Ⅱ

前言 第4章节通过回声服务示例讲解了TCP服务器端/客户端的实现方法。但这仅是从编程角度的学习&#xff0c;我们尚未详细讨论TCP的工作原理。因此&#xff0c;将详细讲解TCP中必要的理论知识&#xff0c;还将给出第4章节客户端问题的解决方案。 一、回声客户端完美实现 第4章…...

【零基础入门unity游戏开发——2D篇】SpriteMask精灵遮罩组件

考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…...

Java 枚举类 Key-Value 映射的几种实现方式及最佳实践

Java 枚举类 Key-Value 映射的几种实现方式及最佳实践 前言 在 Java 开发中&#xff0c;枚举(Enum)是一种特殊的类&#xff0c;它能够定义一组固定的常量。在实际应用中&#xff0c;我们经常需要为枚举常量添加额外的属性&#xff0c;并实现 key-value 的映射关系。本文将详细…...

JVM 每个区域分别存储什么数据?

JVM&#xff08;Java Virtual Machine&#xff09;的运行时数据区&#xff08;Runtime Data Areas&#xff09;被划分为几个不同的区域&#xff0c;每个区域都有其特定的用途和存储的数据类型。以下是 JVM 各个区域存储数据的详细说明&#xff1a; 1. 程序计数器 (Program Cou…...

chromem-go + ollama + bge-m3 进行文档向量嵌入和查询

Ollama 安装 https://ollama.com/download Ollama 运行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文档嵌入和查询 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…...

PyTorch中卷积层torch.nn.Conv2d

在 PyTorch 中&#xff0c;卷积层主要由 torch.nn.Conv1d、torch.nn.Conv2d 和 torch.nn.Conv3d 实现&#xff0c;分别对应一维、二维和三维卷积操作。以下是详细说明&#xff1a; 1. 二维卷积 (Conv2d) - 最常用 import torch.nn as nn# 基本参数 conv nn.Conv2d(in_channe…...

GO语言学习(16)Gin后端框架

目录 ☀️前言 1.什么是前端&#xff1f;什么是后端&#xff1f;&#x1f300; 2.Gin框架介绍 &#x1f337; 3.Gin框架的基本使用 -Hello&#xff0c;World例子&#x1f337; &#x1f33f;入门示例 - Hello&#xff0c;World &#x1f4bb;补充&#xff08;一些常用的网…...

RAG 在 AI 助手、法律分析、医学 NLP 领域的实战案例

RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;是一种结合信息检索和生成模型的技术&#xff0c;广泛应用于 AI 助手、法律分析、医学 NLP 等领域。 以下是具体的实战案例和技术实现。 1. AI 助手中的 RAG 应用 案例 1&#xff1a;企业…...

大模型-提示词(Prompt)技巧

1、什么是提示词&#xff1f; 提示词&#xff08;Prompt&#xff09;是用户发送给大语言模型的问题、指令或请求&#xff0c;用来明确地告诉模型用户想要解决的问题或完成的任务&#xff0c;是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于大语言模型来说…...

RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)

声明&#xff1a; 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】&#xff0c;结合自身的理解所作&#xff0c;旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源&#xff1a;【Shusenwang】的视频课程【RNN模型及NLP应用…...

硬件与软件的边界-从单片机到linux的问答详解

硬件与软件的边界——从单片机到 Linux 设备驱动的问答详解 在嵌入式开发和操作系统领域&#xff0c;经常会有人问&#xff1a; “如果一个设备里没有任何代码&#xff0c;硬件是不是依然会工作&#xff1f;例如&#xff0c;数据收发、寄存器数据存储、甚至中断触发&#xff…...

5.实现 Channel 类,Reactor 模式初步形成

目录 由联合体epoll_data引出类Channel 结构体epoll_data_t Channel类 Channel类的使用 Epoll类的改变 由联合体epoll_data引出类Channel 在之前使用epoll时&#xff0c;有使用到一个结构体epoll_event // 这是联合体&#xff0c;多个变量共用同一块内存 typedef union…...

深度剖析:U盘打不开难题与应对之策

一、引言 在数字化办公与数据存储的浪潮中&#xff0c;U盘凭借其小巧便携、大容量存储等优势&#xff0c;成为了人们日常数据传输与备份的得力助手。然而&#xff0c;当我们急需调用U盘中的关键数据时&#xff0c;却常常遭遇U盘打不开的棘手状况。U盘打不开不仅会影响工作进度&…...

洛谷题单3-P5721 【深基4.例6】数字直角三角形-python-流程图重构

题目描述 给出 n n n&#xff0c;请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的&#xff0c;如果没有 2 2 2 位则加上前导 0 0 0。 输入格式 输入一个正整数 n n n。 输出格式 输出如题目要求的数字直角三角形。 输入输出样例 输入…...

一起学大语言模型-通过ollama搭建本地大语言模型服务

文章目录 Ollama的github地址链接安装下载需求配置更改安装目录安装更改下载的模型存储位置Ollama一些目录说明日志目录 运行一个模型测试下测试下更改服务监听地址和端口号 Ollama的github地址链接 https://github.com/ollama/ollama 安装 下载 mac安装包下载地址&#xff1…...

AllData数据中台商业版发布版本1.2.9相关白皮书发布

文章末尾网盘链接获取白皮书,本资源通过星球社群不定时更新,加入星球后,请联系市场同事获取相关知识星球社群信息。 一、总体介绍 主要介绍了AllData商业版产品的整体情况,包括产品定位、核心优势、灵活性和扩展性等,已有150个客户使用,社区发展良好。同时,详细解析了…...

uni-app 框架 调用蓝牙,获取 iBeacon 定位信标的数据,实现室内定位场景

背景&#xff1a;最近需要对接了一个 叫 iBeacon 定位信标 硬件设备&#xff0c;这个设备主要的作用是&#xff0c;在信号不好的地方&#xff0c;或者室内实现定位&#xff0c;准确的找到某个东西。就比如 地下停车场&#xff0c;商城里&#xff0c;我们想知道这个停车场的某个…...

leetcode-热题100(3)

leetcode-74-搜索二维矩阵 矩阵最后一列升序排序&#xff0c;在最后一列中查找第一个大于等于target的元素 然后在该元素所在行进行二分查找 bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int n matrixSize;int m matrixColSize[0];in…...

汇编学习结语

一天之内挑战计划太乐观了&#xff0c; 不过还好&#xff0c;这次我总共用了三天完成了系列汇编指令的学习&#xff0c;有的指令也深入进行了验证&#xff0c;输出了系列文章&#xff0c;收获颇多。 接下来我将开启一个专栏&#xff0c;用于记录学习OllyDbg的使用。 OllyDbg使用…...

C++ I/O 流通俗指南

1. std::ostream 是什么&#xff1f; 定义&#xff1a;std::ostream 是 C 标准库中的输出流类&#xff0c;负责将数据输出到各种目标&#xff08;如屏幕、文件、网络等&#xff09;。你可以把 std::ostream 想象成一根“数据水管”&#xff1a; 数据从 C 代码流进 std::ostrea…...

基于python的电影数据分析及可视化系统

一、项目背景 随着电影行业的快速发展&#xff0c;电影数据日益丰富&#xff0c;如何有效地分析和可视化这些数据成为行业内的一个重要课题。本系统旨在利用Python编程语言&#xff0c;结合数据分析与可视化技术&#xff0c;为电影行业从业者、研究者及爱好者提供一个便捷的电…...

【NLP 面经 5】

难以承受的东西只会让我在下一次更平静的面对 —— 25.4.2 一、NER任务&#xff0c;CRF模型改进 命名实体识别&#xff08;NER&#xff09;任务中&#xff0c;你使用基于条件随机场&#xff08;CRF&#xff09;的模型&#xff0c;然而模型在识别嵌套实体和重叠实体时效果不佳&a…...

鸿蒙NEXT小游戏开发:猜小球

1. 引言 “猜小球”是一个经典的益智游戏&#xff0c;通常由一名表演者和多名参与者共同完成。表演者会将一个小球放在一个杯子下面&#xff0c;然后将三个杯子快速地交换位置&#xff0c;参与者则需要猜出最终哪个杯子下面有小球。本文将介绍如何使用HarmonyOS NEXT技术&…...

[NCTF2019]Fake XML cookbook [XXE注入]

题目源代码 function doLogin(){var username $("#username").val();var password $("#password").val();if(username "" || password ""){alert("Please enter the username and password!");return;}var data "…...

Android 防抖和节流

文章目录 Android 防抖和节流概述工具类使用源码下载 Android 防抖和节流 概述 防抖&#xff08;Debounce&#xff09;&#xff1a; 防抖是指在事件被触发后&#xff0c;等待一段时间&#xff0c;如果在这段时间内没有再触发事件&#xff0c;才执行处理函数。如果在这段时间内…...

安徽京准:NTP时间同步服务器操作使用说明

安徽京准&#xff1a;NTP时间同步服务器操作使用说明 3.1 连接天线 天线连接到“ANT”口。 3.2 连接电源 将220V电源线连到AC220V座上或将电源适配器&#xff08;7.5V~12V&#xff09;接到DC口上。也可以同时接上&#xff0c;提高供电可靠性。 3.3 LAN网口 网线连接到NTP…...