自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 java8 线程池 ThreadPoolExecutor 源码解析

前言在看 Java 线程池源码实现之前,只知道线程池是为了多线程执行任务时线程复用,防止创建过多的线程销毁系统资源。但是对线程复用只有一个模糊的概念,什么是线程复用,如何线程复用,确实说不出个所以然来。看过源码后,疑惑也就解决了。在线程池中它本身会创建一些线程,这些线程干嘛的呢?就是执行你扔到线程池里的 Runnable 的 run() 方法。说的更浅显点,你实现了 Thread 类和其 ru...

2018-07-26 18:00:13 475

原创 java 集合框架之队列 DelayQueue

前言最近一直在看队列相关的源码,上一篇介绍了优先队列的实现,这一篇则看一看延迟队列是如何实现。优先队列主要是分析其数据结构的实现,而延迟队列不一样。延迟队列的底层其实就是优先队列,它利用优先队列排序的功能将插入的元素按照等待时间先后保存起来,然后取出最先等待时间到期的元素。所以,延迟队列主要是分析其如何实现延迟的,又是如何实现线程安全的。简述接口定义public cla...

2018-06-05 11:02:43 610

原创 java 集合框架之队列 PriorityQueue

前言优先队列 PriorityQueue 的实现其实就是数据结构堆的实现。对数据结构堆比较熟悉的,看 PriorityQueue 的源码会十分容易,无外乎堆的生成,堆的重建和堆元素删除算法。PriorityQueue 相比于其它的队列,它能够将队列的元素进行排序保存,但是方法都没有加锁,所以它是非线程安全的变量先看看堆的定义: 1.堆总是一颗完全二叉树 2.堆中某个节...

2018-06-01 14:40:55 162

原创 Synchronized 关键字

前言synchronized 关键字是 java 多线程同步体系中最为重要的关键字。关于它修饰方法或者代码块,其不同用法对应不同作用域容易遗忘,因此记下来,等以后遗忘了之后再翻阅加深记忆。synchronizedsychronized 关键字是为了解决多个线程同时访问同一块代码或者方法,导致同一变量在不同线程中数据不一致的问题。经过 sychronized 修饰的方法或者代码块,在...

2018-05-08 19:36:25 120

原创 迭代器设计模式

前言迭代器设计模式在 java 中算是使用最多的模式之一了。它主要应用在需遍历的数据集合中,迭代器模式封装了该数据集合的数据存储结构。用户只需关心该集合是否还有数据,如果有,取出下一个数据。实现迭代器模式实现十分简单,它将数据集合封装在迭代器中,并对外提供两个 hasNext() 和 next() 方法。hasNext() 返回集合中是否还有下一个数据,next() 取出集合中下一

2018-01-19 21:06:10 2107

原创 实现简单的 IOC 容器

最近在看Spring的源码,对依赖xml配置文件的IOC容器的实现部分阅读起来比较吃力。主要是因为自己对IOC实现机制不是很了解,于是萌生了按其原理实现一个简单的IOC容器,来以便自己对Spring 的 IOC 实现能有更深入的了解。什么是 IOCIOC 是英文控制反转的缩写,是一种设计思想。对于Spring 框架来说,IOC 就是由 Spring 来负责对象的生命周期和对象间的关系。以前

2018-01-17 18:12:25 360

原创 Tomcat Lifecycle 观察者模式

前言Pipeline 和 Lifecycle 贯穿Tomcat 整个源码,上一篇中博客已经介绍了 Pipeline。接下来介绍 Lifecycle。Lifecycle 是整个 Tomcat 观察者设计模式思想的体现。我们已经知道 Tomcat 被分为4层,Engine 层, Host 层,Context 层和 Wrapper 层,层层嵌套。Engine 层是整个 Tomcat 的 Servlet 引

2017-12-27 16:34:34 793

原创 命令设计模式

前言将命令请求者和命令接收者进行解耦,以达到对内修改封闭,对外扩展开放的目的。命令接收者就相当于机器,可以执行不同的命令,但是对命令具体执行什么是不知情的。当一个命令接收者可以接收多种命令,且可接收的命令时可扩展时,这种情形下是比较适合应用命令陌生的。命令模式UML图命令Command封装命令的执行对象和执行行为。命令接受者action()调用命令的执行行为, 确不知道具体命令执行情况。

2017-12-25 20:27:00 132

原创 Tomcat 管道 Pipeline

前言最近看了《How tomcat works》一书,在Tomcat源码中,管道Pipeline是Tomcat很重要的一个组成部分。在Tomcat各层中都使用到了。要读懂Tomcat源码,理解Pipeline是何如实现是非常重要的。Tomcat总共被分为从上至下总共分为四层,引擎(engine)、主机(Host)、上下文环境(Context)和包装层(Wrapper)。这里主要针对Context和W

2017-12-20 18:24:30 535

原创 简单工厂、工厂方法和抽象工厂

前言一家披萨店PizzaStore有多种类型的披萨,有cheese、clam、veggle等等。当顾客订购披萨时,可通过如下方式实现:public class PizzaStore { private Pizza pizza; public Pizza orderPizza(String type){ if (type.equals("cheese")){

2017-12-20 10:54:55 218

原创 装饰者设计模式

前言 装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。场景我们知道,咖啡店里面的口味特别多,有dark roast(深烘焙),也有Espresso(浓缩咖啡),也有Machiatto(马琪雅朵)等等。顾客点咖啡的时候也会顺便点些配料,如牛奶(milK),摩卡(Mocha),配料多达几十种。对于这种场景,如果让我们实现一个订单系统,每一个订单显示顾客点

2017-12-07 20:29:54 220

原创 clean code读书笔记一

《clean code》一书主要讲解对于写出简洁易懂的代码的一些规范。对于一些觉得很重要,并深以为然的规范记下来,以便以后温习警醒自己严格遵守这些规范。要点一(3.1小节)函数的第一规则是要短小,第二条股则还是要短小。函数不应该有100行那么长,20行封顶最佳。对于if语句,else语句,while语句,其代码块最好只有一行,即是一个具有说明性名称的函数的调用。在一个函数里面只做一件事,做好一件事即

2017-09-26 21:13:45 388

原创 普通内部类静态成员

java普通内部类不能有static成员,为什么可以有final static成员?最近在重温”thinking in java”巩固java基础知识,读到7.6.4 static内部类的讲解中,提到static成员只能位于一个类的外部级别,所以普通内部类不可拥有static数据。不是很懂,于是写代码验证一下。public class Parcle { private class PCon

2017-09-18 21:12:22 581 2

原创 泛型单例工厂

我们用接口来定义类似对象间共同的操作特征,当各个对象操作的数据类型不同时,则可以结合泛型使得代码更加简洁。泛型单例在介绍泛型返利工厂时,我先举一个泛型单例的例子。好逐步理解 泛型单例工厂的用途和巧妙之处。我定义了一个泛型接口,里面只有一个apply()方法。public interface GenericityIn<T> { T apply(T args);}假如我现在需要一个对Stri

2017-08-04 15:54:18 1931

原创 指向子类对象的父类引用(向上转型)

注意点1 父类中的private变量和方法,父类本身的对象是无法直接调用的,自然指向子类对象的父类引用也是无法访问父类中的private变量和方法。注意点2 子类扩展父类的变量和方法,该引用是无法调用的。public class Point { private int x; private final int y; public Point(int x,int y) {

2017-07-27 14:06:41 1196

原创 builder设计模式学习笔记

builder设计模式学习笔记在面向对象编程过程中,通常通过构造器new的方式来获取一个类的对象。这种方式比较适合对象属性较少的情形。当对象的属性过多时,这种方式就不太适合了。以一个食物商品为例,它拥有总脂肪量,胆固醇,钠,蔗糖等20多个属性,当我们生成该商品的对象时,有些属性并不需要,于是我们会以重叠构造器的方式来编写这个类。 ““““ public class Food01 { p

2017-07-24 23:22:48 327

原创 android的消息机制之学习笔记

了解Android的消息机制,主要是了解handler,looper和MessageQueue的运行机制。

2016-05-05 21:50:52 530

原创 binder学习笔记(二)

上一篇对binder大概介绍了下,并且写了一个用binder跨进程的范例。接下来我将对AIDL生成的java文件结合binder驱动讲解下。

2016-04-21 21:42:03 595

原创 Binder学习笔记(一)

这是我本人看书对android的binder知识的总结,也算是自己android学习笔记,因为自己有些知识点可能没有领会透,文章中也许会有差错。我主要参考的是任玉刚的《Android开发艺术和探索》,另外一本是刘超的《深入解析Android 5.0系统》。文章中的代码也是出自任玉刚的这本书。

2016-04-19 00:00:21 811

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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