自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 sequelize学习笔记二(关联)

Sequelize关联相关知识

2021-12-14 17:12:59 1070

原创 Sequelize学习笔记一

Sequelize是一个基于promise的Node.js ORM,目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Server. 它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。

2021-12-09 11:04:04 969

原创 Egg学习(一)

egg学习

2021-12-06 11:00:36 419

原创 three.js学习系列(一)————从概念到构建一个3D场景

Three.js、webGL和Canvas区别Three.js是基于原生WebGL封装的三维引擎。WebGL是JavaScript和OpenGL ES2.0结合起来的JavaScript API,在任何兼容的Web浏览器中渲染高性能的交互式3D和2D图形,该API可以在canvas元素中使用,可以html5 Canvas提供硬件的3D加速渲染。Canvas是HTML5新增新增的标签,通过js脚本来完成图形绘制。...

2021-07-20 20:42:43 578 4

原创 ubuntu安装mysql并远程连接

安装配置MySQL用户1.更新软件源sudo apt-get update 2.安装mysql serversudo apt-get install mysql-server// 中途问你是否占用多少内存做额外磁盘中间按Y就行3.更改默认密码中途没让我们设密码,安装完后直接输入登录root是不知道密码的。sudo cat /etc/mysql/debian.cnf // 查看配置文件下图是自动配置的密码,我们需要用这账号密码去登录修改root密码!mysql -u debian

2021-04-08 21:26:39 5416 3

原创 node部署ubuntu云服务器

一首先购买服务器、域名单购买服务器也是可以,如果需要玩小程序的话,购买域名、备案,ssl证书都是必备的。首选ubuntu服务器,相对window等图形界面来说更稳定,当然学到的内容也更多一点。购买之后如上图可以直接登录,忘记密码的可在订单中查看。如果要申请域名尽早备案。因为备案时间会比较长,备案后才能申请ssl证书等后续操作。按照官网指引即可。二、连接服务器。首选工具:Xshell或Putty。这两个工具我都用过,相对来说Xshell功能比较丰富,但及时性不是太好,有时候一卡一卡的。putty

2021-04-06 23:13:15 184

原创 Node学习系列(一)----认识Node.js

服务端开发和前端开发的区别服务稳定性server端可能会遭受各种恶意攻击和误操作,后果相对比前端更严重单个客户端可以意外挂掉,但服务端不行需要进程守护,避免服务挂掉考虑内存和CPU(优化、扩展)客户端独占一个浏览器,内存和CPU消耗资源低server端要承载更多请求,CPU和内存都是稀缺资源日志记录前端只是日志的发起方,不关系后续server需要记录日志、存储日志、分析日志安全server需要接受各种恶意攻击(越权操作、数据库攻击),前端则较少(主要是xss)集群和服务拆分流量增

2021-03-24 23:07:20 106

原创 Web Worker的使用

为什么要用到worker因为javascript采用的是单线程模型,也就是所有的任务都只能在一个线程上执行,当解析到一个运算量较大的js的时候,后面的任务只能等前面的js解析完才能进行其他操作。所以就会出现“卡死“的状态。Web Worker它的作用就是解决上诉问题。它可以通过加载一个脚本文件,进而创建一个独立工作的线程,在主线程之外运行。从而营造一个多线程的运行环境,充分利用CPU的资源,减轻主线程的负担。worker中的限制(1)同源限制分配给 Worker 线程运行的脚本文件,必须与主线程的

2020-08-22 15:12:18 702

原创 在JS中同步修改vue中的变量

问题:在处理一个功能上遇到一个问题:在vue组件中,引入了一个JS文件,在JS文件动态创建了一些DOM节点,需要侦测dom节点中内容的变化同时改变vue中组件的内容。思考:因为它是单独的一个JS文件,里面动态生成的dom可以通过oninput来侦测输入内容的变化,但要实时更新到vue组件中,那只能找他们的连接点或者搭桥(借助vuex、localStorage这些全局变量),想着可以利用对象类型,因为其是将引用放在堆中,真正的值存放在栈中,通过传递其引用作为桥梁来达到JS文件中修改vue中值的效果。解决:

2020-08-15 15:01:23 4703 1

原创 vue源码解析之实例挂载

vm.$mount([elementOrSelector])用法:如果vus.js实例在实例化时没有收到el选项,则它处于“未挂载”状态,没有关联的DOM元素。我们可以使用vm.$mount手动挂载一个未挂载的实例。如果没有提供elementOrSelector参数,模板将被渲染为文档之外的元素,并且必须使用原生DOM的API把它插入文档中。这个方法返回实例自身,因而可以链式调用其他实例方法。注:在使用vue-cli搭建vue项目的时候,其已经帮我们挂载好了,可能很少会接触到这个方法。但我们仍需要了解其

2020-08-09 00:11:35 340

原创 CSS动画文字闪烁问题

动画文字闪烁问题1.动画加载后,浏览器没有发现任何合成因素,因此选择最佳策略:将页面的全面内容绘制再单个背景层上。2.当执行transition动画的时候,我们明确了将合成添加到元素中-具有tranform属性过度的动画。但是由于隐私合成层的原因,位于动画元素之上的属性会全部提升为合成层。3.提升到合成层总是会导致重新绘制:浏览器必须为该元素创建一个新的纹理并将其从上一层移除。4.新增图层之后,必须将新的图层传送到CPU,已获得用户将再屏幕上看到的最终图像合成。这取决与层数,纹理大小和内容的复杂度,

2020-07-20 23:33:19 1399

原创 vue-cli打包后打开后index.html 文件白屏问题

打开 dist index.html 文件发现白屏。打开调试后发现什么也没有,也没有报错。根据以往的经验如果是文件路径报错,一般在根目录下新建 vue.config.js配置publicPath就行了,或者直接在vue-ui上的配置文件加个点就好。publicPath:"./"各种百度,发现都是叫我配publicPath,但我已经配好了。百思不得其解,自己慢慢摸索终于发现了问题:不知道怎么自己的mode变成了history,默认是hash模式var router = new Router({

2020-07-17 23:16:41 718

原创 Http请求两次的问题

在之前有位老哥问我,之前在本地测试的时候测试接口没问题,只发送一次。但请求服务器上的接口时,就出现了两次请求的问题。第一次发送的是options类型的请求,第二次才是正常的请求。如果后端设置了频繁请求拦截的话,那么第二次真正的请求的无法请求到数据。由来ajax请求遵循同源策略(协议、域名、端口号必须一致),如果其中一个不同,就会造成跨域。浏览器同源策略的本质是:**一个域名的JS在未经允许下,不能读取另一个域名的内容。**但浏览器并不阻止你向另一个域名发送请求。跨域只是浏览器强加给JS的规则,浏览器其

2020-07-16 23:51:20 5110

原创 JavaScript事件循环

 什么是事件循环?  javascript是一门单线程且非阻塞脚本语言,这意味着JavaScript代码在执行的任何时候都只有一个主线程来处理所有任务。而非阻塞是指当代码需要处理异步任务时,主线程会挂起这个任务,当一部任务处理完毕后,主线程再根据一定规定去执行相应回调。  事实上,当任务处理完毕后,JavaScript会将这个事件加入一个队列中,我们称这个队列为事件队列。被放入事件队列中的事件不会立即执行其回调,二十等待当前执行栈中的所有任务执行完毕后,主线程会去查找事件队列中是否有任务。  异步任

2020-07-09 23:40:46 121

原创 VUE源码解析之变化侦测(三)

在之前的两篇博客已经写了vue的变化侦测实现原理。大致回顾下,主要VUE实现变化侦测主要是:开始通过Observer类遍历每个属性,然后通过Object.defineProperty对属性进行数据劫持,每当其触发getter的时候通过依赖收集器(Dep)来收集依赖(Watcher)。当侦听属性发生变化的时候,会触发setter进而触发遍历Dep里面的依赖Watcher,然后Watcher会通知其他地方做相应的操作。Array则是通过拦截器来进行相应的侦听,原理也是差不多,不同的只是Dep收集的位置和侦听数

2020-06-07 01:29:07 131

原创 JavaScript之深拷贝

为什么要深拷贝?JavaScript存储对象都是存地址的,所以浅拷贝会导致obj1和obj2指向同一块内存地址。改变其中一方的内容,都是在原来的内存上做修改,导致拷贝对象和源对象都发生改变,而深拷贝是开辟一块新的内存地址,将源对象的各个属性逐个复制进去。对拷贝对象和源对象各自的操作互不影响。 如何实现深拷贝利用JSON.parse(JSON.stringify())JSON.parse(JSON.stringify())实现深拷贝,其原理就是利用JSON。Stringify将js对象序列

2020-06-06 14:56:33 135

转载 大厂是如何开发部署前端项目

作者:张云龙链接:https://www.zhihu.com/question/20790576/answer/32602154来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:张云龙,前百度工程师,曾负责百度 前端集成解决方案 的核心设计与开发工作。我现在称这个领域为【前端工程】。  没错,这是我最爱唠叨的问题域。这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中。  在我的印象中

2020-06-04 12:51:34 573

原创 VUE源码解析之变化侦测(二)

  在VUE源码解析之变化侦测(一)中知道VUE中Object的变化是靠setter来追踪,只要一个数据发生变化,就会触发setter,进而遍历告知Dep里面的Watcher,Watcher再进一步进行相应的处理。  接下来探讨下VUE中的Array侦测。VUE中ARRAY的数据侦测array和object大有不同,如下例子:this.list.push("binguo")  当我们时候list方法的时候,根本没有触发到getter/setter方法,所以我们得通过第二方法侦测。你可能会想到了,

2020-06-03 01:23:43 170

原创 VUE源码解析之变化侦测(一)

变化侦测主要分为两种类型,一种是“推”(push),另一种是“拉”(pull)。  Angular和React中的变化侦测都属于“拉”,这就是说当状态发生变化时,它不知道那个状态变了,只知道状态有可能变,然后会发送一个信号告诉框架,框架内部接收到信号后,会进行一个暴力比对来找出哪些DOM节点需要重新渲染。这在Angular中是脏数据检查的流程,在React中使用的是虚拟DOM。  而Vue.js的变化侦测属于推。当状态发生变化时,Vue.js立刻就知道哪发生了变化。“拉”的粒度是较大的,而“推”需要绑定

2020-06-01 00:44:48 283

转载 深入理解git内部原理

前言近几年技术发展十分迅猛,让部分同学养成了一种学习知识停留在表面,只会调用一些指令的习惯。我们时常有一种“我会用这个技术、这个框架”的错觉,等到真正遇到问题,才发现事情没有那么简单。而Git也是一个大部分人都知道如何去使用它,知道有哪些命令,却只有少部分人知道具体原理的东西。了解一些底层的东西,可以更好的帮你理清思路,知道你真正在操作什么,不会迷失在Git大量的指令和参数上面。Git是怎么储存信息的这里会用一个简单的例子让大家直观感受一下git是怎么储存信息的。首先我们先创建两个文件$ git

2020-05-28 16:21:39 302

原创 git仓库的使用

git仓库的使用本文主要是重新git的基本操作指令和用法,以及他们之间的作用和区别。以便以后查询和帮助其他小伙伴查看。 1.下载安装配置用户名和邮箱 git config -global user.name "binguo" //设置用户名 git config -global user.email "19099xxxxx@qq.com" //设置邮箱 git config user.name //查看用户名 //binguo

2020-05-27 17:56:27 307

转载 原生JS实现call和apply

call先来看官方解释:call()方法调用一个函数,其具有一个指定的this值和分别地提供的参数(参数的列表)。也就是说使用call方法,你可以指定被调用函数的this值,并且给他传参数。接下来我们自己实现一个call方法。1、模拟如何指定this的值先来看一段代码function func() {console.log(this.value)}var obj = {val...

2020-01-08 20:33:15 150

原创 从输入URL到页面展示中的知识点

当我们输入一个网址,到浏览器呈现出页面这段时间内到底发生了什么事?这是面试常考题,总体来说经历了以下几个过程。1.浏览器输入网址并按下回车按钮2.浏览器查找当前的url是够存在缓存,并比较缓存是否过期3.DNS解析URL对象的IP4.将根据IP和服务器建立TCP连接(三次握手)5.HTTP发起请求。6.服务器处理请求并返回请求报文,浏览器接手HTTP响应。7.构建DOM树,渲染页面...

2019-12-12 21:05:46 251

转载 详解HTTP和HTTPS加密原理

一 什么是http协议?超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。位于TCP/IP四层模型中的应用层。HTTP协议通过客户端请求–>服务端响应的方式进行通信。但是HTTP有一个致命的缺点就是:不够安全。HTTP协议的信息传输完全以明文的方式,不做加密,相当于在网络上裸奔...

2019-12-03 19:18:18 358

原创 JavaScript之this作用域

this的作用域1.箭头函数2.立即执行函数3.对象中的this4.全局作用域中的this5.定时器中的this6.绑定事件中的this7.构造函数中dethis8.改变this的指向

2019-11-27 20:27:06 296

原创 Javascript模块化编程require.js

AMD、CMD、CommonJS的异同前言先说下其三则的区别吧!AMD,CMD,CommonJS都是用于处理模块间依赖关系的规范CommonJSNodeJS就采用了CommonJS;因为其实采用同步加载模块,所以其比较使用使用在服务器端,因为在服务器读取模块都是在本地磁盘,加载速度很快。但是如果在客户端,加载模块的时候有可能出现“假死”状况。AMDrequire.js就是使用AMD规范...

2019-11-18 22:51:54 95

原创 JS中为何会有闭包?

所谓闭包?当我们聊起闭包的时候,大多数只是聊下闭包的表象:闭包是可以访问外部函数中的内部变量的函数。 闭包是怎样产生的?我们从一个函数进入到内存讲起,一步一步分析闭包产生的原因!1.首先在函数进入到内存的时候,会在内存中创建一个执行环境栈2.接着在执行环境栈中会有一个全局对象既window和一个活动对象。3.在活动对象中会自动添加一个arguments(函数的参数)以及函数...

2019-10-09 15:27:42 405

原创 JavaScript之defer、async

在我之前用<script>标签的时候我一直习惯将其放在body的底部,以防止阻塞页面的解析。js语言精髓就是这样建议我们的。但是在百度随便打开控制台的时候看到的并非如此!由图上可以看出,大多数网页的头部都放了好几个js,这时是不是很好奇!没关系如果你是认真看了红宝书的那我想你应该知道这时为什么。好吧我们直入主题,直接聊一下<script>这个标签吧! &...

2019-09-02 13:04:29 172

原创 JavaScript之堆排序

堆排序说起来比较抽象,所以我特地把它抽出来单独讲讲。但如果理解好了就会觉得很简单。要实现堆排序我们得先要弄懂什么是完全二叉树和小顶堆、大顶堆的概念。这都是数据结构的基础的知识就不细讲了。完成二叉树: 除了最后一层之外的其他每一层都被完全填充,并且所有结点都保持向左对齐。大顶堆:每个结点的值都大于或等于其左右孩子结点的值。小顶堆:每个结点的值都小于或等于其左右孩子结点的值。我们直奔正题...

2019-08-15 19:52:15 105

原创 JavaScript之排序算法

排序算法主要分为两大类,基本排序算法和高级排序算法。基本排序算法:冒泡排序、选择排序、插入排序高级排序算法:希尔排序、归并排序、快速排序基本排序算法冒泡排序( O(N²) )冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的...

2019-08-15 16:38:41 99

原创 JavaScript之继承的六种方式

一、原型链继承将父类的实例作为子类的原型,他的特点是实例是子类的实例也是父类的实例,父类新增的原型方法/属性,子类都能够访问,并且原型链继承简单易于实现,缺点是来自原型对象的所有属性都被继承的实例共享,无法实现多继承,无法向父类构造函数传递。...

2019-08-08 14:34:39 148

转载 JavaScript之prototype、__proto__、constructor

最近看了下博客,觉得这篇文章对原型链讲的很细了,写得也很不错很用心。因为最近准备秋招,时间太紧就不自己写了,觉得这篇文章讲的够清楚了,分享出来给大家一起学习。本文转自:https://blog.csdn.net/cc18868876837/article/details/812117291. 前言作为一名前端工程师,必须搞懂JS中的prototype、__proto__与constructo...

2019-08-08 11:11:55 136 2

原创 vue中keep-alive、activated的探讨和使用

在修改公司的一个项目的时候发现了activated这个东西,一直觉得很疑惑,之前也没怎么用过啊!官网的生命周期那也没说过这东西啊!生命周期不就create mount update 和destory这几个东东么,怎么多了个activate出来。百思不得其解,于是去问了下度娘和查了下文档!恍然大悟,原来这东东是结合keep-alive这东东使用的,下面顺便记录一下。 keep-ali.........

2019-08-02 14:08:55 30528 3

原创 JavaScript垃圾回收机制和内存泄漏

从输入URL加载起看方向从输入 URL 到页面加载完成的过程:首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来接下来是 TCP 握手,应用层会下发数据给传输层,这里 TCP 协议会指明两端的端口号,然后下发给网络层。网络层中的 IP 协议会确定 IP 地址,并且指示了数据传输中如何跳转路由器。然后包会再被封装到数据链路层的数据帧结构中,最后就是...

2019-07-31 23:44:54 165

原创 js中for、for in、foreach、for of和$.each、$().each的区别

在es5中有3种遍历的方式,分别为for、for in 、 foreach。一、for这算是js中最常用的遍历方式。let arr = [1,2,3,4,5];for(let i = 0;i<arr.length;i++){ console.log(i); //1 2 3 4 5}for中最好将len先读取出来,如果按上面的写法,每次循环都会读取一次数组的长度,可以做...

2019-07-31 13:34:25 181

原创 JavaScript之观察者模式

观察者模式也叫发布订阅模式!,为了解决主体对象与观察者之间功能的耦合。定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖对象都会收到通知自动更新。观察者模式主要分为三个步骤:注册、发布、移除。我们一个一个步骤来实现。我们先定义一个容器,用于存放这些方法,以及要观察的事件。...

2019-07-24 23:45:44 111

原创 JavaScript之函数柯里化

什么是函数柯里化函数柯里化其实把一个带有多个参数的函数转换成一系列的嵌套函数。其一层一层地返回一个只传一个参数的新函数,直到所有参数都被使用。我们看一个例子function multiply(a, b, c) { return a * b * c;}multiply(1,2,3); //6其接受三个参数,再来看一个柯里化版本function(a){ ...

2019-07-22 22:02:20 123

原创 JavaScript之惰性载入函数

惰性载入函数,其实就是帮助我们减少重复执行一些处理不同分支的逻辑语句,提升函数处理速度。通常我们为了处理浏览器之间的差异,我们通常会定义一系列判断语句。例如,下面这段代码function createXHR(){ if(typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); }else...

2019-07-16 23:33:12 102

转载 JavaScript之EventUtil

EventUtil是为了平衡不同浏览器间实现事件的差异或事件方法的差异而存在的以下EventUtil对象代码亲测可用,并包含详细注释[点击该对象中每一个方法名(绿色字体)可直接跳转到本文中介绍该方法的部分]var EventUtil={addHandler:function(element,type,handler){ //添加事件if(element.addEventListener)...

2019-07-15 00:11:21 154

原创 深入探索vue底层原理系列(开篇)------vue是什么

开篇本系列文章主要是探索vue的底层的实现、解读vue的源码。毕竟vue3.0即将发布,vue最主要的特点就是响应式机制、模块、以及对象式的组件声明语法,而3.0对这三部分都有所更改。所以如果我们只是懂得如何去使用vue的话,不了解其实现原理的话,那么vue3.0的到来可能会给我们带来很大的冲击,仿佛学习一种新的语言一般。 vue是什么vue.js是一套用于构建用户界面的渐进式框...

2019-07-13 15:34:20 1722

空空如也

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

TA关注的人

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