JAVA基础
文章平均质量分 89
加油妹妹
写的博客如果云里雾里,还有什么意义
展开
-
终于知道啥是回调了·
以前一直用回调回调,其实不咋知道啥是回调,今天终于想起来去搜一下,其实也就10分钟的事情。多么简单,同步回调,异步回调!!!look~~~https://www.cnblogs.com/prayjourney/p/9667835.html转载 2020-05-28 19:50:18 · 405 阅读 · 0 评论 -
Java并发编程:线程池的使用(深入浅出)
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolExecutor...转载 2019-01-04 09:40:40 · 211 阅读 · 1 评论 -
大白话说Java反射:入门、使用、原理
大白话说Java反射:入门、使用、原理目录一个简单的例子 反射常用API 获取反射中的Class对象 通过反射创建类对象 通过反射获取类属性、方法、构造器 反射源码解析文章首发于【博客园-陈树义】,点击跳转到原文《大白话说Java反射:入门、进阶、原理》反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是...转载 2019-01-04 13:51:12 · 344 阅读 · 0 评论 -
netty 学习(一)
Netty学习Netty组件Channel在Netty中Channel可以抽象为,一个socket连接,根据不同的类型,可以有EmbeddedChannel; LocalServerChannel; NioDatagramChannel; NioSctpChannel; NioSocketChannel把这些channel看成一个个个体,而不是概念。Nio...原创 2018-12-31 14:48:01 · 237 阅读 · 0 评论 -
死磕JVM (七) 锁优化
目录1 概述2 Java对象头2.1 Mark Word3 锁优化3.1 自旋锁3.2 适应自旋锁3.3 锁消除3.4 锁粗化3.5 偏向锁3.5 轻量锁3.7 重量级锁4 总结死磕JVM(一)内存区域https://blog.csdn.net/u012133048/article/details/85344025死磕JVM(二)内存模型...原创 2018-12-31 22:16:58 · 231 阅读 · 0 评论 -
为什么要同时重写equals和hashcode方法
现在有两个Student对象:Student s1=new Student("小明",18);Student s2=new Student("小明",18);此时s1.equals(s2)一定返回true(注意,以下是关于hashcode的一些规定:两个对象相等,hashcode一定相等两个对象不等,hashcode不一定不等hashcode相等,两个对...原创 2019-02-22 15:09:07 · 5858 阅读 · 5 评论 -
mybatis的缓存机制
mybatis缓存机制详解转自:https://www.cnblogs.com/winclpt/articles/7511672.htmlmybatis提供了缓存机制减轻数据库压力,提高数据库性能mybatis的缓存分为两级:一级缓存、二级缓存一级缓存是SqlSession级别的缓存,缓存的数据只在SqlSession内有效二级缓存是mapper级别的缓存,同一个namespa...转载 2019-02-22 16:50:15 · 114 阅读 · 0 评论 -
【Intellij IDEA系列】IDEA右键没有Git或svn处理方法
1.VCS--->Enable Version Control Integration2.选择要关联的版本工具转载 2019-06-21 14:07:20 · 460 阅读 · 0 评论 -
java基础(三)关于内存回收
文章目录1 前言2 引用2.1 对象的状态2.1 引用1 前言 虽然在《死磕JVM》的博文中已经写了关于内存回收的内容,但是最近看了在复习基础时,看到了关于引用的一些内容,对之前的学习是很大的补充。我们都知道根据可达性垃圾回收算法,对于那些引用不可达的对象,会进行回收。这么说是没错,但是本文不对这部分内容过多赘述,主要是补充一下关于引用的内容和避免内存泄漏的方法。2 引用2.1 对象...原创 2019-07-02 22:46:48 · 437 阅读 · 0 评论 -
java基础(一) 数组的内存控制
文章目录1 数组初始化1.1 数组是静态的1.2 是谁需要初始化?2 使用数组 当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成。程序以后将不能重新改变数组对象在内存中的位置和大小。1 数组初始化1.1 数组是静态的 Java语言的数组变量是引用类型的变量,因此具有Java独有的特性。 Java的数组是静态的,即当数组被初始化之后,该数组的长度...原创 2019-06-28 07:23:47 · 171 阅读 · 0 评论 -
java基础(二)对象和内存控制
文章目录1 实例变量和类变量2 实例变量和类变量的内存属性3 父类构造器1 实例变量和类变量java 变量大体可分为:成员变量局部变量局部变量分为以下三种:形参:申明方法时定义的变量,随着方法结束而结束。方法内定义的局部变量:必须在方法内显示的初始化,随着方法结束而结束。代码块的局部变量:也需要在代码块中显示初始化,随着代码块结束而结束 类中定义的变量为成员变量。...原创 2019-07-18 06:56:32 · 166 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 目录Java并发编程:CountDownLatch、CyclicBarrier和Semaphore一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如Co...转载 2019-07-21 22:16:29 · 191 阅读 · 0 评论 -
AQS结构及原理分析和Reentrant非公平锁
AQS介绍AQS,即AbstractQueuedSynchronizer, 队列同步器,它是Java并发用来构建锁和其他同步组件的基础框架。来看下同步组件对AQS的使用:AQS是一个抽象类,主是是以继承的方式使用。AQS本身是没有实现任何同步接口的,它仅仅只是定义了同步状态的获取和释放的方法来供自定义的同步组件的使用。从图中可以看出,在java的同步组件中,AQS的子类(Sync等)一般是...转载 2019-07-22 15:26:56 · 347 阅读 · 0 评论 -
关于AQS的思考
关于AQS的思考1概述在java中,常常使用synchronized实现并发访问,但是ReentrantLock是基于AQS实现的,AQS仅仅是一个工具类,没有使用更底层的机器指令,不是关键字,也不依靠 JDK 编译时的特殊处理,仅仅作为一个普通的类就完成了代码块的并发访问控制。在介绍AQS之前,先讲讲CLH锁,引用网上的定义,CLH锁是一种基于链表的可扩展、高性能、公平的自旋锁,申请...原创 2019-08-30 14:23:00 · 307 阅读 · 0 评论 -
Join() 用法简介
Join() Join使用方法:主线程创建并启动子线程,如果子线程中要进行大量的耗时计算,主线程往往早于子线程结束,如果主线程想等待子线程执行完成后再结束,比如需要获得子线程处理的数据,就需要用到join()。 验证代码:public class MyThread extends Thread { @Override public void run(...原创 2018-08-23 21:00:42 · 957 阅读 · 0 评论 -
JAVA 工厂模式
JAVA 工厂模式使用场景在具体介绍工厂模式之前,首先应该先对其使用场景有个了解,网上的例子虽然介绍了工厂模式的概念,但是看完之后,并没有感觉好在哪里,反而有点绕圈子的感觉。场景1:比如类A,用到的地方很多,每个地方都需要new一个实例。如果此时对A做了修改(比如修改了构造函数的参数类型,或者需求变更,需要将A修改为A的子类),就需要修改所有引用的地方,这时将创建实例的过程...原创 2018-09-05 15:43:53 · 1307 阅读 · 0 评论 -
java单例模式
摘要: 本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景。紧接着,我们给出了单例模式在单线程环境下的两种经典实现:饿汉式和懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的。在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,即分别使用synchronized方法、synchronized块、静态内部类、双重检查模式和ThreadLocal...转载 2018-09-17 22:07:03 · 96 阅读 · 0 评论 -
树
1、树的基本概念深度:计算一个节点的深度,从根节点算起(记住从1开始计数),到该节点所经过的节点数。高度:计算一个节点的高度,从叶子节点算起(记住从1开始计数),到该节点所经过的节点数。节点的度:树的度是如下定义的:有根树T中,结点x的子女数目称为x的度。也就是:在树中,结点有几个分叉,度就是几。一个有用的小公式:树中结点数 = 总分叉数 +1。(这里的分叉数就是所有结点的度之和)...原创 2018-09-10 19:27:16 · 2550 阅读 · 3 评论 -
JAVA NIO浅析
JAVA NIO本文算是把一些讲的比较清晰的帖子,拼凑了一番,修改了部分描述不准确的,以及个人觉得比较混淆的表达方式。补充了一些容易忽略的注意点,以及理解上的小心得。站在各位前辈的肩膀上,总是能走不少弯路。主要参考的博客是:https://blog.csdn.net/hlx20080808/article/details/78053556 ...原创 2018-09-21 15:48:28 · 211 阅读 · 0 评论 -
ConcurrentHashMap原理浅析
HashMap在高并发场景下存在的问题具体信息可以查看下面这个帖子https://blog.csdn.net/minkeyto/article/details/78667944如果实在懒得看也没有关系,我们来简单回顾一下HashMap的结构:简单来说,HashMap是一个Entry对象的数组。数组中的每一个Entry元素,又是一个链表的头节点。Hashmap不是线程安全的。...原创 2018-10-18 13:03:11 · 3433 阅读 · 0 评论 -
ArrayList和LinkedList的区别
List概括 先来回顾一下List在Collection中的的框架图: 从图中我们可以看出: 1. List是一个接口,它继承与Collection接口,代表有序的队列。 2. AbstractList是一个抽象类,它继承与AbstractCollection。AbstractList实现了List接口中除了size()、get(...转载 2018-10-18 14:55:03 · 127 阅读 · 0 评论 -
java 多态特性
面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开: ...转载 2018-10-18 15:55:43 · 588 阅读 · 0 评论 -
Java基础学习总结——Java对象的序列化和反序列化
Java基础学习总结——Java对象的序列化和反序列化一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,...转载 2018-10-09 13:51:36 · 80 阅读 · 0 评论 -
什么是二叉堆?什么是堆排序?什么是优先队列?
什么是二叉堆?什么是堆排序?什么是优先队列?一.什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型:1.最大堆2.最小堆什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。什么是最小堆呢?最小堆任何一个父节点的值,都小于等于它左右孩子节点的值。二叉堆的根节点叫做堆顶。 最大堆和最小堆的特点,决定了在最大堆的堆顶是整个堆中...转载 2018-10-16 19:31:21 · 214 阅读 · 0 评论 -
插入排序,希尔排序,选择排序,快速排序,冒泡排序,归并排序
插入排序1、介绍:简单插入排序算法原理:从整个待排序列中选出一个元素插入到已经有序的子序列中去,得到一个有序的、元素加一的子序列,直到整个序列的待插入元素为0,则整个序列全部有序。 在实际的算法中,我们经常选择序列的第一个元素作为有序序列(因为一个元素肯定是有序的),我们逐渐将后面的元素插入到前面的有序序列中,直到整个序列有序。2,图解9 为第一个元素,第一个...原创 2018-10-16 20:09:04 · 536 阅读 · 0 评论 -
HashMap原理
一、什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操...原创 2018-10-17 18:08:13 · 137 阅读 · 0 评论 -
java设计模式---代理模式--动态代理模式和cglib代理模式详解
代理模式使用场景代理模式的定义:什么是代理模式呢?代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类和委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不是真正实现服务,而是通过调用委托类对象的相关的方法来提供特定的服务。举个例子来说明:假如...原创 2018-10-31 16:18:36 · 1224 阅读 · 1 评论 -
Java 泛型详解
1 概述 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢? 顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参)。 换句话说就是把类型当做参数传进去,在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了在...原创 2018-10-27 15:45:18 · 284 阅读 · 0 评论 -
junit 测试中各种断言用法
junit要注意的细节:1. 如果使用junit测试一个方法的时候,在junit窗口上显示绿条那么代表测试正确, 如果是出现了红条,则代表该方法测试出现了异常不通过。2. 如果点击方法名、 类名、包名、 工程名运行junit分别测试的是对应的方法,类、 包中 的所有类的test方法,工程中的所有test方法。3. @Test测试的方法不能是static修饰与不能带有形参。4. 如果测试一...转载 2018-11-24 20:49:23 · 3591 阅读 · 0 评论 -
线程基本方法
线程基本方法CurrentThread()方法Thread.current();返回当前代码段,正在被哪个线程调用信息。isAlive()方法:MyThread thread = new MyThread();thread.isAlive();判断当前线程是否处于活动状态。Sleep()方法:Thread.sleep(5000);在指定的毫秒数内让特定的线...原创 2018-08-07 19:27:42 · 145 阅读 · 0 评论