自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lemonGuo的大脑皮层、小脑、海马体、杏仁核.....

吾生也有涯,而知也无涯 。以有涯随无涯,殆已!

  • 博客(19)
  • 资源 (3)
  • 收藏
  • 关注

原创 优雅设计封装基于Okhttp3的网络框架(四):多线程下载添加数据库支持(greenDao)及 进度更新

通过前三篇博文的学习,已经编码实现多线程下载功能的核心代码,通过多个线程之间的管理和调度来处理下载任务,最后再引入队列机制来完善功能。此篇博文主旨需要将下载的进度存储到数据库中,目的是为了可以在恢复时可以取出进程下载进度,从未下载部分开始下载,能更节省流量,提高用户体验。此篇文章将学习:多线程下载添加数据库支持greenDao开源库自动生成数据库相关代码完善网络请求接口中的进度更新功能

2017-07-31 14:08:43 2334

原创 JVM高级特性与实践(十四):线程安全 与 锁优化

在软件业发展初期,程序编写都是以算法为核心,程序员会把数据和过程分别作为独立部分考虑,数据代表问题空间中的客体,程序代码则用于处理这些数据,这种思维直接站在计算机的角度去抽象问题和解决问题,称为面向过程的编程思想。面向过程的编程思想极大地提升了现代软件开发的生产效率和软件可达的规模,但是现实世界与计算机世界之间存有差异,导致良好的设计原则不得不向现实做出让步。开发人员必须让程序在计算机中正确执行,

2017-07-26 13:50:31 1783

原创 JVM高级特性与实践(十三):线程实现 与 Java线程调度

衡量一个性能的高低好坏,每秒事务处理数(Transactions Per Second)是最重要的指标之一,它代表着一秒内服务端平均能响应的请求总数,而TPS值与程序的并发能力又有密切联系。对于计算量相同的任务,程序线程并发协调得越有条不紊,效率自然越高;反之,线程之间频繁阻塞甚至死锁,将会大大降低程序并发能力。并发不一定要依赖多线程,但是在Java里面谈论并发,大多数都与线程脱不开关系。此

2017-07-25 14:59:48 3663 2

原创 JVM高级特性与实践(十二):高效并发时的内外存交互、三大特征(原子、可见、有序性) 与 volatile型变量特殊规则

Amdahl 定律:该定律通过系统中并行化与串行化的比重来描述多处理器系统能获得的运算加速能力。 摩尔定律:该定律用于描述处理器晶体管数量与运行效率间的发展关系。 并发处理的刚反应用时使得 Amdahl 定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类“压榨”计算机运算能力的最有力武器。多任务处理几乎是现代计算机操作系统的一项必备功能,由于计算机的运算速度与它的存储和通

2017-07-24 17:10:23 1973

原创 JVM高级特性与实践(十一):方法调用 与 字节码解释执行引擎(实例解析)

方法调用不等于方法执行,它唯一的任务就是确定被调用方法的版本,即具体调用哪一个方法,暂时不涉及方法内部的运行过程。在程序运行时,进行方法调用是最普遍、最频繁的操作,在讲解Class文件编译过程时,已经表明此过程不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于“直接引用”)。此特性给Java带来了更强大的动态扩展能力

2017-07-24 09:09:35 1793 1

原创 JVM高级特性与实践(十):虚拟机字节码执行引擎(栈帧结构)

执行引擎是虚拟机最核心的组成部分之一。在讲解执行殷勤之前,再来思考一下“虚拟机”的概念,它是一个相对于“物理机”的概念,两者都有代码执行能力,区别是物理机的执行引擎时直接建立在处理器、硬件、指令集和操作系统上,而虚拟机则是由自己实现,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。本篇博文将从主要概念模型的角度讲解虚拟机的方法调用和字节码执行:栈帧概念及

2017-07-22 15:51:22 1936

原创 JVM高级特性与实践(九):类加载器 与 双亲委派模式(自定义类加载器源码探究ClassLoader)

虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码块被称为“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足 Java Applet 的需求而开发出来的,但类加载器却在类层次划分、OSGi、热部署、代码加密等领域大

2017-07-21 17:44:38 5573 2

原创 JVM高级特性与实践(八):虚拟机的类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,此策略虽会令类加载时稍增加性能开销,但为Java程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就是依赖运行期动态加载

2017-07-20 17:36:32 2051

原创 JVM高级特性与实践(七):九大类字节码指令集(实例探究 )

Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)已经跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)构成。由于Java虚拟机采用面向操作数栈而并非寄存器的架构,所以大多数的指令都不包含操作数,只有一个操作码。此篇博文将介绍九大类字节码指令集,并给出代码测试,对比字节码序列来加深指令学习,大致知识点如下:字节码概念、字节码所支持的数据类型

2017-07-19 14:21:35 2647

原创 JVM高级特性与实践(六):Class类文件的结构(访问标志,索引、字段表、方法表、属性表集合)

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编译发展的一大步。上篇博文中学习讲解了Class类文件结构的有关知识点,关于数据项方面介绍了常量池,此篇文章将介绍完余下的数据项部分,大致知识点如下:访问标志、类索引、父类索引与接口索引集合、字段表集合、属性表集合、各数据项的定义、作用、结构组成及实例讲解

2017-07-18 17:50:36 2795 1

原创 JVM高级特性与实践(五):实例探究Class类文件 及 常量池

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编译发展的一大步。在上计算机启蒙课时,老师曾跟我们讲过:“计算机只认识0 和 1,所以我们写的程序需要经编译器翻译成由0 和 1构成的二进制格式才能由计算机执行”。随着计算机发展至今,它仍然只能识别 0 和 1,但由于虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Nat

2017-07-17 15:01:48 2295

原创 JVM高级特性与实践(四):内存分配 与 回收策略

Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:分配内存给对象、回收分配给对象的内存。关于第二点的回收内存,在之前的博文中已经讲解过虚拟机中的垃圾收集体系以及运作原理,而此篇文章就来探讨学习有关分配内存给对象,相关知识点如下:对象内存分配、回收解析Minor GC 与 Full GC概念五大策略解析策略应用到代码实践原理解析JVM高级特性与实践(一):Java

2017-07-15 12:45:59 3483 5

原创 JVM高级特性与实践(三):垃圾收集算法 与 垃圾收集器实现

内存回收与垃圾收集器在很多时候都是影响系统性能、并发能力的主要因素之一此篇博文将详细探讨垃圾收集算法和七大垃圾收集器实现,大致知识点如下:4种垃圾收集算法概念的学习各个算法之间的优缺点、原理运作过程Java堆内存结构7种垃圾收集器特征的学习各个垃圾收集器的原理、运作过程、使用场景、优缺点 JVM高级特性与实践(一):Java内存区域 与 内存溢出异常 JVM高级特性与实践(二):对象

2017-07-14 12:33:38 3325 1

原创 JVM高级特性与实践(二):对象存活判定算法(引用) 与 回收

关于垃圾回收器GC(Garbage Collection),多数人意味它是Java语言的伴生产物。事实上,GC的历史远比Java悠远,于1960年诞生在MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp尚在胚胎时期,开发人员就在思考GC需要完成的3件事情:哪些内存需要回收?什么时候回收?如何回收?目前GC早已解决了以上问题,内存的动态分配与内存回收机制已经相当成熟,

2017-07-12 13:21:05 3030 1

原创 JVM高级特性与实践(一):Java内存区域 与 内存溢出异常

套用《围城》中的一句话,“墙外面的人想进去,墙里面的人想出来”,用此来形容Java与C++之间这堵内存动态分配和垃圾收集技术所围成的“围墙”就再合适不过了。对于从事C、C++的开发人员而言,在内存管理领域,他们具有绝对的“权利”——拥有每个对象的控制权,并担负着每个对象生命周期的维护责任。而对于Java开发人员而言,在虚拟机自动内存管理机制的帮助下,无需为每一个创建new操作去配对 delete/f

2017-07-11 21:48:55 5528 5

原创 优雅设计封装基于Okhttp3的网络框架(三):多线程下载功能核心实现 及 线程池、队列机制、终止线程解析

通过前两篇博文的学习,已经带领大家学习了HTTP协议与Okhttp相关内容的学习,并且在上篇博文已经完成了初始编码工作:定义好了网络请求接口DownloadCallback 和网络请求类HttpManager,可以完成同步、异步请求操作,而接下来将编码实现多线程下载功能的核心代码,通过多个线程之间的管理和调度来处理下载任务,最后再引入队列机制来完善功能。此篇文章将学习:多线程核心功能编写,线程池原理,队列机制

2017-07-11 12:39:36 3604

原创 优雅设计封装基于Okhttp3的网络框架(二):多线程下载功能原理设计 及 简单实现

通过上篇博客的学习,相信大家已经对Http协议及OKhttp3框架使用有一定的理解,切身感受到OKhttp3请求网络方法简单易懂,是否意味着可以直接通过它去解决开发中的相关网络需求?并非如此,它的使用方式确实简单,但是在实现某一模块或功能时,不仅要考虑OKhttp3框架使用,还涉及到其余网络编程相关知识的混合,例如线程的调度和管理、本地缓存操作处理。当多个模块融合在一起时,会发现实现基本功能不仅仅是

2017-07-09 13:24:11 2108

原创 优雅设计封装基于Okhttp3的网络框架(一):Http网络协议与Okhttp3解析

如今Android开发中Okhttp已成为主流网络框架,内置丰富、全面、强大的网络请求功能,也为开发者提供了api,但是在项目开发中的大量使用,会出现api的重复调用、代码冗杂等现象。应当封装一个适用于项目的网络框架,便于使用。此系列文章旨于:基于okhttp3原始框架来设计封装一个满足业务需求、扩展性强、耦合度低的网络框架。具体框架功能为:扩展其对数据库的支持对多文件上传、多线程文件下载的支持数据解析

2017-07-04 16:36:11 4456

原创 以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(下)

之前写的一篇是介绍缓存机制的流程和原理,并讲解了HTTP协议中缓存相关的字段,彻底了解了缓存机制原理后实践了Okhttp3框架的缓存实现,即第一篇的内容已经打下了基础,此篇就从源码的角度来解析Okhttp3框架的缓存机制的实现。(未看过第一篇,建议先了解缓存机制原理及HTTP协议中的重要字段,链接如下:) http://blog.csdn.net/itermeng/article/detai

2017-07-04 09:17:29 2726 3

网络调试助手NetAsssist

网络调试助手NetAsssist,可以用来测试TCP、UDP收发报文。

2017-06-25

Zxing二维码扫描Demo完整源码下载

集成Zxing二维码扫描,可从相册选择图片扫描、开启闪光灯、生成二维码图片功能

2017-04-10

Zxing二维码使用Demo

Zxing二维码使用Demo

2017-04-08

空空如也

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

TA关注的人

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