自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cp_Mark的博客

脚踏实地,耐心学习

  • 博客(53)
  • 收藏
  • 关注

原创 Java虚拟机学习笔记(四):内存分配与回收策略

Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数...

2018-11-06 23:25:51 295

原创 Java虚拟机学习笔记(三):垃圾收集器

垃圾收集器我们讨论的收集器基于JDK1.7 Update14之后的HotSpot虚拟机,这个虚拟机包含的所有收集器如图:连线说明可以搭配使用Serial收集器Serial是最基本、发展历史最悠久的收集器,在JDK1.3之前是虚拟机新生代收集的唯一选择。Serial收集器是一个单线程的收集器,单线程的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进...

2018-11-05 23:39:08 234

原创 Java虚拟机学习笔记(二):垃圾收集算法及HotSpot的算法实现

概述垃圾收集(GC)需要考虑3件事情:(1)哪些内存需要回收?(2)什么时候回收?(3)如何回收?前面我们已经提及程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知。而Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多...

2018-11-05 22:32:37 244

原创 Java虚拟机学习笔记(一):内存区域与HotSpot虚拟机对象探秘

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域:程序计数器(线程私有)程序计数器是一块较小的内存空间,它可以看...

2018-11-05 18:35:23 278

原创

定义:图(Graph)是由顶点的有穷非空集合和顶点之间的集合组成,通常表示为:G(V、E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。下图就是一个图的示例:在图的定义过程中,有几点我们需要注意的:(1)在图中数据元素,我们称之为顶点(2)在图结构中,不允许没有顶点(3)图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的各种图的定义...

2018-10-03 17:13:38 344

原创 串(字符串)

串的定义串是由零个或多个字符组成的有限序列,又名叫字符串。一般记为s=“a1a2…an”(n>=0),其中s是串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。串中的字符数目n称为串的长度。零个字符的串称为空串。下面是一些需要注意的基本概念:(1)序列:说明串的相邻字符之间具有前驱和后继的关系(2)空格串:是只包含空格的串。它和空串是不同的,有内容,有长度,而且可以...

2018-10-03 09:49:26 795

原创 树、二叉树

树的定义定义: 树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中: (1)有且仅有一个特定的称为根的结点 (2)当n > 1时,其余结点可分为m(m &amp

2018-09-18 21:31:56 285

原创 栈和队列(顺序栈、链栈、队列、循环队列、链队列)

栈的定义定义:栈是限定仅在表尾进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称后进先出(Last In First Out)的线性表,简称LIFO结构。栈的插入操作,叫作进栈(Push),也称压栈、入栈。栈的删除操作,叫作出栈(Pop),也有的叫作弹栈。示意图如下:栈的抽象数据类型栈本身就是一个线性表,所以关于...

2018-09-18 21:31:41 4647

原创 线性表(数组、单链表、静态链表、循环链表、双向链表)

线性表的定义线性表(List):零个或多个数据元素的有限序列。有几个地方需要强调:首先它是一个序列,也就是说元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继。然后线性表强调的是有限的。最后线性表中的数据元素必须是相同类型。如果用数据语言来定义,可如下(配合下图理解):数学语言定义: 若将线性表记为(a1...

2018-09-18 21:31:26 1321

原创 数据结构绪论

程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。 程序设计=数据结构+算法基本概念和术语数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。数据元素(记录):是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。比如畜...

2018-09-18 21:31:02 202

原创 Android-自定义Annotation注解

序现在市面上越来越多的基于注解的框架出现,它们可能或多或少的存在一些问题,但是确实是在某些方面大大简化了我们的开发周期和难度,也使得有些代码更加优雅。为了进一步提升自己(装逼中。。。),就决定去了解一下到底什么是注解,它们有几种类型,它的实现原理,它是怎么起到简化代码的作用的。我们以Android中权限的动态申请为示例,分别以运行时注解和编译时注解两种形式来实现。如有不足,还请指出!!...

2018-09-17 22:31:45 710

原创 Android入坑react-native:关于从原生数据流到flux、redux的演化

最近入坑React-Native,买了些参考书,撸了一个玩Android的react-native版本,对于参考书里面关于flux和redux是一脸的懵逼,后面在豆瓣上搜了redux相关的书籍,发现一本不错的入坑书深入浅出React和Redux,里面讲解了原生prop和state的不足,以及一步步演化到redux框架,这里作一下总结。...

2018-07-14 21:02:19 977 1

原创 RxJava2.1.14源码学习(三)线程切换observerOn

在上一篇我们已经介绍了线程切换两大操作符中的subscribeOn了,这一片我们来分析一下observerOn。本文重点是: (1)observeOn是如何实现的,它是如何影响事件流的, (2)如果我们使用多次会是什么结果,为什么? (3)subscribeOn和observeOn的混合使用效果如果对整体流程还不清晰的最好先去看看前面两篇: RxJava2.1.14源码学习(一)...

2018-06-19 10:49:13 1150 1

原创 RxJava2.1.14源码学习(二)线程切换subscribeOn

在上一篇我们只是简单的介绍RxJava的订阅和事件流,这一篇我们要分析的是RxJava最流弊的地方:线程切换。相信使用过RxJava的人都会被它优雅的线程操作所折服,好了不废话了,我们先说一下本文的重点: (1)subscribeOn是如何实现的,它是如何影响事件流的,如果我们使用多次会是什么结果,为什么? (2)observeOn是如何实现的,它是如何影响事件流的,如果我们使用多次会是什么结...

2018-06-15 16:17:49 693

原创 RxJava2.1.14源码学习(一)基本流程(附带装饰者模式、观察者模式说明)

RxJava已经是日常开发必备的技能,连带面试也是常问的知识点

2018-06-14 15:58:41 863

原创 记Google Play应用签名计划带来的问题

在某些特殊的情况,我们的应用需要强制升级(比如重大bug),以前上架小米、华为、360等国内市场一切都是正常的,但是这次上架Google Play发现升级会失败,提示签名不一致,同时原来正常的定位功能,上传到Google play也无法正常使用,提示key验证失败。一脸懵逼,上网去查资料,发现Google Play在你首次上传应用的时候有一个Google Play应用签名计划(为了保证安全),如下...

2018-06-13 09:48:27 11602

原创 记上架GooglePlay提升targetSdkVersion导致的适配问题

升了targetSdkVersion,出现了一些适配的问题,还有权限的问题,实在是不想升,但是没办法Google爸爸要求必须要升,硬着头皮上了。我主要是面临两个方面的问题: (1)权限的动态申请 (2)应用升级、拍照获取图片异常(这两个是同一个问题)对于权限问题,相对来说还是比较简单的,我是采用了RxPermissions来做的。对于运行时权限有兴趣的可以去了解一下。主要是说第二个问题...

2018-06-11 17:26:38 1727

原创 记Paypal支付小坑

因为业务需求,需要接入Paypal,总体来说也是比较简单的,但是陌生的东西总是免不了要躺坑的,这里做一下记录。 首先是一波官方的资料: Paypal Android sdk github地址 Paypal 开发者首页在开始之前你需要一个Paypal的账号。接入的大致步骤如下: (1)新建测试账号,分别是PERSONAL、BUSINESS身份 (2)以刚才新建的BUSINESS...

2018-06-11 15:17:08 2360

原创 记Google应用内商品(消耗品)支付小坑

因为应用要上架Google Play,所以需要接入Google支付和Paypal支付,本篇先记录一下Google支付接入流程。首先来一波定心丸,Google支付的接入还是很简单的;然后就是官方文档啦实现应用内购买结算。个人理解,购买流程大致如下: (1)查询当前设备是否支持应用内购买 (2)在支持的情况下,通过商品id查询拥有,未消耗的商品。 (3)如果没有,可以直接调起购买支付;如果有...

2018-06-11 14:36:06 6423

原创 记Google Play上架及测试注意点

在要开始上架流程之前,有一些东西要准备好: (1)Google的开发者账号(需要付费) (2)一款FQ工具 (3)手机要有Google Play应用商店和Google Play服务(测试时使用,因为国内手机大部分都是没有的,自己想办法搞定)做好上面这些准备,就开始正式的流程了。发布流程首先登陆Google Play Console,然后可以看见下图: 点击右侧的创建应用(选...

2018-06-11 11:08:51 14916

原创 Okhttp解析(二)-- 缓存

在上一篇Okhttp解析(一)– 源码中,我们从源码角度分析了同步请求和异步请求的流程,这一篇我们主要是分析Okhttp的缓存实现以及真正发送请求的HttpCodec实现。CacheStrategy在上一篇中,我们简单描述了一下它的作用:给定一个请求和缓存的响应结果,它将决定是否使用网络、缓存或者是两者都使用。其实就是说我们传入原始请求,然后它会返回一个后续请求和缓存结果,在缓存拦截器...

2018-05-24 18:00:39 411

原创 Okhttp解析(一)-- 主体流程

Okhttp是当前最火的网络请求框架,即便是Retrofit也是在Okhttp的基础上做的进一步的封装,便于开发者的使用,本篇我们就从源码的角度出发,分析一下Okhttp网络框架的请求流程,以3.10.0为例。我们就以okhttp在github上给出的get请求的示例代码为例来分析:OkHttpClient client = new OkHttpClient();String run(...

2018-05-23 16:55:11 457

原创 Volley解析(二)-- 架构分析

Volley是Google2013年I/O大会发布的一个轻量级的网络请求封装库,适用于多而小的网络请求,原因是它的缓存机制使用的是大小仅为5M的DiskBasedCache缓存。它的整个请求的分发流程,是通过RequestQueue来下发给CacheDispatcher和NetworkDispatcher,具体的流程,如有不懂可参考Volley解析(一)– 源码进行了解。本篇文章的主题是分析Vol...

2018-05-21 21:13:01 202

原创 Volley解析(一)-- 源码

涉及到的知识点:Volley网络请求的流程网络分发器逻辑缓存分发器逻辑线程Lock逻辑准备在正式开始分析Volley源码逻辑之前,有两件事需要搞明白:Volley是怎么使用的?请求的流程是怎样的?我们先从基本的使用开始吧。Volley的使用方式我们以通过点击Button加载图片为例,来说明一下Volley的使用。其实很简单,就是在Activity...

2018-05-19 10:26:56 484

原创 HUE和ZooKeeper

涉及到的知识点:什么是HUEHUE环境搭建什么是ZooKeeper搭建ZooKeeper环境(单节点、集群)ZooKeeper的功能:数据同步、选举机制、分布式锁什么是HUEHue是一个开源的Apache Hadoop UI系统,通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce J...

2018-05-13 22:25:05 977

原创 数据采集引擎Sqoop和Flume

涉及到的知识点:Sqoop的安装和配置,及常用命令Flume的安装和配置,及使用Sqoop数据采集引擎Sqoop的特点:采集的是关系型数据库中的数据(批量)一般用于离线计算基于JDBC用于在Oracle <-> Sqoop <-> HDFS、HBase、Hive间进行数据交换Sqoop的安装和配置(1)安装 tar -zx...

2018-05-13 15:41:48 1339

原创 数据分析引擎Pig

涉及到的知识点:Pig的体系结构安装和配置(本地模式、集群模式)Pig的常用命令Pig的数据模型 – 表结构(重要)使用PigLatin语句分析数据Pig的自定义函数Pig的体系结构Pig是一个用来处理大规模数据集的平台,由Yahoo开发,贡献给Apache。它可以简化MapReduce任务的开发,支持PigLatin语句(类似SQL)。其本质是一个翻译器,将PigL...

2018-05-12 19:31:28 887

原创 数据分析引擎Hive

涉及到的知识点:Hive的体系结构安装和配置Hive的数据模型:内部表、分区表、外部表,桶表、视图Hive的查询(本质就是SQL)Hive的Java API(本质就是JDBC程序)Hive的自定义函数(UDF:user defined function。本质就是一个Java程序)Hive的体系结构Hive其实是构建在Hadoop上的数据仓库平台,为数据仓库管理提供了许...

2018-05-12 11:27:52 1679

原创 HBase环境搭建及使用

涉及到的知识点:HBase的基础知识点Hbase的环境搭建:本地模式、伪分布模式、全分布模式常用功能:命令行操作、Java编程接口(增删改查、过滤器、MapReduce的使用)HAHBase的基础知识点HBase是一种NoSQL数据库,即非关系型数据库。常见的NoSQL数据库有:基于key-value模型:Redis(内存)面向列的模型:HBase、Cassand...

2018-05-07 22:56:06 816

原创 MapperReduce的使用及高级功能

涉及到的知识:Yarn调度MapReduce的过程MapperReduce排序分区CombinerShuffleYarn调度MapReduce的过程Yarn和MapReduce的关系,就跟我们web项目中和tomcat的关系一样,Yarn是MapReduce运行的容器。下面我们先介绍一下Yarn的一些概念。Yarn也是主从结构:ResourceManager(主...

2018-05-06 18:24:58 2151

原创 HDFS高级功能

本篇主要介绍HDFS的高级功能:回收站快照snapshot(一种备份)配额安全模式回收站和我们Window系统上的回收站一样,HDFS也是存在的,不过它默认是关闭的,要开启需要配置。具体的配置如下:vi core-site.xml<property> <name>fs.trash.interval</name>...

2018-05-06 00:57:07 2419

原创 HDFS体系结构及常见功能

本文主要是介绍HDFS的体系结构和常用操作,涉及到的知识点如下:HDFS的体系结构数据上传数据下载HDFS的体系结构Hadoop的生态圈,包括HDFS、Yarn、HBase都是主从结构。对于HDFS来说,它的主节点是NameNode,从节点是DataNode,还有一个更新最新状态的SecondaryNameNode,下面我们对这几个结点做详细的解释。NameNode:...

2018-05-05 16:05:24 6733

原创 Hadoop环境搭建

本文主要是从0开始搭建Hadoop伪分布,涉及到的知识点:VMware创建RetHat Linux虚拟机防火墙免密码登陆本地模式伪分布模式全分布模式准备工作在正式搭建之前,有两件事要做:下载一个VMware12并安装先下一个RetHat Linux的iso文件,可以前往RetHat官网下载开始虚拟机的创建和安装:虚拟机的创建首先在左侧我的计算...

2018-05-02 23:18:41 359

原创 Hadoop背景知识

本文主要涉及到的知识如下:什么是大数据,大数据的核心问题是什么?Hadoop的理论来源什么是大数据,大数据的核心问题是什么在了解大数据的概念之前,我们需要先了解以下几个概念:(1)OLTP:On-Line Transaction Processing(联机事务处理过程),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间...

2018-05-01 21:14:47 614

原创 OpenGL ES系列六--坐标系

概述首先说明一下本篇文章主要是说明空间坐标系转换相关的知识点,主要涉及以下两个个方面:五个坐标系统(哪五个,存在的意义,什么时候使用)这五个坐标系统,我们是通过什么来实现其转化的五个坐标系OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应

2018-02-06 15:14:51 1055

原创 OpenGL ES系列五--图元形式及绘制方式

OpenGL ES图元形式及绘制方式OpenGL ES的绘制主要涉及到两个方面,一个是图元绘制,还有一个是绘制方式。下面我们先以图元绘制开始,下面再讲解绘制顺序。图元绘制(此处默认使用GLES30.glDrawArrays()函数绘制)在OpenGL ES中支持的绘制图元有以下三种:点、线、三角形,每一种图元都有多种绘制方式,我们都会讲解说明。以下是示例代码,感兴趣的可以下载下来看

2018-01-31 10:24:53 1496

原创 OpenGL ES系列三--GLSL着色器语言

GLSL语言–OpenGL Shading Language无论是OpenGL还是其他图形API的着色器,通常都是通过一种特殊的编程语言去编写的。对于OpenGL来说,我们会使用GLSL,它是在OpenGL2.0版本左右发布的,GLSL与“C”语言非常类似,当然还有一点C++的影子。因为从下一节基本图元的绘制开始,我们就会开始接触到GLSL,所以必须先介绍GLSL。我们主要从以下几个常用的方面

2018-01-20 12:12:47 617

原创 OpenGL ES系列二--管线渲染流程

OpenGL渲染管线

2018-01-19 19:36:23 544

原创 OpenGL ES系列一--向量和矩阵

OpenGL ES之向量、矩阵OpenGL ES是一个很强大的库,可以绘制各种酷炫的3D图形,既然涉及到3D图形,那么跟3D数学肯定是脱离不了关系的,在我们正式进行OpenGL ES之前,我们需要先搞清楚一些数学上的东西,这样在你后面进一步学习OpenGL ES的时候才不至于懵逼。主要涉及到的一些数学概念有:向量 向量的定义向量的加法、减法向量的乘法(数乘、点乘、叉乘)矩阵 矩

2018-01-18 08:09:55 1439

转载 Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

Glide4的使用

2017-12-30 15:19:33 263

空空如也

空空如也

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

TA关注的人

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