Java中的SPI机制 SPI 全称为 (Service Provider Interface) ,是Java 1.6之后内置的一种服务提供发现机制。SPI可以通过配置来替换服务(或者说interface)的实现;比如java.sql.Driver接口,可以很轻松的从MySQL切换到MongoDB实现。 问题的核心在于,如何根据interface查找对应的实现。 SPI的实现Java 1.6中,开发者只需要在META-I 2019-05-19 Language > Java #Java
Java的类/实例初始化过程 昨天看到群里面有人分享了一道题目,我答错了,于是趁机了解了下Java的类/对象初始化过程: 程序的输出见文章最后。 程序A主要考察的是类实例初始化。简单验证了下,类实例初始化过程如下: 父类实例初始化 构造块/变量初始化(按照文本顺序执行) 构造函数 程序B考察的则是类初始化。类初始化的过程如下: 父类初始化 static变量初始化/static块(按照文本顺 2019-05-13 Language > Java #Java
为什么HTTP Upgrade的时候,需要Connection: upgrade 很久之前,在看HTTP头部的时候,发现WebSocket等协议的Upgrade请求,需要同时带上Connection和Upgrade头部。但是,如果是仅仅Upgrade的话,Connection头部不就是多余的设计了么? 比如一个典型的WebSocket升级请求如下: 123456GET /chat HTTP/1.1Host: example.com:8000Upgrade: websocketC 2019-05-11 #HTTP
JVM如何获取当前容器的资源限制 本文是《容器中的Java》系列文章之 1/n ,欢迎关注后续连载 :) 。 最近同事说到Java的 ParallelGCThreads 参数,我翻了下jdk8的代码,发现 ParallelGCThreads 的参数默认值如下: 如果cpu核心数目少于等于8,则GC线程数量和CPU数一致 如果cpu核心数大于8,则前8个核,每个核心对应一个GC线;其他核,每8个核对应5个GC线程 但是 2019-05-09 Language > Java #Java #云原生 #容器中的Java
如何找到一个可用端口? 很多场景中,我们确实需要找一个空闲端口,比如启动一个子进程监听指定端口,然后通过这个端口与之通信 然后实现方式就有很多了: VSCode的实现比如VSCode,就是逐个连接,如果某个端口连接失败,并且错误不是ECONNREFUSED的话,那么就说明这个端口可用。 1234567891011121314151617181920212223242526272829303132function doFi 2019-05-04
StringBuffer,StringBuilder以及String 今天在网上闲逛,看见 @姚冬 的一个回答。 他提到的问题也很有深度,然后思考了下,想评论来着。然而评论区太小,写不下,所以单独写在这儿。 基本上可以当作快问快答来读… 为什么java中的string不以\0结尾? \0结尾在很大程度上要求程序员写规范的代码,如果写出了不规范的代码,那么很容易就内存越界了。 另外,string的内部存储是char[],而为了内存安全,java数组本来就有一个l 2019-05-02 Language > Java #Java
我们为什么使用Linux内核的TCP栈 本文是 Why we use the Linux kernel’s TCP stack 的翻译。 最近,有一篇文章提出了一个非常有趣的问题,我们为什么使用Linux内核的TCP栈? 这在Hacker News上引发了非常有趣的讨论。 在CloudFlare工作的时候,我也一直在想这个问题。我的经验主要来自于和数千台生产机器打交道,我也会从这个角度来尝试回答这个问题。 CC BY 2.0 图片 来 2019-05-02 技术 #Linux #翻译
macOS下使用ZMODEM协议上传/下载文件 有时候,我们ssh登录服务器操作(甚至经过跳板机),然后这个时候,我们想下载、上传一个文件,就必须重启启动一个终端,运行scp命令。这个非常的繁琐,而且要上传、下载的目录也需要自己复制粘贴,有没有办法能够在ssh会话中上传、下载文件呢? 查了下,还真有这么一个协议,叫ZMODEM。 原理下载文件在服务器上执行sz(Send by ZMODEM),先在终端上输出**B00000000000000,然 2019-05-01 Tips
vscjava.vscode-java-debug 0.18.0的新特性! 微软为VSCode开发了一个Java调试器 Debugger for Java。之前用这个很不爽,还和微软的人吐槽过VSCode在debug java的时候,只能看到HashMap等java自带数据结构的物理视图,比如一个HashMap,在 0.17.0 版本下debug时,是这样的: HashMap里面有很多实现的细节,但是一般在debug的时候,我们比较关注的是这个HashMap里面存储了哪 2019-04-27 Language > Java #Java #VSCode
Python 2/3下如何处理cjk编码的zip文件 今天项目中遇到了中文编码的zip文件,处理了蛮长时间,所以记录下,以免下次踩坑。 Python2下Python2中读取zip文件,zipfile.ZipInfo的filename类型是str,基本上类似于python3中的bytes,即可以被decode为unicode。 所以,要处理中文,只需要将文件名按照编码decode成unicode就好。 12345678import zipfilefpa 2019-04-25 Language > Python