自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(551)
  • 资源 (3)
  • 收藏
  • 关注

原创 android jetpack之LifeCycle

jetpack是一整套google为开发者提供的开发库,里面包含很多组件,今天学习下LifeCycleLifeCycle是可以感知生命周期型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护有了LifeCycle像有些内存泄露问题就可以解决了,比如屏幕旋转后数据会有异常,使用了LifeCycle就不会有问题了,现在来看看它的使用定义一个类实现LifecycleObserver

2020-09-09 23:07:14 341

原创 Java 类的主动使用和被动使用

Java程序对类的使用方式分为:主动使用和被动使用主动使用,又分为七种情况:1:创建类的实例2:访问某个类或者接口的静态变量,或者对该静态变量赋值3:反射( 比如:Class.forName(“java.lang.String)))4:初始化一个类的子类5:java虚拟机启动时被标明为启动类的类6:java 7开始提供的动态语言支持除了以上七种情况,其他使用Java类的方式都被看作是对类的被动使用都不会导致类的初始化...

2020-06-29 16:38:32 518

原创 JVM 加载.class文件的方式

加载.class文件方式1:从本地系统中直接加入2:通过网络获取,典型的是web applet3:从zip压缩包读取,成为日后jar ,war格式的基础4:运行时计算生成,使用最多的是动态代理技术5:由其他文件生成,典型是jsp应用6:从专有数据库中读取,比较少见7:从加密文件中读取,典型的是防class文件被反编译保护措施...

2020-06-29 10:14:55 456

原创 jvm的分类

2020太难了,我前ios同事失业2个多月还没找到工作,面试机会都很少,所以一定要沉淀下技术,jvm其实离我们做Android的很远,但是又很近,因为像热修复或者Java垃圾回收机制,都会用到,但是相对来说Java后台的人是比学的,但是把自己的知识体系扩展点也挺好,Java从1995到今天已有25年历史了,一门语言25年已经发展很好了,现在jdk版本是13还是14了,但是开发中还是使用jdk8,因为它稳定jvm虚拟机也经历了很多,肯定是越来越好,指的是性能方面,学习下jvm的发展历程也挺有意思,

2020-06-28 20:26:35 421

原创 面试题:创建线程有几种方式

网上有说3或者4种,他们说的4种或者3种是把什么线程池也放进去了,今天我们就来看下oracle官网的描述,Athreadis a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.Every thread has a priority. Threads with hig..

2020-06-11 11:08:31 497

原创 剑指offer: 输入n,求斐波那契数列的第n项值

首先要知道什么是斐波那契数列,比如1,1,2,3,5,8,13,21,34...比如输入n=3,那么求出的值就是2,所以题目就是,输入n,求斐波那契数列的第n项值分析斐波那契就是当前的是它之前-1的数+它之前-2的数的和, 使用一个表达式就是f(n)=f(n-1)+f(n-2),所以第一种求解方案可以使用递归的方式,但是这方式不推荐使用,性能不好,也就是说空间复杂度比较高递归求解package com.yaqi;public class FindValue { publi.

2020-06-02 22:56:49 2063

原创 面试题:数组和链表的区别

数组:是将元素在内存中是连续存储的;它的优点:因为数据是连续存储的,内存地址连续,所以在查找数据的时候效率比较高;它的缺点:在存储之前,我们需要申请一块连续的内存空间,并且在编译的时候就必须确定好它的空间的大小。在运行的时候空间的大小是无法随着你的需要进行增加和减少而改变的,当数据量比较大的时候,有可能会出现越界的情况,数据比较小的时候,又有可能会浪费掉内存空间。在改变数据个数时,增加、插入、删除数据效率比较低。链表:是动态申请内存空间,不需要像数组需要提前申请好内存的大小,链表只需在用的.

2020-06-02 11:34:38 2018

原创 剑指offer:用二个栈实现队列

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能首先分析栈的特点和队列的特点,才能把这个题做出来,这个题相对来说还是算简单的,栈的特点:先进后出对列的特点:先进先出一个栈负责添加数据,然后把这添加的数据放到另一个栈中,就实现了队列的效果,比如在一个栈中添加数据 1,2,3 然后再弹出栈后把数据添加到另一个栈中,那么这个栈中的数据就是3,2,1 然后再从这个栈中取出数据,比如1是.

2020-06-02 10:39:30 192

原创 Java面试题:判断一个数是不是2的几次幂

第一种思路就是拿2*2*2...*2是否等于某个值,这样也可以判断 public static boolean isPowerOfTwo(int n) { if(n<=0){ return false; } int temp = 1; while (temp<=n){ if(temp==n){ return true; }

2020-05-26 21:11:17 592

原创 一道字符串面试题

题目:输入“aaaaabbbbccc”,输出“a5b4c3”我所想到的是用map去实现,key存字符,value存出现的次数,代码如下: public static void main(String[] args) { String str = "aaaaabbbbccc"; Map<Character, Integer> map = new HashMap<>(); for(int i=0;i<str.lengt

2020-05-26 15:40:49 279

原创 java 二个值交换的几种方式

比如:a=4,b=5,在不引用第三个变量时实现两者值交换这个面试题可能会到问到,在牛客网上就遇到这题,今天拿出来记录下,怕忘记真正的做法有三种,依次实现下第一种:最容易想到的方法,就是引用一个中间变量 int a = 4; int b = 5; int temp = a; a = b; b = temp;第二种:不使用第三方变量分析,我们把b-a = 1,把这个1赋值给a,那么b-a就是等于4了,b=b-a=4现在把b变成了4,然后我们只要把a变成5就可以

2020-05-26 14:53:09 310

原创 LeetCode -Reverse integer

Reverse integer就是数字翻转问题,比如:Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21

2020-05-15 19:09:01 156

原创 LeetCode -Two Sum

算法是每个程序员的必修课,以前也认为做个普通的开发,要懂什么算法和数据结构,现在发现好点的公司算法和数据结构都是必须要问的,而且多学算法对自己的思维扩展是有很大的提高,再说现在求职这么难,不是4 5年前那个美好的时候了,所以要每天学点算法积累下,当然不太可能做到算法工程师那种了今天的题目是求数组中要求二个数组相加等于某个数,然后求出这二个值的下标,这题还是算简单的题目描述给定一个整数数...

2020-05-04 17:23:26 255

原创 斐波那契

首先引用百度百科中对斐波那契的描述斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n - 1)+F...

2020-05-04 13:34:58 461

原创 数组实现队列

队列是先进先出的线性结构,我们Java中也提供了Queue等一系列子类,在线程池中会有几个常用的队列,今天就使用数组来实现队列的基本操作package com.zgz.search;import java.util.Arrays;public class MyQueue { private int[] arr; public MyQueue() { ...

2020-05-04 01:03:04 207

原创 数组实现栈

栈也是数据结构中的一种,是一种先进后出结构,代码如下package com.zgz.search;public class MyStack { private int[] arr; public MyStack(){ arr = new int[0]; } /** * 压入元素 */ public void push(int...

2020-05-04 00:34:08 377

原创 二分法查找

二分法查找的前提必须数组是经过排序的,这是必须得条件,否则就不能用二分法查找了,二分法查找就是拿查找的值在数组的中间进行对比,如果是大于这个中间值,说明这个查找的值在后面,那么就从后面的一半中查找,小于就是在前面的一半查找,思路也不复杂,请看代码package com.zgz.search;/** * 二分法查找必须是建立在数组已经是排序的情况下了 */public class ...

2020-05-03 23:44:14 270

原创 线性查找

线性查找又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败这个非常简单,没啥好分析的,直接上代码package com.zgz.search;/** * 线性查找是最简单的查找方式 * 就是和数组或者集合中的数据从开始一一对比 */public cla...

2020-05-03 23:21:18 421

原创 java 外观设计模式

外观模式也叫门面模式,属于结构性模式,外观模式还是比较好理解的,平时使用也比较常见定义:外观模式是隐藏了系统的复杂性,能够为子系统中的一组接口提供一个统一的接口举例我们做Android图片加载是必不可少的, 当然我们都是使用了第三方的框架,比如glide,图片内存缓存一般是先从内存中找,内存没有然后从本地找,本地再没有就从网络去下载图片,现在用代码来说明,先定义一个缓存的接口...

2020-05-03 01:01:47 342

原创 每日一道面试题:java创建对象有几种方式

每天在github上搜索一道面试题进行复习,扫盲技术点,今天是问Java创建对象有几种方式,可能会说就一种,其实有四种:

2020-05-01 20:35:21 586

原创 重学设计模式

准备花点时间重新学习一遍设计模式,相信会有收获,2020是个多灾多难的一年,不管是大环境还是it环境都是求职要求比较高,在小公司要时刻保持危机感,因为不知道哪天就倒闭了,那就要求我们时时刻刻在保持学习的态度,不能放松,不然在这个浪潮中就被灭了,其实现在学习想比较10年钱真是资料多了很多,其实只要内心真要想学习的话,资料真是很多,那么如何学习呢?其实可以对比bat,atm中那些人,比如阿里p6,p7...

2020-04-27 23:40:16 356

原创 kotlin Control Flow

kotlin流程控制语句,官网:https://kotlinlang.org/docs/reference/control-flow.htmlControl Flow: if, when, for, whilekotlin中的流程语句主要有四个 if when for while,现在一个个来.If ExpressionIn Kotlin,ifis an expression...

2019-12-30 00:03:09 122

原创 android Auto animate layout updates

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

2019-12-26 00:26:39 378

原创 Kotlin入门简介

Kotlin是一门可以运行在Java虚拟机,浏览器,Android上的静态语言,与Java100%兼容,所以Kotlin可以做后台 前端 android,这是要全栈的节凑,学习Kotlin最好的资料:https://kotlinlang.org/docs/reference/basic-syntax.html官网是最权威的,英文不好的,请备注好翻译.Kotlin的程序入口在...

2019-09-04 21:50:19 281

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

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

2019-09-03 00:30:08 1971

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

针对上篇讲的module之间的跳转问题, 这就出现了路由的概念了,应该上路由去帮助我们去做那些事APT(Annatotion Processing Tool)是一种处理注解的工具,它对源代码文件进行检测找出其中的注解(Annotation) 根据注解自动生成代码,如果想要自定义的注解处理器能够正常运行,必须要通过APT工具进行处理,也可以这么理解, 只有通过APT工具后,程序在编译期间注...

2019-09-03 00:29:26 790

原创 android组件化项目部署

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

2019-09-03 00:27:20 1534

原创 android 组件化gradle语法

Android项目中都有build.gradle文件,其实这是gradle构建工具,gradle是由Groovy语言开发的,之前只是把简单的语法学习了下,由于要找工作 没时间学习了,如果能找到工作 上班后再学习,也有可能这辈子就离开it了,Gradle核心是基于Groovy脚本语言的,Groovy脚本是基于java意思是它完全的兼容jvm,而且还在此基础上做了扩展,因此Gradle需要jdk和...

2019-09-03 00:25:33 1908

原创 android. 长图加载

长图加载要用到一个关键的类BitmapRegionDecoder,长图加载会使用到bitmap内存复用, 比如view大小是440*654,图片的宽高是440*12000,那么这个时候就要获取图片的宽和高, 跟view的宽和高进行对比,获取到一个缩小比例,那么会得到宽一个比例,高一个比例,用大的比例作为缩放因子,然后配合手势滑动滑动长图import android.content.Conte...

2019-08-25 21:01:40 2732

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

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

2019-08-19 13:31:06 242

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

1 StringString:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的查看它的源码 public String() { this.value = "".value; }变量value private final char value[];被final修饰的类不能有子类,被final修饰的变量只能在...

2019-07-24 07:25:16 694 1

原创 java 享元设计模式

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

2019-07-24 05:03:02 126

原创 java 组合设计模式

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

2019-07-24 05:02:53 279

原创 android tint使用

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

2019-07-19 21:53:13 910

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

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

2019-07-16 07:10:57 557

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

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

2019-07-16 05:52:14 2342

原创 android 面试题 Parcelable与Serializable区别

一、序列化与反序列化由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化字节序列的过程。相反地,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序列化,即把字节序列转化为对象。有了以上理解,接下来我们认识两个用于序列化和反序列化的接口:java原生的Seriali...

2019-07-16 05:32:22 1023

原创 性能优化之 线程优化

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

2019-07-16 04:25:26 6087

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

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

2019-07-16 03:02:36 1804

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

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

2019-07-16 02:38:23 750

android_simple_sqlite

这是一个android数据库框架

2017-02-14

android_simple_sqlite框架

这是手写数据库框架的一部分

2017-02-07

android 资料

环信的demo 及时聊天 让你轻松搞定和qq一样的强大功能,还等什么 赶快下载吧,亲

2015-04-26

空空如也

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

TA关注的人

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