06 2018 档案

摘要:前言Java具备三种特性:封装、继承、多态。Java文件在编译过程中不会进行传统编译的连接步骤,方法调用的目标方法以符号引用的方式存储在Class文件中,这种多态特性给Java带来了更灵活的扩展能力,但也使得方法调用变得相对复杂,需要在类加载期间,甚至到运行期间才能确... 阅读全文
posted @ 2018-06-09 23:21 91vincent 阅读(270) 评论(0) 推荐(0) 编辑
摘要:在《JVM 之(1)运行时数据区》提到,虚拟机栈是描述Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。本篇主要分析局部变量表的原理结构。 局... 阅读全文
posted @ 2018-06-09 21:26 91vincent 阅读(573) 评论(0) 推荐(0) 编辑
摘要:类加载器 虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的模块称为“类加载器”。类加载器分类 启动(Bootstra... 阅读全文
posted @ 2018-06-09 18:15 91vincent 阅读(230) 评论(0) 推荐(0) 编辑
摘要:在《JVM 之 (12) 类加载机制》一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的最后留了一个悬念给各位,这里来揭开这个悬念。建议先看完《JVM 之 (12) 类加载机制》这篇再来看这个,印象会比较深刻,如若不然,也没什么关系~~ 下面是程... 阅读全文
posted @ 2018-06-09 14:38 91vincent 阅读(144) 评论(0) 推荐(0) 编辑
摘要:1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 ... 阅读全文
posted @ 2018-06-09 14:27 91vincent 阅读(186) 评论(0) 推荐(0) 编辑
摘要:加载和内存指令 记载和内存指令是用于将数据在栈帧中的局部变量表和操作数栈之间来回传输 将局部变量表加载到操作数栈:iload lload fload dload aload 将一个数值从操作数占存储到局部变量表: istore lfda 将一个常量加载到操作数栈: b... 阅读全文
posted @ 2018-06-09 14:25 91vincent 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Class文件是一组以8位字节为基础单位的二进制流,包含多个数据项目(数据项目的顺序,占用的字节数均由规范定义),各个数据项目严格按照顺序紧凑的排列在Class文件中,不包含任何分隔符,使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙。当遇到... 阅读全文
posted @ 2018-06-09 14:24 91vincent 阅读(199) 评论(0) 推荐(0) 编辑
摘要:1、Jconsole 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM ... 阅读全文
posted @ 2018-06-06 14:11 91vincent 阅读(339) 评论(0) 推荐(0) 编辑
摘要:1.jps (Java Virtual Machine Process Status Tool) 用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过... 阅读全文
posted @ 2018-06-05 18:34 91vincent 阅读(373) 评论(0) 推荐(0) 编辑
摘要:堆内存划分为 新生代(Eden空间、Survivor空间)和 老年代(Tenured/Old 空间)。1.对象优先在Eden分配大多是情况下,对象在新生代Eden区中分配。当Eden区中没有足够空间进行分配时,虚拟机将发起一次Minor GC-verbose:gc ... 阅读全文
posted @ 2018-06-05 12:50 91vincent 阅读(138) 评论(0) 推荐(0) 编辑
摘要:根据坐标查找 坐标落在店铺范围的店铺构建mappingPUT /example{ "mappings": { "doc": { "properties": { "location": { ... 阅读全文
posted @ 2018-06-04 17:49 91vincent 阅读(411) 评论(0) 推荐(0) 编辑
摘要:1、垃圾收集器的组合JAVA垃圾收集器一共有7个,减去还没有正式大规模使用的G1,还有6个,其中新生代3个,老生代3个。因为垃圾收集器都是一组一组的工作,这6个收集器一共构成了5中使用模式。参数描述-XX:+UseSerialGCJvm运行在Client模式下的默认值... 阅读全文
posted @ 2018-06-04 16:11 91vincent 阅读(87) 评论(0) 推荐(0) 编辑
摘要:Serial收集器 串行收集器是最古老(JDK1.3.1之前),最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代(Serial)复制算法、老年代(Serial Old)标记-整理;垃圾收集的过程中会Stop... 阅读全文
posted @ 2018-06-04 16:03 91vincent 阅读(123) 评论(0) 推荐(0) 编辑
摘要:1、标记 -清除算法(Mark-Sweep)“标记-清除”算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改... 阅读全文
posted @ 2018-06-04 10:07 91vincent 阅读(237) 评论(0) 推荐(0) 编辑
摘要:堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象)1、引用计数算法(Reference Counting) 很多教科书判断对象是否存活... 阅读全文
posted @ 2018-06-03 23:03 91vincent 阅读(330) 评论(0) 推荐(0) 编辑
摘要:对象的创建1.类加载检查 普通对象的创建过程:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那么必须先执行相应的类加载过程。2.分配内存 分... 阅读全文
posted @ 2018-06-03 21:26 91vincent 阅读(188) 评论(1) 推荐(0) 编辑
摘要:JVM运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,已经创建和销毁时间,有的区域随着虚拟机进程的启动而创建,有些区域则依赖用户线程的启动和结束而创建和销毁。根据《Java虚拟机规范(J... 阅读全文
posted @ 2018-06-03 21:13 91vincent 阅读(124) 评论(0) 推荐(0) 编辑
摘要:比如我们有很多的4s店,然后呢给了用户一个app,在某个地方的时候,可以根据当前的地理位置搜索一下,自己附近的4s店pom 文件引入 org.locationtech.spatial4j spatial4j 0.6 ... 阅读全文
posted @ 2018-06-02 10:10 91vincent 阅读(319) 评论(0) 推荐(0) 编辑
摘要:多种条件组合查询,其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es bool api。package com.es.app;import org.elasticsearch.action.search.SearchRe... 阅读全文
posted @ 2018-06-01 14:48 91vincent 阅读(171) 评论(0) 推荐(0) 编辑
摘要:其实就要用到我们之前《 Elasticsearch 之(21)前缀搜索、通配符搜索、正则搜索、推荐搜索 和 模糊搜索》中讲解的语法package com.es.app;import java.net.InetAddress;import org.elasticsear... 阅读全文
posted @ 2018-06-01 14:11 91vincent 阅读(229) 评论(0) 推荐(0) 编辑
摘要:es的config/scripts目录下,预先保存搜索模板,后缀名是.mustache,文件名是page_query_by_brand{ "from": {{from}}, "size": {{size}}, "query": { "match": { ... 阅读全文
posted @ 2018-06-01 13:55 91vincent 阅读(2382) 评论(0) 推荐(0) 编辑
摘要:比如说,现在要下载大批量的数据,从es,放到excel中,我们说,月度,或者年度,销售记录,很多,比如几千条,几万条,几十万条其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es scroll api,对大量数据批量的获取... 阅读全文
posted @ 2018-06-01 13:44 91vincent 阅读(315) 评论(0) 推荐(0) 编辑
摘要:业务场景:有一个汽车销售公司,拥有很多家4S店,这些4S店的数据,都会在一段时间内陆续传递过来,汽车的销售数据,现在希望能够在内存中缓存比如1000条销售数据,然后一次性批量上传到es中去初始化数据PUT /car_shop/sales/1{ "brand": ... 阅读全文
posted @ 2018-06-01 13:32 91vincent 阅读(285) 评论(0) 推荐(0) 编辑
摘要:场景,一般来说,我们都可以在一些汽车网站上,或者在混合销售多个品牌的汽车4S店的内部,都可以在系统里调出来多个汽车的信息,放在网页上,进行对比mget,一次性将多个document的数据查询出来,放在一起显示,多个汽车的型号,一次性拿出了多辆汽车的信息package ... 阅读全文
posted @ 2018-06-01 12:58 91vincent 阅读(217) 评论(0) 推荐(0) 编辑
摘要:做一个汽车零售数据的mapping,我们要做的第一份数据,其实汽车信息PUT /car_shop{ "mappings": { "cars": { "properties": { "brand":... 阅读全文
posted @ 2018-06-01 11:23 91vincent 阅读(201) 评论(0) 推荐(0) 编辑
摘要:前言在上篇《Elasticsearch 之(43) Java API 实现 ES 的 增删改查、聚合分析》中讲解过了一些基本的java api,包括了document增删改查,基本的搜索,基本的聚合。后面篇幅必须将java api这块深入讲解一下,介绍一些最常用的,最... 阅读全文
posted @ 2018-06-01 10:18 91vincent 阅读(150) 评论(0) 推荐(0) 编辑
摘要:1、maven依赖 org.elasticsearch.client transport 5.2.2 org.apache.logging.log4j log4j-api 2.7 org.apache.logging.log4... 阅读全文
posted @ 2018-06-01 09:36 91vincent 阅读(381) 评论(0) 推荐(0) 编辑
摘要:最后一个知识点,基于地理位置进行聚合分析我的需求就是,统计一下,举例我当前坐标的几个范围内的酒店的数量,比如说举例我0~100m有几个酒店,100m~300m有几个酒店,300m以上有几个酒店一般来说,做酒店app,一般来说,我们是不是会有一个地图,用户可以在地图上直... 阅读全文
posted @ 2018-06-01 09:35 91vincent 阅读(223) 评论(0) 推荐(0) 编辑