javaScript基础知识汇总
一、基础语法
1、区分大小写:无论是变量、函数名还是操作符,都区分大小写。
2、标识符:就是变量、函数、属性或函数参数的名称。标识符可以由一个或多个字符构成,但需要满足以下条件:
第一个字符必须是一个字母、下划线(_)或美元符号($);
剩下的其他字符可以是字母、下划线、美元符号或数字。
命名规范——驼峰大小形式:即第一个单词的首字母小写,后面每个单词的首字母大写。
注意事项:关键字、保留字、true、false、null不能作为表示符。
3、注释:和C语言一样
4、严格模式:严格模式是一种不同的javascript解析和执行模型,一些不规范写法在这种模式下会被处理,对于不安全的活动将抛出错误。要对整个脚本启用严格模式,在脚本开头加上这一行:
"use strict"
5、语句:脚本中语句以分好结尾,省略分号意味着由解析器确定语句在哪里结尾。即使语句末尾分好不是必需的,也应该加上。
多条语句可以合并到一个C语言风格的代码块中,代码块由一个左花括号"{"表示开始,一个右花括号“}"标识结束。
例如:
if (test){
test=false;
console.log(test);
}
二、关键字与保留字
javascript中规定了一组保留的关键字,这些关键字有特殊用途,比如表示控制语句的开始和结束,或者执行特定的操作。按照规定,保留的关键字不能用作标识符或属性名。
三、变量
javascript变量可以用于保存任何类型的数据。每个变量只不过是一个用于保存任意值命令的占位符。有3个关键字可以声明变量:var、const和let。其中,var在javascript所有版本中都可以使用,但是const和let只能在javascript6及更晚版本中使用。
1、var关键字
要定义变量,可以使用var操作符(注意var是一个关键字),后跟变量名(即标识符):
var message;
这行代码定义了一个名为message的变量,可以用它保存任何类型的值。(不初始化的情况下,变量会保存一个特殊值undefined)。同时我们可以在变量定义的时候就进行初始化:
var message="xincun"
这里,message被定义为一个保存字符值xincun的变量。像这样初始化变量不会将它标识为字符串类型,只是一个简单的赋值而已。随后,不仅可以改变保存的值,也可以改变值的类型;
注意事项:同一个变量虽然可以赋值成不同类型的数据,但是不推荐这样做。
2、var声明作用域
使用var操作符定义的变量会成为包含它的函数的局部变量。比如,使用var在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁。
如:
function test() {
var message="xincun" ;//局部变量
}
test();
console.log(message); //出错(因为是在函数中定义的局部变量,在函数外未定义所以报错)
在函数定义变量时省略var操作符,可以创建一个全局变量:
function test() {
message="xincun";
}
test();
console.log(message); //“xincun”(去掉var操作符后,message就变成了全局变量)
注意事项:
在同一个脚本中不建议通过省略var定义全局变量,在局部作用域中定义的全局变量很难维护,也会造成困惑。在严格模式下(use strict)未声明变量赋值,则会导致抛出RerenceError。定义多个同一类型的变量类型变量,使用逗号隔开。
3、var声明提升
在javascript中使用var关键字声明的变量会自动提升到函数作用域顶部,即所有变量声明都拉到函数作用域的顶部,此外,重复的对同一个变量进行声明是没有问题的(就更新变量值)。
function age() {
console.log(age);
var age=20;
var age=22;
}
foo(); //undefined (之所以不会报错,是因为javascript运行时把它等价为如下代码:)
function foo() {
var age;
console.log(age);
age=89;
}
foo();
letl声明变量,声明的范围是块作用域(比如:if语句的作用范围就是块作用域),而var声明的变量范围是函数作用域。
const的行为与let基本相同,唯一一个重要的区别是用它声明变量时必须同时初始化变量,并且尝试修改const声明的变量会导致运行时错误。
四、数据类型
javascript有6种简单数据类型:undefined,null,boolean,number,string,symbol。
1、typeof操作符
typeof操作用来确定任意变量类型。
“undefined”:表示值未定义;
“boolean”:表示值为布尔值;
“string”:表示值为字符串;
“number”:表示值为数值;
“object”:表示值为对象(而不是函数)或null;
“function”表示值为函数;
“symbol”表示值为符号。
2、undefined类型
undefined类型只有一个值,就是特殊值undefined。当使用var或let声明了变量但是没有初始化时,就相当于给变量赋予了undefined值;
总结:一个变量声明了,但是没有初始化,或者一个没有声明的变量,调用typeof操作符,都会返回结果为“undefined”
3、NULL类型
NUll类型同样只有一个值,即特殊值null。逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回“object”的原因。
在定义将来要保存对象值的变量时,建议使用null来初始化,不要使用其他值。这样只要检查这个变量是不是null就可以知道这个变量是否在后来被重新赋予了一个对象的引用。
4、Boolean类型
boolean类型是javascript中使用最频繁的类型之一,有两个字面值:true和false。这两个布尔值不同于数据,因此true不等于1,false不等于0。
注意:
布尔值字面量true和false是区分大小写的,因此True和False(及其他大小混写形式)是有效的标识符,但不是布尔值。
Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。(这个就是强制类型转换,与python中bool函数功能相似)
5、Number类型
Number类型在javascript中表示整数和浮点数(某些语言中也叫双精度值)。不同的数值类型相应地有不同的数值字面量格式。这种方法中
6、NaN
有一个特殊的设置叫NaN,意思是“不是数值”(not a number),用来表示本来要返回数值的操作失败了(而不是抛出错误)。NaN有几个独特的属性。首先,任何设计NaN的操作系统返回NaN,在连续多步计算时这可能是个问题。其次NaN不等于包括NaN在内的任何值。
javascript中提供了isNaN()函数。该函数接受一个参数,可以是任意数据类型,然后判断这个参数是否“不是数值”。
7、数值转换
有3个函数可以将非数值转换为数值:Number(),parseInt()和parseFloat()。Number()是转型函数,可用于任何数据类型。后两个函数主要用于将字符串转换为数值。
Number()函数基于如下规则执行转换:
布尔值,true转换为1,false转换为0;
数值,直接返回;
null,返回0;
字符串,应用以下规则:
如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。
如果字符串包含有效的浮点值格式“1.1”,则会转换为相应的浮点值。
如果字符串中包含有效的十六进制格式如:"oxf",则会转换为与该十进制值对应的十进制整数值。
如果字符串是空字符串(不包含字符),则返回0;
如果字符串包含上述请款之外的其他字符,则返回Nan。
对象:调用valueof()方法,并安装上述规则转换返回的值。如果转换结果是NaN,则调用toString()方法,再按照转换字符串的规则转换。
因为使用Number()函数转换字符串相对复杂且有反常规,通常在需要得到整数时,可以优先使用parseInt()函数。该函数更专注于字符串是否包含数值模式。 parseInt()函数也接收第二个参数,用于指定底数(进制数)。如:传入的第二参数为16,表示对要解析的值是十六进制。这是传入需要解析的数据,可以省略0x。这个函数的输出还是会以十进制的形式的输出转换后的数据。
注意事项:
当不传底数参数时,parseInt()函数自己决定如何解析,所以为避免解析出错,建议始终传给它第二参数。大多数情况下解析的数据都是十进制数,此时第二个参数就要传入10。
parseFloat()函数的工作方式跟pareInt()函数类似,都是从位置0开始检测每个字符。同样,它也是解析到字符串末尾或者解析到一个无效的浮点数值字符为止。这意味着第一次出现的小数点是有效的,但第二次出现的小数点就无效了,此时字符串的剩余字符都会被忽略。如“2.3.6” 会被转换为2.3。
parseFloat()函数始终忽略字符串开头的零,且该函数只解析十进制值,因此不能指定底数。
8、String类型
string(字符串)数据类型表示零或多个16位Unicode字符序列。字符串可以使用双引号(“)、单引号(‘)或反引号(·)标识。这三种方式定义字符串的标果是一样的。
字符串的长度可以通过其length属性获取。
如:
len name="yuanyexiaolu";
console.log(name.length); //12 标识当前字符串含有12个字符
字符串特点:
javascript中的字符串是不可变的,意思是一旦创建,它们的值就不能变了。要修改某个变量中的字符串值,必须要先销毁原始的字符串,然后将包含新值的另一个字符串保存到该变量。
转换为字符串
有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的toString()方法。这个方法唯一的用途就是返回当前值的字符串等价物。toString()方法可见于数值、布尔值、对象和字符串值。null和undefined值没有toString()方法。toString()函数可以接收一个底数参数,即以什么底数来输出数值的字符串表示。默认情况下,toSting()返回数值的十进制字符串表示。而通过传入参数,可以得到数值的二进制、八进制、十六进制,或者其他任何有效基数的字符串表示。
如:
len num=10;
console.log(num.toString()); //"10"
console.log(num.toString(2)): //"1010"
当你不确定一个值是不是null或undefined,可以使用string()转型函数,它始终会返回表示相应类型值的字符串。String()函数遵循如下规则:
如果值有toString()方法,则调用该方式(不传递参数)并返回结果。
如果值是null,返回"null" 如果值是Undefined,返回“undefined”。
注意:
用加号操作符给一个值加上一个空字符串“”也可以将其转换为字符串
字面量模板
javaScript中新增了使用模版字面量定义字符串的能力,模版字面量保留换行字符,可以跨行定义字符串。
顾名思义,模版字面量在定义模版时特别有用。(由于模板字面量会保持反引号内部的空格,因此在使用时要格外注意。格式正确的模版看起来可能会缩进不当)。模版字面量使用反引号定义。
字符串插值
模板字面量最常用的一个特性就是支持字符串插值,也就是可以在一个连续定义中插入一个或多个值。技术上讲,模板字面量不是字符串,而是一种特殊的javaScript句法表达式,只不过求值后得到的是字符串。模板字面量在定义时立即求值并转换为字符串实例,任何插入的变量也会从他们最接近的作用域中取值。
字符串插值通过${}中使用一个javaScript表达式实现:
let value=5;
let exponent='second';
//以前,字符插值是这样实现的
let interpolatedString=value + " to the " + exponent + " power is "+ (value*value);
//现在,可以用模板字面量这样实现:
let interpolatedTemplateLiteral=${ value } to the ${exponent} power is ${value*value};
console.log(interpolatedString); //5 to the second power is 25
console.log(interpolatedTemplateLiteral) //5 to the second power is 25
所有插入的值都会使用toString()强制转换为字符串,而且任何javaScript表达式都可以用于插值。
嵌套的模板字符串无需转义:
console.log(hello, ${world}!); //hello, world
将表达式转换为字符串时会调用toString(),在插值表达式中可以调用函数和方法。此外,模块也可以插入自己之前的值。
模板字面量标签函数
模板字面量也支持定义标签函数(tag function),而通过标签函数可以自定义插值行为。标签函数会接收被插值记号分隔后的模版和对每个表达式的结果。
标签函数本身是一个常规函数,通过前缀到模板字面量来应用自定义行为。标签函数接受到的参数依次是原始字符串数组和对每个表达式求值的结果。这个函数返回值是对模板字面量求值得到的字符串。
let a=6;
let b=9;
function simpleTag(strings,...expressions) {
console.log(strings);
for (const expression of expressions) {
console.log(expression);
}
return 'foobar'
}
let taggedResult =simpleTag ${a} +${b} =${a+b}
console.log(taggedResult);
输出结果:
[ '', ' +', ' =', '' ]
6
9
15
foobar
原始字符串
使用模板字面量也可以直接获取原始的模板字面量内容(如换行符或unicode字符),而不是被转换后的字符表示。因此,可以使用默认的String.raw标签函数。
console.log(\u00A9) //©
console.log(String.raw\uA009); \\uA009
9、Symbol类型
Symbol(符号)是javascript中新增的数据类型。符号是原始值,且符号实例是唯一、不变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。符号就是用来创建唯一记号,进而用作非字符串形式的对象属性。
符号的基本用法
符号需要使用Symbol()函数初始化。因为符号本身是原始类型,所以typeof操作符符号返回symbol。
如:
let sym=Symbol();
console.log(typeof sym); //symbol
10.object类型
javascript中的对象其实就是一组数据和功能的集合。对象通过new操作符后跟对象类型的名称来创建。开发着可以通过object类型的实例来创建自己的对象,然后再给对象添加属性和方法。
如:
let person=net Object();
五、操作符
可用于操作数据值的操作符叫做操作符。
递增/递减操作符:前缀版(++i)和后缀版(i++);
这两者的区别是:++i是先将i的值加一然后再继续运算,i++是先将i的值用于运算,运算结束后再进行加一。
一元加和减:加号(+)和减号(-)
位操作符:非(~)、与(&)、或(|)、异或(^),左移(<<),右移(>>),无符号右移(>>>)
布尔操作符:逻辑非(!) 、逻辑与(&&)、逻辑或(||)
乘性操作符:乘法(*)、除法(/)和取模(%)。
指数操作符:指数(Math.pow) 或者 **
关系操作符:小于(<)、大于(>)、小于等于(<=)和大于等于(>=)
相等操作符:判断两个变量是是否相等是编程中最重要的操作之一。在javascript中提供了两组操作符。
第一组是等于和不等于,他们在比较之前执行转换。(==和!=)
第二组是全等和不全等,他们在比较之前不执行转换。(===和!==)
条件操作符:条件操作符是javascript中用途最为广泛的操作之一。语法如下:
variable = boolean_expression ? true_value : false_value
赋值操作符:简单赋值用等于号(=)表示,将右手边的值赋给左手边的变量。可以使用其他操作符构成复合型值操作符
逗号操作符:逗号操作符可以用来在一条语句中执行多个操作。
六、语句
JavaScript中大部分语法都体现在语句中,语句通常使用一个或多个关键字完成既定的任务。
1、if语句
语法1如下:
if (表达式) 执行语句1 else 执行语句2;
解释:
表达式运行结束后,会自动转换为布尔值,如果布尔值为“真”则运行“执行语句1”,如果布尔值为“假”就运行执行语句2。(注意:执行语句可以是一个代码块,这个时候用花括号包含即可。)
具体实例如下:
let number=89
if (number>80) console.log("当前number的值大于80\n")
else{
console.log("当前number的值小于80\n")
}
语法2如下:
if(表达式){执行语句1}
else if (表达式) {执行语句2}
else{执行语句3}
具体实例如下:
let number=89
if (number>90) console.log("当前number的值大于90\n")
else if (number>85 && number<90){
console.log("当前number的值介于85到90之间\n")
}
else {
console.log("当前number的值不在80~90的范围内")
}
2、do-while语句
do-while语句是一种后测试循环语句,即循环体中的代码执行后才会对退出条件进行求值。换句话说,循环体内的代码至少执行一次。do-while的语法如下:
do{
执行语句;
}while (表达式)
例子:
let i=0;
do {
i+=2;
}while (i<10)
console.log(i) //10
3、while语句
while语句是一种先测试循环语句,即先检测推出条件,再执行循环体内的代码。
语法如下:
while(表达式) 执行语句;
let i=0;
while (i<10)
{
i+=2
}
console.log(i) //10
4、for语句
for语句也是测试语句,只不过增加了进入循环之前的初始化代码,以及循环执行后要执行表达式。
语法如下:
for (初始化变量;条件判断;表达式) 执行语句;
实际举例如下:
let count=10;
for (let i=0;i<10;i++){
console.log(i);
}
5、for-in 语句
for- in 语句是一种严格的迭代语句,用于枚举对象中的非符号建属性。
6、for-of语句
for-of语句是一种严格的迭代语句,用于遍历可迭代对象的元素。
7、标签语句
标签语句用于给语句加标签,语法如下:
label:statement
实际例子:
start:for (let i =0;i<count;i++)
{
console.log(i);
}
8、break和continue语句
break 和continue语句为执行循环代码提供了更严格的控制手段。break结束整个循环,continue结束本次循环。
9、with语句
with语句的用途是将代码作用域设备为特定的对象,语法如下:
with (表达式) 执行语句;
10、switch语句
switch语句与if语句紧密相关的一种流控制语句,类似于C语言中switch语句。
语法如下:
switch (expression){
case value1:
statement
break;
case value2:
statement
break;
default:
statement;
}
}
七、函数
函数对任何语言来说都是核心组件,因为它可以封装语句,然后在任何地方、任何时间执行。javascript中使用function关键字声明。
基本语法如下:
function functionName(参数1,参数2,....)
{
执行语句;
return 语句; //如果函数需要返回计算结果
}
注意事项:
不指定返回值的函数实际上会返回特殊值undefined.
相关文章:
javaScript基础知识汇总
一、基础语法 1、区分大小写:无论是变量、函数名还是操作符,都区分大小写。 2、标识符:就是变量、函数、属性或函数参数的名称。标识符可以由一个或多个字符构成,但需要满足以下条件: 第一个字符必须是一个字母、下…...
《动手学深度学习》笔记2.2——神经网络从基础→进阶 (参数管理-每层的权重/偏置)
目录 0. 前言 正文:参数管理 1. 参数访问 1.1 [目标参数] 1.2 [一次性访问所有参数] 1.3 [从嵌套块收集参数] 2. 参数初始化 2.1 [内置初始化] 2.2 [自定义初始化] 2.3 [参数绑定-共享参数] 3. 小结(第2节) 4. 延后初始化 (原书第…...
双端之Nginx+Php结合PostgreSQL搭建Wordpress
第一台虚拟机:安装 Nginx 更新系统包列表: sudo apt update安装 Nginx及php扩展: sudo apt install nginx php-fpm php-pgsql php-mysqli -y启动 Nginx 服务: sudo systemctl start nginx检查 Nginx 是否正常运行: xdg-open http://localhost注意:终端命令打开网址 …...
Another redis desktop manager使用说明
Another redis desktop manager使用说明 概述界面介绍图示说明连接界面设置界面查看操作日志主界面信息进入redis-cli控制台更多 概述 Another Redis Desktop Manager是一个开源的跨平台 Redis 客户端,提供了简洁易用的图形用户界面(GUI)&am…...
【git】配置 Git 的换行符处理和安全性||安装 Ruby
配置 Git 的换行符处理和安全性: git config --global core.autocrlf input:这个设置确保在提交代码时,Git 会将 CRLF(Windows 的换行符)转换为 LF(Unix 的换行符),但在检出代码时不…...
VMware ESXi 8.0U3b macOS Unlocker OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布
VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 Dell HPE 定制版 9 月更新发布 VMware ESXi 8.0U3b macOS Unlocker & OEM BIOS 2.7 标准版和厂商定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、IEIT SYSTEMS (浪潮信息)、Cisco …...
Unity 代码裁剪(Strip Engine Code)
文章目录 0.IL2CPP 打包运行闪退问题1.什么是代码裁剪2.为什么要使用代码裁剪3.代码裁剪设置与级别4.强制保留代码4.1 使用[Preserve]标签4.2 使用Link.xml文件 5.Strip中遇到的问题及解决方法6.注意事项 0.IL2CPP 打包运行闪退问题 Google Play要求从2019年8月1日起apk必须支…...
单目3d重建DUSt3R 笔记
目录 DUSt3R 三维重建 报错RecursionError: maximum recursion depth exceeded in comparison 报错 numpy.core.multiarray failed to import 报错Numpy is not available 解决 升级版mast3r 速度变慢 修改了参数设置脚本: 测试效果 操作技巧 DUSt3R 三维重…...
AI驱动TDSQL-C Serverless 数据库技术实战营-与AI的碰撞
目录 一、简介 二、实验介绍 三、结果展示 四、实操指导 4.1 系统设计 4.2 环境搭建(手把手教程) 4.3 应用构建 4.4 效果展示 4.5 踩坑避雷总结 五、清理资源 5.1 删除TDSQL-C Serverless 5.2 删除 HAI 算力 六、实验总结归纳 一、简介 本…...
C++之String类(上)
片头 嗨!好久不见~ 今天我们来学习C的Sting类,不过,在学习它之前,我们先来对STL库有一个简单的了解。 STL(standard template library--标准模板库),是C标准库的重要组成部分,不仅是…...
kubernets基础-ingress详细介绍
文章目录 什么是IngressIngress详细说明Ingress示例 Ingress控制器Ingress控制器的工作原理Ingress控制器的特点常见的Ingress控制器 Ingress关联Ingress控制器一、Ingress资源对象二、Ingress控制器三、Ingress与Ingress控制器的关联方式四、注意事项 多实例部署一、Ingress多…...
jenkins部署Maven和NodeJS项目
在 Java 项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发项目时,程序员往往需要花较多的精力在引用 jar 包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能…...
在unity资源中发现无效引用
本文主要解决在不打开unity的情况下搜索出无效引用的资源的方法 1. 概述 一般只要遍历一下目录里所有资源,判空一下就好了但有些情况下,不希望打开unity, 尤其希望是在资源整合时,想更快验证资源的合法性, 这对合并提交及出包验证时,都要较大的需求 2. 简单的验证方法 简单来…...
C#知识|基于反射和接口实现抽象工厂设计模式
哈喽,你好啊,我是雷工! 01 应用场景 在项目的多数据库支持上、业务的多算法封装、以及各种变化的业务中; 02 抽象工厂组成 抽象工厂包括抽象产品(即业务接口,可以通过抽象类或抽象接口设计)…...
【分布式微服务云原生】gRPC vs RPC:深入探索远程过程调用的现代与经典
摘要 在分布式系统的世界里,gRPC和RPC是两个耳熟能详的术语,但它们之间有何区别和联系?本文将深入探讨gRPC和RPC的概念、关键特性、以及它们在现代软件开发中的应用。你将了解到gRPC如何作为RPC的一种实现,提供高性能的跨语言远程…...
听说这是MATLAB基础?
MATLAB(矩阵实验室)是一个强大的高性能计算环境和编程语言,广泛应用于数学计算、算法开发、数据分析、可视化以及模拟等多个领域。以下是MATLAB的一些基础知识,涵盖其功能、语法、基本操作等方面。 1. MATLAB环境 工作区…...
【CSS/HTML】圣杯布局和双飞翼布局实现两侧宽度固定,中间宽度自适应及其他扩展实现
前沿简介 圣杯布局和双飞翼布局是前端重要的布局方式。两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。 圣杯布局来源于文章In Search of the Holy Grail,双飞翼布局来源于淘宝UED。 两者的实现方式有差异,但是都…...
数据流和数据流处理技术
一数据流 首先明确数据流概念:数据流是连续不断生成的、快速变化的无界数据序列 数据流类型: 数据流大致可以分为四种类型 1.连续型数据流:不断地产生数据,数据稳定速度输入系统。 2.突发型数据流:在某特定时间或…...
(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案
系列文章目录 文章目录 系列文章目录一、(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案1.资料 一、(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 1.资料…...
解决TikTok无网络连接问题解析
随着社交媒体的快速发展,TikTok已成为全球用户最喜欢的短视频平台之一,吸引了数以亿计的用户。然而,在享受这个平台时,用户经常会遇到无网络连接的问题,这不仅影响观看体验,还可能导致无法上传内容或参与社…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
