自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Android异步框架RxJava 1.x系列(三) - 线程调度器Scheduler

前言RxJava事件的发出和消费都在同一个线程,基于同步的观察者模式。观察者模式的核心是后台处理,前台回调的异步机制。要实现异步,需要引入RxJava的另一个概念 - 线程调度器Scheduler。正文在不指定线程的情况下,RxJava遵循的是线程不变的原则。即在哪个线程调用subscribe()方法,就在哪个线程生产事件;在哪个线程生产事件...

2018-09-26 22:35:00 121

转载 Android异步框架RxJava 1.x系列(二) - 事件及事件序列转换原理

前言在介绍 RxJava 1.x 线程调度器之前,首先引入一个重要的概念 - 事件序列转换。RxJava 提供了对事件序列进行转换的支持,这是它的核心功能之一。正文1. 事件序列转换定义所谓转换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列,有点类似 Java 1.8 中的流处理。2. 事件序列转换API首先看一...

2018-09-26 22:27:00 103

转载 Android异步框架RxJava 1.x系列(一) - 观察者模式及实现

Android异步框架RxJava 1.x系列(一) - 观察者模式及实现前言RxJava是一款基于Java VM实现的响应式编程扩展库 - 基于观察者模式的异步和事件处理框架。RxJava官方目前同时维护了两个版本,分别是1.x和2.x,区别是它们使用不同的group id和namespaces。版本group idnames...

2018-09-26 22:22:00 134

转载 JVM系列(七) - JVM线上监控工具

前言通过上一篇的JVM垃圾回收知识,我们了解了JVM具体的垃圾回收算法和几种垃圾回收器。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。在线上我们经常会遇见如下几个问题:内存泄露;某个进程突然CPU飙升;线程死锁;响应变慢。如果遇到了以上这种问题,在线下环境可以有各种可视...

2018-09-24 18:51:00 161

转载 JVM系列(六) - JVM垃圾回收器

前言在之前的几篇博客中,我们大致介绍了,常见的垃圾回收算法及JVM中常见的分类回收算法。这些都是从算法和规范上分析Java中的垃圾回收,属于方法论。在JVM中,垃圾回收的具体实现是由垃圾回收器(Garbage Collector)负责。正文概述在了解垃圾回收器之前,首先得了解一下垃圾回收器的几个名词。1. 吞吐量CPU用于运行用户代...

2018-09-24 18:44:00 55

转载 JVM系列(五) - JVM类加载机制详解

前言本文将由浅及深,介绍Java类加载的过程和原理,进一步对类加载器的进行源码分析,完成一个自定义的类加载器。正文(一). 类加载器是什么类加载器简言之,就是用于把.class文件中的字节码信息转化为具体的java.lang.Class对象的过程的工具。具体过程:在实际类加载过程中,JVM会将所有的.class字节码文件中的二进制数据读入内存中,导入运行时...

2018-09-24 12:45:00 85

转载 JVM系列(四) - JVM垃圾回收算法

前言前面介绍了Java内存运行时区域,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要过多考虑回收的问题,因为方法结束或线程结束时,内存自然就跟随着回收了。Jav...

2018-09-24 12:40:00 64

转载 JVM系列(三) - JVM对象探秘

前言对于JVM运行时区域有了一定了解以后,本文将更进一步介绍虚拟机内存中的数据的细节信息。以JVM虚拟机(Hotspot)的内存区域Java堆为例,探讨Java堆是如何创建对象、如何布局对象以及如何访问对象的。正文(一). 对象的创建说到对象的创建,首先让我们看看Java中提供的几种对象创建方式:Header解释使用new关键字...

2018-09-24 12:36:00 63

转载 JVM系列(二) - JVM内存区域详解

前言JVM内存区域包括PC计数器、Java虚拟机栈、本地方法栈、堆、方法区、运行时常量池和直接内存。本文主要介绍各个内存区域的作用和特性,同时分别阐述各个区域发生内存溢出的可能性和异常类型。正文(一). JVM内存区域Java虚拟机执行Java程序的过程中,会把所管理的内存划分为若干不同的数据区域。这些内存区域各有各的用途,以及创建和销毁时间。有的区域随着...

2018-09-24 12:35:00 55

转载 JVM系列(一) - JVM总体概述

前言JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上一次编译,多次运行,具有跨平台性。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指...

2018-09-24 12:30:00 95

转载 Java NIO系列(四) - Selector

前言Selector是Java NIO中的一个组件,用于检查一个或多个通道Channel的状态是否处于可读、可写状态。如此可以实现单线程管理多个通道,也就是可以管理多个网络连接。为什么使用Selector?用单线程处理多个Channel的好处是我需要更少的线程来处理Channel。实际上,你甚至可以用一个线程来处理所有的Channel。从操作系统的角...

2018-09-24 12:12:00 86

转载 Java NIO系列(三) - Channel

前言上文讲到Java NIO一些基本概念。在标准的IO中,都是基于字节流/字符流进行数据操作的,而在NIO中则是是基于Channel和Buffer进行操作,其中的Channel的虽然模拟了流的概念,实则大不相同。本文将详细阐述NIO中的通道Channel的概念和具体的用法。Channel和Stream的区别区别StreamChannel是否...

2018-09-24 12:09:00 189

转载 Java NIO系列(二) - Buffer

前言在Java NIO中,缓冲区用来临时存储数据,可以理解为是I/O操作中数据暂存的中转站。缓冲区直接为通道(Channel)服务,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问这块内存。正文Buffer的类型Java NIO...

2018-09-24 12:05:00 78

转载 Java NIO系列(一) - 概述

前言Java NIO全称java non-blocking IO,是指jdk1.4及以上版本里提供的新api(New IO),为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。Java NIO提供了与标准IO不同的IO工作方式,Channel、Buffer和Selector构成了核心的API。其它组件,如Pipe和Fi...

2018-09-24 12:03:00 127

转载 一天一个设计模式(五) - 适配器模式(Adapter)

前言适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途最经典的就是电器的例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极之外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)...

2018-09-24 12:00:00 54

转载 一天一个设计模式(四) - 原型模式(Prototype)

前言原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用这个原型对象提供的复制办法创建出更多同类型的对象。原型模式的结构原型模式要求对象实现一个可以克隆自身的接口(类型)。这样一来,通过原型实例创建新的对象,就不需要关心这个实例本身的类型,只需要实现克隆自身的方法,也而无需再去通过new来创建。原型类型的表现形式简单形式登...

2018-09-24 11:59:00 67

转载 一天一个设计模式(三) - 建造者模式(Builder)

前言建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。(一). 产品的内部表象一个产品常有不同的组成成分作为产品的零件,这些零件有可能是对象,也有可能不是对象,他们通常又称为产品的内部表象(internal representatio...

2018-09-24 11:57:00 81

转载 一天一个设计模式(二) -单例模式(Singleton)

前言单例模式(Singleton) 是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。正文(一). 优缺点Java中单例模式(Singleton) 是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。...

2018-09-24 11:55:00 56

转载 一天一个设计模式(一) - 总体概述

前言最近在对设计模式进行了一系列总结,本文将给大家关于设计模式的一个整体的介绍。正文1. 定义设计模式是某类特定问题的代码设计解决方案,是一套代码设计的经验总结。2. 作用提高代码复用率,降低开发成本和周期提高代码可维护性、可拓展性使代码更加优雅,可读性更强让代码更容易被他人理解3. 设计原则在设计模式进行设计时需要遵循以下的面向对...

2018-09-24 11:54:00 53

转载 Java基础篇 - 强引用、弱引用、软引用和虚引用

前言Java执行GC判断对象是否存活有两种方式其中一种是引用计数。引用计数:Java堆中每一个对象都有一个引用计数属性,引用每新增1次计数加1,引用每释放1次计数减1。在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划...

2018-09-24 11:52:00 245

转载 大型Web网站架构演变

前言我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。该系统具备的功能:用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理正文阶段一、单机构建网站网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如Tomcat、Jetty、Jboss,然后直接使用JSP/Ser...

2018-09-24 11:50:00 83

转载 HTTP协议详解

简介HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送H...

2018-09-24 10:13:00 167

转载 TCP协议简介

前言TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP的特性TCP提供一种面向连接的,可靠的字节流服务;在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP;TCP使用校验和,确认和重传机制来保证可靠传输;TCP使用累积确认TCP使用滑动窗...

2018-09-24 10:03:00 72

转载 WebSocket协议入门简介

前言以前的网站为了实现推送功能,使用的方法都是轮询。所谓的轮询就是在特定的时间间隔(例如1秒),由浏览器向服务器发出一个Http request,然后服务器返回最新的数据给客户端浏览器,从而给出一种服务端实时推送的假象。由于Http Request的Header(请求头)很长,而传输的数据可能很短就只占一点点,每次请求消耗的带宽大部分都消耗在Header上。从网上资料得...

2018-09-24 09:50:00 106

空空如也

空空如也

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

TA关注的人

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