-
前端如何处理后端接口返回的gzip压缩的数据?
因后端返回的数据量较大,后端使用 gzip 压缩数据,前端拿到接口返回的压缩数据进行解压。如图所示我们采用pako处理压缩数据安装npm install pako使用// 导入pakoimport pako from 'pako'// b64Data-->传入加密的数据进行解密function unzip (b64Data) { let strData = atob(b64Data) // Convert binary string to character-number arr...…
-
有效括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合栈法var isValid = function (s) { const rightMap = new Map([ ["(", ")"], ["[", "]"], ["{", "}"], ]); let stack = []; for (let index = 0; index < ...…
-
获取一个出现次数最多的路径
天天搞业务,真是发现一到面试算法环节就容易脑子先嗡嗡空白一下,然后再告诉自己冷静冷静,不慌,可以的可以的……好了,进入正题,今儿小米一面一道题目如下。 比如有以下数组,同一个用户按照数组顺序,从u1->u2, u2->u3 等路径,统计出出现次数最多的路径。(只考虑一步即可,一开始没理解题目,还考虑了u1->u2->u3,费了不少时间)const arr = [ {user: 'A', url: 'u1'}, {user: 'B', url: 'u1'...…
-
判断字符串a是否被包含字符串b中,并返回第一次出现的位置
昨天去腾讯一面遇到这么一个题目 判断字符串a是否被包含字符串b中,并返回第一次出现的位置(找不到返回-1,不允许使用indexof)看到这个第一念头想用正则实现,但是忽然忘记了正则怎么动态传参。于是放弃,就中规中矩使用遍历实现。遍历实现现场实现的代码逻辑差不多是这样的,使用2次遍历实现。function indexOf(str1, str2) { for (let index = 0; index < str2.length - str1.length; index++) {...…
-
发布订阅模式 与 观察者模式区别
今天复习vue双向绑定原理时,一时半会想不起,发布订阅模式跟观察者模式的区别。下面写了个小demo记录一下。发布订阅模式class Event { constructor () { this.listeners = {} } on(key, listener) { if (!this.listeners[key]) { this.listeners[key] = [] } this.listen...…
-
GitHub无法提交 remote: Support for password authentication was removed on August 13, 2021.
问题今儿提交代码发现终端报错remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more i...…
-
GitHub无法访问、443 Operation timed out
问题提交git出现443超时错误fatal: unable to access 'https://github.com/xwLyc/xwLyc.github.io.git/': Failed to connect to github.com port 443: Operation timed out经过各种百度谷歌搜索要求设置git代理,我用的clash,代理端口7890git config --global https.proxy http://127.0.0.1:7890git con...…
-
组内业务开发总结
埋点上报失败问题 killwebview客户端关闭当前webview, 导致埋点上报失败问题。 埋点上报为异步请求,需等1000ms延时执行killwebview。 埋点上报时,若使用 window.location.href 跳转时,也需要延时执行。 部分情况nativeOpen新开webview空白最好使用encodeURI对url进行编码,不然地址有中文字符时,跳转有问题。const wapUrl = encodeURI(`${window.locat...…
-
commitizen 安装后执行 git-cz 弹出 vim窗口
commitzen和cz-conventional-changelog需要搭配使用,一开始以为不需要写入log记录,就没安装,导致执行git-cz命令时,并未出现想要的交互效果。配置安装好commitzen和cz-conventional-changelog之后,还需要添加一些配置:package.json 中添加:"scripts": { "commit": "git-cz"},"config": { "commitizen": { "path": "node_modules/...…
-
【check-es6】对构建后的产物进行es6语法检测
背景由于出现过两次线上事故,是由于引入的第三方npm包,里面还有es6语法,而webpack打包会忽略nodemodules的编译,会导致项目在低版本浏览器无法解析es6语法,出现项目崩溃,移动端页面白屏等重大事故。于是开发了 check-es6 脚手架,并应用到所有移动端项目中,至少检测出10次问题,避免了许多线上事故。解决思路为了从根本上避免这种事故再次发生,我们最终讨论结果,对构建的产物进行关键字const,let,=>等字段检查,校验项目build之后的产物是否存在低版本浏览...…
-
nginx 笔记
访问nginx目录地址ps -ef | grep nginxCentos查看端口占用比如查看80端口占用情况使用如下命令:lsof -i tcp:80列出所有端口netstat -nutlplocation的匹配种类有哪些?格式:location [ 空格 | = | ~ | ~* | !~ | !~* | @ ] /uri/ {}解释:= 表示精确匹配,如果找到,立即停止搜索并立即处理此请求。~ 表示执行一个正则匹配,区分大小写匹配~* 表示执行一个正则匹配,不区分大小写匹配!...…
-
process.cwd()和__dirname的区别
process.cwd()返回当前工作目录。 如:调用node命令执行脚本时的目录。__dirname返回源代码所在的目录。eg:对于d:\dir\index.js。console.log(`cwd: ${process.cwd()}`);console.log(`dirname: ${__dirname}`); 命令 process.cwd() __dirname node index.js d:\dir ...…
-
fs模块基础介绍
fs模块基础介绍fs.stat 检测是文件还是目录const fs = require('fs')fs.stat('hello.js', (error,stats)=>{ if(error) { console.log(error) } else { console.log(stats) console.log(`文件:${stats.isFile()}`) console.log(`目录:${stats.isDir...…
-
No files matching the pattern '/xxx/xxx/...' were found.
使用.stylelintignore添加忽略文件校验,在lint-staged执行校验规范时,报错✖ stylelint --fix:Error: No files matching the pattern "/Users/lyc/Desktop/tal/monkey-wukong-wap/src/pages/reportActivity/assets/iconfont/iconfont.css" were found. at /Users/lyc/Desktop/tal/monke...…
-
Vue.js 使用 Swiper 在 iOS < 11 时出现错误
背景花呗一期上线后,一个ios极低系统版本用户(6p ios10系统)反馈点击购买时,没有反应,无法跳转到付款页面,重启手机也不行。事件起因花呗分期使用了swiper插件实现滑动选择卡片效果,而swiper引入包(dom7,ssr-widow)没有去做babel处理,就会造成 const , let 等变量在低版本浏览器不支持的情况,直接js异常。解决方案:对dom7 ssr-window 进行babel处理.Vue CLI 2.x 下,在 build/webpack.base.confi...…