目标检测(一)
(三)为代码下载调试的记录,第一次训练写在(四)的部分。
开始调试代码测试环境~
xxxxxxxxxx //取消http代理git config –global –unset http.proxy//取消https代理 git config –global –unset https.proxyJS
1.原代码下载及调试
1.1 Github下载地址:https://github.com/ultralytics/yolov5
1.2 下载完成后,打开文件夹中的 requirements.txt,将torch和torchvision这两行前面加#注释掉,这两行是给cpu版本安装的。
1.3 进入Anaconda Prompt命令行,输入:cd 代码存放位置(下载好的代码存放的位置记录一下,为了便于操作,我存在桌面上了)
1.4 下载一些程序运行需要的程序包
1.5 测试安装结果
2.调试代码
2.1 运行detect.py
2.2 设置参数调用电脑摄像头实时监测
1.原代码下载及调试1.1 Github下载地址:https://github.c ...
Webpack面试题
Webpack和 viteVite 和 Webpack都是现代前端构建工具,但它们在设计理念、构建方式和性能方面有着显著的区别。以下是 Vite 和 Webpack之间的主要区别:
设计理念Webpack:
打包一切:Webpack的核心理念是将所有资源(JavaScript、CSS、图片等)视为模块,将它们打包成一个或多个 bundle。
依赖图:Webpack通过分析入口文件及其依赖关系,构建一个依赖图,然后将这些模块打包到一起。
Vite:
即时开发服务器:Vite 的核心理念是利用浏览器的原生 ES 模块支持,在开发环境中提供即时的模块热替换(HMR),无需预打包。
现代构建工具:Vite 在生产环境中使用 Rollup 进行打包,提供高效的构建性能和灵活的配置。
开发体验Webpack:
打包时间长:在开发环境中,Webpack需要将整个项目打包成一个或多个 bundle,这会导致初次启动时间较长,尤其是对于大型项目。
热更新:Webpack提供模块热替换(HMR),但由于需要重新打包,更新速度可能较慢。
Vite:
即时启动:Vite 利用浏览器的原生 ES ...
取消git代理
git提交或克隆报错fatal: unable to access ‘xxxxxxxxxxx’ to connec**因为git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。
后续原因还有一个,当前代理网速过慢,所以偶尔会成功,偶尔失败。
2.解决方案1.在项目文件夹的命令行窗口执行下面代码,然后再git commit 或git clone取消git本身的https代理,使用自己本机的代理,如果没有的话,其实默认还是用git的**
1234//取消http代理git config --global --unset http.proxy//取消https代理 git config --global --unset https.proxy
前端面试之道
安全防范知识点这一章我们将来学习安全防范这一块的知识点。总的来说安全是很复杂的一个领域,不可能通过一个章节就能学习到这部分的内容。在这一章节中,我们会学习到常见的一些安全问题及如何防范的内容,在当下其实安全问题越来越重要,已经逐渐成为前端开发必备的技能了。
XSS
涉及面试题:什么是 XSS 攻击?如何防范 XSS 攻击?什么是 CSP?
XSS 简单点来说,就是攻击者想尽一切办法将可以执行的代码注入到网页中。
XSS 可以分为多种类型,但是总体上分为两类:持久型和非持久型。
持久型也就是攻击的代码被服务端写入进数据库中,这种攻击危害性很大,因为如果网站访问量很大的话,就会导致大量正常访问页面的用户都受到攻击。
举个例子,对于评论功能来说,就得防范持久型 XSS 攻击,因为我可以在评论中输入以下内容
这种情况如果前后端没有做好防御的话,这段评论就会被存储到数据库中,这样每个打开该页面的用户都会被攻击到。
非持久型相比于前者危害就小的多了,一般通过修改 URL 参数的方式加入攻击代码,诱导用户访问链接从而进行攻击。
举个例子,如果页面需要从 URL 中获取某些参数作为内容的话,不经过 ...
理解Webpack打包过程
webpack 的作用是根据入口文件将源代码编译(构建、打包)成最终代码。中间经过webpack打包,打包的过程就是编译 。整个过程大致分为三个步骤:初始化、编译(最重要)、输出
初始化
在初始化这个阶段webpack会将CLI参数、配置文件、默认配置进行融合,形成一个最终的配置对象。
CLI参数:使用命令行工具,可能会加一些参数进去,比如:
1npx webpack --mode=development --config xxx
配置文件:webpack.config.js文件里面的配置
默认配置:比如入口entry,默认为 ./src/index.js
对配置的处理过程是依托一个第三方库yargs完成的,yargs库就是融合配置的。初始化阶段相对比较简单,主要是为接下来的编译阶段做必要的准备。目前,可以简单的理解为:_初始化阶段主要用于产生一个最终的配置_。
编译
1. 创建chunk
chunk是webpack在内部构建过程中的一个概念,译为块,它表示通过某个入口找到的所有依赖的统称,比方说:入口模块(./src/index.js)依赖a模块(. ...
TypeScript面试题
1. 为什么推荐使用TypeScript?TypeScript是微软公司开发和维护的一种面向对象的编程语言。它是JavaScript的超集,包含其所有元素。
其中,强类型和弱类型、静态类型和动态类型是两组不同的概念。
类型强弱是针对类型转换是否显示来区分,静态和动态类型是针对类型检查的时机来区分。
TS对JS的改进主要是静态类型检查,静态类型检查有何意义?标准答案是“静态类型更有利于构建大型应用”。
推荐使用TypeScript的原因有:
TypeScript是开源的。
TypeScript为JavaScript ide和实践(如静态检查)提供了高效的开发工具。
TypeScript使代码更易于阅读和理解。
使用TypeScript,我们可以大大改进普通的JavaScript。
TypeScript为我们提供了ES6(ECMAScript 6)的所有优点,以及更高的生产率。
TypeScript通过对代码进行类型检查,可以帮助我们避免在编写JavaScript时经常遇到的令人痛苦的错误。
强大的类型系统,包括泛型。
TypeScript只不过是带有一些附加功能的JavaScript。 ...
Node Webpack 性能优化
一、NodeNode是什么?Node.js是一个基于 Chrome V8 引擎的JavaScript运行环境,这个环境就好比是服务器上的浏览器,但正是因为有了它才使得 js 变成了一门后台语言。
Node解决了哪些问题?Node在处理高并发,I/O密集场景有明显的性能优势
高并发,是指在同一时间并发访问服务器
I/O密集指的是文件操作、网络操作、数据库,相对的有CPU密集,CPU密集指的是逻辑处理运算、压缩、解压、加密、解密
Web主要场景就是接收客户端的请求读取静态资源和渲染界面,所以Node非常适合Web应用的开发。
Node 的应用场景一般来说,node 主要应用于以下几个方面:
自动化构建等工具
中间层
小项目
第一点对于前端同学来说应该是重中之重了,什么工程化、自动构建工具就是用 node 写出来的,它是前端的一大分水岭之一
请介绍一下Node事件循环的流程
在进程启动时,Node便会创建一个类似于while(true)的循环,每执行一次循环体的过程我们成为Tick。
每个Tick的过程就是查看是否有事件待处理。如果有就取出事件及其相关的回调函 ...
SVG的理解
概述SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
SVG 文件可以直接插入网页,成为 DOM 的一部分,然后用 JavaScript 和 CSS 进行操作。
1234567891011121314<!DOCTYPE html><html><head></head><body><svgid="mysvg"xmlns="http://www.w3.org/2000/svg"viewBox="0 0 800 600"preserveAspectRatio="xMidYMid meet"><circle id="mycircle" cx="400" cy="300" r=&quo ...
LeetCode 精选算法 200 题
上下翻转二叉树
给你一个二叉树的根节点 root ,请你将此二叉树上下翻转,并返回新的根节点。
你可以按下面的步骤翻转一棵二叉树:
原来的左子节点变成新的根节点
原来的根节点变成新的右子节点
原来的右子节点变成新的左子节点
1234567891011121314151617181920212223var upsideDownBinaryTree = function(root) { if (root && root.left === null) return root; return fn(root, null);};function fn(node, pre) { if (node === null) return pre; if (node.left === null) return pre; const currNode = { val: node.left.val, left: node.right ? generateTree(node.rig ...
性能优化
当后端一次性返回10万条数据, 前端要怎么处理?
懒加载+分页:
一般用于做长列表优化,类似于表格的分页功能,,具体思路就是用户每次只加载能看见的数据,当滚动到底部时再去加载下一页的数据。
虚拟滚动技术:
虚拟滚动技术也可以用来优化长列表,其核心思路就是每次只渲染可视区域的列表数,当滚动后动态的追加元素并通过顶部padding来撑起整个滚动内容,实现思路也非常简单。
Web Workers
利用Web Workers进行数据处理和准备,可以避免阻塞UI线程。这意味着用户界面可以保持响应,同时后台线程处理大量数据。
CDNCDN的概念CDN(Content Delivery Network,内容分发网络)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
典型的CDN系统由下面三个部分组成:
分发服务系统: 最基本的工作单元就是Cache设备,cache(边缘cache)负责直接响应最终用户的访问请求,把缓存在本地的内容快速地提供给用户 ...