随笔分类 -  JAVA基础知识

摘要:博客作者:纯洁的微笑 JVM系列(①):java类的加载机制 JVM系列(②):JVM内存结构 JVM系列(③):GC算法 垃圾收集器 JVM系列(④):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo) JVM系列(⑤):tomcat性能调优与性能监控 JVM 阅读全文
posted @ 2018-11-05 11:26 小兵1985 阅读(330) 评论(0) 推荐(0) 编辑
摘要:原文出处: 纯洁的微笑 java类的加载机制 1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Cl 阅读全文
posted @ 2018-11-05 11:14 小兵1985 阅读(227) 评论(0) 推荐(0) 编辑
摘要:一,什么时候使用装饰者模式? 比如有一家店卖饮品,饮品就有不少种,每一种还可以加项,比如给可乐加冰,加糖,兑水什么的,每次加项的价格还不同,就会将代码弄的很繁琐,这种情况下就可以使用装饰者模式来实现. 二,什么是装饰者模式? 上述的例子中,可以以饮品为主体,用不用的各种需求来装饰它,比如有一个可乐对 阅读全文
posted @ 2018-10-30 14:56 小兵1985 阅读(276) 评论(0) 推荐(0) 编辑
摘要:volatile 阅读全文
posted @ 2018-10-10 08:41 小兵1985 阅读(128) 评论(0) 推荐(0) 编辑
摘要:单例模式的定义 一个类有且仅有一个实例,并且自行实例化向整个系统提供。比如,多程序读取一个配置文件时,建议配置文件时,建议配置文件封装成对象。会方便操作其中的数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。 单例模式的作用 简单说来,单例模式(也叫单件模式)的 阅读全文
posted @ 2018-09-17 14:09 小兵1985 阅读(235) 评论(0) 推荐(0) 编辑
摘要:在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 策略模式的结构 策略模式是对算法的包装, 阅读全文
posted @ 2018-09-12 16:59 小兵1985 阅读(245) 评论(0) 推荐(0) 编辑
摘要:1、初步认识 观察者模式的定义: 在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 大白话: 其实就是发布订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 2、这个模式的结构图 3、可以看到,该模式包含四个角色 抽象被观 阅读全文
posted @ 2018-09-12 11:02 小兵1985 阅读(253) 评论(0) 推荐(0) 编辑
摘要:1. volatile 以上代码尝试实现单例模式,但存在严重的线程安全风险。Java Memory Model定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变 阅读全文
posted @ 2018-09-11 17:31 小兵1985 阅读(693) 评论(0) 推荐(0) 编辑
摘要:java.util.concurrent.ExecutorService接口提供了许多线程管理的方法 有了以上方法,便可以基于此接口实现线程池的各种功能(例如java.util.concurrent.ThreadPoolExecutor/java.util.concurrent.ScheduledT 阅读全文
posted @ 2018-09-11 16:53 小兵1985 阅读(1620) 评论(0) 推荐(0) 编辑
摘要:Map的一些实现类有及其特性 类 Hashtable HashMap Collections.synchronizedMap ConcurrentHashMap 以下代码测试各类的读写效率: 输出结果如下: 阅读全文
posted @ 2018-09-11 15:41 小兵1985 阅读(1418) 评论(0) 推荐(0) 编辑
摘要:一些列表类及其特性 1. 线程安全的列表类并不意味着调用它的代码就一定线程安全 2. 只有CopyOnWriteArrayList能支持在遍历时修改列表元素 以下代码模拟多线程环境下,各个类Iterator机制的表现 阅读全文
posted @ 2018-09-11 15:16 小兵1985 阅读(201) 评论(0) 推荐(0) 编辑
摘要:假设有线程1/线程2/线程3,线程3必须在线程1/线程2执行完成之后开始执行,有两种方式可实现 Thread类的join方法:使宿主线程阻塞指定时间或者直到寄生线程执行完毕 CountDownLatch类:指定计数器,当计数器清零即取消阻塞 阅读全文
posted @ 2018-09-11 14:25 小兵1985 阅读(1140) 评论(0) 推荐(0) 编辑
摘要:前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 阅读全文
posted @ 2018-09-11 13:59 小兵1985 阅读(165) 评论(0) 推荐(0) 编辑
摘要:两种实现线程同步的方法 阅读全文
posted @ 2018-09-11 10:15 小兵1985 阅读(229) 评论(0) 推荐(0) 编辑
摘要:一、在研究join的用法之前,先明确两件事情。 1、join方法定义在Thread类中,则调用者必须是一个线程, 例如: 2、上面的两行代码也是在一个线程里面执行的。 以上出现了两个线程,一个是我们自定义的线程类,我们实现了run方法,做一些我们需要的工作;另外一个线程,生成我们自定义线程类的对象, 阅读全文
posted @ 2018-09-01 15:57 小兵1985 阅读(161) 评论(0) 推荐(0) 编辑
摘要:Thread实现Runnable接口并实现了大量实用的方法。 Java代码: 阅读全文
posted @ 2018-09-01 15:13 小兵1985 阅读(258) 评论(0) 推荐(0) 编辑
摘要:Java实现线程的两种方法 继承Thread类 实现Runnable接口 它们之间的区别如下: Java的类为单继承,但可以实现多个接口,因此Runnable可能在某些场景比Thread更适用 Thread实现了Runnable接口,并且有更多实用方法 实现Runnable接口的线程启动时仍然需要依 阅读全文
posted @ 2018-09-01 11:08 小兵1985 阅读(192) 评论(0) 推荐(0) 编辑
摘要:前言 平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的《阿里巴巴 Java 手册》里也有一条: 可见线程池的重要性。 简单来说使用线程池有以下几个目的: 线程是稀缺资源,不能频繁的创建。 解耦作用;线程的创建于执行完全分开,方便维护。 应当将其放入一个池子中,可以给其他任务进行复用。 阅读全文
posted @ 2018-08-30 19:01 小兵1985 阅读(260) 评论(0) 推荐(0) 编辑
摘要:正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 正则表达式语法 在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。 在 Java 中,\\ 表示:我要插入 阅读全文
posted @ 2018-07-30 16:05 小兵1985 阅读(123) 评论(0) 推荐(0) 编辑
摘要:首先,我们复习一下InputStream read方法的基础知识, java InputStream read方法内部有一个,postion,标志当前流读取到的位置,每读取一次,位置就会移动一次,如果读到最后,InputStream.read方法会返回-1,标志已经读取完了,如果想再次读取,可以调用 阅读全文
posted @ 2018-06-05 09:57 小兵1985 阅读(315) 评论(0) 推荐(1) 编辑