前言

最近一直在家办公,忙完了工作的东西之后,总觉得这样太过于无聊了,所以就想学点啥东西充实一下自己,这不就开始上手Go 语言了。

在网上找了几个视频,看了一遍,开始动手写,这个时候问题就来了,导入不了包!

这就很莫名其妙了,查了一通,修改http 代理、加go.mod、设置GOPATH…等等,一通折腾,项目最后可以运行了,但是我觉得还是需要再补补知识,这部这篇博客就出来了。

Go Modules

Read more »

起源

最近几天开始脑子发热准备学习Go 语言了,所以就准备开始写一点东西,所以就下载了GoLand 来写代码了,结果就遇到了问题。

问题

在引包的过程中出现了下载失败的问题,所以就把错误信息拿出来,查了一下,结果就是被墙了。

1
2
3
4
5
6
7
8
9
10
11
C:\Users\Vgbh>go get -v gopkg.in/fatih/pool.v2
Fetching https://gopkg.in/fatih/pool.v2?go-get=1
https fetch failed.
Fetching http://gopkg.in/fatih/pool.v2?go-get=1
import "gopkg.in/fatih/pool.v2": http/https fetch: Get http://gopkg.in/fatih/poo
l.v2?go-get=1: dial tcp 107.178.216.236:80: ConnectEx tcp: A connection attempt
failed because the connected party did not properly respond after a period of ti
me, or established connection failed because connected host has failed to respon
d.
package gopkg.in/fatih/pool.v2: unrecognized import path "gopkg.in/fatih/pool.v2
"
Read more »

问题复述

1
2
3
4
5
npm install -g @vue/cli

->

npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
Read more »

引入

在我刚刚入职的时候,接手了一个距我入职有五年的一个系统代码,30w 行的java 再加上15w 行左右的jsp 页面,系统总行数在60w 行左右,而且还没有任何的文档,当初写这个项目的人已经离职了,只有一个还算是熟悉的人,但是出差了,也提供不了多大的帮助,就这样,我在60w 行的代码里开始了为期24天的遨游。

控制台输出的东西多而杂,并且伴随着系统内部的运行输出内容,各种各样的东西,并且由于是分布式的系统,界面上还会输出关于RPC 相关的信息,那个日子真的是不能看。

所以在我完成任务后,我找了这个时间来总结一把我的辛酸泪。

主要的目的:

  • 了解日志的作用
  • 学习在什么时候为什么要打印日志
  • 日志的展示内容
  • 如何定位并说明日志所要表达的意义
Read more »

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 »