自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 PPOCRLabel安装及使用

输入以下命令可以查看我们所创建的所有环境信息(base是anaconda所带的原生环境)

2024-07-18 09:38:39 120

原创 PPOCR实践三:文档视觉问答(DOC-VQA)

VQA指视觉问答,主要针对图像内容进行提问和回答,DOC- VQA是VQA任务中的一种,DOC-VQA主要针对文本图像的文字内容提出问题。PaddleOCR里的DOC- VQA算法基于Paddle NLP自然语言处理算法库进行开发,支持基于多模态方法对的以及任务。

2024-05-21 09:06:28 627

原创 PPOCR实践二:pp-OCRv3基本使用

【代码】PPOCR实践二:pp-OCRv3基本使用。

2024-05-20 11:26:06 236

原创 PPOCR实践一:环境准备(Anaconda和Pycharm)

Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。

2024-05-20 11:11:35 978

原创 mac 安装homebrew

【代码】mac 安装homebrew。

2024-05-07 11:29:22 345

原创 前端下载blob类型数据

【代码】前端下载blob类型数据。

2023-07-12 15:47:04 213

原创 treer--导出目录结构树

导出目录结构到readme

2023-03-01 10:29:59 283

原创 关于图片缓存

图片缓存

2023-02-11 12:19:38 162

原创 html2canvas截图模糊问题

html2canvas截图模糊

2023-02-11 12:09:36 2545

原创 localStorage.username 和 localStorage.getItem(‘username‘)

localStorage.username 和localStorage.getItem('username')的区别

2023-02-08 23:42:37 462

原创 面向对象一--简介

面向对象编程什么是面向对象编程?面向对象是一种编程思想,经常被拿来和面向过程比较。其实说的简单点,面向过程关注的重点是动词,是分析出解决问题需要的步骤,然后编写函数实现每个步骤,最后依次调用函数。而面向对象关注的重点是主谓,是把构成问题的事物拆解为各个对象,而拆解出对象的目的也不是为了实现某个步骤,而是为了描述这个事物在当前问题中的各种行为。面向对象的特点是什么?封装:让使用对象的人不考虑内部实现,只考虑功能使用 把内部的代码保护起来,只留出一些 api 接口供用户使用继承:就是为了代码

2023-02-08 20:25:07 47

原创 前端可视化

前端数据可视化解决方案:Highcharts Echarts AntVthree.js zrender d3canvas svg webGL HTMLchromeskia openGLskiaskia是chrome和Android的的底层2D绘图引擎,skia采用c++变成,由于它位于浏览器的更底层,所以我们平常接触较少。OpenGLOpenGL(Open Graphics Library)是2D、3D图形渲染库,它可以绘制从简单的2D图形到复杂的

2023-02-08 20:23:47 593

原创 面向对象三--继承

继承

2023-02-08 20:22:49 29

原创 面向对象二-- 原型及原型链

原型和原型链

2023-02-08 20:22:41 42

原创 NodeJs(一)

node.js初探

2023-02-08 20:16:28 71

原创 二维数组转置

二维数组转置

2023-02-08 20:05:39 438

原创 特殊字符转义

在项目中使用了json格式的字符串进行传参,发现传到后台例如: ;/?????&=+$,# 这些的特殊字符获取不到。于是想到json格式对这些特殊的参数无法处理。后来查资料发现可以使用encodeURIComponent() 函数解决js传参的特殊字符问题。encodeURIComponent():该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ’ ( )。其他字符(比如 :;/?????&=+$,# 这些用于分隔

2023-01-11 17:24:35 535

原创 page-break-after最后多打印一页的解决办法

今天,用户反应在打印多条记录的时候,每打一条记录都会多出一页空白页来处理。网页上的强制分页我是利用CSS来处理的,即always{ page-break-after: always;}经过查看页面的源代码,发现每次循环数据的时候<div>style="page-break-after:always"></div>在最后多循环一条。经过分析,就是因为这个多出来的一条导致了这个问题的出现。解决办法也很简单,只需加入如下的样式:.always:last-ch

2021-04-25 20:57:16 1647 2

原创 XHR的responseType属性(下载文件)

最近有个需求,从服务器下载数据表格,存储到本地,过程中发现excel保存不成功,最后发现是responseType未设置正确。responseType是什么?XMLHttpRequest.responseType 属性是一个枚举类型的属性,设置返回响应数据的类型。当将responseType设置为一个特定的类型时,你需要确保服务器所返回的类型和你所设置的返回值类型是兼容的。responseType支持以下几种值:key含义“”responseType 为空字符串时,采用默.

2021-04-25 20:55:43 4568

原创 按自然月计算日期间隔

class Moment{ constructor(date){ this.date = this.initDate(date); } initDate(date){ if(date instanceof Date){ return [date.getFullYear(), date.getMonth()+1, date.getDate()]; } else if(/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(date)){

2020-12-31 18:21:02 650

原创 BOM--浏览器对象模型

浏览器对象模型(BOM)是什么?BOM是Browser Object Model的缩写,简称浏览器对象模型。BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。BOM体系结构图:BOM能做什么?BOM提供了一些访问窗口对象的一些方法,我们可以用它来移动窗口位置,改变窗口大小,打开新窗口和关闭窗口,弹出对话框,进行导航以及获取客户的一些信息如:浏览器品牌版本,屏幕分辨率。但BOM最强大的功能是它提供了一个访问HTML页面的一入口——document对象,以使得我们可以通过这个入口来

2020-12-31 18:20:35 397

原创 DOM事件模型四(Event对象)

https://blog.csdn.net/qq_23389687/article/details/80166843#js%E4%B8%AD%E7%9A%84dom0%E5%92%8Cdom2%E4%BA%8B%E4%BB%B6https://www.imooc.com/article/260631https://www.jianshu.com/p/bbd6e600c0d3

2020-12-31 18:20:10 328

原创 DOM事件模型三(关于Dom0级和Dom2级)

发展历史DOM 级别 0DOM 级别 0 不是 W3C 规范。而仅仅是对在 Netscape Navigator 3.0 和 Microsoft Internet Explorer 3.0 中的等价功能性的一种定义。DOM 级别 1DOM 级别 1 专注于 HTML 和 XML 文档模型。它含有文档导航和处理功能。DOM 级别 2DOM 级别 2 对 DOM 级别 1 添加了样式表对象模型,并定义了操作附于文档之上的样式信息的功能性。 DOM 级别 2 同时还定义了一个事件模型(Events,

2020-12-31 18:19:45 1132 1

原创 DOM事件模型二(事件委托)

传统的事件处理中,需要为每个元素添加事件处理器。事件委托则是一种简单有效的技巧,通过它可以把事件处理器添加到一个父级元素上,从而避免把事件处理器添加到多个子级元素上。事件委托的原理用到的就是事件冒泡和目标元素,把事件处理器添加到父元素,等待子元素事件冒泡,并且父元素能够通过target(IE为srcElement)判断是哪个子元素,从而做相应处理。传统事件处理,为每个元素添加事件处理器,代码如下:<!DOCTYPE html><html lang="en"><hea

2020-12-31 18:19:15 104 1

原创 DOM事件模型一(事件捕获、事件冒泡、事件流)

事件事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。事件通常与函数结合使用,函数不会在事件发生前被执行! (如用户点击按钮)。事件捕获事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。事件捕获的用意在于在事件到达预定目标之前就捕获它。以下列HTML结构为例,说明事件冒泡、事件捕获及事件流。// 示例一<!DOCTYPE html><html lang="en"><head> <meta charset="

2020-12-31 18:18:32 154

原创 Promise练习四(并发请求,最大阈值)

// 创建模拟并发执行的数据const list = []const times = [1000, 2000, 900, 3000, 2000, 3000, 2000, 3000]const isRandomTime = falsefor (let i = 1; i <= 8; i++) { list.push(() => { return new Promise((resolve, reject) => { let time = !

2020-12-20 20:43:10 642

原创 Promise练习三(手写简版promise + 符合promise/A+规范的promise)

JavaScript实现一个简易的Promise对象class MyPromise { constructor(handleFn) { // Promise的状态 this.PromiseState = "pending"; // Promise的结果 this.PromiseValue = null; // 画重点!!!这两个list是为了将下一个Promise与当前Promise相关联 this._toNextResolve = []; t

2020-12-18 23:09:45 277 1

原创 Promise详解二(解读Promise规范 + 一些小测试)

任何符合promise规范的对象和函数都可以成为Promise。以下内容参考自promise A plus 规范,地址:https://promisesaplus.com/基本术语Promise:是一个具有then方法的对象或函数,其行为符合Promises/A+规范。thenadble:是一个定义了then方法的对象或函数。value:指任何JavaScript的合法值(包括undefined,thenable,和promise)。exception:使用throw抛出的一个值。reaso

2020-12-18 16:58:14 747

原创 Promise练习二(请求超时重连)

实现:ajax请求超时重连,但超过最大重连次数即停止重连// 模拟ajax请求function ajaxFn(resolve, reject){ var random = Math.random() * 10; setTimeout(()=>{ if(random > 9){ resolve('成功了:' + random) }else{ reject('失败了:' + random) } }, ra

2020-12-17 23:52:00 316

原创 nodeJs工具--nodemon的安装及使用

nodemon是一种工具,可以在检测到目录中文件更改时自动重新启动应用程序,以此帮助我们开发基于nodeJs的应用程序。nodemon,不要求我们的代码或者开发的方法做出任何变化。安装通过git克隆或使用npm(推荐哦):npm install -g nodemon简单使用启动node服务:nodemon app.js查看使用帮助:nodemon -h若我的应用程序接收主机和端口作为参数:nodemon app.js localhost:8099延时重启,避免编辑器自动保存导

2020-12-17 22:56:15 3775

原创 Promise练习一(Promise串联执行)

有一些业务场景下,比如上传文件扫描图等,需要严格按照顺序上传,这就需要一个方法能保证这些操作任务串联执行。Promise的then方法链式调用可以串联多个同步/异步任务,可以实现此功能。function task1(){ return new Promise(function(resolve, reject){ setTimeout(()=>{ var random = Math.random() * 10; console.log('task1成功了!' +

2020-12-17 22:30:26 659 1

原创 promise详解一(解读Promise对象)

为什么需要Promise?Javascript是一门单线程语言,早期我们解决异步场景时,大部分情况都是通过回调函数来进行。例如,在浏览器中发送ajax请求,就是常见的异步场景。发送请求后,一段时间服务端相应之后我们才能拿到结果,如果我们希望在异步结束之后执行某个操作,就只能通过回调函数这样的方式进行操作。var dynamicFunc = function(cb){ setTimeout(function(){ cb(); }, 1000);}dynamicFunc(function()

2020-12-15 21:52:41 1760

原创 leetCode----数组(存在重复元素)

存在重复数组给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。解题思路:hash/** * @param {number[]} nums * @return {boolean} */var containsDuplicate = function(nums) { var hashMap = {}; for(let i = 0; i < nums.length; i++){ i

2020-11-03 19:39:22 84

原创 leetCode----数组(买卖股票的最佳时机)

买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。解题思路:低买高卖,只要股票上涨,上涨的部分就是我的利润。/** * @param {number[]} prices * @return {number} */const maxProfit = function(prices) { let s

2020-11-03 19:37:17 148

原创 leetCode---数组(删除排序数组中的重复项)

1. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解题思路统计重复数字的个数,并依此确认需要被交换数组的值/** * @param {number[]} nums * @return {number} */var removeDuplicates = function(nums) { var j = 0; f

2020-11-03 19:15:27 145

原创 JS执行机制(事件循环)

JS执行机制一、运行机制JS分为同步任务和异步任务。所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。主线程不断重复上面的第三步。二、宏任务、微任务macro-task(宏任务)

2020-11-03 18:51:52 534

原创 setTimeout和requestAnimationFrame

前端制作动画的方法有css动画、JavaScript动画、svg动画、canvas动画等。setTimeout和requestAnimationFrame就是javascript制作动画的API。一、什么是动画 ?动画其实是一种假象,一种将不连续的运动以帧的形式呈现给我们的东西。一般来说,人类大脑可以侦测到的帧速率在60FPS,当屏幕刷新率低于60FPS时,人眼可以感受到屏幕的闪烁、不连贯,容易对动画展示效果和视觉 感官产生不好的影响。因此,大部分的电脑、手机等现代只能设备也是以60FPS的速率来

2020-11-03 17:41:17 440

原创 从浏览器进程到JS编译执行

进程和线程一、进程二、线程三、进程和线程的关系浏览器是多进程的一、浏览器有哪些进程二、浏览器多进程优势三、浏览器渲染进程四、主进程对渲染进程的控制过程五、JS进程编译执行JS运行机制一、运行机制二、宏任务、微任务三、事件循环

2020-09-27 23:20:28 254

原创 关于script标签的type属性

type属性定义script元素包含或src引用的脚本语言。属性的值为MIME类型; 支持的MIME类型包括text/javascript, text/ecmascript, application/javascript, 和application/ecmascript。如果没有定义这个属性,脚本会被视作JavaScript。如果MIME类型不是JavaScript类型(上述支持的类型),则该元素所包含的内容会被当作数据块而不会被浏览器执行,也不会显示在页面上,但是可以在另一个script里.

2020-09-24 22:30:15 5781 2

原创 算法之时间复杂度、空间复杂度

算法执行时间的估算方法事后分析估算方法:把算法执行若干次,通过计算机的计时功能计时,对不同的程序运行时间进行比较,从而确定算法效率。缺陷:必须先根据算法实现测试程序,并且不同的测试环境可能导致测试结果差异很大事前分析估算方法:程序在计算机上运行所消耗的时间取决于:算法采用的策略和方案;编译产生的代码质量;问题的输入规模(即输入量的多少);机器执行指令的速度;由此可见,除开与计算机硬件、软件有关的因素,一个程序的运行时间依赖于算法的好坏的和问题的输入规模。如果算法固定,那么该算法的

2020-09-14 22:41:42 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除