每周学了啥--2018.11.18

一周过去了,从大学到工作一直有个习惯就是把每周琐碎、临时记下来的东西总结回顾一下,这两个月真的好忙好忙断了好久,好多不清楚的东西还是不清楚,重新踏上我的旅程吧~

JS

一、JS 如何实现数组或对象的深拷贝

无意间在 SF 上看见一个同学问 JS 如何实现数组或对象的深拷贝,往下划了几个答案都挺常规,用 lodash 哇,JSON.parse()&JSON.stringify()[].concat()递归 等方式,不过有一条对数组的实现让我耳目一新(是我知识太浅薄了~): 用 ES6 的结构语法实现深拷贝。

阅读全文

一次 Node.js 性能优化总结

很少总结 Node.Js 相关的调试以及优化技巧,正好最近在做性能调优并取得了不错的效果,借此机会总结和分享一下

Teambition 是一款实时协同的跨平台应用,相关的业务接口也是处于读多写少的场景,因此主要的性能瓶颈也是出现在接口平均响应速度慢、不稳定等方面,此次我将结合 Teambition 实际业务从以下几个维度来回顾总结优化的整个过程:

  • 我们的接口是如何变慢的? 慢在哪里?
  • 接口性能和并发操作的连带关系?
  • 通过 Chrome:instpact 进行代码 Debug 及性能分析?
  • Node.Js 事件循环模型及单线程为基础带来的优势与不足,如何避免及解决?

阅读全文

基础总结--数组

撰写中

阅读全文

为你的网站启用 Https

阅读本篇文章以前,你需要具备基本的服务器运维知识,包括不限于: 基本 Shell 命令,服务器选择及配置,Nginx 基本操作…

序言

都已经 8102 年了,为什么要使用 HTTPS 我就不记录了,相关资料网上一搜一大堆,总之,用 HTTPS 准没错对吧?

为什么要写一篇文章专门讨论启用 HTTPS 这个问题呢,原因有几点:

  • Chrome 69 以后,默认 HTTPS 的网站才不会出现安全风险提示,否则在地址栏永远会有一个感叹号,心里难受
  • 了解一下准没错吧?
  • 了解了,实践一下更没错吧?

阅读全文

Node.js 知多少

#序言


自从开始接触 Node 起,就离不开查阅大大小小的书籍、课程等等,大部分书籍和网络教程其实多多少少都是讲到一些框架或者生态里的各类工具库的使用(生态是 Node 引以为‘豪’的一点),偏向于速成,当然,我认为 Node 无论是在学习成本还是开发效率上都是数一数二的。

这些途径的最终目的都是好的,也是一个帮助初学者快速入门的办法: 学会一门语言(Javascript、Typescript…),通过框架的使用(Express、Koa…),快速上手搭建一个能够正常运行的Web应用,整个过程并不是很难,也容易让人产生满足感(至少不会像 Java 那一套得折腾老半天)。

阅读全文

Shell 中的极品-- Zsh

title

用了很久的 zsh,一直感叹它的强大与便捷,很早就打算记录一篇安装和使用 zsh 的心路历程,工作忙一直在往后拖(借口-。-)

知乎传送门: 为什么说 zshshell 中的「极品」?

# zsh 是什么?

Z Shell(Zsh) 是一种Unix shell,它可以用作为交互式的登录shell,也是一种强大的shell脚本命令解释器。Zsh可以认为是一种Bourne shell的扩展,带有数量庞大的改进,包括一些bash、ksh、tcsh的功能。

简而言之,就是 shell 脚本语言的一种扩展与加强。

# zsh 有哪些功能?

From Wiki

  • 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。
  • 在用户启动的所有shell中共享命令历史。
  • 通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。
  • 改进的变量与数组处理。
  • 在缓冲区中编辑多行命令。
  • 多种兼容模式,例如使用/bin/sh运行时可以伪装成Bourne shell。
  • 可以定制呈现形式的提示符;包括在屏幕右端显示信息,并在键入长命令时自动隐藏。
  • 可加载的模块,提供其他各种支持:完整的TCP与Unix域套接字控制,FTP客户端与扩充过的数学函数。
  • 完全可定制化。

阅读全文

Linux--单双引号之分

插曲

今天下午同事突然抛出一个问题,shell 中我想 grep 这么一段话:

1
scenarioFieldConfig's _id

有哪几种方式可以实现呢?

阅读全文

Git 命令巧用

重置(reset)某次提交改动的文件

1
git checkout commitId -- file1 file2 file3

阅读全文

是时候了解一下「IPFS」

背景

IPFS (InterPlanetary File System) 中文名是 「星际文件系统」,由 Juan Benet 在2014年5月份发起,Protocol Labs 实验室维护和发展。

IPFS本质上是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议,目标是补充甚至取代过去20年里使用的超文本媒体传输协议(HTTP),希望构建更快、更安全、更自由的互联网时代。

阅读全文

从零搭建高可用NodeJs后端服务(一)

coming soon!

阅读全文

推荐Mac下常用软件(开发、设计), 文内有惊喜

常用的开发工具:

阅读全文

你不知道的 Git Log

原文链接

假设您正在与多个开发者共同维护管理复杂的 git 代码库,那您可能会使用GitHubBitBucket 等工具有深入研究提交历史,并且希望从中找出分支以及合并 issue 的相关问题。

阅读全文

ES6之Proxy-用20行代码写一个API SDK

ES6之Proxy-用20行代码写一个API SDK

目的

ES6 里新增了很多概念及语法,有很多我们日常开发都会用到,比如数组对象的解构,箭头函数,class 等等,但是类似 Proxy 这样的特性却很少用到(个人观点), 借这个机会, 简单的过一遍 Proxy 相关的概念及适用场景。

阅读全文

细说Javascript中的“指针”

故事背景

最近有朋友问我为什么我运行js代码会抛出如下异常

1
2
3
4
const Hoek = require('hoek');
^^^^^
SyntaxError: Use of const in strict mode.
}

阅读全文

Nodejs通过tb-excel自定义解析Excel

众多的库中,能够很轻松的找到解析xlsx, csv格式文件的第三方库,并且有许多质量不错的库,如 node-xlsx , excel-parser, excel-export等,都能够帮助我们解析或者生成xlsx, csv文件,但是大部分都局限于文件

阅读全文

Nodejs导出excel实战

我们都知道nodejs的内存由于v8内存分配机制的原因十分有限

64位系统也只能占1.4G左右, 因此当我们要生成或者读取大文件的时候内存的吃紧会给我们造成极大的困扰, 遇到这样的情况Node给了我们一个很好的解决方法 stream

阅读全文

Nodejs与nginx的完美搭配

引言


node自己本身可以作为服务器进行驱动,但是node本身对文件的处理能力并不是很好,所以当我们的生产环境中应尽量使用nginx来处理静态的资源以及反向代理,同时也解决了node分布式以及负载均衡的相关问题。

阅读全文

mongodb诊断工具explain()最新API详解

###起因


说道explain()我就不得不吐槽一下被坑的经过(假设你已知晓索引相关概念)

在数据量和吞吐量越发庞大的今天,优化查询速度是提高系统性能的一个关键点,而获取这类相关信息的重要诊断工具之一就是explain(),引用用《MongoDb权威指南》书中的解释:

通过查看一个查询(find)的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的。
最常见的输出有两种类型:使用索引的查询和没有使用索引的查询

阅读全文

使用Pm2躺着实现负载均衡

前言


源码:https://github.com/Unitech/pm2

这里的pm2并不是大气污染物啊

事实上,pm2 是一个带有负载均衡功能的Node应用的进程管理器,Node实现进程管理的库有很多,forever也是其中一个很强大但是也相对较老的进程管理器。

阅读全文