咸鱼

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

0%

我们知道在亚马逊云、阿里云或者腾讯云购买的主机都是通过虚拟技术将物理机虚拟出来的,而流行虚拟化平台有:VMWare、Xen 和 KVM等,如果想知道他们是采用了哪种虚拟化平台,要怎么做呢?

dmesg命令

如果主机装的是Linux系统,可以通过以下命令行确认平台

1
$ dmesg | egrep "kvm|xen|vmware"

运行结果如下:

阅读全文 »

Java 9 正式发布于 2017 年 9 月 21 日 。作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化。其中最重要的改动是 Java 平台模块系统的引入。除此之外,还有一些新的特性

Java 平台 模块系统

Java 平台模块系统,也就是 Project Jigsaw,把模块化开发实践引入到了 Java 平台中。在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像。这样可以极大的减少 Java 运行时环境的大小。这对于目前流行的不可变基础设施的实践来说,镜像的大小的减少可以节省很多存储空间和带宽资源 。

Jshell

jshell 是 Java 9 新增的一个实用工具。jshell 为 Java 增加了类似 NodeJS 和 Python 中的读取-求值-打印循环( Read-Evaluation-Print Loop ) 。 在 jshell 中 可以直接 输入表达式并查看其执行结果。当需要测试一个方法的运行效果,或是快速的对表达式进行求值时,jshell 都非常实用。只需要通过 jshell 命令启动 jshell,然后直接输入表达式即可。每个表达式的结果会被自动保存下来 ,以数字编号作为引用,类似 $1 和$2 这样的名称 。可以在后续的表达式中引用之前语句的运行结果。 在 jshell 中 ,除了表达式之外,还可以创建 Java 类和方法。jshell 也有基本的代码完成功能。

阅读全文 »

原文链接

函数式接口

Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个接口定义个唯一一个抽象方法,那么这个接口就成为函数式接口。同时,引入了一个新的注解:@FunctionalInterface。可以把他它放在一个接口前,表示这个接口是一个函数式接口。这个注解是非必须的,只要接口只包含一个方法的接口,虚拟机会自动判断,不过最好在接口上使用注解 @FunctionalInterface 进行声明。在接口中添加了 @FunctionalInterface 的接口,只允许有一个抽象方法,否则编译器也会报错。

java.lang.Runnable 就是一个函数式接口。

1
2
3
4
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
阅读全文 »

安装/删除

1
2
3
4
5
$ apt-get update
$ apt-get install vsftpd
$ vsftpd -v
vsftpd: version 3.0.3
$ apt-get purge vsftpd

创建ftp用户

创建一个不能登录到系统的用户,用于vsftpd文件读写

1
2
3
4
5
6
7
$ mkdir /home/ftpsam
$ chown ftpsam:ftpsam /home/ftpsam
$ useradd -d /home/ftpsam -s /sbin/nologin ftpsam
$ passwd ftpsam
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
阅读全文 »

简介

coturn 是一个开源的 TURN/STUN 服务器,支持 P2P 穿透。

  • STUN 服务器用于获取设备的外部网络地址
  • TURN 服务器是在点对点失败后用于通信中继。

WebRTC 建立连接的步骤大概是这样的:

  1. 客户端(浏览器)直接尝试直连;
  2. 如果如果直连则通过 STUN 服务器进行穿透;
  3. 如果无法穿透则通过 TURN 服务器进行中转。
阅读全文 »

aos.js

githubdemo

aos.js是一款效果超赞的页面滚动元素动画jQuery动画库插件。该动画库可以在页面滚动时提供28种不同的元素动画效果,以及多种easing效果。在页面往回滚动时,元素会恢复到原来的状态。

Flexslider.js

Flexslider - 响应式的 jQuery 内容滚动插件

阅读全文 »

静态网站克隆,就是将网站的 html/css/js 和图片等文件下载到本地,能离线浏览。

Linux

在 linux 上,我们经常用 wget 下载文件,加上参数 -r -k 等参数,可以将静态网站整个下载下来,但是 wget 是单线程下载,可能会比较慢。

1
wget -r -p -np -k http://localhost

-r: 递归

阅读全文 »

父组件传 值 给子组件

  1. 父组件调用子组件的时候 绑定动态属性
    1
    <v-header :title="title"></v-header>
  2. 在子组件里面通过 props接收父组件传过来的数据
    1
    2
    3
    4
    5
    props:['title']
    或者
    props:{
    'title':String
    }
  3. 直接在子组件里面使用

父组件传 函数 给子组件

  1. 父组件调用子组件的时候 绑定函数
    1
    <v-header :say-hello="parentSayHello"></v-header>
    父组件的函数
    1
    2
    3
    4
    5
    methods:{
    parentSayHello(name){
    console.log(name + "say hello");
    }
    }
  2. 在子组件里面通过 props接收父组件传过来的数据
    1
    2
    3
    4
    5
    6
    props:{
    sayHello:{
    type: Function,
    require: false,
    },
    }
  3. 直接在子组件里面使用
    1
    <button @click="sayHello('jack')"/>

父组件主动调用子组件属性、方法

阅读全文 »

在一个 Vue-Cli 的项目中发现使用 cnpm install安装依赖库有些小问题,导致在WebStrom上无法识别库的自定义标签,也无法跳转到自定义标签的源码。

举例

1
cnpm install element-ui -S

使用标签 <el-button/> 时,webstrom提示 Unknown html tag el-button

查看 node_modules 目录,发现element-ui 有两个目录。

阅读全文 »

站点

模板站点

国内搜索 “网页模板” 大多数是很旧很差的模板,到国外搜索 “website templates free” 或者再加上 "Bootstrap" 会找到相对优质一点的资源。

  1. 600+ 个免费的Bootstrap HTML 模板 1
  2. 600+ 个免费的Bootstrap HTML 模板 2
  3. bootstrap 模板 free-css.com
  4. bootstrap 模板 bootstrapmade.com
阅读全文 »

项目

docusaurus 是 Faecbook 专门为开源项目开发者提供的一款易于维护的静态网站创建工具,使用 Markdown即可更新网站。

安装

按照文档安装docusaurus

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
$ cnpm install --global docusaurus-init
$ docusaurus-init
Website folder created!

Installing latest version of Docusaurus in website.

npm WARN deprecated browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)

> gifsicle@4.0.1 postinstall D:\SourceCode\npm\demo\website\node_modules\gifsicle
> node lib/install.js

√ gifsicle pre-build test passed successfully

> jpegtran-bin@4.0.0 postinstall D:\SourceCode\npm\demo\website\node_modules\jpegtran-bin
> node lib/install.js

√ jpegtran pre-build test passed successfully

> optipng-bin@5.1.0 postinstall D:\SourceCode\npm\demo\website\node_modules\optipng-bin
> node lib/install.js

√ optipng pre-build test passed successfully
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN website No description
npm WARN website No repository field.
npm WARN website No license field.

+ docusaurus@1.9.0
added 1064 packages in 65.262s
Docusaurus installed in website folder!


> @ examples D:\SourceCode\npm\demo\website
> docusaurus-examples

Wrote docusaurus scripts to package.json file.

demo
├── docker-compose.yml
├── Dockerfile
├── docs
│ ├── doc1.md
│ ├── doc2.md
│ ├── doc3.md
│ ├── exampledoc4.md
│ └── exampledoc5.md
└── website
├── blog
│ ├── 2016-03-11-blog-post.md
│ ├── 2017-04-10-blog-post-two.md
│ ├── 2017-09-25-testing-rss.md
│ ├── 2017-09-26-adding-rss.md
│ └── 2017-10-24-new-version-1.0.0.md
├── core
│ └── Footer.js
├── package-lock.json
├── package.json
├── pages
│ └── en
│ ├── help.js
│ ├── index.js
│ └── users.js
├── README.md
├── sidebars.json
├── siteConfig.js
└── static
├── css
│ └── custom.css
└── img
├── favicon.ico
├── oss_logo.png
├── undraw_code_review.svg
├── undraw_monitor.svg
├── undraw_note_list.svg
├── undraw_online.svg
├── undraw_open_source.svg
├── undraw_operating_system.svg
├── undraw_react.svg
├── undraw_tweetstorm.svg
└── undraw_youtube_tutorial.svg
阅读全文 »

Thrift

Apache顶级项目,早期由Facebook开发,集成了序列化/反序列化和传输层,传输层基于TCP,服务端提供高并发NIO等多种模式支持。
通过 .thrift文件直接生成客户端和服务端的代码,支持语言种类比较多:

1
C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. 

Thrift支持众多通讯协议:

  • TBinaryProtocol – 一种简单的二进制格式,简单,但没有为空间效率而优化。比文本协议处理起来更快,但更难于调试。
  • TCompactProtocol – 更紧凑的二进制格式,处理起来通常同样高效。
  • TDebugProtocol – 一种人类可读的文本格式,用来协助调试。
  • TDenseProtocol – 与TCompactProtocol类似,将传输数据的元信息剥离。
  • TJSONProtocol – 使用JSON对数据编码。
  • TSimpleJSONProtocol – 一种只写协议,它不能被Thrift解析,因为它使用JSON时丢弃了元数据。适合用脚本语言来解析。
阅读全文 »

InfluxDB®是一款专门处理高写入和查询负载的时序数据库,无需外部依赖,用于存储大规模的时序数据并进行实时分析,包括来自DevOps监控、应用指标和IoT传感器上的数据。

20190423版本问题

  • InfluxDB从v1.3开始取消自带的web页面,要web页面的可以安装v1.2.4版。
  • 目前为止,v1.7.6是最新稳定版, 《1.x的文档》
  • v2.0 alpha ,《2.0的文档》

本文安装的是 v1.7.6

Docker Image 安装

阅读全文 »

【hub.docker.com/mongo】

编写mongod配置文件

创建一个配置文件 /opt/my_mongo/config/mongod.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ vim /opt/my_mongo/config/mongod.conf

storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

net:
port: 27017
# 主要是修改这里,允许远程连接
bindIp: 0.0.0.0

processManagement:
timeZoneInfo: /usr/share/zoneinfo

编写docker-compose.yml文件

阅读全文 »

编写docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
version: '3.3'

services:
my_redis:
environment:
TZ: Asia/Shanghai
image: redis
restart: always
ports:
- 6379:6379
container_name: my_redis_container

启动容器

1
$ docker-compose up

redis.conf启动

阅读全文 »

jira 是一个商用的java应用,用于敏捷开发项目管理或者BUG追踪等,镜像需要自己制作,免费试用30天,稍微麻烦点。

创建目录

1
2
3
$ mkdir -p /opt/atlassian/mysql/data
$ mkdir -p /opt/atlassian/mysql/conf
$ mkdir -p /opt/atlassian/jiradata

编写docker-compose.yml文件

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
28
29
30
version: '3.3'

services:
jira_mysql:
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: myjira
MYSQL_USER: myjira
MYSQL_PASSWORD: 123456
image: mysql:5.7
restart: always
volumes:
- /opt/atlassian/mysql/data:/var/lib/mysql
- /opt/atlassian/mysql/conf:/etc/mysql/mysql.conf.d
ports:
- 3306:3306
container_name: jira_mysql
myjira:
depends_on:
- jira_mysql
environment:
TZ: "Asia/Shanghai"
# 这个镜像可能不能用
image: jira-xxx
restart: always
volumes:
- /opt/atlassian/jiradata:/var/atlassian/jira
ports:
- 80:8080
container_name: myjira
阅读全文 »

编写docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3.3'

services:
my_mysql:
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: 123456
image: mysql:5.7
restart: always
volumes:
- /opt/mysql/data:/var/lib/mysql
- /opt/mysql/conf:/etc/mysql/mysql.conf.d
ports:
- 3306:3306
container_name: my_mysql_container

启动容器

1
$ docker-compose up

phpmyadmin

阅读全文 »

本文利用 Docker Compose 快速部署一个WordPress站点。

环境:VMWare 、Ubuntu 、 Docker

编写docker-compose.yml文件

参考docs.docker.com

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
28
version: '3.3'

services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
阅读全文 »