
Java
文章平均质量分 53
隙间光点
加油
展开
-
最大区间值
题目描述给定一个数组序列,要求选出一个区间。使得该区间是所有区间中经过如下计算之后得出的值最大的一个:计算规则:区间中最小的数✖️区间所有数的和最程序输出经过计算的最大值即可,不需要输出具体的区间如给定序列 [6,2,1] 经过计算后的最大值为:36解题思路-java 两个关键点是 区间中最小的数、区间所有数的和。单个元素可以被认为是一个区间。然后就是在找到区间中最小的数的同时,如何计算其区间和。public int getMax(int[] numbers) { if原创 2021-03-22 19:51:51 · 895 阅读 · 0 评论 -
透彻理解JavaIO
记-更加深刻理解Java IOJava IO读写原理在Java层面的应用开发离不开输入流 Input 和 输出流 Output 的处理,简称为IO读写用户程序在进行IO读写操作的时候,离不开 read&write 的调用需要注意的是IO读写并不是物理设备和内存之间的相互读写以read系统为代表的输入流,是把数据从内核缓冲区复制到进程缓冲区以write系统为代表的输出流,是把数据从进程缓冲区复制到内核缓冲区内核缓冲区和磁盘之间的数据读写交换,由操作系统内核完成Q:什么是内核缓冲区原创 2020-06-01 21:06:27 · 380 阅读 · 0 评论 -
序列化的应用与深入
序列化和反序列化序列化序列化是一种用来处理对象流的机制—即把对象转换为字节序列的过程反序列化把字节序列恢复为对象的过程称为对象的反序列化主要用途对象的字节序列可永久地保存到硬盘上,通常存放在文件当中在网络上传输对象的字节序列序列化的意义持久化java对象当JVM处于运行期的时候,我们可以在Java平台使用可复用的对象现实应用中,JVM停止运行之后希望能够保存指定的对象,以便重新读取Java对象在进行网络传输时,需要实现 Serializable 接口解决网络传输问题原创 2020-05-27 16:15:41 · 277 阅读 · 0 评论 -
Java - 深入探究ConcurrentHashMap(二)
基于jdk1.8ConcurrentHash扩容-数据迁移阶段扩容阶段源码注释版本// 对目标节点位置加锁,开始处理数据synchronized (f) { // 双重校验 if (tabAt(tab, i) == f) { // ln:低位节点 hn:高位节点 Node<K,V> ln, hn; if ...原创 2020-04-17 19:39:32 · 385 阅读 · 0 评论 -
Java - 深入探究ConcurrentHashMap(一)
什么是ConcurrentHashMapConcurrentHashMap是J.U.C包里面提供的一个线程安全且高效的HashMap。在并发场景中shi使用频率比较高。由于是HashMap的派生类,所以其API和HashMap类似。ConcurrentHashMap源码分析JDK1.7和JDK1.8版本的变化在JDK1.7的实现上,ConcurrentHashMap是一个Segme...原创 2020-04-14 18:27:22 · 429 阅读 · 0 评论 -
Java - 之 白话 讲 线程池原理
什么是线程池线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要被处理,则将任务直接分配给线程池中的线程来执行,任务处理完之后线程不会被立即销毁,而是等待后续分配任务。同时通过线程池来重复管理线程还可以避免创建大量线程增加开销。使用线程池的优势1.降低创建线程和销毁线程的性能开销。...原创 2020-03-21 17:03:29 · 286 阅读 · 0 评论 -
Java - JUC -常用的并发工具类
ConditionCondition是JUC里面多线程协调通信的工具类,可以让一些线程一起等待条件即(Condition)。只有当满足条件时,线程才会被唤醒。类似于 wait/notify 。在Condition中也有类似的实现。public class ConditionAwait implements Runnable{ private Lock lock; ...原创 2020-03-16 19:09:57 · 717 阅读 · 0 评论 -
Java 同步工具AQS:AbstractQueuedSynchronizer
1AQS是什么java.util.concurrent包中,LOCK用到了一个同步队列AQS - AbstractQueuedSynchronizer1.1AQS的功能独占和共享,即 排他锁/非排他锁共享:允许多个线程同时获取锁,并发访问共享资源资源,比如ReentrantReadWriteLock1.2AQS的内部实现AQS队列内部维护的是一个FIFO的双向链表...原创 2020-02-25 09:35:11 · 215 阅读 · 0 评论 -
Java 之 线程的分类
Java中线程的分类线程主要可以分为主线程:即main()方法子线程:非主线程皆为子线程子线程地分类守护线程:主要指为主线程提供通用服务的线程,比如GC线程。主线程一旦结束或者被销毁,守护线程也同步结束和销毁。非守护线程:即用户线程,通常异步处理一些业务逻辑。用户线程本质上是我们自己创造的线程,通过start()方法启动。通过线程的setDaemo(true)方法,可以设置...原创 2020-02-22 19:22:24 · 587 阅读 · 0 评论 -
Java 之 关于volatile的一些理解
1.volatilevolatile关键字是一个特征修饰符,确保本条指令不会因编译器的优化而省略。可以li理解为阻止编译器对代码进行优化。先了解一下原子性(atomicity)和可见性(visibility)以及有序性1.1原子性即一个操作或者一段代码,要么全部执行并且执行过程中不被任何因素打算,要么不执行。1.2原子操作1.2.1处理器实现原子操作-(总线锁、缓存锁)...原创 2020-02-22 04:02:47 · 210 阅读 · 0 评论 -
Java join()方法、wait()方法和sleep()方法的理解
join()join()方法来自于Thread,join()方法的作用是 阻塞 调用该方法的线程,使其进入TIMED_WAITING 状态,直到被调用的线程执行完毕,原方法继续执行。如以下代码,在主线程中调用join()方法,会首先执行run()方法中的代码。当我们把join()方法给注释掉,会发现,首先执行了主线程的代码。即 调用join()方法阻塞了主线程,当run()方法执...原创 2020-02-20 00:24:36 · 547 阅读 · 0 评论 -
Java synchronized-锁的概念
synchronized的用法1.修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁2.修饰静态方法,作用于当前类对象的锁,进入同步代码前要获得当前类对象的锁3.修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码块之前要获得给定对象的锁关于锁.锁是什么?锁是处理并发的一种同步手段。Java提供的加锁方法就是synchronized关键字。.为什么任何...原创 2020-02-15 20:19:19 · 231 阅读 · 0 评论 -
Java 关于对象在内存中的布局
在Hotspot虚拟机,对象在内存中的存储布局可以分为三个区域1.对象头(Header)对象头包含两部分,第一部分存储自身运行时的数据。如HashCode GC分代年龄 锁状态标志 线程持有锁 偏向线程ID 偏向时间戳 官方称为 MarkWord第二部分是类型指针即对象指向它的类元素的指针,通过此指针来确定是那个类的对象1.1MarkWord与synchroni...原创 2020-02-12 22:50:59 · 194 阅读 · 0 评论 -
Java 线程的启动和停止原理
线程的启动和停止原理线程的启动总所周知,我们在Javachen程序中启动一个线程,需要调用该线程的start()方法来启动线程。也就是我们通过Java中定义的start()方法来启动一个线程public synchronized void start() { /** * This method is not invoked for the mai...原创 2020-01-24 00:32:40 · 466 阅读 · 0 评论 -
Java-进阶之问题记录
1.Java什么时候用重载,什么时候用重写?重载是多样性,重写是增强剂。 Java中的重载overload最重要且最常用的应用场景是构造器的重载,构造器重载后,提供多种参数形式的构造器,可以应对不同的业务需求,加强程序的健壮性和可扩展性。比如Spring源码中的ClassPathXmlApplicationContext,他的构造函数使用重载一共提供了10个构造函数,这样...原创 2019-05-14 21:22:02 · 201 阅读 · 0 评论 -
Java——AQS队列变化时序图分析
AQS队列添加一个节点头节点释放原创 2019-05-23 21:40:48 · 680 阅读 · 0 评论 -
Java-关于多线程可见性的一些问题
1.请列出Happens-before的几种规则1.单线程happen-before原则:在同一个线程中,书写在前面的操作happen-before后面的操作。2.锁的happen-before原则:同一个锁的unlock操作happen-before此锁的lock操作。3.volatile的happen-before原则:对一个volatile变量的的写操作happen-before对此...原创 2019-05-27 21:05:49 · 301 阅读 · 0 评论 -
Java_ReentrantLock_重入锁之非公平锁NonfairSync源码分析
1.以非公平锁为例,来看看 lock 中的实现1. 非公平锁和公平锁最大的区别在于,在非公平锁中我抢占锁的逻辑是,不管有没有线程排队,我先上来 cas 去抢占一下2. CAS 成功,就表示成功获得了锁3. CAS 失败,调用 acquire(1)走锁竞争逻辑1.1让我们先来了解一下CAS的原理首先我们需要明白一点:锁拥有一个共享的数据来记录其基本状态(无锁/有锁 状态)-...原创 2019-05-24 22:00:21 · 388 阅读 · 0 评论 -
Java---ReentrantReadWriteLock---源码分析
ReentrantReadWriteLockReadLockreadLock:时序图readLock:源码分析tryAcquiredShared(int unused)protected final int tryAcquireShared(int unused) { Thread current = Thread.currentThread(); // c为...原创 2019-05-27 20:34:40 · 294 阅读 · 0 评论