HDRnet——双边滤波和仿射变换的摇身一变
主页:Deep Bilateral Learning
paper:https://groups.csail.mit.edu/graphics/hdrnet/data/hdrnet.pdf
coeffs
这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到grid,这里面包含了变换的系数。
splat
原图先通过下采样,得到256x256的固定大小,通过一系列卷积a stack of strided convolutional layers,得到low-level features之后。layer层数越多,下采样得到的图越小,low-level features的好处是最后的grid会更coarser,最后的特征图的感受野也越多,非线性更好,表达力更强。这其实就是CNN相比于手工设计特征的区别,可以准确地只对面部进行提亮:
# splat featuresn_layers_splat = int(np.log2(nsize/sb))self.splat_features = nn.ModuleList()prev_ch = 3for i in range(n_layers_splat):use_bn = bn if i > 0 else Falseself.splat_features.append(ConvBlock(prev_ch, cm*(2**i)*lb, 3, stride=2, batch_norm=use_bn))prev_ch = splat_ch = cm*(2**i)*lb
处理2D图像需要建立3D bilateral grid,可以把low res分支看作是learned splatting。
Since we produce a 3D bilateral grid from a 2D image in a content-dependent fashion, we can view the low-res stream as implementing a form of learned splatting.
得到low-level features之后,分为两部分:local和global
local
专注于提取local feature,使用fully convolutional,stride=1,特征图保持不变。这部分的和splat部分的
,一共有
层卷积。如果想要在更大的grid上计算coefficients,可以减少
,但为了保持网络的表达能力,减少
的同时要增大
# local featuresself.local_features = nn.ModuleList()self.local_features.append(ConvBlock(splat_ch, 8*cm*lb, 3, batch_norm=bn))self.local_features.append(ConvBlock(8*cm*lb, 8*cm*lb, 3, activation=None, use_bias=False))
global
另外一路则同时使用2层stride=2的卷积和3层全连接,得到固定长度的全局信息fixed-size vector of global features,可以提取一些场景信息。使用全连接就意味着low-res input大小只能是固定大小,因为它的大小直接决定了全连接的参数量。但因为r slicing operator的存在,实际还是可以处理各种分辨率数据的。
# global featuresn_layers_global = int(np.log2(sb/4))self.global_features_conv = nn.ModuleList()self.global_features_fc = nn.ModuleList()for i in range(n_layers_global):self.global_features_conv.append(ConvBlock(prev_ch, cm*8*lb, 3, stride=2, batch_norm=bn))prev_ch = cm*8*lbn_total = n_layers_splat + n_layers_globalprev_ch = prev_ch * (nsize/2**n_total)**2self.global_features_fc.append(FC(prev_ch, 32*cm*lb, batch_norm=bn))self.global_features_fc.append(FC(32*cm*lb, 16*cm*lb, batch_norm=bn))self.global_features_fc.append(FC(16*cm*lb, 8*cm*lb, activation=None, batch_norm=bn))
全局特征分支得到64维的先验特征,用于指引局部特征,负责会出现一些不连续的artifacts:
The global path produces a 64-dimensional vector that summarizes global information about the input and acts as a prior to regularize the local decisions made by the local path.
fuse
融合使用了pointwise affine mixing,后面接Relu激活层。low_res_input=[H,W], 5层卷积之后的splat_feature [B,128,16,16], local feature尺寸(b,64,16,16)。这里的16就是spatial_bin。全局特征卷积之后的特征图尺寸是4,所以当spatial_bin=16的时候,全局特征使用两层卷积:。
全局特征最后是(b,64),长度和局部特征的通道数是一样的,view成(b,64,1,1),这样local和gobal可以直接相加,相加之后使用1x1卷积,改变通道数,得到的通道数为lb*nout*nin,lb表示luma_bins=8,nin=4.nout=3,所以最后的通道数是96:
通道数为lb*nout*nin的x,使用torch.split以nout*nin为一组进行分组,得到tuple类型的tmp,之后再使用torch.stack对tmp进行合并,得到y,y相比于x,维度上升了一维。
把16x16x96拆分成了16x16x8x12,8就是bilateral grid中cell的个数,12表示的是4x3的仿射矩阵。
fusion_grid = local_featuresfusion_global = global_features.view(bs,8*cm*lb,1,1)fusion = self.relu( fusion_grid + fusion_global )x = self.conv_out(fusion)s = x.shapey = torch.stack(torch.split(x, self.nin*self.nout, 1),2)# y = torch.stack(torch.split(y, self.nin, 1),3)
按照bilateral grid的思想应该是原始信号升维之后再进行滤波的,这里使用CNN在通道层面卷积之后再拆分开来,是殊途同归,这样就避免了三维卷积的使用。两种特征fuse得到的特征A(论文中的图2)可以看作是bilateral grid of affine coefficients
This operation is therefore more expressive than simply applying 3D convolutions in the grid, which would only induce local connectivity on z [Jampani et al. 2016]
.In a sense, by maintaining a 2D convolution formulation throughout and only interpreting the last layer as a bilateral grid, we let the network decide when the 2D to 3D transition is optimal.
guide
对全尺寸高分辨率图进行处理。stride=1,padding=0,结果两层卷积之后分辨率没用发生变化。得到的guide map是一个单通道的图。
这里的特征提取也是很重要的,下面的结果就表明了learned guide比亮度作为引导图,有更好的效果:
slice
二维图像得到的grid是3D的,分别是x,y,val:
3D grid通过升维把空间信息和像素值信息放在了同一个空间下,是bilateral grid思想的延续。为了进一步减少计算量,grid相比于guide可以是尺寸更小的。上图中就提到,70x70x10的grid可以对应800万像素的图像。
如fuse章节所说,具体实现时使用的仍然是2D卷积,只不过把c通道进行了重新划分。所以最终grid是5维的[B,in*out,n,H,W],permute之后是[B,H,W,n,in*out],B是batchsize,n表示对guide的量化级数,in*out表示每个cell的变换系数。
对batch中的每个样本做处理。slice的输入是guide map g 和feature map A (viewed as a bilateral grid),输出是a new feature map,但是分辨率和guide map g一样,所以slice本质是一个上采样的过程,使用的是 tri-linearly interpolating
x,y经过比例映射到grid的位置,与i,j越近,权重会越大。亮度g则是经放大d倍后与k相比,越相近权重越大。这里的d=8,意味着亮度只分了8个级别。
这个过程没用参数需要学习,所以可以使用OpenGL实现。因为有guide map的使用,相比于反卷积,有更好的边缘恢复。
applay_coeffs
局部看作是仿射变换
recent work has observed that even complicated image processing pipelines can often be accurately modeled as a collection of simple local transformations [Chen et al. 2016; Gharbi et al. 2015; He and Sun 2015].
所以原始rgb经过3x4大小的矩阵映射就得到了输出:
'''Affine:r = a11*r + a12*g + a13*b + a14g = a21*r + a22*g + a23*b + a24...'''R = torch.sum(full_res_input * coeff[:, 0:3, :, :], dim=1, keepdim=True) + coeff[:, 9:10, :, :]G = torch.sum(full_res_input * coeff[:, 3:6, :, :], dim=1, keepdim=True) + coeff[:, 10:11, :, :]B = torch.sum(full_res_input * coeff[:, 6:9, :, :], dim=1, keepdim=True) + coeff[:, 11:12, :, :]return torch.cat([R, G, B], dim=1)
reference:
1.https://zhuanlan.zhihu.com/p/587350063
2.https://zhuanlan.zhihu.com/p/37404280
3.https://zhuanlan.zhihu.com/p/614185346
4.https://groups.csail.mit.edu/graphics/hdrnet/data/hdrnet.pdf
5.https://zhuanlan.zhihu.com/p/37404280
6.https://zhuanlan.zhihu.com/p/614185346
7.https://zhuanlan.zhihu.com/p/537612591
相关文章:
HDRnet——双边滤波和仿射变换的摇身一变
主页:Deep Bilateral Learning paper:https://groups.csail.mit.edu/graphics/hdrnet/data/hdrnet.pdf coeffs 这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到gridÿ…...
Spring的xxxAware接口工作原理-笔记
1.Aware 接口的工作原理 Spring 提供了多个 XXXAware 接口(如 ApplicationEventPublisherAware、ApplicationContextAware、BeanFactoryAware 等),这些接口的核心作用是让 Bean 在初始化过程中自动获取特定的依赖。 实现 Aware 接口的 Bean…...
flume整合Kafka和spark-streaming核心编程
flume整合Kafka 需求1:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台: 1.查看topic 2.编辑flume-Kafka.conf,并启动flume 3.启动Kafka消费者 4.新增测试数据 5.查…...
第十四届蓝桥杯刷题——day20
第十四届蓝桥杯刷题——day20 引言题目一:工作时长题目二:与或异或题目三:翻转题目四:阶乘的和题目五:公因数匹配附录:源码gitee仓库 引言 蓝桥杯C研究生组(河北赛区)快要开赛了&…...
Python MCP客户端SDK实现
以下是一个用于与大模型MCP协议交互的Python客户端SDK实现: ```python import json import requests import uuid from typing import Dict, List, Any, Optional, Union from enum import Enum from datetime import datetime class MCPTaskType(Enum): TEXT_GENERATION…...
使用el-table表格动态渲染表头数据之后,导致设置fixed的列渲染出现问题
问题如下: 解决方法: 使用$nextTick和v-if,让el-table在页面渲染完成之后再显示 <el-table v-if"visile"></el-table> 获取数据的方法 getdata(){ //这里处理数据 this.visilefalse //不显示table组件 this.$nex…...
Vue 3 父子组件通信案例详解:Props 与 Emits 实战
前言 在 Vue 3 开发中,组件通信是最基础也是最重要的技能之一。本文将用实际案例演示 Vue 3 中最常用的两种父子通信方式:Props(父传子)和 Emits(子传父),帮助大家快速掌握 Composition API 下…...
kotlin与MVVM结合使用总结(三)
1. MVVM 架构详细介绍及源码层面理解 整体架构 MVVM(Model - View - ViewModel)架构是为了解决视图和数据模型之间的耦合问题而设计的。它通过引入 ViewModel 作为中间层,实现了视图和数据的分离,提高了代码的可维护性和可测试性…...
前端基础之《Vue(11)—自定义指令》
一、自定义指令 1、自己封装指令 什么是指令?指令本质上就是DOM功能的一种抽象封装。 如果有一些DOM功能经常用,但是Vue没有提供相关指令,建议自己封装。 2、自定义全局指令 使用Vue.directive(指令名, function() {})定义全局指令。 3、…...
第3.2节 Android应用调用链路分析
3.2.1 Android调用链路简介 在Android应用程序中,调用链路涉及应用程序中不同组件(如Activity、Service、BroadcastReceiver、ContentProvider)之间的调用关系,以及应用程序与系统服务之间的交互。了解和分析这些调用链路对于调试…...
Codeforces Round 1019 (Div. 2) ABC
A 模拟 思路 数组y是不同的,且所以xi * yi 相同,只有x数组全不同才可以满足要求 代码 LL n,m,k;void solve() {map<LL,LL> mp;cin >> n;for (int i 1;i < n;i ){LL x;cin >> x;mp[x] ;}cout << mp.size() << endl;…...
Babylon.js 材质统一转换指南:将 AssetContainer 中的所有材质转换为 PBRMetallicRoughnessMaterial
在现代 3D 开发中,基于物理的渲染(PBR)已成为行业标准。本文将详细介绍如何在 Babylon.js 中将 AssetContainer 加载的各种材质统一转换为 PBRMetallicRoughnessMaterial,实现项目材质的标准化。 为什么需要材质转换? PBRMetallicRoughness…...
Linux Platform驱动模型全解析:从入门到精通
Linux Platform驱动模型全解析:从入门到精通 1. Platform驱动模型概述 1.1 什么是Platform驱动模型 Platform驱动模型是Linux内核为处理非热插拔设备(通常是SoC集成外设)而设计的一套驱动框架。它通过虚拟的"platform总线"将硬件…...
7.Excel:单元格格式
一 案例 1.案例1 2.案例2 3.案例3 二 三种基本数据类型 补充:在没有任何格式的情况下是这样对齐的。 1.文本 默认左对齐,文本不可参与计算。 2.数值 默认右对齐,数值计算精度是15位。 若超出15位,超出部分显示为0。 3.逻辑值 …...
文件传输过滤器绕过:Exe2Hex
Exe2hex是****g0tmilk开发的一款工具,您可以**在这里找到它。该工具将 EXE 文件转录为一系列十六进制字符串**,DEBUG.exe或Powershell可以将其还原为原始 EXE 文件。之后,该脚本会在受害者机器上运行,重建并执行 EXE 文件。这在系统管理员阻止EXE 文件传输或上传的****高级…...
从多类缺陷到高良率跃升|公差分析技术重构动力电池装配精度体系
在新能源汽车产业升级关键期,动力电池装配精度和因装配引起的安全问题已成为制约产能提升的核心瓶颈。某头部电池企业通过 CETOL 6σ 公差分析技术,成功构建了复杂电池系统的精度控制体系。生产实践表明,微观尺度的公差偏差可能引发系统性质量…...
QT开发技术【QT实现桌面右下角消息】
一、效果 ![ 二、弹窗主体部分 noticewidget /* ** File name: NoticeWidget.h ** Author: ** Date: 2025-04-25 ** Brief: 通知栏控件 ** Copyright (C) 1392019713qq.com All rights reserved. */#include "../Include/NoticeWidget.h"…...
【使用层次序列构建二叉树(数据结构C)】
使用层次序列构建二叉树(C语言实现) 在数据结构学习过程中,二叉树的构建方式通常有递归建树(前序/中序)和层次建树(广度优先)两种。本文将介绍一种基于辅助队列实现的层次建树方法,并…...
【基于Qt的QQ音乐播放器开发实战:从0到1打造全功能音乐播放应用】
🌹 作者: 云小逸 🤟 个人主页: 云小逸的主页 🤟 motto: 要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在&…...
蓝桥杯 3. 密码脱落
密码脱落 原题目链接 题目描述 X 星球的考古学家发现了一批古代留下来的密码。 这些密码是由 A、B、C、D 四种植物的种子串成的序列。 仔细分析发现,这些密码串当初应该是前后对称的(即镜像串)。 由于年代久远,其中许多种子…...
数学基础 -- 欧拉恒等式的魅力:让复数旋转起来!
公式推导: e i π − 1 e^{i\pi} -1 eiπ−1 被誉为数学中最美的公式之一,它连接了五个数学中最重要的常数: e i π 1 0 (欧拉恒等式) e^{i\pi} 1 0 \tag{欧拉恒等式} eiπ10(欧拉恒等式) 这不仅是巧合,而是复数与三角函数…...
keil修改字体无效,修改字体为“微软雅黑”方法
在网上下载了微软雅黑字体,微软雅黑参考下载链接 结果在Edit->Configuration中找不到这个字体 这个时候可以在keil的安装目录中找到UV4/global.prop文件 用记事本打开它进行编辑,把字体名字改成微软雅黑 重新打开keil就发现字体成功修改了。 这个…...
LeetCode 每日一题 2845. 统计趣味子数组的数目
2845. 统计趣味子数组的数目 给你一个下标从 0 开始的整数数组 nums ,以及整数 modulo 和整数 k 。 请你找出并统计数组中 趣味子数组 的数目。 如果 子数组 nums[l…r] 满足下述条件,则称其为 趣味子数组 : 在范围 [l, r] 内,设 …...
二进制兼容性分析方法
I. 引言 在软件工程领域,二进制兼容性(Binary Compatibility)是一个核心概念,它指的是一个计算系统能够运行为另一个系统编译的可执行代码(通常是机器码)的能力,而无需重新编译 。这与源代码兼…...
在 WSL 安装 OpenFOAM-12
在 WSL 安装 OpenFOAM-12 参考链接安装教程问题整理1、安装完成后运行测试算例 Alllrun 脚本报错 参考链接 OpenFOAM OpenFoam-v12 OpenFOAM-v12-Ubuntu 安装教程 直接在 OpenFOAM 官网找到 Down -> OpenFOAM v12 选择 DownLoad v12 | Ubuntu -> Read More 具体安装过…...
Linux-06 ubuntu 系统截图软件使用简单记录
文章目录 原委一、Shutter二、Flameshot三、Ksnip 原委 原先使用的 Flameshot 截图软件,在ubuntu 18.04下可以正常使用。 系统升级到22.04 后,安装后的只能截图,不能标注,想着修复下。 以下是个人备忘录记录,如何使用…...
基于python代码的通过爬虫方式实现快手发布视频(2025年4月)
1、将真实的快手创作服务平台的cookie贴到代码目录中kuaishou_cookie.txt文件里,运行python脚本即可; 2、运行之前根据import提示安装一些常见依赖,比如requests等; 3、__NS_sig3.js的源码见快手NS sig3签名算法(2025年1月)_快手sig3算法源码-CSDN博客 4、2025年4月份…...
人工智能与机器学习:Python从零实现逻辑回归模型
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
大模型助力嘉兴妇幼:数据分类分级的智能化飞跃
在医疗行业数字化转型进程中,数据已成为驱动服务升级与业务创新的核心要素。作为医疗行业数字化的探索者,嘉兴市妇幼保健院携手美创打造的智能化数据分类分级项目,数据识别率和分类分级率高达99%,分类分级准确率达90%,…...
MyBatisPlus文档
一、MyBatis框架回顾 使用springboot整合Mybatis,实现Mybatis框架的搭建 1、创建示例项目 (1)、创建工程 新建工程 创建空工程 创建模块 创建springboot模块 选择SpringBoot版本 (2)、引入依赖 <dependencies><dependency><groupId>org.springframework.…...
支持Function Call的本地ollama模型对比评测-》开发代理agent
目标是开发支持多个 Function 定义的智能体代理系统 ✅ 第一部分:是否支持多个函数(multi-function calling) 模型名称支持多个函数注册是否支持函数选择(name 匹配)是否能生成结构化参数OpenChat 3.5 / 3.5-0106✅&a…...
Docker拉取镜像代理配置实践与经验分享
Docker拉取镜像代理配置实践与经验分享 一、背景概述 在企业内网环境中,我们部署了多台用于测试与学习的服务器。近期,接到领导安排,需在其中一台服务器上通过Docker安装n8n应用程序。然而在实际操作过程中,遭遇Docker官方镜像库…...
Jinja 的详细介绍和学习方法
Jinja 是一种流行的 模板引擎(Template Engine),主要用于生成动态的文本内容(如 HTML、XML、配置文件等)。它最初是为 Python 的 Web 框架(如 Flask、Django)设计的,但也可以独立使用…...
在 Windows 系统上升级 Node.js
一、查询电脑端已经安装的 Node.js 版本 1、通过【winR】 键,输入 cmd,点击【确定】按钮打开 cmd 窗口 2、命令行界面输入 node -v 查看目前 Node.js 版本 3、命令行界面输入 npm -v 查看目前 npm 版本 二、进入官网地址下载安装包 1、官网地址&#x…...
特斯拉宣布启动自动驾驶网约车测试,无人出租车服务进入最后准备阶段
特斯拉公司于4月24日正式宣布,已在美国得克萨斯州奥斯汀和加利福尼亚州旧金山湾区启动自动驾驶网约车服务的员工内部测试。这项测试将为今年夏季计划推出的完全无人驾驶出租车服务进行最后的验证和准备。 此次测试使用约200辆经过特殊改装的Model 3车型,…...
C++面试复习(7)2025.4.25
1,说一说常用的 Linux 命令(NIUKE) 1,cat 查看文件内容 cat filename2,rm 删除 rm filename:删除文件。 rm -r directory:删除目录及其内容。 rm -f filename:强制删除文件(不询问确认&…...
使用 uv 工具快速创建 MCP 服务(Trae 配置并调用 MCP 服务)
文章目录 下载Traeuv 工具教程参考我的这篇文章创建 uv 项目main.pyTrae 配置 MCP 服务添加 MCP创建智能体 使用智能体调用 MCP 创建 demo 表查询 demo 表结构信息demo 表插入 2 条测试数据查询 demo 表中的数据 下载Trae https://www.trae.com.cn/ uv 工具教程参考我的这篇…...
07 Python 字符串全解析
文章目录 一. 字符串的定义二. 字符串的基本用法1. 访问字符串中的字符2. 字符串切片3. 字符串拼接4. 字符串重复5.字符串比较6.字符串成员运算 三. 字符串的常用方法1. len() 函数2. upper() 和 lower() 方法3. strip() 方法4. replace() 方法5. split() 方法 四. 字符串的进阶…...
IEEE期刊目录重磅更新!共242本期刊被收录!
🔥 🔥 🔥 🔥 【IEEE期刊目录】 2025年2月,IEEE出版社更新了242本期刊目录,其中: • 完全OA期刊36本:SCI有6本,ESCI有15本; • 混合OA期刊183本&…...
微型计算机原理与接口技术第六版第四章课后习题答案-周荷琴,冯焕清-中国科学技术大学出版社
第六版书籍编排的第3章和第4章,仅这两章习题答案跟第四版的答案是相同的,可以参考第四版的答案 原第四版习题答案,蓝奏云: https://wwss.lanzouq.com/iWXOY1kvk3yf 第六版的第四章的习题我没有单独编辑,它是在上面第四…...
反爬策略应对指南:淘宝 API 商品数据采集的 IP 代理与请求伪装技术
一、引言 在电商数据驱动决策的时代,淘宝平台海量的商品数据极具价值。然而,淘宝为保障平台安全和用户体验,构建了严密的反爬体系。当采集淘宝 API 商品数据时,若不采取有效措施,频繁的请求极易触发反爬机制&#x…...
前端技术Ajax入门
1.1 AJAX 概念和 axios 使用 目标 了解 AJAX 概念并掌握 axios 库基本使用 讲解 1. 什么是 AJAX? 使用浏览器的 XMLHttpRequest 对象与服务器通信。在浏览器网页中,通过 AJAX 技术(XHR 对象)发起获取省份列表数据的请求&…...
【沉浸式求职学习day25】【部分网络编程知识分享】【基础概念以及简单代码】
不知道大家一直高强度学习自己是什么样的感觉,反正我现在逐渐变得麻木了,马上又要实习笔试了,每次笔试都要突击,每次突击都意识到自己有太多不会的,主打一个心累,但是又能怎样呢,自己选的路就是…...
聊聊Spring AI Alibaba的YoutubeDocumentReader
序 本文主要研究一下Spring AI Alibaba的YoutubeDocumentReader YoutubeDocumentReader community/document-readers/spring-ai-alibaba-starter-document-reader-youtube/src/main/java/com/alibaba/cloud/ai/reader/youtube/YoutubeDocumentReader.java public class You…...
常用第三方库:flutter_boost混合开发
常用第三方库:flutter_boost混合开发 前言 在移动应用开发中,混合开发是一个非常重要的话题。特别是对于已有原生应用想要引入Flutter的团队来说,如何实现Flutter页面和原生页面的无缝整合就显得尤为关键。本文将深入介绍flutter_boost这个…...
什么是 JSON?学习JSON有什么用?在springboot项目里如何实现JSON的序列化和反序列化?
作为一个学习Javaweb的新手,理解JSON的序列化和反序列化非常重要,因为它在现代Web开发,特别是Spring Boot中无处不在。 什么是 JSON? 首先,我们简单了解一下JSON (JavaScript Object Notation)。 JSON 是一种轻量级的…...
[mysql]数据类型精讲
目录 数据类型精讲: 整数类型 浮点类型 日期和时间类型 文本字符串类型 数据类型精讲: 精度问题:不能损失数据 性能问题:表的设计,范式的讲解. 表设计的时候需要设置字段,我们现在要把字段类型讲完.,细节点一点点给大家拆解. Float和double是有精度的损失的,这边推荐使用…...
WordPress AI插件能自动写高质量文章吗,如何用AI提升网站流量
WordPress AI插件能自动写高质量文章吗? 最近很多站长都在问,用wordpress AI插件真的能写出搜索引擎喜欢的好文章吗?作为一个用过10款AI写作工具的老站长,今天我就来分享真实使用体验,告诉你哪些插件好用、怎么用才能…...
【中级软件设计师】函数调用 —— 传值调用和传地址调用 (附软考真题)
【中级软件设计师】函数调用 —— 传值调用和传地址调用 (附软考真题) 目录 【中级软件设计师】函数调用 —— 传值调用和传地址调用 (附软考真题)一、历年真题二、考点:函数调用 —— 传值调用和传地址调用🔺1、传值调用🔺2、传引用(地址)调…...
ECMAScript 1(ES1):JavaScript 的开端
1. 版本背景与发布 ●发布时间:1997 年 6 月,由 ECMA International 正式发布,标准编号为 ECMA-262。 ●历史意义:ES1 是 JavaScript 的首个标准化版本,结束了 Netscape Navigator 与 Internet Explorer 浏览器间脚本语…...