Jib 简介

官方Github 库:https://github.com/GoogleContainerTools/jib

示例Demo: https://github.com/vgbhfive/SpringBootDemo/tree/master/jibtest

如果你之前使用过Docker 来构建镜像,那么Jib 将极大的解放你的劳动,并且有极大的可使用性。

构建Jib 镜像

引入Jib

jib的引入非常简单,已maven plugin的方式集成到项目中,只需要在你的项目中引入下面代码即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.6.1</version>
<configuration>
<from>
<!--base image-->
<image>openjdk:alpine</image>
</from>
<to>
<!--目标镜像registry地址,为了方便测试,你需要换成自己的地址,如果你的网络不好,可以选用国内加速器,比如阿里云的-->
<image>registry.hub.docker.com/vgbhfive/jibtest</image>
</to>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>

这只是一个最简单的配置,详细的说明可以去看github jib详细说明

Read more »

let 和 const 命令

https://vgbhfive.cn/JS%20%E4%B8%AD%E7%9A%84var%E3%80%81let%E5%92%8Cconst%E7%9A%84%E5%8C%BA%E5%88%AB%E5%92%8C%E7%9B%B8%E5%90%8C/

变量的解构赋值

数组的解构赋值

ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

1
2
3
4
5
6
// 从前
let a = 1;
let b = 2;
let c = 3;
// es6
let [a, b, c] = [1, 2, 3];

本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。

Read more »

基础命令

  1. 查看cpu 信息

    1
    cat /proc/cpuinfo
  2. 查看Ubuntu 版本

    1
    cat /etc/issue
  3. 查看剩余磁盘空间

    1
    df -h
  4. 查看当前内存使用情况

    1
    free -m
  5. 查看当前所有的进程

    1
    ps -A [| grep PsName]
  6. 终止进程运行

    1
    2
    kill PID
    kill -9 PID // 强制终止一个进程
  7. 查看当前进程得实际情况

    1
    top
    Read more »

基础概念

Java 网络API 允许我们通过套接字(Socket)打开或关闭网络连接,但所有的网络通信均是基于Java IO 类 InputStream 和OutputStream 实现的。

此外,我们还可以使用Java NIO API中相关的网络类,用法与Java网络API基本类似,Java NIO API可以以非阻塞模式工作,在某些特定的场景中使用非阻塞模式可以获得较大的性能提升。

Java TCP网络基础

通常情况下,客户端打开一个连接到服务器端的TCP/IP 连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接。

​客户端通过一个已打开的连接可以发送不止一个请求。事实上在服务器处于接收状态下,客户端可以发送尽可能多的数据,服务器也可以主动关闭连接。

Read more »

基础

java NIO 主要由以下几个核心部分组成:Channels、Buffers、Selectors,这些构成了核心的API。
其他组件,如Pipe、FileLock等,不过是其他三个组件的工具类。

所有的IO在NIO中都是从Channel开始的。Channel有点像流,数据可以从Channel读到Buffer,也可以从Buffer写到Channel。

Channel、Buffer

Channel的实现:FileChannel、DatagramChannel、SocketChannel、ServerSocketChannel,这些通道涵盖了UDP、TCP网络IO和文件IO,还有一些其他的接口。
Buffer的实现:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuffer、ShortBuffer,这些Buffer涵盖了你能通过IO所能传送的所有数据类型:short、int、long、byte、char、float、double,还有一个MappedByteBuffer,这个用于表示内存映射文件。

Read more »

xxx.png

加号的操作

1
2
3
4
5
6
console.log(1+'32');
// 132
console.log(1+ +'32');
// 33
+[]
// 0

加号的操作有很多的妙用,等待你的探索。

Read more »

原生Java 导出

基础

Apache POI 是用Java 编写的免费开源的跨平台的Java API ,Apache POI 提供API 给Java 程序对Microsoft Office(Excel、WORD、PowerPoint、Visio 等)格式档案读和写的功能。
POI 为”Poor Obfuscation Implementation” 的首字母缩写,意为“可怜的模糊实现”。

实现

https://github.com/vgbhfive/SpringBootDemo -> poidemo

Read more »

简介

NoSQL

NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009 年趋势越发高涨。
NoSQL 的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

NoSQL 指的是非关系型的数据库。NoSQL有时也称作Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

CAP 定理(CAP theorem)

在计算机科学中,CAP 定理又被称为布鲁尔定律,他指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性: 所有节点在同一时间具有相同的数据。
  • 可用性: 保证每个请求不管成功或者失败都有响应。
  • 分隔容忍: 系统中任意信息的丢失或失败不会影响系统的继续运行。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据CAP 原理将NoSQL 数据库分成了满足CA 原则、满足CP 原则和满足AP 原则三大类。

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求比较低一点。
Read more »

并发编程

并发这一块的东西,自己之前都是断断续续的一边学一下,一边用一下,都没有很系统的整理一下,所以今天他来了。

Read more »

目的

Java Web 目前最常用的三款服务器:

  • Undettow
  • Jetty
  • Tomcat

Tomcat 是Apache下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。
然而,现在当下微服务兴起,Spring boot、Spring cloud 越来越热的情况下,选择一款轻量级而性能优越的服务器是必要的选择。

Jetty 和Undertow 都是基于NIO 实现的高并发轻量级的服务器,支持servlet3.1 和websocket 。

Read more »