八股文-js篇
八股文-js篇
- 1. 延迟执行js的方式
- 2. js的数据类型
- 3. null 和 undefined的区别
- 4. == 和 ===的区别
- 5. js微任务和宏任务
- 6. js作用域
- 7. js对象
- 9. JS作用域+this指向+原型
- 8. js判断数组
- 9. slice作用、splice是否会改变原数组
- 10. js数组去重
- 11. 找出数组最大值
- 12. 给字符串新增方法实现功能
- 13. 找出字符串出现最多次数的字符以及次数
- 14. new操作符具体做了什么
- 15. 闭包
- 16. Promise 的三种状态是什么?如何转换?
- 17. Promise.all 和 Promise.race 的区别?
- 18. async/await 的作用是什么?
- 19. async/await 和 Promise 的关系?
- 20. instanceof 和 typeof
- 21. Map
- 22. 箭头函数和普通函数
1. 延迟执行js的方式
defer
(等html全部解析完成,才会执行js代码,按顺序执行)
defer属性只对外部脚本文件有效。这个属性表示脚本在执行的时候不会改变页面的结构,脚本会被延迟到整个页面都解析完毕后(即页面解析到</html>标签后)再运行。不过在实际当中,推迟执行的脚本不一定总会按顺序执行或者在DOMContenLoaded事件之前执行,因此 最好只包含一个这样的脚本。async
(不按顺序执行,谁先加载完谁先执行)
async属性只适用于外部脚本。给脚本添加async实行的目的是告诉浏览器,不必等该脚本下载和执行后再加载页面,同样也不必等该异步脚本下载和执行后再加载其他脚本。因此,异步脚本不应该再加载期间修改DOM。异步脚本保证会在页面的load事件前执行,但可能在DOMContentLoaded之前或之后。一般不推荐。
2. js的数据类型
- 简单数据类型(7种):
undefined
、null
、boolean
、number
、string
、symbol
、bigInt
- 复杂数据类型(1种):
object
console.log(true + 1) // 2
console.log(undefined + 1) // NaN
// 字符串和其他类型相加会有隐式转换
console.log('name' + true) // 'nametrue'
console.log('1' + 1) // '11'
console.log('1' + undefined ) // '1undefined '
console.log(typeof null) // object
3. null 和 undefined的区别
null
:空。undefined
:未定义。
先有null后有undefined。最初设计null时参考了java。null会被隐式转换为0,不容易被发现错误,为了填补这个问题设计出了undefined。
console.log(typeof null) // object
console.log(typeof undefined) // 'undefined'console.log(Number(undefined)) // 0
console.log(Number(undefined)) // NaN
4. == 和 ===的区别
==
:比较值,隐式转换值相等时会判true===
:比较值且比较类型
5. js微任务和宏任务
js是单线程语言,就是同一时间只能做一件事。js的主要用途是和用户互动,为了避免复杂性,单线程就成了js的核心特征。
js代码执行顺序:
- 同步的任务都执行完了才会执行事件循环(包含微任务和宏任务,先执行完微任务再执行宏任务)的内容。
- 先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕。
宏任务和微任务:
- 宏任务:script、setTimeout、setInterval、postMessage
- 微任务:Promise.then ES6、Object.observer、MutationObserver、process.nextTick
- 先执行同步再执行异步,异步遇到微任务,先执行微任务,执行完后如果没有微任务,就执行下一个宏任务,如果有微任务,就按顺序一个一个执行微任务
6. js作用域
- 除了函数外,js没有块级作用域
- 作用域链:内部可以访问外部变量(就近原则),但外部 不能访问内部变量
- 注意声明变量是用var还是没有写(没有写默认window.)
- var变量声明提升机制
- 优先级:声明变量 > 普通函数(普通声明函数是不看函数的顺序的) > 参数 > 变量提升
function c(){var b = 1;function a(){console.log( b ); // undefinedvar b = 2;console.log( b ); // 2}a();console.log( b ); // 1
}
c();
var name = 'a';
(function(){if( typeof name == 'undefined' ){var name = 'b';console.log('111'+name);}else{console.log('222'+name);}
})()
// 111b
function fun( a ){console.log( a ); //ƒ a(){}var a = 10;function a(){}
}
fun( 100 );
7. js对象
- 对象是new出来的,对象不相等(跟存储的是指针有关)
- 对象注意:引用类型
- 对象的key都是字符串类型
- 对象查找某个属性或方法:原型链
console.log([1]==[1]) // false
let a = [1]
let b = a
console.log(a === b) // true
var obj1 = {a:'hellow'
}
var obj2 = obj1;
obj2.a = 'world';
console.log(obj1); //{a:world}
(function(){console.log(a); //undefinedvar a = 1;
})();
var a = {}
var b = {key:'a'
}
var c = {key:'c'
}a[b] = '123';
a[c] = '456';console.log( a[b] ); // 456
9. JS作用域+this指向+原型
function Foo(){getName = function(){console.log(1)} //注意是全局的window.return this;
}Foo.getName = function(){console.log(2)}
Foo.prototype.getName = function(){console.log(3)}
var getName = function(){console.log(4)}
function getName(){console.log(5)
}Foo.getName(); //2
getName(); //4
Foo().getName(); //1
getName(); //1
new Foo().getName();//3
var o = {a:10,b:{a:2,fn:function(){console.log( this.a ); // 2console.log( this ); // {a: 2, fn: ƒ} 代表b对象}}
}
o.b.fn();
window.name = 'ByteDance';
function A(){this.name = 123;
}
A.prototype.getA = function(){console.log( this ); // windowreturn this.name + 1;
}
let a = new A();
let funcA = a.getA;
funcA(); // 'ByteDance1'
var length = 10;
function fn(){return this.length + 1;
}
var obj = {length:5,test1:function(){return fn();},test3:fn,
}
obj.test2 = fn;
console.log( obj.test1() ); // 11
console.log( obj.test3() ); // 6
console.log( fn()===obj.test2() ); // false
console.log( obj.test1() == obj.test2() ); // false
8. js判断数组
Array.isArray()
instanceof
[] instanceof ArraytoString.call()
原型判断 Object.prototype.toString.call(arr).indexOf(‘Array’) > -1isPrototypeOf()
Array.prototype.isPrototypeOf(arr)constructor
arr.constructor.toString().indexOf(‘Array’) > -1
9. slice作用、splice是否会改变原数组
slice()
用来截取数组,返回一个新数组splice()
用来插入、删除、替换原数组,返回被删除的元素;会改变原数组
10. js数组去重
- Set结构
new Set()
(集合天然去重)[…new Set(arr)] filter()
配合indexOf()
- 遍历配合
indexOf()
- 遍历配合
includes()
11. 找出数组最大值
Math.max(...[1,45,15464,2])
12. 给字符串新增方法实现功能
给字符串对象定义一个addPrefix函数,当传入一个字符串str时,它会返回新的带有指定前缀的字符串,例如:
console.log( ‘world’.addPrefix(‘hello’) ) 控制台会输出helloworld
String.prototype.addPrefix = function(str){return str + this;
}
console.log( 'world'.addPrefix('hello') )
13. 找出字符串出现最多次数的字符以及次数
var str = 'aaabbbbbccddddddddddx';
var obj = {};
for(var i=0;i<str.length;i++){var char = str.charAt(i);if( obj[char] ){obj[char]++;}else{obj[char] = 1;}
}
console.log( obj );
//统计出来最大值
var max = 0;
var word = '';
for( var key in obj ){if( max < obj[key] ){max = obj[key];word = key;}
}
console.log('最多的字符是'+word );
console.log('出现的次数是'+max);
14. new操作符具体做了什么
- 创建一个空的对象
- 将新创建的空对象的原型([[Prototype]])链接到构造函数的原型对象。这意味着新对象可以访问构造函数的原型中定义的属性和方法。
- 用 “this” 关键字引用新创建的空对象,然后调用构造函数,将构造函数中的属性和方法添加到新创建的对象中。
- 如果构造函数没有显式返回一个对象,则返回这个新创建的对象。
function Fun( age,name ){this.age = age;this.name = name;
}
function create( fn , ...args ){//1. 创建了一个空的对象var obj = {}; //var obj = Object.create({})//2. 将空对象的原型,指向于构造函数的原型Object.setPrototypeOf(obj,fn.prototype);//3. 将空对象作为构造函数的上下文(改变this指向)var result = fn.apply(obj,args);//4. 对构造函数有返回值的处理判断return result instanceof Object ? result : obj;
}
console.log( create(Fun,18,'张三') )
15. 闭包
闭包:指那些引用了另一个函数作用域中变量的函数。闭包是一个函数加上到创建函数作用域的链接,闭包关闭了函数的自由变量。
优点: 内部函数可以访问外部函数的变量(解决:把变量手动清空)
缺点: 变量会驻留在内存中,造成内存损耗;在一些低版本浏览器,如ie中还可能造成内存泄漏
16. Promise 的三种状态是什么?如何转换?
-
状态:
pending
(进行中)、fulfilled
(已成功)、rejected
(已失败)。 -
转换规则:
初始状态为 pending。
调用 resolve() 变为 fulfilled,状态不可逆。
调用 reject() 变为 rejected,状态不可逆。
console.log(1);
new Promise((resolve) => {console.log(2);resolve();
}).then(() => {console.log(3);
});
console.log(4);
// 1 2 4 3
// new Promise 的构造函数是同步执行的,会立即输出 1 和 2。
// .then() 是微任务,会在当前宏任务(同步代码)执行完毕后执行,因此输出 4 后再输出 3。
17. Promise.all 和 Promise.race 的区别?
- Promise.all:
接收一个 Promise 数组,所有 Promise 都成功时返回结果数组,若有一个失败则直接返回失败。 - Promise.race:
接收一个 Promise 数组,返回第一个完成(成功或失败)的 Promise 的结果。
18. async/await 的作用是什么?
- 作用:
async
函数返回一个 Promise。
await
用于等待一个 Promise 的结果,使异步代码看起来像同步代码。 - 优势:
代码更易读,避免回调地狱。
支持 try/catch 捕获错误。
async function foo() {console.log(1);await bar();console.log(2);
}function bar() {console.log(3);return new Promise((resolve) => {setTimeout(() => resolve(), 0);});
}foo();
console.log(4);
// 1 3 4 2
// foo() 是异步函数,console.log(1) 同步执行。
// await bar() 会暂停 foo() 的执行,但不会阻塞外部代码,因此先输出 3 和 4。
// 微任务队列中的 resolve() 执行后,foo() 继续执行,输出 2。
19. async/await 和 Promise 的关系?
async/await 是基于 Promise 的语法糖,底层仍依赖 Promise。
await 等待的是一个 Promise 对象,若非 Promise 会被自动包装为 Promise.resolve()。
20. instanceof 和 typeof
- typeof:适合检测基本类型和函数,但不够精确。
- instanceof:适合检测引用类型,但受原型链和跨窗口影响。
- 实际开发中:
基本类型用 typeof 或严格相等(如 === null)。
对象类型用 instanceof 或 Array.isArray() 等专用方法。
复杂场景用 Object.prototype.toString.call()。
21. Map
在 JavaScript 中,Map 是一种用于存储键值对的集合数据结构,于 ES6(ECMAScript 2015)中引入。与传统的对象(Object)不同,Map 的键可以是任意类型(包括对象、函数、基本类型等),并且保留了插入顺序。
核心特性:
- 键的类型灵活:键可以是任意类型(对象、函数、原始值等),而对象的键只能是字符串或 Symbol。
- 插入顺序保留:Map 会按照键值对的插入顺序进行迭代。
- 性能优化:对于频繁增删键值对的场景,Map 的性能通常优于对象。
- 直接访问大小:通过
size
属性直接获取键值对的数量,而对象需要手动计算(如Object.keys(obj).length
)。
Map与Object对比:
22. 箭头函数和普通函数
关于this:
- 普通函数:动态绑定 this,this 的值由调用方式决定(全局对象、DOM 事件、构造函数等)。
const obj = {name: 'Alice',greet: function() {console.log(this.name); // 输出 'Alice'}
};
obj.greet();// 回调函数中可能丢失 this
setTimeout(obj.greet, 100); // 输出 undefined(this 指向全局对象)
- 箭头函数:词法绑定 this:this 继承自外层作用域(定义时的上下文),无法通过 call、apply 或 bind 修改。
const obj = {name: 'Alice',greet: () => {console.log(this.name); // 输出 undefined(this 指向外层作用域,如 window)}
};
obj.greet();// 适合回调中保留 this
const button = document.querySelector('button');
button.addEventListener('click', () => {console.log(this); // 保持外层 this(如 Vue/React 组件实例)
});
构造函数与 new:
- 普通函数:可作为构造函数,通过 new 调用
- 箭头函数:不可作为构造函数,没有 prototype 属性,new 调用会报错
function Person(name) {this.name = name;
}
const alice = new Person('Alice');const Person = () => {};
const alice = new Person(); // 报错:Person is not a constructor
arguments 对象:
- 普通函数:内部可访问 arguments 对象(类数组,包含所有参数)
- 箭头函数:无 arguments 对象,需使用剩余参数(Rest Parameters)
function sum() {return Array.from(arguments).reduce((acc, val) => acc + val, 0);
}
sum(1, 2, 3); // 6const sum = (...args) => args.reduce((acc, val) => acc + val, 0);
sum(1, 2, 3); // 6
相关文章:
八股文-js篇
八股文-js篇 1. 延迟执行js的方式2. js的数据类型3. null 和 undefined的区别4. 和 的区别5. js微任务和宏任务6. js作用域7. js对象9. JS作用域this指向原型8. js判断数组9. slice作用、splice是否会改变原数组10. js数组去重11. 找出数组最大值12. 给字符串新增方法实现功能…...
Nipype使用:从安装配置到sMRI处理
Nipype使用:从安装配置到sMRI处理 Nipype使用:从安装配置到sMRI处理一、Nipype及其依赖工具安装配置1.1 Nipype安装1.2 依赖工具安装与配置1.2.1 FreeSurfer1.2.2 ANTS1.2.3 FSL1.2.4 dcm2nii/MRIConvert 1.3 环境变量配置 二、Nipype进行sMRI预处理2.1 …...
常用的rerank模型有哪些?都有什么优势?
常用的Rerank模型分类及优势分析 重排序(Rerank)模型在信息检索、推荐系统、问答系统等场景中发挥关键作用,通过优化初步检索结果提升最终输出的相关性。以下是当前主流的Rerank模型分类及其核心优势的详细分析: 一、基于大语言模型(LLM)的Rerank模型 代表性模型: Ran…...
LLM框架
LLM(Large Language Model,大型语言模型)框架是一类用于开发、部署和优化大型语言模型的工具和平台。它们在自然语言处理(NLP)和人工智能(AI)领域中发挥着重要作用,帮助开发者高效地…...
SaaS场快订首页的前端搭建【持续更新】
文章目录 一、创建页面二、配置路由三、写接口文件(api)1.定位的接口函数(腾讯地图api)实现代码: 2.获取场馆分类的数据3.获取附近场馆列表的数据 四、开发首页页面1.顶部区域2.搜索框3.场馆分类4.附近场馆列表 五、难…...
2025第九届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
芜湖~ 御网杯线上分是越来越精细 区域赛都有了 然后不过多评价 整体不算难 以下是我自己的一些思路和解析 有什么问题或者建议随时都可以联系我 目录 芜湖~ MISC #被折叠的显影图纸 #光隙中的寄生密钥 #ez_xor #套娃 #easy_misc #ez_pictre Crypto #easy签到题 …...
HTTP/1.1 host虚拟主机详解
一、核心需求:为什么需要虚拟主机? 在互联网上,我们常常希望在一台物理服务器(它通常只有一个公网 IP 地址)上运行多个独立的网站,每个网站都有自己独特的域名(例如 www.a-site.com, www.b-s…...
低代码开发:开启软件开发的新篇章
摘要 低代码开发作为一种新兴的软件开发方式,正在迅速改变传统软件开发的模式和效率。它通过可视化界面和预设的模板,使非专业开发者也能够快速构建应用程序,极大地降低了开发门槛和成本。本文将深入探讨低代码开发的定义、优势、应用场景以及…...
HVV蓝队初级面试总结
一、技术面: 1-SQL注入原理 1-WEB应用程序对用户输入的数据 2-没有过滤或者过滤的不严谨 3-并且把用户输入的数据当作SQL 语司 4-带入到数据中去执行2-SQL注入分类 1-回显型 2-无回显型/盲注1-联合查询注入unionselect 2-堆叠注入; 3-报错注入upda…...
C++八股——函数对象
文章目录 一、仿函数二、Lambda表达式三、bind四、function 一、仿函数 仿函数:重载了操作符()的类,也叫函数对象 特征:可以有状态,通过类的成员变量来存储;(有状态的函数对象称之为闭包) 样…...
Typora自动对其脚注序号
欢迎转载,但请标明出处和引用本文地址 Markdown中的脚注 脚注引用:[^2] 脚注定义:[^2]: xxxxxxx 问题:脚注需要 使用者自己定义排序。写作过程中,在文章最前面引用脚注序号,需要递增其后所有的脚注引用&…...
【Android】cmd命令
Android中cmd命令可以用来向binder服务发送命令,来进行相关调试, 其实现原理是调用binder服务的command接口 frameworks/native/cmds/cmd/cmd.cpp 209 Vector<String16> args; 210 for (int i2; i<argc; i) { 211 args.add(Stri…...
【入门】打印字母塔
描述 输入行数N,打印图形. 输入描述 输入只有一行,包括1个整数。(N<15) 输出描述 输出有N行. #include <bits/stdc.h> using namespace std; int main() { char t;int n,f;cin>>n;for(int i1;i<n;i){tchar(65i);for(int j1;j<n-i;j){cout…...
基于OpenCV的人脸识别:LBPH算法
文章目录 引言一、概述二、代码实现1. 代码整体结构2. 导入库解析3. 训练数据准备4. 标签系统5. 待识别图像加载6. LBPH识别器创建7. 模型训练8. 预测执行9. 结果输出 三、 LBPH算法原理解析四、关键点解析五、改进方向总结 引言 人脸识别是计算机视觉领域的一个重要应用&…...
opencascade.js stp vite webpack 调试笔记
Hello, World! | OpenCascade.js cnpm install opencascade.js cnpm install vite-plugin-wasm --save-dev 当你不知道文件写哪的时候trae还是有点用的 ‘’‘ import { defineConfig } from vite; import wasm from vite-plugin-wasm; import rollupWasm from rollup/plugi…...
使用go开发安卓程序
因为使用传统的安卓开发方式对于非专业人士来说比较繁琐,所以这里想用go简单的开发一下安卓程序。go支持安卓的项目就叫gomobile,有写安卓库文件和安卓程序两种方式,写安卓程序只能使用OPENGL画图。 一、安装步骤 参考文档:用Go…...
嵌入式中屏幕的通信方式
LCD屏通信方式详解 LCD屏(液晶显示屏)的通信方式直接影响其数据传输效率、显示刷新速度及硬件设计复杂度。根据应用场景和需求,LCD屏的通信方式主要分为以下三类,每种方式在协议类型、数据速率、硬件成本及适用场景上存在显著差异…...
常见的 DCGM 设备级别指标及其含义
前言 在大规模 GPU 集群运维与性能调优中,精准、全面地了解每块显卡的运行状态和健康状况至关重要。NVIDIA 数据中心 GPU 管理 (DCGM) 提供了一系列关键指标,用于监控显存错误、硬件利用率、温度、能耗以及互联带宽等多维度信息。通过对这些指标的持续采…...
基于zernike 拟合生成包裹训练数据-可自定义拟合的项数
可以看到拟合误差其实还是有很多的,但是这个主要是包裹噪声产生的,用到了github 上的zernike 库,直接pip install 一下安装就可以了 import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matpl…...
基于多层权重博弈与广播机制的仿生类脑 AI 决策框架
Layered Weighted Consensus and Broadcasting AI Architecture (LWCBA) 前言 本框架模仿人脑的工作机制,模拟人脑对条件反射,本能,道德伦理,理性分析,等事件处理及决策博弈机制。 基本原则和特点 底层-中层-高层的…...
欧拉路与欧拉回路(模板)
欧拉路得判别法: 欧拉回路:我们先记录一下所有点得度数,然后拿并查集判断一下连通性,如果有解得话,我们从奇数个得点开始遍历,一直遍历到不能遍历为止,然后逆序输出得路径就是欧拉回路 P7771 【…...
HttpServletResponse的理解
HttpServletResponse 是 Java Servlet API 提供的一个接口 常用方法 方法用途setContentType(String type)设置响应内容类型(如 "application/json"、"text/html")setStatus(int sc)设置响应状态码(如 200、404&#x…...
用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解
标题: 用一张网记住局域网核心概念:从拓扑结构到传输介质的具象化理解 摘要: 本文通过"一张网"的类比,将计算机网络中抽象的局域网技术概念转化为日常生活中可感知的网结与绳子模型,帮助读者轻松理解网络拓…...
Linux 进程控制 基础IO
Linux 进程控制学习笔记 本节重点 学习进程创建:fork() / vfork()学习进程等待学习进程程序替换:exec 函数族,微型 shell 实现原理学习进程终止:认识 $? 一、进程创建 1. fork() 函数初识 在 Linux 中,fork() 函…...
三、Hive DDL数据库操作
在 Apache Hive 中,数据库 (Database),有时也被称为模式 (Schema),是组织和管理 表及其他对象的基本命名空间单元。熟练掌握数据库层面的数据定义语言 (DDL) 操作,是构建清晰、有序的 Hive 数据仓库的第一步。本篇笔记将详细梳理 …...
C++ string初始化、string赋值操作、string拼接操作
以下介绍了string的六种定义方式,还有很多,这个只是简单举例 #include<iostream>using namespace std;int main() {//1 无参构造string s1;cout << s1 << endl;//2 初始化构造string s2 ({h, h, l, l, o});cout << s2 <<…...
java.util.Timer
知识点详细说明 java.util.Timer 是Java早期提供的定时任务调度工具,用于在指定延迟后或按固定间隔执行任务。以下是其核心知识点: 1. 核心组成 Timer类:负责调度任务,内部维护一个任务队列和后台线程。TimerTask类:抽象类,需继承并实现run()方法定义任务逻辑。2. 核心方…...
SQlite数据库
介绍 基本信息:是一款轻量级的嵌入式关系型数据库管理系统。 主要特点:SQLite的源码是C语言,其源代码完全开发,SQLite第一个Alpha版本诞生于2000年5月,他是一个轻量级的嵌入式数据库。零配置,无需安装和配…...
什么是 ANR 如何避免它
一、什么是 ANR? ANR(Application Not Responding) 是 Android 系统在应用程序主线程(UI 线程)被阻塞超过一定时间后触发的错误机制。此时系统会弹出一个对话框提示用户“应用无响应”,用户可以选择等待或强…...
当虚拟吞噬现实——《GTA6》结合技术
标题:当虚拟吞噬现实——《GTA6》的万言书:一部数字文明的启示录 (万字深度解析,拆解技术、叙事与社会学的三重革命) 一、序章:游戏史的奇点时刻 1. 从像素暴动到文明模拟:G…...
pandas读取pymysql和解析excel的一系列问题(版本不匹配)
pandas读取pymysql和解析excel的一系列问题,大部分都是版本不匹配导致的 尤其是pandas,numpy,pymysql,openpyxl不匹配导致 from sqlalchemy import create_engine import numpy as np import pandas as pd conncreate_engine("mysqlpymysql://user:passhost:3…...
【安装配置教程】ubuntu安装配置Kodbox
目录 一、引言 二、环境配置 1. 服务器配置 2. 必备组件 三、安装基础环境 1. 安装 PHP 8.1 及扩展 2. 安装 MySQL 数据库 3.安装 Redis(可选,提升缓存性能) 4. 配置nginx文件 4.1. 创建 Kodbox 站点目录 4.2. 编写 Ng…...
模型过拟合是什么?
模型过拟合的详细解析 一、定义与本质 过拟合(Overfitting)是机器学习与统计学中的核心问题,指模型在训练数据上表现优异,但在未见过的新数据(如测试集或实际应用数据)上泛化能力显著下降的现象。其本质在于模型过度捕捉了训练数据中的噪声、随机波动或非典型细节,而非…...
服务器mysql连接我碰到的错误
搞了2个下午,总算成功了 我在服务器上使用docker部署了java项目与mysql,但mysql连接一直出现问题 1.首先,我使用的是localhost连接,心想反正都在服务器上吧。 jdbc:mysql://localhost:3306/fly-bird?useSSLfalse&serverTime…...
数电课设·交通信号灯(Quartus Ⅱ)
远书归梦两悠悠,只有空床敌素秋。 阶下青苔与红树,雨中寥落月中愁。 ————《端居》 【唐】 李商隐 目录 交通信号灯 要点剖析: 端口说明: 代码展示:&…...
单片机-STM32部分:13、PWM
飞书文档https://x509p6c8to.feishu.cn/wiki/NjhuwbVP7iaEOikVK95cmJNLnWf PWM(Pulse Width Modulation)脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是把每一脉冲宽度均相等的脉冲列作为PWM波形&am…...
HTTP 错误状态码以及常用解决方案
以下是常见 HTTP 错误状态码及其解决方案的对比表格,按客户端(4xx)和服务端(5xx)分类: HTTP 错误码对比表 一、客户端错误(4xx) 状态码含义常见原因解决方案400Bad Request请求参…...
巧用promise.race实现nrm镜像源切换----nbsl
今天是母亲节祝全天的母亲节日快乐奥 引言 在复习Promise知识点时,发现Promise.race在实际开发中应用较少,于是深入思考了它的应用场景。最近使用nrm(npm镜像源切换工具)时,想到每次都需要手动切换镜像源来测试哪个更…...
Python基础语法(中)
顺序语句 默认情况下,Python的代码执行顺序是从上往下执行的。 形如下面这样的代码,执行的结果只能是123,而不是321 print(1) print(2) print(3) 条件语句 Python 中使用 if else 关键字表示条件语句 (1)if if e…...
【Part 2安卓原生360°VR播放器开发实战】第四节|安卓VR播放器性能优化与设备适配
《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...
java笔记06
TreeMap的基本使用 TreeMapTreeMap 跟 TreeSet 底层原理一样,都是红黑树结构的。由键决定特性:不重复、无索引、可排序可排序:对键进行排序。注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则 代码书写…...
Problem E: 实现冒泡排序(内存优化)
1.题目描述 输入任意顺序的整数序列,输出结果为从小到大的排序结果 2.输入描述 输入一个整数序列,整数之间用空格隔开,输入完最后一个整数,回车 3.输出描述 从小到大的排序结果 4.样例 提示:注意,主…...
大模型对时尚穿搭体验的革新与重塑
在大模型深度介入时尚穿搭领域后,人们的穿搭体验迎来了前所未有的变革。它不再局限于单纯提供搭配方案,而是全方位渗透进时尚穿搭的各个环节,从决策过程到实际穿着感受,都在悄然改变着人们与时尚互动的方式。 打破信息壁垒&#…...
第6讲、全面拆解Encoder、Decoder内部模块
全面拆解 Transformer 架构:Encoder、Decoder 内部模块解析(附流程图小测验) 关键词:Transformer、Encoder、Decoder、Self-Attention、Masked Attention、位置编码、残差连接、多头注意力机制 Transformer 自 2017 年诞生以来&am…...
Linux电脑本机使用小皮面板集成环境开发调试WEB项目
开发调试WEB项目,有时开发环境配置繁琐,可以使用小皮面板集成环境。 小皮面板官网: https://www.xp.cn/1.可以使用小皮面板安装脚本一键安装。登陆小皮面板管理后台 2.在“软件商店”使用LNMP一键部署集成环境。 3.添加网站,本…...
数据仓库Hive
1.数据仓库 1.1数据仓库的概念 数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 面向主题。操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据按照一定的…...
嵌入式学习笔记 - STM32 ADC,多重转换,内部参考电压,
一 多个ADC器件,多重转换速率 每个型号MCU通常由多个ADC器件,比如STM32F4有三个ADC器件,每个ADC器件有一个最大转换速率,一般为25Mhz,即一个ADC器件每秒最多转换25M次,两次转换之间需要有时间间隔…...
精读计算机体系结构基础 第三章 特权指令系统
3. 1 特权指令系统简介 想象一下,计算机就像一个大楼,而这个大楼有很多不同的楼层。每个楼层都有不同的功能和使用者。最上面的楼层是应用层,那里住着各种各样的应用程序,比如你用来写作的文字处理软件、用来浏览网页的浏览器等等…...
库室多功能控制器
应急供电保障 内置智能备电系统,市电中断时即刻无缝切换,为设备持续稳定供电,确保关键场景用电无忧。 超高性价比 集门禁、报警、环控等专业功能于一体,相比同类产品,以更优的价格提供更全面、更强大的解决方…...
使用FastAPI和React以及MongoDB构建全栈Web应用07 FastAPI实现经典三层架构
一、单文件简单实现 1.1 开发用户增删改查接口 main.py from fastapi import FastAPI, Request, Query, HTTPException from fastapi.responses import JSONResponse from motor.motor_asyncio import AsyncIOMotorClient from pydantic import BaseModel from bson import …...