java
文章平均质量分 92
迷路剑客
弱小和无知不是生存的障碍,傲慢才是。
展开
-
jdbc、jpa、spring data jpa、hibernate、mybatis之间的关系及区别
JPA Hibernate Spring Data JPA转载 2022-09-19 18:00:07 · 1860 阅读 · 0 评论 -
Java-Signal-Linux信号量
Java-Signal-Linux信号量转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:JAVA学习系列:使用SIGNALHANDLER来处理LINUX信号量,控制程序结束的步骤作者:枫夜求索阁1 场景最近,开发的程序是对kafka进行消费,程序开发完毕之后,发现程序的终止一直都是很简单粗暴的kill -9 pid,然后存在数据处理到一半,然后就被干掉,导致最后的结果数据只入了一半便不见了。所以,就这样产生了一个需求:当要结束程序的时候,告知程序要结束了,并等转载 2021-12-02 15:35:31 · 506 阅读 · 0 评论 -
Java-多线程-ForkJoinPool
Java-多线程-ForkJoinPool转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:小家java】Java线程池之—ForkJoinPool线程池的使用以及原理作者:YourBatman出处:CSDN转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要Java 7 引入了一种新的并发框架—— Fork/Join Framework。同时引入了一种新的线程池:ForkJoinPool(ForkJoinPoo转载 2020-08-28 18:42:25 · 277 阅读 · 0 评论 -
Java-多线程-Future、FutureTask、CompletionService、CompletableFuture解决多线程并发中归集问题的效率对比
转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:【小家Java】Future、FutureTask、CompletionService、CompletableFuture解决多线程并发中归集问题的效率对比作者:YourBatman出处:CSDN转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要开启线程执行任务,不管是使用Runnable(无返回值不支持上报异常)还是Callable(有返回值支持上报异常)接口,都转载 2020-08-28 13:43:58 · 1670 阅读 · 2 评论 -
Java-枚举
Java-枚举转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:深入分析Java中的枚举类(JDK 1.8)作者:漫话编程Java枚举类,字节码层面的深入浅出作者:grandachnJava枚举类,你真的了解吗?作者:luluyo1 概述1.1 枚举类用途枚举类一般用于一个类只可能拥有有限个实例,比如季节只可拥有春夏秋冬,性别只有男女。枚举类...转载 2020-04-26 21:50:16 · 276 阅读 · 0 评论 -
Java学习-Java到底是值传递还是引用传递?
Java学习-Java到底是值传递还是引用传递?转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:Java 到底是值传递还是引用传递?作者:Hollis转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。1 常见错误认识错误理解一值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引...转载 2019-10-30 22:39:22 · 143 阅读 · 0 评论 -
Can't connect to SOCKS proxy:Connection refused
启动含有连接数据库的java-web程序时报错如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureCan't connect to SOCKS proxy:Connection refused经查,是因为开了代理导致,关闭后即可恢复正常。...原创 2019-10-21 17:01:49 · 6830 阅读 · 0 评论 -
OpenJDK 源码的目录结构
OpenJDK 源码的目录结构转载声明:本文系转载自以下文章:jdk源码剖析一:OpenJDK-Hotspot源码包目录结构作者: 只会一点javaOpenjdk 源码结构说明(一)作者:hioeb转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JD...转载 2018-12-17 20:26:30 · 3928 阅读 · 0 评论 -
Java-底层原理-类加载机制
Java-类加载机制摘要本文简要介绍Java加载机制,还会介绍双亲委派机制的破坏,线程上下文加载器,以及JDBC Driver是如何自动加载的。未完成0x01 Java类加载机制1.1 简介当前版本jdk是采用双亲委派机制:子ClassLoader总是会让父ClassLoader尝试加载,如果不行,才会自己尝试加载。1.2 双亲委派的意义比如java.lang.Object,用...原创 2019-01-06 15:40:21 · 1111 阅读 · 0 评论 -
Java-注解
Java-注解转载声明:本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:最通俗易懂的java注解讲解作者:frank909来源:腾讯云转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要Annotation中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。......转载 2018-12-25 21:31:29 · 600 阅读 · 0 评论 -
Java-底层原理-编译原理
Java-JVM-从源代码到机器码转载声明:本文系转载自以下文章:JVM系列第4讲:从源代码到机器码,发生了什么?作者:陈树义来源:博客园转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要在上篇文章我们聊到,无论什么语言写的代码,其到最后都是通过机器码运行的,无一例外。那么对于 Java 语言来说,其从源代码到机器码,这中间到底发生...原创 2018-12-25 00:16:46 · 5565 阅读 · 0 评论 -
Java-底层原理-clinit和init
Java-和摘要在准备阶段,类变量(静态非final字段)被设初值,如int类型被设为0,常量被设值。而初始化阶段是类加载的最后一步,此时才会真正开始执行java应用程序代码(字节码)。此阶段中,会真正为类变量赋初值,以及做其他资源的初始化工作。这个阶段就会执行类构造器即<clinit>方法。0x01 1.1 简介<clin原创 2018-12-24 23:25:13 · 2964 阅读 · 6 评论 -
Java-底层原理-javac源码笔记
Java-JVM-javac源码笔记摘要本文只是简单记录下javac的源码阅读笔记未完待续0x01 简介Java的编译有三类:1.1 前端编译器简介如Javac,此类前端编译器的优化主要是针对Java编码过程功能将.java转为.class主流实现Javac1.2 JIT编译器(后端编译器)简介Just in time,即时编译器。可以把热点代码直接转为机器码,...原创 2018-12-23 21:35:29 · 2884 阅读 · 1 评论 -
Guava-Cache
Guava-Cache摘要本文只会记录其用法和常用参数,不会分析其原理。0x01 简介Guava Cache十分流行,在Apache Calcite等重量级项目中都有使用,比如org.apache.calcite.avatica.jdbc.JdbcMeta:private final Cache<String, Connection> connectionCache;th...原创 2019-02-27 18:00:51 · 275 阅读 · 0 评论 -
Java-并发-线程池
Java-并发-线程池摘要本文简要介绍线程池,浅析其原理。0x01 基本概念1.1 Java线程池简介Java多线程环境中,使用线程池是是否必要的。在《阿里巴巴Java编码规范v1.4.0》之中,就可以看到以下描述:【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如...原创 2019-02-13 11:17:06 · 400 阅读 · 0 评论 -
Java-tomcat远程调试
Java-tomcat远程调试0x01 服务器端进入tomcatvim bin/catalina.sh里面查找 JPDA_ADDRESS查看端口号(要注意catalina.sh里面是否有CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,...原创 2019-06-05 15:50:18 · 380 阅读 · 0 评论 -
为什么Java StringBuilder的效率要比String高?
为什么Java StringBuilder的效率要比String高?概述在Java中,字符串拼接很常见,为什么总是说StringBuilder的效率要比String高呢,大概原因就是String是不可变对象,而StringBuilder在拼接时只是把字符串转为char拷贝到char[]。具体如下String不可变String对象不可变,则每次拼接都会创建新的String对象。即使在新的jd...原创 2019-06-12 16:06:49 · 1305 阅读 · 0 评论 -
为什么Java StringBuilder的效率要比String高?
为什么Java StringBuilder的效率要比String高?概述在Java中,字符串拼接很常见,为什么总是说StringBuilder的效率要比String高呢,大概原因就是String是不可变对象,而StringBuilder在拼接时只是把字符串转为char拷贝到char[]。具体如下String不可变String对象不可变,则每次拼接都会创建新的String对象。即使在新的jd...原创 2019-06-12 16:06:49 · 442 阅读 · 0 评论 -
Java-反射
转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:深入分析Java方法反射的实现原理作者:占小狼Java反射机制的适用场景及其利与弊一文了解Java反射和应用作者:zolalad1 前言1.1 方法反射实例实例1public class ReflectCase { public static void main(String[] arg...转载 2019-07-26 17:35:00 · 210 阅读 · 0 评论 -
Java-并发-SynchronousQueue
转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:SynchronousQueue的使用作者:零度anngle转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要在研究ThreadPool源码的时候,看到Executors.newScheduledThreadPool用了SynchronousQueue做接收...转载 2019-09-04 16:47:35 · 423 阅读 · 0 评论 -
Java-HashCode
Java-HashCode0x01 摘要HashCode是jdk里面大量采用的一个方法,经常用来区分对象。本文谈谈hashCode在不同类的实现。0x02 Objectpublic native int hashCode();在Object中定义的hashCode方法是一个native方法,他为不同Object返回了不同int型的hashCode。Object.hashCode()基...原创 2018-11-09 15:50:24 · 1081 阅读 · 0 评论 -
Java-JVM-分类
Java-JVM-分类转载声明:本文系转载自以下文章:RednaxelaFX对主流Java虚拟机讲解作者:RednaxelaFX来源:知乎转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要Wikipedia那个Comparison of Java virtual machines页面给JVM实现分得还挺细。利益相关:Azul Sys...转载 2018-12-22 12:07:45 · 726 阅读 · 0 评论 -
Junit测试常用注解
Junit常用注解0x01 摘要本文简要说下junit里面常用注解的含义和使用,还会总结一些常用的Assert判断语句。0x02 常用Junit注解2.1 @Test用在方法上,定义该方法是测试方法。注意:测试方法必须是public void,但可以抛异常,不过一般不这么做。例子:@Test (timeout = 30000) public void testRMAppSubm...原创 2018-11-22 11:46:30 · 2114 阅读 · 1 评论 -
Debug调试时 Object@xxx表示什么
Debug调试时 Object@xxx表示什么0x01 摘要再用IDEA等工具调试Java代码时,往往会看到类似Person@434这样的信息。关于@符号后面数字表示的含义,这里解释一下。0x02 不是HashCode首先这里要说下,这个数字不是HashCode,也不是其16进制形式。Object对象有一个默认的toString方法如下:public String toString(...原创 2018-11-15 13:07:13 · 5416 阅读 · 6 评论 -
Java-API-Class类详解、用法及泛化
Java-API-Class类详解、用法及泛化转载声明:本文系转载自以下文章:Java中Class类详解、用法及泛化作者: 老白讲互联网转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。0x01 摘要Java程序在运行时,JavaRuntime一直对所有的对象进行运行时类型标识,即所谓的RTTI。这项信息纪录了每个对象所属的Class。...转载 2018-11-16 20:30:34 · 856 阅读 · 0 评论 -
Java-内存模型-数组在内存中的存放
Java-内存模型-数组在内存中的存放转载声明:本文系转载自以下文章:Java数组在内存中是如何存放的作者: 风一样的码农转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。0x01 摘要本文主要内容为:一维数组二维数组数组对象及其引用存放在内存中的哪里?Java中有两种类型的数组:基本数据类型数组对象数组当一个对象...转载 2018-11-16 15:25:10 · 827 阅读 · 0 评论 -
Java-多线程-ThreadLocal全解析
Java-多线程-ThreadLocal0x01 摘要本文简单分析下ThreadLocal实现原理,再附上小例子。0x02 ThreadLocal是什么ThreadLocal提供线程级别的私有局部变量。这些变量和普通变量不同之处在于,通过get或set方法访问这类变量的每个线程都拥有一份独立初始化的变量副本。ThreadLocal通常用private static修饰,可以将状态与该线程...原创 2018-11-14 19:24:29 · 999 阅读 · 0 评论 -
Java8 API 文档
Java8 API 文档谷歌翻译中文版Oracle官方英文版原创 2018-11-15 19:14:52 · 4339 阅读 · 0 评论 -
Java-并发-容器-ConcurrentHashMap
Java-容器-并发-ConcurrentHashMap0x01 摘要本文讲讲Java中使用率极高的线程安全类ConcurrentHashMap未完成0x02 为什么线程安全0x03 源码解析3.1 初始化3.2 放入3.3 取出public V get(Object key) { Node&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;原创 2018-11-09 14:31:38 · 2024 阅读 · 1 评论 -
Java-容器-WeakHashMap
Java学习-容器-WeakHashMap0x01 摘要本文简要介绍弱引用的典型应用-WeakHashMap。0x02 基础概念WeakHashMap是一个特殊的map,有着弱引用的key。也就是说,当某个key没有再被正常使用时,WeakHashMap中的这个key对应的entry会被自动移除。更准确的说,一个拥有一个指定的key的mapping映射存在也不能阻止该key被GC回收。当一...原创 2018-10-30 23:14:47 · 236 阅读 · 0 评论 -
Java-内存模型-引用总结
Java学习-引用总结0x01 摘要本篇文章主要是总结下java中的各种引用即:强引用、软引用、弱引用、虚引用。0x02 强引用引用是JAVA中默认采用的一种方式,我们平时创建的引用都属于强引用。如果一个对象没有强引用,那么对象就可能会被回收。使用强引用一定要注意避免内存泄露。测试代码如下: public void strongReferenceTest(){ ...原创 2018-10-30 22:24:03 · 278 阅读 · 0 评论 -
Java-动态代理
Java学习-动态代理0x01 摘要我们在看源码的时候,往往能发现很多实用动态代理的例子,本文将对其进行简要介绍。0x02 概念动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打...原创 2018-10-23 13:27:35 · 263 阅读 · 0 评论 -
Java-并发-锁-synchronized之对象锁和类锁
Java学习-锁-synchronized之对象锁和类锁0x01 摘要synchronized是java中最常用的一种锁机制,本篇文章主要介绍他的两种用途:类锁和对象锁。0x02 对象锁synchronized作为对象锁时,用在非静态方法或非静态对象上,下面是示例: /** * 对象锁 */ public synchronized void nonStati...原创 2018-10-22 23:57:28 · 526 阅读 · 0 评论 -
Java 9~Java11的七大新特性
(转)Java 9~Java11的七大新特性转载声明本文原文为英文,作者Benjamin。本文内容转自高可用架构,由方圆翻译。请大家关注公众号【高可用架构 】,尊重作者的辛苦付出。本文转载只是为了方便学习。如给原作者带来不便,请联系我删除。0x01 摘要Java11 发布了,然而很多公司还在用Java 8 ,本文会简要介绍Java 9 -11 引入的新语法和API。0x02 本地...转载 2018-09-29 13:23:41 · 401 阅读 · 0 评论 -
Java-并发-队列-阻塞和非阻塞队列总结
转载声明:本文系转载自以下文章:Java 并发 — 阻塞队列总结作者: thgreat0x01 摘要本文会对java并发包内的常用重要阻塞队列进行总结。0x02 ArrayBlockingQueueArrayBlockingQueue 特点:用数组实现有界阻塞队列需要指定队列的大小,它不会像ArrayList那样自动扩容。FIFOArrayBlockingQueu...转载 2018-11-24 01:14:39 · 1094 阅读 · 0 评论 -
Java-并发-队列-PriorityBlockingQueue
Java-并发-队列-PriorityBlockingQueue0x01 摘要PriorityBlockingQueue是优先级阻塞队列,本文简要分析下。0x02 简介PriorityBlockingQueue特点如下:支持优先级无界阻塞队列PriorityBlockingQueue 是无界队列,不会“队满”。实际当到达队列最大值后(Integer.MAX_VALUE - 8,减8...原创 2018-11-24 15:57:32 · 650 阅读 · 0 评论 -
Java-并发-CAS
Java-并发-CAS0x01 摘要本文主要讲讲AQS(AbstractQueuedSynchronizer)中大量使用的CAS,以及著名的ABA问题。0x02 CAS基本概念乐观锁在Java中的一个重要实现就是CAS,全称为 Compare and Swap,就是在内存级别比较和原子性地替换值。在Java里,是用的sun.misc.Unsafe类来实现了很多相关的native修饰的CA...原创 2018-11-26 00:44:18 · 349 阅读 · 0 评论 -
Java-多线程-wait/notify
Java-多线程-wait/notify摘要wait notify 还有个notifyAll都是线程通信的常用手段。本文会简要介绍其底层实现原理,并和Condition的await和signal方法作对比。有一个先导概念就是对象锁和类锁,他们其实都是对象监视器Object Monitor,只不过类锁是类对象的监视器,可以看另一篇文章:Java-并发-锁-synchronized之对象锁和类...原创 2018-12-21 17:47:51 · 414 阅读 · 0 评论 -
Java-并发-锁-synchronized
Java-并发-锁-synchronized摘要本文会详细说下synchronized的底层实现原理。0x01 基本概念每次只能有一个线程进入临界区保证临界区内共享变量的可见性和有序性成功进入synchronized区域的线程可以拿到对象的Object-Monitor。具体有3种用法,作用域不同,在后面例子中介绍。对于拿到锁的线程来说,同一个对象的synchronized具有可重入...原创 2018-12-21 17:15:40 · 497 阅读 · 0 评论 -
Java-并发-Condition
Java-并发-Condition摘要本文介绍Condition,需要配合AQS使用,他也实现了一套类似wait/notify的逻辑。本文会简单分析其实现。0x01 基本概念Condition类其实是位于java.util.concurrent.locks的一个接口类。他的一个常用实现类是AQS的非静态内部类ConditionObject:public class ConditionOb...原创 2018-12-21 14:47:43 · 364 阅读 · 0 评论