自定义博客皮肤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)
  • 资源 (3)
  • 收藏
  • 关注

原创 杂记十六:idea Cherry-Pick

简单的说就是将A分支上的commit复制到B分支。

2022-07-28 21:04:09 1002 1

原创 杂记十五:VisualVM使用教程

一、插件下载1.安装jdk并启动jvisualvm.exe2.插件安装点击已下载,第一次开启的时候已下载里面是空的,需要点击添加插件把已经下载的插件添加到已下载中。如何下载插件?下载地址:https://visualvm.github.io/pluginscenters.html通过Visual VM版本或者jdk版本选择对应的下载地址,如本人选择的就是红框中的下载地址。进入后可选择需要的插件进行下载。这里注意一下有些插件的安装是需要以其他插件为基础的,等到安装的时候会有提示的。

2021-12-30 17:19:32 8766 4

原创 杂记十四:DataFactory使用教程

一、下载与安装1. 安装DataFactory下载地址:https://download.csdn.net/download/weixin_42652596/24408965下载解压后在Quest DataFactory v5.6 英文正式版(含教程)文件夹下双击DataFactory.exe安装。2. 获取注册码安装完成后先不运行DataFactory,运行keygen.exe获取注册码。第一步:输入Site Message,值任意第二步:选择Data Factory第三步:点击Gen

2021-09-24 16:56:25 3884 1

转载 杂记十三:Java int和byte数组互相转换时为什么要用到&0xff?

观前提示:本文涉及到二进制数据的相关知识,博主推荐没有学习过二进制的同学可以去看一下《程序是怎样跑起来的》一书中有关二进制的知识。首先我们来看一下int和byte数组互相转换的两个函数。//int转Byte数组public byte[] getByte(int number){ byte[]bt=new byte[4]; bt[0]=(byte) ((number>>0) & 0xff); bt[1]=(byte) ((number>>8) & 0xff)

2021-06-25 10:55:08 564

原创 日志框架8:log4j2配置

1.默认配置本来以为Log4J2应该有一个默认的配置文件的,不过好像没有找到(通过DefaultConfiguration,初始化一个最小化配置),下面这个配置文件等同于缺省配置:<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"&g

2021-05-24 14:42:39 642 3

原创 日志框架7:log4j2

1.Log4j2介绍Log4j2是Log4j的升级版,与之前的版本Log4j 1.x相比、有重大的改进,在修正了Logback固有的架构问题的同时,改进了许多Logback所具有的功能。1.1 Log4j2的特性及改进API分离:Log4j2将API与实现分离开来。开发人员现在可以很清楚地知道能够使用哪些没有兼容问题的类和方法,同时又允许通过自己实现来增强功能。改进的性能:Log4j2的性能在某些关键领域比Log4j 1.x更快,而且大多数情况下与Logback相当。多个API支持:Log4j2

2021-05-24 14:30:42 318

原创 日志框架6:logback相较于log4j的优势

无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j。牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立。所以如果你已经对log4j很熟悉,你也可以很快上手logback。如果你喜欢使用log4j,你也许会迷上使用logback。1.更快的执行速度基于我们先前在log4j上的工作,logback 重写了内部的实现,在某些特定的场景上面,甚至可以比之前的速度快上10倍。在保证

2021-05-24 13:50:18 560

原创 日志框架5:logback

1.Logback介绍Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback-classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供

2021-05-24 10:44:25 125

原创 日志框架4:log4j配置

1.日志级别一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFFLog4J推荐使用:DEBUG, INFO,WARN, ERROROFF: 为最高等级 关闭了日志信息FATAL: 为可能导致应用中止的严重事件错误ERROR:为严重错误 主要是程序的错误WARN: 为一般警告,比如session丢失INFO: 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息TRACE: 为比DEBUG更细粒度的

2021-05-24 09:31:54 752 1

原创 日志框架3:log4j

1.简介Apache Log4j是当前在J2EE和J2SE开发中用得最多的日志框架(几乎所有项目都用它),因为它具有出色的性能、灵活的配置以及丰富的功能,并且在业务有特殊的要求时,可以使用自定义组件来代替框架中已有的组件来满足要求。基本上所有的大型应用,包括我们常用的框架,比如hibernate;spring;struts等,在其内部都做了一定数量的日志信息。为什么要做这些日志信息,在系统中硬编码日志记录信息是调试系统,观察系统运行状态的一种方式。可能大部分程序员都还记得自己最开始写代码的时候,写一个方

2021-05-20 17:04:17 172

原创 日志框架2:jdk-logging(jdk自带的logging)

1.简单使用1.1 示例代码private static final Logger logger=Logger.getLogger(JdkLoggingTest.class.getName());public static void main(String[] args){ logger.info("jdk logging info: a msg");}其中的Logger是:java.util.logging.Logger1.2 过程分析1)创建一个LogManager,默认是ja

2021-05-17 14:04:40 1114

原创 日志框架1:目前主流的日志框架

目前的日志框架有jdk自带的logging,log4j1、log4j2、logback目前用于实现日志统一的框架apache的commons-logging、slf4j为了理清它们的关系,与繁杂的各种集成jar包,如下:log4j、log4j-api、log4j-corelog4j-1.2-api、log4j-jcl、log4j-slf4j-impl、log4j-jullogback-core、logback-classic、logback-access commons-loggingslf4

2021-05-17 11:14:54 274

原创 杂记十二:定时任务框架Quartz

一、Quartz简介Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目。Quartz的基本组成部分:任务:Job表示一个工作,要执行的具体内容。此接口中只有一个方法: void execute(JobExecutionContext context) 可执行调度程序:JobDetail包含了这个任务调度的方案和策略,Job 是JobDetail所要执行的内容调度器:Scheduler一个调度容器中可以注册多个 JobDetail 和

2021-02-24 14:11:55 142

原创 杂记十一:Calendar类

Calendar类Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。一、构造方法protected Calendar() :由于修饰符是protected,所以无法直接创建该对象。需要通过别的途径生成该对象。二、成员方法 Calendar类的成员方法 static Calendar getInstance() 使用默认时区和区域设置获取日历。通过该方

2021-02-24 10:24:53 96

原创 杂记十:numa详解

1.NUMA的几个概念(Node,socket,core,thread)对于socket,core和thread会有不少文章介绍,这里简单说一下,具体参见下图:一句话总结:socket就是主板上的CPU插槽; Core就是socket里独立的一组程序执行的硬件单元,比如寄存器,计算单元等; Thread:就是超线程hyperthread的概念,逻辑的执行单元,独立的执行上下文,但是共享core内的寄存器和计算单元。NUMA体系结构中多了Node的概念,这个概念其实是用来解决core的分组的问题,具体

2021-01-27 10:48:13 1609 2

原创 杂记九:log4j详解

1.日志级别一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFFLog4J推荐使用:DEBUG, INFO,WARN, ERROROFF: 为最高等级 关闭了日志信息FATAL: 为可能导致应用中止的严重事件错误ERROR:为严重错误 主要是程序的错误WARN: 为一般警告,比如session丢失INFO: 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息TRACE: 为比DEBUG更细粒度的

2021-01-25 20:15:07 296

原创 杂记八:final详解

1.final用途1.1 修饰类当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。1.2 修饰方法使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的

2021-01-25 17:36:47 376

原创 杂记七:static详解

1.static用途  static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:方便在没有创建对象的情况下来进行调用(方法/变量)。很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过

2021-01-25 16:53:33 139

原创 Flink笔记18:状态一致性

有状态的流处理,内部每个算子任务都可以有自己的状态。对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。一条数据不应该丢失,也不应该重复计算。在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。1、一致性级别在流处理中,一致性可以分为3 个级别:AT-MOST-ONCE(最多一次)当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重播丢失的数据。At-most-once 语义的含义是最多处理一次事件。AT-LEAST-ONCE(至少一次)

2021-01-11 17:21:15 239

原创 Flink笔记17:检查点(checkpoint)、保存点(save points)与重启策略配置

1、检查点(checkpoint)Flink 故障恢复机制的核心,就是应用状态的一致性检查点。有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候。下图是一个奇偶求和的例子,sum_even表示偶数求和,sum_odd表示奇数求和,数据源是1-9的数字。从图中可以看出,source偏移量为5,表示已经读取了1-5的数字,sum_even=2+4=6,sum_odd=1+3+5=9。此时做一个checkpoin

2021-01-11 16:48:31 2729

原创 Flink笔记16:ProcessFunction API(底层API)

我们之前学习的转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction 这样的map 转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API 提供了一系列的Low-Level 转换算子。可以访问时间戳、watermark 以及注册定时事件。还可以输出特定的一些事件,例如超时事件等。Process Function 用来构建事件驱动的应用以及实现自定义的业务逻辑(使用之前的window 函数和转换算子无法实现)。例如,Flin

2021-01-06 15:52:14 85

原创 杂记六:Java IO之字节流、字符流、缓冲流

在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。1、流的特点先进先出:最先写入输出流的数据最先被输入流读取到。顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。(RandomAccessFile除外)只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入

2021-01-05 15:25:39 658

原创 杂记五:String、StringBuffer与StringBuilder

String 字符串常量,是不可变的对象。因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象。所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。StringBuffer 字符串变量(线程安全),每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在

2021-01-05 11:06:23 85

原创 Flink笔记15:Flink状态管理与状态编程

1、Flink状态管理在 Flink 中,状态始终与特定算子相关联,为了使运行时的 Flink 了解算子的状态,算子需要预先注册其状态。总的说来,有两种类型的状态:算子状态(Operator State)算子状态的作用范围限定为算子任务键控状态(Keyed State)根据输入数据流中定义的键(key)来维护和访问1.1 算子状态(Operator State)算子状态的作用范围限定为算子任务,由同一并行任务所处理的所有数据都可以访问到相同的状态 状态对于同一子任务而言是共享的算

2021-01-04 17:04:24 315

原创 杂记四:scala 柯理化和隐式转换

1、柯理化柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。实例首先我们定义一个函数:def add(x:Int,y:Int)=x+y那么我们应用的时候,应该是这样用:add(1,2)现在我们把这个函数变一下形:def add(x:Int)(y:Int) = x + y那么我们应用的时候,应该是这样用:add(1)(2),最后结果都一样是3,这种方式(过程)就叫柯里化。实现过程add(1)(2) 实

2021-01-04 14:14:30 164

原创 杂记三:kafka常用命令

1、列出集群里的所有topickafka-topics.sh --zookeeper localhost:2181 --list2、 创建topictopic名称为topic_01,包含3分区,每个分区拥有3个副本kafka-topics.sh --zookeeper localhost:2181 --create --topic topic_01 --replication-factor 3 --partitions 33、列出集群里特定topic的详细信息kafka-topics.sh

2020-12-31 11:35:49 525

原创 Flink笔记14:Flink之window起始点的确定与watermark使用详解

1、window起始时间的确定在TimeWindow.java中有如下方法来确定window的起始时间public static long getWindowStartWithOffset(long timestamp, long offset, long windowSize) { return timestamp - (timestamp - offset + windowSize) % windowSize;}假设我设置了如下窗口,并将第一条数据的时间戳设置为1547718199。tim

2020-12-30 16:00:02 369

原创 Flink笔记13:Flink之EvnetTime 在window 中的使用

1、滚动窗口(TumblingEventTimeWindows)def main(args: Array[String]): Unit = { // 环境 val env: StreamExecutionEnvironment =StreamExecutionEnvironment.getExecutionEnvironment env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) env.setParallelism(1)

2020-12-29 16:41:09 131

原创 Flink笔记12:Flink之Watermark

1、基本概念我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的,虽然大部分情况下,流到operator 的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、分布式等原因,导致乱序的产生,所谓乱序,就是指Flink 接收到的事件的先后顺序不是严格按照事件的Event Time 顺序排列的。那么此时出现一个问题,一旦出现乱序,如果只根据eventTime 决定window 的运行,我们不能明确数据是否全部到位,但又不能无限期的等下去,此时必须要有个机制来

2020-12-29 16:24:33 285

原创 Flink笔记11:Flink时间语义

1、Flink 中的时间语义在Flink 的流式处理中,会涉及到时间的不同概念,如下图所示:Event Time:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每一条日志都会记录自己的生成时间,Flink 通过时间戳分配器访问事件时间戳。Ingestion Time:是数据进入Flink 的时间。Processing Time:是每一个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是Processing Time。一个例子——电影《星球大战》:在这个例

2020-12-28 16:08:15 1183

原创 Flink笔记10:Flink中的Window

一、Window1.Window 概述streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而window 是一种切割无限数据为有限块进行处理的手段。Window 是无限数据流处理的核心,Window 将一个无限的stream 拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。2.Window 类型Window 可以分成两类:CountWindow:按照指定的数据条数生成一个Window,与时间无关。Ti

2020-12-21 16:39:11 105

原创 Flink笔记9:Flink流处理API之Sink

Flink 没有类似于spark 中foreach 方法,让用户进行迭代的操作。虽有对外的输出操作都要利用Sink 完成。最后通过类似如下方式完成整个任务最终输出操作。stream.addSink(new MySink(xxxx))官方提供了一部分的框架的sink。除此以外,需要用户自定义实现sink。1、Kafkapom.xml<dependency> <groupId>org.apache.flink</groupId> <arti

2020-12-08 11:16:36 423

原创 Flink笔记8:Flink流处理API之支持的数据类型和UDF 函数

1、支持的数据类型Flink 流应用程序处理的是以数据对象表示的事件流。所以在Flink 内部,我们需要能够处理这些对象。它们需要被序列化和反序列化,以便通过网络传送它们;或者从状态后端、检查点和保存点读取它们。为了有效地做到这一点,Flink 需要明确知道应用程序所处理的数据类型。Flink 使用类型信息的概念来表示数据类型,并为每个数据类型生成特定的序列化器、反序列化器和比较器。Flink 还具有一个类型提取系统,该系统分析函数的输入和返回类型,以自动获取类型信息,从而获得序列化器和反序列化器。但是

2020-12-07 20:17:33 248

原创 Flink笔记7:Flink流处理API之Transform

1、map与flatMapval streamMap = stream.map { x => x * 2 }flatMap 的函数签名:def flatMap[A,B](as: List[A])(f: A ⇒ List[B]): List[B]例如: flatMap(List(1,2,3))(i ⇒ List(i,i)) 结果是List(1,1,2,2,3,3),而List("a b", "c d").flatMap(line ⇒ line.split(" ")) 结果是List(a,

2020-12-07 17:21:59 108

原创 Flink笔记6:Flink流处理API之Environment与Source

1、 Environment5.1.1 getExecutionEnvironment创建一个执行环境,表示当前执行程序的上下文。如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,getExecutionEnvironment 会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。val env: ExecutionEnvironment = ExecutionEnvironment.get.

2020-12-07 14:49:46 229

原创 Flink笔记5:运行架构

一、运行时组件Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为Flink 是用Java 和Scala 实现的,所以所有组件都会运行在Java 虚拟机上。每个组件的职责如下:1、作业管理器(JobManager)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager 所控制

2020-12-03 15:21:17 403 1

原创 Flink笔记4:作业提交

提交作业前先准备好项目jar包1、Flink UI提交1)添加jar包2)填写配置信息3)运行与查看结果使用nc命令发送消息查看结果4)slot与parallelism将parallelism设置为2(这里指的是页面填写配置信息时)此时提交任务,一直卡在created状态,说明资源不够(slot太少)我们在部署时设置的numberOfTaskSlots为1,并行度为2时就需要两个slot。超时报错另外说一下parallelism的优先级代码中设置的>页

2020-12-02 15:12:54 367

原创 Flink笔记3:部署

一、standalone 模式1、下载Flink安装包https://www.apache.org/dyn/closer.lua/flink/flink-1.10.2/flink-1.10.2-bin-scala_2.12.tgz将下载的安装包上传到服务端并解压。2、部署修改/opt/flink-1.10.1/conf下的flink-conf.yaml文件,主要修改内容如下:# jobmanager的ip,由于是standalone且就一台主机,所以直接用localhost就行jobmana

2020-12-02 11:12:49 326

原创 Flink笔记2:快速上手(wordcount)

搭建maven 工程FlinkTutorial1、准备工作pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PO

2020-12-01 15:16:52 122

原创 Flink笔记1:Flink简介

Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。1、国内企业的应用2、行业的应用电商和市场营销数据报表、广告投放、业务流程需要物联网(IOT)传感器实时数据采集和显示、实时报警,交通运输业电信业基站流量调配银行和金融业实时结算和通知推送,实时检测异常行为3、目标低延迟高吞吐结果的准确性和良好的容错性4、传统数据处理框架1)事务处理2)分析处理将数据从业务数据库复制到数仓,再进行分析和查询3)有状态的流式处理4)

2020-12-01 14:42:07 168

Quest DataFactory v5.6 英文正式版(含教程)

Quest DataFactory v5.6 英文正式版(含教程)

2023-06-08

jprofiler_windows-x64_9_2_1.exe

jprofiler_windows-x64_9_2_1.exe,资源查看工具。jprofiler_windows-x64_9_2_1.exe,资源查看工具

2020-11-27

cassandramanager_inst.exe

cassandramanager_inst.exe,用于查看cassandra数据的可视化工具,用于查看cassandra数据的可视化工具

2020-11-27

Another-Redis-Desktop-Manager.1.3.9.exe

Redis-Desktop-Manager的替代Another-Redis-Desktop-Manager,挺好用的,此版本为1.3.9

2020-11-27

空空如也

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

TA关注的人

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