自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

vincent

一个对coding有独特追求的人。

  • 博客(32)
  • 资源 (5)
  • 收藏
  • 关注

原创 三种实现分布式锁的方式

一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均...

2018-06-14 15:01:57 251120 78

原创 MyBatis 之 十道常见的面试题

1. #{}和${}的区别是什么?#{}是预编译处理,${}是字符串替换。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;Mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。2. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么...

2018-06-13 16:30:29 1843

原创 常用排序算法总结(2)-- 非比较排序算法

上一篇总结了常用的比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。这篇文章中我们来探讨一下常用的非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。这里我们用到的唯一数据结构就是数组,当然我们也可以利用链表来实现下述算法。需要三个数组:待排序数组 int[] arr = new int[]{1,4,3,4,3};辅助计数数组 ...

2018-06-13 14:18:53 1506

原创 常用排序算法总结(1)-- 比较排序

我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。排序算法大体可分为两种:一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。这里我们来探讨一下常用的比较排序算法,非比较排序算法将在下一篇文章中介绍。下表给出了常...

2018-06-12 15:01:48 15349

原创 JVM 之(16)方法调用

前言Java具备三种特性:封装、继承、多态。Java文件在编译过程中不会进行传统编译的连接步骤,方法调用的目标方法以符号引用的方式存储在Class文件中,这种多态特性给Java带来了更灵活的扩展能力,但也使得方法调用变得相对复杂,需要在类加载期间,甚至到运行期间才能确定目标方法的直接引用。方法调用所有方法调用的目标方法在Class文件里面都是常量池中的符号引用。在类加载的解析阶段,如果一个方法在运...

2018-06-09 23:20:43 683

原创 JVM 之(15)局部变量表

        在《JVM 之(1)运行时数据区》提到,虚拟机栈是描述Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。本篇主要分析局部变量表的原理结构。        局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序被编译为Class文件时,就在方法的Code属...

2018-06-09 21:25:45 8923

原创 JVM 之 (14) 类加载器详解和双亲委派模型

类加载器        虚拟机设计团队把类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的模块称为“类加载器”。类加载器分类      启动(Bootstrap)类加载器        启动类加载器主要加载的是JVM自身需要的类,这个类加载使用C++语言实现的,是虚拟机自身的一部分,它负责...

2018-06-09 18:15:19 4027

转载 JVM 之 (13) 类加载机制——案例分析

  在《JVM 之 (12) 类加载机制》一文中详细阐述了类加载的过程,并举了几个例子进行了简要分析,在文章的最后留了一个悬念给各位,这里来揭开这个悬念。建议先看完《JVM 之 (12) 类加载机制》这篇再来看这个,印象会比较深刻,如若不然,也没什么关系~~ 下面是程序代码:package jvm.classload;public class StaticTest{ public s...

2018-06-09 14:38:02 287

原创 JVM 之 (12) 类加载机制

一、Java类加载机制1.概述       Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。      虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接...

2018-06-09 14:26:38 5610

原创 JVM 之 (11)字节码指令

加载和内存指令 记载和内存指令是用于将数据在栈帧中的局部变量表和操作数栈之间来回传输 将局部变量表加载到操作数栈:iload lload fload dload aload 将一个数值从操作数占存储到局部变量表: istore lfda 将一个常量加载到操作数栈: bipush sipush ldc ldc_w ldc2_w aconst_null iconst_m1 iconst_m1 扩充局部...

2018-06-09 14:24:59 1790 2

转载 JVM 之 (10)Class文件结构

Class文件是一组以8位字节为基础单位的二进制流,包含多个数据项目(数据项目的顺序,占用的字节数均由规范定义),各个数据项目严格按照顺序紧凑的排列在Class文件中,不包含任何分隔符,使得整个Class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙。当遇到需要占用超过8位字节以上空间的数据项目时,会按照高位在前的方式分割为多个8位字节进行存储数据项目分为2种基本数据类型(以及由这两种基...

2018-06-09 14:23:48 366

原创 JVM 之(9)虚拟机监控工具(可视化)

1、Jconsole           从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。(1)启动        目录在 jdk\bin\jconsole.ex...

2018-06-06 14:10:45 9974 1

原创 JVM 之(8)虚拟机监控工具(命令行)

1.jps (Java Virtual Machine Process Status Tool)      用来查看基于HotSpot的JVM里面中,所有具有访问权限的Java进程的具体状态, 包括进程ID,进程启动的路径及启动参数等等,与unix上的ps类似,只不过jps是用来显示java进程,可以把jps理解为ps的一个子集。    jps [options] [hostid]    如果不指...

2018-06-05 18:34:22 2264

原创 JVM 之(7)内存分配

堆内存划分为 新生代(Eden空间、Survivor空间)和 老年代(Tenured/Old 空间)。1.对象优先在Eden分配大多是情况下,对象在新生代Eden区中分配。当Eden区中没有足够空间进行分配时,虚拟机将发起一次Minor GC-verbose:gc  -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps 打印gc日志 -Xms20M -Xmx20M...

2018-06-05 12:49:58 8594

原创 Elasticsearch 之(53) Java API 基于geo_shape根据坐标查找 坐标落在店铺范围的店铺

根据坐标查找 坐标落在店铺范围的店铺构建mappingPUT /example{ "mappings": { "doc": { "properties": { "location": { "type": "geo_shape"

2018-06-04 17:49:13 8605 4

转载 JVM 之(6)垃圾收集器总结

1、垃圾收集器的组合JAVA垃圾收集器一共有7个,减去还没有正式大规模使用的G1,还有6个,其中新生代3个,老生代3个。因为垃圾收集器都是一组一组的工作,这6个收集器一共构成了5中使用模式。参数描述-XX:+UseSerialGCJvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收-XX:+UseParNewGC打开此开关后,使用...

2018-06-04 16:10:42 385

原创 JVM 之(5)垃圾收集器

Serial收集器    串行收集器是最古老(JDK1.3.1之前),最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-整理;垃圾收集的过程中会Stop The World(服务暂停)    优点:简单高效,拥有很高的单线程收集效率    应用:Client模式下的默认新生代收集器    参数控制:-XX:+UseSeri...

2018-06-04 16:02:58 2894

原创 JVM 之(4)垃圾回收算法(标记 -清除、复制、标记-整理、分代收集)

1、标记 -清除算法(Mark-Sweep)“标记-清除”算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。    它的主要缺点有两个:        (1)效率问题:标记和清除过程的效率都不高;        (2)空间问题:...

2018-06-04 10:06:50 31468 14

原创 JVM 之(3)判断对象是否存活(引用技术法、可达性分析法、最终判定)

    堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象)1、引用计数算法(Reference Counting)    很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器都为0的对...

2018-06-03 23:02:42 9078

原创 JVM 之(2)对象的创建、内存布局、访问定位

对象的创建1.类加载检查    普通对象的创建过程:虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那么必须先执行相应的类加载过程。2.分配内存    分配内存时主要注意两个问题:1.如何分配空间。2.修改指针时如何实现线程安全。    jvm为实例对象分配空间主要有两种方法     ...

2018-06-03 21:26:11 3425

原创 JVM 之(1)运行时数据区

JVM运行时数据区线程私有的数据区程序计数器程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条执行字节码指令。JVM的多线程是通过线程轮流切换并分配处理器来实现的,对于我们来说的并行事实上一个处理器也只会执行一条线程中的...

2018-06-03 21:12:41 7427 1

原创 Elasticsearch 之(52) Java API 基于geo point地理位置对周围汽车4S店进行搜索

比如我们有很多的4s店,然后呢给了用户一个app,在某个地方的时候,可以根据当前的地理位置搜索一下,自己附近的4s店相关es restful api 可以参考:《Elasticsearch 之(39)引入geo point地理位置数据类型_矩形范围查询》《Elasticsearch 之(40)酒店o2o搜索案例以及搜索指定区域内的酒店》《Elasticsearch 之(41)搜索距离当前位置一定范...

2018-06-02 10:10:14 4158

原创 Elasticsearch 之(51) Java API 基于bool 对汽车品牌进行多种条件的组合搜索

多种条件组合查询,其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es bool api。package com.es.app;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.transport.TransportClie...

2018-06-01 14:47:48 709

原创 Elasticsearch 之(50) Java API 对汽车品牌进行全文检索、精准查询和前缀搜索

其实就要用到我们之前《 Elasticsearch 之(21)前缀搜索、通配符搜索、正则搜索、推荐搜索 和 模糊搜索》中讲解的语法package com.es.app;import java.net.InetAddress;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.clie...

2018-06-01 14:10:50 889

原创 Elasticsearch 之(49) Java API 基于search template实现按品牌分页查询模板

es的config/scripts目录下,预先保存这个复杂的模板,后缀名是.mustache,文件名是page_query_by_brand{ "from": {{from}}, "size": {{size}}, "query": { "match": { "brand.keyword": "{{brand}}" } }}在《 Elasti

2018-06-01 13:55:07 2753

原创 Elasticsearch 之(48) Java API 基于scroll实现月度销售数据批量下载

比如说,现在要下载大批量的数据,从es,放到excel中,我们说,月度,或者年度,销售记录,很多,比如几千条,几万条,几十万条其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es scroll api,对大量数据批量的获取和处理就是要看宝马的销售记录2条数据,做一个演示,每个批次下载一条宝马的销售记录,分2个批次给它下载完package com.es....

2018-06-01 13:44:22 473

原创 Elasticsearch 之(47) Java API 基于bulk实现多4S店销售数据批量上传

业务场景:有一个汽车销售公司,拥有很多家4S店,这些4S店的数据,都会在一段时间内陆续传递过来,汽车的销售数据,现在希望能够在内存中缓存比如1000条销售数据,然后一次性批量上传到es中去初始化数据PUT /car_shop/sales/1{ "brand": "宝马", "name": "宝马320", "price": 320000, "produce_dat.

2018-06-01 13:32:10 547

原创 Elasticsearch 之(46) Java API 基于mget实现多辆汽车的配置与价格对比

场景,一般来说,我们都可以在一些汽车网站上,或者在混合销售多个品牌的汽车4S店的内部,都可以在系统里调出来多个汽车的信息,放在网页上,进行对比mget,一次性将多个document的数据查询出来,放在一起显示,多个汽车的型号,一次性拿出了多辆汽车的信息package com.es.app;import org.elasticsearch.action.get.GetResponse;imp...

2018-06-01 12:58:04 374

原创 Elasticsearch 之(45) Java API 基于upsert实现汽车最新价格的调整

做一个汽车零售数据的mapping,我们要做的第一份数据,其实汽车信息PUT /car_shop{ "mappings": { "cars": { "properties": { "brand": { "type": "text",

2018-06-01 11:22:44 1390

原创 Elasticsearch 之(44) Java API client集群自动探查以及汽车零售店案例背景

1、client集群自动探查默认情况下,是根据我们手动指定的所有节点,依次轮询这些节点,来发送各种请求的,如下面的代码,我们可以手动为client指定多个节点TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(In...

2018-06-01 10:17:47 310

原创 Elasticsearch 之(43) Java API 实现 ES 的 增删改查、聚合分析

1、maven依赖<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</version></dependency&

2018-06-01 09:36:18 2173

原创 Elasticsearch 之(42) 统计当前位置每个距离范围内有多少家酒店

最后一个知识点,基于地理位置进行聚合分析我的需求就是,统计一下,举例我当前坐标的几个范围内的酒店的数量,比如说举例我0~100m有几个酒店,100m~300m有几个酒店,300m以上有几个酒店一般来说,做酒店app,一般来说,我们是不是会有一个地图,用户可以在地图上直接查看和搜索酒店,此时就可以显示出来举例你当前的位置,几个举例范围内,有多少家酒店,让用户知道,心里清楚,用户体验就比较好m (me...

2018-06-01 09:34:35 1241

PMP备考九阴真经—项目管理十大知识领域输入输出、工具和技术暨知识点汇总

PMP备考九阴真经—项目管理十大知识领域输入输出、工具和技术暨知识点汇总,PMP备考九阴真经—项目管理十大知识领域输入输出、工具和技术暨知识点汇总

2020-10-14

LOMA+280+review+with+answer (1).rar

loma280资料,英文版,包括习题集,答案,解答等信息。。。 LOMA 280介紹了保險原理,被保險人的保險過程和保單所有人的權益。這套教材同時也包括了個人和團體人壽、健康保險以及年金的內容和特點。

2020-09-02

springBatch 组件学习教程源码

springBatch 学习教程源码全套 对应博客解析:https://blog.csdn.net/wuzhiwei549/article/details/85392128

2020-04-04

java web考试报名系统

jquery前端验证 考生报名 邮件UUID 生成验证码 激活 报名注册

2015-06-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除