自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 kotlin Control Flow

kotlin流程控制语句,官网:https://kotlinlang.org/docs/reference/control-flow.html Control Flow: if, when, for, while kotlin中的流程语句主要有四个 if when for while,现在一个...

2019-12-30 00:03:09

阅读数 6

评论数 0

原创 android Auto animate layout updates

准备花一段时间把Android官方文档翻译下, 系统的学习下,今天学习layout布局文件自动添加动画 https://developer.android.google.cn/training/animation/layout 先来个官网介绍 Android offers pre-loade...

2019-12-26 00:26:39

阅读数 44

评论数 0

原创 Kotlin入门简介

Kotlin是一门可以运行在Java虚拟机,浏览器,Android上的静态语言,与Java100%兼容,所以Kotlin可以做后台 前端 android,这是要全栈的节凑, 学习Kotlin最好的资料:https://kotlinlang.org/docs/reference/basic-syn...

2019-09-04 21:50:19

阅读数 59

评论数 0

原创 android组件化 APT高级用法javaPoet

什么是JavaPoet,就是APT+javaPoet =超级利刃 javaPoet是square公司推出的开源代码生成框架,提供api生成.java 源文件,这个框架功能非常实用,也是我们习惯的面向对象oop思想 可以很方便的使用它根据注解生成代码 通过这种自动化生成代码的方式 可以让我们更加简...

2019-09-03 00:30:08

阅读数 1496

评论数 0

原创 Android组件化APT使用与介绍

针对上篇讲的module之间的跳转问题, 这就出现了路由的概念了,应该上路由去帮助我们去做那些事 APT(Annatotion Processing Tool) 是一种处理注解的工具,它对源代码文件进行检测找出其中的注解(Annotation) 根据注解自动生成代码,如果想要自定义的注解处理器...

2019-09-03 00:29:26

阅读数 81

评论数 0

原创 android组件化项目部署

组件化的好处 分模块打包 测试 统一版本管理 组件化可以不互相依赖,但可以互相交互,任意组合,高度结偶 phone module:新建出可以独立运行的模块 apply plugin: 'com.android.application' 它是有 applicati...

2019-09-03 00:27:20

阅读数 1296

评论数 0

原创 android 组件化gradle语法

Android项目中都有build.gradle文件,其实这是gradle构建工具,gradle是由Groovy语言开发的,之前只是把简单的语法学习了下,由于要找工作 没时间学习了,如果能找到工作 上班后再学习,也有可能这辈子就离开it了, Gradle核心是基于Groovy脚本语言的,Groo...

2019-09-03 00:25:33

阅读数 1641

评论数 0

原创 android. 长图加载

长图加载要用到一个关键的类BitmapRegionDecoder,长图加载会使用到bitmap内存复用, 比如view大小是440*654,图片的宽高是440*12000,那么这个时候就要获取图片的宽和高, 跟view的宽和高进行对比,获取到一个缩小比例,那么会得到宽一个比例,高一个比例,用大的比...

2019-08-25 21:01:40

阅读数 2431

评论数 0

原创 android. 使用stetho调试数据库

facebook的stetho,调试网络或者查看数据库或其他真实很方便,而且引入这个库也很简单 第一步: implementation 'com.facebook.stetho:stetho:1.5.0' 最新版是1.5.1 第二步: 初始化在application...

2019-08-19 13:31:06

阅读数 59

评论数 0

原创 java基础面试题 String,Stringbuffer,Stringbuilder三者的区别

1 String String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的 查看它的源码 public String() { this.value = "".value; } 变量value ...

2019-07-24 07:25:16

阅读数 177

评论数 0

原创 java 享元设计模式

定义:提供了减少对象数量从而改善应用所需的对象结构的方式 java String类就是使用了享元设计模式 还有数据库连接池等 缺点 关注内部或者外部结构,关于线程安全的问题 使系统 逻辑结构复杂化 内部状态 不随外界变化而变化的 外部状态 会随外界变化而发生变化的 比如计算公...

2019-07-24 05:03:02

阅读数 35

评论数 0

原创 java 组合设计模式

定义:将对象组合成树结构以表示 部分-整体 的层次结构 组合模式使客户端对单个对象和组合对象保持一致的处理方式 在android中View和View和ViewGroup就是使用了组合模式 下面就看看View和ViewGroup的架构 View是没有addView()添加子view的操作...

2019-07-24 05:02:53

阅读数 42

评论数 0

原创 android tint使用

tint主要是针对图片进行变色,比如有一个条目点击后 右边的小三角行图片变色,获取很常用就是筛选点击后图片变色,使用tint减少了设计师的压力,还有就是我们也少使用图片 这样就减少了apk的大小 <?xml version="1.0" encoding="u...

2019-07-19 21:53:13

阅读数 319

评论数 0

原创 android 谈谈invalidate和postInvalidate方法的区别

看这二个方法的区别只有深入到代码中去看了,首先看invalidate()方法 invalidate()分析 public void invalidate() { invalidate(true); } 然后到 void invalidateInternal(...

2019-07-16 07:10:57

阅读数 49

评论数 0

原创 android 面试题 谈谈主线程一直循环 为什么不会出现阻塞或者ANR异常

在ActivityThread类中的main方法有段代码: ActivityThread thread = new ActivityThread(); thread.attach(false, startSeq); if (sMainThreadHandle...

2019-07-16 05:52:14

阅读数 410

评论数 0

原创 android 面试题 Parcelable与Serializable区别

一、序列化与反序列化 由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化字节序列的过程。相反地,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序列化,即把字节序...

2019-07-16 05:32:22

阅读数 82

评论数 0

原创 性能优化之 线程优化

线程调度原理 在任意时刻,只有一个线程占用cpu,处于运行状态,在多线程并发的情况下,轮流使用CPU的使用权,但是现在是多核的时代, 比如现在很多电脑或者手机是8核的,意思是有8个cpu,让这8个cpu去执行任务,如果是执行任务很多的情况下,cpu是轮流的方式去执行任务的,而这个CPU去执行任务...

2019-07-16 04:25:26

阅读数 363

评论数 0

原创 android 面试题谈谈transient关键字

我们知道在Java中只要实现了Serializable接口,这个都可以被序列化,在Android中进行序列化还有一种方式, 就是Parcelable, 而且比Java提供的序列话方式性能更高,但是在实际的开发中我们有些类虽然实现了Serializable接口,但是里面的有些属性不想进行序列化,这...

2019-07-16 03:02:36

阅读数 94

评论数 0

原创 android 面试题 谈谈深拷贝和浅拷贝

对称拷贝就是将一个对象的属性拷贝到另一个类有着相同类类型的对象中 浅拷贝 浅拷贝就是按位拷贝对象,它会创建一个新的对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址值,因此如果其中一个对象改变了这个地址就会影响其他...

2019-07-16 02:38:23

阅读数 50

评论数 0

原创 android 面试题 集合类

java集合类主要由二个根接口派生的,Collection和Map Collection派生的类的结构 List集合主要有ArrayList,Vector LinkedList Stack(栈) Vector:已经废弃了,因为它是线程安全 导致效率变慢, ArrayList:底层是由数...

2019-07-16 00:19:02

阅读数 66

评论数 0

原创 Java 非对称加密介绍

秘钥对:公钥和私钥 非对称:公钥加密私钥解密 私钥加密公钥解密 公钥互换:二个组织或者个人 最典型的非对称加密是RSA,它的加密级别很高,但是加密速度是很慢 ...

2019-07-15 03:34:46

阅读数 32

评论数 0

原创 java DES加密解密

package thread; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec;...

2019-07-13 09:49:17

阅读数 91

评论数 0

原创 android aop(三) AspectJ

AspectJ是面向切面编程的一个框架,它遵循了Jvm的语法并扩展了java语言,我们知道一个类想要运行起来,是先javac命令变成.class(字节码) 再由java命令把该类加载到jvm中,而AspectJ就在javac命令在.java 文件转变成.class文件的时候植入一些代码,这是在编译...

2019-07-12 16:45:14

阅读数 38

评论数 0

原创 android aop( 二)实现方式之动态代理

之前说了aop有四种实现方式,其中最不推荐的就是动态代理实现,因为它浸入代码强,不利于维护,但是也要知道,因为其他实现方式里面的原理也用到了动态代理,只是封装更好 用起来更简单 比如一个app要收藏或者关注必须是用户已经登陆情况,除非是app可以是游客的情况下登陆也能收藏或者关注,这是另话了...

2019-07-12 02:59:27

阅读数 70

评论数 0

原创 java 常见的对称加密算法介绍

DES:Data Encryption Standard的缩写,数据加密标准 AES:Advanced Encryption Standard的缩写,高级加密标准 比DES加密更难以破解, 对称加密特点 1:加密速度快,可以加密大文件 2:对称可逆,秘钥暴露文件就泄密 3:加密后...

2019-07-11 21:07:36

阅读数 100

评论数 0

原创 凯撒加密解密算法

凯撒加密的由古罗马大帝凯撒发明的,用来传递军事命令等信息, 凯撒加密算法 把字母移动一定的位数来实现加密和解密 比如A偏移3位就变成了D,用代码体现 public static void main(String[] args) { char ch = 'A...

2019-07-11 19:05:15

阅读数 696

评论数 0

原创 Java ASCII编码

定义:美国信息交换标准代码,代码用于显示现代英语和其他西欧语言 我们可以使用代码来获取字符的ascii编码 public class ASCIIDemo { public static void main(String[] args) { char ch = &#...

2019-07-11 18:10:20

阅读数 671

评论数 0

原创 数据结构与算法之时间复杂度和空间复杂度(三)

算法是要讲效率的 ,而效率是指算法的执行时间 执行时间短当然是效率高 反之则低 那么如何来衡量算法的时间呢? 1:算法采用的策略 方案 2:编译产生的代码质量 3:问题的输入规模 4:机器执行指令的速度 比如1+2+...+100, 第一种: int n = 100; //执...

2019-07-09 07:04:47

阅读数 27

评论数 0

原创 算法(二)

算法定义:算法是解决特定问题求解的步骤的描述,在计算中表现为指令的有限序列,并且每个指令表现为一个或者多个操作. 算法的5个基本特征 1:输入 算法需要有0个或者多个输入 比如一个方法没有行参 就打印一段话 2:输出 算法至少一个或者多个输出 输出可以是打印结果输出 或者一个方法返回值也算输...

2019-07-09 05:42:04

阅读数 64

评论数 0

原创 数据结构与算法(一)

什么是数据结构:数据结构是一门研究非数值计算程序设计中问题中的操作对象,以及他们之间的关系和操作等相关问题的学科. 通俗的来讲就是研究数据元素之间的关系存在一种或者多种特定关系的集合 传统上把数据结构分为物理结构和逻辑结构 逻辑结构:是指数据对象中数据元素之间的相互关系 体现在时间上 ...

2019-07-09 05:20:35

阅读数 170

评论数 0

原创 Android 面试题 如何计算一张图片在内存中大小

如何计算图片所占内存大小 其实图片所占内存大小和图片本身大小几乎没啥关系, 为什么这么说呢? 我现在把一张图片加载到内存去计算它的宽和高,图片如下: 你看啊 它的大小是72*72,现在我放在不同的目录下看看它的宽和高, drawable 它的宽和高是144*144 drawable...

2019-07-08 02:12:33

阅读数 278

评论数 0

原创 android 谈谈AOP(一)

学Java有个OOP (Object Oriented Programming)即面向对象编程,它不是一门技术,而是思想,而AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 AOP是OOP的延...

2019-07-07 23:38:31

阅读数 83

评论数 0

原创 android面试题 谈谈强 软 弱 虚引用

首先看类的结构图: t 它是在java.lang.ref包下 从上面的单词就知道了Reference是引用的意思,前面的前缀就是所说的软 弱 虚引用,我们通常都是使用强引用, Person person = new Person(); Java默认就是强引用,比如上面的new Peso...

2019-07-07 05:37:48

阅读数 104

评论数 0

原创 android 面试题 谈谈屏幕适配

面试问你屏幕适配,那么你要知道为什么Android要做屏幕适配,因为Android是开源的, 各大厂商不仅可以对软件定制,还可以对硬件定制,这样就造成市场上不同分辨率的手机超多,现在估计得有几万或者几十万种,这就导致android设备的碎片化很严重。所以还是做ios很辛福啊,下面对一些概念弄清楚 ...

2019-07-06 20:25:59

阅读数 644

评论数 0

原创 android 面试题 谈谈Handler

Handler几乎每个人都会用,但是如果面试被问到,相信也不是每个人都能回答出来,特别是大点公司,特别喜欢问原理,或者你工作3年以上,别人不再问你怎么用了,而是问你底层实现原理,不然怎么区分你是高级还是中级 ,不给你定级别,工资不好给啊, Handler作用:主要用于异步消息的处理,那么可能...

2019-07-04 23:51:51

阅读数 58

评论数 0

原创 android 面试题 状态模式

定义:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类 首先从这个名字上看,状态,比如视频播放,它有一些状态,比如 暂停 播放 停止,快速,这些状态是可以切换的, 在普通的人们心中可能会定义几个static变量或者枚举的方式来对状态的切换,但是如果新增的需求 可...

2019-07-04 06:03:07

阅读数 16

评论数 0

原创 android ThreadLocal使用以及作用

如果想看懂Android中Handler源码,那么ThreadLocal类的作用必须要懂,ThreadLocal的出现解决了线程存存储自己的数据不发生异常,而不是解决线程安全问题,看下例子: package thread; public class ThreadLocalTest { ...

2019-07-04 01:35:45

阅读数 51

评论数 0

原创 android 面试题 说说创建线程的几种方式

在Java中一般创建线程有四种方式: 第一种:继承Thread,这种创建线程的缺点就是因为Java是单继承,假如是四个线程共享一分资源的话,这种方式就不使用了 第二种:实现Runnable接口,一般都是使用第二种,因为Java机制是多实现单继承, 第三种Callable 使用这种方式创建线程...

2019-07-02 20:03:38

阅读数 50

评论数 0

原创 android 面试题 ArrayList是线程不安全的,请写出例子并给出解决方案

我们知道List集合不安全的是因为add()方法没有使用synchronized,我们知道jdk很早有个Vector类,看看它的add() public synchronized boolean add(E e) { modCount++; ensureCapa...

2019-07-02 03:21:59

阅读数 317

评论数 0

原创 android 面试题 CAS

首先弄清楚什么是cas: 在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新的给定值。 这是作为单个原子操作完成的。 原子性保证新值基于最新信息计算; 如果该值在同一...

2019-07-02 02:37:18

阅读数 32

评论数 0

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