自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 JVM笔记—运行时区域数据

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而创建和销毁。 程序计数器 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所...

2018-09-06 18:22:37

阅读数 26

评论数 0

原创 第一个Flutter APP

创建Flutter App 创建一个新的Flutter项目,项目会默认自带一个示例,编辑lib/main.dart的代码 删除main.dart文件中的代码,替换为以下代码,然后运行 import 'package:flutter/material.dart'; void main()...

2018-09-04 09:47:12

阅读数 73

评论数 0

原创 Flutter环境搭建

环境安装 获取Flutter SDK git clone -b beta https://github.com/flutter/flutter.git export PUB_HOSTED_URL=https://pub.flutter-io.cn //国内用户需要设置 export F...

2018-09-04 09:46:38

阅读数 40

评论数 0

原创 Flutter Widget框架概述

介绍 Flutter Widget采用现代响应式框架构建,中心思想是用widget构建你的UI。Widget描述了他们的视图在给定其当前配置和状态时看起来像什么。当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同,以确定底层渲染树从一个状态转换到下一个...

2018-09-04 09:45:26

阅读数 151

评论数 0

原创 Android笔记—Activity启动模式

默认情况下,我们多次启动同一Activity的时候,系统会多次创建实例并一一放入到任务栈中,Android也提供启动模式来修改这种默认的行为。 LaunchMode standard 标准模式。Activity默认的启动方式,在这种启动方式下每次启动Activity系统都会重新创建实例并放入...

2018-07-11 17:31:29

阅读数 63

评论数 0

翻译 EventBus—订阅者索引

订阅者索引 订阅者索引是EventBus 3的新功能,它是一种可选择的优化,用来加快初始订阅者的注册。 可以使用EventBus注解处理器在编译期内创建订阅者索引文件,虽然不强制使用索引,但是在Android上推荐使用以便获得最好的性能。 索引前提 请注意:只有用@Subscribe注解的...

2018-07-09 15:00:25

阅读数 199

评论数 0

原创 Android进阶之路 —EventBus源码解析

EventBus是基于发布/订阅的开源框架,主要用于组件之间的通信,下面会从三个点对EventBus的源码进行分析 (1)register(Object subscriber) 被通知类的注册 使用EventBus时我们首先会在需要被通知的类中去进行注册,现在看一下register()里面...

2018-06-08 17:58:56

阅读数 71

评论数 0

原创 Tomcat通过不同的端口去访问不同的Web资源

在开发中遇到过这样一种需求:客户端希望通过8080端口访问的是一种资源,而通过8089访问的是另一种资源,在只使用一个Tomcat的情况下我们需要怎么做呢? 一提到端口,我们自然而然的就想到了Tomcat的conf目录下的server.xml,我们先来看看里面的内容: ...

2018-04-24 13:57:29

阅读数 296

评论数 0

原创 Fragment管理工具类

分享一个之前项目自己写的一个Fragment切换工具类 首先是工具类的代码,工具类封装了Fragment的切换,添加、销毁、状态保存等方法 public class FragmentTabManager { private Context mContext; priva...

2018-04-24 13:54:41

阅读数 407

评论数 0

原创 使用DownloadManager进行应用下载

最近在做公司的应用下载功能,使用到的是系统提供的DownloadManager,正好抽时间做成一个模块。 关于DownloadManager 先来看一段官方的介绍: The download manager is a system service that handles long-ru...

2018-04-20 17:24:54

阅读数 142

评论数 0

原创 7.0—AsyncTask源码分析

AsyncTask源码分析之前开发中经常使用AsyncTask进行异步数据获取,当时只限于使用,只知道大体的就是通过线程池+handler实现的封装,具体的代码细节没有仔细看过,今天就阅读一下源码,当作笔记。加深记忆构造函数public AsyncTask() { mWorker ...

2017-03-15 12:56:38

阅读数 202

评论数 0

原创 使用自定义Camera实现简单拍照功能

闲来无事,就把之前用自定义Camera实现的简单拍照功能记录一下。 Camera类在5.0以后不推荐使用了,取而代之的是android.hardware.camera2包下的类,本文使用Camera。 我们首先自定义一个View去继承SurfaceView:public class Camer...

2017-03-14 12:50:52

阅读数 2203

评论数 0

原创 Retrofit自定义Converter数据异常处理攻略

开发中客户端时常与服务端打交道,客户端请求参数到服务端,服务端返回响应数据到客户端,开发中用的比较多的就是Json数据传递,从请求到响应的步骤一般是约定数据格式,响应数据进行关系映射,然后对错误数据进行异常处理。数据格式一个比较良好的的响应数据应该具备响应码、数据状态描述、具体的响应数据 { ...

2017-03-07 19:40:06

阅读数 925

评论数 0

原创 算法基础——快速排序

快速排序的基本思想:快速排序是对冒泡排序的一种改进,它的基本思想是:将一组数列分成独立的两部分,其中一部分的数据比另一部分的数据都要小,然后按照这个方法在这两部分中进行排序。 为了理解方便,我们直接上图吧。首先我们需要给一群高矮不同的人排队,如下图: 首先我们需要将这一群人划分为两部分,其中左...

2017-02-15 13:06:34

阅读数 183

评论数 0

原创 算法基础——冒泡排序

冒泡排序的基本思想冒泡排序是一种交换排序,它的基本思想是:相邻的两两元素互相比较,如果是反序则位置交换,直到没有反序为止。举一个比较通俗的例子:小时候我们都经历过高矮个排队,如果在排队的过程中我们使用冒泡排序的话,首先第一个同学会与他右边的同学比较身高,如果比右边高的话则两个人互换顺序,矮的话则保...

2017-02-14 17:15:58

阅读数 260

评论数 0

原创 浅谈Activity的生命周期

浅谈Activity的生命周期Activity作为四大组件之一,是在平时开发中使用最为频繁的一个组件,了解Activity的生命周期有助于我们更好地去优化用户体验。 - Activity的生命周期图 一般情况下,Activity会经历的生命周期: onCreate Activity的创建,...

2016-11-13 11:52:35

阅读数 191

评论数 0

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