前言
最近一直在家办公,忙完了工作的东西之后,总觉得这样太过于无聊了,所以就想学点啥东西充实一下自己,这不就开始上手Go 语言了。
在网上找了几个视频,看了一遍,开始动手写,这个时候问题就来了,导入不了包!
这就很莫名其妙了,查了一通,修改http 代理、加go.mod、设置GOPATH…等等,一通折腾,项目最后可以运行了,但是我觉得还是需要再补补知识,这部这篇博客就出来了。
最近几天开始脑子发热准备学习Go 语言了,所以就准备开始写一点东西,所以就下载了GoLand 来写代码了,结果就遇到了问题。
在引包的过程中出现了下载失败的问题,所以就把错误信息拿出来,查了一下,结果就是被墙了。
1 | C:\Users\Vgbh>go get -v gopkg.in/fatih/pool.v2 |
在我刚刚入职的时候,接手了一个距我入职有五年的一个系统代码,30w 行的java 再加上15w 行左右的jsp 页面,系统总行数在60w 行左右,而且还没有任何的文档,当初写这个项目的人已经离职了,只有一个还算是熟悉的人,但是出差了,也提供不了多大的帮助,就这样,我在60w 行的代码里开始了为期24天的遨游。
控制台输出的东西多而杂,并且伴随着系统内部的运行输出内容,各种各样的东西,并且由于是分布式的系统,界面上还会输出关于RPC 相关的信息,那个日子真的是不能看。
所以在我完成任务后,我找了这个时间来总结一把我的辛酸泪。
主要的目的:
官方Github 库:https://github.com/GoogleContainerTools/jib
示例Demo: https://github.com/vgbhfive/SpringBootDemo/tree/master/jibtest
如果你之前使用过Docker 来构建镜像,那么Jib 将极大的解放你的劳动,并且有极大的可使用性。
jib的引入非常简单,已maven plugin的方式集成到项目中,只需要在你的项目中引入下面代码即可。
1 | <plugin> |
这只是一个最简单的配置,详细的说明可以去看github jib详细说明
Java 网络API 允许我们通过套接字(Socket)打开或关闭网络连接,但所有的网络通信均是基于Java IO 类 InputStream 和OutputStream 实现的。
此外,我们还可以使用Java NIO API中相关的网络类,用法与Java网络API基本类似,Java NIO API可以以非阻塞模式工作,在某些特定的场景中使用非阻塞模式可以获得较大的性能提升。
通常情况下,客户端打开一个连接到服务器端的TCP/IP 连接,然后客户端开始与服务器之间通信,当通信结束后客户端关闭连接。
客户端通过一个已打开的连接可以发送不止一个请求。事实上在服务器处于接收状态下,客户端可以发送尽可能多的数据,服务器也可以主动关闭连接。
java NIO 主要由以下几个核心部分组成:Channels、Buffers、Selectors,这些构成了核心的API。
其他组件,如Pipe、FileLock等,不过是其他三个组件的工具类。
所有的IO在NIO中都是从Channel开始的。Channel有点像流,数据可以从Channel读到Buffer,也可以从Buffer写到Channel。
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,这个用于表示内存映射文件。