![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
翼墨
这个作者很懒,什么都没留下…
展开
-
依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。他们在编程语言中的体现却是基本相同的,但是基本相同并不等于完全相同,这一点在我的前一篇博文《设计模式中类的关系》中已经有所提及,下面就来详细的论述一下在Java中如何准确的体现依赖、关联、聚合和组合。首先看一看书上对这四种关系的定义:依赖(Dependency)关系是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Pers转载 2020-10-15 11:15:10 · 2273 阅读 · 2 评论 -
JVM数据区解析
Jdk体系结构和JVM综合解析原创 2020-06-27 19:47:45 · 221 阅读 · 0 评论 -
Java 8、9、10、11 新特性
原文地址:https://blog.csdn.net/lcn_2017/article/details/80146668转载 2019-01-18 16:04:15 · 2637 阅读 · 0 评论 -
AndroidStudio如何根据返回的json数据快速自动生成实体类,只需一个GsonFormat插件
AndroidStudio如何根据返回的json数据快速自动生成实体类,只需一个GsonFormat插件1.在Android Studio中点击左上角菜单栏中的File,然后点击Settings,在弹窗中选择Plugins,然后点击下方的Browse repositories…2.在新打开的窗口中搜索GsonFormat,点击右侧绿色按钮下载安装,安装完重启下Android...转载 2019-02-28 16:34:50 · 2117 阅读 · 0 评论 -
比较5种hashTable的遍历方式的效率
在hashTable中插入1000000条数据然后遍历比较五种方式的效率。import java.util.Enumeration;import java.util.Hashtable;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;public class TraverseHa...原创 2019-02-27 10:29:11 · 2332 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁详解
一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadWriteLock,它表示两个锁,一个是读操作...转载 2019-06-17 10:52:23 · 135 阅读 · 0 评论 -
classloader加载的双亲委托模式
要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就是用来加载Class文件到JVM,以供程序使用 的。我们知道,java程序可以动态加载类定义,而这个动态加载的机制就是通过ClassLoader来实现的,所以可想而知ClassLoader的重 要性如何。看到这里,可能有的朋友会想到一个问题,那就是既然ClassLoader是用来加载类到JVM中的,...转载 2019-06-27 11:28:37 · 385 阅读 · 0 评论 -
五,设计模式之-适配器模式(adapter pattern)
一,是什么:在我们的应用程序中我们可能需要将两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。所谓适配器模式就是将一个类的接口,转换成客户期望的另一个接口。它可以让原本两个不兼容的接口能够无缝完成对接。二,作用:使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 中间这个用来装小存储卡的就相当于适配...原创 2019-07-12 18:51:44 · 160 阅读 · 0 评论 -
六,设计模式之-装饰器模式(Decorator Pattern)
一,介绍 概念:允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 作用:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。 ...原创 2019-08-02 11:02:29 · 158 阅读 · 0 评论 -
数据结构之-单向链表和双向循环链表,栈,二分法查询
一,链表实现 1,接下来实现一个简单的单向链表,下面直接贴代码。 链类public class Link {// 链类 private Node head; // 初始化链表 相当于有了一个具体的火车头 public Link(Node head) { this.head = head; } // 往链表中添加节点 就是加车厢 public v...原创 2019-01-06 17:21:56 · 683 阅读 · 0 评论 -
Java 8新特性终极指南
2014/06/20 | 分类: 基础技术 | 8 条评论 | 标签: JAVA8分享到:本文由 ImportNew - 刘 家财 翻译自 javacodegeeks。欢迎加入翻译小组。转载请见文末要求。编者注:Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。在Java Code Geeks上已经有大量的关于Java 8 的教程了,像玩转Java...转载 2019-01-10 15:28:32 · 146 阅读 · 0 评论 -
线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。
前言:jdk1.7中java.util.concurrent.Executor线程池体系介绍java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |–ExecutorService:Executor的子接口,线程池的主要接口 |–ThreadPoolExecutor:ExecutorService的实现类 |–ScheduledExecut...转载 2019-01-04 16:43:30 · 3292 阅读 · 2 评论 -
java多线程之死锁的例子
java多线程死锁的例子在java多线程编写程序中特别害怕的一种情况就是死锁,他会让程序死在哪里不在继续执行下面就来看一个死锁的例子:/** * 死锁的例子 */public class SiSuoTest { public static void main(String[] args) { LineTh ta1 = new LineTh(true);原创 2017-07-25 17:55:39 · 230 阅读 · 0 评论 -
java多线程经典案例-多生产者多消费者模式
多个线程插入数据,多个线程删除数据的经典例子。import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 等待唤醒机制的最经典实例。 生产消费者模式 多生产者多消费者模...原创 2018-10-31 16:05:51 · 1850 阅读 · 0 评论 -
一段Android实现应用下载并自动安装apk包的代码
下载apk程序代码protected File downLoadFile(String httpUrl) { // TODO Auto-generated method stub final String fileName = "updata.apk"; File tmpFile = new Fi...转载 2018-11-14 10:24:24 · 10943 阅读 · 1 评论 -
IO流使用实例
下面是使用代码import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;im...原创 2018-11-20 12:25:46 · 306 阅读 · 0 评论 -
java对象序列化和反序列化
如果你需要把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。如果你需要在网络上传送java对象的字节序列。那么你就需要用到java序列化。 java序列化的本质:就是把对java对象转换为字节序列的过程。 java反序列化的本质:把字节序列恢复为java对象的过程。 接下来用一个例子把一个java对象存成文件然后转换成java对象并...原创 2018-12-02 23:21:31 · 267 阅读 · 0 评论 -
一,设计模式之-工厂模式(Factory Pattern)
对于代码的架构有一个总的原则,对程序扩展开放,对修改广闭。遵循这样的原则开发出来的代码就能方便扩展,可以反复使用。如果不遵循这个原则开放出来的代码很可能就是一次性代码,每增加一个功能就需要把原来的代码疯狂的修改。要想写出这种容易扩展方便迭代的程序,就需要对设计模式有所了解。当我去学习里设计模式后觉得有种相见恨晚的感觉。 在Java里面有23中设计模式。接下来将会对这些设...原创 2018-12-01 23:51:36 · 160 阅读 · 0 评论 -
三,设计模式之-建造者模式(Builder)
建造者模式属于创建模式之一,看起来跟工厂模式有些相似。建造者模式关注的是零件类型和转配工艺(顺序),这是建造者模式和工厂模式最大不同的地方。 下面给出建造者模式的图。 接下来是代码。 1,产品抽象类/** * 车厢模型抽象类 */public abstract class CarModel { //这个方法是各个基本方法的执行...原创 2018-12-10 23:53:54 · 149 阅读 · 0 评论 -
四,设计模式之-原型模式(Prototype)
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的...转载 2020-12-17 22:52:05 · 117 阅读 · 0 评论 -
java多线程之等待换性机制简单使用
等待换新机制的简单使用 wait notify ()(1)都使用在同步中,因为要对持有监视器(锁)的线程操作所以要使用在同步中,因为只有同步才具有锁。 (2)为什么这些操作线程的方法要定义object类中呢?因为这些方法在操作同步中线程时。都必须要标识他们所操作线程只有的锁只有同一个锁上的被等待线程,可以被同一个锁上的notify唤醒。 (3)不可以对不同锁中的线程进行唤醒。而锁可以使任意对原创 2017-07-25 20:29:49 · 287 阅读 · 0 评论