Java
文章平均质量分 78
maozonel
Java攻城狮
展开
-
修复flink-jdbc含有schema的表报不存在
博客背景 最近,使用flink读取postgresql的表数据时,代码一直报错,提示表不存在。通过debug发现,flink-jdbc的JDBCDialect类存在一点问题,现记录如下。环境说明flink版本:1.9.1scala版本:2.12postgresql数据库表结构:ipark_datacenter: – ods – t_test(id, name)测试代码import org.apache.flink.api.common.typeinfo.BasicT原创 2020-07-17 10:27:57 · 1299 阅读 · 0 评论 -
hbase api常用操作
环境信息hbase版本:hbase-2.2.4-bin.tar.gzapi版本 : <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.2.4</version> &l原创 2020-05-28 16:17:29 · 258 阅读 · 0 评论 -
lambda表达式的4种基础类型
import java.util.Date;;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Predicate;import java.util.function.Supplier;import java.util.regex.Pattern;/** * Predicate: 测试一个传入的参数是否符合要求 * Consumer: 消费传入的参.原创 2020-05-27 13:46:19 · 1063 阅读 · 0 评论 -
分布式之elk日志架构的演进
引言好久没写分布式系列的文章了,最近刚好有个朋友给我留言,想看这方面的知识。其实这方面的知识,网上各种技术峰会的资料一抓一大把。博主也是凑合着写写。感觉自己也写不出什么新意,大家也凑合看看。日志系统的必要性?我15年实习的时候那会,给某国企做开发。不怕大家笑话,生产上就两台机器。那会定位生产问题,就是连上一台机器,然后用使用grep / sed / awk等 Linux 脚本工具去...转载 2019-11-13 10:41:06 · 128 阅读 · 0 评论 -
带你弄清混乱的JAVA日志体系
引言还在为弄不清commons-logging-xx.jar、log4j-xx.jar、sl4j-api-xx.jar等日志框架之间复杂的关系而感到烦恼吗?还在为如何统一系统的日志输出而感到不知所措嘛?您是否依然存在这样的烦恼。比如,要更改spring的日志输出为log4j 2,却不知该引哪些jar包,只知道去百度一下所谓的博客,照着人家复制,却无法弄懂其中的原理?不要急,不要方!本文带...转载 2019-11-13 10:14:13 · 119 阅读 · 0 评论 -
JWT是什么
JWT是什么JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。JSON Web Token的结构JSON Web Token由三部分组成,它们之间用圆点(.)连接。这三部分分别是:Header Payload Signa...原创 2019-11-01 20:00:29 · 948 阅读 · 1 评论 -
ThreadPoolExecutor线程池管理器
ThreadPoolExecutor是ExecutorService的一个实例,是一个线程池管理器,能够通过调用线程池里面的线程来执行异步任务。ThreadPoolExecutor主要用来解决两个痛点。一,当执行大量异步任务时,线程池能够减少线程创建和切换的开销,提高性能。二,当有过多的异步任务执行时,程序性能可能因为资源瓶颈降低,甚至直接挂掉。而ThreadPoolExecutor提供了一种...原创 2018-08-13 21:10:06 · 910 阅读 · 0 评论 -
maven打包插件配置
一、maven打包可执行jar文件,需要引入插件<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <appendAssemblyId>false</appendAssemblyId> <descriptorRe...原创 2019-09-06 11:17:48 · 1776 阅读 · 0 评论 -
azkaban安装
所有版本地址:https://github.com/azkaban/azkaban/releases3.57 版地址:https://github.com/azkaban/azkaban/releases/tag/3.57.0下载地址:https://codeload.github.com/azkaban/azkaban/tar.gz/3.57.0解压缩:tar ...原创 2019-09-06 11:20:02 · 119 阅读 · 0 评论 -
Hive和HBase的区别
Hive和HBase都是Hadoop集群下的工具,Hive是对MapReduce的优化,而HBase则是HDFS数据存储的大管家。1.Hive中的表为纯逻辑表,仅仅对表的元数据进行定义。Hive没有物理存储的功能,它完全依赖HDFS和MapReduce。它可以将结构化的数据文件映射为为一张数据库表,并提供完整的SQL查询功能,并将SQL语句最终转换为MapReduce任务进行运行。HBase表...原创 2019-09-06 11:24:09 · 235 阅读 · 0 评论 -
yarn资源分配流程
(1) client向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。(2) ResourceManager启动一个container用于运行ApplicationMaster。(3) 启动中的ApplicationMaster向Resourc...原创 2019-09-06 11:28:02 · 588 阅读 · 0 评论 -
maven下载jar包遇到的坑
今天,编译griffin源码,死活不成功,报Java类找不到。第一猜想,有jar包下载失败。神奇的是,通过idea的maven管理工具发现,并没有报jar下载失败:感觉这有点很莫名其妙。进到maven本地仓库,发现kafka-schema-registry-client好好的在仓库里:不信邪的我,准备把jar文件解压,找找对应的类文件是否存在。可是,奇怪的事又出现了:...原创 2019-09-06 16:43:06 · 3232 阅读 · 1 评论 -
Thread线程对象
线程,是进程下面的一个单位,一个进程可以由很多个线程组成。为了提高CPU的使用率,Java提供了多线程编程。今天,就让我们来学习一下Java里面多线程最基础的一个类Thread。1.线程的状态: NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。2.每个Thread都有一个优先级priority,优先级高的线程优先执行。优先级的大小...原创 2018-08-01 21:27:48 · 1093 阅读 · 0 评论 -
CountDownLatch学习
昨天去阿里面试,关于多线程方面的知识问到了CountDownLatch。由于这个类长时间没使用,导致当时没有回答上来,因此今天在此整理一下CountDownLatch相关的笔记,以做学习。首先,我们看一下jdk关于CountDownLatch这个类的注释:这是一个同步工具,它允许一个或多个线程在其他线程的任务执行完毕前阻塞。一个CountDownLatch对象在初始化的时候会指定一个c...原创 2018-07-29 21:18:23 · 132 阅读 · 0 评论 -
Java项目生成oracle数据库dump文件(二)
Oracle数据库客户端有一个sqlplus组件,这个组件能够让我们通过命令行的方式执行一些数据库操作。为了提高dump文件的写入效率,我们尝试使用sqlplus命令来生成dump文件。 sqlplus可以指定运行脚本,例如:sqlplus admin/pwd@//127.0.0.1:1526/orcl@./tmp_sql/NODE_dump_sql_201...原创 2019-04-18 10:49:02 · 897 阅读 · 0 评论 -
abstract 抽象类的使用
通过abstract定义的类为抽象类,抽象类具有以下特点:抽象类可以实现接口,但不能继承接口 public abstract class AbstractClass implements Runnable { private Object param; public abstract void test();}抽象类可以被继承 class ExtendsAbstractClass...原创 2018-04-12 20:50:26 · 512 阅读 · 0 评论 -
多线程面试常考问题
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。 2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程...原创 2018-04-06 15:56:42 · 148 阅读 · 0 评论 -
死锁——刀叉问题程序演示
一、死锁的规范定义集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件,那么该组进程是死锁的。二、直观的例子 两个人吃饭,都需要刀和叉,但刀叉又只有一套。某时刻,其中一个人拿了刀,另一个拿了叉,而且两人都在等待对方让出自己需要的叉或刀。这种情形下,两个人都只能一直等待下去,这就是发生了死锁。三、程序演示死锁 static void deadLock() { final ...原创 2018-04-05 14:45:55 · 374 阅读 · 0 评论 -
Java动态代理(一)
一、代理的概念 代理(Proxy)是一种设计模式,提供了目标对象另外的访问方式,即通过代理对象访问目标对象。该设计模式,可以在目标对象已实现功能的基础上,增加额外的功能,即扩展目标对象。二、静态代理 静态代理是对目标对象进行封装,对代理类的调用实际上会调用目标类。使用时,需要定义接口或者父类,代理类和目标类需要实现相同的接口或者继承相同的父类。案例: 首先,...原创 2018-05-04 16:15:14 · 191 阅读 · 0 评论 -
Java动态代理(二)
在Java动态代理(一),我们了解了代理模式的含义,也用程序演示了静态代理和动态代理的实现。现在,我们就来学习一下java动态代理的源码。代理类的字节码查看 我们知道,jdk动态代理是在程序运行的时候动态生成代理类,那么生成的代理类里面是什么样的了。我们可以通过下面的方式获得生成的代理类的字节码,然后通过反编译查看代理类的内容。package com.code.proxy...原创 2018-05-04 16:17:39 · 139 阅读 · 0 评论 -
java调用cmd命令或者shell脚本
在我们的项目开发中,有时候为了提高性能,需要调用其他的工具来执行任务。举例来说,当数据库数据量增长比较快的时候,我们需要定期dump数据。而对于大数据量的数据的dump来说,dump时间是需要控制在某个量级的。这个时候,我们不能通过java来生成insert语句这种方式来dump数据的,因为它执行效率很低,而且BLOB、CLOB字段没法处理。相信dba都知道,oracle的dump是...原创 2018-04-27 12:53:16 · 2377 阅读 · 0 评论 -
oracle查询数据库表空间使用情况
select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空间大小(m)", d.tot_grootte_mb - f.total_bytes "已使用空间(m)", to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_...原创 2018-05-18 14:31:21 · 586 阅读 · 0 评论 -
java SPI机制分析
SPI是什么 SPI,全拼Service Provider Interface,可翻译成服务提供者接口。其思想源自服务提供者框架(Service Provider Framework),是一种将服务接口与服务实现分离以达到解耦、提升程序可扩展性的机制。引入服务提供者就是引入了spi接口的实现者,通过本地的注册发现获取到具体的实现类,达到轻松可插拔的目的。SPI具体约定 java...原创 2018-04-28 12:53:54 · 153 阅读 · 0 评论 -
Java项目生成oracle数据库dump文件(三)
Oracle数据库的备份和恢复可以通过exp/imp命令来实现,exp、imp命令需要安装Oracle客户端才能使用,生成的dump文件是数据库的二进制文件。exp命令的使可以自行百度,我们在该项目的使用如下:exp admin/pwd@//127.0.0.1:1526/d0csmmcy tables=NODE file=./dump_file/NODE_dump_20180...原创 2019-04-18 10:49:23 · 1547 阅读 · 0 评论 -
Java项目生成oracle数据库dump文件(一)
近期开发的项目是一个基金管理的项目,由于交易数据比较大,为了提高响应速度,在数据访问层增加了缓存机制。但是,随着系统运行了一段时间,由于缓存加载的数据量扩大,系统内存占用越来越高。为了减轻系统压力,需要增加归档功能,即通过归档操作,将数据库里面符合特定条件(如:交易完成)的数据进行清理。但是,由于基金交易数据的特殊性,这些被清理的数据仍需要保存,而且必要的情况下还要支持数据的恢复。...原创 2019-04-18 10:49:11 · 2015 阅读 · 0 评论 -
synchronized和锁(ReentrantLock) 的区别
一、API层面· synchronized既可以修饰方法,也可以修饰代码块//synchronized修饰一个方法时,这个方法叫同步方法 public synchronized void test1(){ doSomethingNeedSynchronizing(); } public void test2(){ doSomethingNotNeed...原创 2018-04-06 10:27:04 · 299 阅读 · 1 评论