11 2020 档案

摘要:一、如何分析一个排序算法 复杂度分析是整个算法学习的精髓。 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度: 运行完一个程序所需内存的大小。 学习排序算法,我们除了学习它的算法原理、代码实现之外,更重要的是要学会如何评价、分析一个排序算法。分析一个排序算法,要从 执行效率、内存消耗、稳定性 三 阅读全文
posted @ 2020-11-27 17:53 古兰精 阅读(348) 评论(0) 推荐(0) 编辑
摘要:今天写项目时,遇到报错信息如下: ./components/MavonEditor/index.vue?vue&type=script&lang=js& (./node_modules/_babel-loader@8.0.6@babel-loader/lib??ref--2-0!./node_mod 阅读全文
posted @ 2020-11-26 14:27 古兰精 阅读(7989) 评论(0) 推荐(0) 编辑
摘要:一、3种握手形式 在早期的网络传输中,也就存在TCP协议需要“握手”的过程,但早期的协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。于是WebSocket 协议在 2008 年诞生,2011 年成为国际标准。所有浏览器都已经支持了。而随着SSL/TLS的完善,存在已久的安全版 阅读全文
posted @ 2020-11-25 18:11 古兰精 阅读(307) 评论(0) 推荐(0) 编辑
摘要:插件是库和框架的常见功能,并且有一个很好的理由:它们允许开发人员以安全,可扩展的方式添加功能。这使核心项目更具价值,并建立了一个社区——所有这些都不会增加额外的维护负担。那么如何去构建一个插件系统呢?让我们用 JavaScript 构建一个我们自己的插件来回答这个问题。 一、如何构建一个简单的插件系 阅读全文
posted @ 2020-11-25 16:03 古兰精 阅读(611) 评论(0) 推荐(0) 编辑
摘要:call、bind这类方法我们虽然在平时开发中用到的不多,但是在看框架源码时,我们会经常看到。比如我们经常在框架级的源码中看到类似如下的一句代码: var toStr1 = Function.prototype.call.bind(Object.prototype.toString); 在这一句代码 阅读全文
posted @ 2020-11-25 12:34 古兰精 阅读(170) 评论(0) 推荐(0) 编辑
摘要:一、安全世界观 在互联网发展之初,IE 浏览器垄断的时期,大家上网的目的都很单纯,主要通过浏览器分享信息,获取新闻。但随着互联网的不断发展发展,一个网页能做的事情越来越多,除了看新闻,我们还可以看视频、玩游戏、购物、聊天等,这些功能都大大丰富了我们的生活。 随着网页功能的逐渐增多,就开始出现了一些黑 阅读全文
posted @ 2020-11-24 18:26 古兰精 阅读(567) 评论(0) 推荐(0) 编辑
摘要:引用《JavaScript 高级程序设计第四版》中说的话 ——“从简单的输入验证脚本到强大的编程语言,JavaScript 的崛起没有任何人预测到。它很简单,学会用只要几分钟;它又很复杂,掌握它要很多年。要真正学好用好 JavaScript,理解其本质、历史及局限性是非常重要的”。 试想一下,如果有 阅读全文
posted @ 2020-11-24 17:44 古兰精 阅读(249) 评论(0) 推荐(0) 编辑
摘要:一、webpack 异步加载原理 webpack ensure 有人称它为异步加载,也有人称为代码切割,他其实就是将 js 模块给独立导出一个.js 文件,然后使用这个模块的时候,再创建一个 script 对象,加入到 document.head 对象中,浏览器会自动帮我们发起请求,去请求这个 js 阅读全文
posted @ 2020-11-24 16:26 古兰精 阅读(2737) 评论(0) 推荐(0) 编辑
摘要:再阅读之前,可以先看看之前总结的这篇,两篇结合,效果更好:JS中的单线程与多线程、事件循环与消息队列、宏任务与微任务 一、关于 JavaScript javascript是一门单线程语言,在最新的HTML5中提出了Web-Worker,但javascript是单线程这一核心仍未改变。 所以一切jav 阅读全文
posted @ 2020-11-24 11:19 古兰精 阅读(187) 评论(0) 推荐(1) 编辑
摘要:虽然 ServiceWorker 和 PWA 正在成为现代 Web 应用程序的标准,但浏览器资源缓存变得比以往任何时候都复杂。本文涵盖了浏览器缓存的重点内容,具体包括: ServiceWorker 缓存与 HTTP 缓存的优先级? 主流浏览器实现的 MemoryCache 和 DiskCache 在 阅读全文
posted @ 2020-11-23 17:18 古兰精 阅读(749) 评论(0) 推荐(0) 编辑
摘要:一、编译目标 目标:把源代码变成目标代码 1、如果源代码在操作系统上运行:目标代码就是“汇编代码”。再通过汇编和链接的过程形成可执行文件,然后通过加载器加载到操作系统执行。 2、如果源代码在虚拟机(解释器)上运行:目标代码就是“解释器可以理解的中间形式的代码”,比如字节码(中间代码)IR、AST语法 阅读全文
posted @ 2020-11-23 16:50 古兰精 阅读(2147) 评论(0) 推荐(0) 编辑
摘要:无论是浏览器控制台还是Node.js的服务端,我们会在各种地方看到JavaScript异常,异常处理是编写程序必备的基础能力,在学习异常处理之前,了解 JavaScript 中的几种异常类型是非常有必要的。 1、Error Error 是最基本的错误类型,其他的错误类型都继承自该类型。 Error  阅读全文
posted @ 2020-11-23 12:17 古兰精 阅读(1485) 评论(1) 推荐(0) 编辑
摘要:一、线程和进程 首先我们来回顾下线程和进程的概念: 进程:CPU 进行资源分配的基本单位 线程:CPU 调度的最小单位 这是进程和线程最官方也是最常见的两个定义,但是这两个概念太抽象了,很难以理解。 通俗一点讲:进程可以描述为一个应用程序的执行程序,线程则是进程内部用来执行某个部分的程序。一个进程包 阅读全文
posted @ 2020-11-20 12:31 古兰精 阅读(214) 评论(0) 推荐(0) 编辑
摘要:ES6 中引入了 Proxy 代理与 Reflect 反射 这两个新的内置模块。我们可以利用 Proxy 和 Reflect 来实现对于对象的代理劫持操作,类似于 Object.defineProperty() 的效果,不过 Reflect & Proxy 远远比它强大。 大多数开发者都了解这两个新 阅读全文
posted @ 2020-11-20 10:56 古兰精 阅读(2171) 评论(0) 推荐(1) 编辑
摘要:在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了。 正则表达式零宽断言是正则表达式中的难点,所以重点从匹配原理方面进行分析。零宽断言还有其他的名称,例如"环视"或者"预搜索"等等,不过这些都不是我们关注的重点。 一、基本概念 零宽断言正 阅读全文
posted @ 2020-11-19 18:33 古兰精 阅读(938) 评论(0) 推荐(0) 编辑
摘要:引自高性能MySQL: 一、MySQL多表关联查询效率高点还是多次单表查询效率高,为什么? A、B两个表数据规模十几万,数据规模都不大,单机MySQL够用了,在单机的基础上要关联两表的数据。 先说一个极端情况,A、B两个表都没有索引,并且关联是笛卡尔积,那关联结果会爆炸式增长,可能到亿级别,这个时候 阅读全文
posted @ 2020-11-19 15:00 古兰精 阅读(9503) 评论(0) 推荐(3) 编辑
摘要:一、匹配次数中的贪婪与非贪婪 在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 "d 阅读全文
posted @ 2020-11-19 11:29 古兰精 阅读(1526) 评论(0) 推荐(0) 编辑
摘要:一、匹配分组 字符 功能 | 匹配左右任意一个表达式 (ab) 将括号中的字符作为一个分组 \num 引用分组num匹配到的字符串 (?<name>) 分组起别名 (\k<name>) 引用别名为name分组匹配到的字符串 1、| 需求:匹配出0-100之间的数字 分析:首先我们明确这之间的数字包含 阅读全文
posted @ 2020-11-18 23:34 古兰精 阅读(2971) 评论(0) 推荐(0) 编辑
摘要:正则表达式之前学了好容易忘,使用的时候经常需要再查语法,所以准备再研究下: 1、单字符匹配 字符 功能 . 匹配任意1个字符(除了\n) [] 匹配[]中列举的字符 \d 匹配数字,即0-9 \D 匹配非数字,即不是数字 \s 匹配空白,即空格,tab键 ,\n \S 匹配非空白 \w 匹配单词字符 阅读全文
posted @ 2020-11-18 18:57 古兰精 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:平时碰到一个问题,我们通常都需要从以下几点分析: 1、先说这个点的明确定义,或者是特性; 2、再说具体的应用场景; 3、说说自己的看法、观点; 4、可以稍微举一反三,说说同类特性,或者类似的框架,更好的方案。 简短的概括下常考题: 一、基础点 1、对 SPA 单⻚⾯的理解,优缺点是什么? 2、new 阅读全文
posted @ 2020-11-17 22:04 古兰精 阅读(335) 评论(0) 推荐(0) 编辑
摘要:一、页面权限控制 页面权限控制是什么意思呢?就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的。如果一个页面,有角色越权访问,这时就得做出限制了。 一种方法是通过动态添加路由和菜单来做控制,不能访问的页面不添加到路由表里,这是其中一种办法。 另一种办法就是所有的页面 阅读全文
posted @ 2020-11-17 16:10 古兰精 阅读(1030) 评论(0) 推荐(0) 编辑
摘要:最近总结了一下自己在项目中使用到的性能优化手段,这里主要从两个部分来详解vue项目的性能优化:代码层优化、webpack打包优化 一、代码优化 1、v-if 和 v-show v-if 是懒加载,当状态为 true 时才会加载,并且为 false 时不会占用布局空间; v-show 是无论状态是 t 阅读全文
posted @ 2020-11-17 12:12 古兰精 阅读(1960) 评论(0) 推荐(0) 编辑
摘要:同源策略:使用过 Ajax 的同学都知道其便利性,可以在不向服务端提交完整页面的情况下,实现局部刷新,在当今 SPA 应用普遍使用,但是浏览器处于对安全方面的考虑,不允许跨域调用其它页面的对象,这对于我们在注入 iframe 或是 ajax 应用上带来不少麻烦。 简单来说,只有当协议,域名,端口号相 阅读全文
posted @ 2020-11-16 18:25 古兰精 阅读(5458) 评论(0) 推荐(0) 编辑
摘要:一、问题背景 在做表单校验长度的需求中,发现不同字符 length 可能大小不一。比如的 "𠮷".length 是 2(需要注意这里并不是一个中文字!) '吉'.length // 1 '𠮷'.length // 2 '❤'.length // 1 '💩'.length // 2 你可以看一下 阅读全文
posted @ 2020-11-16 17:30 古兰精 阅读(1281) 评论(0) 推荐(0) 编辑
摘要:一、JS 异常处理,为什么要处理异常? 对于 Javascript 而言,我们面对的仅仅只是异常,异常的出现不会直接导致 JS 引擎崩溃,最多只会使当前执行的任务终止。 1、当前代码块将作为一个任务压入任务队列中,JS 线程会不断地从任务队列中提取任务执行。 2、当任务执行过程中出现异常,且异常没有 阅读全文
posted @ 2020-11-16 16:21 古兰精 阅读(609) 评论(0) 推荐(1) 编辑
摘要:见到这个随机数生成算法好几次了,乍看有点鸡肋,本来用Math.random()就可以的事,想不清楚为什么他要用9301,49297,233280这三个数字?其中有道理吗?还是仅是随意选的三个数?但是这个组合貌似流传很广,好多网站源码里都见到过。 // 生成随机数 export function ge 阅读全文
posted @ 2020-11-16 14:51 古兰精 阅读(925) 评论(0) 推荐(0) 编辑
摘要:最近项目里需要大量上传文件,考虑使用阿里云提供的对象存储,并采用前端直传方案。这里并不想介绍如何使用,想知道如何使用,可以直接参考官方文档,也没啥特多介绍的,所以这里主要是记录一下使用中的注意点。 阿里云上传文件官方文档:阿里云上传文件前端直传方案文档 1、使用oss对象 在代码中使用OSS对象: 阅读全文
posted @ 2020-11-14 21:04 古兰精 阅读(5058) 评论(0) 推荐(0) 编辑
摘要:一、render简介 Render 函数是 Vue2.x 新增的一个函数、主要用来提升节点的性能,它是基于 JavaScript 计算。使用 Render 函数将 Template 里面的节点解析成虚拟的 Dom 。 Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的 阅读全文
posted @ 2020-11-13 18:26 古兰精 阅读(4453) 评论(0) 推荐(0) 编辑
摘要:一、使用template还是JSX? 1、template特点 模板语法(HTML的扩展) 数据绑定使用Mustache语法(双大括号):<span>{{title}}<span> 2、JSX特点 JavaScript的语法扩展 数据绑定使用单引号:<span>{title}<span> Vue官方 阅读全文
posted @ 2020-11-13 17:56 古兰精 阅读(1120) 评论(0) 推荐(0) 编辑
摘要:一、概述 我们应该都知道 vue会通过 object.defineProperty 对数据进行劫持,来实现视图响应数据的变化,然而有些时候我们的组件就是纯粹的数据展示,不会有任何改变,我们就不需要 vue来劫持我们的数据,在大量数据展示的情况下,这能够很明显的减少组件初始化的时间,那如何禁止 vue 阅读全文
posted @ 2020-11-13 16:24 古兰精 阅读(2544) 评论(0) 推荐(2) 编辑
摘要:一、为什么要使用 npm ci 1、package-lock.json的表现,在npm@5.4.2版本后的表现: (1)无package-lock.json:npm i 根据package.json进行安装,并生成package-lock.json (2)package.json和package-l 阅读全文
posted @ 2020-11-13 12:21 古兰精 阅读(2183) 评论(0) 推荐(0) 编辑
摘要:以前我们总说,JS是单线程没有多线程,当JS在页面中运行长耗时同步任务的时候就会导致页面假死影响用户体验,从而需要设置把任务放在任务队列中;执行任务队列中的任务也并非多线程进行的,然而现在HTML5提供了我们前端开发这样的能力 - Web Workers API,我们一起来看一看 Web Worke 阅读全文
posted @ 2020-11-12 13:24 古兰精 阅读(6672) 评论(0) 推荐(0) 编辑
摘要:一、什么是前端路由? 路由是根据不同的 url 地址展示不同的内容或页面。路由的概念来源于服务端,在服务端中路由描述的是 URL 与处理函数之间的映射关系。 而在 Web 前端单页应用中,路由描述的是 URL 与 UI 之间的映射关系,这种映射是单向的,即 URL 变化引起 UI 更新(无需刷新页面 阅读全文
posted @ 2020-11-11 21:10 古兰精 阅读(1233) 评论(0) 推荐(0) 编辑
摘要:一、说明 我们习惯于用Vuex去解决状态的共享问题,但是在小项目中使用就会有增大代码体积和将代码复杂化的烦恼,所以在Vue(2.6.0)的版本中新增了一个跨组件通信方案:Vue.observable(object)。 其作用是让一个对象可响应,Vue 内部会用它来处理 data 函数返回的对象。返回 阅读全文
posted @ 2020-11-10 18:22 古兰精 阅读(1418) 评论(0) 推荐(0) 编辑
摘要:本文主要讲解如何使用 CSS 控制打印样式。 一、基本概念 使用 CSS 可以控制文档如何正确的显示在不同的媒介 (Media) 上。其中分页媒介 (Paged Media) ,不同于连续媒介 (Continuous Media),它可以控制文档内容,将其分隔至一个或多个不相关联的页面 (如:书、幻 阅读全文
posted @ 2020-11-10 17:20 古兰精 阅读(7349) 评论(0) 推荐(1) 编辑
摘要:昨天搞了个前端html转pdf的功能。略有所收,踩了一些坑,所以做些记录,为后来的兄弟做些提示。经过一番调研发现html导出pdf一般有这几种方式,各有各有优缺,下面简单介绍。 一、通过jsPdf实现 此种方案可以看昨天写的博客:jsPDF将html页面生成pdf文件的前端解决方案及html2can 阅读全文
posted @ 2020-11-10 17:18 古兰精 阅读(8993) 评论(0) 推荐(0) 编辑
摘要:wangEditor是一款轻量级的富文本编辑器。使用还比较方便,但是缺少查看源码模式,需要我们自定义一个menu给增加查看源码模式 一、快速扩展一个菜单 【注意】以 Button 菜单为例演示,官方文档里有其他类型的菜单,注册步骤都是一样的。 1、准备 // 引入 wangEditor import 阅读全文
posted @ 2020-11-10 17:16 古兰精 阅读(6211) 评论(0) 推荐(0) 编辑
摘要:jsPdf是一个可以把html转成pdf的插件,有人多人在用。 GitHub: https://github.com/MrRio/jsPDF 官方文档: http://raw.githack.com/MrRio/jsPDF/master/docs/ 但是老外做的很多东西没考虑过英文之外的语言,这个也 阅读全文
posted @ 2020-11-09 22:39 古兰精 阅读(8272) 评论(0) 推荐(0) 编辑
摘要:由于 vue2.0 移除了1.0中的$dispatch 和$broadcast 这两个组件之间通信传递数据的方法,官方给出的最简单的升级建议是使用集中的事件处理器,而且也明确说明了 一个空的vue实例就可以做到,因为Vue 实例实现了一个事件分发接口。 vue2.0中可以使用 $emit, $on, 阅读全文
posted @ 2020-11-07 22:42 古兰精 阅读(2313) 评论(0) 推荐(0) 编辑
摘要:一、group_concat函数的功能 将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列。例如: create table emp( 阅读全文
posted @ 2020-11-07 21:57 古兰精 阅读(38218) 评论(0) 推荐(3) 编辑
摘要:一般刷新页面可以用 location.reload(true),history.go(0) 等方法,但是这对vue项目很不友好,会使页面重新加载出现暂时性的空白,而且耗费性能,所以vue项目最好不用这些方法。vue有this.$forceUpdate()可以强制更新,下面介绍其他更好的方法。 一、带 阅读全文
posted @ 2020-11-07 18:20 古兰精 阅读(9896) 评论(0) 推荐(0) 编辑
摘要:我们可以总结下组件通信的几大方法: 一、props属性传递数据 二、$emit、@on,事件触发与事件监听 三、状态管理 vuex,或者 Vue.observale()进行状态管理 四、ref引用获取组件实例 五、$parent、$children,获取当前组件的父组件、子组件 六、通过 provi 阅读全文
posted @ 2020-11-07 17:34 古兰精 阅读(1993) 评论(1) 推荐(2) 编辑

点击右上角即可分享
微信分享提示