自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浏览器渲染原理

浏览器接收到 HTML 文件并转换为 DOM 树当我们打开一个网页时,浏览器都会去请求对应的 HTML 文件。虽然平时我们写代码时都会分为 JS、CSS、HTML 文件,也就是字符串,但是计算机硬件是不理解这些字符串的,所以在网络中传输的内容其实都是 0 和 1 这些字节数据。当浏览器接收到这些字节数据以后,它会将这些字节数据转换为字符串,也就是我们写的代码。当数据转换为字符串以后,浏览器会先将这些字符串通过词法分析转换为标记(token),这一过程在词法分析中叫做标记化(tokenization)。

2021-03-08 14:57:24 209 1

原创 浏览器基础知识点及常考面试题

事件机制事件的触发过程是怎么样的?知道什么是事件代理嘛?事件触发三阶段事件触发有三个阶段:window往事件触发处传播,遇到注册的捕获事件会触发传播到事件触发处时触发注册的事件从事件触发处往window传播,遇到注册的冒泡事件会触发事件触发一般来说会按照上面的顺序进行,但是也有特例,如果给一个body中的子节点同时注册冒泡和捕获事件,事件触发会按照注册的顺序执行。// 以下会先打印冒泡然后是捕获node.addEventListener( 'click', event =&

2021-03-03 15:13:42 314

原创 JS 进阶知识点及常考面试题

手写 call、apply 及 bind 函数call、apply 及 bind 函数内部实现是怎么样的?首先从以下几点来考虑如何实现这几个函数1. 不传入第一个参数,那么上下文默认为window2. 改变了this指向,让新的对象可以执行该函数,并能接受参数那么我们先来实现callFunction.prototype.myCall = function(context) { if (typeof this !== 'function') { throw new TypeErro

2021-01-06 15:47:56 152

原创 Event Loop

进程与线程进程与线程区别?JS 单线程带来的好处?进程描述了CPU在运行指令及加载和保存上下文所需的时间,放在应用上来说就代表了一个程序。线程是进程中的更小单位,描述了执行一段指令所需的时间。把这些概念拿到浏览器中来说,当你打开一个 Tab 页时,其实就是创建了一个进程,一个进程中可以有多个线程,比如渲染线程、JS引擎线程、HTTP请求线程等等。当你发起一个请求时,其实就是创建了一个线程,当请求结束后,该线程可能就会被销毁。上文说到了JS引擎线程和渲染线程,大家应该都知道,在JS运行的时候可能会

2020-11-23 10:59:41 125

原创 手写 Promise

推荐阅读Promise/A+规范实现一个简易版 Promise在完成符合Promise/A+规范的代码之前,我们可以先来实现一个简易版Promise,因为在面试中,如果你能实现出一个简易版的Promise基本可以过关了。// 搭建构建函数的大体框架const PENDING = 'pending'const RESOLVED = 'resolved'const REJECTED = 'rejected'function MyPromise(fn) { const that = this

2020-11-18 14:42:46 117 1

原创 promise执行过程

在看到《前端面试之道》这本小册中关于手写Promise部分,对此部分有比较大的兴趣,于是按照书中的例子加上自己的理解产生了这篇文章。先来实现一个简易版的Promise,代码较长,下面我会一一解释const PENDING = "pending";const RESOLVED = "resolved";const REJECTED = "rejected";--------------------------------------以上为1.function MyPromise(fn) { c

2020-11-18 14:09:04 811

原创 JS 异步编程及常考面试题

并发(concurrency)和并行(parallelism)区别并发与并行的区别?并发是宏观概念,我分别有任务 A 和任务 B,在一段时间内通过任务间的切换完成了这两个任务,这种情况就可以称之为并发。并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同时完成任务 A、B。同时完成多个任务的情况就可以称之为并行。回调函数(Callback)什么是回调函数?回调函数有什么缺点?如何解决回调地狱问题?回调函数应该是大家经常使用到的,以下代码就是一个回调函数的例子:ajax(url,

2020-11-16 15:25:33 318

原创 ES6 知识点及常考面试题

var、let 及 const 区别函数提升优先于变量提升,函数提升会把整个函数挪到作用域顶部,变量提升只会把声明挪到作用域顶部var 存在提升,我们能在声明之前使用。let、const 因为暂时性死区的原因,不能在声明前使用var 在全局作用域下声明变量会导致变量挂载在 window 上,其他两者不会let 和 const 作用基本一致,但是后者声明的变量不能再次赋值...

2020-11-10 14:43:23 220

原创 JS 基础知识点及常考面试题(二)

== vs ===== 和 === 有什么区别?对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换,这也就用到了我们上一章节讲的内容。假如我们需要对比 x 和 y 是否相同,就会进行如下判断流程:1. 首先会判断两者类型是否相同。相同的话就是比大小了2. 类型不相同的话,那么就会进行类型转换3. 会先判断是否在对比 null 和 undefined,是的话就会返回 true4. 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number1 =

2020-10-13 21:34:38 125

原创 JS 基础知识点及常考面试题

原始(Primitive)类型6种原始值:boolean、null、undefined、number、string、symbolnull 是对象嘛?另外对于 null 来说,很多人会认为他是个对象类型,其实这是错误的。虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。虽然现在的内部类型

2020-10-12 17:51:38 212

原创 .gitignore忽略规则

git忽略规则匹配语法! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。 / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件 / 开始的模式匹配项目和目录 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录 ** 匹配多级目录,可在开始,中间,结束 ? 通用匹配单个字符 [] 通用匹配单个字符列表常用匹配示例:bin/

2020-07-12 15:46:31 173

原创 比较对象、数组相等

判断引用类型地址是否相等本文不予讲述,本函数主要用于判断对象、数组内容是否一致/** * 判断是否是对象或数组 * @param obj */function isObject(obj) { return typeof obj === "object" && obj !== null}/** * 全相等(深度) * @param obj1 * @param obj2 * @returns {boolean} */function isEqual(obj1,

2020-06-01 22:30:25 242

原创 封装防抖节流函数

关于防抖和节流的函数我就不一一展开讲了,下面主要写一下防抖和节流函数的封装:防抖function debounce(fn, delay = 500) { // timer是闭包中的 let timer = null return function () { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { fn.apply(this, arguments.

2020-06-01 22:00:21 179

原创 Class和普通构造函数有何区别

Class为普通构造函数的语法糖//Classclass MathHandle { constructor(x,y){ this.x = x this.y = y } add() { return this.x + this.y }}const m = new MathHandle(1,2)consol...

2020-03-15 22:53:58 618

原创 for、for...in、for...of、forEach

1.for循环// for循环的表达式之间用的是;号分隔的,千万不要写成,for (初始化表达式1; 判断表达式2; 自增表达式3) { // 循环体4}2.for...in索引遍历var obj1 = { name:'张三', age : 17, sex : '男',}for(var k in obj1){ console.log...

2020-03-09 12:42:19 149

原创 微信小程序设置引导页后navigateTo失效

碰到的问题:当在小程序中设置引导页,同时在app.json中设置了tabBar后,欢迎页的navigateTo失效解决方式:将欢迎页中的navigateTo改为switchTab,官方文档说明...

2020-01-07 09:17:07 378

原创 微信小程序使用字体图标库

在微信小程序项目中需要用到字体图标,所以记录一下解决过程。因为比较喜欢使用阿里巴巴矢量图标库,就以此为例来说。一、去阿里巴巴矢量图标库下载需要的图标进入https://www.iconfont.cn/,在我的项目中添加自己需要的图标,具体如下搜索图标后,添加至项目 将项目下载至本地并解压二、转换ttf文件将解压后得到的ttf文件拿到https://trans...

2020-01-03 15:42:14 1324

原创 数据库乱码

因为第一次装MYSQL的时候并不是自己装的,所以今天就把原先的MYSQL卸载了,准备自己重装。从官网上下载了MYSQL,下载地址:https://dev.mysql.com/downloads/mysql/5.5.html#downloads,因为是自己第一次安装,过程虽然不麻烦,但还是搜索了MYSQL5.5安装教程,按照https://blog.csdn.net/weixin_38239039/...

2018-11-20 13:15:29 126

原创 Vue的build下没有dev-sever.js(关于慕课高仿饿了么webapp的讲解)

原因:新版本的vue已将dev-server.js与webpack.dev.conf.js合并,若要写路由相关配置需要找到webpack.dev.conf.js中的devServer对象进行相关配置At first:打开build文件夹,找到文件webpack.dev.conf.js文件找到const portfinder = require('portfinder')这句话,修改...

2018-11-03 18:55:42 305

原创 webstorm快捷键大全

  

2018-10-30 09:36:53 205

原创 servlet实现文件上传下载

用到了File的两个方法(File.exists()判断文件是否存在,File.isDirectory()判断目录是否存在) 导入包不要导错了import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apach...

2018-10-30 08:07:36 121

原创 关于request无法获取到前端发送的form表单数据

问题:servlet中使用request.getParameter()获取不到前端发送的form表单数据post请求是接收到了的,但是输出一直是"null",数据为空,本来一直以为是后台写错了protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExcep...

2018-10-19 13:15:51 5199 5

原创 Centos搭建Node.js环境

安装Node.js环境1. 下载Node.jswget https://nodejs.org/dist/latest-v9.x/node-v9.4.0-linux-x64.tar.xz1这里使用的最新的v9.4.0版本,需要安装其他版本可前往https://nodejs.org/dist/选择对应的版本即可。2. 解压tar -xvJf node-v9.4.0-l...

2018-08-30 11:57:50 107

原创 安装wamp修改配置后依然是404

我想很多伙伴在按照慕课网的php学习路径学习php时,应该都会安装wamp这个软件吧。安装时候并不会出现太大的问题,但是在进行对wamp进行配置时,我们并没有老师配置的时候那么顺利,现在我就来说一下自己配置时候遇到的问题和解决方法吧。1.问题一:在对Apache的httpd.conf进行配置后,访问localhost/test.php出现404在进行各种百度和Google之后,历经曲折...

2018-08-02 15:12:16 3078

原创 HTML 获取屏幕、浏览器、页面的高度宽度

目录1. 介绍:介绍页面的容器(屏幕、浏览器及页面)、物理尺寸与分辨率、展示等内容。2. 屏幕信息:介绍屏幕尺寸信息;如:屏幕、软件可用以及任务栏的高度和宽度。3. 浏览器信息:介绍浏览器尺寸信息;如:浏览器、内部页面以及工具栏的高度和宽度。4. 页面信息:介绍HTML页面尺寸信息;如:body总的、展示的高度和宽度。 一、介绍1. 容器一个页面的展示,从外到内的容...

2018-07-28 11:20:49 11699 1

原创 Animate.css 使用教程(一个强大的 CSS3 动画库)

前言animate.css 是一个有趣,酷炫的,跨浏览器的动画库,你可以将它用于你的项目中。不管是主页,滑动切换,又或者是其它方面,你都可以通过它来制作出惊人的效果。基本用法引入CSS文件这个对你来说应该再容易不过了,我相信你可能也已经对引入外部的CSS样式文件的代码以及快捷键也都背得滚瓜烂熟了。 你只需要在HTML文件的head标签中引入CSS样式文件,如下:&lt...

2018-07-20 15:22:56 16339

原创 微信小程序修改wxml中的css样式

小程序目前没有修改样式api,但是可以利用数据绑定实现动态改变样式,可以用view标签模拟page然后改变view标签的样式,以下案例演示了如果改变page背景颜色:小程序目前没有修改样式api,但是可以利用数据绑定实现动态改变样式,可以用view标签模拟page然后改变view标签的样式,以下案例演示了如果改变page背景颜色:index.wxml<view class="page" st...

2018-07-12 18:44:19 6919

原创 wx-charts微信小程序图表插件

wx-charts微信小程序主流的图表工具基于 Canvas,体积小支持图表类型饼图 pie圆环图 ring线图 line柱状图 column区域图 area雷达图 radar如何使用1. 直接拷贝编译好的文件 dist/wxcharts-min.js 到项目中(js下载地址)import wxCharts from '../../utils/wxcharts-min.js'2. wxml 中定义...

2018-07-12 18:35:08 6515

原创 外键必须是另一个表的主键吗

不一定是主键,但必须是唯一性索引。主键约束和唯一性约束都是唯一性索引。FOREIGN KEY 约束SQL Server 2008其他版本外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义 FOREIGN KEY 约束来创建外键。在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。例如,因为销售订单...

2018-06-30 12:41:20 14286

原创 数据库报(errno: 150)解决方法

错误原因有四:1、外键的引用类型不一样,主键是int外键是char2、找不到主表中 引用的列3、主键和外键的字符编码不一致4.还有要建立外键的话,要先建立索引。没有建立索引也会出错。我的错误原因是1,外键的引用类型不一样,但是改的时候却出现了错误:解决办法就是直接删除相关表用hibernate 重新生成...

2018-04-13 13:27:31 2750

原创 SQLServer里面添加约束条件

1.主键约束:格式为:alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)例子:alter table emp add constraint ppp primary key (id);2.check约束:就是给一列的数据进行了限制格式:alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)例子:alter t...

2018-03-16 10:11:44 5641 1

原创 C++基本数据类型大小及表示范围

ANSI C/C++基本数据类型:TypeSize数值范围无值型void0 byte无值域布尔型bool1 bytetrue false有符号短整型short [int] /signed short [int]2 byte-32768~32767无符号短整型unsigned short [int]2 byte0~65535有符号整型int /signed [int]...

2018-02-25 13:33:54 2963

原创 各类程序员学习路线图

各类程序员学习路线图各类程序员学习路线图程序猿是一种非常特殊的、可以从事程序开发、维护的动物。一般分为程序设计猿和程序编码猿,但两者的界限并不非常清楚,都可以进行开发、维护工作。前端工程师基础:HTML教程,CSS教程进阶:Javascript,jQuery高级:AJAX 教程,JSON 教程,XML 教程框架扩展学习:Bootstrap 教程,jQuery UI 教程,jQuery EasyU...

2018-02-20 13:47:00 312

原创 vs2012 快速注释/取消注释

1、选中要注释的区域2、先ctrl+k,再ctrl+c 注释该区域3、先ctrl+k,再ctrl+u取消注释该区域

2018-02-19 17:46:48 1087

原创 慕课网关于线性表通讯录代码

demo.cpp#include <iostream> #include <string> #include "LinkedList.h" using namespace std; int menu(){ cout<<"功能菜单"<<endl; cout<<"1.新建联系人"<<en

2018-02-12 15:05:46 283

转载 提交文件到远程仓库

管理本地仓库文件简单的描述,在 Git 中文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed);用 Git 管理文件也可以简单的理解为三个步骤:修改文件、跟踪文件、提交文件。以下采取示例的方式简述用 Git 管理本地仓库文件。修改文件修改文件即是对文件的添加、编辑、删除等等,和普通修改文件的方法一致。选择合适的

2018-01-28 17:08:00 771

原创 git有关问题

最近使用了码云,方便把自己本地的代码放到远程,还可以随时查看自己的修改记录,以便自己在不小心删除自己的源码时的找回。下面就来总结一下git命令的使用

2017-10-24 23:07:38 129

空空如也

空空如也

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

TA关注的人

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