elasticsearch 地理信息处理(java)
移动对象数据库和地理信息数据库有不少,它们在处理地信方面能力强大。比如Oracle和阿里云库。公司用的MySQL没有这种能力,需要通过业务代码来实现。不过公司使用的中间件,比如es和hbase都有地信索引和计算能力。这里简单说一下es的地理信息处理方式。
路漫漫其修远兮,吾将上下而求索
移动对象数据库和地理信息数据库有不少,它们在处理地信方面能力强大。比如Oracle和阿里云库。公司用的MySQL没有这种能力,需要通过业务代码来实现。不过公司使用的中间件,比如es和hbase都有地信索引和计算能力。这里简单说一下es的地理信息处理方式。
ASM 中生成和转换字节码的API主要是基于抽象类 ClassVisitor 的。这里讲一下 ClassVisitor 的用法。
java类文件的结构实际很简单,它不像本地可执行文件那样,类文件保留了源代码中的结构和几乎全部的符号信息。
ASM 是一个Java运行时增强工具,与之类似的还有javassist。ASM 这个名字来源于C语言中内联汇编的关键字__asm,所以它没有特定的含义指向。
本来对高德印象不错,感觉它的地图做得比较用心,现在又依附阿里大厂,服务应该不错吧。可是一次打车后的体验,让我再也不敢使用高德服务 。
Java模块系统是给Java语言上增加的一项十分完善的特性。可能正是由于它是如此的丰富和完善(如之前介绍的用于兼容老代码的非具名模块,更加细腻的访问控制等),才一直从原定的Java7中拖延到了Java9中。本文介绍一点模块中的高级场景。
Java的ServiceLoader(java.util.ServiceLoader,服务加载器)不是Java9中才出现的,Java6就开始使用了。这里的服务,可以简单的理解为Java接口,加载器加载的是接口的实现类(也可以说成服务是实现了接口的类)。在Java9以前主要用于实现spi机制,也就是动态加载实现类。Java9赋予了它新的功能,这篇文章简单讲一下ServiceLoader的使用。
Akka显然不是银弹。如果Akka很完美,那现在在开发领域也没spring框架什么事了,甚至没Java的事了:Akka会凭一己之力把Scala推向JVM第一编程语言的宝座。而现在并没有:这也不是我希望的,毕竟我喜欢Java还是远超Scala。Akka由其特性,限定了它能用的主要场景有限(但不是很少)。这篇文章简介描述一下Akka的使用场景和基本原理。
Pony语言,或者称为ponylang,是一门小众语言。诞生了有两三年,但是一直不温不火。它是基于Actor模型创建的语言,所以能够使用Actor模型的场景可以使用它。比如事件驱动、高并发、低延迟等。不过它的前辈,smalltalk、erlang、akka模型,没有一个🔥的,它想🔥还十分艰难。
在Java9以前,我们常有这种“痛楚”:写出来的类只想给应用内其他某个包中的类引用,但是由于声明为public的,导致任何一个类都可以引用。 java的模块系统可以帮我们避免这种情况。这里简单介绍一下如何更加严格的控制访问。
Spring体系是Java开发中用的最多的框架,目前主要都用springboot。Akka是基于事件驱动的Actor模型,使用Scala开发,但也提供了Java版本的库。 这里简单演示一下如何在Spring项目中使用Akka。
这里我们通过命令行来体验一下如何使用Java的模块。我的机器是Mac,但是其他机器也都一样,只是命令上有稍微的差别。最主要的是要记住使用Java 9+版本。