WisdowsBlog 
  • Home
  • Archives
  • Categories
  • Tags
  • About
  •     

应用最广的模式-单例模式

单例模式的优点单例对象的类保证只有一个实例存在。确保某个类有且仅有一个实例存在,避免产生多个对象消耗过多资源。 关键点 构造函数私有, 不对外开放 通过静态方法, 枚举或容器返回单例类对象 确保单例类对象有且仅有一个, 尤其在多线程环境下 确保单例类对象在反序列化时不会重新创建 实现方式:饿汉式在类初始化时就创建单例对象. 下面有两种实现方式: 静态对象单例使用静态对象持有一个单例实例, 在类初始化时就创建这个单例对象. 123456789public class Singleton{ private static INSTANCE = new Singleton(); private Singleton(){} public static Singleton instance(){ return INSTANCE; }} 枚举单例利用枚举的单一性, 又能允许存在方法和属性的特性. 123456789public enum SingletonEnum { INSTANCE; void doSomething() {}}public
 2019-03-22   设计模式    读书笔记 

Java源码阅读 - ArrayList

做技术,不能只知其然而不知其所以然。在知道了工具的原理之后,才能更高效的使用这个工具。在程序的世界里,源码里面没有秘密,看懂了源码,也就看懂了原理。 这次就来阅读一下ArrayList的源码。...
 2019-03-22   学习记录  Java  源码阅读    Java  ArrayList 

Kubernetes:v1.13.4的Worker节点墙内部署文档(CentOS7)

引言 Kubernetes的Worker节点的部署要比Master简单不少,核心的是一条join命令,步骤如下。 操作系统是CentOS7,假设使用的用户是root(如果不是root的话,请自行添加”sudo”) 如果你用的是Ubuntu系统,大多数操作也都类似,在结尾附录二中我还给出了Ubuntu安装过程中与CentOS7不同的地方,希望能对你有所帮助。 步骤一 调节Docker版本 Kubernetes和Docker的版本兼容性一直是令人头疼的问题,之前我的服务器上装的docker是1.13.1版本,安装时会报很多莫名其妙的错误,让人困惑很久,经过测试Docker的1.13.0版本是能够和Kubernetes的v1.13.4版本完美配合的。 1.查看docker版本 1docker -v 如果发现版本刚好是1.13.0的话就可以直接跳到步骤二了 2.如果发现版本不是1.13.0的话,建议将Docker卸载并且重新安装合适的版本 123456789101112131415161718# 删除已有的dockeryum erase -y docker*# 删除已有的docker镜像(防
 2019-03-22   kubernetes    kubernetes 

Flutter 自定义绘制控件

在 Flutter 中自定义 View 有两种方式: 组合已有控件 自定义绘制 如何自定义绘制有两个类做这件事情: CustomPaint :会在绘制阶段提供一个 Canvas 画布 CustomPainter : 具体的画笔, 可配置画笔的颜色,路径等 12345678910111213CustomPaint( painter: Sky(), child: Center( child: Text( 'Once upon a time...', style: const TextStyle( fontSize: 40.0, fontWeight: FontWeight.w900, color: Color(0xFFFFFFFF), ), ), ),) 当在绘制阶段时, CustomPaint 首先会调用 painter 在画布上进行绘制, 然后再绘制它的 child 控件, child 绘制完成之后会调用 foregroundPainter 进行绘制. 画布的坐标系和 CustomPa
 2019-03-16   Flutter    View 

Dart中的异步编程

IsolateDart 中的线程概念是 Isolate, 一个在操作系统 Thread 只上的封装, 默认 Dart 程序会在一个 Isolate 中顺序执行代码....
 2019-03-15   Dart    异步编程 

Java自定义注解

注解是Java 5引入的一个新特性,它提供了一个用来将信息和元数据与程序元素相关联的能力,其作用如同一个修饰符,本身并不包含任何程序逻辑。 本文将介绍如何创建和使用自定义的注解。...
 2019-03-15   学习记录  Java  基础知识    Java  注解 

循序渐进写一个Servlet(5) - Filter

Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。本系列将一步步地写出一个Servlet程序。 这篇博文将演示如何创建和使用filter。...
 2019-03-13   学习记录  Java  Servlet    Java  Servlet 

循序渐进写一个Servlet(4) - 会话追踪

Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。本系列将一步步地写出一个Servlet程序。 这篇博文将演示如何使用cookie和session进行会话追踪。...
 2019-03-12   学习记录  Java  Servlet    Java  Servlet 

谈谈抽象类和接口

今天我们来谈一谈面向对象中的抽象类和接口。 java为什么会有接口?很多人可能会说因为java中没有多继承,所以要设计接口。但么问题来了,java为什么没有多继承呢? 现在的高级语言基本都是基于C/CPP衍生而来的。java可以说是cpp的”简洁版”,把Cpp中的一些不明显的,容易误解的概念删去或剥离出来。比如头文件换成了package,删去了显式意义上的指针,默认参数必须用重载实现,天生多态的概念等等。虽然java也有一些自己独特的设计,例如反射等等(有cpp的外部库也能实现反射),这里不介绍了。...
 2019-03-11   设计 

生产者与消费者问题在Java中的实现

生产者与消费者问题(Producer-consumer problem),也叫有限缓冲问题(Bounded-buffer problem),是一个经典的多线程同步问题案例。 该问题中有两个线程共享一个固定大小的缓冲区,一个线程作为生产者,负责向缓冲区中放入数据;另一个线程作为消费者,负责从缓冲区中取出数据。该问题的重点在于,要保证当缓冲区满时,生产者不能继续向其中放入数据,而当缓冲区空时,消费者也不能从缓冲区中取出数据。 那么要保证以上两点,需要在缓冲区空时休眠消费者线程,并当缓冲区有数据之后唤醒消费者线程;以及当缓冲区满时休眠生产者线程,在缓冲区有空闲空间后唤醒生产者线程,或者直接在缓冲区满时放弃未存入缓冲区的数据。 这个问题的难点在于可能会产生死锁。当陷入死锁时,生产者和消费者都会处于休眠状态,并等待对方唤醒自己。...
 2019-03-11   学习记录  Java  基础知识    多线程  Java 
1…1213141516…28

搜索

Hexo Fluid
 总访问量 次   总访客数 人