自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红涛在反思的blog

关注音视频前后端,也会分享记录一些工作、财务、感情、生活方面的思考与成长...

原创 对外分享合集

2018年技术分享 主题:RxJava分享 时间:20180301 点击下载ppt 2017年技术分享 主题:glide分享 时间:2017.10.13 点击下载ppt 主题:gradle分享 时间:2017.4.13 http://blog.csdn.net/a91062...

2016-08-08 10:39:19

阅读数 1556

评论数 3

原创 细说JVM系列:成员变量分配在栈中还是堆中?

细说JVM系列:成员变量分配在栈中还是堆中?下午时小伙伴问了我一个问题:mAge为啥是在堆里?幸好最近我一直在学习JVM,所以我在思考了一会结合之前的资料给出了我的理由: 因为mAge是类的成员变量,既然类的对象在堆中,它自然也在堆中。

2016-08-31 18:20:11

阅读数 4485

评论数 1

转载 Fresco源码分析

一.项目介绍Fresco是Facebook提供的一个开源图片加载与管理库。它的功能很强大,可以从网络、本地存储和Android资源文件中加载图片,它完全自己负责图片加载与显示,不需要你为细节去操心。 Fresco含有3级缓存设计(2级内存,1级文件)。Android2.3及以上的系统都可以使用F...

2016-08-31 17:39:01

阅读数 1580

评论数 0

转载 JAVA集合源码分析系列:TreeMap源码分析

treemap

2016-08-29 22:20:05

阅读数 688

评论数 0

原创 JAVA集合源码分析系列:TreeSet源码分析

TreeSet

2016-08-29 22:19:43

阅读数 660

评论数 0

原创 JAVA集合源码分析系列:HashSet源码分析

HashSet

2016-08-29 22:19:20

阅读数 712

评论数 0

原创 JAVA集合源码分析系列:HashMap源码分析

#一.大学《数据结构》散列表复习 散列表(Hash)表,你要记住一句话:根据给定的关键字来计算出关键字在表中的地址。在Hash表中,关键字和关键字的地址是有确定的关系的,这种关系可以用Hash函数H来表示。例如,关键字为key,则H(key)成为Hash地址,就是key在查找表中的地址。 #...

2016-08-29 22:18:59

阅读数 805

评论数 0

原创 JAVA集合源码分析系列:LinkedList源码分析

LinkedList源码分析 #一.LinkedList简介 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行队列操作。 LinkedList 实现 ...

2016-08-29 22:18:33

阅读数 753

评论数 0

原创 JAVA集合源码分析系列:ArrayList源码分析

一.ArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继...

2016-08-29 21:55:07

阅读数 783

评论数 0

原创 为第三方提供的功能做抽象层封装

对第三方提供的功能做抽象层封装,这样可以极大的降低项目和第三方之间的耦合,出问题的时候或者替换第三方的时候可以比较简单的切换,而不是对着项目中的上千个引用点做替换。比如,电话会议,我们使用云视通、华为等等的电话会议,最好为这些api提供一个抽象层的封装。比如,android底层的网络请求框架,我们...

2016-08-28 17:28:54

阅读数 805

评论数 0

原创 细说JVM系列:虚拟机字节码执行引擎

虚拟机字节码执行引擎 字节码就像是汇编语言,是 JVM 的指令集。 代码编译的结果是从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。概述执行引擎是 Java 虚拟机最核心的组成部分之一。“虚拟机” 是一个相对于 “物理机” 的概念,这两种机器都有代码执行能力,其区别...

2016-08-27 15:58:00

阅读数 1265

评论数 0

原创 细说JVM系列:虚拟机类加载机制

虚拟机类加载机制上一篇我们介绍了了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?正是本部分要说明的内容。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成...

2016-08-27 15:37:45

阅读数 1157

评论数 0

原创 细说JVM系列:Class文件结构

Class文件结构Class文件结构Class文件的结构并不是一成不变的,随着java虚拟机的不断发展,总是不可避免的会对class文件结构做出一些调整,但是其基本结构和框架是非常稳定的。class文件的总体结构如图所示:在我在看这块内容的时候,我在想我怎么结合我已有的概念去理解这个东西:其实Cl...

2016-08-27 11:44:13

阅读数 1123

评论数 0

原创 细说JVM系列:JVM存在的目的和意义是什么?

JVM存在的目的和意义是什么? 一句话,实现跨平台。 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,确是编程语言发展的一大步。记得在第一节计算机程序设计课上我的老师讲过:计算机只认识0和1,所以我们写的程序需要经过编译器编译成由0和1构成的二进制格式才能有计算机执行。多年过去...

2016-08-27 10:39:25

阅读数 1445

评论数 1

转载 细说JVM系列:分代收集算法补遗

分代收集算法补遗在前面我们就提到过,java堆为了更精细化的管理,又分为新生代和老生代。1.Java堆中各代分布图1:Java堆中各代分布Young:主要是用来存放新生的对象。Old:主要存放应用程序中生命周期长的内存对象。Permanent:是指内存的永久保存区域,主要存放Class和Meta的...

2016-08-26 21:06:02

阅读数 957

评论数 0

原创 细说JVM系列:自动内存管理内存分配:内存分配和回收策略

自动内存管理内存分配:内存分配和回收策略java技术体系中所提倡的自动内存管理最终可以归结为自动化解决了两个问题:给对象分配内存以及回收分配给对象的内存。,关于内存的回收,之前我们已经使用了大量的篇幅介绍了这个东西。接下来我们会探讨下自动化内存分配。对象的内存分配,往大了讲,就是在堆上分配。接下来...

2016-08-26 20:57:04

阅读数 879

评论数 0

原创 细说JVM系列:自动内存管理内存回收:垃圾收集实践-垃圾收集器

自动内存管理内存回收:垃圾收集实践-垃圾收集器在java虚拟机中,垃圾回收器可不仅仅只有一种,什么情况下要使用哪一种,对性能又有什么样的影响,这都是我们必须要了解的,这里会具体介绍一下垃圾收集器的类型,以及他们的特点。一.串行回收器串行回收器是指使用单线程进行垃圾回收的回收器。每当回收时,串行回收...

2016-08-26 20:19:29

阅读数 831

评论数 0

原创 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法

垃圾收集理论-垃圾收集算法这里主要讲解垃圾收集理论上的算法,下一篇会介绍一些实现了这些算法的垃圾收集器。一般我们谈垃圾收集从三个问题来帮你理解jvm的垃圾收集策略:1.怎么判断哪些内存是垃圾? 2.用什么方法回收? 3.什么时候回收?垃圾回收的区域?前面介绍了java内存运行时区域的各个部分,...

2016-08-26 17:31:03

阅读数 1130

评论数 0

原创 细说JVM系列:什么是java对象的引用

什么是java对象的引用下一篇,我们将介绍JVM的垃圾收集器和内存分配策略,在判断对象是否是垃圾时,主要通过对象的引用来判断,不论是引用计数算法还是可达性分析算法,他们都涉及java引用的定义,这里专门对java的引用来说明一下。在JDK1.2以前,java中的引用定义很传统:如果referenc...

2016-08-26 15:27:23

阅读数 944

评论数 0

原创 细说JVM系列:JVM对象的创建、内存布局、访问

对象的创建、内存布局、访问  这里会深入探讨HotSpot虚拟机在java堆中的对象分配、布局和访问的全过程。一.对象的创建  虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先...

2016-08-26 14:43:53

阅读数 1364

评论数 0

原创 细说JVM系列:JVM内存空间分区

java虚拟机基本结构:JVM是一个内存中的虚拟机,那它的存储就是内存了,我们写的所有类、常量、变量、方法都在内存中,因此明白java虚拟机的内存分配非常重要,本部分主要讲解java虚拟机内存分配。本部分会从概念上介绍java虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能产生的问题...

2016-08-25 21:31:25

阅读数 5211

评论数 0

转载 细说JVM系列:JVM介绍

  JVM是我们Javaer的最基本功底了,刚开始学Java的时候,一般都是从“Hello World”开始的,然后会写个复杂点class,然后再找一些开源框架,比如Spring,Hibernate等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某...

2016-08-25 17:41:22

阅读数 2357

评论数 4

原创 APP性能优化系列:常见优化分析工具列举

常用优化工具分析: ##HierarchyViewer 查找Activity中的布局是否过于复杂 ##过度渲染测试 通过手机设置里面的开发者选项,打开Show GPU Overdraw的选项,可以观察UI上的Overdraw情况。 ##Traceview 方法跟踪工具(Traceview...

2016-08-19 18:34:31

阅读数 764

评论数 0

原创 APP性能优化系列:apk体积优化

#一.APK文件格式 ``` /assets /lib /armeabi /armeabi-v7a /x86 /mips /META-INF MANIFEST.MF CERT.RSA CERT.SF /res AndroidManifest.xml classes.d...

2016-08-18 16:15:17

阅读数 3188

评论数 0

原创 APP性能优化系列:UI性能优化

#一.控件优化 使用listview的时候注意listview的优化 #二.布局优化 ##1.减少过度绘制 **如何检查过度绘制** 在android手机的系统中可以开启过度绘制的检查。 颜色标识: 从好到差:蓝-绿-淡红-红 1. 蓝色1x过度绘制 2. 绿色2x过度绘制 3. 淡红...

2016-08-18 16:14:55

阅读数 664

评论数 0

转载 APP性能优化系列:内存优化-慎用static

#一.静态变量在类被加载的时候分配内存 类在什么时候被加载? 当我们启动一个app的时候,系统会创建一个进程,此进程会加载一个Dalvik VM的实例,然后代码就运行在DVM之上,类的加载和卸载,垃圾回收等事情都由DVM负责。也就是说在进程启动的时候,类被加载,静态变量被分配内存。 #二.静态...

2016-08-18 16:13:12

阅读数 1277

评论数 0

原创 APP性能优化系列:内存优化-OOM详解

#一.OOM说明 Out Of Memory(内存溢出),我们都知道Android系统会为每个APP分配一个独立的工作空间, 或者说分配一个单独的Dalvik虚拟机,这样每个APP都可以独立运行而不相互影响!而Android对于每个 Dalvik虚拟机都会有一个最大内存限制,如果当前占用的内存加...

2016-08-18 16:12:45

阅读数 1187

评论数 1

原创 APP性能优化系列:内存优化-bitmap详解

  在Android应用开发中,我们经常需要跟图片打交道,而图片一个很麻烦的问题是占用内存非常大,经常导致OOM,了解Bitmap相关信息,不同sdk版本中Android图片处理的变化,以及一些优化处理的方式对我们平时开发中对图片的会非常有帮助。   在开...

2016-08-18 16:12:20

阅读数 2240

评论数 0

原创 RecylerView使用详解(分享整理)

RecylerView介绍RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的viewholder就可以了,该组件会自动帮你回收复用每一个it...

2016-08-14 22:00:13

阅读数 1330

评论数 0

原创 计算机网路复习系列:UrlConnection连接和Socket连接的区别

httpurlconnection是对socket的封装。类似httpclient, ftpClient,URLConnetcion之类的,是对专属协议的封装。Socket是底层实现,协议你要自己去写,不局限于http,可以是任何协议。1.Socket 的连接是有状态的,一旦两边连接上了,将一直保...

2016-08-14 16:09:05

阅读数 868

评论数 0

原创 计算机网络复习系列:一张图涵盖程序员应该具备的基础知识

图示

2016-08-14 13:07:16

阅读数 774

评论数 0

转载 计算机网络复习系列:http协议

HTTP(Hypertext Transfer Protocol)就是超文本传输协议,它是现代互联网最重要也是最基本的协议。Http协议是无状态的、应用层协议,它是web开发的基础,如果想从事web方面的开发,一定要仔细学习一下这个协议。 #一、Http基础 Http设计的目的就是支持客户端(一...

2016-08-14 13:06:52

阅读数 761

评论数 0

原创 计算机网络复习系列:计算机网络体系结构

计算机网络复习系列:计算机网络体系结构 计算机网络的定义:计算机网络就是一些互联的、自洽的计算机系统的集合。 物理组成上,计算机网络包括硬件、软件、协议三部分。 硬件:由主机、通信处理机、通信线路(包括有线和无线等),交换设备(交换机等连接设备)组成。 软件:主要有实现资源共享的软件和方便用户...

2016-08-14 13:04:44

阅读数 748

评论数 0

原创 计算机网络复习系列:前言

#目的: 我作为一个移动开发者,为何突然开始写计算机网络相关的博客呢?因为最近在阅读网络框架相关的代码时,包括上传下载等等,我发现我对计算机网络的学习都停留在大学书本面上,早已忘得差不多了,也越发感觉到之前CTO在面试我的时候提到的基础非常重要。 这部分的分享侧重宏观的把握和串联,主要理顺开发...

2016-08-14 13:04:08

阅读数 684

评论数 0

原创 对比JAVA学习PHP系列:面对对象

面对对象要从语法和面对对象的思想两方面着手学习php4中面对对象的功能并不完善,php5才完整引入面对对象的功能。主题PHPJAVA封装1.什么是封装2.类概念、类的访问控制符、类的定义方法、类的构造器3.对象概念、创建对象的方法、对象和类的关系类类的声明和java一致成员属性多了一个var关键字...

2016-08-13 22:01:04

阅读数 531

评论数 0

原创 对比JAVA学习PHP系列:函数

函数的存在是为了将程序按功能分块。方便程序的使用、管理和调试。主题PHPJAVA函数的定义function 函数名([参数1, 参数2...参数n]){    函数体;    return 返回值;}与java形式上区别较大,java是不需要写function的,并且java是强类型的。变量的范围...

2016-08-13 21:33:04

阅读数 596

评论数 0

原创 对比JAVA学习PHP系列:流程控制与异常处理

主题PHPJAVA流程控制1.顺序2.选择if\esleif\else\switch,和java没啥区别只不过php的switch语句后面的控制表达式的数据类型只能是整型或字符串。3.循环while\do…while\for4.特殊的流程控制语句break\continue\exitjava中没有...

2016-08-13 20:55:13

阅读数 555

评论数 0

原创 对比JAVA学习PHP系列:数据结构

总结:php是一种弱类型检查的语言php中的字符串和数组非常重要。主题PHPJAVA1. 定义变量与常量,系统的内置的常量最基本的数据存储单元变量:变量是临时存值的容器。在任何编程语言中都居于核心位置。php是一种弱类型检查的语言(和java区别非常大),它的数据类型是由程序的上下文决定。php的...

2016-08-13 20:46:10

阅读数 770

评论数 0

原创 对比JAVA学习PHP系列:入门简介

总结:主题           PHPjava1.了解这门语言的由来http://www.cnblogs.com/sashimi/archive/2012/10/08/2715358.html这篇文章详细介绍了PHP的由来。主要概括如下:英文简写:HypertextPreprocessor初版是C...

2016-08-13 17:39:09

阅读数 656

评论数 0

原创 编程语言思考系列:解释性语言,编译性语言,脚本语言

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。   翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。解释性语言  解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样...

2016-08-13 17:28:20

阅读数 796

评论数 0

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