自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dai的博客

积累才能成长,事无巨细,记录自己

原创 关于JPEG、PNG、GIF、WEBP图片格式的理解与使用场景

关于常用JPEG、PNG、GIF、WEBP图片格式的理解 前言 在了解这三种图片格式之前,先来了解几个和图片格式相关的概念 有损/无损压缩 图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。 有损压缩 对图像本身的改变,在保存图像时保留了较多的亮...

2019-11-11 15:27:36 765 0

原创 Android 字体部分加粗修改颜色

前言 开发中,经常碰到需求是,某个TextView的文字,部分加粗,部分修改颜色,例如 通常我们可以使用Spannable 通过Java代码实现,但是有没有更省时省力的方法呢?能在string.xml 中定义好,直接引入呢?答案是当然有 Android系统提供了对简单的HTML标签的支持,方便开...

2019-07-17 18:22:18 2276 2

原创 Java进阶——— 线程池的原理分析

前言 在了解线程池之前,其实首先出现的疑问是:为什么要使用线程池,其次是了解什么是线程池,最后是如何使用线程池,带着疑问去学习。 为什么要使用 前面多线程文章中,需要使用线程就开启一个新线程,简单方便,但是这样在大量线程被开启时:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束...

2019-01-21 10:06:12 148 0

原创 Java进阶 ——— Java多线程(四)之多线程局部变量TreadLocal

在了解ThreadLocal之前,一定要确定一个概念:ThreadLocal不是用来解决共享对象的多线程访问问题的 那么ThreadLocal在多线程的作用是什么呢?从下面几个方面来了解 ThreadLocal的作用 ThreadLocal可以理解为:线程局部变量, 是每一个线程所单独持有的。其他...

2018-12-30 17:37:32 202 0

原创 Java进阶 ——— Java多线程(三)之多线程同步问题

引言 接上一篇,Java进阶 ——— Java多线程(二)之如何开启多线程 介绍了Java多线程的开启方法,但是多线程运行的安全问题,将是本篇的重点 延伸阅读,Java多线程系列文章 Java进阶 ——— Java多线程(一)之进程和线程 Java进阶 ——— Java多线程(二)之如何开启多线...

2018-10-18 23:07:51 785 6

原创 Java进阶 ——— Java多线程(二)之如何开启多线程

引言 第一篇文章讲到了Java多线程的概念和作用,本篇文章则介绍在Java中如何开启多线程。 延伸阅读,Java多线程系列文章 Java进阶 ——— Java多线程(一)之进程和线程 开启方式 Java开启多线程有三种方式 继承Thread类 实现Runnable接口 java.util.co...

2018-10-18 00:39:19 458 0

原创 Android进阶 —— 深入理解AIDL进程间通信

Android 深入理解AIDL进程间通信 前言 关于AIDL的资料,层出不穷,但是能让人简单明了理解的文章不多,那么我们就自己撸一遍,清晰明了的理解一下AIDL的原理。 准备 在理解AIDL原理之前,先写一个简单的使用AIDL进行进程间通信的例子,根据这个例子来由浅及深的理解AI...

2018-05-11 20:17:48 418 0

转载 Java进阶知识 —— 快速排序算法分析

本篇文章将摘自前辈的总结 白话经典算法系列之六 快速排序 快速搞定 这篇文章深入简出,很好理解,所以本文思路不再重写,只是代码部分略有修改,改为自己理解的注释版本 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想—-分治法也确实实用,因...

2018-05-08 21:11:27 177 0

原创 Java进阶知识 —— TCP四次挥手(图解)-为何要四次挥手

当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。那对于TCP的断开连接,这里就有了神秘的“四次挥手”。 第一次挥手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发...

2018-05-04 11:46:43 272 0

原创 简单明了的分析Android触摸事件,看完再也不纠结了

关于Android触摸事件机制 Android触摸事件机制,开发中都是老生常谈,但是惭愧的是,这么久开发,依然对Android触摸事件的具体流程,懵懵懂懂,趁着项目上线间隙,来重新研究一下。 准备 为了尽可能简单并清晰的展示Android触摸事件的 分发--拦截--消费过程,将根据Activity...

2017-08-15 19:00:44 1198 0

原创 Androidstudio高效管理第三方API的KEY及Gradle版本管理

延伸AndroidStudio 利用Gradle打包添加上版本名和版本号 第三方API的KEY的管理 Android开发,基本都会用到第三方SDK,例如百度地图、支付宝支付等。 通常第三方的KEY都是保存在AndroidManifest中: <!-- 百...

2017-06-25 21:57:17 1457 2

原创 ActionBar setDisplayOptions 使用详解

Android ActionBar setDisplayOptions 使用详解 先来看看官方文档的说明 setDisplayOptions setDisplayOptions ...

2019-11-21 17:51:21 145 0

转载 Android menu属性详解

转自:http://blog.csdn.net/n3562141/article/details/50325717 menu的属性展示 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:a...

2019-04-23 12:43:49 340 0

原创 LocalBroadcastManager 注意事项

LocalBroadcastManager 只能用来在应用内发送和接收广播,不可用接收系统广播通知 前言 关于LocalBroadcastManager的使用,就不再详述,简单来说,有以下几个好处 因广播数据在本应用范围内传播,你不用担心隐私数据泄露的问题。 不用担心别的应用伪造广播,造成...

2019-04-20 18:34:31 310 0

原创 Java进阶 ——— Java多线程(一)之进程和线程

引言 讲到线程,不可避免的提到进程。而因为线程无法脱离进程单独存在,那什么是进程? 什么是进程? 进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的最小单位。 例如手机运行的众多APP,每个可以理解为一个进程(实际上很多APP运行多个进程),每个APP直接...

2018-10-17 20:59:19 255 0

原创 Java进阶——Java 局部内部类访问局部变量为什么必须加final关键字

Java 局部内部类访问局部变量为什么必须加final关键字 疑问 在Java中,局部内部类如果调用了方法中的变量,那么该变量必须申明为final类型,如果不申明,则编译就会出错。 这里的内部类指的是方法内部类或匿名内部类,不包含静态内部类和成员内部类 这里通过一个例子类分析 public c...

2018-10-16 20:33:50 1383 0

原创 Java进阶——如何查看Java字节码

前言 深入学习Java语言,也免不了要去研究JVM类加载、JVM字节码相关的东西,这时就需要经常查看字节码。 方法 1.使用命令行 在编译后,进入字节码存放的文件夹,例如:FileA\Hello.class 使用命令行窗口 java -c FileA\Hello.class,即可在窗口浏览字节码文...

2018-10-16 18:42:19 1377 0

原创 Java进阶 —— 面试必备 Java单链表反转

前言 关于链表操作,基本面试都会考察,每次都是看了就懂,过后就忘。看了 Java单链表反转文章,分析的很清晰,很好理解。 单链表的结点结构: data域:存储数据元素信息的域称为数据域; next域:存储直接后继位置的域称为指针域,它是存放结点的直接后继的地址(位置)的指针域(链域)。 dat...

2018-10-15 17:06:18 168 0

原创 如何从零开始搭建自己的博客(通俗易懂)

序 作为一名合(zhuang)格(bi)的程序猿,经常写点东西,肯定少不了各种网站、博客,通俗的CSDN,文艺的简书,强大的GitHub,以及微信、掘金、知乎等等风格迥异的平台。不过,再多的地方,也容不下一颗想捯饬的心,不管什么网站,都有自己固定的模板,统一的风格,这怎么能满足程序猿的一颗躁动的心...

2018-10-11 13:40:09 11910 7

原创 Java进阶知识 —— 内部类(InnerClass)静态内部类、成员内部类、方法内部类、匿名内部类

内部类(InnerClass)----静态内部类、成员内部类、方法内部类、匿名内部类 Java进阶知识系列文章: Java进阶知识 —— 算法复杂度o(1), o(n), o(logn), o(nlogn) Java进阶知识 —— 垃圾回收机制 Java进阶知识 —— 快速排序算法分析 Java...

2018-10-09 17:27:57 405 0

原创 Android进阶 ——— Android官方架构组件LiveData

上一篇文章,学习了Android官方架构组件的第一部分Android进阶 ——— Android官方架构组件Lifecycle 初探 LiveData 是一个可以感知 Activity 、Fragment生命周期的数据容器。当 LiveData 所持有的数据改变时,它会通知相应的界面代...

2018-08-23 11:33:05 731 2

原创 Android进阶 ——— Android官方架构组件Lifecycle

初探 Lifecycle是Android官方推出的架构组件,在谷歌开发者官微发布的正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频 简明扼要的阐述了推出的架构组件的作用及使用,也可以查看Android开发者官网。 先来看看架构组件的第一部分Lifecycle。 在长...

2018-08-21 10:15:24 297 0

原创 Java进阶知识 —— 算法复杂度o(1), o(n), o(logn), o(nlogn)

摘自 https://blog.csdn.net/Mars93/article/details/75194138 在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂...

2018-08-13 15:46:11 5199 0

原创 Java进阶知识 —— 垃圾回收机制

1. 垃圾回收机制 垃圾回收的意义 当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾,JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是”无用信息”,这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上...

2018-07-24 12:03:37 160 0

原创 Android进阶 --- Android虚拟机 JVM DVM ART 详解

JVM DVM ART Android系统使用Dalvik Virtual Machine (DVM)作为其虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完...

2018-07-24 11:59:46 487 0

原创 Python 网络框架UrlLib 请求网络的三种方式

最近在看Python内容,在慕课网学习中,学习三种请求方法,先记录下来,上代码 Python版本:Python 3.6 IDE:pycharm from urllib import request import http.cookiejar url = 'https://ww...

2018-07-05 10:46:43 459 0

原创 微信小程序开发--记第一个小程序

近期在做小程序开发,自己利用业余时间,做了个生活类小程序 目前功能较简单,后期增加更多功能 1.天气 2.保存纯色壁纸 3.舒缓音乐 4.新闻 TODO: 1.新闻优化 2.拼接长图 3.各种美图 4.抓取各种休闲文章,例如轻松一刻,知乎日报等...

2018-06-21 11:08:05 688 2

转载 Java进阶知识 —— 使用BigDecimal类处理高精度计算

日常开发中,普通数据处理,精度不超过10位有效数字。但是遇到一些对精度要求极高的情况下,就需要对精度进行更精细处理。需要用到BigDecimal Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16...

2018-05-11 11:52:53 145 0

转载 Android 进阶 ———— Handler系列之创建子线程Handler

上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handle都是在ui线程进行的。这种情况属于子线程给主线程发消息,通知主线程更新ui…等,那么反过来,怎么...

2018-05-11 10:31:10 1056 0

原创 Android进阶 —— Android 单元测试入门

什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以测试一个类,或者一个类中的一个方法。 为什么要进行单元测试? 为什么要进行单元测试?说白了就是单元测试有什么好处,其实测试的好处无非就是减少bug、提高代码质量、使代码易于维护...

2018-05-10 11:59:57 218 0

原创 Java进阶知识 —— final、finally、finalize区别

final、finally、finalize区别 Final Final用于修饰类、成员变量和成员方法。final修饰的类,不能被继承(String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写,所以不能同时用abstract和fin...

2018-05-09 18:27:41 134 0

原创 Java进阶知识 —— 算法时间复杂度

算法时间复杂度 前言 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的...

2018-05-04 10:21:34 1738 0

原创 Java进阶知识 —— Http知识总结

HTTP概述 Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信。HTTP是现代全球因特网中使用的公共语言。 HTTP-因特网的多媒体信使 每天都有数亿JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、java小程序和其他资源在因特网游弋。HTTP可...

2018-05-03 21:05:45 323 0

原创 Java进阶知识 —— Java设计模式之代理模式

代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。 代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的...

2018-05-03 12:19:35 115 0

原创 AndroidStudio 编译报错 DexArchiveBuilderException

在编译项目时,AndroidStudio报出错误: Error:com.android.builder.dexing.DexArchiveBuilderException: Failed to process 这个错误此前从未遇到,原以为是分包问题,添加了分包之后依然没法解决。 查找一番...

2018-04-03 12:30:23 12816 2

原创 Kotlin 学习笔记(九)—— Kotlin类与对象之可见性修饰符

Kotlin 学习笔记(九)—— Kotlin类与对象之可见性修饰符 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)—— 概述、学习曲线、开发工具、参考资料 Kotlin 学习笔记(二)—— 基础语法 Kotlin 学习笔记(三)—— 习惯用法 K...

2018-03-22 15:23:34 3767 0

翻译 Flutter初体验(二)—— 创建第一个Flutter APP

Flutter初体验(二)— 创建第一个Flutter APP 在第一篇文章 Flutter初体验(一)—Mac 安装配置,学习了配置 Flutter 开发环境,并运行了Demo项目,本篇根据官方教程,学习创建自己的第一个Flutter APP。 参考文档 https://flutte...

2018-03-21 20:24:23 2017 0

原创 iOS开发 UIButton 文字换行 并且修改部分文字大小

需求项目上,UI给出了下图,需要修改部分文字大小,并且换行 实现1、 文字换行 在storyboard/Xib中修改 Line Break 为 Word Wrap,在要换行文字前,使用Optional+回车换行 代码中:(网上查找到的方法,测试未成功) 设置Btn.titleLabel.lin...

2018-03-20 15:34:11 3238 0

原创 Java进阶知识 —— Java注解知识梳理

什么是注解? 注解是一种元数据,具有描述作用,一种代码级别的说明,它是JDK 1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 注解的作用 1、标记作用,提供信息让编译器能够实现...

2018-03-18 21:27:21 147 0

翻译 Flutter初体验(一)——Mac 安装配置

Mac 安装配置 Flutter 参考文档: https://flutter.io/setup-macos/ http://blog.csdn.net/zhangxiangliang2/article/details/75566412 1. 获取 F...

2018-03-12 14:28:46 9548 2

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