使用装饰器是如何构建 Nodejs 路由的

2020-01-07
阅读 4 分钟
4.5k
Javascript 中的装饰器(Decorator)是我非常喜欢的一个特性,它可以很好地提高代码的复用性和自解释性。虽然它目前还处在建议征集的第二阶段,但在 TypeScript 里已经做为了一项实验性特性予以支持。

Java Optional API

2019-03-24
阅读 8 分钟
4.9k
一位智者说过,没有处理过空指针异常就不算一个真正的 Java 程序员。这当然是开玩笑,但是空指针异常确实是很多程序出错的源头。于是,在 Java 8 引入了 java.util.Optional,Optional 用来代表一种 可能有可能没有 的数据,可以用来缓解空指针异常的问题。

实现简单的正则表达式引擎

2019-02-23
阅读 5 分钟
5k
回想起第一次看到正则表达式的时候,眼睛里大概都是 $7^(0^=]W-\^*d+,心里我是拒绝的。不过在后面的日常工作里,越来越多地开始使用到正则表达式,正则表达式也逐渐成为一个很常用的工具。

Canvas 文本转粒子效果

2019-02-13
阅读 5 分钟
3.3k
总的来说要做出将文本变成粒子展示的效果其实很简单,实现的原理就是使用两张 canvas,一张是用户看不到的 A canvas,用来绘制文本;另一张是用户看到的 B canvas,用来根据 A 的文本数据来生成粒子。直观表示如图:

Docker: 容器互访的三种方式

2019-01-24
阅读 2 分钟
12.8k
场景 三个容器 digger-app: 启动 API 服务,依赖 redis 和 mysql digger-redis: redis 服务 digger-mysql: mysql 服务 我们需要让 digger-app 容器内运行的服务能够访问 digger-redis 和 digger-mysql 容器。 方法一:--link --link 的格式为 --link name:alias,name 为需要连接到的容器的 name,alias 是给这个连接取...

Jenkins + Docker 简单部署 node.js 项目

2019-01-21
阅读 3 分钟
5.6k
有了前几篇的基础后,我们现在已经能 docker 篇: 构建 docker 镜像 上传私有仓库 拉取私有镜像 启动容器 jenkins 篇: 配置 pipeline 触发 pipeline 接下来就可以结合两者,用 jenkins + docker 来自动化部署我们的项目。 配置 Jenkins jenkins 的配置思路为 构建机(IP: xx.xx.xx.xx)拉取代码 构建机安装依赖 构建机...

Docker: 上传镜像至私有仓库

2019-01-20
阅读 2 分钟
40.5k
镜像可以很方便直接 push 到 docker 的公共仓库,就好像 github 一样,但是我们在开发中很多时候都不想公开镜像文件,这时就需要搭建 docker 的私有仓库,就好像 gitlab 一样。

Docker: 编写 dockerfile 启动 node.js 应用

2019-01-18
阅读 2 分钟
9.8k
编写 Dockerfile 以 express 自动创建的目录为例,目录结构如下: {代码...} 在项目目录下新建 Dockerfile 文件 {代码...} FROM 指定基础镜像为 node 的 10.15 版本(node 官方版本可 在此查看) MAINTAINER 说明镜像的维护者 COPY 命令将宿主机的文件拷贝到镜像中,格式为 COPY [--chown=<user>:<group>] &...

Jenkins: 创建第一个 Pipeline

2019-01-11
阅读 4 分钟
8.2k
本文目的是搭建一个简单的 pipeline,当 git 仓库有提交时,builder server 进行构建和测试,完成之后 deploy server 进行部署。

Centos 7 安装 java、搭建 Jenkins

2019-01-10
阅读 2 分钟
2.9k
本文在 centos 版本 7.4.1708 与 7.6.1810 中验证 查看 centos 版本 {代码...} 安装 java 8 本地下载,然后传到服务器 访问 oracle jdk 下载地址,同意协议后点击下载地址 下载完成后,登录服务器,新建 /usr/java 目录,然后在本地 scp 过去 {代码...} 直接在服务器上下载 因为下载 jdk 需要同意协议,所以不能用 wget ...

Git 之 让分支具有一个清晰的、有意义的版本变更信息

2018-01-19
阅读 2 分钟
2.4k
One of the most important skills of a Git user lies in their ability to maintain a clean, semantic public history of commits. In order to achieve this, they rely on four main tools: git commit --amend git merge, with or without --no-ff git rebase, especially git rebase -i and git rebase -p git ch...

Git 之 交互式 rebase

2018-01-19
阅读 3 分钟
9.4k
默认情况下,直接使用 git rebase -i 命令的操作对象为自最后一次从 origin 仓库拉取或者向 origin 推送之后的所有提交。

Git 之 revert

2018-01-19
阅读 3 分钟
31.9k
当讨论 revert 时,需要分两种情况,因为 commit 分为两种:一种是常规的 commit,也就是使用 git commit 提交的 commit;另一种是 merge commit,在使用 git merge 合并两个分支之后,你将会得到一个新的 merge commit

Git 之 merge 与 rebase 的区别

2018-01-18
阅读 4 分钟
37.9k
假设当前从 master 分别切出了两个分支:learn-rebase 和 learn-merge,它俩分别都进行了两次 commit,我们希望把两个分支的内容都合并到 master 上

Git 之 cherry-pick

2018-01-18
阅读 1 分钟
23.2k
使用 cherry-pick,可以从其他分支复制指定的提交,然后导入到现在的分支。 主要使用的场合: 把弄错分支的提交移动到正确的地方 把其他分支的提交添加到现在的分支 例如,我们想把 learn-cherry-pick 这个分支上的第二个提交提取出来,然后添加到 master 上。 首先从图右部分可以找到我们想提取 commit 的 commit id 为...

HTTP 缓存

2018-01-18
阅读 3 分钟
2.9k
There are only two hard things in Computer Science: cache invalidation and naming things.-- Phil Karlton

使用 shell 命令统计日志

2017-09-23
阅读 4 分钟
5.4k
通过使用 shell 命令可以很方便地对日志进行统计和分析,当服务有异常的时候,需要去排查日志,那么掌握一种统计日志的技巧就是必不可少的了。

Node.js 中的模块

2017-09-01
阅读 13 分钟
4.5k
module 在 nodejs 里是一个非常核心的内容,本文通过结合 nodejs 的源码简单介绍 nodejs 中模块的加载方式和缓存机制。如果有理解错误的地方,请及时提醒纠正。

遗传算法

2016-12-19
阅读 3 分钟
9.8k
我们都知道达尔文提出了伟大的“生物进化论”,他证明了所有的生物都不是上帝创造的,而是在遗传、变异、生存斗争和自然选择中,由简单到复杂,由低等到高等,不断发展变化的。也就是:物竞天择、适者生存、优胜劣汰。

node-canvas 中文乱码/自定义字体

2016-11-18
阅读 2 分钟
13.1k
我们来分析下解决乱码的两个条件: 文档utf-8编码:这里utf-8编码是指要求文件的存储编码方式是utf-8,而不是对字符进行utf-8编码(如js中的encodeURI)。通过对IDE或者其他方式确定文件的编码方式,如有问题可自行百度。 指定中文字体库:可以通过 .font('/Library/Fonts/微软雅黑.ttf') //mac系统下 或 .font('/usr/sh...

使用 node-canvas 绘制验证码

2016-11-18
阅读 3 分钟
17.4k
顾名思义,node-canvas 允许你在 node 端使用 canvas。在验证码这个使用场景里,我们可以先生成验证码,然后在 canvas 上绘制,最后将图片返回给前端。

react-router 按需加载

2016-10-12
阅读 5 分钟
56.3k
React Router 是一个非常出色的路由解决方案,同时也非常容易上手。但是当网站规模越来越大的时候,首先出现的问题是 Javascript 文件变得巨大,这导致首页渲染的时间让人难以忍受。实际上程序应当只加载当前渲染页所需的 JavaScript,也就是大家说的“代码分拆" — 将所有的代码分拆成多个小包,在用户浏览过程中按需加载。

使用 react-hot-loader

2016-03-22
阅读 2 分钟
38.4k
React Hot Loader is a plugin for Webpack that allows instantaneous live refresh without losing state while editing React components.

挖个坑。。用 React 来做个iPhone?

2016-03-11
阅读 1 分钟
2.7k
三月转眼就过去了。。一想到月末就能回学校了心里还是有点小激动的,深感工作之后就没什么玩的时间了,学生生涯还剩两个月,抓紧时间好好享受最后的大学时光吧。

Webpack + React 开发之路

2016-02-28
阅读 9 分钟
19.9k
记得大二的时候刚学习 Java,我做的第一个图形化用户界面是一个仿QQ的登录窗口,其实就是一些输入框和按钮,但是记得当时觉得超级有成就感,于是后来开始喜欢上写 Java,还做了很多小游戏像飞机大战、坦克大战啥的,自己还觉得特别有意思。后来开始学前端,其实想想也是做图形化用户界面,不过是换了一个运行环境而已。...

使用webpack 进行ES6开发

2016-02-19
阅读 3 分钟
32.6k
使用 webpack 的初衷其实是想用 React。学习 React 的时候,始终被一个问题困扰:既然组件已经模块化了,比如一个 jsx 文件对应一个组件,这个文件里包含了这个组件的 html 和 js,但是他的样式该写在哪里呢?看的网上教程都是写在 jsx 文件里,通过变量定义,或者直接就写到全局样式里面去了。通过变量写不能定义伪元素...

使用gulp 进行ES6开发

2016-01-31
阅读 4 分钟
31.3k
一说起ES6,总会顺带看到webpack、babel、browserify还有一些认都不认识的blabla名词,对于gulp才会一点点的我来说,内心简直是崩溃的,上网查了一些文章,探索着用gulp搭起一个ES6的开发模式,总之先一边学ES6一边写吧。。然后再让这个流程更加。。高级。