自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kaven

为梦而逐

原创 Java并发编程汇总

基础 正文 JAVA实现多线程到底有多少种方法?哪种方法更好呢? 深入浅出 synchronized Java中Volatile关键字详解 扩展阅读 双重检查锁单例模式为什么要用volatile关键字? 未完待续 ...

2020-02-09 12:37:30 326 0

原创 消息中间件汇总

基础 正文 未完待续 扩展阅读 MOM与JMS

2020-02-08 15:13:46 184 0

原创 Java网络编程汇总

Java网路编程汇总 基础 一文读懂一台计算机是如何把数据发送给另一台计算机的 Java IO体系的学习总结 未完待续

2020-02-02 00:49:41 298 0

原创 Java设计模式汇总

设计模式汇总 考完研后,感觉不太好,现在做两手准备(准备复试和春招),最近在学习设计模式,是根据慕课网上的课程来学习的;大学前两年在参加ACM竞赛,大三下学期开始准备考研,所以学习开发相关的技术还是自己挤时间出来学的,学的也马马虎虎,很多东西也只是了解,所以难免有写的不对的地方,大家可以指正,万分...

2020-01-29 21:06:12 287 0

原创 2018湖南acm省赛经历--我也努力过

感想 昨天湖南acm省赛落下帷幕,可惜未能如愿以偿夺金,实力还是有点差距,四题全1A银牌滚粗,第五题似乎想到解法了,没时间debug了 陆陆续续坚持了两年,不敢说自己怎么样,在弱校,自己也懂,训练什么的,都是靠自己的意志在坚持,一个人默默去摸索这条路,确实很辛苦,也许说辛苦有点违心,毕竟很多训...

2018-09-03 09:21:54 4589 4

原创 2017湖南acm省赛经历--在失败中成长

第一次参加湖南acm省赛,也是我第一次参加省级acm比赛,当然紧张是肯定会有的,压力也很大--来自各种因素吧。     第一天参加热身赛,个人感觉还不错吧,手速还可以,一个数位DP题还是可以写出来的;想想没有经过暑假集训之前,自己是如何的菜,虽然在弱校,我并没有想做一个井底之蛙,虽然被同级的...

2017-09-03 14:02:51 6424 9

原创 Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用

Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用 这些线程协作工具类是基于AQS的,看完这篇博客后可以去看下面这篇博客,了解它们是如何实现的。 Java并发之AQS详解 CountDownLatch CountDownLatch可以实现一个线程等...

2020-02-20 15:25:50 90 0

原创 Java并发编程一Condition初使用

Java并发编程一Condition初使用 Condition是什么? Condition是在Java1.5中才出现的,它用来替代传统Object中的wait()、notify(),实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、si...

2020-02-19 23:07:44 55 0

转载 BlockingQueue(阻塞队列)详解

BlockingQueue(阻塞队列)详解 原文地址 BlockingQueue 一. 前言 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细...

2020-02-19 20:25:35 89 0

转载 Java并发之AQS详解

Java并发之AQS详解 原文地址 Java并发之AQS详解 1、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步...

2020-02-19 17:18:48 63 0

转载 Java集合框架总结

Java集合框架总结 原文地址 java提高篇(二十)-----集合大家族 正文 在编写Java程序中,我们最常用的除了八种基本数据类型,String类外还有一个集合类,在我们的程序中到处充斥着集合类的身影!Java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、Ha...

2020-02-19 15:05:46 158 0

转载 ArrayList和CopyOnWriteArrayList

ArrayList和CopyOnWriteArrayList 原文地址 ArrayList和CopyOnWriteArrayList 这篇文章的目的如下: 了解一下ArrayList和CopyOnWriteArrayList的增删改查实现原理。 看看为什么说ArrayList查询快而增删慢? C...

2020-02-19 10:41:33 40 0

转载 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 原文地址 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析 正文 今天发一篇"水文",可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一...

2020-02-18 21:57:22 61 0

原创 Java并发编程一引用类型、升级类型原子类初使用加源码分析

Java并发编程一引用类型、升级类型原子类初使用加源码分析 首先我们来看一看有哪些原子类。 现在我们来看看该如何去使用这些引用类型、升级类型原子类吧。 之前已经介绍过基本类型、数组类型原子类和累加器的使用了,讲过的原理这里就不会再涉及了,想了解就看下面这篇博客吧。 Java并发编程一基本类型、...

2020-02-18 13:33:14 1030 0

原创 Java并发编程一基本类型、数组类型原子类和累加器初使用加源码分析

Java并发编程一基本类型原子类初使用加源码分析 首先我们来看一看有哪些原子类。 现在我们来看看该如何去使用这些原子类吧。 AtomicInteger 代码: package atomic; import java.util.concurrent.atomic.AtomicInteger; ...

2020-02-18 11:39:51 76 0

原创 Java并发编程一ReentrantReadWriteLock初使用

Java并发编程一ReentrantReadWriteLock初使用 ReentrantReadWriteLock是一种读写锁,从类名也可以看出来。 ReentrantReadWriteLock类有两个属性ReentrantReadWriteLock.ReadLock readerLock(代表读...

2020-02-17 23:11:49 42 0

原创 Java并发编程一Lock和ReentrantLock初使用

Java并发编程一Lock初使用 首先我们来演示一下两个线程不断的打印两个字符串。 代码 package lock.reentrantlock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.R...

2020-02-17 20:42:04 65 0

转载 分门别类总结Java中的各种锁,让你彻底记住

分门别类总结Java中的各种锁,让你彻底记住 原文地址 分门别类总结Java中的各种锁,让你彻底记住 前言 本文需要具备一定的多线程基础才能更好的理解。 学习Java多线程时,最头疼的知识点之一就是Java中的锁了,什么互斥锁、排它锁、自旋锁、死锁、活锁等等,细分的话可以罗列出20种左右的锁,光是...

2020-02-17 16:58:48 100 0

原创 Java并发编程一ThreadLocal初使用

Java并发编程一ThreadLocal初使用 任务 为了方便使用以及展现ThreadLocal的优点,首先给出一个任务,然后根据任务的并发数去迭代代码,我们假设每个线程的任务很简单,就是打印我们要求的时间,具体看代码。 现在我们只需要两个线程去打印时间。 代码一 package threadlo...

2020-02-17 15:12:25 60 0

转载 ThreadLocal-面试必问深度解析

ThreadLocal-面试必问深度解析 原文地址 ThreadLocal-面试必问深度解析 ThreadLocal是什么 ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别...

2020-02-17 13:53:10 138 0

转载 强引用、软引用、弱引用、虚引用

强引用、软引用、弱引用、虚引用 原文地址 强引用、软引用、弱引用、虚引用 正文 从JDK1.2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。 Java中提供这四种引用类型主要有两个目的: 让程序员通过代码的方式决定某些对象的生命周期。 有利于JVM进行垃圾回收。 强引用(St...

2020-02-16 16:50:19 23 0

转载 Java并发编程一线程池的五种状态

Java并发编程一线程池的五种状态 原文地址 Java多线程线程池(4)–线程池的五种状态 正文 线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。 线程池各个状态切换框架图: RUNNING 状态说明:线程池处在RUNNING状态时,能够接收...

2020-02-16 12:08:20 30 0

原创 Java并发编程一如何关闭线程池

Java并发编程一如何关闭线程池 当线程池中已经有大量线程在处理任务,并且任务队列中也有很多任务在等待被处理,这个时候我们该如何去关闭线程池呢? 首先我们来创建一个任务。 任务 ShutDownTask类实现了Runnable接口,它的run()就是我们线程所要执行的任务,我们这里的任务非常简单,...

2020-02-16 11:32:55 57 0

原创 Java并发编程一四种常用线程池简述

Java并发编程一四种常用线程池简述 我们使用线程是用来执行任务的,所以,首先我们得有一个任务,这里我们定义线程的任务很简单,就是输出自己(当前线程)的name,为了方便观察,每个线程的执行逻辑中sleep(500)。 任务 Task类,实现了Runnable接口。 package threadp...

2020-02-15 23:23:50 61 0

原创 Java并发编程一线程池简介

Java并发编程一线程池简介 为什么我们需要使用线程池? 我们知道线程是一种比较昂贵的资源,我们通过程序每创建一个线程去执行,其实操作系统都会对应地创建一个线程去执行我们的任务,而我们频繁的创建、销毁线程是非常耗费系统资源的,当并发数不大时,对系统似乎没什么影响,但当并发数很大时,我们为每一个请求...

2020-02-15 21:43:06 498 0

转载 Java内存模型JMM

Java内存模型JMM 原文地址 java内存模型JMM理解整理 什么是JMM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各...

2020-02-15 16:04:33 63 0

转载 死锁、饥饿和活锁

死锁、饥饿和活锁 原文地址 Java并发编程系列之十二:死锁、饥饿和活锁 正文 死锁发生在一个线程需要获取多个资源的时候,这时由于两个线程互相等待对方的资源而被阻塞,死锁是最常见的活跃性问题。 这里先分析死锁的情形: 假设当前情况是线程A已经获取资源R1,线程B已经获取资源R2,之后线程A尝试获取...

2020-02-15 15:09:59 37 0

转载 线程的属性

线程的属性 原文地址 多线程学习(三)—— 线程的属性 线程属性概览 属性名称 用途 注意事项 ID 每个线程都有自己的ID,用于识别不同的线程 被后续创建的线程使用;不允许被修改 Name 便于用户在开发、调试或运行过程中区分每个不同的线程、定位问题等 清晰有意义的名字;默认...

2020-02-14 22:04:32 45 0

转载 Thread和Object中的重要方法详解

Thread和Object类中的重要方法详解 原文地址 多线程学习(二)——Thread和Object类中的重要方法详解 方法概览 类 方法名 简介 Thread sleep相关 sleep的相关重载方法 join 等待其他线程执行完毕 yield相关 放弃已获得的CP...

2020-02-14 21:56:32 82 0

转载 停止线程的正确姿势

停止线程的正确姿势 原文地址 Java线程状态和关闭线程的正确姿势 正文 线程的run()方法正常执行完毕之后线程就正常死亡进入TERMINATED状态了,那么如果我们有中途停止线程的需求,我们应该如何正确的结束一个线程呢? 使用interrupt()方法 在线程内部,其定义了一个变量来标识当前线...

2020-02-14 21:03:53 50 0

转载 Java线程状态及转换

Java线程状态及切换 原文地址 Java线程状态和关闭线程的正确姿势 正文 Java中的线程有六种状态,使用线程Thread类的枚举类来实现,如下,我对每个状态都进行了一定的解释。 public enum State { /** 表示一个线程还没启用(即未调用start方法)*/...

2020-02-14 20:44:33 52 0

原创 启动线程的正确姿势

启动线程的正确姿势 通过之前的分析,我们知道有两种定义线程执行逻辑的方法,而创建线程只有一种方法,也就是new一个Thread类的实例。 JAVA实现多线程到底有多少种方法?哪种方法更好呢? ...

2020-02-14 16:54:33 141 2

转载 Java线程的概念:什么是线程?

Java线程的概念:什么是线程? 世间万物都可以同时完成很多工作。例如,人体可以同时进行呼吸、血液循环、思考问题等活动。用户既可以使用计算机听歌,也可以编写文档和发送邮件,而这些活动的完成可以同时进行。这种同时执行多个操作的“思想”在 Java 中被称为并发,而将并发完成的每一件事称为线程。 在 ...

2020-02-14 14:19:47 41 0

原创 Java网络编程-Socket编程初涉七(UDP协议,简易提供-搜索服务)

Java网络编程-Socket编程初涉七(UDP单播,简易提供-搜索服务案例一) UDP的单播、多播、广播 提供端 提供端作为接收信息的一方,需要指定一个端口用于数据接收;等搜索端把请求发送过来时,提供端接收请求信息,并且打印请求信息,再简单的回送一条信息即可。 package udp.searc...

2020-02-14 12:01:46 59 0

原创 UDP的单播、多播、广播

UDP的单播、多播、广播 使用UDP协议进行信息的传输之前不需要建立连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的IP地址和端口号,然后将信息封装到一个待发送的报文中,并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 一、UDP单播 单播用于两个主机...

2020-02-14 10:34:30 49 0

原创 Java初识RabbitMQ一死信队列

Java初识RabbitMQ一死信队列 什么是死信队列 死信队列,DLX(dead-letter-exchange),利用DLX,当消息在一个队列中变成死信 (dead message) 之后,它能被重新投递到另一个exchange上,这个exchange就是DLX,似乎叫死信交换机更加贴切,当死...

2020-02-13 15:17:32 118 0

原创 Java初识RabbitMQ一过期时间(TTL)

Java初识RabbitMQ一过期时间(TTL) 过期时间(TTL) TTL(Time To Live),也就是过期时间。RabbitMQ可以对消息和队列设置TTL。 设置消息的TTL 设置消息TTL的两种方式: 通过队列属性设置,队列中所有消息都有一样的TTL。 对消息本身进行单独设置TTL。...

2020-02-13 14:23:54 117 0

原创 Java初识RabbitMQ一重回队列

Java初识RabbitMQ一消费端ACK与重回队列 在Java初识RabbitMQ一消费端限流这篇博客中我们讲了,要使用RabbitMQ的QOS,要把autoAck设置成false,这时我们就要进行手动ack了,但是之前的博客中我们只实践了手动ack,而没有实践过手动no ack ,当消费端认为...

2020-02-13 11:32:26 98 0

原创 Java初识RabbitMQ一消费端限流

Java初识RabbitMQ一消费端限流 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费端,巨量的消息就会瞬间全部推送过来,但是我们单个消费端是无法同时处理这么多消息的。 当数据量特别大的时候,我们对生产端限流肯定是不科学的...

2020-02-12 21:03:05 272 0

原创 Java初识RabbitMQ一消费端自定义监听

Java初识RabbitMQ一消费端自定义监听 之前的例子中,消费端实现监听绑定的Queue是否有准备好了的消息时,是通过一个while死循环来实现的,看起来很不优雅,如下所示: // 接收消息 while (true){ QueueingC...

2020-02-12 15:29:25 443 0

提示
确定要删除当前文章?
取消 删除