- 博客(97)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 如何实现高效联表查询
本地缓存缓存作为提高性能一种可选方式最先被考虑,其具有简单、易用、高效的特性。在结合Java8之后的新特性 Lambda 表达式,可以轻松实现类似 Join、Groupby、Sort 操作。这个方式也是我首选的处理方式。其本质是将原本数据库处理压力转嫁到服务器内存中,鉴于现在绝大多数公司都是分布式架构,服务性能相比单体架构有明显的提升,反观,MySQL 在分布式时代常常成为性能的瓶颈,从而衍生出 TiDB 这类分布式数据库。但缓存方式存在明显的短板—不适合大数据量操作,容易导致 Out Of Memo
2021-07-28 22:53:16
975
原创 Kakfa Producer 干货篇
Kafka Producer 是负责向 Kafka 服务发送消息的应用程序,该文不讲故事,跟多偏重于原理和思考方面,对于 Kafka 没有任何了解的人,可能有点困难和枯燥。KafkaProducerKafkaProducer 线程安全,支持多个线程共享同一个实例对象。ProducerRecordpublic class ProducerRecord<K, V> { pr...
2020-03-19 19:44:49
547
原创 Kylin 实时流处理技术探秘.笔记
有了解过 Kylin 的都知道其主要是在离线方面的处理,在实时方面的处理大家知之甚少,我希望把自己最近学到的分享给大家。社区其实在 1.6 版本中已经提供了近实时的方案,其存在分钟级别的准备时间,在对实时要求比较迫切的场景,这种是不能容忍的,于此同时其实现方式是通过每一个批次数据创建一个 segment,一个 segment 对应一个 HBase Table,长期以往会导致大量的 HBase T...
2020-03-12 20:24:53
616
原创 Doris 一种实时多维分析的解决方案
DorisDoris 这类 MPP 架构的 OLAP 数据库,通常都是通过提高并发,来处理大量数据的。本质上,Doris 的数据存储在类似 SSTable(Sorted String Table)的数据结构中。该结构是一种有序的数据结构,可以按照指定的列进行排序存储。在这种数据结构上,以排序列作为条件进行查找,会非常的高效。限制在 Count(*) 语法方面,原生的方式性能不是特别高,需要...
2020-03-10 21:01:48
5357
原创 Github Actions 持续集成服务
什么是 Github ActionsGitHub Actions 是 GitHub 的持续集成服务,于2018年10月推出。是一种可以替换 Travis CI 作为 CI/CD 的解决方案。我也是近期存在一个需求,才开始进行尝试的,毕竟学了用是最好的学习方法。可能存在一部分同学对持续集成服务(CI/CD)到底能做什么不是特别的有概念,例如:你将代码提交到 Github 仓库,马上将代码打包,发...
2020-03-04 19:52:01
298
原创 阿里笔记之数据模型
文章目录数据模型名词说明业务板块公共定义项目管理维度业务过程指标统计粒度事实事实的设计准则事实表事实表设计原则事实表设计方法声明粒度确定事实冗余维度事务事实表设计过程事务事实表分类多事务事实表两种事务事实表如何选择周期快照事实表特性用快照采样状态快照粒度密度与稀疏性半可加性快照事实表分类设计步骤单维度的每天快照事实表混合维度的每天快照事实表全量快照事实表累计快照事实表设计过程业务过程确定粒度确定维...
2020-02-13 21:40:38
1156
原创 Taro 开发常见问题与解决方案
Taro-ui按钮UI与官网示例不一致其原因是微信小程序调试基础库版本太低导致的,在 Taro-ui 文档常见问题中有相应的涉及,必须大于v2.2.3版本。具体操作...
2020-02-08 19:36:13
929
原创 数据治理--元数据
数据治理–元数据元数据是对某个潜在信息性对象做出的陈述。在浏览其他网页的时候会看到元数据被称之为 “数据的数据”。为了更好的描述元数据到底是什么东西,我以一本《Metadata》书作为例子进行说明。《Metadata》第二页记录着该书的 CIP 信息、作者、出版社、书号、定价、印次、字数等信息,而这些信息都是用于描述《Metadata》这本书的元数据。一条元数据记录就是关于一个资源的主谓宾陈述...
2020-02-08 13:49:27
2282
原创 Phoenix 数据导入与导出
Phoenix 官方提供了相应的导入和导出的方案,分别位于:导入:https://phoenix.apache.org/bulk_dataload.html导入、导出:https://phoenix.apache.org/pig_integration.html导出需要依赖 Apache Pig 相应进行实现。我们先来聊聊如何导出吧。**环境:**HDP 3.0.0、HBase 2.0.0...
2019-05-15 19:02:55
6801
4
原创 Kafka 日志存储
Kafka 日志存储在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafka 服务器运行产生的日志文件,这一点希望大家清楚。Kafka 消息是以主题为单位进行归类,各个主题之间是彼此独立的,互不影响。每个主题又可以分为一个或多个分区。每个分区各自存在一个记录消息数据的日志文件。也就是该文要着重关注的内容。我们根据如下的图进行进一步说明...
2019-05-11 16:38:00
3958
原创 HBase Thrift with Python
说在文前本文内容是基于 Centos 7、HDP 3.0.0、HBase 2.0.0、Python 2.7 环境下,其他环境的童鞋选择性进行参考安装 Thrift安装依赖包yum install -y automake libtool flex bison pkgconfig gcc-c++ libevent-devel zlib-devel python-devel ruby-devel...
2019-05-08 21:36:15
961
原创 HBase 2.0 协处理器实现 ES 数据同步
标签:hbase 2.0、elasticsearch、Coprocessor、协处理器在正式进行讲述实现之前,我觉得有必要说一下出发点。团队期初数据都是基于 HBase+Phoenix 这样架构进行持久化。随着业务的复杂性增加,对部分表的查询效率和查询条件多样性,提出了更高的要求。HBase+Phoenix 就会出现索引滥用。变更索引变的特别的频繁,同时一些数据客观的表,变更索引的代价是非常...
2019-01-30 19:21:41
3265
4
原创 记一次HDFS Delegation Token失效问题(续)
在上篇讲到了,HDFS Delegation Token 问题的解决方法是 Spark-Submit 方式可以进行解决,经过了一段时间的反思和查看 Livy 和 Spark-Submit 两者日志之后,有了一点新发现,并且测试认证了,该方式是可行的,那么是怎么实现的呢?上篇传输门:地址上文我有提到 livy spengo 是通过代理的方式实现 Kerberos 的认证的,当使用类似于 Sp...
2019-01-22 11:16:58
946
1
原创 记一次HDFS Delegation Token失效问题
由于我们团队是最近上的 Kerberos ,免不了会出现一些问题,现阶段还处于踩坑阶段。希望通过我们的填坑的经历,帮助到同样身处坑内的伙伴。我们使用的 Hortonworks-HDP 环境。HDFS Delegation Token 问题被发现于一个 Long Running 的 Spark 应用。由于发布周期原因,部分应用超过了 7 天的有效期时间,突然在同一时间,爆发出来。当时觉得很诡异,在...
2019-01-17 09:42:24
5507
原创 记一次大数据爬坑
前言VertxVertx是一个高效的异步框架,支持Java、Scala、JavaScript、Kotlin等多种语言。在非性能调优的场景下,TPS可以高达2-3万,同时,支持多种数据源也提供了异步支持。Phoenix大数据的同学肯定对其很了解,是Apache基金会下的顶级工程,Phoenix帮助Hbase提供了SQL语法的支持,使难用的Hbase变得简单易用。Hba...
2018-04-18 20:41:36
606
原创 Vertx-Phoenix实践
Vertx-Phoenix实践前言VertxVertx是一个高效的异步框架,支持Java、Scala、JavaScript、Kotlin等多种语言。在非性能调优的场景下,TPS可以高达2-3万,同时,支持多种数据源也提供了异步支持。Phoenix大数据的同学肯定对其很了解,是Apache基金会下的顶级工程,Phoenix帮助Hbase提供了SQL语法的支持,让难用的...
2018-04-18 19:35:39
926
原创 Git如何帮你查原因
不久前,一位同事为Git的出错,感到烦恼,查找问题的方式非常原始,对于乐于敲命令行的我来说,这哪是一个程序员的所作所为呢!接下来就来说说,怎么高效的查找Git提交出现代码问题的原因。使用【Bisect命令】,是不是很陌生呢。其还是很强大的,先来说一下原理吧!其基于二分查找算法,大概是这样的:如果你想在有 n 个元素的序列(有序的)中查找元素 x,你挑出第 n/2 个元素并将其与元素 x 比较。如果
2016-12-28 08:49:11
486
原创 pndaox不再需要写mybatis的SQL
之前有个同事在抱怨,最烦写mybatis的SQL语句了,表中新增一个字段还要特意处理一下,动不动还会留一些问题在上面。没错,那位同事就是——ME。之前在Google,寻找的方向是怎么解决mybatis的SQL文件的初始化工具,并没往去除的方向,觉得这个就有点大胆。万万没想到,找到了一款名为pndao的开源工具包。其兼容原有的mybatis模式,有些比较复杂的SQL语句,你可以在XML文件中进行编辑。
2016-11-22 08:54:53
1748
原创 从使用场景学Git
说明 1、在[…]中的内容,需要根据实际情况进行修改1、克隆工程 将远程的数据复制一份到本地#【仓库copy地址】git clone [git@rep.xx.com:zoeminghong/hello.git]2、本地新建Git工程 现在打算将本地的工程,放到Git仓库进行托管了,并且远程Git仓库已经创建了该项目的工程#本地初始化工程,会生成一个.git文件git init#
2016-11-09 08:22:49
464
原创 手把手叫你一台电脑配置两个Git账户
假设环境 帐号一:github 帐号二:gitlab配置帐号一生成ssh密钥1、安装Git软件2、在桌面打开Git,进行设置git config --global user.name "userName"//github的帐号名(也可以自定义)git config --global user.email "emailAdress"//github的邮箱地址(也可以自定义)3、
2016-09-28 22:34:35
5299
1
原创 Go语言通过指令的方式拷贝文件
package mainimport ( "bufio" "flag" "fmt" "io" "os" "strings")func fileExists(fileName string) bool { _, err := os.Stat(fileName) return err == nil || os.IsExist(err)}
2016-09-20 22:29:33
1396
原创 使用NodeJS调用Dubbo工程
使用NodeJS调用Dubbo工程使用node-zookeeper-dubbo模块进行处理,官方的文档还是有些简陋,我进行进一步的讲解1、安装node-zookeeper-dubbonpm install node-zookeeper-dubbo --savenpm install request --save2、示例var request = require('request');var Se
2016-07-27 16:35:51
11102
3
原创 Canvas基础知识积累
Canvas创建canvas<canvas id="canvas"></canvas>一般都要存在IDwidth和height建议直接在<canvas>中直接设定,不要使用css的方式去设定长和高,并且其是没有px单位的,因其也表示精度width和height还可以使用JS的方式进行设定,在Element对象中存在width和height属性,可以进行设定获取Canvas对象var canv
2016-07-12 08:21:01
397
原创 JFormJS说明文档
JForm用于HTML的表单初始化赋值和表单数据提交的轻量级Jquery插件 类型 配置 text、textarea data-text=”text” checkbox data-text=”checkbox” select data-text=”select” radio data-text=”radio”表单赋值目前只支持Json格式数据进行表单初始化调用
2016-07-08 22:14:57
619
原创 Redis的Spring配置讲解
Redis是一种特殊类型的数据库,他被称之为key-value存储本文覆盖缓存和存储两方面进行说明,使用的是Spring 4.0和Java配置方式代码地址下载地址:https://github.com/zoeminghong/springmvc-javaconfig存储Redis的配置package springmvc.rootconfig;import org.springframework.ca
2016-07-06 09:11:01
14275
原创 当MongoDB遇上Spring
Spring-data对MongoDB进行了很好的支持,接下来就讲解一下关于Spring对MongoDB的配置和一些正常的使用我下面的工程使用的是Spring的Java配置的方式和Maven构建具体的工程代码大家可以访问我的Github地址:https://github.com/zoeminghong/springmvc-javaconfig①MongoDB的必要配置package springmv
2016-07-04 18:18:18
4147
2
原创 jQuery Validate多实例讲解
规则 描述 required:true 必须输入的字段。 remote:”check.php” 使用 ajax 方法调用 check.php 验证输入值。 email:true 必须输入正确格式的电子邮件。 url:true 必须输入正确格式的网址。 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。 dateISO:true
2016-06-29 09:50:57
1505
原创 JAVA_NIO详细解析说明
Java NIO是一个用来替代标准Java IO API的新型数据传递方式,像现在分布式架构中会经常存在他的身影。其比传统的IO更加高效,非阻塞,异步,双向NIO主体结构Java NIO的主要构成核心就是Buffer、Channel和Selector这三个对于Channel我想要提醒的是,Channel中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入使用Selector,得向
2016-06-08 16:34:05
3977
原创 Java反射获取类和对象信息全解析
反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题。在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了。获取类对象Class.forName(String clazzName)静态方法调用类的class属性,Person.class返回的就是Person的class对象(推荐使用)调用某个对象的getClass()方法 具体使
2016-06-06 17:26:33
6105
原创 Java代理设计模式详解
代理即通过代理类,找到适合你的实现类。相当于现实生活中的中介的角色,你想租房子,这个时候你又不想自己找房子,那你可以找中介,通过中介找到合适自己的房子,同时你也可以让中介帮你签合同等其他事宜。代理存在静态代理和动态代理两种静态代理public interface Sourceable { public void method(); } public class Source imp
2016-06-01 14:40:51
353
原创 JAVA类加载机制全解析
当程序使用某个类时,如果该类还没被初始化,加载到内存中,则系统会通过加载、连接、初始化三个过程来对该类进行初始化。该过程就被称为类的初始化类加载指将类的class文件读入内存,并为之创建一个java.lang.Class的对象类文件来源从本地文件系统加载的class文件从JAR包加载class文件从网络加载class文件把一个Java源文件动态编译,并执行加载 类加载器通常无须等到“首次使
2016-05-31 16:15:50
437
原创 直接明了的告诉你——对象与内存控制
JVM的垃圾回收机制是由一条后台线程执行的,其本身也是非常消耗内存的,因此,滥用创建对象,会导致性能大大下降,对内存的分配的了解就显得尤为重要变量分类局部变量形参:存在于方法签名中定义的局部变量,有方法调用者为其赋值,随着方法的结束而消亡方法内部变量:在方法内部定义的局部变量,必须在方法内对其进行显示初始化,随着方法的结束而消亡代码块内部的局部变量:在代码块内定义的局部变量,必须在代码块内对其
2016-05-26 15:20:36
496
原创 Java枚举全解析
enum关键字与class和interface地位相同,其一样有成员变量、方法、可以实现一个或多个接口,也可以有构造器枚举类与普通类的区别枚举类的父类是java.lang.Enum类非抽象枚举类默认使用final修饰,不能存在子类枚举类的构造器只能使用private修饰符,默认就是private枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远不能产生实例,列出的实例,系统会自
2016-05-25 09:40:58
408
原创 Java泛型全解析
把一个对象放进集合中之后,集合就会忘记这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成Object类型了为了解决上面的问题,就引出了泛型这一个概念泛型接口和类
2016-05-25 09:34:04
368
转载 Java 远程通讯技术及原理分析
消息模式归根结底,企业应用系统就是对数据的处理,而对于一个拥有多个子系统的企业应用系统而言,它的基础支撑无疑就是对消息的处理。与对象不同,消息本质上是一种数据结构(当然,对象也可以看做是一种特殊的消息),它包含消费者与服务双方都能识别的数据,这些数据需要在不同的进程(机器)之间进行传递,并可能会被多个完全不同的客户端消费。消息传递相较文件传递与远程过程调用(RPC)而言,似乎更胜一筹,因为它具有更好
2016-05-20 15:38:57
633
转载 ActiveMQ+Spring工程创建详解(附工程文件)
ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序
2016-05-19 15:30:37
1399
原创 Lambda真的挺好玩的
Lambda相当于就是一个匿名方法,其在代替匿名内部类创建对象的时候,Lambda表达式代码块会代替实现抽象方法的方法体Lambda表达式的目标类型必须是“函数式接口(FunctionalInterface)”。函数式接口只能包含一个抽象方法接口。函数式接口可以包含多个默认方法、类方法、但只能一个抽象方法函数式接口有且只有一个没有default关键字修饰的接口 可以多个default关键字的抽象
2016-05-18 11:33:58
359
原创 Dubbo+SpringMVC工程创建详解(附工程文件)
Dubbo+SpringMVC工程创建详解(附工程文件)Dubbo出现的目的是为了应对现在高并发,高数据量请求的问题。目前的垂直应用架构已经无法满足现在大数据的冲击,SOA就应运而生,而Dubbo在国内使用的还是比较多,稳定性也比较不错。架构节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的
2016-05-17 15:53:35
5703
原创 SpringAOP面向切面详解(带实例)
了解AOP的相关术语1.通知(Advice):通知定义了切面是什么,以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。3.切入点(Pointcut):通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,Spring中允
2016-05-13 14:06:55
14713
2
Textbox Databinding无效
2015-01-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人