随笔分类 -  Java

摘要:在上一篇博客中,我们准备好了数据。现在数据已经以我们需要的格式,存放在Elasticsearch中了。 本文讲述如何在Elasticsearch中进行空间GEO查询和聚合查询,以及如何准备ajax接口。 平台的服务端部分使用的springboot+mybatis的基本开发模式。工程结构如下。 可以看 阅读全文
posted @ 2018-02-01 15:20 扎心了老铁 阅读(3610) 评论(1) 推荐(3) 编辑
摘要:在使用springboot进行开发的过程中,我们经常需要处理这样的场景:在服务启动的时候,需要向服务注册中心(例如zk)注册服务状态,以便当服务状态改变的时候,可以故障摘除和负载均衡。 我遇到过两种注册的途径: 1、在Spring的webapplication启动完成后,直接进行注册; 2、在ser 阅读全文
posted @ 2018-01-09 12:30 扎心了老铁 阅读(2679) 评论(0) 推荐(0) 编辑
摘要:本文给出如何使用Elasticsearch的Java API做类似SQL的group by聚合。 为了简单起见,只给出一级groupby即group by field1(而不涉及到多级,例如group by field1, field2, ...);如果你需要多级的groupby,在实现上可能需要拆 阅读全文
posted @ 2017-12-13 18:05 扎心了老铁 阅读(28488) 评论(3) 推荐(3) 编辑
摘要:前言 什么是mybatis二级缓存? 二级缓存是多个sqlsession共享的,其作用域是mapper的同一个namespace。 即,在不同的sqlsession中,相同的namespace下,相同的sql语句,并且sql模板中参数也相同的,会命中缓存。 第一次执行完毕会将数据库中查询的数据写到缓 阅读全文
posted @ 2017-12-11 08:26 扎心了老铁 阅读(16532) 评论(0) 推荐(2) 编辑
摘要:前言 在web开发过程中涉及到表格时,例如dataTable,就会产生分页的需求,通常我们将分页方式分为两种:前端分页和后端分页。 前端分页 一次性请求数据表格中的所有记录(ajax),然后在前端缓存并且计算count和分页逻辑,一般前端组件(例如dataTable)会提供分页动作。 特点是:简单, 阅读全文
posted @ 2017-12-07 12:19 扎心了老铁 阅读(202631) 评论(7) 推荐(14) 编辑
摘要:commons-pool和commons-pool2是用来建立对象池的框架,提供了一些将对象池化必须要实现的接口和一些默认动作。对象池化之后可以通过pool的概念去管理其生命周期,例如对象的创建,使用,销毁等。例如我们通常使用的连接池,连接池可以有效管理连接的数量和状态,保证连接资源的情况而且避免并 阅读全文
posted @ 2017-10-15 21:57 扎心了老铁 阅读(2395) 评论(0) 推荐(0) 编辑
摘要:SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter。 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor来实现的。 在SpringMVC中定义一个Interceptor非常 阅读全文
posted @ 2017-10-11 19:40 扎心了老铁 阅读(10693) 评论(0) 推荐(0) 编辑
摘要:本文介绍在使用curator框架的时候如何handle session expire。 1、什么是zookeeper的会话过期? 一般来说,我们使用zookeeper是集群形式,如下图,client和zookeeper集群(3个实例)建立一个会话session。 在这个会话session当中,cli 阅读全文
posted @ 2017-09-18 15:04 扎心了老铁 阅读(19921) 评论(1) 推荐(1) 编辑
摘要:在Dao层,通过数据库表反向生成,可以节省我们很多的精力,把更多的精力投入复杂的业务中。 数据库表反向生成,指的是通过数据库如mysql中的库表schema生成dao层读写表的基础代码,包括model(entity)和dao(mapper)。 在本文中我先介绍java中mybatis-generat 阅读全文
posted @ 2017-09-08 18:14 扎心了老铁 阅读(17170) 评论(0) 推荐(1) 编辑
摘要:左外链接(leftOuterJoin) spark实现 阅读全文
posted @ 2017-08-29 18:04 扎心了老铁 阅读(413) 评论(0) 推荐(0) 编辑
摘要:topN算法,spark实现 阅读全文
posted @ 2017-08-27 00:31 扎心了老铁 阅读(2929) 评论(0) 推荐(0) 编辑
摘要:对这段时间redis性能调优做一个记录。 1、单进程单线程 redis是单进程单线程实现的,如果你没有特殊的配置,redis内部默认是FIFO排队,即你对redis的访问都是要在redis进行排队,先入先出的串行执行。 之所以能够保持高性能是因为以下3点: 1)内存操作 2)数据结构简单 3)大多数 阅读全文
posted @ 2017-08-26 18:16 扎心了老铁 阅读(1254) 评论(0) 推荐(0) 编辑
摘要:我们这里用一个简单的小功能来演示一下如何使用springboot集成thrift 这个功能是,判断hdfs路径存在。 1、先解决依赖 2、编译thrift文件 先安装thrift编译器。 jazz.thrift文件如下。namespace相当于java里的package。thrift文件的写法这里就 阅读全文
posted @ 2017-08-23 20:07 扎心了老铁 阅读(7671) 评论(0) 推荐(0) 编辑
摘要:本文介绍如何在springboot项目中集成kafka收发message。 1、先解决依赖 springboot相关的依赖我们就不提了,和kafka相关的只依赖一个spring-kafka集成包 这里我们先把配置文件展示一下 2、Configuration:Kafka producer 1)通过@C 阅读全文
posted @ 2017-08-13 14:21 扎心了老铁 阅读(97606) 评论(1) 推荐(6) 编辑
摘要:1、单机锁 考虑在并发场景并且存在竞态的状况下,我们就要实现同步机制了,最简单的同步机制就是加锁。 加锁可以帮我们锁住资源,如内存中的变量,或者锁住临界区(线程中的一段代码),使得同一个时刻只有一个线程能访问某一个区域。 如果是单实例(单进程部署),那么单机锁就可以满足我们的要求了,如synchro 阅读全文
posted @ 2017-08-07 12:31 扎心了老铁 阅读(1837) 评论(0) 推荐(1) 编辑
摘要:本文介绍如何使用springboot的sheduled实现任务的定时调度,并将调度的任务实现为并发的方式。 1、定时调度配置scheduled 1)注册定时任务 2)启动定时任务 这里就介绍两种配置调度时间的方式: 1)cron表达式 2)fixedRate,调度频率也就是调度间隔 如下代码中设置的 阅读全文
posted @ 2017-08-04 17:09 扎心了老铁 阅读(4607) 评论(0) 推荐(1) 编辑
摘要:在分布式系统设计中,选主是一个常见的场景。选主是一个这样的过程,通过选主,主节点被选择出来控制其他节点或者是分配任务。 选主算法要满足的几个特征: 1)各个节点均衡的获得成为主节点的权利,一旦主节点被选出,其他的节点可以感知到谁是主节点,被服从分配。 2)主节点是唯一存在的 3)一旦主节点失效,宕机 阅读全文
posted @ 2017-07-29 23:04 扎心了老铁 阅读(10339) 评论(0) 推荐(3) 编辑
摘要:1、篇首语 curator是zookeeper的一个高级api开发包。封装了zookeeper众多的recipes,并且实现了一些新的recipes原语,最重要的是基于zookeeper提供的各种机制实现了更健壮的连接和异常处理。 本文将其中比较常用的一种recipe,就是cache。 2、各种Ca 阅读全文
posted @ 2017-07-27 17:11 扎心了老铁 阅读(7004) 评论(1) 推荐(1) 编辑
摘要:本文处理的场景如下,hive表中的数据,对其中的多列进行判重deduplicate。 1、先解决依赖,spark相关的所有包,pom.xml spark-hive是我们进行hive表spark处理的关键。 2、spark-client 3、判重流程 4、运行方式 提交任务脚本 运行: 结果 阅读全文
posted @ 2017-07-22 23:57 扎心了老铁 阅读(1224) 评论(0) 推荐(1) 编辑
摘要:上文介绍了hdfs集群信息的读取方式,本文说hive 1、先解决依赖 2、配置文件 这里我们给出一种简单的配置方法,就是直接将hive-site.xml通过添加文件的方式加载到配置 例如,hive-site.xml中的配置如下 3、hive client api 说明: 1、hiveConf.add 阅读全文
posted @ 2017-07-22 15:50 扎心了老铁 阅读(8804) 评论(0) 推荐(1) 编辑