序列号和反序列化
序列号和反序列化概述在 JavaScript 中,序列化和反序列化是指将对象转换为 JSON 字符串(序列化)和将 JSON 字符串转换回对象(反序列化)的过程。JavaScript 提供了内置的 JSON 对象来处理这些操作。 序列化(Serialization)序列化是将 JavaScript 对象转换为 JSON 字符串的过程。你可以使用 JSON.stringify() 方法来实现这一点。 12345678const obj = { name: "Alice", age: 30, city: "New York"};const jsonString = JSON.stringify(obj);console.log(jsonString); // 输出: {"name":"Alice","age":30,"city":"New...
函数
函数有名函数12function fn(a, b) { return a + b }console.log(fn(1, 2)) 函数表达式12const fn2 = function (a, b) { return a * b}console.log(fn2(1, 2)) 箭头函数12const add = (a, b) => { return a + b }console.log(add(1, 2)) 特性参数只有一个时,可以省略() 1234567const log = arg => { console.log(arg)}log(666)log('223423') 当函数体只有一句话时,可以省略{},此时箭头函数自带返回值功能 12const add = (a, b) => a + bconsole.log(add(1, 2)) 当返回一个对象时,为了简写,需要给对象加() 简写前: 12345678910111213const state...
模版字符串
模版字符串换行12345678910// let name = 'Jack'// let msg = 'hello world'let name = `Jack`let msg = `hello world`// let htmlStr = '<div class="hot-goods-box"><h>热门商品</h><p>炸了</p></div>'let htmlStr = `<div class="hot-goods-box"> <h>热门商品</h> <p>炸了</p> </div>` 变量内嵌12345let name = 'bit'let age = 9// let str = 'My name is '+ name + ', I...
变量和常量
变量和常量概述变量可以重新赋值,而常量不可以 12345678910111213// 变量let name = 'Jack'let age = 18name = 'ycq'age = 20// 常量const PI = 3.14const articleList = []const user = { name: 'vue3', age: 9} 思考 const 声明的数组可以添加或删除吗 const 声明的对象可以添加或者修改吗 可以的,因为数组和对象在JS中属于引用类型,对其做添加、删除等操作,并不改变内存地址。本质上就是修改指针指向的空间。
Web存储
Web存储概述Web Storage 包含如下两种机制: sessionStorage 该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。 仅为会话存储数据,这意味着数据将一直存储到浏览器(或选项卡)关闭。 数据永远不会被传输到服务器。 存储限额大于 Cookie(最大5MB)。 localStorage 即使浏览器关闭并重新打开也仍然存在。 存储的数据没有过期日期,只能通过 JavaScript、清除浏览器缓存或本地存储的数据来清除。 localStorage 持久性:localStorage 存储的数据是持久的,即使浏览器关闭或计算机重启,数据仍然存在。 作用域:存储的数据在同源(协议、域名和端口相同)的所有页面和标签页中都是共享的。 容量:通常,每个源(origin)的存储限制为5MB(但可能因浏览器而异)。 123456789101112// 存储数据localStorage.setItem('uname', 'ycq')//...
扩展运算符
扩展运算符概述在JavaScript中,扩展运算符(Spread operator)是一种方便的语法,它允许一个表达式在某些地方展开成多个元素(对于数组)或多个键值对(对于对象)。扩展运算符使用三个连续的点(...)来表示。 用途数组中的扩展运算符在数组中,扩展运算符可以将一个数组展开成其包含的元素,并将这些元素插入到另一个数组中,或者用于函数调用时传递数组元素作为单独的参数。 合并数组 1234const arr1 = [1, 2];const arr2 = [3, 4];const combined = [...arr1, ...arr2];console.log(combined); // 输出: [1, 2, 3, 4] 函数调用时传递数组元素 12345function sum(a, b, c) { return a + b + c;}const numbers = [1, 2, 3];console.log(sum(...numbers)); // 输出: 6 复制数组 12345const arr1 = [11, 22,...
Promise
Promise概述123456789101112// 延迟2s输出1,完了之后延迟1s输出2,完了之后之后延迟1s输出3setTimeout(() => { console.log('1')}, 3000)setTimeout(() => { console.log('2')}, 1000)setTimeout(() => { console.log('3')}, 1000) 我们发现这几个setTimeout函数不是串行执行的,而是并行进行的。 同步代码:串行执行,前面的代码先执行,后面的代码后执行。 异步代码:并行执行,同时开始执行,后面的代码不会等待前面的代码执行完毕再执行。 正确写法:嵌套递归的写法 123456789setTimeout(() => { console.log('1') setTimeout(() => { ...
进程概述
进程概述概念进程(Process)是程序关于某数据集合的一次运行活动,由程序代码、数据及进程控制块(PCB)组成。它不仅是系统资源(如内存、文件、CPU时间)的分配单元,也是并发执行的基本实体。 程序:静态的,就存放在磁盘里的可执行文件,如QQ.exe。 进程:动态的,是程序的一次执行过程,如同时执行多次QQ程序。 同一个程序多次执行会对应多个进程。 进程的组成PCB当一个进程被创建时,操作系统产生一个对应数据结构:PCB(Process Control...
进程同步和互斥
...
Ninja
Ninja概述Ninja是一种专注于速度和效率的小型构建系统,最初由Google开发,旨在解决传统构建工具(如Make)在大型项目中的性能瓶颈问题。以下是其核心特点及技术背景的详细介绍: 技术特点与优势 极速构建 增量构建:仅重新编译受影响的文件,通过哈希值而非时间戳判断文件变化,减少不必要的编译步骤。 并行执行:默认根据CPU核心数自动并行化任务,支持手动指定线程数(如-j 8),充分利用多核性能。 简洁与高效 构建规则清晰,仅包含输入、输出和命令,无复杂条件判断或函数,降低维护成本。 与CMake深度集成,可自动生成构建文件,适用于C++、Java等多种语言项目。 跨平台支持 支持Linux、macOS和Windows系统,安装便捷(如Linux通过apt-get install...