咸鱼

咸鱼是以盐腌渍后,晒干的鱼

0%

概述

axios 请求二进制文件,一般会得到 Blob 或者 ArrayBuffer

需要将 axios 的请求设置为 responseType: 'blob'或者'arraybuffer'请求二进制文件,一般会得到Blob或者arraybuffer。'

引用

Blob 对象是一个代表二进制数据的基本对象,生成Blob对象有两种方法:一种是使用Blob构造函数,另一种是对现有的Blob对象使用slice方法切出一部分。

阅读全文 »

有时候有些静态网站:如文档类的,放在公网,希望要用户认证才能访问,Nginx的
ngx_http_auth_basic_module 模块基于 “HTTP Basic Authentication” 协议实现了用户认证,可以很方便的实现用户认证。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
listen 80;
server_name localhost;

# 随便填些信息都行
# auth_basic off 关闭用户授权
auth_basic "welcome";
# 授权信息路径
auth_basic_user_file /etc/auth_basic/userpasswd;

location / {
root /var/www/test;
index index.html;
}
}

userpasswd 这个文件的一行代表一个用户,格式是: user:passwd ,其中密码是加密的,可以通过 htpasswd 工具来生成。

1
2
3
4
$ htpasswd -cb ./userpasswd test 123456
Adding password for user test
$ cat userpasswd
test:$apr1$2fZNNVc7$/w76Ek8aezH7g1WoLgtx5/

** 浏览器授权访问 **

阅读全文 »

Nginx可以提供一个简单的Web页面站点为你提供文件下载服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 6060;
server_name localhost;
location / {
root /var/www/download;

# 开启文件服务
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
#autoindex_format的值默认是html 另外还可以设置为: xml | json | jsonp ,windows下中文文件名会乱码
autoindex_format json;

# 下载x流量之后开启限速
limit_rate_after 100k;
# 每个连接的下载速度限制
limit_rate 50k;
# 展示中文文件名
charset utf-8,gbk;
}
}

** 效果: **


有些文件放在nginx下,如果不做速率限制,当客户端的网络环境比较好的话,下载速度非常快。这本来是好事,但假如服务器带宽只有10M,而有一个客户下载速率达到10M的话,其他的客户将无法访问服务器。
所以,要对单独一个连接进行速率限制。

配置

为方便局域网内测试,这里将限制值设置的比较小。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;
server_name localhost;
location / {
root /var/www/test;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;

# Sets the initial amount after which the further
# transmission of a response to a client will be rate limited
# limit_rate_after 10m;
limit_rate_after 100k;
# 每个连接的下载速度限制
limit_rate 50k;
}
}

limit_rate_after 是一个门阀,表示客户下载 10m 或者 100k 的byte之后开始触发速率限制。
limit_rate 是速率限制,最高 50k

阅读全文 »

本文以Windows平台下编译Linux应用举例,记录一下Golang交叉编译。

1
2
3
4
5
6
7
8
# help
go get:获取远程包(需 提前安装 git或hg)
go run:直接运行程序
go build:测试编译,检查是否有编译错误
go fmt:格式化源码(部分IDE在保存时自动调用)
go install:编译包文件并编译整个程序
go test:运行测试文件
go doc:查看文档(CHM手册)

一、设置环境变量

1
2
$ set GOARCH=amd64
$ set GOOS=linux

在终端CMD输入没用,我直接在环境变量设置了 GOARCHGOOS 。这样就无法在Windows运行,因为 go run 的也是指linux平台。

阅读全文 »

打印HTTP包信息

1
2
$ curl -v URL
$ curl --verbose URL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ curl -v -X POST http://localhost/ping
> POST /ping HTTP/1.1
> Host: localhost
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200
< Server: nginx
< Date: Tue, 23 Jul 2019 04:07:18 GMT
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 5
< Connection: keep-alive
<
PONG

之前写的《深入解析HTTP–Chunk分块发送》 和 《深入解析HTTP–Multipart》 都是关于用POST请求上传文件,本文要讲的,是指POST请求传递字符数据。

我们用PostMan作为客户端,SpringBoot作为服务端,Wireshark抓包,分析一下每个请求的包结构,了解一下其中的区别。

一、最简单的传参

服务端代码:

1
2
3
4
5
@PostMapping("/post")
public ResponseEntity testpost(@RequestParam("name") String name){

return ResponseEntity.ok("ok:"+name);
}
阅读全文 »

建议首先看看此文:【Openwrt&VMware官方指导文档】

VMware上安装OpenWrt的方法很多种,推荐:

  1. 通过源码编译vmdk磁盘文件,【教程】
  2. 通过下载官方的img镜像,转换为vmdk磁盘文件,【教程】
  3. 直接下载vm镜像,开箱即用,但是安全性不高,【教程】

其他文章:

  1. 【openwrt 好用的插件】
  2. 【openwrt vmware 安装无法显示eth0网卡】
  3. 【openwrt vmware 作旁路由】
  4. 【openwrt vmware 作旁路由并配置PassWall】
阅读全文 »

现在普通的CPU都是有4核,在VM中如何配置虚拟机的CPU呢?

个人推荐是 CPU数量 * 核心 = X倍的内存

2个CPU * 每个CPU2核 = 4核 ,这时候最好给8G以上内存。

比如:

VMWare中的Ubuntu系统有时候需要发行代币之类的工作,这时候就需要科学上网,Linux下的VxN客户端软件都做的不太好,这时候可以通过设置Linux系统的“网络代理”来使用宿主机的网络来访问网络。

环境

宿主机:Win10(安装了VxN)
虚拟机:Ubuntu 18.04

设置VMWare和虚拟机Ubuntu的网络

  1. VM虚拟机网络模式
阅读全文 »

添加一个PPA源

1
$ sudo add-apt-repository ppa:user/ppa-name

PPA源失效

如mongodb的源失效,每次 apt update 都会有错误提示。

1
2
3
4
5
6
7
8
9
10
11
root@bogon:~# apt-get update         
Ign:7 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 InRelease
Get:8 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release [3,457 B]
Get:9 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release.gpg [801 B]
Err:9 https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release.gpg
The following signatures were invalid: KEYEXPIRED 1544811256
Fetched 329 kB in 5s (60.8 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 Release: The following signatures were invalid: KEYEXPIRED 1544811256
W: Failed to fetch https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/3.6/Release.gpg The following signatures were invalid: KEYEXPIRED 1544811256
W: Some index files failed to download. They have been ignored, or old ones used instead.
阅读全文 »

以下三部分内容都是来自:【Gitlab文档】

注意,Gitlab至少需要2G内存来跑

一、docker方式:域名

1
2
3
4
5
6
7
8
9
10
$ sudo docker pull gitlab/gitlab-ce:latest
$ sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

二、docker方式:IP

阅读全文 »

控制docker

1
2
3
$ sudo systemctl start docker
或者
$ sudo service docker start

报错

当尝试用docker时,提示以下错误

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
root@bogon:~# docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
root@bogon:~# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
root@bogon:~#
root@bogon:~#
root@bogon:~# systemctl status docker.service
● docker.service - LSB: Create lightweight, portable, self-sufficient containers.
Loaded: loaded (/etc/init.d/docker; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2019-07-08 10:52:45 CST; 10s ago
Docs: man:systemd-sysv-generator(8)
Process: 19187 ExecStart=/etc/init.d/docker start (code=exited, status=1/FAILURE)

Jul 08 10:52:45 bogon systemd[1]: Stopped LSB: Create lightweight, portable, self-sufficient containers..
Jul 08 10:52:45 bogon systemd[1]: Starting LSB: Create lightweight, portable, self-sufficient containers....
Jul 08 10:52:45 bogon docker[19187]: * /usr/bin/dockerd not present or not executable
Jul 08 10:52:45 bogon systemd[1]: docker.service: Control process exited, code=exited status=1
Jul 08 10:52:45 bogon systemd[1]: Failed to start LSB: Create lightweight, portable, self-sufficient containers..
Jul 08 10:52:45 bogon systemd[1]: docker.service: Unit entered failed state.
Jul 08 10:52:45 bogon systemd[1]: docker.service: Failed with result 'exit-code'.

root@bogon:~#
root@bogon:~#
root@bogon:~# systemctl restart docker.service
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
阅读全文 »

【阿里云开源软件镜像】

阿里巴巴开源镜像站由阿里系统服务团队开发并支持,主旨在于服务阿里云客户,并在此基础上为互联网用户提供支持。 目前提供 Debian、Ubuntu、 Fedora、Arch Linux、 CentOS、openSUSE、Scientific Linux、Gentoo 等多个发行版的软件安装源和ISO下载服务,我们竭力为互联网用户提供全面,高效和稳定的软件服务。

域名解析DNS

1
2
223.5.5.5
223.6.6.6

ubuntu 18.04

阅读全文 »

apt-get

  1. 查看可安装的软件
    1
    sudo apt-cache search all
  2. 获取包的相关信息
    1
    sudo apt-cache show
  3. 删除包
    1
    sudo apt-get remove 软件名
  4. 删除包,包括删除配置文件等
    1
    sudo apt-get remove 软件名 --purge
  5. 删除包及其依赖的软件包+配置文件等
    1
    sudo apt-get autoremove --purge
  6. 理下载文件的存档 && 只清理过时的包
    1
    sudo apt-get clean && apt-get autoclean

dpkg

  1. 查看软件包所在的目录以及该软件包中的所有文件
    1
    sudo dpkg -L 软件名 
  2. 查看软件包的版本信息
    1
    sudo dpkg -l 软件名 
  3. 验证安装
    1
    sudo dpkg -l | grep '软件名'
  4. 安装deb包
    1
    sudo dpkg -i 软件包
  5. 卸载软件
    1
    sudo dpkg -r 软件包
  6. 卸载软件及包括配置文件
    1
    sudo dpkg -P 软件包

腾讯开源软件镜像站(Tencent Open Source Mirror Site)已于近日上线,其官方名称为「腾讯云软件源」,由腾讯云提供支持。

地址 >>> mirrors.cloud.tencent.com

官方表示搭建此开源镜像站的目的在于宣传自由软件的价值,提高自由软件社区文化氛围,推广自由软件在国内的应用。

腾讯开源软件镜像站提供了主流的 Linux 发行版下载,如 Ubuntu、Arch Linux、CentOS 和 Debian 等,以及常用的开源项目和 SDK 下载,如 Android SDK、Ceph、Flutter、Qt 和 Zabbix 等。

腾讯云软件源.png

阅读全文 »

什么是 OpenStack

官网介绍:
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed and provisioned through APIs with common authentication mechanisms.
A dashboard is also available, giving administrators control while empowering their users to provision resources through a web interface.
Beyond standard infrastructure-as-a-service functionality, additional components provide orchestration, fault management and service management amongst other services to ensure high availability of user applications.
有道翻译:
OpenStack是一个云操作系统,它控制整个数据中心中的大量计算、存储和网络资源,所有这些资源都是通过具有公共身份验证机制的api管理和供应的。
还提供了一个仪表板,让管理员控制,同时授权用户通过web界面提供资源。
除了标准的基础设施即服务功能之外,其他组件还提供编排、故障管理和服务管理,以确保用户应用程序的高可用性。

Openstack最初是由NASA和Rackspace在2010年共同发起的一个开源的云计算平台项目,目前项目正在被 Reahat、IBM、AMD、Intel、戴尔、思科、微软等超过一百家厂商共同研发,目前国内对于云计算的需求也逐渐增加,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等中国企业也加入到了Openstack项目研发当中,Openstack项目也正在随着全球内得到了众多厂商的参与支持而快速成熟。

OpenStack 是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。

阅读全文 »

本文只对比:KVM、Xen、VMWare

VMWare

VMWare是一个成熟的商业软件,市场占有率很高,但是操作系统安装在VMWare上面比直接装硬件上性能低不少,所以它比较适合学习和测试。

仿真虚拟化:对系统硬件没有要求,性能低。

Xen

阅读全文 »