自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 flink 总结问题

1、 Flink-1.12.1Windows启动报错使用命令/bin/start-cluster.sh启动,但查看进程未启动成功查看 flink-zhengqianjin-standalonesession-9-LAPTOP-KTEB7TSJ.out 日志中出现Error: Could not create the Java Virtual Machine.Error: A fatal exception has occurred. Program will exit.'mproperly spe

2021-02-22 11:42:54 626

原创 Maven打包、安装失败,报错:Failed to collect dependencies

错误如下:Failed to execute goal on …: Could not resolve dependencies for project xxx.xxx.xxx.xx:jar:…: Failed to collect dependencies for [xxx.xxx.xxx.xxx:jar:… (compile), …]解决方法:先maven build 后 maven install 父工程,然后在打包子模块就可以解决以上问题。...

2021-01-20 15:31:53 2354 1

原创 JVM垃圾回收-分代回收(十)

分代回收定义:前面所说的垃圾回收算法,Java不会单独使用某一种算法,而是混合使用,Java 具体的实现是通过分代回收实现的。先看一张图从上图可以看到,它分为两个部分:新生代、老年代,新生代又分为了三个区 Eden(伊甸园)+ 幸存区(from)+ 幸存区(to)。具体执行逻辑如下:1、当线程执行时,会产生新的对象,并放入Eden区,当新生代内存不足时,触发minor GC,Eden和from存活的对象copy到to中,存活的年龄加1并且交换from to2、minor GC 会触发 stop

2020-09-25 18:53:59 241

原创 JVM垃圾回收-算法(九)

一、标记清除法标记清除算法分为两步: 标记、清除通过GC Root 开始通过引用链去查找,没有被引用的则被标记,被引用的则保留,标记完成以后直接执行清除如下图:**优点:**速度快**缺点:**内存不连续,容易产生标记碎片。由于回收时进行内存整理,如果突然间创建了一个新的对象,这个对象比较大,整个内存是可以放的下这个新对象的,但是这时会出现一个问题,如果回收的位置比内存较小,且这个新对象大于标记清除的内存,就会报内存溢出的问题二、标记整理标记整理解决了标记清除的标记碎片的问题,也分为两步标

2020-09-25 17:39:25 161

原创 JVM垃圾回收 -如何判断对象可以被回收(八)

一、引用计数算法当对象引用了则这个对象加计数加1.再次引用了则计数变为2,如果不再引用了则计数减1,知道这个计数变为0,则对对象回收。问题:当两个对象相互引用时,虽然他们不会再被引用了,但他们的计数不能归为0,所以无法垃圾回收(如下图)。Java 没有使用此类算法二、可达性分析算法此算法的核心是:通过一系列的GC ROOT 作为起点,沿着引用链向下寻找,如果找不到,则表示该对象可以会被回收。name什么对象可以 作为Root 起点呢?可以通过(jmap -dump:format (抓取文件的格

2020-09-25 16:47:58 481

原创 JVM直接内存(七)

1、Direct Mermory:常见于NIO的操作,用于数据缓冲区分配回收成本较高,但读写性能高不受JVM内存回收管理2、Direct Mermory对写性能高的原因?由于Java不能直接取系统的文件的。当执行文件读取时java会调动本地的native方法,切换的到本地系统的内核态,内核会调用本地系统的函数,开辟一块缓存区域,这块缓冲区就叫直接内存,同时Java也会在虚拟机堆内存中开辟一块Java 缓冲区 ,由于java是不可以读取本地缓存区的,所以它需要将本地缓存区的数据copy到java

2020-09-25 13:31:37 165

原创 JVM方法区(六)

一、官网定义Java虚拟机具有一个在所有Java虚拟机线程之间共享的方法区域。该方法区域类似于常规语言的编译代码的存储区域,或者类似于操作系统过程中的“文本”段。它存储每个类的结构,例如运行时常量池,字段和方法数据,以及方法和构造函数的代码,包括用于类和实例初始化以及接口初始化的特殊方法方法区域是在虚拟机启动时创建的。尽管方法区域在逻辑上是堆的一部分,但是简单的实现可以选择不进行垃圾回收或压缩。该规范没有规定方法区域的位置或用于管理已编译代码的策略。方法区域可以是固定大小的,或者可以根据计算的需要进行扩

2020-09-25 13:31:07 138

原创 JVM堆(五)

1、定义通过new 关键创建的实例都会放入内存中,特点是线程共享的,需要考虑线程安全问题,有垃圾回收机制2、演示堆内存的溢出的问题/*** * * @author Administrator * 通过配置参数设置堆内存空间-Xmx8m */public class JvmHeapTest { public static void main(String[] args) { List<String> list = new ArrayList<String>

2020-09-23 18:08:15 121

原创 JVM本地方法栈(四)

1、什么是本地方法栈本地方法栈英文全称 Native Method Stack 是存放本地方法的地方。2、 什么是本地方法本地方法是没法使用Java语言编写的方法,是使用C或者C++ 编写的3、方法的作用与特点作用:是用于操作系统的交互,特点:使用native 修饰。常用的Object 类中的hashcode、wait 、notify、notifyAll 等都是本地方法...

2020-09-22 10:38:50 890 1

原创 JVM 栈深入理解(三)

一、栈的相关理解1、什么是栈当线程运行时就会开辟一个内存空间, 这个内存空间就是栈,也称为栈内存。它是由多个栈针(Frame)组成,生命周期和线程相同2、什么是栈针?一个方法就是一个栈针,也是每个方法运行所需要的内存。栈针是由方法中的参数、临时变量、返回地址等组成,当方法调用完成就会释放内存3、入栈规则栈针入栈的规则采用后进先出的原则,先入栈的是主方法,往后依次是被调用的子方法,所以最先出来的栈针是最后被进去的子栈针4、什么是活动栈针活动栈针就是当前线程正在运行的方法,每个线程只能允许

2020-09-21 21:06:04 239

原创 JVM程序计数器 (二)

一、什么是程序计数器 程序计数器英文层Program Counter Register, 它的作用是记住下一条JVM执行指令当一段成程序执行的时候,会先编译成二进制的字节码, jvm 指令通过解释器解释成机器码,于此同时它也会将下一次执行的jvm 指令位置交给计数器。然后再将机器码交给cpu 去执行,当第一条指令执行完成以后,解释器就会去计数器中拿需要执行的下一条指令,当下一条指令程序开始执行的时候,同时会删除当前指令位置的并将下一次执行的指令位置交给计数器,直到程序执行完成。 由于计数器使用的非

2020-09-21 20:57:03 167

原创 JVM 概念定义和结构(一)

1、 什么是 JVMJVM 是Java Virtrual machine(java 虚拟机)的缩写,是java 程序的运行环境(java 二进制字节码的运行环境)2、JVM 特点1、平台无关性,可以一次编写,各个平台都可以运行2、自动内存管理,具有垃圾回收的功能3、多态3、JVM、JRE、JDK 相关概念JVM : 是Java 虚拟机,屏蔽了java代码和底层操作系统差异 JRE : JVM + 基础类库(java.lang 包 下工具类、IO、集合类库、线程类等)组成了完整的运行环境

2020-09-21 20:54:55 530

翻译 cdh6上安装sqoop1

参照官方问文档:https://docs.cloudera.com/documentation/enterprise/latest/topics/cm_mc_sqoop1_client.html#concept_xtn_35m_n2b1、添加 Sqoop 1 Client2、安装jdbc驱动下载mysql JDBC驱动,放到目录/var/lib/sqoop/中3、设置sqoop1 环境变量 vim /etc/profileexport HADOOP_MAPRED_HOME=/opt/cl

2020-08-25 13:12:43 1982

原创 解决redis Could not get a resource since the pool is exhausted 问题

最近新搭建了redis 服务,版本是redis5.08,在我使用JedisPoolConfig 去连接时出现以下异常org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssoConfig' defined in URL [jar:file:/wls/apps/sso-server/sso-server-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/co

2020-07-28 18:51:28 10307

原创 Nginx基于端口的虚拟主机配置(学习五)

1、需求1、nginx对外提供80和8080两个端口监听服务。2、请求80端口则请求html80目录下的html3、请求8080端口则请求html8080目录下的html2、准备环境1、创建192.168.156.3虚拟机,保证本地电脑和虚拟网络通畅。2、在192.168.156.3上安装nginx。3、html目录创建3.1、将原来nginx的html目录拷贝两个目录 “html80”和“html8080”[hadoop@node1 local]$ pwd/usr/local[h

2020-07-27 19:12:53 246

原创 Nginx基于域名的虚拟主机配置(学习四)

1、需求1、两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。2、两个域名是test.a.com和test.b.com 3、nginx服务器使用虚拟机192.168.156.3 2、准备环境1、创建192.168.101.3虚拟机,保证本地电脑和虚拟网络通畅。在192.168.156.3上安装nginx。2、通过host文件指定test.a.com和test.b.com对应192.168.156.3虚拟机:修改window的hosts文件:(C:\Windows\Sy

2020-07-27 19:12:02 202

原创 Nginx虚拟主机配置(学习三)

(一)什么是虚拟主机虚拟主机是一种软硬件技术,它可以将一台计算机分成多个虚拟机,每个虚拟机可以对立对外提供www服务,这样可以实现一台主机对外提供多个web服务,每个虚拟机之间是相互独立的,互不影响通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置:1、基于ip的虚拟主机, 2、基于域名的虚拟主机 3、基于端口的虚拟主机二、 nginx 配置文件结构......events { .......}http{ ....... server{ ..

2020-07-27 19:11:34 118

原创 Nginx安装(学习二)

一、下载官网地址 :http://nginx.org/en/download.html当前最新稳定版本为:nginx-1.18.0.tar.gz二、安装2.1 、环境准备nginx是C语言开发,建议在linux上运行,我使用的Centos7.8作为安装环境。1. gcc安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ 2. PCREPCRE(Perl Compatible Regular

2020-07-27 15:59:54 123

原创 Nginx介绍(学习一)

1、什么是 NginxNginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定2、Nginx的应用场景1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。3、反向代理,负载均衡。当网站的访问量达

2020-07-27 14:46:53 107

原创 Linux新增用户并给与sudo权限

f'dfd

2020-07-27 12:09:06 1251

原创 线程同步

同步:synchronized 同步的概念即是共享,当某个资源需要共享时。可以使用同步,同步的目的是保证线程的安全异步:asynchronized异步就像页面的ajax 请求一样,相互独立互不受影响

2020-07-20 10:32:56 99

原创 多个线程访问多个对象的synchronized方法

当多个线程访问不同的对象的synchronized 方法时,会是什么样呢?先看代码 如下:public class MyThread2 { private int num =0; public synchronized void run(String flag){ try { if("a".equals(flag)){ num =10; System.out.println("flag a , set num over"); Thread.sleep(100

2020-07-19 18:00:36 613

原创 线程安全

(一)什么是线程安全?当多个线程程访问同一个对象或者方法是,该该类或者对象表现出正常的行为,我就认为线程就是安全的 。(二)用几个运行实例来解释线程安全**1、实例一public class MyThread extends Thread{ private int count =5; public void run(){ count --; System.out.println(this.currentThread().getName() + " count : " + cou

2020-07-19 16:41:26 111

原创 root实现对HDFS文件系统权限访问

在使用root 用户新搭建好cdh后, 发现在想hdfs上写数据时老是报权限不够的问题经过查找资料发现,root用户只是系统的超级管理员而不是hdfs的超级管理员, cdh安装后默认hdfs为超级管理员。如果想让用户有访问hdfs 权限提供了一下两种方法(一)改变用户到hdfs用户组由于HDFS文件系统的目录都属于supergroup用户组,所以就把用户添加到该用户组,即可解决很多权限问题。1、在Linux执行如下命令增加supergroupgroupadd supergroup2、如将用户r

2020-07-10 21:47:31 4167

原创 springboot jdbc 连接 hive 时所遇到的问题

(一)常见的问题在使用springboot jdbc连接hive时,通常会报各种各样的java 包冲突以下是几种常见的错误首先声明我使用的CDH版本是 CDH5.12.0 ,springboot 版本是2.0.81.1、org.apache.thrift.TApplicationException: Required field ‘client_protocol’ is unset! Struct:TOpenSessionReq(client_protocol:null)则极可能的原因是你项目的

2020-07-10 20:59:04 4831 1

空空如也

空空如也

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

TA关注的人

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