自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

403 Forbidden

记录一些学习日常

  • 博客(76)
  • 收藏
  • 关注

原创 (更新中)剑指Offer全题解(JS版)

二维数组的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1:输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值:true题解从左向右递增,从上至下递增,可以先从最下面的行和最左列开始作为比较点的起始位置进行比较。如果目标值小于要比较的值,则证明这一行的所有值都比目标值

2021-03-17 23:49:07 347 1

原创 selenium API文档个人翻译(持续更新)

该文档为 js 版本文档地址:seleniumcode:codegitee地址:giteeBrowser 浏览器支持的浏览器CHROMEEDGEFIREFOXIEINTERNET_EXPLORERSAFARIBuilder 类生成器 var driver = new webdriver.Builder() .forBrowser('chrome') .build();实例方法this.build()基于该构建器的当

2021-02-19 17:07:25 727

原创 JavaScript算法——排序

排序封装数据:function ArrayList() { this.array = [] ArrayList.prototype.insert = function (item) { this.array.push(item) } ArrayList.prototype.toString = function () { return this.array.join() } //用于交换 ArrayLi

2021-03-06 10:58:03 240

原创 JavaScript数据结构——二叉搜索树

JavaScript中的搜索二叉树二叉搜索树(BST,Binary Search Tree),也称二叉排序树或二叉查找树二叉搜索树是一颗二叉树, 可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值非空右子树的所有键值大于其根结点的键值也就是左结点值想<根结点值<右节点值左、右子树本身也都是二叉搜索树二叉搜索树的操作insert(key):向树中插入一个新的键search(key):在树中查找一个键,如果结点存在,则返回true;如果不存在,则返回f

2021-03-06 09:50:38 244

原创 JavaScript数据结构——树

JavaScript中的树在使用数组存储时,根据下标值访问效率会很高,但是当想要使用元素来查找时,比较好的方法是对数组先排序,之后二分查找。由此所带来的问题是查找时需要大量的操作,效率就比较低了而链表对于插入与删除的操作效率虽然很高,但是查找效率依然很低,需要从头至尾访问一遍链表,直到找到。而对于哈希表,一方面空间利用率不高,而且哈希表中的元素是无序的,不能按照固定的顺序来遍历哈希表中的元素相比上面的结构,树结构的优点则更突出树的定义:树(Tree): n(n≥0)个结点构成的有限集合

2021-03-05 19:19:50 369

原创 JavaScript数据结构——字典

JavaScript中的字典字典的特点:键值一一对应字典和数组对比:字典可以非常方便的通过key来搜索对应的value, key可以包含特殊含义, 也更容易被人们记住字典和对象:在其他语言中字典和对象区分比较明显, 对象通常是一种在编译期就确定下来的结构, 不可以动态的添加或者删除属性,而字典通常会使用类似于哈希表的数据结构去实现一种可以动态的添加数据的结构d但在JavaScript中, 似乎对象本身就是一种字典. 所有在早期的JavaScript中, 没有字典这种数据类型, 因为完全可以使用

2021-03-05 11:53:37 2390

原创 JavaScript数据结构——集合

JavaScript中的集合集合通常由一组无序的、不能重复的元素构成可以视为特殊的数组,只不过不同的是其中的元素没有顺序,也就无法通过索引值访问到在ES6中其实已经包含了Set类集合的实现集合常见的操作add(value):向集合添加一个新的项remove(value):从集合移除一个值has(value):如果值在集合中,返回true,否则返回falseclear():移除集合中的所有项size():返回集合所包含元素的数量。与数组的length属性类似values():返回一个包

2021-03-05 11:03:13 169 1

原创 JavaScript数据结构——双向链表

JavaScript中的双向链表单向链表在遍历时只能从头到尾或者从尾遍历到头;所以单向链表可以轻松到达下一节点,但是回到上一个节点是很困难的而双向链表既可以从头遍历到尾, 又可以从尾遍历到头,链表的相联是双向的,一个节点既有向前连接的引用,也有向后连接的引用但是正因如此,双向链表在插入或者删除某个节点时,需要处理四个节点的引用,并且所占用内存空间也更大一些双向链表实现JavaScript 代码实现双向链表// 创建双向链表的构造函数function DoublyLinkedList() {

2021-03-05 10:46:15 133 1

原创 JavaScript数据结构——链表

JavaScript中的链表要储存多个元素,除了数组还可以选择链表链表在内存中不必是连续的空间链表的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(有些语言称为指针或者链接)组成链表优点:内存空间不是比是连续的. 可以充分利用计算机的内存. 实现灵活的内存动态管理链表不必在创建时就确定大小, 并且大小可以无限的延伸下去链表在插入和删除数据时, 时间复杂度可以达到O(1). 相对数组效率高很多链表缺点链表访问任何一个位置的元素时, 都需要从头开始访问(无法跳过第一个元素

2021-03-04 22:12:18 102 1

原创 JavaScript数据结构——优先队列

JavaScript中的优先队列普通队列在插入元素时只会放到后端,导致只能等待前面的数据处理完毕后才可以被处理而优先队列在插入元素时会考虑该数据的优先级,根据优先级确定插入顺序;其余方法和队列一致程序中的优先队列每个线程处理的任务重要性不同,可以通过设置优先级大小,来决定改线程在队列中被处理的顺序优先队列实现JavaScript 代码实现队列结构// 封装优先级队列function PriorityQueue() { var items = [] // 封装一个新的构造函数, 用于

2021-03-04 21:32:14 227 1

原创 JavaScript数据结构——队列

JavaScript中的队列队列(queue)是一种运算受限的线性结构只允许在表前端进行出队列操作,只允许在后端进行插入操作(FIFO First In First Out) 先进先出,后进后出程序中的队列结构线程队列:在多线程开发时,不可能无限制开启线程使用队列进行线程任务的处理线程队列依次启动线程,执行对应的任务栈结构实现栈常见的操作enqueue(element):向队列尾部添加一个(或多个)新的项dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移

2021-03-04 17:36:04 151 1

原创 JavaScript数据结构——栈

JavaScript中的栈栈(stack)是一种运算受限的线性结构LIFO(last in first out)表示就是后进入的元素,第一个弹出栈空间栈仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素总结:先进后出,后进先出程序中的栈结构函数调用栈:A(B(C(D()))): 即

2021-03-04 17:21:34 132 1

原创 JavaScript数据结构——数组

JavaScript中的数组在其他语言中数组通常都是固定长度并且只可以储存一系列的同一种数据类型的值,但在JavaScript中则不对其中存储的值以及长度加以限制但在开发时,最好要遵守原则创建数组let arr = new Array(1, 2, 3);let arr = [1, 2, 3]数组常见操作添加元素添加一个元素至数组最后位置arr.push(item)在数组首位插入一个元素arr.unshift(item)从数组指定位置添加项目,然后返回被删除的项目a

2021-03-03 23:49:15 150 1

原创 typora导出html添加侧边栏

因为typora导出的html文件没有侧边栏,网上搜的又不好用,所以只能自己写一个QWQ使用方法首先要从typora导出html文件,之后用记事本或者VSCode或者其他编辑器打开此html文件找到文档最后面,如图:之后用记事本或者其他文字编辑类工具打开sideBar.txt,复制其中所有内容在如上图的位置插入所复制的内容打开修改过的html文件后左上角会出现一个按钮[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KUgcyLjo-1613133608035)

2021-02-12 20:42:42 1345 5

原创 关于合成大西瓜部署gitee出现空白、404的解决办法

如果你还不会修改合成大西瓜,可以先看我之前的文章:如何修改合成大西瓜看上面文章的话,到上传完成那一步就可以了,之后请看这篇文章的内容:注册一个github账号Github网址至于怎么创建账号请百度,这里不再多赘述注册登录后打开github,点击导入点击之后页面如下:然后打开自己的gitee,找到你自己上传的那个仓库,点击右上角,之后点击复制将连接复制到刚才github打开的导入页面上,并填写仓库名之后点击Begin import导入期间可能会提示需要再登录一次导入完成如下图,

2021-02-02 12:35:43 2019 3

原创 魔改合成大西瓜

最近合成大西瓜非常火,并且也衍生出的众多的魔改版合成大西瓜那么如何魔改合成大西瓜呢?首先获取到合成大西瓜的源码:合成大西瓜源码不会用git的可以直接网盘下载:bd网盘 提取码:2233准备阶段你可以先下载一个VS Code官网:VSCode(如果你习惯其他的编辑器也可以不下载,甚至直接用记事本都可以)下载并安装git:git (这个之后部署到网页上会用到)修改图片下载好源码之后打开目录如下:合成大西瓜的大部分图片资源都在res文件夹下打开res->raw-assets每一个

2021-01-30 22:05:54 6464 42

原创 Nodejs学习笔记——express实现静态服务器

结构:index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet

2020-11-05 14:49:12 286

原创 Nodejs学习笔记——http模块搭建简易服务器

开启一个本地服务器需要Node.js中http核心模块引入模块 let http = require('http')实例let server = http.createServer() // createServer()方法返回一个server实例,所以我们需要一个变量来接收案例1://引入模块const http = require('http');//创建服务器实例let server = http.createServer();//服务器监听请求数据server.on('r

2020-11-05 14:14:30 227

原创 Nodejs学习笔记——http协议

网络通信原理协议及协议栈的基本概念什么是协议协议是网络中计算机或设备之间进行通信的一系列规则的集合。常用协议有IP、TCP、HTTP、POP3、SMTP等什么是协议栈在网络中,为了完成通信,必须使用多层上的多种协议。这些协议按照层次顺序组合在一起,构成了协议栈(Protocol Stack),也称为协议族(Protocol Suite)协议的作用一个网络协议的作用主要有两个:一是建立对等层之间的虚拟通信,二是实现层次之间的无关性层次间的无关性所谓层次间无关性,就是指较高层次和相邻的相低层次

2020-11-05 12:55:44 755

原创 Nodejs学习笔记——路径模块path

__filename与__dirnameconsole.log(__filename);//当前正在执行的脚本的文件名称console.log(__dirname);//当前正在执行脚本的目录名称引入模块 const path = require('path');使用console.log(__filename);//当前正在执行的脚本的文件名称console.log(__dirname);//当前正在执行脚本的目录名称let filename = __filename;let d

2020-11-05 01:06:18 186

原创 Nodejs学习笔记——多线程

背景

2020-11-05 00:09:03 364

原创 Nodejs学习笔记——buffer

简述JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始

2020-11-04 18:01:13 150

原创 Nodejs学习笔记——事件

事件驱动程序Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为 webserver 一直接受请求而不等待任何读写操作。(这也称之为非阻塞式IO或者事件驱动IO)在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 Eve

2020-11-04 17:44:10 314

原创 Nodejs学习笔记——fs文件系统之操作文件与目录

删除文件fs.unlink(文件名,回调函数);const fs = require('fs');//删除文件fs.unlink('deletedemo.txt',(err)=>{ if(err){ console.log(err); }else{ console.log('删除成功'); }})读取目录文件fs.readdir(目录,回调函数);const fs = require('fs');//读取目录下所有文

2020-11-04 02:20:02 285

原创 Nodejs学习笔记——fs文件系统之读写文件

文件系统(File System)基本概念学习fs模块的API使用fs模块前,需要通过 require(‘fs’) 引入特点提供同步异步两种选择同步导致阻塞异步操作完成通过回调返回结果写入同步let fs = require('fs')//同步打开文件let fd = fs.openSync('text1.txt','w')console.log(fd);//写入内容let str = 'hello!';fs.writeFileSync(fd,str);//退

2020-11-04 01:41:32 198

原创 Nodejs学习笔记——npm常见命令

npm英文全称:node package managernpm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。 我们平时开发项目都是需要使用npm下载依赖,常见的npm命令总结如下:npm -v:查看npm版本。npm init:初始化后会出现一个pac

2020-11-03 18:38:56 1554

原创 Nodejs学习笔记——模块化

Node.js采用的是CommonJs规范,在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用Node.js中模块的分类:核心模块(已经封装好的内置模块)自己定义的模块第三方的模块(npm下载下来的)requirerequire函数用来在一个模块中引入另外一个模块传入一个模块名,返回一个模块导出对象用法:let cc = require(“模

2020-11-03 17:57:18 145

原创 ES6学习笔记——promise

概述Promise对象: 代表了未来某个将要发生的事件(通常是一个异步操作)。ES6中的promise对象, 可以将异步操作以同步的流程表达出来,很好地解决了回调地狱的问题(避免了层层嵌套的回调函数)在使用ES5的时候,在多层嵌套回调时,写完的代码层次过多,很难进行维护和二次开发promise对象的3个状态初始化状态(等待状态):pending成功状态:fullfilled失败状态:rejected使用promise的基本步骤(1)创建promise对象(2)调用prom

2020-11-01 14:55:50 283

原创 ES6学习笔记——函数扩展

箭头函数传统写法: function fn1(a, b) { return a + b; } ​ console.log(fn1(1, 2)); //输出结果:3箭头函数: var fn2 = (a, b) => { console.log('haha'); return a + b; }; console.log(fn2(1, 2)); //输出结果:3从上面的箭头函数中,我们可以很清晰地找到函数名、参数名、方法

2020-10-26 23:33:16 184

原创 ES6学习笔记——变量

ES6 中新增了 let 和 const 来定义变量:var:ES5 和 ES6中,定义全局变量(是variable的简写)let:定义局部变量,替代 varconst:定义常量(定义后,不可修改)var:全局变量 { var a = 1; } console.log(a);//输出1上方代码是可以输出结果的,输出结果为 1因为 var 是全局声明的,所以,即使是在区块里声明,但仍然在全局起作用 var a = 1 {

2020-10-24 11:19:21 428

原创 ES6学习笔记——JSON,Object,function的扩展

JSONjs对象(数组) --> json对象(数组) JSON.stringify(obj/arr)json对象(数组) --> js对象(数组) JSON.parse(json)Object的扩展方法一 Object.create(prototype, [descriptors])以指定对象为原型,创建新的对象同时,第二个参数可以为为新的对象添加新的属性,并对此属性进行描述 var obj1 = { username : 'nozo

2020-10-24 10:16:01 216

原创 ES6学习笔记——严格模式

概念理解:除了正常运行模式(混杂模式),ES5添加了第二种运行模式:“严格模式”(strict mode)目的:消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为消除代码运行的一些不安全之处,为代码的安全运行保驾护航为未来新版本的Javascript做好铺垫使用针对整个脚本文件:将 ‘use strict’ 放在脚本文件的第一行,则整个脚本文件将以严格模式运行。针对单个函数:将 ‘use strict’ 放在函数体的第一行,则整个函数以严格模式运

2020-10-20 11:07:14 180

原创 JavaScript学习笔记——正则

RegExp对象RegExp对象表示正则表达式,他是对字符串执行模式匹配的强大工具直接字面量语法 var reg1 = /hello/i; console.log([reg1]); var str = "hello world"; var result1 = str.match(reg1); console.log(result1); var result2 = reg1.test(str);

2020-09-27 00:50:23 185

原创 JavaScript学习笔记——XML

XML简介XML(EXtensible Markup Language)是一种标记语言,很类似 HTML,HTML就是专门用于携带网页结构数据的xml格式XML 是独立于软件和硬件的信息传输工具XML 标签没有被预定义,需要自行定义标签XML 标签没有被预定义。您需要自行定义标签与HTML差别XML 不是 HTML 的替代XML 和 HTML 为不同的目的而设计:XML 被设计为传输和存储数据,其焦点是数据的内容HTML 被设计用来显示数据,其焦点是数据的外观HTML 旨在显示信息,而

2020-09-24 01:55:37 187

原创 JavaScript学习笔记——JS错误处理

JavaScript 错误try 语句测试代码块的错误catch 语句处理错误throw 语句创建自定义错误JavaScript抛出错误当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息描述这种情况的技术术语是:JavaScript 将抛出一个错误JavaScript 测试和捕捉try 语句允许我们定义在执行时进行错误测试的代码块catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块JavaScript 语句 try 和 catch

2020-09-24 01:09:16 802

原创 Nodejs学习笔记——了解Nodejs

简介Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成Node.js 不是一门语言也不是框架,它只是基于 Google V8 引擎的JavaScript 运行时环境,同时结合 Libuv 扩展了 JavaScript 功能,使之支持 io、fs 等只有语言才有的特性,使得 JavaScript 能够同时具有 DOM 操作(浏览器)和 I/O、文件读写、操作数据库(服务器端)等能力,是目前最简单的全栈式语言目前市面上高密集的I/O模型,比如 Web 开发,微服务

2020-09-21 01:45:08 286

原创 JavaScript学习笔记——scroll

onscroll()用鼠标滚轮,滚动网页的时候,会触发window.onscroll()方法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title&

2020-09-21 01:12:27 284

原创 JavaScript学习笔记——offset

offsetjs中有一套方便的获取元素尺寸的办法就是offset家族offset包括:offsetWidthoffsetHightoffsetLeftoffsetTopoffsetParentoffsetWidth 和 offsetHight用于检测盒子自身的宽高+padding+border,不包括marginoffsetWidth = width + padding + border;offsetHeight = Height + padding + border;这两个属

2020-09-21 00:19:54 261

原创 JavaScript学习笔记——Ajax

Ajax简介Ajax 即“Asynchronous Javascript And XML”是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新Ajax异步请求数据js发送一个请求去请求数据js不等待后台返回的数据js执行后面的操作后台返回数据后,js处理返回的数据Ajax流程创建Ajax对象设置请求,发送请求的地址,发送请求的方式发送数据设置监听时间,监听后

2020-09-15 23:24:59 183

原创 JavaScript学习笔记——音频与视频

audio 音频标签基本的播放器: <audio src="./YOASOBI - ハルジオン (春紫菀).mp3" controls="controls"> 当前浏览器不支持audio </audio>属性src: 音频资源地址controls: 是否显示控制器autoplay: 自动播放,以前版本的浏览器允许自动播放的,后来不允许muted: 静音volume: 音量(范围0~1)currentTime: 可以控制和获取当前时

2020-09-15 21:09:48 191

空空如也

空空如也

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

TA关注的人

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