vps推荐–cloudclone,内存512m起,每月3T流量

不知道是网络变好了还是什么情况,最近cloudclone的vps搭建的服务速度快了很多。下面是ping: 电信友好,联通国内绕路,然后是移动。 cloudclone貌似都是美国LA机房,提供独立服务器,vps,dns服务器等服务,现在在beta测试CDN,有兴趣的可以去试下,测试期间免费使用。 下午测试了下$$速度还不错: 晚上测试时油管4k也能基本不卡。 cloudclone的vps提供自定义配 […]

继续阅读

Effective Java 3rd Edition — 第四章 类与接口(2)

Item 21 : Design interfaces for posterity 为后续维护、使用者设计好的接口 Java8之后允许interface提供默认方法,但是如果你要在一个已经发布的接口添加默认方法需要认证考虑带来的影响,所有实现类是否能够提供正确的结果, 虽然默认方法实现类都不需要提供实现,但是需要注意虽然编译时候不会报错,但是可能运行后就不是你想要的结果。 比如Java8里 Col […]

继续阅读

frp局域网穿透与远程连接

前段时间从v2ex看到个帖子问内网穿透工具,很多人提到了frp于是找到了这个软件自己尝试下。 仓库地址:https://github.com/fatedier/frp frp功能比较全面,包括内网穿透、dns转发、远程连接等等,配置项目也比较少,容易理解,目前更新到0.15.0版本,我这里也使用的是该版本。 首先你需要一台vps或者其他能够外网访问到的服务器作为一个中转,这里来部署frp的服务端: […]

继续阅读

Effective Java 3rd Edition — 第四章 类与接口(1)

Item 15 : Minimize the accessibility of classes and members 最小化类与成员的访问级别 隐藏实现信息或者成员信息有多个好处: 有助于组件之间解耦 提升开发效率,多组件之间可以并行开发 减少维护成本,因为组件调试或者替换不影响其他部分 增加重用率,因为组件之间都是解耦的 减少开发大型系统的风险 用尽可能低的访问级别去定义软件功能,当你需要访问 […]

继续阅读

Effective Java 3rd Edition — 第三章 对象基本方法

Item 10 : Obey the general contract when overriding equals 遵守重写 equals方法基本规则 以下几种情况最好不要重写 equals 方法: 对象的每个实例都肯定不一样,比如 Thread 没有必要(不关心)是否逻辑上是否相等,比如 Pattern 父类已经重写了 equals 方法 类是私有或者包内私有,并且你确定不会调用 equals […]

继续阅读

Effective Java 3rd Edition — 第二章 创建和销毁对象

Item 1 : using static factory method instead of constructor 多使用静态工厂方法而不是构造器 优势:  构造器容易造成参数顺序混乱,静态工厂方法名称有很好的表意性,对于类属性较多的情况有着非常明显的优势 静态工厂方法都不必每次调用都创建新的对象,对于创建开销很大的对象或者同一个对象反复调用来说有性能提升(实现instance-control […]

继续阅读

Java 9 新特性 — HTTP2

Java 9中正式加入了对HTTP2的支持,同时对http client包进行了模块化封装,不过并没有正式加入java api,暂时放入一个临时的模块中: 所以在调用的时候会有警告:WARNING: Using incubator modules: jdk.incubator.httpclient. 在下一个java 版本中会正式加入,并且移除旧模块。 新的api调用方式十分简单,首先需要一个Ht […]

继续阅读

Java 9 新特性 — Module System 之 Service

上一篇 介绍了Java 9模块系统的一些基本信息,这一篇介绍模块化服务的实现、加载和使用。 普通java interface的使用基本是获取实现类或者在实例化接口的时候自己实现。获取实现类这种方式对服务的实现者有一定的入侵,如果在模块化中实现者就必须导出模块,这样项目之间的耦合其实是变强了。而实例化接口时候自己实现又显得太过麻烦。 Java 9中加载服务服务的方式是使用ServiceLoader来 […]

继续阅读

Java 9 新特性 — Module System

Java 9正式版发布已然有小半年,带来最令人激动的消息就是模块化编程。本来打算系统的了解一下这个新特性,百度到的也就一些简单介绍和demo,或者是国外的一些文章翻译,于是谷歌到了一些官方文档学习。 Module System 的出现将整个JDK的包结构都改变了:旧版本的Java都是以jar包的形式出现,而Java 9重构了整个系统,采用的是模块化的设计。在Java 9的安装文件夹下可以看到一个叫 […]

继续阅读

fastjson 循环引用

场景: 同一个对象的反复引用,fastjson在序列化的时候不会反复处理这个对象,而是引用已经序列化过的该对象。 比如下面的代码: 在给user对象添加子的时候添加的是同一个对象,这个时候序列化输出的则是引用的json: json里的$ref等特殊符号就是fastjson对循环引用的处理。 分析: 从源码JSONSerializer类中可以看到fastjson是如何处理循环引用对象的: 例如上面的 […]

继续阅读