自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Promisify函数

函数promisify(fn, reverse)fn 有回调函数作为参数的函数reverse 默认False。当fn的回调函数参数在前时(如setTimeout),设为True。源码function promisify(fn, reverse) { if ({}.toString.call(fn) !== '[object Function]') thro

2018-02-06 21:16:14 1797

原创 Express异常捕获

在使用Express框架设计web应用时,一定会遇到异常处理问题。 因为用户数据或代码自身问题,常常引起请求时,控制器内部异常,res返回不能被执行,前台表现为请求“卡死”。1 处理 Exception1.1 Express 错误处理中间件为了避免这种情况,Express有“错误处理中间件”的机制。const express = require('express');

2018-02-06 15:55:15 3673 1

原创 用async-await实现类似Promise.all()的执行效果

使用函数:awaitAll(fn1, fn2, fn3...)async function awaitAll(...fnArr) { if ({}.toString.call(fnArr[0]) === '[object Array]') { fnArr = fnArr[0]; } const fnNum = fnArr.length; const promiseArr =

2018-02-06 11:04:16 5547 1

原创 模拟器+Fiddler抓包安卓应用

1、使用任意一款安卓模拟器安装应用。 2、安装Fiddler,并勾选options->connections->allow remote computers to connect 3、在安卓模拟器的设置中,设置默认wifi,高级设置->使用代理。代理服务器ip为本机ip,端口8888。保存 4、这时,使用应用,即可在Fiddler中看到请求。

2018-02-05 20:57:34 766

原创 MySQL非安装版部署

1. 解压 2. 环境变量 3. 根目录创建my.ini[mysql]# 设置mysql客户端默认字符集default-character-set=utf8 [mysqld]#设置3306端口port = 3306 # 设置mysql的安装目录basedir="D:\mysql-5.7.17-winx64"# 设置mysql数据库的数据的存放目录datadir="D:\mysq

2018-02-05 15:08:20 276

原创 MongoDB中Date对象和ObjectId对象互转

function time2id(time) { return mongoose.Types.ObjectId((~~(+time/1000)).toString(16) + '0'.repeat(16));}function id2time(id) { return new Date(parseInt(id.toString().substring(0, 8), 16) * 1

2018-02-01 15:08:39 2087

原创 git技巧

1、本地init的库,链接到git git remote add origin [email protected]:Pingze-github/git-cmd-test.git git push -u origin master2、编辑到一半,临时需要pull一下(或切分支点),又不想commit git stash git pull git stash pop3、不小心add .了,撤销,保留

2018-02-01 15:04:08 165

原创 Javascript数据类型转换---简易写法

基本转字符串: ''+obj 转数字: +obj 转整数: ~~obj 转布尔值: !!obj技巧+new Date() = new Date().getTime() ~~'123.2' = ~~123.2 = 123 ''+[1,2,3] = '1,2,3'注意+'123.2KB' // NaN~~'123.2KB' // 0parseInt('

2018-01-17 20:59:05 212

原创 如何加快Vue单页加载(和打包)速度

在使用个人境外服务器运行vue项目时,会遇到打包的vendor.js过大而导致无缓存加载时,页面会空白数秒之久。 解决这个问题有2个思路:1是通过压缩混淆代码、gzip实际减小代码大小;2是将部分不会改动的文件提出,放到CDN上。 这里列举几种解决方案。(uglify由于vue-cli已默认包含,这里不写)#1 gzip使用gzip压缩vendor.js可以有效减

2018-01-04 13:54:41 12796

原创 windows平台安装gcc等编译工具

这里选用MinGW-w64的Msys2版#1 下载安装MinGW-w64 Msys2MinGW-w64地址:http://www.mingw-w64.org/doku.php/download。选择Msys2。 或者直接到Msys2官网http://www.msys2.org/下载64位版本。 直接安装。#2 配置pacman源 pacman是Msys2自带的包管理工具在文件…/msys

2017-11-10 22:24:40 537

原创 使用GO开发桌面GUI程序

使用GO来开发桌面GUI程序,个人感觉有几个好处:静态编译后只生成单个文件。实现小型和工具型程序不需依赖,易于分享。直接编译为exe等可执行文件,不用像PyQt、Electron那样再打包。跨平台编译能力,同时支持多个跨平台库。并发优化,协程支持,开发多线程GUI程序,比Python效率更优。语言简单,开发难度较C++小。常用的GO-GUI库github.com/andlabs/ui

2017-11-09 21:29:16 49733

原创 Docker实践记录

创建容器(并执行脚本)docker run -d --name [容器名] -v [主机脚本所在目录]:[容器映射目录] -w [容器映射目录] [镜像] [...执行脚本的指令] docker run 命令基本结构: docker run [参数] [镜像] [命令] 查看记录 查看所有记录 docker logs [容器]查看最近N条记录 docker logs [容器]

2017-11-03 14:03:08 278

原创 Ubuntu安装dockerCE

参考https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository步骤1. 安装https支持、add-apt命令支持等前置sudo apt update sudo apt-get install apt-transport-https ca-certificates curl so

2017-11-03 11:51:17 252

原创 Ubuntu配置node开发环境

1. 安装nvmcurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bashexport NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" The script clones the nvm repos

2017-11-03 11:01:54 323

原创 使用Xshell控制虚拟机linux

环境虚拟机:Vmware workstation 14 Pro镜像:ubuntu-16.04.3-server-amd64.iso终端:Xshell 5步骤Vmware中安装Ubuntu系统(确认网络模式为默认的NAT模式)在Ubuntu中安装启动openssh如下: sudo apt-get install openssh-server sudo /etc/init.d/ssh s

2017-11-03 10:47:19 469

原创 新建一个Vue项目需要做的

1. 建立一个Vue项目vue init webpack appname2. 设置编译结果目录a. 修改/config/index下的exports.build.index值为主html文件的路径。 b. 修改/config/index下的exports.build.assetsRoot值为资源文件(css/js)的路径。3*. 关闭产品环境下的SourceMap生成修改/config/index

2017-11-02 19:28:20 466

原创 虚拟机Debian7.7-amd64-standard安装VMware-tools

1、挂载镜像debian的standard(无桌面)版本不会自动挂载装有VMware-tools的iso,需要手动挂载:```mkdir /mnt/cdrommount /dev/sr0 /mnt/cdrom -o ro```显示 ```/dev/sr0 is already mounted on /mnt/cdrom```表示成功挂载。2、拷贝和解压接下来将安装文

2017-09-12 15:23:45 558

原创 Node.js方法错误自动重试的实现

在使用Node.js实现爬虫、检测等功能时,经常会遇到大量网络请求的情况,这时很容易因为超时而使得请求失败。为令结果正确,我们一般会设置一定的失败重试次数,以避免因网络波动引起的失败。若多次尝试最终失败,才抛出错误。下面上一段代码:/** * 包裹方法,使其自动错误重试 * 只能包裹返回Promise的方法 * 返回promise,可以获取成功的返回值,或最后失败的err * 需要运行环境支

2017-08-19 17:46:03 3017 1

原创 利用Mongodb聚合(aggregate)来进行复杂查询的技巧

1、以多个key作为唯一键,分组查询比如项目和主机地址(ip)有交叉关系,需要按ip和proj都不同的方式分组取出数据。 利用$group的_id对象分组,可以再用$project重命名。db.Model.aggregate([ { $group:{ _id: { ip: '$ip', proj: '$proj' } }

2017-08-05 20:59:00 4032

原创 JS利用apply方法,将数组直接当做参数传给函数

利用apply()方法。语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 比如求一个数组[1,2,3,4,5]的最大值可以写:let arr = [1,2,3,4,5];

2017-08-05 20:06:52 5408 1

原创 Windows下Node.js使用child_process模块调用系统命令的编码问题

看代码:const cp = require('child_process');const iconv = require('iconv-lite');let pid = 2756;cp.exec(`tasklist /FI "PID eq 2756"`, {encoding: 'buffer'}, (error , stdout, stderr) => { if (erro

2017-08-05 16:49:45 4878

原创 很简单的Vue.js瀑布流布局

vue.js作为数据驱动视图的框架,做有大量同类元素的页面是很方便的。实现瀑布流布局也很简单。将页面分为N列。(可以用flex布局)需要渲染的数据列表在filters里预处理。新建一个N项嵌套列表,前N个直接对应放进取,后面的每个放在总高度最小的那一项列表。分列渲染。

2017-08-04 16:53:41 10452 2

原创 一个js函数,读取类似nagios配置格式的cfg文件,转为对象

function readCfg(content) { let arr = []; let defines = content.split('}'); for (let define of defines) { if (define.trim() !== '') { let obj = {}; let lin

2017-07-15 17:50:05 521

原创 虚拟机ubuntu17.04安装vmware-tools时,显示找不到ifconfig的解决办法

一般网上都是让我们去安装ifconfig,也就是net-tools包。但现在这个包已经被废弃,不能安装了。解决办法很神奇,就是在安装vmware-tools显示…ifconfig…时,输入“yes”,再回车。输入别的都不行!实践是检验真理的唯一标准。

2017-07-13 16:56:45 9217 3

原创 使用Promise和async-await实现的一个异步遍历+同步执行任务的实例

假设我们需要做N个同样的检测任务,检测完成后会将结果存入数据库。 我们希望每个检测是同步完成的,完成后再进行储存。 同时,我们又希望这些任务一起开始执行。 不需要检查这些任务何时完毕。/** * 检测一个接口,返回检测结果 * @param host * @param port * @returns {Promise} */function detectOnePromise(hos

2017-07-13 11:38:50 6086

原创 Mongodb权限设置

特别说明,本文内容仅根据Mongodb Manual 3.4。在3.6版本下测试有效。添加root管理账户use admindb.createUser({ user: "root", pwd: "root", roles: [role: "root"], customData: "root user with all permissions."}) Built-In Rol

2017-07-11 11:00:20 671

原创 WebStorm使用Babel自动转换ES6代码为ES5代码

一、安装babel和前置组件npm install -g babel-clinpm install -g babel-preset-envnpm install -g babel-preset-es2015二、配置webstorm设置中,找到File Watcher。增加一个Babel类型的,正确添加Program值。三、配置babel项目目录下新建一个.babelrc文件。内容:{ "pr

2017-07-09 17:28:58 869

原创 让网页中footer总在底部的有效办法

DOM结构:html body  #wrap   #header   #main  #footer-spacer  #footer其中,主要内容放在#wrap中。#footer-spacer是为了占位的透明元素。设置css:html,body{ min-height: 100vh; overflow: auto; padding: 0; margin: 0; bird

2017-07-09 14:48:44 464

原创 Nginx映射项目外静态资源的实例

关键字含义root 值为本地目录路径。以此值作为location请求路径的根目录。alias 值为本地目录或文件路径。 将请求路径中location部分改写为其值。rewrite 值有两个,一个是匹配路径的正则,一个是改写的拼接字符串。作用是将url中匹配前者的部分,改写为后者。实例1需求: 请求/upload/images/bird.jpg,返回项目外E:/raid/www.my.co

2017-07-09 13:53:07 5767

原创 js计算滚动条长度&位置,用于自己绘制滚动条

js计算滚动条长度&位置的方法,用于自己绘制滚动条。

2017-06-27 20:16:33 6689

原创 使用Python中os读取含特殊字符路径的简单办法

使用python的os库读取文件路径时,有时会遇到文件名包含特殊字符的情况,导致读取到的路径与实际路径不一致。比如文件--- -Ì-¼-æ100-N.jpg,直接读取为J:\\Japan's poster2\\---?-\xa8\xac-?-?100-N.jpg。这是因为os库的默认文字编码格式非Unicode导致的。解决的办法很简单,定义路径时定义为Unicode。如os.walk(u'./adi

2017-06-14 13:47:55 4348

原创 在Ubuntu下搭建SublimeText3 - C#开发环境

使用Sublime作为开发工具Sublime Text 3 一直是笔者喜欢用的轻量级开发工具。作为一个编辑器,它轻量便捷,功能丰富,颜值还颇高。其实 Sublime Text 3 还可以作为方便快捷的IDE,在里面直接运行程序(使用Ctrl+B快捷键更快哦)。在进行轻量级开发和测试时很方便。但是,想要用它来做开发,需要一点配置的过程。Sublime Text 3 运行程序,实质上是调用系统命令,并将

2017-04-29 20:21:38 1273

空空如也

空空如也

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

TA关注的人

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