自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 Java 泛型

Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明...

2019-09-27 11:06:20 144

转载 MySql优化的原理浅分析

说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MyS...

2019-09-27 11:03:07 165

转载 Effective Java 之个人总结

创建和销毁对象1、静态工厂方法代替构造器静态工厂方法有名称,能确切地描述正被返回的对象。 不必每次调用都创建一个新的对象。 可以返回原返回类型的任何子类对象。 创建参数化类型实例时更加简洁,比如调用构造 HashMap 时,使用 Map<String,List<String> m = HashMap.newInstance(),与Map<String,List...

2019-09-27 11:01:07 160

转载 Spring思维导图一

与其他框架相比,spring项目拥有更多的模块,我们常用的ioc,mvc,aop等,这些是spring的主要板块。一篇文章也不可能全部都讲,所以,我打算先把spring简介说一下,后续再写ioc,mvc和aop。关于SpringSpring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用...

2019-09-27 11:00:19 763

转载 Spring思维导图二,让Spring不再难懂(ioc篇)

写过java的都知道:所有的对象都必须创建;或者说:使用对象之前必须先创建。而使用ioc之后,你就可以不再手动创建对象,而是从ioc容器中直接获取对象。就好像我们无需考虑对象的销毁回收一样,因为java垃圾回收机制帮助我们实现了这个过程;而ioc则是让我们无需考虑对象的创建过程,由ioc容器帮我们实现对象的创建、注入等过程。控制反转spring ioc容器在Spri...

2019-09-27 10:58:53 149

转载 Spring思维导图三,让Spring不再难懂(mvc篇)

生活就像海洋,只有意志坚强的人才能到达彼岸。已经很久没有发文章了呀,想必大家都挂念我了,哈哈。温故而知新,今天一起来复习一下spring mvc的内容吧。spring mvc简介与运行原理Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器映射、视图渲染、本地化、时区与主...

2019-09-27 10:57:47 83

原创 使用 Apache Commons CLI 开发命令行工具

概念说明Apache Commons CLI 简介Apache Commons CLI 是 Apache 下面的一个解析命令行输入的工具包,该工具包还提供了自动生成输出帮助文档的功能。Apache Commons CLI 支持多种输入参数格式,主要支持的格式有以下几种: POSIX(Portable Operating System Interfac...

2019-09-26 14:33:28 237

转载 写给大数据开发初学者的话(转载)

http://bigdata.evget.com/post/407.html导读:第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 第五章:快一点吧,我的SQL 第六章:一夫多妻制 第七章:越来越多的分析任务 第八章:我的数据要实时 第九章:我的数据要对外 第十章:牛逼高大上的机...

2019-09-25 10:20:33 141

转载 ZooKeeper原理与应用

简介ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。ZooKeeper是一个典型的分布式数据一致性的解决方案。分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集...

2019-08-21 11:48:09 160

原创 jedis set 的四个重载方法(byte[]的四个自动忽略)

方法定义如下:1、String set(String key, String value)2、String set(String key, String value, String nxxx) 3、String set(String key, String value, String nxxx, String expx, int time) 4、String s...

2019-08-17 23:30:26 1724

转载 平常你是怎么对Java服务进行调优的

Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将Ja...

2019-08-16 14:44:29 143

转载 分布式系统中生成全局ID的总结与思考

目录自增ID 携带时间与空间信息的ID UUID   MongoDB ObjectId 结构化ID思考 TFS文件名 总结 references正文  世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样)。又如中国人,每个中国人有自己的身份证。对于计算机,很多时候,也需要为每一份数据生成唯...

2019-08-16 00:14:06 122

转载 关于心跳、故障监测、lease机制

目录进程的状态 Failure detection gunicorn failure detection tcp keepalive 应用层心跳 Failure detector与consensus completeness vs accuracy lease 关于detector references正文    电话之于短信、微信的一个很大...

2019-08-15 23:08:16 740

转载 Tomcat在SpringBoot中是如何启动的

前言我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。从 Main 方法说起用过SpringBoot的人都知道,首先要写一个main方...

2019-08-15 09:14:18 101

转载 什么是分布式系统,如何学习分布式系统

目录什么是分布式系统 分布式系统挑战 分布式系统特性与衡量标准 组件、理论、协议 用一个请求串起来 一个简化的架构图 概念与实现 总结 references正文  虽然本人在前面也写过好几篇分布式系统相关的文章,主要包括CAP理论、分布式存储与分布式事务,但对于分布式系统,并没有一个跟清晰的概念。分布式系统涉及到很多的技术、理论与协议,很多人也说,分...

2019-08-14 23:52:39 108

转载 Hbase 之 HBase 的整体架构

HBase 系统架构图组成部件说明  Client:  使用HBase RPC机制与HMaster和HRegionServer进行通信  Client与HMaster进行通信进行管理类操作  Client与HRegionServer进行数据读写类操作  Zookeeper:  Zookeeper Quorum存储-ROOT-表地址、HMaster地址  HRegio...

2019-08-11 15:14:29 112

转载 Hbase Java API

HBase是Hadoop的数据库,能够对大数据提供随机、实时读写访问。他是开源的,分布式的,多版本的,面向列的,存储模型。在讲解的时候我首先给大家讲解一下HBase的整体结构,如下图:HBase Master是服务器负责管理所有的HRegion服务器,HBase Master并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion...

2019-08-11 14:25:15 91

转载 Protobuf的简单介绍、使用和分析

一、protobuf是什么?protobuf(Google Protocol Buffers)是Google提供一个具有高效的协议数据交换格式工具库(类似Json),但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。后面将会有简单的demo对于这两种格式的数据转化效率的对比。但这个库目前使用还不是太流行,据说谷歌内部很多产品都有使用。...

2019-08-08 23:22:38 735

原创 protobuf编译.proto文件到.java

一。下载protoc.exe工具http://central.maven.org/maven2/com/google/protobuf/protoc/3.5.1/protoc-3.5.1-windows-x86_64.exe二。准备.proto文件如:CubeVisit.protosyntax = "proto2";option java_package = "org.apa...

2019-08-08 22:51:29 3445

原创 实现HBase Coprocessor

HBase的coprocessor分为两类,Observer和EndPoint。Observer相当于触发器,代码部署在服务端,相当于对API调用的代理。介绍这方面的文章不少,在此不赘述。这里想说一下EndPoint的使用。 EndPoint相当于存储过程。0.94.x之前使用EndPoint需要实现CoprocessorProtocol接口,而0.96.x的EndPoint改为...

2019-08-08 21:50:56 184

原创 通过try-with-resource简化锁的使用

作用:通过封装ReentrantReadWriteLock,可以通过try-with-resource的形式使用锁,简化代码封装类:import java.io.Closeable;import java.util.concurrent.locks.ReentrantReadWriteLock;public class AutoReadWriteLock { ...

2019-08-04 16:11:29 614

转载 Effictive Java学习笔记

Chapter01:引言这本书的目的是帮助编写清晰正确,可用的,健壮性灵活性高和可维护的代码,而非针对高性能。主要从对象,类,接口,泛型,枚举,流,并发和序列化等方面介绍。Chapter02:对象的创建和销毁考虑使用静态工厂方法而不是构造方法创建对象 静态工厂方法的好处有: 1.静态工厂方法有方法名,可避免构造方法的重载并且易读。 2.静态工厂方法不要求每次调用都创建一个新的对象...

2019-07-14 22:30:28 279

转载 spring + mybatis框架篇

Spring篇很实用的一篇SpringMVC使用详解Spring MVC常用注解到底如何使用深入理解Spring-进阶开发必知必会-Spring-扩展接口Spring JMS---三种消息监听器1.深入理解-Spring-之源码剖析IOC(一)2.深入理解-Spring-之源码剖析IOC(二)3.如何实现一个简单的-IOC(new)4.深入理解Spring-之...

2019-07-14 22:25:26 95

转载 springboot 热部署

简述热部署就是在服务器运行时重新部署项目,——生产环境 热加载即在在运行时重新加载class,从而升级应用。——开发环境原理热加载的实现原理主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为;热加载则是在运行时...

2019-07-14 16:57:19 80

转载 Kylin 精准去重案例

用 Apache Kylin 做精准留存分析,对刷量 say『 No』!2019年 7月 10日互联网人口红利逐渐消失,越来越多的运营、市场、产品同学聚焦用户留存/转化。经常有小伙伴在 Kylin 用户群里问「Kylin 可以做留存分析吗」「Kylin 可不可以做用户增长漏斗分析呀」答案当然是「Yes!」今天为大家带来“征文赢首届 Kylin Data Summit 门票”活动的...

2019-07-14 14:47:25 438

转载 Flink 全网最全资源(视频、博客、PPT、入门、实战、源码解析、问答等持续更新)

Flink 学习https://github.com/zhisheng17/flink-learning麻烦路过的各位亲给这个项目点个 star,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧!(本篇文章由于很多链接都不能直接打开,可以在公众号内回复Flink获得更友好本篇文章阅读体验或者在文章后面点击阅读原文)本项目结构博客1、《从0到1学习Flink》...

2019-06-30 13:19:51 585

转载 Java性能优化

概述: Java是目前软件开发领域中使用最广泛的编程语言之一。Java应用程序在许多垂直领域(银行、电信、医疗保健等)中都有广泛使用。Refcard的目的是,帮助开发者通过专注于JVM内部,性能调整原则和最佳实践,以及利用现有监测和故障诊断工具,来提升应用程序在商业环境中的性能。它能以不同的方式定义“optimalperformance(最佳性能)”,但基本要素是:Java...

2019-06-30 13:12:41 110

转载 idea2018注册码激活

下载JetbrainsCrack-2.10-release-enc.jar这个jar包.然后放到D:\IntelliJ IDEA\IntelliJ IDEA 2018.1.5\binidea安装目录的的bin文件夹下然后对本文件夹下的 idea.exe.vmoptions和idea64.exe.vmoptions这两个文件进行修改打开着俩文件在最后加上这...

2019-06-27 10:14:59 10306

转载 Calcite CBO 分析1

CBO 概念提到CBO(Cost based optimization) , 如果学习过Spark SQL, HSQ的读者应该对此不会陌生,CBO的主要思想是利用等价表式替换的方式加上代价计算框架和模型迭代来优化一个SQL执行计划, 也就是说CBO = RBO + Cost Model + Model Iteration即CBO 是以RBO为基础, 通过代价模型,在一定的时间空间范围内重复迭...

2019-06-23 18:02:19 704

转载 Calcite RBO简介

RBO1. 简介RBO(Rule based optimization) 基于规则的优化。是指采用指定的等价关系代数表达式规则进行优化。所谓的等价关系代数表达式是指能产生同一结果的不同的关系表达式,比如说等价关系代数示列示列中 左图中先进行Join然后再作Filter, 而右图中先分别对Join左右两边作Filter,然后再作Filter。一般情况下右图中的执行计划会优于左边,...

2019-06-23 00:29:48 860

转载 Calcite中注册函数

很多同学在使用Calcite的过程中需要自定义函数, 现在讲讲如何定自义函数1. Calcite 内置函数和对应的流程Calcite中内置的函数主要在SqlStdOperatorTable中, 包括常见的算术运算符、时间函数等。现在就以一个列子来说明在SqlStdOperatorTable 中添加函数以达到注册函数的功能在SqlStdOperatorTable.java 中添加对应函数...

2019-06-22 22:22:48 2221

转载 Apache Calcite 简介

1. 什么是Apache Calcite ?Apache Calcite 是一款开源SQL解析工具, 可以将各种SQL语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作AST就可以把SQL中所要表达的算法与关系体现在具体代码之中。Calcite的生前为Optiq(也为Farrago), 为Java语言编写, 通过十多年的发展, 在2013年成为Apach...

2019-06-22 21:29:29 485

转载 Calcite中定制自已SQL解析器

1. 什么Sql Parser所谓Sql Parser, 就是根据某种特定的定义而生成的Sql 语法解析器。 打个比方: 在计算器中输入 1 + 2 = 之所以可以得到结果3是因为是计算器可以准确地根据上述字符解析出相应的输入参数与算法,进而计算到最终的结果。 如果输入的是1 +- 2 = 计算器可能就会提示错误, 这其实就是类似于SQL中提示语法错误,而在处理SQL的过程与处理上面的例子很类...

2019-06-22 21:28:18 7384 4

转载 Calcite 若干概念说明

1. Calcite中主要数据结构转化流程Calcite数据结构转化如图所示,SQL在Calcite中会经历以上流程,最终会生成优化过后的RelNode, 下面就以图中的各个点数据结构进行说明2. SQL到SqlNode通过Parser, 可以将Sql转化成SqlNode, 什么是SqlNode? SqlNode是Calcite中用于表达关系运算的中间数据结构,这么说可能有些抽...

2019-06-22 20:34:26 1936

转载 深度的 Apache Kylin 查询剖析

阅读本文前,请先阅读:Apache Kylin 概览 - 简书 Apache Kylin 查询流程源码剖析 - 简书一、概览如上图,sql text 到物理执行计划主要分几个阶段:sql text -> parsed SqlNode:使用 SqlParser 解析 SQL, 把 SQL 转换成为 AST(抽象语法树),用 SqlNode 来表示 parsed SqlNo...

2019-06-22 16:16:45 590

转载 Apache Kylin 查询流程源码剖析

一、Overview1.1、通过 Kylin 查询其中 olap_model_6607769716595835175.json 内容如下:{ "version": "1.0", "defaultSchema": "DEFAULT", "schemas": [ { "type": "custo...

2019-06-22 16:04:22 767

转载 RunTime.getRunTime().addShutdownHook优雅关闭线程池

有时候我们用到的程序不一定总是在JVM里面驻守,可能调用完就不用了,释放资源.RunTime.getRunTime().addShutdownHook的作用就是在JVM销毁前执行的一个线程.当然这个线程依然要自己写.利用这个性质,如果我们之前定义了一系列的线程池供程序本身使用,那么就可以在这个最后执行的线程中把这些线程池优雅的关闭掉.比如我们定义了一个线程池private Exe...

2019-06-22 15:42:53 176

转载 docker 上传图片到nginx 容器里面,域名访问图片路径

业务需要,需将base64的字符串转成图片放入服务器因为用到docker容器首先进到应用容器第一步:查看rebulid.sh文件第二步:编辑文件 rebulid.sh文件docker 外面 和里面 映射v /root/docker/nginx/html/image:/root/docker/nginx/html/image最重要的一句:起作用的一句...

2019-06-21 00:41:30 1503

转载 数据库 redis 一致性问题

场景:数据库更新,redis没有更新,查到的数据不一致,而且redis的值来自于几张表表的逻辑组合,因此任何一张表的增删改都影响redis数据库一致性的问题。但是因为并发量小,redis的值逻辑较多,因此,只需要在更新数据库之后,删除redis缓存的值,为了可以适用其他场景,做了一个切面封装,通过注解方式统一处理redis值的问题采取springboot...

2019-06-21 00:39:34 189

转载 springboot工具类注入service 类

springboot工具类注入service类@Componentpublic class FileUtils { @Autowired private PropertiesUtil properties; @Autowired private INewsInfoTableService newInfoService; private static INewsInfoTa...

2019-06-21 00:34:44 880

空空如也

空空如也

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

TA关注的人

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