NAS 入坑系列一、组建 NAS

背景

前段时间突然想组个 nas,一方面给自己一个备份的渠道(手机相册啊,服务器的备置和数据啊等等),另一方面想搭一些 selfhost 的服务玩玩。于是开始了硬件小白的 NAS 之路。

阅读全文 →

反向代理相关 Header

代理请求流程

End User -> Proxy A -> Proxy B -> Server

From End User to Proxy A, Proxy A will set it own Host, and put end End User Host into X-Forwarded-Host before making a request to Proxy B. So when Proxy A makes a request, its header will look like:

X-Forwarded-Host: <End User Host>
Host: <Proxy A Host>

And then, Proxy B receives it, it will do the same, append Proxy A’s Host to X-Forwarded-Host

阅读全文 →

JDBC 原理浅析

一、JDBC 概念

什么是JDBC?
通俗地说:JDBC是java和关系数据库的之间的桥梁;
根据"百科名片"所描述:

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

阅读全文 →

nodejs,npm 安装

nodejs,npm 安装

首先去 nodejs 官网下载最新版 nodejs

解压

tar -xf node-v8.5.0-linux-x64.tar.xz

放到 /usr/local 目录下

mv node-v8.5.0-linux-x64 /usr/local/node

建立软连接

cd /usr/local/bin/
sudo ln -s /usr/local/node/bin/node .
sudo ln -s /usr/local/node/bin/npm .

npm 镜像

npm config set registry https://registry.npmmirror.com

https://npmmirror.com

nvm 安装

安装 nvm
https://github.com/nvm-sh/nvm

对于 fish shell
安装 bass
https://github.com/edc/bass
在 fish shell 的配置文件里加上

阅读全文 →

go 编译器优化

减小编译后可执行文件的大小

go build -ldflags '-w -s'

-w 禁止生成 debug 信息,注意使用该选项后,无法使用 gdb 进行调试。

-s 禁用符号表

可以使用 go tool link –help 查看 ldflags 各参数含义。

禁止优化和内联

go build -gcflags '-N -l'

-N 禁止编译优化

阅读全文 →

go 语言中的指针接收器和值接收器

在 Go 中,定义结构体有两种接收器可以选择

type T struct {
    a int
}

func (t T) Fv(a int) int {
    fmt.Println("in fv")
    t.a = a
    return a
}
func (t *T) Fp(a int) int {
    fmt.Println("in fp")
    t.a = a
    return a
}

区别和联系

T 和 *T 是两个不同的类型。每个类型都有自己的方法集。

T 的方法集包含了所有以 T 为 receiver 的方法。

阅读全文 →

子网和子网掩码

介绍

子网掩码不能单独谈,是和 ip 地址绑定在一起的。

ip 地址分为网络号和主机号,网络号相当于地址的楼栋号,主机号就是门牌。
比如现在有一个 ip 地址:192.168.1.5,单单凭这个无法知道网络号是多少,主机号是多少。所以子网掩码就是用来做这个事情的,子网掩码的位数和 ip 地址是一样的,都是 32 位,这 32 位里 1 的部分就表示网络号,0 的部分呢就表示主机号。

阅读全文 →