自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈同学

勤奋不是马不停蹄,而是有效利用手头的时间;努力不是一味埋头苦干,而是用智慧解决问题。

  • 博客(65)
  • 资源 (4)
  • 收藏
  • 关注

转载 数据仓库研发规范

数据仓库研发规范数据仓库研发规范概述阶段规划角色职责数据仓库研发规范整体流程需求阶段首次需求流程迭代需求流程设计阶段开发阶段测试阶段发布阶段运维阶段背景信息操作步骤数据仓库研发规范概述将为您介绍数据仓库研发规范的阶段规划、角色职责和整体流程。在大数据时代,规范地进行数据资产管理已成为推动互联网、大数据、人工智能和实体经济深度融合的必要条件。贴近业务属性、兼顾研发各阶段要点的研发规范,可以切实提高研发效率,保障数据研发工作有条不紊地运作。而不完善的研发流程,会降低研发效率,增加成本与风险。总而言之,数

2021-01-28 14:01:35 1223

转载 如何组建权责明确、运营高效的数据团队

如何组建权责明确、运营高效的数据团队?数据智能团队如何分工与合作1. 数据智能团队 5 大岗位数据开发组数据产品运营组2. 团队角色与定位数据开发工程师数据分析工程师算法工程师数据产品经理数据运营人员3. 项目分工:1 个资源池 +N 个项目组一个资源池支撑项目发展N个项目组协同业务需求团队建设与产品实践1. 结构:部门构成与人员配比数据算法部数据分析部数据平台开发组创新数据产品部2. 产出:数字产品矩阵运营实践的两大关键点1. 一把手工程2. 数据产品的思维与迭代明确的战略一把手工程Data talks产

2021-01-25 17:23:40 1876

转载 数据埋点

数据埋点在埋点前,先带你避开埋点的深坑如果想要避免这些坑,就需要坚守五个原则埋点方法论——五步一全(ODEIIC),需要多角色参与统筹决策第一、需求梳理。第二、事件设计。从指标体系到事件设计三步完成“页面”事件设计三步完成“功能”事件设从分析需求到事件设计从分析方法到事件设计第三、埋点实施。第四、看板校验。第五、智能验证大部分App都没有科学的埋点规划,只采集显性数据,而更深层的与事件、参数相关的隐性数据,都没有采集到。埋点规划并不难!但为什么大部app都做的不太好?埋点规划需要整合产品、运营、技术和业务

2021-01-18 17:20:32 750

原创 jvm-调优-案例分析

jvm调优案例分析1:内存优化示例2:延迟优化示例3:检测死锁3.1 死锁产⽣条件3.3 查看进程号3.4 查看进程号3.5 jconsole 检测.3.6 Arthas检测3.6 死锁预防4 OutOfMemoryError:PermGen space5 OutOfMemoryError:Java heap space6 OutOfMemoryError: GC overhead limitexceeded7 -XX:InitialCodeCacheSize and -XX:ReservedCodeCac

2020-12-18 17:07:24 664 1

原创 jvm-调优

jvm调优1:概述1.1:JVM基础1.1.1:java堆1.1.2:垃圾回收1.1.3:STW1.2:调优层次1.3:调优指标1.4: JVM调优原则1.4.1: 优先原则1.4.2: 堆设置1.4.3: 垃圾回收器设置1.4.4:年轻代设置1.4.4:年老代设置1.4.6:⽅法区设置2:JVM调优工具3:JVM参数4:案例分析当Java程序性能达不到⽬标,且架构上的优化、代码上的优化⼿段都已经穷尽时,通常需要调整垃圾回收器和JVM内存空间配置来进⼀步提⾼性能,这就是JVM调优。JVM性能调优是个⽼⽣常

2020-12-18 17:06:44 409

原创 jvm-垃圾回收(垃圾收集器)

垃圾收集器垃圾收集器分类如何评估GC的性能指标垃圾收集器发展史经典垃圾回收器垃圾回收器的组合关系Serial(复制算法)Serial Old(标记-整理算法)ParNew (复制算法)Parallel Scavenge(复制算法)Parallel Old (标记-整理算法)CMS(Concurrent Mark Sweep)收集器(标记-清除算法)收集过程空闲列表主要优缺点常⽤参数设置⼩结G1(Garbage First)收集器 (区域化分代式)为什么叫做Garbage First(G1)呢?垃圾收集器分

2020-12-10 09:02:23 305

原创 jvm-垃圾回收(垃圾收集算法)

垃圾收集算法标记清除算法标记-清除算法的主要不⾜有复制算法应⽤场景优点缺点标记整理算法优点缺点三种算法对比分代收集算法对象分配⼀般过程对象分配的特殊情况各分代特点新⽣代(Young Generation)⽼年代(Old Generation)永久代(Permanent Generation)增量式垃圾回收分区算法当成功区分出内存中存活对象和死亡对象后,GC接下来的任务就是执⾏垃圾回收,释放掉⽆⽤对象所占⽤的内存空间,以便有⾜够的可⽤内存空间为新对象分配内存。⽬前在JVM中⽐较常⻅的三种垃圾回收算法是标记

2020-12-08 09:12:51 179

原创 jvm-垃圾回收(如何检测垃圾)

jvm-垃圾回收(如何检测垃圾、垃圾收集算法)检测垃圾引⽤计数算法(Reference Counting)概述代码示例优点:缺点:扩展知识点:Python如何解决循环引⽤?可达性分析算法(Rearchability Analysis)概述代码示例对象的finalization机制使⽤MAT查看GC Roots垃圾收集算法标记清除算法复制算法应用场景优点缺点标记整理算法优点缺点三种算法对⽐分代收集算法对象分配⼀般过程对象分配的特殊情况各分代特点分区算法检测垃圾在堆⾥放着⼏乎所有的java对象实例,在GC执

2020-12-04 14:33:15 879

原创 jvm-垃圾回收(基础知识)

垃圾回收垃圾回收相关概述什么是垃圾回收什么是GCSTW并⾏与并发并发(Concurrent)并⾏(Parallel)⼆者对⽐System.gc()安全点与安全区域安全点安全区域GC分类GC触发条件年轻代(Minor GC)触发条件⽼年代(Major GC)触发条件:FULL GC触发条件垃圾回收相关概述什么是垃圾回收垃圾指的是在运⾏程序中没有任何指针(或引⽤)指向的对象,这个对象就是需要回收的垃圾。 如果不及时对内存中的垃圾进⾏清理,那么这些垃圾对象所占⽤的内存空间⼀直保留到应⽤程序结束,被保留的空间

2020-12-02 09:19:05 194

原创 jvm-运行时数据区(程序计数器、Java虚拟机栈、本地方法栈)

文章目录程序计数器作用存储的数据异常Java虚拟机栈栈帧局部变量表存储内容存储容量其他操作数栈作用存储内容存储容量动态连接方法返回附加信息栈异常本地方法栈本地方法介绍什么是本地方法为什么要使用本地方法JVM怎样使本地方法跑起来本地方法栈的使用流程程序计数器作用程序计数器(Program Counter Register),也叫PC寄存器,是一块较小的内存空间,它可以看作是当前线程所执行的字节码指令的行号指示器。字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。分支,循环,跳

2020-12-01 13:45:42 232

原创 jvm-运行时数据区(java堆)

文章目录Java堆概念存储内容存储方式堆内存划分对象创建内存的分配原则内存分配方式内存分配安全问题对象的内存布局对象访问方式数组的内存分析Java堆概念Java堆被所有线程共享,在Java虚拟机启动时创建。是虚拟机管理最大的一块内存。Java堆是垃圾回收的主要区域,而且主要采用分代回收算法。堆进一步划分主要是为了更好的回收内存或更快的分配内存。存储内容Java虚拟机规范的描是:所有的对象实例以及数组都要在堆上分配。不过随着JIT编译器的发展与逃逸分析技术的逐渐成熟,栈上分配、标量替换优化技术将

2020-11-27 09:19:00 110

原创 jvm-运行时数据区(运行时常量池、字符串常量池)

文章目录运行时常量池和字符串常量池存储内容存储位置常量池区别字符串常量池如何存储数据字符串常量池简介字符串常量池案例分析案例分析一分析二分析三分析四分析五分析六分析七String的Intern方法详解intern的作用JDK6中的理解JDK7+的理解intern案例分析intern方法的好处运行时常量池和字符串常量池存储内容Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。

2020-11-26 20:58:51 879

原创 jvm-运行时数据区(运行时数据区概述、方法区)

运行时数据区概述运行时数据区概述JVM运行时数据区规范Hotspot运行时数据区分配jvm内存空间方法区方法区存储内容永久带与元空间区别方法区异常示例类加载导致OOM异常代码JDK1.7JDK1.8+字符串OOM异常案例代码JDK1.6JDK1.7JDK1.8+运行时数据区概述JVM运行时数据区规范jdk1.7之前,HotSpot虚拟机对于方法区的实现称之为“永久代”, Permanent Generation 。jdk1.8之后,HotSpot虚拟机对于方法区的实现称之为“元空间”, Meta

2020-11-26 09:23:02 214

原创 jvm-类加载时机、类加载器、双亲委派模型、破坏双亲委派模型

文章目录类加载时机类加载器自定义类加载器自定义类加载器步骤实践自定义类加载器的作用双亲委派模型为什么要使用双亲委托这种模型呢?但是JVM在搜索类的时候,又是如何判定两个class是相同的呢?既然JVM已经提供了默认的类加载器,为什么还要定义自已的类加载器呢?破坏双亲委派模型为什么需要破坏双亲委派?类加载时机什么时候开始加载,虚拟机规范并没有强制性的约束,对于其它大部分阶段究竟何时开始虚拟机规范也都没有进行规范,这些都是交由虚拟机的具体实现来把握。所以不同的虚拟机它们开始的时机可能是不同的。但是对于初始化

2020-11-23 19:30:24 102

原创 jvm-类加载过程(加载、验证、准备、解析)

这里写目录标题类加载过程加载加载过程加载源类和数组加载的区别加载过程的注意点验证验证的目的验证的必要性验证的过程准备解析类加载过程加载加载过程加载源类和数组加载的区别加载过程的注意点验证验证的目的验证的必要性验证的过程准备解析...

2020-11-23 17:07:14 575 1

原创 jvm-JIT使用和优化

文章目录JIT使用为什么要使用解释器与编译器并存的架构解释器与编译器特点编译的时间开销编译的空间开销为什么要使用解释器与编译器并存的架构如何编译为本地代码JIT优化公共子表达式的消除方法内联逃逸分析对象的栈上内存分配标量替换同步锁消除JIT使用为何HotSpot需要使用解释器和编译器并存的架构?JVM为什么要实现两个不同的即时编译器?程序何时会使用解释器执行?何时会使用编译器执行?哪些程序代码会被编译成为本地代码?如何编译?JAVA代码的执行效率就一定比C,C++静态执行的执行差?JAVA代码

2020-11-17 18:02:39 355

原创 JVM架构理解和程序执行流程

文章目录jvm架构理解jvm程序执行流程执行流程图编译器和解释器的协调工作流程热点代码热点检测方式热点检测方式回边计数器jvm架构理解jvm程序执行流程执行流程图Java编译成字节码、动态编译和解释为机器码的过程分析:编译器和解释器的协调工作流程在部分商用虚拟机中(如HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为热点代码。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码

2020-11-17 11:38:59 86

原创 jvm基本常识

JVM基本常识程序的执行方式主要有三种:静态编译执行、动态编译执行、动态解释执行字节码和机器码的区别机器码是电脑cpu直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,编写起来也比较难。字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器后才能成为机器码JDK、JRE、JVM的关系Oracle JDK与OpenJDK查看JDK版本 java -version如果是sun/oracle JDK 显示信息为:[root@localhost ~]# ja

2020-11-12 10:55:47 2578 6

原创 jvm知识图谱

2020-11-03 14:19:31 336

原创 hive学习笔记-hive调优

文章目录1:本地模式2:表优化2.1:小表、大表join2.2:大表、大表join2.3:map join2.4:group by2.5:count(distinct)2.6:笛卡尔积3:分区裁剪、列裁剪4:并行执行5:严格模式6:jvm重用7:开启推测执行8:压缩9:Fetch抓取10:数据倾斜10.1:合理设置Map数10.2 小文件合并10.3 复杂文件增加Map数10.4 合理设置Redu...

2020-05-08 13:51:10 204

原创 scala学习笔记-隐式转换和隐式参数

文章目录隐式转换隐式参数示例隐式转换scala提供的隐式转换和隐式参数功能,是非常有特色的功能。是java的编程语言所没有的功能。他可以允许你手动指定,将某种类型的对象转换成其他类型的对象或者是给一个类增加方法。通过这些功能,可以实现非常强大、特殊的功能。隐式转换核心就是定义一个使用implicit 关键字修饰的方法实现把一个原始类转换成目标类,进而可以调用目标类中的方法隐式参数隐...

2020-04-30 16:13:57 132

原创 scala学习笔记-上界、下界、协变、逆变、非变

1:上下界在制定泛型类型是,有时需要界定泛型类型的范围,而不是接受任意类型。例如:要求某个泛型类型,必须是某个类的子类,这样在程序中就可以翻新的调用父类的犯法,程序才能正常的使用与运行scala的上下界特性允许 泛型类型是某个类的子类,或者是某个类的父类下界类型: U<:T U必须 是类型T的父类或者是自己本身上界类型: U<: T U必须是类型T的子类或者是...

2020-04-30 14:30:34 193

原创 scala学习笔记-泛型

scala和java一样,类和特质、方法都可以支持泛型val list:[String] =List("1","2")1:定义一个泛型方法不考虑泛型支持def getMiddle(arr:Array[Int]) =arr(arr.length/2)def main(args: Array[String]): Unit = { var arr1= Array(1,2,3,4...

2020-04-23 17:28:31 101

原创 scala学习笔记-模式匹配、样例类、样例对象、Option、偏函数

文章目录1:模式匹配1.1:匹配字符串1.2:匹配类型1.3:匹配数组1.4:匹配集合1.5:匹配元组1:模式匹配1.1:匹配字符串//todo:匹配字符串object CaseDemo01 extends App{ //定义一个数组 val arr=Array("hadoop","zookeeper","spark","storm") //随机取数组中的一位,使用Rando...

2020-04-07 15:58:37 171

原创 scala学习笔记-面向对象编程(类、对象、继承、特质)

文章目录1:类1.1:定义类:1.2:构造器:2:对象2.1:scala中的object2.2:scala中的伴生对象2.3:scala中object的apply方法2.4: scala中object的main方法1:类1.1:定义类:scala是支持面向对象的,也有类和对象的概念。说明var name:String = _, _表示使用默认值进行初始化val变量不能使用_来进行...

2020-04-07 11:41:44 241

原创 scala学习笔记-高阶函数(匿名函数、柯里化、闭包)

scala高级函数使用函数值作为参数,或者返回值为函数值的函数和方法,均称之为高阶函数1:函数值作为参数//定义一个数组scala> val array=Array(1,2,3,4,5)array: Array[Int] = Array(1, 2, 3, 4, 5)//定义一个函数scala> val func=(x:Int)=>x*10func: Int ...

2020-04-07 10:40:03 222

原创 scala学习笔记-函数式编程(foreach、map、flatmap、filter、sort、groupBy、reduce、fold)

1: 遍历 - foreach方法描述foreach(f: (A) ⇒ Unit): Unit方法说明foreachAPI说明参数f: (A) ⇒ Unit接收一个函数对象函数的输入参数为集合的元素返回值为空返回值Unit空示例scala> val list=List(1,2,3,4)list: List[Int] = Li...

2020-04-03 15:49:21 244

原创 scala学习笔记-Map、Set、List

1:MapMap可以称之为映射。它是由键值对组成的集合。scala当中的Map集合与java当中的Map类似,也是key,value对形式的在scala中,Map也分为不可变Map和可变 Map。1.1: 不可变Map定义语法val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好 val/var map ...

2020-04-03 11:34:45 198

原创 scala学习笔记-数组、元组

1:数组1.1:定长数组定长数组指的是数组的长度是不允许改变的数组的元素是可以改变的语法// 通过指定长度定义数组val/var 变量名 = new Array[元素类型](数组长度)// 用元素直接初始化数组val/var 变量名 = Array(元素1, 元素2, 元素3...)注意:在scala中,数组的泛型使用[]来指定,使用()来获取元素示例:...

2020-04-01 22:14:04 198

原创 scala学习笔记-方法、函数、方法和函数的区别、方法转换成函数

文章目录1:方法2:函数3:方法和函数的区别4:方法转换成函数1:方法语法:def 方法名(参数名:参数类型, 参数名:参数类型) : [return 返回值类型] = { // 方法体:一系列的代码}说明参数列表的参数类型不能省略返回值类型可以省略,由scala编译器自动推断返回值可以不写return,默认就是{}块表达式的值示例scala> ...

2020-03-31 16:29:34 215

原创 scala学习笔记-scala的条件表达式、快表达式、循环语句(for,while)

1:scala中的条件表达式条件表达式就是if表达式,if表达式可以根据给定的条件是否满足,根据条件的结果(真或假)决定执行对应的操作。scala条件表达式的语法和Java一样。//定义变量xscala> val x =1x: Int = 1//if表达式scala> val y =if(x>0) 1 else -1y: Int = 1//支持混合类型表达...

2020-03-31 15:22:13 224

原创 scala学习笔记-scala简介、REPL交互解释器、变量声明、数据类型

1:scala简介scala是运行在 JVM 上的多范式编程语言,同时支持面向对象和面向函数编程早期scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。官网地址:http://www.scala-lang.org2:scala的REPL交互式解释器Scal...

2020-03-31 14:55:07 540

原创 flink学习笔记-flink实时数仓-实时同步msql数据到hbase(mysql->max-well->kafka->flink->hbase)

为了解决公司数据统计,数据分析等各种问题,我们可以有很多手段,最常用的手段就是通过构建数据仓库的手段来实现我们的数据分析,数据挖掘等,其中,数据仓库基本上都是统计前一天的数据,或者最近一段时间的数据,这就决定了数据仓库一般都是使用离线的技术来实现,通过离线的技术手段,来实现前一天或者近一段时间的数据统计功能,为了解决数据统计的时效性问题,我们也可以通过实时的手段来构建数据仓库,通过流式API,结合...

2020-03-30 16:38:20 4021 5

原创 flink学习笔记-table与sql简介、编程开发及DataSet、DataStream与Table相互转换

1:Flink table以及SQL的基本介绍Apache Flink 具有两个关系型API:Table API 和SQL,用于统一流和批处理。Table API 是用于 Scala 和 Java 语言的查询API,允许以非常直观的方式组合关系运算符的查询,例如 select,filter 和 join。Flink SQL 的支持是基于实现了SQL标准的 Apache Calcite。无论...

2020-03-26 08:16:46 967

原创 flink学习笔记-dataSet connector 集成hbase读写数据

Flink允许用户使用实现org.apache.hadoop.fs.FileSystem接口的任何文件系统。例如S3、 Google Cloud Storage Connector for Hadoop、 Alluxio、 XtreemFS、 FTP等各种文件系统Flink与Apache Hadoop MapReduce接口兼容,因此允许重用Hadoop MapReduce实现的代码使用H...

2020-03-25 18:20:41 1729

原创 flink学习笔记-dataSet参数传递:构造器传递、withParameters传递、全局参数传递。

在dataSet代码当中,经常用到一些参数,我们可以通过构造器的方式传递参数,或者使用withParameters方法来进行参数传递,或者使用ExecutionConfig来进行参数传递1:使用构造器来传递参数object FlinkParameter { def main(args: Array[String]): Unit = { val env=ExecutionEnv...

2020-03-25 17:03:23 1119

原创 flink学习笔记-dataSet算子:transformation算子、partition算子、sink算子

官网算子介绍:https://ci.apache.org/projects/flink/flink-docs-master/dev/batch/dataset_transformations.htmltransformation算子常用transformation算子Map:输入一个元素,然后返回一个元素,中间可以做一些清洗转换等操作FlatMap:输入一个元素,可以返回零个,...

2020-03-25 16:54:08 488

原创 flink学习笔记-dataSet内置数据源

1: 基于文件数据源readTextFile(path) / TextInputFormat:逐行读取文件并将其作为字符串(String)返回readTextFileWithValue(path) / TextValueInputFormat:逐行读取文件并将其作为StringValue返回。StringValue是Flink对String的封装,可变、可序列化,一定程度上提高性能。r...

2020-03-25 16:32:49 322

原创 flink学习笔记-广播变量、累加器、分布式缓存

1:广播变量广播变量主要分为两种方式:dataStream当中的广播变量以及dataSet当中的广播变量,这两个地方的广播变量还有一定的不一样的各自的特性,一句话解释,可以理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份,节约内存1.1:dataStream当中的广播分区将数据广播给所有的...

2020-03-25 09:20:30 420

原创 flink学习笔记-flink的DataStream集成kafka

对于实时处理当中,我们实际工作当中的数据源一般都是使用kafka,所以我们一起来看看如何通过Flink来集成kafka。flink提供了一个特有的kafka connector去读写kafka topic的数据。flink消费kafka数据,并不是完全通过跟踪kafka消费组的offset来实现去保证exactly-once的语义,而是flink内部去跟踪offset和做checkpoint去实现...

2020-03-24 14:31:44 553

Apache-Flink-Stateful-Computations-over-Data-Streams.pdf

Apache Flink Stateful Computations over Data Streams(Apache Flink 知识图谱) 由 Apache Flink Committer 执笔,四位 PMC 成员审核,将 Flink 9 大技术版块详细拆分,突出重点内容并搭配全面的学习素材。PDF 版本内含大量补充链接,点击即可跳转。

2020-05-11

hive-hbase-handler-1.2.1.jar

Hive提供了与HBase的集成,使得能够在HBase表上使用hive sql 语句进行查询 插入操作以及进行Join和Union等复杂查询、同时也可以将hive表中的数据映射到Hbase中

2020-03-19

HBase配置项说明及调优建议.xlsx

hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)

2020-03-17

kylin使用文档

ylin二进制包中包含了一份用于测试的样例数据集,总共大小仅1MB左右,共计3张表,其中事实表有 10000条数据。因为数据规模较小,方便在虚拟机中进行快速实践和操作,用户可以自行搭建Hadoop Sandbox的虚拟机并快速部署kylin,然后导入该数据集进行试验。 kylin仅支持星型数据模型,这里用到的样例数据集就是一个规范的星型模型结构,它总共包含了3个数据表

2018-03-12

空空如也

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

TA关注的人

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