更多文章请戳VSCode插件开发全攻略系列目录导航。 命令我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下。 context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => { vscode.window.showInformationMessage('... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 命令我们在前面HelloWord章节中已经提到了命令写法,这里再重温一下。 context.subscriptions.push(vscode.commands.registerCommand('extension.sayHello', () => { vscode.window.showInformationMessage('... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 package.json在详细介绍vscode插件开发细节之前,这里我们先详细介绍一下vscode插件的package.json写法,但是建议先只需要随便看一下,了解个大概,等后面讲到具体细节的时候再回过头来看。 如下是package.json文件的常用配置,当然这里还不是全部: { // 插件的名字,应全部小写,不能有空格 ... 阅读全文
更多文章请戳VSCode插件开发全攻略系列目录导航。 写着前面学习一门新的语言或者生态首先肯定是从HelloWord开始。 您可以直接克隆我放在GitHub上vscode-plugin-demo 的代码到本地,然后尝试修改代码并运行,也可以使用微软官方的脚手架vscode-generator-code来生成项目结构,脚手架的使用我们后面再来介绍,先来熟悉一下项目结构。 HelloWorld项... 阅读全文
常规方法清除浏览器DNS缓存地址栏中输入: chrome://net-internals/#dns ,然后点Clear host cache按钮。 清除套接字缓存在地址栏中输入: chrome://net-internals/#sockets ,然后点Clear idle sockets按钮和Flush socket pools按钮。 清除操作系统DNS缓存按Win+R系统热键打开运行窗... 阅读全文
js-xlsx 介绍由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。 官方github:https://github.com/SheetJS/js-xlsx本文配套demo在线演示地址:http://dem... 阅读全文
概述常见排序算法: 傻瓜排序这个傻瓜排序是我自己给起的名字,就是按照人的常规思维进行排序,不考虑任何时间复杂度和空间复杂度。话说如果给你一个数组让你手工排序,你的思路会是什么样的呢?我想你肯定是这样的: 整体用肉眼扫描一遍,找到最小的,插入结果里面,然后再扫描剩下的数字,找到最小的,再次插入结果里面,直至原始数组变空,是的,没错,这里说的傻瓜排序就是这个思路。 /** * 傻瓜排... 阅读全文
兼容性较好的3种方法方法一:float+overflow实现:左边浮动+固定宽度,右边overflow:hidden即可,注意,右边不要设置width:100%。由于设置overflow:hidden并不会触发IE6-浏览器的haslayout属性,所以若要兼容IE6需要设置zoom:1。 原理:overflow:hidden会触发BFC,BFC不会浮动元素重叠,因此会重新计算宽度。 <... 阅读全文
前言所有人都知道,localStorage和sessionStorage的最大区别是生命周期,一个永久,一个仅针对一个会话期间有效。那么,到底什么是一个会话?多个标签页之间的数据是否会共享呢? 后台的session我们对会话session的认识一般都是从后台的session开始的,比如Java的session,它是基于往cookie写入一个JSESSIONID来实现的,所以,只要你不是打开一个隐... 阅读全文
老生常谈的问题,虽然有些不太常用,但还是总结一下。 图片法这种方法利用了图片没有跨域限制的特点,仅适用于不需要获取服务端响应的场景,如日志统计等,且只能以GET方式请求,一般很少用。 var img = new Image();img.src = 'http://other.domain.com/log.png'; JSONPXmlHttpRequest有跨域限制,但是script标签没有,... 阅读全文
正文网上很多写法都有点问题或者难以理解,下面这一张图说明所有问题: 补充说明: defer 和 async 在下载这块儿是一样的,相较于HTML解析都是异步的;它俩的差别在于脚本下载完之后何时执行,async什么时候下载完什么时候执行,并且会中断HTML解析,defer则在HTML解析完成之后,DOMContentLoaded 事件触发之前执行。async只能用于对其它JS没有任何依赖... 阅读全文
本文demo:http://demo.haoji.me/2018/04/28-webworker/ JS是单线程语言由于JS设计的初衷就是用来进行一些简单的用户交互以及DOM操作,为了避免复杂性,从一开始JS就被设计成一门单线程语言,现在如是,以后也不会变。 然后正是由于单线程的缘故,当我们需要在前端运行一些大运算量的代码时,浏览器肯定会陷入卡顿。为了解决前端大运算量问题,HTML5引入了We... 阅读全文
背景前阵子突然发现博客的目录导航只要一滚动就会消失,其中有一段这样的代码: $(window).on('scroll', function(e){ var top = document.body.scrollTop; if(top <= 100) $('.markdown-nav-wrapper').addClass('hide'); else if(localStora... 阅读全文
概念前缀表达式(Prefix Notation)是指将运算符写在前面、操作数写在后面、不包含括号的表达式,而且为了纪念其发明者波兰数学家Jan Lukasiewicz所以前缀表达式也叫做波兰表达式。比如- 1 + 2 3 后缀表达式(Postfix Notation)与之相反,是指运算符写在操作数后面的不含括号的算术表达式,也叫做逆波兰表达式。比如1 2 3 + - 中缀表达式(Infix N... 阅读全文
前言作为一个前端程序员,难免会有一些专属自己的小扩展,没必要每一个都发到Chrome应用商店去,虽然可以勾选“开发者模式”来运行本地插件,但是每次启动都会有一个烦人的“请停用以开发者模式运行的扩展程序”提示,这个提示有多烦人,接触过的人都知道,启动的时候它不立即提示,等过了几秒钟等你打开某个网页开始执行某些操作时它突然弹出来干扰你的操作,真是苦不堪言!所以总想着如何把它给去掉。 解决方法网上... 阅读全文
方法一lsof -i:端口号,这个很简单,也很好记,比如查看80端口被谁占用lsof -i:80: 很明显被nginx占用了。 方法二netstat -tunlp可查看当前活动网络连接(查看所有为netstat -anp): [root@iZ94i7kwlagZ ~]# netstat -tunlpActive Internet connections (only servers)Pro... 阅读全文
正文iptables一般有2种配置方式,一种是直接在iptables后面跟一些命令,然后执行service iptables save保存到配置文件夹,一种是直接修改配置文件,建议始终都修改配置文件,因为使用自动保存功能会把配置顺序打乱,一些备注也搞没了。 配置文件路径为/etc/sysconfig/iptables,默认情况下是没有这个文件的,此时可以随便输入一条规则,然后保存: iptab... 阅读全文
背景早上到公司发现个人网站打不开,一直在转,用xshell连接服务器,虽然能连上,但是卡到爆,处于完全无法操作的状态,登录阿里云后台发现CPU使用率持续超过45%: 可怜的1M带宽也被全部占用(也就是截图中的1122kbps): 想查看是哪个进程占用这么大的CPU和带宽,但是带宽被未知程序占用,xshell完全连不上,怎么破!最后只能强制重启服务器,重启之后CPU和带宽立马恢复正常,网... 阅读全文
背景今天早上Win10企业版自动更新了,更新之后发现桌面、资源管理器等很多地方字体变小了,小得我实在受不了: 尝试通过修改缩放来实现,但是这种方式整个电脑都会整体放大,包括网页字体,这不是我想要的: 记得之前是通过下面这种方式修改桌面字体大小的: 但是更新之后的Win10根本找不到这个地方,即使找到了控制面板也没有: 修改方法无意中在网上找到了直接修改注册表的方法,记录如下... 阅读全文
前言曾经对这一块不知道多熟悉,一年多没接触移动端开发,竟然连远程调试怎么打开都不记得了,所以看来啊,任何东西无论多简单都要做笔记,这是这的! 下面开始其实真的非常简单! 第一步,开启USB调试模式这个就不用细说了,是个人都知道怎么开启。 第二步,连接手机和电脑连上基本就不用管了,驱动都不用装,这个后面再细说。 第三步,手机使用Chrome访问任一网站也可以不使用Chrome,但是使用Chr... 阅读全文
正文直接上代码: var obj = {a:1, b:2};console.log(obj);obj.b = 3;console.log(obj) 效果如下: 收起时显示的还是旧的值,展开时才是新的,最近就因为这个问题坑了我半天,后来才发现代码没问题,是Chrome控制台显示问题。水文一篇,记录下来! ... 阅读全文