一直对node.js与npm感觉很陌生,最近需要用到了,所以这里学习一下。以下文章主要参考了ConardLi的剖析 NPM 的包管理机制。因为本人纯小白,所以会添加一些其它的知识。

现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解、各项前端工程化的配置以加快我们排查问题(相信不少同学收到过各种依赖问题的困扰)的速度。

本文从三个角度:package.json、版本管理、依赖安装结合具体实例对 npm 的包管理机制进行了详细分析。

剖析 package.json

阅读全文 »

~与^的区别

波浪号~,英文名叫 tilde。脱字符^,英文名叫caret。那么关于这两个该怎么区分呢?

What’s the difference between HEAD^ and HEAD~ in Git?中介绍如下:

Rules of thumb

  • Use ~ most of the time — to go back a number of generations, usually what you want
  • Use ^ on merge commits — because they have two or more (immediate) parents
阅读全文 »

bash与shell区别

shell有多个含义:

  • Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
  • Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

bash(GNU Bourne-Again Shell)是最常用的一种shell,是当前大多数Linux发行版的默认Shell。除了bash外,其它的shell还有zsh、sh等。

sh的全名是Bourne Shell。名字中的玻恩就是这个Shell的作者。而bash的全名是Bourne Again Shell。最开始在Unix系统中流行的是sh,而bash作为sh的改进版本,提供了更加丰富的功能。一般来说,都推荐使用bash作为默认的Shell。

阅读全文 »

本文主要参考了阿泽作者的笔记,对于不理解的地方,我会添加个人注释。

XGBoost

XGBoost 是大规模并行 boosting tree 的工具,它是目前最快最好的开源 boosting tree 工具包,比常见的工具包快 10 倍以上。Xgboost 和 GBDT 两者都是 boosting 方法,除了工程实现、解决问题上的一些差异外,最大的不同就是目标函数的定义。故本文将从数学原理和工程实现上进行介绍,并在最后介绍下 Xgboost 的优点。

数学原理

目标函数

阅读全文 »

本文主要参考了阿泽作者的笔记,对于不理解的地方,我会添加个人注释。

集成学习

常见的集成学习框架有三种:Bagging,Boosting 和 Stacking。三种集成学习框架在基学习器的产生和综合结果的方式上会有些区别,我们先做些简单的介绍。

Bagging

Bagging 全称叫 Bootstrap aggregating( Bootstrap 抽样方法) ,每个基学习器都会对训练集进行有放回抽样得到子训练集,比较著名的采样法为 0.632 自助法。每个基学习器基于不同子训练集进行训练,并综合所有基学习器的预测值得到最终的预测结果。Bagging 常用的综合方法是投票法,票数最多的类别为预测类别。

阅读全文 »

最近想学习一下LightGBM,一直对决策树不是很熟悉,所以学习一下~

本文主要参考了阿泽作者的笔记,对于不理解的地方,我会添加个人注释。

决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。

预备知识

这部分内容主要参考了决策树算法-理论篇-如何计算信息纯度

阅读全文 »

正则表达式很常用,但是规则也很复杂,每次用的时候查资料即可。我这里只是总结一下常用的正则表达式。

字符串过滤

我们常常需要根据正则表达式,来对字符串进行过滤。例如仅保留汉字、数字、字母等。用法如下例所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# coding = utf-8
import re

num = 'a¥1aB23Cqqq$我.04'
print("原字符串: ", num)
# 字符串只保留中文
num1 = re.sub(u"([^\u4e00-\u9fa5])", "", num)
print("字符串只保留中文: ", num1)
# 字符串只保留英文
num2 = re.sub(u"([^\u0041-\u005a\u0061-\u007a])", "", num)
print("字符串只保留英文: ", num2)
# 字符串只保留数字
num3 = re.sub(u"([^\u0030-\u0039])", "", num)
print("字符串只保留数字: ", num3)
num4 = re.sub("\D", "", num)
print("字符串只保留数字: ", num4)
# 字符串保留数字.和¥
num5 = re.sub(u"([^\u0030-\u0039\u002e\uffe5])", "", num)
print("字符串保留数字.和¥: ", num5)
# 字符串只保留英文和数字
num6 = re.sub(u"([^\u0041-\u005a\u0061-\u007a\u0030-\u0039])", "", num)
print("字符串只保留英文和数字: ", num6)

s = "ABC今天下雨了,abs不开心123!。??"
# 字符串只保留中文、字母、数字。
num7 = re.sub(u"([^\u4e00-\u9fa5\u0041-\u005a\u0061-\u007a\u0030-\u0039])", "", s)
print('字符串只保留汉字、英文和数字: ', num7)

输出结果如下所示:

阅读全文 »

事先声明,此文章大部分内容来源于Linux shell 命令中nohup 、&、重定向的使用。不理解的地方我会添加个人见解。

nohup 和 & 使用方法

nohup (不挂断)

nohup 是 no hung up 的缩写,意思是不挂断 。

使用 Xshell 等 Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用nohup 指令来运行指令,即使客户端与服务端断开,服务端的脚本仍可继续运行。

nohup 语法格式:

阅读全文 »

注意以下内容,主要参考了linux的top命令参数详解

简介

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。 比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

参数含义

阅读全文 »

本文主要来源于Expressive TTS(01)

Expressive TTS是目前语音合成领域中比较活跃的方向,它和单纯TTS的区别是,它更关注合成声音的风格(例如新闻播报,讲故事,解说)、情感(例如生气,兴奋,悲伤)、韵律(例如重读,强调、语调)等等。自从深度学习技术大放异彩后,语音合成模型在合成声音的自然度方面有了极大的提高(例如Tacotron,Tacotron2,WaveNet),跳词复读的问题也在最近得到了解决(例如DurIAN,FastSpeech),而深度学习不仅可以让语音的自然度得到大幅度的提升,对一些难以显式建模的特征上也有很强大的学习能力,因此,让语音合成能更加具有expressive成为了一个研究热点。

第一篇:Uncovering Latent Style Factors for Expressive Speech Synthesis(2017)

https://arxiv.org/abs/1711.00520

这一篇是 google 的王宇轩大佬早在 2017 年上传到 arxiv 上的一篇文章,也是表现力语音合成领域可追溯到的比较早的一篇文章。

阅读全文 »