Javascript面试基础6【每日更新10】
Gulp
- gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成
- Gulp的核心概念:流
- 流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向
- gulp正是通过流和代码优于配置的策略来尽量简化任务编写的工作
- Gulp的特点:
- 易于使用:通过代码优于配置的策略,gulp让简单的任务简单,复杂的任务可管理。
- 构建快速利用Node.js 流的威力,你可以快速构建项目并减少频繁的IO操作。
- 易于学习通过最少的API,掌握 gulp毫不费力,构建工作尽在掌握:如同一系列流管道
Vue双向数据绑定
Vue核心基础-CSDN博客
设计模式—观察者模式与发布订阅-CSDN博客
vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过0bject.defineProperty( 来劫持各个属性的setter ,getter ,在数据变动时发布消息给订阅者,触发相应的监听回调
事件的各个阶段
在JavaScript中,事件处理是一个重要的概念,它允许开发者在用户与网页进行交互时执行代码。事件处理通常涉及到事件的各个阶段,这些阶段也被称为事件流(Event Flow)或事件传播(Event Propagation)。主要可以分为三个阶段:捕获阶段(Capturing Phase)、目标阶段(Target Phase,也称为事件处理阶段或冒泡前的激活阶段)、冒泡阶段(Bubbling Phase)。
1. 捕获阶段(Capturing Phase)
- 顺序:从文档的根节点(通常是
document
对象)开始,向下传播到目标元素。 - 特点:在捕获阶段,事件处理器会从最外层的节点开始触发,然后向事件的目标节点传播。这个阶段的目的是在事件到达目标节点之前,先给外层的元素机会来处理这个事件。
- 用途:捕获阶段通常用于事件在到达目标元素之前进行拦截处理,例如,阻止事件进一步传播或修改事件对象。
2. 目标阶段(Target Phase)
- 顺序:当事件到达目标元素时,会触发目标元素上的事件处理器。
- 特点:在这个阶段,事件处理器被绑定在目标元素上,即用户实际与之交互的元素。这通常是我们设置事件监听器的地方。
- 注意:技术上讲,目标阶段并不是事件传播的一个独立阶段,但它发生在捕获阶段和冒泡阶段之间,是事件处理器被目标元素实际调用的时刻。
3. 冒泡阶段(Bubbling Phase)
- 顺序:从目标元素开始,向上传播到文档的根节点。
- 特点:在冒泡阶段,事件会从目标元素开始,一直向上传播到DOM树的顶层。这个阶段的目的是允许事件在到达顶层之前,沿途的每个节点都有机会处理这个事件。
- 用途:冒泡阶段常用于在不特定知道哪个元素会被点击的情况下,处理事件。例如,点击了列表中的某个项,但你可能希望无论点击了哪个项,都能触发同一个事件处理器。
设置事件监听器时指定阶段
在JavaScript中,使用addEventListener
方法添加事件监听器时,可以通过第三个参数来指定监听器是在捕获阶段还是冒泡阶段触发。如果省略这个参数,或者将其设置为false
,则监听器会在冒泡阶段触发。如果设置为true
,则监听器会在捕获阶段触发。
element.addEventListener('click', function(event) { // 事件处理代码
}, true); // 在捕获阶段触发 element.addEventListener('click', function(event) { // 事件处理代码
}, false); // 在冒泡阶段触发(默认)
let VS var VS const
- let
- 允许你声明一个作用域被限制在块级中的变量、语句或者表达式。
- let绑定不受变量提升的约束,这意味着let声明不会被提升到当前
- 该变量处于从块开始到初始化处理的“暂存死区”
- var
- ·声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的
- 由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明
- const
- 声明创建一个值的只读引用(即指针)
- 基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成const申明基本数据类型时”再将其值改变时,将会造成报错,例如const a = 3 ;a = 5 时将会报错
- 但是如果是复合类型时,如果只改变复合类型的其中某个Value 项时,将还是正常使用
快速让一个数组乱序
sort方法
const arr=[1,2,3,4,5,6];
arr.sort(function(a,b){return Math.random()-0.5;
})
Fisher-Yates洗牌算法
在JavaScript中,快速让一个数组乱序(即打乱数组元素的顺序)的一种常用方法是使用Fisher-Yates洗牌算法(也称为Knuth洗牌算法)。这种方法的基本思想是遍历数组元素,并在每一步中随机选择一个未处理的元素与当前元素交换位置。
以下是一个使用Fisher-Yates洗牌算法来打乱数组顺序的示例代码:
function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { // 生成一个0到i的随机索引 const j = Math.floor(Math.random() * (i + 1)); // 交换array[i]和array[j] [array[i], array[j]] = [array[j], array[i]]; } return array;
} // 示例
const myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(shuffleArray(myArray));
如何渲染几万条数据并不卡住界面
考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分DOM,那么就可以通过requestAnimationFrame来每16 ms刷新一次
requestAnimationFrame
是 Web API 的一部分,它用于在浏览器下一次重绘之前调用指定的函数来更新动画。这是一种高效的方式来创建平滑的动画,因为它允许浏览器优化和最小化重绘和重排,从而提供更好的性能和用户体验。
当你使用 requestAnimationFrame
时,你需要提供一个回调函数作为参数。浏览器会在这个函数准备好进行屏幕更新之前调用它。这个函数通常用于更新动画的当前状态,比如改变元素的位置或样式。
基本用法
function step(timestamp) { // 更新动画状态 // 例如,改变元素的位置 // ... // 如果需要继续动画,则再次调用 requestAnimationFrame requestAnimationFrame(step);
} // 启动动画
requestAnimationFrame(step);
优点
- 高效:
requestAnimationFrame
由浏览器进行优化,以确保动画的平滑性和性能。 - 自动时间间隔:你不需要自己设置时间间隔(如使用
setTimeout
或setInterval
),浏览器会基于屏幕刷新率来调用你的回调函数。 - 节省CPU:当标签页或窗口不在前台时,
requestAnimationFrame
会自动暂停调用回调函数,从而节省CPU资源。
停止动画
要停止动画,你可以简单地不再调用 requestAnimationFrame
。但是,如果你需要从一个特定的回调中停止动画(例如,基于某些条件),你可能需要将 requestAnimationFrame
的返回值(一个ID)保存起来,并使用 cancelAnimationFrame
来取消它。
let animationId = null; function startAnimation() { animationId = requestAnimationFrame(step);
} function stopAnimation() { if (animationId) { cancelAnimationFrame(animationId); animationId = null; }
} function step(timestamp) { // ... 更新动画状态 // 根据需要决定是否继续动画 // requestAnimationFrame(step);
} // 启动和停止动画
startAnimation();
// ... 在某个时刻停止动画
stopAnimation();
获取页面所有checkbox
怎样添加、移除、移动、复制、创建和查找节点
在JavaScript中,操作DOM(文档对象模型)是常见的任务,包括添加、移除、移动、复制、创建和查找节点。以下是一些基本的示例,说明如何执行这些操作:
1. 创建节点
要创建一个新的DOM节点,你可以使用document.createElement()
方法。
// 创建一个新的div元素
var newDiv = document.createElement("div"); // 设置其一些属性
newDiv.id = "newDivId";
newDiv.className = "newDivClass";
newDiv.textContent = "这是一个新的div"; // 将新创建的元素添加到body中
document.body.appendChild(newDiv);
2. 查找节点
查找DOM节点可以使用多种方法,如getElementById(),getElementsByClassName()
,
getElementsByTagName()
, querySelector()
, querySelectorAll()
等
// 通过ID查找
var elementById = document.getElementById("someElementId"); // 通过类名查找(返回HTMLCollection)
var elementsByClass = document.getElementsByClassName("someClass"); // 通过标签名查找(返回HTMLCollection)
var elementsByTagName = document.getElementsByTagName("p"); // 使用querySelector查找第一个匹配的元素
var firstElement = document.querySelector(".someClass"); // 使用querySelectorAll查找所有匹配的元素(返回NodeList)
var allElements = document.querySelectorAll(".someClass");
3. 添加节点
将新节点添加到DOM中,可以使用appendChild()
或insertBefore()
。
// 将新节点添加到body的末尾
document.body.appendChild(newDiv); // 将新节点添加到某个特定元素之前
var referenceNode = document.getElementById("someElementId");
document.body.insertBefore(newDiv, referenceNode);
4. 移除节点
使用removeChild()
方法可以从DOM中移除一个节点。
var elementToRemove = document.getElementById("someElementIdToRemove");
if (elementToRemove && elementToRemove.parentNode) { elementToRemove.parentNode.removeChild(elementToRemove);
}
5. 移动节点
移动节点实际上是一个先移除再添加的过程。首先,使用removeChild()
从当前位置移除节点,然后使用appendChild()
或insertBefore()
将其添加到新位置。
6. 复制节点
使用cloneNode()
方法可以复制一个节点。这个方法接受一个布尔值作为参数,指定是否进行深复制(复制节点及其所有子节点)。
// 浅复制(只复制节点本身)
var clonedNode = elementById.cloneNode(false); // 深复制(复制节点及其所有子节点)
var clonedNodeDeep = elementById.cloneNode(true); // 然后,你可以将复制的节点添加到DOM中的某个位置
document.body.appendChild(clonedNodeDeep);
正则表达式
正则表达式-CSDN博客
Javascript中callee与caller的作用
- caller是返回一个对函数的引用,该函数调用了当前函数;
- callee是返回正在被执行的function函数,也就是所指定的function对象的正文
在JavaScript中,callee
和caller
是两个非标准的、但曾经在早期JavaScript版本中广泛使用的属性,它们分别用于函数内部引用当前执行的函数和调用当前函数的外部函数。然而,值得注意的是,由于它们带来的混淆和潜在的性能问题,现代JavaScript开发中通常不推荐使用这两个属性,并且在严格模式(strict mode)下,这两个属性是不可用的。
callee
callee
属性是arguments
对象的一个属性,它指向当前正在执行的函数本身。这在编写递归函数时特别有用,因为你可以直接使用arguments.callee
来引用函数自身,而不需要在函数体内显式地引用函数名。然而,这种做法可能会导致代码难以理解和维护,因为它隐藏了函数的实际名称。
function factorial(n) { if (n <= 1) { return 1; } else { return n * arguments.callee(n - 1); }
}
现代JavaScript中,更推荐使用函数名来引用自身,或者使用箭头函数来避免this
和arguments
的混淆。
caller
caller
属性是一个函数对象的属性,它指向调用当前函数的函数。这在你需要知道是哪个函数调用了当前函数时非常有用。然而,与callee
一样,caller
属性也带来了代码可读性和维护性的挑战,并且在严格模式下是不可用的。
function outerFunction() { innerFunction();
} function innerFunction() { console.log(innerFunction.caller); // 指向outerFunction
} outerFunction();
替代方案
- 递归函数:对于递归函数,直接使用函数名而不是
arguments.callee
。 - 调试和日志记录:对于需要知道调用栈的情况,考虑使用现代浏览器的开发者工具,或者利用
Error
对象的堆栈跟踪(尽管这可能会因浏览器而异且不是跨平台的解决方案)。 - 设计模式:考虑使用设计模式(如事件监听器、回调函数等)来管理函数间的依赖和调用关系,而不是依赖
caller
属性。
相关文章:
Javascript面试基础6【每日更新10】
Gulp gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器;它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成 Gulp的核心概念:流 流,简单来说就是建立在面向对象基础上的一种抽象的…...
CTF Web信息搜集 25000字详解
目录 前言信息收集常见信息分类域名信息whois备案CDN子域名解析记录 旁站C段服务器信息端口服务器类型数据库类型waf防火墙 网站信息备份文件备份文件常见的后缀名备份文件常见的文件名gedit备份文件vim备份文件收集方法 敏感目录CMS类型(指纹识别)探针泄…...
MSPM0G3507之电赛小车
一、前言 本文没什么技术分享,纯聊天。以下内容均为笔者的浅薄理解,有不对的地方还请多多包涵。 二、相关配置 主控单元:MSPM0G3507SPTR(48角) 编译环境:Keil5.33、5.39(推荐)都可 …...
linux运维一天一个shell命令之vmstat详解
概念 vmstat 是 Linux 系统中一个非常有用的工具,主要用于报告系统的虚拟内存、进程、CPU 活动和 IO 性能等信息。以下是对 vmstat 工具的详细解释: 基本语法 vmstat [options] [delay [count]]delay:更新的时间间隔(以秒为单…...
前端开发调试工具推荐分类整理
具体前往:前端调试工具分类整理汇总...
http协议与nginx
动态页面与静态页面的差别: (1)URL不同 静态⻚⾯链接⾥没有“?” 动态⻚⾯链接⾥包含“?” (2)后缀不同 (开发语⾔不同) 静态⻚⾯⼀般以 .html .htm .xml 为后缀 动态⻚⾯⼀般以 .php .jsp .py等为后…...
一款国外开发的高质量WordPress下载站模板主题
5play下载站是由国外站长开发的一款WordPress主题,主题简约大方,为v1.8版本, 该主题模板中包含了上千个应用,登录后台以后只需要简单的三个步骤就可以轻松发布apk文章, 我们只需要在WordPress后台中导入该主题就可以…...
Laravel为什么会成为最优雅的PHP框架
Laravel之所以成为最优雅的PHP框架之一,是因为它提供了一系列的优点,包括简洁的语法、强大的功能集、高度模块化和可扩展性、优雅的ORM、内置认证系统、丰富的社区支持和测试友好等。这些优点使得Laravel在PHP框架中脱颖而出,成为了很多开发者的首选框架。 官网:https://l…...
孤儿进程的例子
先让父进程死亡,子进程的父进程会被操作系统管理 先使用gcc编译代码, 执行代码后用 ps -p <进程号> -f 查看进程 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h>int main() {pid_t pid;// 创建…...
CSS前端面试题——怎么用CSS实现一个宽高自适应的正方形?
方法一:使用 padding 方案 这种方法通过设置元素的 padding 属性来实现宽高比例相等的正方形。假设我们希望正方形的边长为相对于父容器的百分比值,比如50% .square {width: 50%; /* 可以是任意宽度,这里假设为父元素宽度的50% */padding-t…...
谷粒商城实战笔记-56~57-商品服务-API-三级分类-修改-拖拽功能完成
文章目录 一,56-商品服务-API-三级分类-修改-拖拽功能完成二,57-商品服务-API-三级分类-修改-批量拖拽效果1,增加按钮2,多次拖拽一次保存完整代码 在构建商品服务API中的三级分类修改功能时,拖拽排序是一个直观且高效的…...
Shader入门精要总结(二)矩阵
1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘,它们的结果AB将会是一个rc大小的矩阵,不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#…...
基于CentOS Stream 9平台安装MySQL Community Server 9.0.1 Innovation
1. 安装之前 1.1 查看系统版本 cat /etc/redhat-releaseCentOS Stream release 9 1.2 查看cpu架构 lscpu架构: x86_64 CPU 运行模式: 32-bit, 64-bit 2. 官网下载 https://dev.mysql.com/downloads/mysql/ 要多看看 官方9.0文档:https://d…...
正则采集器之五——商品匹配规则
需求设计 实现分析 系统通过访问URL得到html代码,通过正则表达式匹配html,通过反向引用来得到商品的标题、图片、价格、原价、id,这部分逻辑在java中实现。 匹配商品的正则做成可视化编辑,因为不同网站的结构不同,同…...
一键切换阿里yum源(包括其他系统repo镜像查找方法)
一键切换阿里yum源 示例命令其他系统repo镜像GitHub文档 示例命令 # 备份旧源 mv CentOS-Base.repo CentOS-Base.repo.bak # 添加新源(阿里镜像源) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo其他系统repo镜像 这里的示例是用…...
Fiddler学习笔记
目录 前言 简介 原理 界面 前言 测试可以使用fiddler工具,通过抓包的方式修改前端参数和模拟后端返回,快速定位缺陷。 简介 Fiddler是HTTP协议调试代理工具,可以记录并检查所有客户端和服务器之间的HTTP和HTTPS请求,允许监视…...
【Vue3】watch 监视多种类型数据
【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…...
【C++入门】虚函数与多态
文章目录 前言虚函数是什么?如何使用虚函数? 纯虚函数是什么?虚函数与普通函数的区别虚表虚表是什么?含有虚表的类内存结构图如何找到虚表的地址?示例代码代码解释 多态是什么?如何使用多态?为什…...
wpf中轮询显示图片
本文的需求是,在一个文件夹中,放一堆图片的集合,然后在wpf程序中,按照定时的方式,循序显示照片。 全部代码 1.声明一个PictureInfo类 namespace WpfApp1 {public class PictureInfo{public string? FileName { get; …...
CSA笔记9-磁盘管理(2)
分区挂载 挂载:将该文件系统中的内容与指定的目录关联起来,使得你可以通过该目录来访问文件系统中的文件和目录。 mount 命令用来挂载文件系统 #挂载/dev/sda1和/dev/sda2 [rootlocalhost ~]# mkdir test{1..2} [rootlocalhost ~]# ll test1 te…...
Python入门第三课
# 入门第三课 # 关键字 if and or in not in ! car g print(car g) print(car dd) if car ! hh:print("wlcome to here ") age 33 print(age 33) print(age 44) age1 44 if age >0 and age1 > 0:print("nihao") if age >0 or age1 > …...
java计算器,输入公式和对应变量的值
目标:最近想写个东西,本质就是一个计算器,我们可以输入公式(例如:ab),然后把公式的值(a:10,b:20)也输入进去。最后得到结果。核心:这个想法核心部分就是给一个…...
加密货币赋能跨境电商:PayPal供应链金融服务如何引领行业新趋势
跨境电商行业近年来呈现出爆发式增长,随着全球化贸易壁垒的降低和数字经济的快速发展,越来越多的商家和消费者跨越国界进行交易。根据eMarketer的数据,全球跨境电商交易额在2023年已超过4万亿美元,并预计在未来几年内仍将保持两位…...
redis面试(二)List链表数据
list 列表 我们总是说List为列表,其实在真正的数据结构来说,redis是自己基于c语言来实现的双向链表数据结构,主要的逻辑就是每个节点都可以指向下一个节点,这个结构就属于链表数组结构。 每个节点中的属性如下: type…...
SpringDataJPA(三):多表操作,复杂查询
一、Specifications动态查询 有时我们在查询某个实体的时候,给定的条件是不固定的,这时就需要动态构建相应的查询语句,在Spring Data JPA中可以通过JpaSpecificationExecutor接口查询。相比JPQL,其优势是类型安全,更加的面向对象。 import …...
嵌入式硬件面试题集萃:从基础到进阶
基础问题 问题: 解释什么是微控制器,以及它与微处理器的区别。 答案: 微控制器是具有集成内存和输入/输出外设的微型计算机。与通用微处理器相比,微控制器通常用于控制特定应用,而不是执行通用计算任务。 问题: 什么是数字逻辑门,…...
easyui-datebox 只显示月份选择,默认开启月份,隐藏日期选择框
如果你使用 easyui-datebox 并希望隐藏日期选择框,只显示月份选择,可以通过一些自定义代码来实现。虽然 EasyUI 没有直接提供这种功能,但可以通过自定义 formatter 和 parser 方法,以及修改 onShowPanel 事件来实现这个功能。 以下…...
【数据结构】队列(链表实现 + 力扣 + 详解 + 数组实现循环队列 )
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…...
02 Go语言操作MySQL基础教程_20240729 课程笔记
概述 如果您没有Golang的基础,应该学习如下前置课程。 Golang零基础入门Golang面向对象编程Go Web 基础Go语言开发REST API接口_20240728 基础不好的同学每节课的代码最好配合视频进行阅读和学习,如果基础比较扎实,则阅读本教程巩固一下相…...
相交链表 - 力扣(LeetCode)C语言
160. 相交链表 - 力扣(LeetCode) (点击前面链接即可查看题目) 一、题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始…...
【Python】基础学习技能提升代码样例3:JSON文本处理
对json的处理,无非是编码和解码两部分 编码:将python数据结构转换为json字符串解码: 将json字符串转换为python数据结构 另外,还有.json文件的读写 一、编码 json.dumps(obj, *, skipkeysFalse, ensure_asciiTrue, check_circularTrue, a…...
最新Yiso智云搜索引擎系统源码/开源PHP源码/修复版
源码简介: 最新Yiso智云搜索引擎系统源码/开源PHP源码/修复版。Yiso 是一个性能非常好的搜索引擎,不仅免费开源,还能当作收录网址的平台来用呢!只需要输入关键词,就能轻松找到相关的搜索结果内容。 1、Yiso 用的是自…...
Anconda 快速常用命令简洁版
目的:简单清楚的使用基本的conda 命令 可能需求 查看项目中的虚拟环境及依赖是否满足需求操作新环境来满足项目或者论文的实现 Anconda 常用命令 conda 查看基础命令1. 进入Anaconda 环境2. 查看版本3.查看有哪些虚拟环境4.激活虚拟环境5. 进入虚拟环境查看6. 退出…...
Android 系统启动动画
一、接着我们把 bootanimation.zip 动画文件 预制到 /system/media/ 目录下: 二、目录/system/media/bootanimation.zip PRODUCT_COPY_FILES \$(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zipPRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST \ /…...
解决antd打开modal时页面自动跳到顶部问题
问题原因:antd的样式中有一行,如下样式代码,这行代码导致了在本来有滚动条的页面底部触发modal弹出时,会自动滚动到页面顶部。 html {overflow-y: scroll; } 解决办法:删除这行代码、或者将html的overflow-y属性改成…...
什么是等保测评2.0,等保测评如何定级
在信息化时代,网络安全已成为国家安全的重要组成部分。为了应对日益复杂的网络安全形势,我国推出了网络安全等级保护制度,其中等保测评是评估信息系统安全防护能力的关键环节。本文将深入探讨等保2.0的测评流程和定级标准,以揭示其…...
【嵌入式英语教程--6】C语言中的数组与指针
C语言中的数组与指针 英文原文 Arrays and pointers are fundamental concepts in the C programming language. An array is a collection of elements of the same data type stored in contiguous memory locations. Arrays can be used to store and manipulate sequence…...
RocketMQ 中的同步发送
在现代分布式系统中,消息队列是实现异步通信和解耦的重要组件。Apache RocketMQ 是一款高性能、高吞吐量的分布式消息中间件,广泛应用于电商、金融等领域。本文将详细介绍 RocketMQ 中的同步发送,包括其原理、应用场景、代码示例及注意事项。…...
c语言指针2
文章目录 一、void * 指针二、const关键字1.const修饰变量2.const修饰指针变量2. 1 const放在*的右边2. 2 const放在*的左边2. 3 总结 三、指针的运算3. 1指针的加减运算3. 2 指针 - 指针3. 3 指针的关系运算 四、野指针4. 1 什么叫野指针?4. 1 野指针的成因4.1.1 指…...
十七、openCV教程 图像轮廓
一、图像轮廓 图像轮廓是具有相同颜色或灰度的连续点的曲线.轮廓在形状分析和物体的检测和识别中很有用。 轮廓的作用:.用于图形分析、物体的识别和检测 注意点: 为了检测的准确性,需要先对图像进行二值化或Canny操作。 画轮廓时会修改输入的图像,如…...
基于视觉的语义匹配见多了,那基于雷达的呢?
论文题目: LiDAR-based HD Map Localization using Semantic Generalized ICP with Road Marking Detection 论文作者: Yansong Gong, Xinglian Zhang, Jingyi Feng, Xiao He and Dan Zhang 作者单位:北京驭势科技有限公司 导读ÿ…...
01、爬虫学习入门
爬虫:通过编写程序,来获取获取互联网上的资源 需求:用程序模拟浏览器,输入一个网址,从该网址获取到资源或内容 一、入门程序 #使用urlopen来进行爬取 from urllib.request import urlopen url "http://www.ba…...
我与C语言二周目邂逅vlog——6.文件操作
1. 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久…...
Hugo 部署与自动更新(Git)
文章目录 Nginx部署Hugonginx.confhugo.conf Hugo自动更新Hugo自动更新流程添加访问令牌添加web hookrust实现自动更新接口 Nginx部署Hugo nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;even…...
HTTP代理揭秘:这些场景你都用对了吗?
HTTP代理是网络中常见的一种工具,可以帮助我们提升网络安全性和隐私保护,优化网络访问速度。本文将详细介绍什么是HTTP代理及其适用的场景。 HTTP代理是介于客户端(如浏览器)和服务器之间的中间服务器。它接收客户端的HTTP请求&a…...
电动汽车充电技术及运营知识问答pdf
电动汽车充电技术及运营知识问答 作者:马银山编著 出版社:北京:中国电力出版社 ISBN:9787512320406 资源大小:16.99MB 目录: http://literalink.top/resource/detail/7181601144102195200 第一章 电动汽车基本知识 1 1-1什么是电动汽车? 11-…...
playbooks 分布式部署 LNMP
1、环境配置 ansible 服务器 192.168.10.10nginx 服务器 192.168.10.20mysql 服务器 192.168.10.21php 服务器 192.168.10.22 2、安装 ansble #192.168.10.10节点 yum install -y epel-release #先安装 epel 源 yum install -y ansible配置主机清单 …...
成为git砖家(8): 使用 git log 查询范围内的 commit
文章目录 1. 查询 git log 的文档2. 不带任何参数: git log 啥意思?3. git log 最主要功能是什么?4. git log <commit1>..<commit2> 什么意思5. 查看最近n次commit6. References 1. 查询 git log 的文档 git help log --web市面上针对 git …...
Win10出现错误代码0x80004005 一键修复指南
对于 Windows 10 用户来说,错误代码 0x80004005 就是这样一种迷雾,它可能在不经意间出现,阻碍我们顺畅地使用电脑。这个错误通常与组件或元素的缺失有关,它可能源自注册表的错误、系统文件的损坏,或者是软件的不兼容。…...
C++ 基础(类和对象下)
目录 一. 再探构造函数 1.1. 初始化列表(尽量使用列表初始化) 二. static成员 2.1static成员初始化 三.友元 3.1友元:提供了⼀种 突破类访问限定符封装的方式. 四.内部类 4.1如果⼀个类定义在另⼀个类的内部,这个内部类就叫…...