自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PHP Linux 环境下安装与启用 phpredis 扩展指南

1. 薛定谔的 PHP当你使用一台 Linux 设备时,你永远不知道你的设备上被安装了多少个 PHP 的版本,也不会知道当前的 PHP 设置是什么,关于 PHP 的多版本管理与信息查看可以查看 这篇文章的末尾。只有你搞明白了 PHP 的版本如何管理你才能顺滑的安装 PHP 的各种插件。踩坑预警: 如果你的插件没有生效,请依次检查在 php.ini 中是否启用该插件;当前环境(命令行 or...

2019-12-19 17:31:19 2101 1

原创 使用 Element UI Select 组件的 value-key 属性,让绑定值可以为一个对象

当我们使用 Elemet UI 的选择组件进行多选时,Select 组件的绑定值是一个数组,但是数组的值只能传入 Number 类型或者 String 类型的数据,如果我们想向其中传入一个对象就会出错,如:<template> <el-select v-model="permissionList" multiple placeholder="请选择"> <el...

2019-11-07 12:14:42 40109 6

原创 一段代码两张图,帮你理解 JS 中的原型链继承

创建一个 Animal 类,Dog 类继承与 Animal 类,同时实例化一个 Dog 类为 dog,查看其显式原型与隐式原型之间的关系:class Animal { constructor(name) { this.name = name } eat() { console.log("吃东西"); }}class Dog extends Animal {...

2019-10-29 16:28:36 355 1

转载 Vue 使用中的各种小技巧

Watch immediate这个已经算是一个比较常见的技巧了,这里就简单说一下。当 watch 一个变量的时候,初始化时并不会执行,如下面的例子,你需要在created的时候手动调用一次。// badcreated() { this.fetchUserList();},watch: { searchText: 'fetchUserList',}复制代码你可以添加imme...

2019-10-28 17:21:48 962 1

原创 Vue 中销毁 keep-alive 缓存组件及缓存组件的管理

1. keep-alive在 Vue 的组件机制中,如果在多个组件页面中来回切换,已访问的组件页面是不会被缓存的,也就是说每次切换一个组件页面再返回后,原有的组件页面仍会被重新渲染,相应的执行从 beforeCreate 开始的声明周期函数 。这样的话是非常浪费性能的,所以 Vue 提供了一个 <keep-alive> 组件,可以用于缓存组件,配合 Vue-Router 使用可以缓存...

2019-10-23 11:27:24 6307

原创 使用 alipay-sdk-nodejs 让 node 应用接入支付宝付款

1. 开发构思我们的总体需求是让 node js 应用接入支付宝,完成用户付款,具体流程是:当用户在商户应用点击付款后,页面跳转到支付宝界面,这时会出现两种情况:手机用户唤醒支付宝应用PC 唤醒支付宝收银台用户在支付宝页面进行付款,并完成付款支付宝检测用户完成付款后向商户应用发送一个 POST 请求作为支付完成的异步回调商户应用对回调信息进行验证后,对订单状态进行变更用户返...

2019-10-22 10:51:35 9730 2

原创 2019 Go 三款主流框架 —— Gin Beego Iris 选型对比

1. 常见框架1.1 框架排名Gin 31k [Lite]Beego 22kIris 16kEcho 15k [Lite]Revel 11kMartini 10k [×]buffalo 5k [Lite]1.2 框架特性Gin:Gin 是一个用 Go (Golang) 编写的 web 框架。...

2019-10-11 13:39:34 56876 1

原创 BeeGo快速使用指南

1. 安装与使用1.1 安装Beego get github.com/astaxie/beegogo get -u github.com/astaxie/beegogo get -u github.com/beego/bee1.2 创建一个Bee项目创建一个标准的 Bee 项目:bee new myproject创建一个 api 应用:bee api apiproject...

2019-09-30 16:34:03 16874

原创 前端开发者的Go语言之路(9) —— Channel 与 GoLang 的 CPS 模型

1. channelgoroutine 之间通信的通道就叫做 channel1.1 创建使用 channel定义一个 channel 类型:var c chan int // c == nil创建一个 channel:c := make(chan int)向一个 channel 发送数据:c <- 1 // 将1发送给 channel 实例接收一个 channe...

2019-09-25 18:05:59 5432

转载 如何解决公网无法访问阿里云ECS搭建的MongoDB服务

最近为了学习后端购买了一台阿里云ECS云服务器(专用网络) 环境如下: OS:Ubuntu16.04, MongoDB:v4.0.1尝试着安装了MongoDB并进行了相应的配置,搜索了一些资料发现关键在于三点:MongoDB的bindIp配置: MongoDB默认的配置文件中,bindIp选项默认是localhost,也就是说默认只有安装了MongoDB的主机自己能够访问。所以如果需要外网的...

2019-09-23 12:44:47 617

原创 Koa中解决跨域问题的方案

1. 跨域问题在前后端分离开发的过程中,跨域是一个很常见的问题,跨域的解决方案也多种多样,如:通过jsonp跨域document.domain + iframe跨域location.hash + iframewindow.name + iframe跨域postMessage跨域跨域资源共享(CORS)nginx代理跨域nodejs中间件代理跨域WebSocket协议跨域...

2019-09-21 18:44:14 6688 2

原创 Koa 使用 Json Web Token(JWT)的解决方案

1. 依赖jsonwebtoken 用于签发、解析 tokenkoa-jwt 用于路由权限控制koa-bodyparser 用于解析 post 数据2. 创建一个简单的 Token 获取与验证机制2.1 获取 Token引入 jsonwebtoken 库,可以根据传入的 json 字符串生成一个 token 信息。客户端可以将这个 token 托管于用户浏览器的 localStro...

2019-09-21 16:19:03 2767

原创 前端开发者的Go语言之路(8) —— 初识并发编程

1. 并发编程1.1 goroutine示例:func main() { for i := 0; i < 10; i++ { go func(i int) { // 开启的这个多任务可以一直输出打印 for { fmt.Printf("hello from goroutine %d \n", i) } }(i) } // ...

2019-09-17 14:51:48 443

原创 前端开发者的Go语言之路(7) —— 表格驱动测试、性能测试、文档生成

1. 表格驱动测试1.1 表格驱动测试的优势分离的测试数据明确的出错信息可以部分失败go语言的语法更容易实现表格驱动测试1.2 Go语言中使用表格驱动测试的方案创建一个 xx_test.go 文件,它是一个 Empty file,IDE其会自动执行文件中写入的测试函数创建一个测试函数,传入的参数为 t *testing.T编写测试表格,其为一个slice,单条数据...

2019-09-17 14:51:03 233

原创 前端开发者的Go语言之路(6) —— defer、错误处理、panic与recover

1. defer1.1 defer 调用defer:延缓defer 调用有以下特性:确保调用在结束发生生参数在defer语句时计算defer列表为后进先出创建一个简单的defer函数,让打印语句在函数执行完时再执行:func tryDefer() { defer fmt.Println(3) defer fmt.Println(2) fmt.Println(1)}...

2019-09-16 21:42:17 295

原创 前端开发者的GO语言之路(5) —— 函数式编程

1. 函数式编程1.1 使用闭包使用函数式编程思想,我们可以在一个函数中返回一个函数,构造一个累加器如下:func adder() func(int) int { sum := 0 return func(v int) int { sum += v return sum }}使用累加器:func main() { a := adder() for i := 0; i...

2019-09-16 21:40:54 326

原创 前端开发者的GO语言之路(4) —— DuckTyping概念、接口

1. duck typing通常我们设计一个方法时,参数的关注点往往是传入对象的类型,然而在 duck typing 中关注点在于传入对象的行为,能作什么。像鸭子走路,像鸭子叫,那么就是鸭子描述事物的外部行为而非内部结构严格说go属于结构化类型系统,类似duck typingduck typing 不是 go 语言独有的概念,而是一种思想,如javascript中的 duck typ...

2019-09-16 10:13:38 282

原创 JavaScript 柯里化函数的实现

1. 柯里化函数的定义在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。函数柯里化的对偶是Uncurrying,一种使用匿名单参数函数来实现多参数函数的方法。例如:var foo = function ( a ) { return ...

2019-09-12 16:48:51 765

原创 前端开发者的GO语言之路(3) —— 结构体和方法、包和封装、拓展已有类型、GOPATH以及目录结构

1. 面向对象go语言仅支持封装,不支持继承和多台go语言没有class只有struct1.1 创建一个树形结构结构的创建:type treeNode struct { value int left, right *treeNode}使用treeNode创建一个如下图所示的树形结构:func main(){ root = treeNode{value...

2019-09-12 14:56:02 587

原创 前端开发者的GO语言之路(2) —— 数组、切片、Map、字符和字符串的处理

1. 数组1.1 定义数组定义一个长度为5的空数组(空数组的默认值为0):var arr [5]int // [0,0,0,0,0]定义一个长度为3的数组:arr2 := [3]int{1, 3, 5} // [1,3,5]定义一个自设置长度的数组:arr3 := [...]int{2, 4, 6, 8, 10} // [2,4,6,8,10]定义一个二维数组:var gr...

2019-09-10 15:29:26 405

原创 前端开发者的GO语言之路(1) —— 变量、常量、条件语句、循环、函数、指针

1. go语言基础数据类型及定义1.1 创建 Go FileGo File 分为两种,一种为 Empty file ,另一种为 Simple Application1.2 Hello word创建一个 Simple Application 后,输入:package mainimport "fmt"func main() { fmt.Println("Hello word!")}...

2019-09-09 13:25:02 332

原创 SVN快速入门指南

1.svn的安装svn 需要安装 sliksvn 才能在命令行中使用 `svn` 指令svn --version2.svn服务指令2.1 创建指令​指令:svnadmin create [Path]创建出的目录:conf/ 设置权限时,需要设置conf目录db/ 存储svn自身的数据hooks/ 存放钩子,在每次提交时可以触发一定...

2019-08-06 12:11:10 166

原创 gulp快速使用指南

Gulp学习版本为3.9.11. Gulp特点任务化基于流输入流输出流2. APIgulp.src(globs[, options]) 输入文件:输入流gulp.dest(path[, options]) 输出文件:输出流gulp.task(name[, deps], fn) 任务化gulp.watch(glob[, opts], tasks) 监视3. 目...

2019-07-22 16:51:49 151

原创 关于import、export语句的种种引入方式、导出方式的区别

学习了这么长时间的Vue、React、还有nodeJs,对 import 语句可以说是既熟练又容易糊涂,我们经常见到以下几种 import 语句:import {xx1, xx2, xx2} from ‘xx’improt * as xx from ‘xx’import xx from ‘xx’那么接下来我们就好好分析一下他们的区别以及使用场景:1. import {xx1, xx2...

2019-07-02 11:31:33 7027

原创 简析Vue中的MVVM实现原理

1. MVVMangular - 脏值检测vue - 数据劫持+发布订阅模式(不兼容低版本:因为其依赖于Object.defineProperty)2. Object.defineProperty()1.1 概念Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。定义的这个属性具有使用 Object.defi...

2019-05-30 20:41:15 1128

原创 关于BFC的特性,以及如何利用BFC解决margin溢出与margin重叠问题

1. 何为BFC?文章:https://juejin.im/post/5909db2fda2f60005d2093db#heading-8BFC概括:可以在心中记住这么一个概念———所谓的BFC就是css布局的一个概念,是一块区域,一个环境。BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与...

2019-05-22 12:32:28 1909 1

原创 实现vuex与组件data之间的数据同步更新

问题我们都知道,在Vue组件中,data部分的数据与视图之间是可以同步更新的,假如我们更新了data中的数据,那么视图上的数据就会被同步更新,这就是Vue所谓的数据驱动视图思想。当我们使用Vuex时,我们也可以通过在视图上通过 $store.state.[DataKey] 来获取Vuex中 state 的数据,且当 state 中的数据发生变化时,视图上的数据也是可以同步更新的,这似乎看起来很...

2019-05-16 15:10:24 10464

原创 Webpack快速配置参考

1. 安装与设置项目目录结构安装基础的webpack组件:mkdir webpack-demo cd webpack-demonpm init -ynpm install webpack webpack-cli --save-dev常用目录参考:webpack-demo |- /node_modelues|- /dist(存放最终输出的文件)|- /asset(存放HTML模...

2019-05-15 18:10:00 285

原创 关于构造函数和原型链运行机制的试题与知识点总结

相关试题知识点1. 构造函数2. 原型规则和示例3. 原型链4. intanceof5. 关于原型重定向问题解题1. 如何准确判断一个变量是数组类型2. 写一个原型链继承的例子3. 描述new一个对象的过程题目:如何准确判断一个变量是数组类型写一个原型链继承的例子描述new一个对象的过程zepto(或其他框架)源码中如何使用原型链知识点:1. ...

2019-05-06 17:28:14 243

原创 Canvas快速入门教程

目录Canvas入门教程Canvas概述1. 与Flas的区别2. 创建Canvas画布标签3. 用Javascript操作2D画布4. API笔触、填充1. 简述3. 绘制路径4. 绘制样式6. 快速绘制6. 绘制复杂图像7. API弧1. 绘制弧线2. API绘制渐变1. 创建渐变色2. API文字1. 添加文字2. 调整...

2019-05-03 09:28:18 1892

原创 总结事件轮询机制,以及宏任务队列与微任务队列

1. 事件轮询(Event Loop)js实现异步的具体解决方案什么叫轮询?2. 宏任务和微任务概念宏任务微任务例题EXP1: 在主线程上添加宏任务与微任务EXP2: 在微任务中创建微任务EXP3: 宏任务中创建微任务EXP4:微任务队列中创建的宏任务总结这篇博文仅为个人理解,文章内提供一些更加权威的参考,如有片面及错误,欢迎指正1. 事件轮询...

2019-04-15 09:45:06 5468 5

原创 理解Javascript中的函数节流和函数防抖

函数节流和函数防抖都是用来优化性能,以及避免短时间内连续调用某个函数的方案。一下我们通过两个例子,来理解两种方案,以及它们的应用场景。函数节流函数节流即为,一个函数执行一次后,只有大于设定的执行周期后,才会执行第二次。这里我们可以理解为当一个函数立即执行后,它需要一个冷却时间才能被执行第二次,也就是我们需要去节制函数的调用次数,即为节流。我们可以通过检测两次函数调用的时间差,如果在设定...

2019-04-13 14:45:57 234

原创 利用CSS让页面元素居中的方案

页面元素居中是我们开发过程中常遇到的问题,同时也是面试中经常被提及的问题,所以我们必须熟练掌握初始样式<style> .container { width: 500px; height: 500px; background-color: pink; } .inner { width: 200px; height: 200px...

2019-04-13 14:27:04 327

原创 关于响应式开发中的 viewport概念、像素比、缩放比 简述

1. viewport影响着我们页面的什么?viewport是虚拟显示视口,它是时刻存在的【这一点有异议,有的人说必须要设置meta标签才会存在viewport,然而在chrome浏览器的调试工具中,添加和不添加meta标签都会触发viewport的行为】,我们设置meta标签只是去改变viewport的相关属性,并非是去设置一个viewport。只是在响应式页面开发过程中,默认的viewpor...

2019-04-13 14:19:54 676

原创 前端面试题讲解(THIS、构造函数、面向对象、堆栈内存以及闭包)

视频地址:https://www.bilibili.com/video/av24383268/?p=1302 - JS中的严格模式和ARG映射机制EXP1if(!("a" in window)){ // !true var a = 1;}console.log(a);输出:undefined不管条件是否成立都要进行变量提升,在全局作用域下声明的变量,也相当于给win...

2019-04-11 20:44:25 1013

转载 由Javascript的继承引发的:抽象类、接口、多态,甚至是类型转换!

原文:https://my.oschina.net/xue777hua/blog/147716##缘起## 工作中需要用到Javascript,关注了Javascript中继承复用的问题,翻阅了网上的各种关于Javascript继承的帖子,感觉大都思考略浅,并没有做过多说明,简单粗暴的告诉你实现Javascript继承有1.2.3.4.5几种方式,名字都叫啥,然后贴几行代码就算是玩了。不管...

2019-04-09 14:47:03 802

原创 四道阿里前端面试基础题分析

题目一小明使用js编写了一个dog类,该dog类有一个方法bark,在新建的dog实例中,引用bark方法,输出相关内容。以下是小明写的代码,请看下他写的有什么问题?如果有问题,如何改造?function dog(){}dog.prototype.bark = function(msg){ console.log(msg); setTimeout(function(){ this...

2019-04-08 13:47:27 858

原创 前端使用ElementUI上传图片到七牛云服务器

ElementUI upload组件:http://element-cn.eleme.io/#/zh-CN/component/upload0. 目的我们的目的是通过使用ElementUI的 upload 组件上传图片到七牛云 存储对象 上,之后拿到该图片在存储对象上的 url地址1. ElementUI官方文档示例<el-upload class="upload-demo...

2019-03-25 14:35:49 4601 4

原创 对Vue2.2中监听子组件事件的理解

官方文档:https://cn.vuejs.org/v2/guide/components.html#监听子组件事件解释所谓的 监听子组件事件 ,就是当子组件内部触发了一个事件后,外部(也就是调用子组件的父级组件)应该能相应的感知到事件的触发,从而再出发一些列的操作。例如:子组件为一个按钮,当按钮被点击时,父级组件会感知,并触发想要触发的操作。实现思路1.设定埋伏,准备捕捉子组件的操...

2019-02-27 15:38:27 2692

原创 用NodeJs设计GET、POST接口

设计GET接口1.以VueResource为工具发出GET请求,接收数据postRoomInfo() { this.$http .get(&quot;http://[apiAdress]/getMsg&quot;).then(res =&amp;gt; { console.log(res.body); });}2.Node服务器端接收GET请求,发送数据const express ...

2019-02-01 13:12:47 1832

空空如也

空空如也

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

TA关注的人

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