11 2018 档案

摘要:生产者和消费者指的是两个不同的线程类对象,操作统一资源的情况。具体的操作流程如下: (1)生产者负责生成数据,消费者负责取走数据; (2)生产者每生产完一组数据之后,消费者就要取走一组数据。 一. 直白写法 1. info类 1 public class Info { 2 private Strin 阅读全文
posted @ 2018-11-27 22:40 Hermioner 阅读(203) 评论(0) 推荐(0)
摘要:Spring IoC容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean。而Spring IoC容器则需 要根据Bean定义里的配置元数据使用反射机制来创建Bean。在Spring IoC容器中根据Bean定义创建Bean主要有以下 几种方式: 一. 使用构造器实例化Be 阅读全文
posted @ 2018-11-27 21:07 Hermioner 阅读(193) 评论(0) 推荐(0)
摘要:1. 什么时候使用装饰者模式 比如有一家店卖饮品,饮品就有不少种,每一种还可以加项,比如给可乐加冰,加糖,兑水什么的,每次加项的价格还不同,就会将代码弄的很繁琐,这种情况下就可以使用装饰者模式来实现. 2. 什么是装饰者模式 上述的例子中,可以以饮品为主体,用不用的各种需求来装饰它,比如有一个可乐对 阅读全文
posted @ 2018-11-26 16:23 Hermioner 阅读(144) 评论(0) 推荐(0)
摘要:一. Bean的命名 每个Bean可以有一个或多个id(或称之为标识符或名字),在这里我们把第一个id称为“标识符”,其余id叫做 “别名”;这些id在IoC容器中必须唯一。如何为Bean指定id呢,有以下几种方式; 1. 不指定id,只配置必须的全限定类名,由IoC容器为其生成一个标识,客户端必须 阅读全文
posted @ 2018-11-25 10:12 Hermioner 阅读(168) 评论(0) 推荐(0)
摘要:参考文献:https://www.cnblogs.com/lwbqqyumidi/p/3746821.html 首先对原型模式进行一个简单概念说明:通过一个已经存在的对象,复制出更多的具有与此对象具有相同类型的新的对象。 在理解Java原型模式之前,首先需要理解Java中的一个概念:复制/克隆。 一 阅读全文
posted @ 2018-11-25 10:11 Hermioner 阅读(318) 评论(0) 推荐(0)
摘要:参考文献:《Java与模式》 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。 一. 单例模式的要点 显然单例模式的要点有3个: 某个类只能有一个实例 它必须自行创建这个实例 它必须自行向整个系统提供这个实例 二. 单例模式分类 1. 阅读全文
posted @ 2018-11-24 23:30 Hermioner 阅读(156) 评论(0) 推荐(0)
摘要:一. 基础概念 1. 什么是IOC Ioc Inversion of control,即“控制反转”,它只是一种设计思想。它意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 (1)谁控制谁 传统的是通过new来创建对象;但是IOC思想是通过一个专门的容器来创建这些对象。即:I 阅读全文
posted @ 2018-11-21 23:38 Hermioner 阅读(230) 评论(0) 推荐(0)
摘要:1.1.1 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。在传统的开发中,我们需要通过new关键字来创建对象。并且很多业务中,对象之间会 阅读全文
posted @ 2018-11-21 22:17 Hermioner 阅读(159) 评论(0) 推荐(0)
摘要:一. 二叉树基本概念 在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的 阅读全文
posted @ 2018-11-21 22:01 Hermioner 阅读(703) 评论(0) 推荐(0)
摘要:初次系统学习Spring。现在主要是在看《spring揭秘》+张开涛老师的博客,然后再整理成我习惯的逻辑。我用的spring版本是3.1.2 , JDK版本是1.8.0_171 待我踩完坑回来,我会更新我学习spring的方法,所有的途径,回馈给像我一样在IT路上奋斗的小伙伴们。毕竟,我也是刚踏进去 阅读全文
posted @ 2018-11-21 21:49 Hermioner 阅读(115) 评论(0) 推荐(0)
摘要:一. 配置环境 开发工具:SpringSource Tool Suite,简称STS,是个基于Eclipse的开发环境,用以构建Spring应用,其最新版 开始支持Spring 3.0及OSGi开发工具,但由于其太庞大,很多功能不是我们所必需的所以我们选择Eclipse+ SpringSource 阅读全文
posted @ 2018-11-21 20:51 Hermioner 阅读(153) 评论(0) 推荐(0)
摘要:工厂设计模式分为3种:简单工厂、工厂方法、抽象工厂。 一. 什么是工厂设计模式 工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计 阅读全文
posted @ 2018-11-20 17:18 Hermioner 阅读(272) 评论(0) 推荐(0)
摘要:最近开发任务中碰到一个非常好用的模式,那就是builder设计模式(即建造者设计模式)。 说到builder设计模式,常常会跟可重叠构造器和javabeans模式一起比较说明。下面分别讨论: 一. 可重叠构造器模式 可重叠构造器的意思就是有很多的构造器,只是参数个数,参数类型不一样。举个到处都在用的 阅读全文
posted @ 2018-11-15 12:06 Hermioner 阅读(197) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3512947.html 概要 本章介绍线程池的拒绝策略。内容包括: 拒绝策略介绍 拒绝策略对比和示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.htm 阅读全文
posted @ 2018-11-11 10:55 Hermioner 阅读(159) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3544116.html 概要 本章介绍线程池中的Callable和Future。 Callable 和 Future 简介 示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnbl 阅读全文
posted @ 2018-11-11 10:55 Hermioner 阅读(152) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程 阅读全文
posted @ 2018-11-11 10:54 Hermioner 阅读(187) 评论(0) 推荐(0)
摘要:一. Executor框架 在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java的线程既是工作 阅读全文
posted @ 2018-11-11 10:54 Hermioner 阅读(198) 评论(0) 推荐(0)
摘要:ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类。对于线程池,可以通俗的将它理解为"存放一定数量线程的一个线程集合。 Executor框架最核心的类是ThreadPoolExecutor,它是线程池的实现类,主要由下列4个组件构成。 ·corePoolSize 阅读全文
posted @ 2018-11-11 10:54 Hermioner 阅读(201) 评论(0) 推荐(0)
摘要:概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明。内容包括: 线程池示例 参考代码(基于JDK1.7.0_40) 线程池源码分析 (一) 创建“线程池” (二) 添加任务到“线程池” (三) 关闭 阅读全文
posted @ 2018-11-11 10:54 Hermioner 阅读(927) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3496651.html 获取非公平锁(基于JDK1.7.0_40) 非公平锁和公平锁在获取锁的方法上,流程是一样的;它们的区别主要表现在“尝试获取锁的机制不同”。简单点说,“公平锁”在每次尝试获取锁时,都是采用公平策 阅读全文
posted @ 2018-11-10 21:16 Hermioner 阅读(239) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3496609.html 释放公平锁(基于JDK1.7.0_40) 1. unlock() unlock()在ReentrantLock.java中实现的,源码如下: 说明:unlock()是解锁函数,它是通过AQS的 阅读全文
posted @ 2018-11-10 21:11 Hermioner 阅读(169) 评论(0) 推荐(0)
摘要:转自: http://www.cnblogs.com/skywang12345/p/3496147.html(含部分修改) 概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_4 阅读全文
posted @ 2018-11-10 21:06 Hermioner 阅读(623) 评论(0) 推荐(0)
摘要:1. 线程让步: yield() yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! 阅读全文
posted @ 2018-11-10 16:11 Hermioner 阅读(1387) 评论(2) 推荐(0)
摘要:转自:https://www.cnblogs.com/qingquanzi/p/8228422.html(含部分修改) LockSupport是Java6引入的一个工具类,它简单灵活,应用广泛。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport中的park() 阅读全文
posted @ 2018-11-09 09:43 Hermioner 阅读(214) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3496716.html (含部分修改) 概要 前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍,内容包括:Condition介绍Condition函数列表Condit 阅读全文
posted @ 2018-11-08 21:29 Hermioner 阅读(212) 评论(0) 推荐(0)
摘要:一. AQS 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的Reentrant 阅读全文
posted @ 2018-11-08 21:05 Hermioner 阅读(226) 评论(0) 推荐(0)
摘要:本章,我们介绍锁的架构;后面的章节将会对它们逐个进行分析介绍。目录如下: 01. Java多线程系列--“JUC锁”01之 框架 02. Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock 06. Java多线程系列--“JUC锁”03之 Condition条件 07. Ja 阅读全文
posted @ 2018-11-08 14:06 Hermioner 阅读(193) 评论(0) 推荐(0)
摘要:转自:https://www.cnblogs.com/skywang12345/p/3514593.html(含部分修改) 概要 AtomicInteger, AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似。本章以AtomicLong对基本类型的原子类进行介绍 阅读全文
posted @ 2018-11-04 19:46 Hermioner 阅读(160) 评论(0) 推荐(0)
摘要:转自:https://www.cnblogs.com/skywang12345/p/3514604.html(含部分修改) 概要 AtomicIntegerArray, AtomicLongArray, AtomicReferenceArray这3个数组类型的原子类的原理和用法相似。本章以Atomi 阅读全文
posted @ 2018-11-04 19:46 Hermioner 阅读(151) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3514623.html(部分修改) 概要 本章对AtomicReference引用类型的原子类进行介绍。内容包括: AtomicReference介绍和函数列表 AtomicReference源码分析(基于JDK1. 阅读全文
posted @ 2018-11-04 19:46 Hermioner 阅读(148) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3514635.html (含部分修改) 概要 AtomicIntegerFieldUpdater, AtomicLongFieldUpdater和AtomicReferenceFieldUpdater这3个修改类的成 阅读全文
posted @ 2018-11-04 19:46 Hermioner 阅读(151) 评论(0) 推荐(0)
摘要:转自:https://blog.csdn.net/ls5718/article/details/52563959 & https://blog.csdn.net/mmoren/article/details/79185862(含部分修改) 在JDK 5之前Java语言是靠synchronized关键 阅读全文
posted @ 2018-11-04 19:45 Hermioner 阅读(234) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/skywang12345/p/3514589.html 根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类。 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: Atom 阅读全文
posted @ 2018-11-04 19:45 Hermioner 阅读(136) 评论(0) 推荐(0)
摘要:jdk源码中有一些native修饰的方法,比如unsafe.class,只能看见方法声明,但是具体的逻辑看不到。可以通过下载Openjdk来解决。openJDK上有完整的JDK源代码,JDK源代码由C++、Java、C、汇编 这四种语言组成。JVM主体是C++写的,JNI部分是C,工具类是Java写 阅读全文
posted @ 2018-11-02 13:35 Hermioner 阅读(3994) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/zhengbin/p/5657435.html 乐观锁 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号 阅读全文
posted @ 2018-11-02 09:14 Hermioner 阅读(154) 评论(0) 推荐(0)
摘要:一. 名词解释 原子性:是指一个操作或多个操作要么全部执行,且执行的过程不会被任何因素打断,要么就都不执行。(note: 处理器保证从系统内存中读取或写入一个字节是原子的。意思是,当一个处理器读取一个字节时,其他处理器不能访问这个字节的内存地址。当然,long和double类型在32位操作系统中的读 阅读全文
posted @ 2018-11-01 17:13 Hermioner 阅读(281) 评论(0) 推荐(0)