6 LovelyBear2019

尚未进行身份认证

我要认证

专注Java后台开发,网络爬虫开发

等级
TA的排名 1k+

Java线程池源码分析

文章目录概述类结构详细解析构造函数一些成员变量关于线程池状态添加一个任务之后发生了什么?execute()方法概述线程是稀缺资源,如果线程被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,所以合理的使用线程池对线程进行统一分配、调优和监控,有巨大的好处。降低资源消耗提高系统响应速度提高线程可管理性JDK1.5引入了Executor线程池框架,通过把任务的提交和执行进行解耦,...

2019-02-21 10:27:14

LeetCode-字符串的最长回文子串

文章目录题目链接题目描述示例解析代码题目链接Problem.5:https://leetcode.com/problems/longest-palindromic-substring/题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例输入1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。输入2...

2019-02-13 09:02:56

Java对象的自我救赎-finalize

对象的自我救赎即使在可达性分析算法中不可达的对象,也并非是“非死不可”的,这时候它们暂时处于“缓刑”阶段,要真正宣告一个对象死亡,至少要经历两次标记过程:如果对象在进行可达性分析后发现没有GC Roots相连接的引用链,那它将会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调...

2019-02-02 10:23:40

Object的notify和notifyAll方法的区别

区别notify:只会唤醒等待该锁的其中一个线程。notifyAll:唤醒等待该锁的所有线程。既然notify会唤醒一个线程,并获取锁,notifyAll会唤醒所有线程并根据算法选取其中一个线程获取锁,那最终结果不都是只有一个线程获取锁吗?那JDK为什么还需要做出来这两个方法呢?这两种同步方法本质上会有什么区别?这还要从对象内部锁的调度说起。对象内部锁其实,每个对象都拥有两个池,分...

2019-01-28 14:29:41

Object的wait方法为什么要处于同步代码中

概述wait和notify是用于线程间通信。以生产者消费者模式来说的话,就是生产者和消费者通过队列进行通信,既然他们通过同一个队列通信,那么对于队列的操作就一定要保证线程安全性。代码解释一般wait的用法如下while(queue.size() == MAX_SIZE){ wait()}假如不对这段代码加锁,就会出现问题。模拟一个生产者线程t1和一个消费者线程t2,例子如下t...

2019-01-27 16:28:34

wait()、notify()和notifyAll()方法为什么属于Object

前提条件要搞清这个问题,我们首先需要知道wait()、notify()和notifyAll()是干吗的,然后才能够知道它们为什么属于Object。就以wait为例吧,wait的含义是使当前线程放弃对象锁,并进入阻塞状态。原因原因一:Java中,任何对象都可以作为锁,既然wait是放弃对象锁,当然就要把wait定义在这个对象所属的类中。更通用一些,由于所有类都继承于Object,我们完全可以...

2019-01-27 15:59:37

生产者-消费者模式(使用wait & notifyAll实现)

文章目录概述关键操作模拟代码实现队列实现生产者实现消费者实现测试实现打印结果代码解惑解惑总结概述生产者与消费者共用一个队列。当队列满时,生产者无法再继续生产,所以生产者阻塞;当队列空时,消费者无法再继续消费,所以消费者阻塞。关键操作模拟队列:本文以LinkedList作为队列,有兴趣的朋友也可以使用其他队列(比如循环队列,阻塞队列等)。阻塞:我们以Object类的wait()方...

2019-01-27 15:03:11

Java8-Stream

概述Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行...

2019-01-16 20:18:52

Java8-Lambda表达式

概述Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以...

2019-01-16 19:46:00

LeetCode-判断一棵树是否为平衡二叉树

文章目录题目链接题目描述示例解析代码题目链接Problem.110:https://leetcode.com/problems/balanced-binary-tree/题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例输入1:[3,9,20,null,null,15,7] ...

2019-01-11 19:59:25

TCP/IP协议-最大传输单元MTU和最大分段大小MSS

一 概述MTU和MSSMTU和MSS都是TCP/IP协议中的重要概念。其中MTU解释为网络最大传输单元,它的大小由硬件决定,例如以太网的MTU为1500。MSS解释为网络传输数据最大值,实际指的是TCP数据部分的传输最大值。MTU与MSS的关系为MTU = MSS + TCP首部 + IP首部分片当IP数据包在相应链路层传输前,若检测到IP数据包的长度大于MTU的值,则IP数据...

2019-01-08 18:50:50

2018年博客之星,需要您宝贵的一票!

很荣幸入选了CSDN博客之星候选,既然入选了,那么我还是想全力以赴!虽然比不上其他大佬那么优秀,但还是希望大家多多支持!请投 003 号:刘志熊 一票投票地址https://bss.csdn.net/m/topic/blog_star2018/index...

2018-12-30 23:21:09

Java并发编程之CountDownLatch & CyclicBarrier

概述CountDownLatch类位于java.util.concurrent包下,利用它可以实现线程间同步等功能。例如,现在有一个主线程和两个子线程,主线程需要等待两个子线程执行结束之后才能执行,那么就可以通过CountDownLatch来实现。构造器 & 方法构造器CountDownLatch只提供了一个构造器public CountDownLatch(int count)...

2018-12-29 10:41:07

浅谈volatile在i++情况下失效

概述如果你对volatile不陌生的话,应该会知道volatile能够保证共享变量对线程的可见性。那为什么volatile无法保证 i++ 操作的线程可见性呢?分析假设i的初始值为0,现有两个线程,分别为线程1和线程2进行 i++ 操作,我们来分析一下为什么会出现错误。首先,i++并不是原子操作,我们可以将这个操作拆分为3个步骤。线程从主内存把遍历加载到缓存。线程执行i++操作。...

2018-12-25 13:35:47

Kafka Produce如何保证数据不丢失

概述Kafka的发送模式可以分为同步模式和异步模式,可以通过参数producer.type=sync和producer.type=async指定。同步模式producer.type设置为sync时为同步模式。此时可以通过配置request.required.acks的值来指定确认机制,分别为0 : 不等待broker返回确认消息。-1 : 等待topic中partition lead...

2018-12-25 11:00:22

HTTP协议的POST与PUT区别

幂等性对同一URL的多个请求应该返回同样的结果。区别PUT和POS都有更改指定URI的含义。但是POST被定义为非幂等的方法,PUT被定义为幂等的方法。POST : 后一个请求不会把前一个请求覆盖掉,而是新增一个资源。PUT : 后一个请求会把前一个请求覆盖掉。...

2018-12-25 10:12:26

Mybatis原理剖析之二级缓存(五)

MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。本文将深入分析MyBatis的二级缓存的设计以及实现原理。

2018-12-20 11:17:04

Mybatis原理剖析之一级缓存(四)

一级缓存是SqlSession级别的缓存,缓存的作用是,一是提升查询速度,二是降低数据库的并发请求压力。

2018-12-18 13:42:14

LeetCode-二叉搜索树的范围和

给定一个二叉搜索树的根节点,以及两个整数类型的左边界和右边界,计算二叉搜索树中介于左边界和右边界的整数和(包含左边界和右边界)。注:假设二叉搜索树中的节点值唯一。

2018-12-15 15:02:05

Mybatis原理剖析之自动映射器(三)

自动映射器算是Mybatis的一种特性吧,如果不能搞懂自动映射器的实现原理,那也没法理解Mybatis的其他特性。

2018-12-14 09:44:43

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户