
java
青山流水在深谷
大数据开发
展开
-
Java Runtime无法执行复杂特殊linux shell命令
Java使用Runtime,ProcesBuilder执行shell命令失败问题原创 2022-08-28 23:37:10 · 1271 阅读 · 0 评论 -
mybatis in注解导致数组越界
报错信息报错信息2022-04-24 17:17:29.695 INFO 14125 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 120 ms2022-04-24 17:17:30.395 ERROR 14125 --- [nio-8080-exec-2] o.a.c.c.C.[.原创 2022-04-24 17:20:48 · 474 阅读 · 0 评论 -
java线程相关概念之解析
线程安全一个类被多个线程以任意方式同时调用,且不需要外部额外同步和协同的情况下,仍然保持内部数据正确且表现正确的行为,那么这个类就是线程安全的线程安全分五个等级1.不可变1.Final修饰不可变的类,如String,Integer2.枚举类,enum,可反编译查看(使用javac编译后,在使用jad查看class文件为final修饰的 2.命令: a.编译-> javac T...原创 2020-03-24 22:46:20 · 167 阅读 · 0 评论 -
Java线程生命周期之旅
java线程生命周期关于线程生命周期的不同状态,java5以后,线程状态已内部枚举类的方式明确定义在java.lang.Thread.State1.新建(new),表示该线程刚被创建还未真正启动,可认为其是java内部状态2.就绪(RUNNABLE),表示该线程已经在JVM中执行,由于执行需要资源,他可能处于正运行,也可能是等待系统分配给它CPU片段,在就绪队列里面3.在其他一些分析中,...原创 2020-03-19 23:35:43 · 191 阅读 · 1 评论 -
synchronized底层实现及锁的升级、降级
锁的升级、降级所谓所的升级、降级,就是JVM 优化synchronized的运行机制,当jvm检测到不同的竟态条件,会自动切换到合适的锁实现,这种切换情况就是锁的升级、降级synchronized代码块有一对monitorenter/monitorenter指令实现,monitor对象是同步实现的基本单元java6之前,monitor实现完全依靠操作系统内部的互斥锁,因为需要完成用户态到内...原创 2020-03-18 23:50:36 · 704 阅读 · 0 评论 -
Synchronized与ReentrantLock区别
Java互斥访问机制实现java多线程中共享的、可修改的数据,必然涉及到并发访问问题,因此需要通过互斥同步机制来实现实现方法,synchronized,锁机制synchronized非公平,悲观,独享,互斥,可重入重量级锁JVM 层面实现,不但可以通过监控工具监控synchronized的锁定,而且在代码执行异常时,jvm会自动释放锁定,但是Lock不需(需要通过finally的u...原创 2020-03-13 23:23:25 · 368 阅读 · 0 评论 -
JVM优化-CMS下高并发案例
内容大流量高并发场景下估算和调优JVM考量指标系统容量(Capacity)根据应用运行成本,保证在有限的硬件资源下支持应用业务。如领导给出运维费用不超过2万 ,那么你的机器最多是2Core ,4G.延迟(Latency)在应用运行时,能够在用户能忍受的响应延迟下,保证及时响应,提升用户满意度响应能力以最大延迟时间来判断。如一个桌面按钮对一个触发事件响应有多快;需要多长...原创 2020-03-06 23:43:22 · 1186 阅读 · 0 评论 -
JVM-G1垃圾收集器
包含内容G1 回收原理,优势G1后为什么有ZGCG1简述出现背景在发生Minor GC时,由于Survivor区已经放不下去,多出对象只能通过代际提升(generation promtion)到老年代。但是,糟糕的是,老年代因为空间碎片的缘故,会发生concurrent mode failure而无法满足及时响应,影响用户体验.此时会老年代就会降级为Serial old垃圾收集器...原创 2020-03-06 20:22:43 · 419 阅读 · 0 评论 -
深入剖析JVM垃圾回收-下
CMS垃圾收集器GC类型Minor GC ,发生在年轻代GCMajor GC,发生老年代GCFull GC,全堆垃圾回收,如MetaSpace区引起的年轻代和老年代的回收CMS简述 1.CMS全称是Mostly Concurrent Mark and Sweep Garbage Collector 2.年轻代使用copy(Eden from to区域)算法,而老年代使用Ma...原创 2020-03-05 16:36:29 · 238 阅读 · 0 评论 -
JVM之字节码如何在jvm流转
分析字节码文件泛解析工具javap jdk自带泛解析.class文件为可读格式javap使用例子:javap -p -v HelloWorld.class : 打印该字节码文件私有变量及更多信息javac中可以指定额外内容输出到字节码,常用的如下:javac -g:lines 强制生成LineNumberTablejavac -g:vars 强制生成LocalVariableTa...原创 2020-03-03 21:22:11 · 589 阅读 · 0 评论 -
JVM之OOM分析
一.OOM疑难杂症GC Roots对象引用关系GC Roots是一组必须活跃的引用,程序通过直接、间接引用能够访问到的潜在使用的对象 包含:1.java线程,当前所有正在被调用方法的引用类型参数、局部变量、临时值等,即与栈帧相关的各种引用2.所有当前被加载的java类3.运行时常量池的引用类型(String或class类型)4.Jvm内部数据结构引用,如sun.jvm.ho...原创 2020-03-03 21:14:22 · 401 阅读 · 0 评论 -
JVM类加载机制
加载流程加载:从jar包或war包中找到、并加载类的二进制文件加载外部.class文件到jvm的方法区内。验证:验证可以被.class文件是否被加载,放置受到恶意代码攻击。该步骤在类加载过程占了很大一部分,不符合规范的将抛出java.lang.VerifyError错误。一些低版本JVM无法加载高版本类库,验证过程就是该阶段完成为一些类变量分配内存,并将其初始化为默认值。此时,实...原创 2020-03-02 14:12:30 · 206 阅读 · 0 评论 -
JVM内存管理
JVM内存布局java数据结构- 静态成员变量- 类的常量- 动态成员变量- 局部变量(区域变量)- 短小紧凑的对象声明- 庞大复杂的内存申请- java内存区域划分java 7 及其以前内存划分:方法区:线程共享,JVM启动时创建,关闭时销毁。存放类的信息,静态变量,类常量池,字符串常量池堆:线程共享,JVM启动时创建,关闭时销毁。存放类的实例Java虚拟机栈:线程私...原创 2020-03-02 00:39:11 · 183 阅读 · 0 评论 -
设计模式简述
设计模式分类创建性模型:对对象创建过程的各种问题和解决方法的总结工厂模式(Factory,Abstract Factory),单例模式(singleton),构建器模式(Buider),原型模式(Pototype)结构型模式:是对软件设计结构的总结,关注与类、对象继承、组合方式的实践经验桥接模式(Bridge),适配器模式(Adapter),装饰器模式(Decorator),代...原创 2020-02-26 13:27:01 · 158 阅读 · 0 评论 -
接口和抽象类区别
二者区别1.接口和抽象类时Java面向对象设计的基础机制2.接口是行为的抽象,抽象方法的集合,子类可以多重实现,利用接口达到API定义和实现分离目的。不能实例化,不包括任何非常量成员,任何field都隐含public static final意义同时,非静态方法实现,也就是抽象方法,或静态方法,如Java标准库中的List接口3.抽象类,用abstract关键字修饰class,只能被单...原创 2020-02-26 12:56:34 · 155 阅读 · 0 评论 -
常见Java文件拷贝方式及效率
#方法一利用Java.IO,设置缓冲区,通过字节输入流从源文件中将数据读入缓冲区,然后再用字节输出流输出到目标文件中。public static void copyFileByChannel(File source, File dest) throws IOException { try (FileChannel sourceChannel = new FileInputStre...原创 2020-02-25 23:40:08 · 1028 阅读 · 0 评论 -
Java内存模型
JVM 内存模型方法区1.共享,存放类元数据信息,类静态变量,常量,运行时常量池2.生命周期:在JVM启动时创建,在JVM停止时销毁3.版本:jdk8以后是MetSpace堆1.共享,存放引用数据类型,数组,集合,类实例2.生命周期:在JVM启动时创建,在JVM停止时销毁3.参数设置 -Xms:初始堆内存大小,-Xmx:最大堆内存大小Java虚拟机栈1.线程私有,执行Jav...原创 2020-02-25 21:50:52 · 122 阅读 · 0 评论 -
Java IO,NIO多路复用
简述IO1.首先,传统java.io包,基于流模型实现,提供常见功能,File抽象,输入输出流等。交互方式是同步、阻塞的方式,即读取输入流或写入输出流时,在读、写动作完成之前,线程会一直阻塞,他们之间的调用时可靠的线性顺序。2.java.io包的好处是代码比较简单、直观,缺点是IO效率和扩展性存在局限性,容易成为性能瓶颈3.很多时候,java.net下面提供的部分网络API,比如Socke...原创 2020-02-25 13:23:47 · 262 阅读 · 0 评论 -
ConcurrentHashMap如何实现高效线程
Java集合线程安全机制Java提供了不同层面的线程安全支持。在传统集合框架内部,除了HashTable等同步容器,还提供了所谓的同步包装器(synchronized Wrapper),可以通过调用Collection工具类的包装方法,来获取同步包装器(Collection.synchronizeList,Collection.synchronizeMap等),但是它们都是利用非常粗粒度的同步...原创 2020-02-25 10:36:17 · 438 阅读 · 0 评论 -
HashTable,HashMap,TreeMap
共性和差异共性都是最常见Map实现,以键值对形式存储、操作数据的容器类型HashTable是最早期Java提供一个hash表实现,本身是同步的,线程安全,不支持null键、值,同步导致性能开销,很少推荐使用HashMap应用更加广泛的hash表实现,行为与HashTable一致,主要区别于HashMap不支持同步,支持null键值,HashMap进行put、get操作,...原创 2020-02-23 23:25:21 · 160 阅读 · 0 评论 -
Vector、ArrayList、LinkedList
区别都是实现集合框架中的list,即所谓有序集合,具体功能近似,都按照位置进行定位、添加、删除元素,都提供迭代器以遍历其内容等。Vector是Java早期提供线程安全的动态数组,如不需线程安全,不建议选择,毕竟不同有额外开销。Vector内部使用对象数组来保存数据,可以根据需要自动增加容量当数量已满,会创建新的数组,并拷贝原有数组数据ArrayList是应用更广泛的动态数组,非线程安全,...原创 2020-02-23 20:49:37 · 108 阅读 · 0 评论 -
Java之 int与Integer
区别int是java的8个基本数据类型(byte 1字节,short 2字节,int 4字节,long 8字节,float,double,boolean)之一。Integer是int对象的包装类,有一个int类型的字段存储数据,并且提供了基本操作,如数学运算、int和字符串直接的转换。java5 引入boxing/unboxing,java可以根据上下文进行自动转换,极大简化编程。Int...原创 2020-02-22 23:17:58 · 221 阅读 · 0 评论 -
Java之String,StringBuffer,StringBuilder比较
三者区别String:java 非常基础和重要的类提供构造、管理字符串各种基本逻辑。典型immutable类,被声明为final class,属性也是final,无法进行基础扩展由于不可变性,类似拼接、裁剪字段,都会产生新的string对象,由于字符串操作普遍性,相关操作效率往往对应用新年有显著影响。StringBuffer:线程安全条件下解决字符串拼接、裁剪效率为解决上面字符...原创 2020-02-19 22:24:02 · 185 阅读 · 0 评论 -
JDK8安装配置
下载链接官方链接https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html快捷下载根据操作系统下载合适的文件:windows 版本如下:链接: https://pan.baidu.com/s/1hgMjCEYZdGzXPE6K_1YjKw 提取码: ftu3linux版本下...原创 2020-01-18 20:33:53 · 217 阅读 · 0 评论 -
Java NIO-字符集
一 前言 Java NIO提供了字符集,实现对文件编码,解码的更好支持,用字符集可以获取系统支持的编码格式,在获取文件时,可以指定解码格式,然后进行输出时,指定编码的格式,避免获取和输出的文件时乱码。二 字符集 availableCharsets():获取系统可支持的编码格式 canEncode() :通知此原创 2016-09-11 22:55:39 · 771 阅读 · 0 评论 -
Java NIO-MappedByteBuffer
程序访问文件时,有RandomAccessFile随机访问文件内容,字节流访问,缓冲区读入。但是这三种都没有内存直接读取,这里介绍下MappedByteBuffer,可以以内存的速度进行访问文件内容,提高文件内容,提高系统性能。原创 2016-09-11 20:50:43 · 4402 阅读 · 0 评论 -
Java NIO-文件锁
当我们打开一个文件时,别的人也要访问,但是只有一个可以进行操作,这里操作的人获取了文件锁,完成了对文件的排他独占。Java NIO中则提供了文件锁,提供了对文件的共享访问或排它访问。分为共享锁,排它锁。其通过通道进行获得。然后设置对文件的文件锁类型。原创 2016-09-11 22:01:37 · 562 阅读 · 0 评论 -
控制台执行JAVA代码发生的错误(Exception in thread "main" java.lang.NoClassDefFoundError)
1.现在很多人都在用IDE开发工具,既能增加开发效率,又因其自动补全的功能规避了很多错误。但是在有需要的情况下,或测试时,我们仍然需要控制台来执行一些代码。原创 2016-03-01 15:53:39 · 2779 阅读 · 0 评论 -
Date时间类型的变量比较方法
前一段时间在开发时,遇到一个时间类型的比较,以为可以向常见的变量比较方式来比较(如:a==b,a!=b),进而实现业务,后来发现是错误的。原创 2015-08-31 15:27:39 · 2569 阅读 · 0 评论 -
Java NIO-缓冲区操作
在JAVA API提供的原I/O中,提供了文件读写,操作,传输的方法。但是存在一个核心的问题,就是这些文件的读写,操作等都是阻塞式,如果当前操作未完成,程序无法向下执行,所以在某种情况下会严重影响I/O,效率。因此,在后期的JDK版本发布中,出现了NIO,NIO包括对缓冲区操作,通道,文件锁,字符集,selector等。下面为大家介绍下缓冲区。原创 2016-09-11 12:49:37 · 721 阅读 · 0 评论 -
Java NIO-Selector
以往服务端在读写文件时,都是对某个文件进行独占资源进行读取,如果这个操作没有完成,其他服务和请求无法对资源访问,阻塞其他请求和服务执行,显而易见,严重影响了服务器的处理,NIO中Seletor,channel,FileLock的出现,为服务器读取文件资源的性能提供了很大的改变。原创 2016-09-25 10:12:54 · 447 阅读 · 0 评论 -
Java 动态验证码
在一个系统或项目中,登录时,验证码是不必可少,一来可以为安全登录多了一层保障,二则防止网络的攻击。验证码的生成有多种,有JS实现,也有框架自带,也有用开发语言实现,例如java。以下介绍下java实现验证码的原理及过程。原创 2016-10-31 16:02:44 · 1755 阅读 · 1 评论 -
PermGen space-永久区内存溢出
近日在项目开发时,Tomcat部署了四个项目,可以正常启动,但是在进行测试时,Tomcat发生挂起,并抛出永久区内存溢出,:nested exception is java.lang.OutOfMemoryError: PermGen space原来是加载太多jar包和文件,分配Tomcat内存不够了。先解决如下,介绍三种方法:原创 2016-12-05 11:14:19 · 3161 阅读 · 0 评论 -
Spring+Hibernate事务管理
一 前言 近期在项目开发中,遇到了spring+hibernate开发的问题,在程序启动的过程中,出现了hibernate无法获取会话,事务无法创建的情况。追踪问题,并查文章,资料之后,发现有段程序写的有问题。另,对hibernate事务管理,springhibernate事务管理有了更深一层认识。下面说下个人见解和总结,希望有所裨益。二 原理原创 2016-12-19 20:08:10 · 360 阅读 · 0 评论 -
Java ClassNotFound
Java,scala 开发中很容易遇到ClassNotFound,NoClassDefFoundError,很容易弄混淆,但是而这有区别.一般情况下ClassNotFound:是否工程没有对应的依赖Jar,所以在工程,程序运行时,无法加载对应的类,从而报错.解决: 根据异常,找到程序所需依赖Jar,选择合适,兼容版本配置到工程中.NoClassDefFoundErr原创 2018-01-22 15:20:50 · 1530 阅读 · 0 评论 -
Spark+livy+kerber 通过API访问远程Hadoop集群(Kerberos认证)
1.生成本地主机秘钥进行配置2.安装Kerberos 客户端ubuntu:centos:yum install krb5-user libpam-krb5 libpam-ccreds auth-client-configyum install krb5-workstation2.配置本地的hostname-ip 在远程集群livy,Kerberos集...原创 2019-08-14 18:29:05 · 85 阅读 · 1 评论 -
Java 缓存管道流(BufferedReader)按行读取文件
输入文件/home/jerry/304.log代码import java.io.*;public class Test { public static void main(String[] args) { BufferedReader bf_read = null; BufferedWriter bf_write = null; ...原创 2019-09-16 10:11:06 · 695 阅读 · 0 评论 -
对于java文件不能访问的情况分析
java.io.IOException: 拒绝访问。 at java.io.WinNTFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:850)原创 2015-06-18 14:49:33 · 1274 阅读 · 0 评论