自定义博客皮肤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的博客

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

  • 博客(121)
  • 资源 (4)
  • 收藏
  • 关注

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

关于常用JPEG、PNG、GIF、WEBP图片格式的理解前言在了解这三种图片格式之前,先来了解几个和图片格式相关的概念有损/无损压缩图片文件格式有可能会对图片的文件大小进行不同程度的压缩,图片的压缩分为有损压缩和无损压缩两种。有损压缩对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了...

2019-11-11 15:27:36 5825

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

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

2019-07-17 18:22:18 5397 3

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

前言在了解线程池之前,其实首先出现的疑问是:为什么要使用线程池,其次是了解什么是线程池,最后是如何使用线程池,带着疑问去学习。为什么要使用前面多线程文章中,需要使用线程就开启一个新线程,简单方便,但是这样在大量线程被开启时:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么我们可不可以开启...

2019-01-21 10:06:12 314

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

在了解ThreadLocal之前,一定要确定一个概念:ThreadLocal不是用来解决共享对象的多线程访问问题的那么ThreadLocal在多线程的作用是什么呢?从下面几个方面来了解ThreadLocal的作用ThreadLocal可以理解为:线程局部变量, 是每一个线程所单独持有的。其他线程不能对其进行访问, 通常是类中的 private static 字段,是对该字段初始值的一个拷贝,...

2018-12-30 17:37:32 613

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

引言接上一篇,Java进阶 ——— Java多线程(二)之如何开启多线程介绍了Java多线程的开启方法,但是多线程运行的安全问题,将是本篇的重点延伸阅读,Java多线程系列文章Java进阶 ——— Java多线程(一)之进程和线程Java进阶 ——— Java多线程(二)之如何开启多线程在第一篇文章中,提到要实现多线程安全,就要实现线程同步,那么线程同步有哪些方法呢?介绍线程同步...

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

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

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

2018-10-18 00:39:19 1244

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

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

2018-05-11 20:17:48 645

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

本篇文章将摘自前辈的总结白话经典算法系列之六 快速排序 快速搞定 这篇文章深入简出,很好理解,所以本文思路不再重写,只是代码部分略有修改,改为自己理解的注释版本快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想—-分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考...

2018-05-08 21:11:27 349

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

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

2018-05-04 11:46:43 461

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

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

2017-08-15 19:00:44 1453

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

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

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

原创 ActionBar setDisplayOptions 使用详解

Android ActionBar setDisplayOptions 使用详解先来看看官方文档的说明setDisplayOptionssetDisplayOptions Added in API level 11ActionBar 提供了下面几种模式,来设...

2019-11-21 17:51:21 1646 1

转载 Android menu属性详解

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

2019-04-23 12:43:49 988

原创 LocalBroadcastManager 注意事项

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

2019-04-20 18:34:31 637

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

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

2018-10-17 20:59:19 526

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

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

2018-10-16 20:33:50 1999

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

前言深入学习Java语言,也免不了要去研究JVM类加载、JVM字节码相关的东西,这时就需要经常查看字节码。方法1.使用命令行在编译后,进入字节码存放的文件夹,例如:FileA\Hello.class使用命令行窗口java -c FileA\Hello.class,即可在窗口浏览字节码文件2.外接工具的方式上面的描述编译成Hello.class文件(或者找到ide中相关out文件夹中...

2018-10-16 18:42:19 2121

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

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

2018-10-15 17:06:18 519

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

序作为一名合(zhuang)格(bi)的程序猿,经常写点东西,肯定少不了各种网站、博客,通俗的CSDN,文艺的简书,强大的GitHub,以及微信、掘金、知乎等等风格迥异的平台。不过,再多的地方,也容不下一颗想捯饬的心,不管什么网站,都有自己固定的模板,统一的风格,这怎么能满足程序猿的一颗躁动的心?例如我的个人博客T9’s Developer,欢迎大家访问那就自己动手,利用各种开源工具,自己...

2018-10-11 13:40:09 16881 8

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

内部类(InnerClass)----静态内部类、成员内部类、方法内部类、匿名内部类Java进阶知识系列文章:Java进阶知识 —— 算法复杂度o(1), o(n), o(logn), o(nlogn)Java进阶知识 —— 垃圾回收机制Java进阶知识 —— 快速排序算法分析Java进阶知识 —— 算法时间复杂度1.什么是内部类面向对象程序设计中,可以在一个类的内部定义另一个类...

2018-10-09 17:27:57 943

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

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

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

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

初探Lifecycle是Android官方推出的架构组件,在谷歌开发者官微发布的正式发布 Android 架构组件 1.0 稳定版 | 附带中文介绍视频 简明扼要的阐述了推出的架构组件的作用及使用,也可以查看Android开发者官网。先来看看架构组件的第一部分Lifecycle。 在长篇大论之前,先要了解它的作用,为什么谷歌要推出Lifecycle?就是为了解决常见架构模式中,声明...

2018-08-21 10:15:24 495

原创 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)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O后面的括号中有一个函数,指明某个算法的...

2018-08-13 15:46:11 6003

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

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

2018-07-24 12:03:37 553

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

JVM DVM ARTAndroid系统使用Dalvik Virtual Machine (DVM)作为其虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完整的指令系统。Android之所以不直接使用JVM作为其虚拟机的原因有很多,版权问题我们暂且搁置一...

2018-07-24 11:59:46 1093 1

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

最近在看Python内容,在慕课网学习中,学习三种请求方法,先记录下来,上代码Python版本:Python 3.6 IDE:pycharmfrom urllib import requestimport http.cookiejarurl = 'https://www.douban.com/'print ('第一种方法')with request.urlopen(ur...

2018-07-05 10:46:43 752

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

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

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

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

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

2018-05-11 11:52:53 321

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

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

2018-05-11 10:31:10 2114

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

什么是单元测试?单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。比如我们可以测试一个类,或者一个类中的一个方法。为什么要进行单元测试?为什么要进行单元测试?说白了就是单元测试有什么好处,其实测试的好处无非就是减少bug、提高代码质量、使代码易于维护等。这样表达可能不太好理解,举个例子比如我们APP启动,从初始化到启动页,再进入首页,需要很长...

2018-05-10 11:59:57 467

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

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

2018-05-09 18:27:41 276

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

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

2018-05-04 10:21:34 3203

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

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

2018-05-03 21:05:45 645

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

代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:由程序员创...

2018-05-03 12:19:35 397

原创 AndroidStudio 编译报错 DexArchiveBuilderException

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

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

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

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

2018-03-22 15:23:34 3976

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

Flutter初体验(二)— 创建第一个Flutter APP在第一篇文章 Flutter初体验(一)—Mac 安装配置,学习了配置 Flutter 开发环境,并运行了Demo项目,本篇根据官方教程,学习创建自己的第一个Flutter APP。 参考文档 https://flutter.io/get-started/codelab/项目需求您将实施一个简单的移动应用程序...

2018-03-21 20:24:23 2351

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

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

2018-03-20 15:34:11 4707

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

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

2018-03-18 21:27:21 865

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

Mac 安装配置 Flutter参考文档: https://flutter.io/setup-macos/ http://blog.csdn.net/zhangxiangliang2/article/details/755664121. 获取 Flutter SDK#### clone Flutter 1、使用git将Flutter项目克...

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

黑域,adb 命令

Android 用户必备良药「黑域(黑阈)」,专治「全家桶」唤醒

2018-10-11

关于Android触摸事件机制

关于Android触摸事件机制 关于Android触摸事件机制 关于Android触摸事件机制

2018-02-08

一个可折叠的的Material Design风格FloatingActionButton

Material Desig

2017-05-05

一个自由定制的Material Design风格FloatingActionButton

是一个可折叠菜单式的FloatingActionButton

2017-05-05

空空如也

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

TA关注的人

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