自定义博客皮肤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)
  • 收藏
  • 关注

原创 Midway FaaS 使用中踩的坑

Midway Faas 是用于构建 Node.js 云函数的 Serverless 框架,可快速部署到阿里云和腾讯云(由于是阿里团队开发的框架,天然更适合阿里云)。下面是我使用 Midway Faas 结合 Vue 开发时,踩到的坑 —— 缺少第三方模块。通过 f package 打包后会发现,.serverless 加载的库只有 @midwayjs/serverless-fc-starter,这时候如果你直接通过 f deploy 发布,调用接口,会报错。报错的内容是缺少 @midwayjs/faa

2020-06-29 14:21:40 1461

原创 height: 100vh 在 Android 的 Webview 中失效了怎么办?

移动端原生开发的同学用 webview 嵌了一个 H5 页面,这个页面由于有一个 fix 在底部的按钮。为了在数据没加载完成的时候,按钮也能沉在底部,所以给容器设置了一个默认高度 min-height: 100vh。经过测试,这个写法在 Chrome 的手机模拟器和 iOS 下都表现良好,唯独在 Android 中出了问题 —— 起始的时候,按钮缩在了顶部。排查后发现,在 Android 的 ...

2020-04-22 17:43:26 2043 2

原创 力扣 0055 - 跳跃游戏Ⅰ

题目详情:跳跃游戏Ⅰ说好每日一拱的算法练习,因为某些原因断了好多天。1. 思路利用动态规划的思想,要到达目的地 i,只要前一个格子 i-1 的步数大于 0,如果不巧 i-1 的格子正好是 0, 那就要看 i-2 能不能达到 i,以此类推。然后每当一个格子 x 可以被前面某个格子 y 到达,则目的地格子就变成了 y。2. 代码JavaScriptvar canJump = functi...

2020-04-17 10:07:26 177

原创 macOS 更新后使用 svn 发生的连环事故

今天要从 svn 上 checkout 一个新文件夹出来,结果意外发生了。首先,控制台告诉我:svn: error: The subversion command line tools are no longer provided by Xcode查找资料知道可以通过 brew 安装来解决:brew install subversion然后事故紧接着又出现了:Running Hom...

2020-04-14 17:15:24 237

原创 webpack 中 enforce 的一个实际用法

当我们在 webpack 中集成 eslint 和 babel 的时候,一般会采用如下的写法:module.exports = { // ... module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: ['babel-loader', 'eslint-loader'] } ...

2020-04-08 10:21:31 1233

原创 如何获取所有可访问的 chrome://xxx 地址?

在地址栏中输入 chrome://chrome-urls/,然后回车,就可以看到所有的 chrome://* 的地址列表。

2020-04-07 11:44:47 376

原创 Chrome 刷新 DNS 的方法

首先你可以使用下面的命令先刷新操作系统的 DNSmacOSsudo killall -HUP mDNSResponderWindowsipconfig /flushdns这时候回到 Chrome, 会发现 DNS 可能还没生效。原因是 Chrome 为了加快网页的加载速度,会对 DNS 进行缓存(节省 DNS 解析的时间),所以碰到这种情况,你还需要在 Chrome 中清理 DNS ...

2020-04-07 11:31:41 2742

原创 有关 gridsome build 以后,页面的访问问题

执行 gridsome build 后默认会在 dist 目录下生成相关的文件。然后将这些文件发布到服务器上就好了。我有个页面的目录是 /forms/apply,当我访问从网站上访问 https://xxx.yyy.zzz/forms/apply/index.html 的时候,首先会看到页面一闪而过,最后在停止在 404 的页面上。经过一番排查,原因是编译后生成的工程是自带路由功能的 ????,所以...

2020-03-31 10:38:37 241

原创 因恨生爱,对不可见字符的小应用

今天在代码上做字符串匹配的时候,发现两个“相同”的字符串,=== 竟然是 false。根据经验,知道是字符串里面包含了不可见字符。通过 encodeURIComponent 转换,发现多了 %E2%80%8B 这串字符。从这里可以查找每个编码对应的字符。都是些奇怪的符号,怎么生成这些符号的,我并没有确切的结论。经过和沟通,推测是从 word 复制导致的。网上也查了些资料,碰到这个现象的人...

2020-03-30 16:10:52 93

原创 解决 gridsome 编译的时候报 window is not defined 的问题

造成这个问题的原因,是我将 window 相关的代码写在了 created 生命周期里。而 gridsome 本质上也是 SSR,created 是在服务端发生的,服务端没有 window 这个对象。一个简单的解决办法,是将和 window 有关的代码都挪到 mounted 这个生命周期里。...

2020-03-30 14:34:43 434

原创 设置前端包管理器 Yarn 的资源镜像地址

首先通过下面的命令查看当前的资源地址yarn config get registry默认会得到 https://registry.yarnpkg.com,接着通过下面的命令将资源地址链接到淘宝的镜像yarn config set registry https://registry.npm.taobao.org...

2020-03-26 08:48:42 680

原创 font-size 对 input 的影响

1. 开始在不限定 <input> 宽度的情况下,font-size 是会影响 <input> 的宽度的。以下的试验是在 macOS 的 Chrome 中进行的。默认情况下的 <input> 宽度是 132px,font-size 的值为 12px 。当我们以 12px 为界,先减小 font-size 的值,这时候会发现无论是 <input>...

2020-03-25 10:39:43 1476

原创 为 JS 中的 Math 添加求最大公约数的方法

以下方法摘录自 Math - JavaScript | MDN1. 代码Math.gcd = function() { if (arguments.length == 2) { if (arguments[1] == 0) return arguments[0]; else return Math.gcd(...

2020-03-22 08:22:39 397

原创 力扣 0365 -水壶问题

题目详情:水壶问题1. 思路这道题有两种解题思路。第一种是利用深度搜索(递归),每次遍历所有可能的操作(6种):把 X 壶的水灌进 Y 壶,直至灌满或倒空;把 Y 壶的水灌进 X 壶,直至灌满或倒空;把 X 壶灌满;把 Y 壶灌满;把 X 壶倒空;把 Y 壶倒空。这种解法算是能想到的标准解法,不过时间和空间都不好。第二种是利用数学思维,求出 X 壶和 Y 壶的最大公约数 ...

2020-03-22 08:13:19 106

原创 力扣 0040 - 最小的 k 个数

题目详情:最小的 k 个数1. 思路一种思路是利用快速排序,然后取前 k 个数。另一种思路是构建一个大顶堆。数组中的数字依次进入大顶堆,当堆的长度小于 kkk 的时候,则加入堆尾,然后自底向上进行堆调整;当堆的长度大于等于 kkk 的时候,就比较堆顶元素和进入的数字,如果进入的数字大,则直接丢弃;反之,则将堆定元素替换成进入的数字,然后自顶向下进行堆调整。2. 代码(JavaScript ...

2020-03-21 07:35:57 157

原创 力扣 0409 - 最长回文串

题目详情:最长回文串1. 思路这个题目难点在于找到“最长回文串”的规律。自己可以手写几个回文串,然后统计下每个字母的数量。“最长回文串”的规律就是:取每个字母的数量的最大偶数(比如,3就取2,7就取6)相加,如果字母中的数量有奇数,则在结果最后再加 1。2. 代码(JavaScript 版)/** * @param {string} s * @return {number} */...

2020-03-19 13:13:24 68

原创 力扣 0836 - 矩形重叠

题目详情:矩形重叠1. 思路将 xxx 轴方向设为长,将 yyy 方向设为高。矩阵1的长 width1 = rect1[1] - rect1[0],高 height1 = rect1[3] - rect1[1]同理求出矩阵2的长 width2 和高 height2。继续求出两个矩形的中心点 (x1,y1)(x_1, y_1)(x1​,y1​) 和 (x2,y2)(x_2, y_2)(x2...

2020-03-19 08:51:45 112

原创 不知道 JAMstack 的就来了解下吧

1. 概念Jamstack 不是一种新的技术,它是一种新的构建网站的方式。利用预编译技术,事先构建静态页面,然后将页面托管在 CDN 上。JAM 分别代表来 JavaScript、APIs、Markup2. 优势首先,托管在 CDN 上的页面,传输速度快。其次,页面已经构建完成,所以不用等待 JS 来渲染页面,从第一个字节到达浏览器,引擎就可以开始渲染页面。最后是安全性高,因为少了很多...

2020-03-17 12:07:31 626

原创 Safari 的点击事件中不存在 event.path 的兼容方法

1. 环境:macOS 版本:10.15.3Safari 版本:13.0.52. 问题描述:在 Safari 的事件中,event.path 不存在。3. 解决办法:可以通过 event.composedPath() 获取。function getEventPath(evt) { return evt.path || (evt.composedPath && e...

2020-03-16 11:20:57 1189

原创 Safari 对 new Date 支持情况的小测试

1. 环境:macOS 版本:10.15.3Safari 版本:13.0.52. 问题描述:在 Safari 中,用 JS 执行 new Date('2020-05-07 23:59:59') 会得到 Invalid Date。这时候做一些类似日期比较的操作,会得到错误的结果(一直返回 false)。3. 解决办法:将日期格式改成 2020/05/07 23:59:59 就可以正常...

2020-03-16 10:58:03 203

原创 Safari 中 JS 报错:Unhandled Promise Rejection: NotAllowedError

1. 环境:macOS 版本:10.15.3Safari 版本:13.0.52. 问题描述:在 JS 代码中,直接使用代码执行 <audio> 的播放。3. 解决方法这个权限错误是因为 Safari 默认不允许静默的播放音频,需要通过 UI 交互(比如页面上放个按钮)来触发。可以通过下面的流程获得权限:1⃣️ 点击左上角「Safari浏览器」» 2⃣️ 点击「偏好...

2020-03-13 13:58:50 3866 1

原创 Safari 不支持 <option> 用 display: none 隐藏

1. 环境:macOS 版本:10.15.3Safari 版本:13.0.52. 问题描述:如题,就是个兼容问题3. 解决办法:写一个方法,根据条件返回重构后的 options。

2020-03-13 11:38:57 647

原创 使用 webpack 打包,图片地址变成了 [object Module]

这个问题是 file-loader 在 5.0.0 的更新中造成的:BREAKING CHANGESminimum required nodejs version is 10.13.0rename the esModules option to esModuleswitch to ES modules by default (the option esModule is true by...

2020-03-10 17:14:54 1531

原创 算法题:2 的幂

leetcode 地址:2 的幂1. 思路首先我们要找到 2 的不同幂次的数的特征,比如:2 是 104 是 1008 是 1000找到规律后,参考 算法题:位 1 的个数 里面用到的那个去除低位 0 的方法。2. 代码➥ JavaScript/** * @param {number} n * @return {boolean} */var isPowerOfTwo...

2020-03-08 15:58:25 157

原创 算法题:位 1 的个数

leetcode 地址:位 1 的个数1. 思路1.1 方法一对 n 每次执行 n % 2 的操作1.2 方法二使用位运算,老实说这个方法不知道的估计也想不出,知道也就知道了 ????2. 代码(方法二)➥ JavaScript/** * @param {number} n - a positive integer * @return {number} */var hammin...

2020-03-08 15:40:58 111

原创 算法题:单词搜索Ⅱ

leetcode 地址:单词搜索Ⅱ1. 思路先将单词构造成 Trie(前缀树)然后两层循环遍历格子里的所有字母每个被遍历到的字母作为单词的开头,去 Trie 匹配3.1 如果不匹配,则直接下个格子开始3.2 如果 search 匹配到,则放入 result 中3.3 如果 startWith 匹配到,则开始爬(move 方法)格子,有四个方向3.4 search 匹配成功必然 ...

2020-03-06 14:50:06 317

原创 算法题:实现 Trie(前缀树)

leetcode 地址:实现 Trie(前缀树)1. 什么是前缀树Trie 也叫前缀树,核心的思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销,以达到提高效率的目的。2. 思路如何判断结尾的地方是曾经被 insert 过的“单词”,我觉得是这题的重点。从题目示例可以看到trie.insert('apple')trie.search('app') // falsetrie....

2020-03-06 11:29:50 210

原创 算法题:有效的数独

leetcode 地址:有效的数独思路就按照数独的规则来判断,有三条:横向数字不重复纵向数字不重复3x3 的范围内不重复循环依然利用深度优先的思路。代码➥ JavaScript/** * @param {character[][]} board * @return {boolean} */var isValidSudoku = function(board) { ...

2020-03-05 15:32:37 137

原创 Array.prototype.fill 可得悠着点用

Array.prototype.fill() 在 ES2015 中被列入了 Standard 标准中,因此可以放心使用了。但使用时得注意一个问题,如果你 fill 的内容是一个对象的话,其实是一个传址操作,副作用就是你对其中一个对象操作,会影响到“其他”对象。举了例子const list = new Array(9).fill([])for (let i=0; i<9; i++) {...

2020-03-05 11:47:07 164

原创 算法题:N 皇后

leetcode 地址:N 皇后好几天没更新了,一是确实被这题卡住了,二是最近上线的东西有点多。思路采用 DFS 遍历的方式,先按行一路往下冲,当某行没有位置可放的时候,再调整下上一行的皇后位置,继续往下冲。这道题我觉得有 3 个关键点:找出限制条件,也就是每放一个皇后,哪些地方是不能再放了。经过分析可以看到,一个皇后会控制三个方向,我们称之为列、撇、捺。限制条件的传递,每一行得记...

2020-03-04 10:46:32 119

原创 微信开发之网页授权的坑

微信网页授权的域名只能有2个,项目大了以后注意提前规划。授权的域名不能带下划线。

2020-03-01 16:00:05 265

原创 算法题:二叉树的层次遍历

leetcode 地址:二叉树的层次遍历思路方法一:广度优先方法二:深度优先代码➥ JavaScript(方法一)/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * ...

2020-02-28 10:02:35 272 1

原创 算法题:Pow(x, n)

leetcode 地址:Pow(x, n)思路方法一:暴力破解,时间复杂度 O(n)O(n)O(n)方法二:分治思想,也叫快速幂,时间复杂度 O(log⁡2n)O(\log_2n)O(log2​n)方法三:利用位运算右移一位代表除以 2 的特性进行计算,时间复杂度也是 O(log⁡2n)O(\log_2n)O(log2​n)代码➥ JavaScript(方法二)var myPo...

2020-02-27 14:00:24 193

原创 算法题:二叉(搜索树)的最近公共祖先

leetcode 地址:二叉搜索树的最近公共祖先思路有两种情况会成为公共祖先:第一个分叉点当前节点等于两个节点中的一个代码➥ JavaScript/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this....

2020-02-26 16:43:43 142

原创 不是公众号里的页面如何在微信里面获得用户的基本信息?

参考资料:微信网页开发 - 网页授权通过微信客户端打开的网页,如果想获取用户的 openId,或者进一步获取用户在微信上的个人信息,你可以这么做:将网页的 URL 通过 encodeURIComponent 进行转码将转码后的地址通过替换 ${url} 拼入下面的字符串:https://open.weixin.qq.com/connect/oauth2/authorize?appid=...

2020-02-25 15:45:33 276

原创 算法题:验证二叉搜索树

leetcode 地址:验证二叉搜索树对于二叉搜索树中的某个节点,这个节点的左子树的值都小于该节点,右子树的值都大于该节点。思路方法一对树进行中序遍历,看是否得到一个有序的数组方法二递归每个节点,看是否满足二叉搜索树的要求。这个方法的关键是要理解节点分成四种类型:自身是左节点,父节点是左节点,则取值范围是 [−∞,val)[-∞, val)[−∞,val)自身是右节点,父节...

2020-02-25 14:38:59 56

原创 在 macOS 上学 Nginx(1)—— 搭建静态资源 Web 服务器

开源版的 Nginx 是在 https://nginx.org/en/docs/,别被搜索引擎引导去了 https://nginx.com,后者是商业版的 Nginx。安装 Nginx确保机器上已安装 Homebrew,然后执行下面的命令安装 Nginxbrew install nginx安装完成之后执行 nginx -v, 有版本号输出说明安装成功。通过 brew 安装的 Ngi...

2020-02-24 14:20:56 177

原创 算法题:有效的字母异位词

leetcode 地址:有效的字母异位词思路假设有字符串 s 和 t:将两个字符串里的字母排序,排完之后看看两个字符串是否完全相等,时间复杂度 O(nlog⁡2n)O(n\log_2n)O(nlog2​n)(快快速排序)。利用一个 Map 结构,key 是字符串中出现的字母,value 是字母出现的次数。其中 s 中出现的字母对于 value 是 +1,t 中出现的字母对 value ...

2020-02-21 15:45:56 96

原创 算法题:滑动窗口最大值

leetcode 地址:滑动窗口最大值思路维护一个长度最大为 k 的数组 queen(里面存 index),让输入数组 nums 中的元素依次进入该数组。每有新元素进入的时候,对数组进行维护:删除比该元素小的数值的索引,将当前元素的索引存入数组末尾。这样可以做到数组第一个元素永远是最大的。例如:nums = [1,5,4,9,7,8,6],k=3,数值进出 queen 的过程如下:i =...

2020-02-20 14:32:49 192

原创 我的 UA 检测竟然被 macOS 上的 QQ 浏览器绕过了!

项目里用了一个第三方的浏览器检测模块,主要粗略判别用了何种浏览器(IE、Chrome、FireFox、Safari、Oprea 等,国内常用的 QQ 浏览器和 360 浏览器都会归类为 Chrome)。但最近接到客服反馈,说有用户的 QQ 浏览器通不过检测。沟通后,知道客户的 QQ 浏览器是 macOS 版本的,叫做 QQ 浏览器 Lite。浏览器特性检测不通过,基本判断是 UA (navig...

2020-02-19 10:36:52 904

空空如也

空空如也

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

TA关注的人

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