11 大雀儿飞飞

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

从extends和super浅谈java泛型

从extends和super浅谈java泛型泛型是从jdk 1.5之后引入的,对于开发者而言,使用泛型能够写出更加自然的代码,对于编写一些通用的类尤为有用。想象一下,如果没有泛型的支持,我们在要实现一个Integer类型的链表时,不能直接复用系统的List泛型类的各种子类,而必须自己继承List实现一个专门存储Integer类型元素的链表,特别麻烦不说,当这种链表数量多了,我们代码中会有很多这种类型

2017-05-23 16:29:21

Webpack打包font-awesome

使用webpack构建font-awesome或者bootstrap的时候,最常见的一个问题就是构建字体文件的问题。经常会出现无法找到字体文件的问题。下面就讲一下如何正确构建引入字体文件:1. 首先安装依赖: npm install style-loader css-loader file-loader font-awesome-webpack --save-dev2. 在入口文件中引入f

2017-05-13 16:35:33

Mac下IDEA出现cannot find any declarations解决方法

关联本地的JDK首先需要本机安装jdk,注意osx自带的jdk是没有源码的,最好重新安装一下。关联jdk的方法如下:选择工程,然后File->Project Structure。然后在Project中确保Project SDK存在,如果不存在,点击New,选择本机的一个jdk的路径。如图: 然后在Project Structure中的SDKs中看有没有存在的SDK,一般做了第一步,就存在一个SDK

2017-05-04 10:23:08

Glide源码分析(六)——从DecodeJob相关实现看图片加载流程

DecodeJob是集数据加载、解析和回调通知于一体的包装内,它在内部根据配置的不同情况将相关的工作委托给不同的类来实现,是Glide内实现数据加载功能的中枢。首先来看其中会用到的几个比较重要的类。LocalPath和DecodePathDecodePath内部保存有两个主要的成员,一个是由ResourceDecoder组成的解码器集合,用来从指定的数据源中解码数据;另一个是ResourceTran

2017-03-23 19:19:06

Glide源码分析(五)——ModelLoader机制

ModelLoaderRegistryModelLoaderFactory和MultiModelLoaderFactoryModelLoaderFactory是一个工厂类接口,实现类使用它的接口来对外构建不同了类型的modelLoader,它的实现类一般是不同类型的ModelLoader的内部类,例如ByteArrayLoader内部就实现了两个ModelLoaderFactory,分别生成能够将b

2017-03-23 19:17:29

Glide源码分析(四)——Registry机制

Registry是Glide内部实现的模块挂接中心,它建立了功能需求和实现模块之间的映射关系,使这些模块能够根据需求进行灵活的挂载,模块和模块之间又相互独立互不影响,很好地实现了系统功能的解耦。 在Registry内部,提供了对如下几种类型模块的挂载支持:/** * 数据加载模块 */private final ModelLoaderRegistry modelLoaderRegistry;

2017-03-23 19:16:00

Glide源码分析(三)——图片缓存相关实现

LruBitmapPoolGlide实现bitmap缓存的实现类。其缓存功能实现的核心依赖于两个类:SizeConfigStrategy和AttributeStrategy,在API 19之前,使用AttributeStrategy,之后使用SizeConfigStrategy。两种strategy在缓存的功能实现上是一致的,SizeConfigStrategy只是在获取缓存的时候,不严格要求缓存中

2017-03-23 19:14:01

Glide源码分析(二)——磁盘缓存实现

Glide中默认磁盘缓存实现的入口为DiskLruCacheFactory,DiskLruCacheFactory提供了几个接收不同参数的构造函数,以允许指定缓存文件的位置和磁盘缓存的大小。其中比较有意思的是,在构造函数中DiskLruCacheFactory并没有立即构建缓存的File,而是在build函数执行的时候才开始构建缓存File,这算是懒加载的一种吧,即在真正需要使用到缓存的时候才去申请

2017-03-23 19:06:55

Glide源码分析(一)——DiskLruCache磁盘缓存的实现

Glide源码分析(一)——DiskLruCache磁盘缓存的实现Glide磁盘的实现主要是通过DiskLruCache来实现的。DiskLruCache并非针对Glide编写的,而是一个通用的磁盘缓存实现,虽然并非Google官方的代码,但是已经在很多应用中得到了引入使用。journal日志DiskLruCache通过日志来辅助保证磁盘缓存的有效性。在应用程序运行阶段,可以通过内存数据来保证缓存的

2017-03-23 19:02:13

Ubuntu下修改键盘映射

由于公司的电脑是MAC,而我自己家里面的电脑是Ubuntu,在开发环境中,各种快捷键经常离不开ctrl和alt键,但是mac和其他电脑键盘这两个键的位置正好相反,因此在家和在公司来回切换键盘的使用习惯是相当痛苦的事情。

2016-08-29 00:13:47

Linux下解决no jdk found问题

Linux下解决no jdk found问题最近准备在Ubuntu下面搭建Android开发环境,将官方下载的内容解压后,为了能够在dash中方便地搜索,因此又在/usr/share/applications目录下面创建了Android Studio的快捷方式。但是遇到一个奇葩的问题就是:直接在shell中执行studio.sh,能够启动Android Studio。但是通过快捷方式点击打开后提

2016-06-15 23:02:01

android FlatBuffers剖析

android FlatBuffers简介概述FlatBuffers是google最新针对游戏开发退出的高性能的跨平台序列化工具,目前已经支持C++, C#, Go, Java, JavaScript, PHP, and Python (C和Ruby正在支持中),相对于json和Protocol Buffers,FlatBuffers在序列化和反序列化方面表现更为优异,而且需要的资源更少,更适合大部

2016-03-13 21:04:05

Java枚举单例

注意enum不是Enum,有Java基础的同学们应该都不会把二者混淆了。简单来说,enmu只是jdk1.5引入的语法糖,它不是java中的新增类型,编译器在编译阶段会自动将它转换成一个继承于Enum的子类,例如如下的代码:public enum GenderEnum { MALE, FEMALE}编译成class文件后,通过javap GenderEnum.class得到的简单的

2016-02-28 17:23:47

在MAC OS下面编译flatBuffers的flatc文件

最近在研究google的flatbuffers,因此涉及到使用flatc来讲IDL描述的数据结构编译成flatbuffers能够使用的fbs结构的文件。由于是在MAC OS下面,因此最初尝试使用XCode来编译,但是这个玩意儿特别大,足足有4G+,而且苹果也特别操蛋,在中国没有服务器,因此下载不仅特别慢而且还很容易失败,因此果断放弃而采用cmake来进行编译。

2016-02-20 22:04:07

利用MAT进行内存泄露分析

前言 对于程序员来说码代码容易,保证代码的稳定性很难。有时候写完一个功能可能只需要一天时间,但是这个功能隐藏的bug导致的线上问题排查可能需要一周或者更长时间。因此,拥有良好的代码结构和编码规范是一个程序员应该长期坚持并为之奋斗的一个目标。但是,百密也难免一疏,没有百分之百没有问题的代码,在产品上线前,我们需要对自己的代码进行充分的自测,发现问题解决问题,保证自己产品的稳定性并减少对用户的

2015-12-13 23:31:40

Android ANR分析

前言 ANR即Application Not Responding,顾名思义就是应用程序无响应。在Android中,一般情况下,四大组件均是工作在主线程中的,Android中的Activity Manager和Window Manager会随时监控应用程序的响应情况,如果因为一些耗时操作(网络请求或者IO操作)造成主线程阻塞一定时间(例如造成5s内不能响应用户事件或者BroadcastRe

2015-11-28 21:42:48

android content provider java.lang.SecurityException: Permission Denial异常解决

一般情况下,出现这个异常都是因为调用者没有在manifest中声明content provider说需要的read或者write权限导致的。例如,content provider的声明为(注意exported属性为true其他程序才能获取到provider的数据):<provider android:name="com.xxx.xxx.Provider" andro

2015-11-05 13:17:33

使用Android Studio进行本地单元测试(Local Unit Tests)

使用Android Studio进行本地单元测试(Local Unit Tests)由于目前Google已经停止了对Eclipse ADT插件的更新,因此迫使Android的开发者迁移到Android Studio中。Android Studio基于JetBrains IntelliJ IDEA,后者号称世界上最聪明最好用的Java开发IDE。虽然Android Studio提供了很多选项可以为Ec

2015-09-19 22:20:04

Android 视差滚动控件

今天看到一个视差滚动控件,觉得挺好的,于是自己动手写了一个。

2014-09-25 21:18:30

ubuntu12.10下下载android源码

最近折腾了一阵android源码下载的问题,在网上找了一些教程照着做,出现了各种问题,归根结底就是因为一些网址被墙了,但是很多教程又没有更新,所以出现了下载中出现的各种问题。强烈建议去http://source.android.com/source/downloading.html#initializing-a-repo-client参考google给出的教程,我最后就是照着这个做下载成功

2013-11-02 17:46:30

查看更多

勋章 我的勋章
    暂无奖章