Java 中除了八种基本类型(byte, short, int, long, float, double, char, boolean)之外就是引用类型,而引用类型又有强引用,软引用,弱引用和幻象引用。可能我们平常代码中用到最多的是强引用,对于其他的一般用的很少,但有些框架中还是会用到的,所以我们还是有必要去了解下这块的东西,这有利于我们更好地去理解相关的框架原理。下面我们就来分别看下这几类引用都各有什么特性:
Java 中通过枚举实现单例和策略模式
在上篇文章中主要介绍了 Java 中对于枚举的合理使用能让我们的代码看起来更优雅,但其实枚举还有一个特异功能,可以实现设计模式中的单例模式。
先来看我们最熟悉的单例模式,我们之前看到的最多的单例模式实现是像下面这种,线程安全的双重检查锁懒汉单例。
Java 中枚举让代码更优雅
对于枚举,不知道你对它的使用了解多少,说实话在刚开始使用它的时候,我对它的印象仅次于帮助我们在代码中定义一个对象的字段特定的几种状态,便于我们理解代码中该字段有哪些值,又分别代表哪些含义。
检测端口是否存活除了 telnet 还有 nc 命令
在之前使用 Windows 系统的时候,我感觉我使用最频繁的两个命令就是 ping 和 telnet。其中 ping 是用来检测是否与主机连通,telnet 用来检测对方主机的端口是否畅通。这两个命令通用的使用场景可能是下面这样的:
日常开发中常用命令之 ps 命令
在上一篇文章中我分享了关于 nohup 命令的使用,通过 nohup 命令在后台运行我们的程序,就算我们退出了终端程序也会继续在后台运行。
现在假如我们通过 nohup 命令在服务器上已经启动好了我们的后台程序,然后前端通过我们给的接口地址进行调试,这时前端跟你说接口调不通,于是我们去服务器上看下我们的日志文件以确认程序是否真的起来了,
如果我们在日志文件中看到类似于下面这种日志:
日常开发中常用命令之 nohup 命令
之前几篇文章分享了异步接口的实现和原理,基本上都是需要查看源码来辅助理解,说实话,看懂之后可能觉得还好,但是在一开始不太清楚的时候阅读源码确实有点枯燥,尤其是在你不是很想去了解这个的时候。只有当我们真正想去了解这个东西的时候可能才会愿意花精力去研究,这时候就不会那么无聊了,反而会觉得在探索的过程中很有趣。
Servlet 3.0 引入对异步处理的支持
前面我们说了很多关于异步接口的实现,而且看的都是 SpringMVC 包装了一层的之后的实现,现在让我们抛开 SpringMVC 那一层包装再看看是怎样的。
好了,我们先看下没有了 SpringMVC 包装的异步实现代码:
异步接口实践之 DeferredResult
前两篇文章主要讨论了关于异步接口在 SrpingMVC 体系下的实现过程,通过查看源码的方式大概梳理了异步走过的整个流程,简要的总结就是:
接口采用异步的方式执行
你还在习惯的使用 keys * 查看 redis 中的所有数据吗
redis 在我们的日常开发中其实还是用的比较多的,常用来做缓存或者存放一些热点数据,主要为了提高系统的响应速度。在我们平常使用中,我们可能都习惯的使用 keys * 命令来查询数据库中的数据存储情况。