摘要:
为 Flink 量身定制的序列化框架 大家都知道现在大数据生态非常火,大多数技术组件都是运行在 JVM 上的,Flink 也是运行在 JVM 上,基于 JVM 的数据分析引擎都需要将大量的数据存储在内存中,这就不得不面临 JVM 的一些问题,比如 Java 对象存储密度较低等。针对这些问题,最常用的
阅读全文
posted @ 2020-11-14 22:48
Java程序员进阶
阅读(15)
推荐(0)
编辑
摘要:
【1】引入第三方 Bahir 提供的 Flink-redis 相关依赖包 1 <!-- https://mvnrepository.com/artifact/org.apache.bahir/flink-connector-redis --> 2 <dependency> 3 <groupId>or
阅读全文
posted @ 2020-11-14 22:45
Java程序员进阶
阅读(11)
推荐(0)
编辑
摘要:
Flink On Yarn 模式 基于 Yarn 层面的架构类似 Spark on Yarn 模式,都是由 Client 提交 App 到 RM 上面去运行,然后 RM 分配第一个 container 去运行 AM,然后由 AM 去负责资源的监督和管理。需要说明的是,Flink 的 Yarn 模
阅读全文
posted @ 2020-11-14 22:43
Java程序员进阶
阅读(14)
推荐(0)
编辑
摘要:
【1】引入pom.xml 依赖 1 <dependency> 2 <groupId>org.apache.flink</groupId> 3 <artifactId>flink-connector-elasticsearch6_2.12</artifactId> 4 <version>1.10.0<
阅读全文
posted @ 2020-11-14 22:39
Java程序员进阶
阅读(5)
推荐(0)
编辑
摘要:
本章重点介绍生产环境中最常用到的 Flink kafka connector。使用 Flink 的同学,一定会很熟悉 kafka,它是一个分布式的、分区的、多副本的、 支持高吞吐的、发布订阅消息系统。生产环境环境中也经常会跟 kafka 进行一些数据的交换,比如利用 kafka consumer 读
阅读全文
posted @ 2020-11-14 22:36
Java程序员进阶
阅读(79)
推荐(0)
编辑
摘要:
【1】引入 pom 依赖,我的 Mysql版本为 5.7.19 1 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 2 <dependency> 3 <groupId>mysql</groupId> 4 <
阅读全文
posted @ 2020-11-14 19:12
Java程序员进阶
阅读(2)
推荐(0)
编辑
摘要:
Flink Streaming Connector Flink 是新一代流批统一的计算引擎,它需要从不同的第三方存储引擎中把数据读过来,进行处理,然后再写出到另外的存储引擎中。Connector 的作用就相当于一个连接器,连接 Flink 计算引擎跟外界存储系统。Flink 里有以下几种方式,当然也
阅读全文
posted @ 2020-11-14 19:08
Java程序员进阶
阅读(17)
推荐(0)
编辑
摘要:
Flink 中的时间语义 时间语义:EventTime:事件创建时间;Ingestion Time:数据进入 Flink 的时间;Processing Time:执行操作算子的本地系统时间,与机器无关。不同的时间语义有不同的应用场合,我们往往更关系事件时间(Event Time)。数据生成的时候就
阅读全文
posted @ 2020-11-14 19:01
Java程序员进阶
阅读(9)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG 主题操作 使用 kafka-topics.sh 工具可以执行主题的大部分操作。可以用它创建、修改、删除和查看集群里的主题。要使用该工具的全部功能,需要通过 --zookeeper参数提供 Zookeeper的连接字符串。 kafka 的大部分命令行工具直接操作 Zoo
阅读全文
posted @ 2020-11-14 18:39
Java程序员进阶
阅读(556)
推荐(0)
编辑
摘要:
优质博文:IT-BLOG-CN 本文从利用率提升、多负载场景优化、稳定性提升、异地多活四个方面介绍了字节跳动在四年来对 Hadoop YARN 进行的一系列的优化,以及生产环境中的实践经验。 YARN 简介 YARN 生态圈 YARN (Yet Another Resource Negotiator
阅读全文
posted @ 2020-11-14 18:30
Java程序员进阶
阅读(16)
推荐(0)
编辑
摘要:
Spring Cloud Gateway 作为 Spring Cloud框架的第二代网关,在功能上要比 Zuul更加的强大,性能也更好。随着 Spring Cloud的版本迭代,Spring Cloud官方有打算弃用 Zuul的意思。在笔者调用了 Spring Cloud Gateway的使用和功能
阅读全文
posted @ 2020-11-14 18:25
Java程序员进阶
阅读(2468)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG 无论 Kafka 作为 MQ 也好,还是作为存储层也罢,无非就是两个功能,一是 Producer 生产的数据存到 Broker,二是 Consumer 从 Broker 读取数据。那 Kafka 的快也就体现在读写两个方面了,下面我们就聊聊 Kafka 快的原因。 一
阅读全文
posted @ 2020-11-14 18:18
Java程序员进阶
阅读(462)
推荐(1)
编辑
摘要:
更多内容,前往 IT-BLOG 单个 kafka服务器足以满足本地开发或 POC要求,使用集群的最大好处是可以跨服务器进行负载均衡,再则就是可以使用复制功能来避免因单点故障造成的数据丢失。在维护 Kafka 或底层系统时,使用集群可以确保为客户端提供高可用性。 需要多少个 Broker 一个 k
阅读全文
posted @ 2020-11-14 18:16
Java程序员进阶
阅读(157)
推荐(0)
编辑
摘要:
【需求】:使用 fullcalendar日历插件,完成如下功能:可以进行拖动,点击空白处添加,双击后修改和删除等功能。API 链接 一、html 文件中引入相关依赖,主要包括引入的 css和 js; 1 <!DOCTYPE html> 2 <html lang="zh_CN" xmlns:th="
阅读全文
posted @ 2020-11-14 18:07
Java程序员进阶
阅读(1251)
推荐(0)
编辑
摘要:
PRC 是一种技术的代名词,HTTP 是一种协议,RPC 可以通过 HTTP 来实现,也可以通过 Socket 自己实现一套协议来实现。所以谈论为什么用 RPC 不用 HTTP 是无意义的。但我们习惯性将两者进行比较,那就有必要将易混点提出来说说。 RPC主要是基于 TCP/IP协议的,而 HTTP
阅读全文
posted @ 2020-11-14 18:03
Java程序员进阶
阅读(187)
推荐(0)
编辑
摘要:
计算机是不能直接运行 java代码的,必须要先运行 java虚拟机,再由java虚拟机运行编译后的 java代码。这个编译后的 java代码,就是本文要介绍的java字节码。计算机截止目前只认识0和1,但虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制
阅读全文
posted @ 2020-11-14 18:02
Java程序员进阶
阅读(17)
推荐(0)
编辑
摘要:
更多内容,访问 IT-BLOG ThreadLocal 并不是一个Thread,而是 ThreadLocalVariable(线程局部变量)。也许把它命名为 ThreadLocalVar更加合适。线程局部变量就是为每一个使用该变量的线程都提供一个变量值的副本,是 Java中一种较为特殊的线程绑定机制
阅读全文
posted @ 2020-11-14 18:00
Java程序员进阶
阅读(125)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java虚拟机外部去实现,以便应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 从 Java 虚拟机的角度上,只存在两种不同的类加载器:一
阅读全文
posted @ 2020-11-14 17:55
Java程序员进阶
阅读(197)
推荐(0)
编辑
摘要:
需求:使用 @autowired注入一些对象,但发现不可以直接使用@Autowired,因为方法是static的,要使用该方法当前对象也必须是static,正常情况下@Autowired无法注入静态的bean,于是发现项目中用到了springContextHolder,通过使用 private T
阅读全文
posted @ 2020-11-14 17:54
Java程序员进阶
阅读(120)
推荐(0)
编辑
摘要:
在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为 CommandLineRunner和 ApplicationRunner。他们的执行时机为容器启动完成的时候。 这两个接
阅读全文
posted @ 2020-11-14 17:53
Java程序员进阶
阅读(130)
推荐(0)
编辑
摘要:
通常面试官会把每一轮面试分为三个环节:① 行为面试 ② 技术面试 ③ 应聘者提问 行为面试环节 面试开始的5~10分钟通常是行为面试的时间,面试官会参照简历和你的自我介绍了解应聘者的过往经验和项目经历。由于面试官手里拿着应聘者的简历,里面有应聘者的详细信息,因此此时的自我不用花费很多时间,用30秒到
阅读全文
posted @ 2020-11-14 17:51
Java程序员进阶
阅读(125)
推荐(0)
编辑
摘要:
Thread Dump介绍 Thread Dump是非常有用的诊断 Java应用问题的工具。每一个 Java虚拟机都有及时生成所有线程在某一点状态的 thread-dump的能力,虽然各个 Java虚拟机打印的 thread dump略有不同,但是大多都提供了当前活动线程的快照,及 JVM中所有 J
阅读全文
posted @ 2020-11-14 17:48
Java程序员进阶
阅读(82)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG Java 开发人员肯定都知道 JDK的 bin 目录中有 “java.exe”、“javac.exe” 这两个命令行工具。下面主要介绍一些监视虚拟机和故障处理的工具。 Jvm 入门工具 jps(JavaVirtual Machine Process Status To
阅读全文
posted @ 2020-11-14 17:39
Java程序员进阶
阅读(41)
推荐(0)
编辑
摘要:
注解是 JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。它主要的作用有以下四方面:【1】生成文档:通过代码里标识的元数据生成 javadoc文档。【2】编译检查:通过代码里标识的元数据让编译器在编译期间进行检查验证。【3】编译时动态处理
阅读全文
posted @ 2020-11-14 17:33
Java程序员进阶
阅读(59)
推荐(0)
编辑
摘要:
对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解
阅读全文
posted @ 2020-11-14 17:21
Java程序员进阶
阅读(18)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG LockSupport 用来创建锁和其他同步类的基本线程阻塞原语。简而言之,当调用 LockSupport.park时,表示当前线程将会等待,直至获得许可,当调用 LockSupport.unpark时,必须把等待获得许可的线程作为参数进行传递,好让此线程继续运行。
阅读全文
posted @ 2020-11-14 17:17
Java程序员进阶
阅读(362)
推荐(0)
编辑
摘要:
计算机硬件性能在过去十年间的发展普遍遵循摩尔定律,通用计算机的 CPU主频早已超过3GHz,内存也进入了普及DDR4的时代。然而传统硬盘虽然在存储容量上增长迅速,但是在读写性能上并无明显提升,同时SSD(固态硬盘)硬盘价格高昂,不能在短时间内完全替代传统硬盘。传统磁盘的 I/O读写速度成为了计算机系
阅读全文
posted @ 2020-11-14 17:11
Java程序员进阶
阅读(353)
推荐(0)
编辑
摘要:
系统性学习,异步IT-BLOG AQS(AbstractQuenedSynchronizer 抽象队列同步器) 是一个用来构建锁和同步器的框架,使用 AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如 ReentrantRead
阅读全文
posted @ 2020-11-14 17:09
Java程序员进阶
阅读(247)
推荐(0)
编辑
摘要:
更多内容,前往个人博客 ReentrantLock 支持公平锁和非公平锁,可重入锁 ReentrantLock的底层是通过 AQS[链接]实现。 一、BAT 大厂的面试题 【1】什么是可重入,什么是可重入锁? 它用来解决什么问题?【2】ReentrantLock 的核心是 AQS,那么它怎么来实现的
阅读全文
posted @ 2020-11-14 17:00
Java程序员进阶
阅读(61)
推荐(0)
编辑
摘要:
更多内容,前往 IT-BLOG Synchronized原理分析 加锁和释放锁的原理 深入JVM看字节码,创建如下的代码: 1 public class SynchronizedDemo2 { 2 Object object = new Object(); 3 public void method1
阅读全文
posted @ 2020-11-14 16:57
Java程序员进阶
阅读(14)
推荐(0)
编辑
摘要:
Arthas(阿尔萨斯) 是 Alibaba开源的一款 Java在线诊断工具,能够分析,诊断,定位Java应用问题,例如:JVM信息,线程信息,搜索类中的方法,跟踪代码执行,观测方法的入参和返回参数等等。并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法的出入参,异常,监测方法执行耗时,
阅读全文
posted @ 2020-11-14 16:49
Java程序员进阶
阅读(1093)
推荐(1)
编辑
摘要:
Java对象存储在堆(Heap)内存。那么一个 Java对象到底包含什么呢?概括起来分为对象头、对象体和对齐字节。如下图所示:【1】对象头中的Mark Word(标记字)主要用来表示对象的线程锁状态,另外还可以用来配合GC、存放该对象的 hashCode;【2】Klass Word是一个指向方法区
阅读全文
posted @ 2020-11-14 16:43
Java程序员进阶
阅读(1579)
推荐(0)
编辑
摘要:
SimpleChannelInboundHandler 【类的关系】:如下就是两个类的声明,SimpleChannelInboundHandler是继承 ChannelInboundHandlerAdapter的。也就是说SimpleChannelInboundHandler 也拥有 Channel
阅读全文
posted @ 2020-11-14 16:42
Java程序员进阶
阅读(2281)
推荐(1)
编辑
摘要:
携程开源的配置管理中心(统一管理各种应用配置的基础服务组件),能够集中化管理应用的不同环境,不同集群的配置,配置修改后能够实时推送到应用端,适合微服务配置管理场景。Apollo包括服务端和客户端。 在系统架构中,配置中心是整个微服务基础架构体系中的一个组件,如下图,它的功能看上去并不起眼,无非就是配
阅读全文
posted @ 2020-11-14 16:27
Java程序员进阶
阅读(254)
推荐(0)
编辑
摘要:
一、Netty 服务端启动过程 【1】创建服务端 Channel;【2】初始化服务端 Channel;【3】注册 Selector;【4】端口绑定:我们分析源码的入口从端口绑定开始, ServerBootstrap 的 bind(int inetPort)方法,实际上是 AbstractBootst
阅读全文
posted @ 2020-11-14 16:15
Java程序员进阶
阅读(38)
推荐(0)
编辑
摘要:
更多内容,前往个人博客 所谓心跳,即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包,通知对方自己还在线,以确保 TCP 连接的有效性。心跳包还有另一个作用,经常被忽略,即:一个连接如果长时间不用,防火墙或者路由器就会断开该连接。建议:将下面的代码敲一遍,对这个流程就有一个比较好
阅读全文
posted @ 2020-11-14 16:10
Java程序员进阶
阅读(286)
推荐(0)
编辑