自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 git命令——cherry--pick(commit全部代码复制粘贴)

git命令——cherry–pick(commit全部代码复制粘贴)1、切换到目标想要pick的分支git checkout fenzhiname保险起见git status(出现问题按照正常的reset commit的次数)2、git cherry-pick ((commit)字符串,目标pick的节点转移到↑的分支)3、git push origin HEAD:refs/for/fenzhiname 推送代码到远程仓库...

2022-01-11 18:07:46 754

原创 手机上抓取log日志,出了识别不了设备方法

手机上抓取log日志,出了识别不了设备方法

2022-01-11 18:03:59 531

原创 commit提交失败解决问题

没有reset彻底解决方法1、用命令git reset --hard HEAD^git reset --soft HEAD~12、再正常执行提交逻辑git pullgit add (/src/didi/java/com/did/didi/dd/DiDir.java)/改的类的路径+.javagit commit -m “提交注明”git push origin HEAD:refs/for/v_fenzhiname没有执行add前提,删除代码git checkout xxx路

2022-01-11 18:00:39 2229

原创 进程通信---Messenger

一.Messager介绍Messager,故名思义信使的意思,能够完成跨进程通信。和Service结合使用(服务器端是个service,得在Manifest文件中注册哦)Messenger与Handler类似,可以用它来发送和处理消息,其底层的实现是对Binder,对ALDl的一个简单封装。(Messenger是对AIDL的封装,AIDL又是基于Binder机制实现的)使用起来也比较简洁,在一个线程中通过指定一个Handler来创建Messenger,并把它传递给另一个进程,这样两个进程之间就可以通过

2021-08-26 17:30:16 338

原创 Exception

2021-08-23 11:22:12 97 1

原创 华为鸿蒙OS

OpenHarmony 官方源码地址:https://openharmony.gitee.com/openharmonyDevEco Studio 作为其开发工具。DevEco Studio 下载地址:https://developer.harmonyos.com/cn/develop/deveco-studioHarmonyOS 优点多终端开发调试便捷鸿蒙目前支持可以开发 TV,wearable, LiteWearable 几种设备类型,未来还会扩展到其他设备。并且一次代码就可以在不同设备快

2021-08-12 11:35:07 2020 2

原创 网页开发HTML5

HTML5到底是什么?HTML5是HTML的升级版,CSS3是CSS的升级版,为了更好的满足需求。  一般广义而言的HTML5则包含了HTML、CSS和JavaScript三个部分,不单单只是HTML部分而已。HTML5的技术组成1、脱机功能HTML5透过JavaScript提供了数种不同的脱机储存功能,相对于传统的Cookie而言有更好的弹性以及架构,并且可以储存更多的内容。WebStorage: 比 Cookies 更大、更有弹性的的储存Web SQL Database: 本地端的SQL数

2021-08-12 11:03:52 212

原创 NDK和JNI,Framwork含义

1. JNI介绍1.1 简介定义:Java Native Interface,即 Java本地接口作用: 使得Java 与 本地其他类型语言(如C、C++)交互, 即在 Java代码 里调用 C、C++等语言的代码 或 C、C++代码调用 Java 代码特别注意:JNI是 Java 调用 Native 语言的一种特性JNI 是属于 Java 的,与 Android 无直接关系1.2 为什么要有 JNI背景:实际使用中,Java 需要与 本地代码 进行交互问题:因为 Java 具备跨平台的特

2021-07-28 16:32:08 485

原创 面试的一些个人总结

大部分外包还是挺多的,分为外派,驻场,外包外派大厂的很多1.必问JAVA基础,Android基础2.第三方框架,Glide,RXJava,Retrofit,SP,MMKV3.JetpacK组件3.第三方集成4.项目的应用场景

2021-07-02 23:58:09 101

原创 布局优化,及使用

ViewStub使用当在代码中执行inflate操作后,她才会被添加到试图中。其实ViewStub就是一个宽高都为0的一个View,它默认是不可见的,只有通过调用setVisibility函数或者Inflate函数才 会将其要装载的目标布局给加载出来,从而达到延迟加载的效果,这个要被加载的布局通过android:layout属性来设置。最终目的是把app加载页面的速度提高了,使用户体验更好。ViewStub出现是为了减少层级嵌套,创建布局和初始化的时候,需要的布局控件进行显示。注意:对ViewStub

2021-07-01 08:48:14 103

转载 Android组件化开发

1、为什么要项目组件化随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代码后都要重新编译打包测试,导致非常耗时,最重要的是这样的代码想要做单元测试根本无从下手,所以必须要有更灵活的架构代替过去

2021-06-28 07:51:53 250

转载 JetPack及常用组件

一、Jetpack 介绍1、什么是JetpackGoogle 官方解释:Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。Jetpack 是 Google 为解决 Android 开发碎片化,打造成熟健康生态圈提出的战略规划,是 Google 对 Android 未来提出的发展方向,同时它也是众多优秀 Android 组件的集合。2、为何使用 Android JetpackG

2021-06-27 22:02:07 1177

原创 GC垃圾回收

垃圾收集算法的核心思想答:Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。  垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。垃圾收集算法的选择和垃圾收集系统参数的合理调节直接影响着系统性能,因此需要

2021-06-27 21:22:25 112

原创 Glide原理及面试

1.怎么在项目中加载图片的?用Glide比较多,Glide里的ImageLoader解决图片错乱,还有图片缓存,节约内存空间2.Glide哪些好处?可以播放gif图图片有序位置有序排放因为:图片标志缓存绑定,只展示绑定的图片地址,不是乱显示,防止图片位置错乱。比其它图片框架优秀缺点:会出问题,应该从0秒开始3秒结束,结果每次播放git图片都是从1秒或者2秒,或者0.8秒开始,播放太快,给用户体验效果差3.Glide好处体现在哪?其它图片不支持gif图片播放,只有Glide框架,因为它可

2021-06-26 16:36:32 1579

原创 Recyclerview原理

1.为什么会有适配器模式?自定义控件,有很多布局类型,但是加载业务逻辑是固定的,布局是自定义的,所以需要有个机制隔离开来,所以用适配器,真正做到UI界面与代码逻辑的分离。布局:不固定的Adapter:Recyclerview:专门做业务逻辑的,滑动处理,Item加载,加载逻辑,固定的,数据转为view的,主要做触摸事件的交互,主要实现边界值判断,根据用户触摸的反馈,协调回收池对象与适配器之间的工作。优势:加载无限的数据,不会卡顿Recyclerview核心思想:有限加载回收池(视图View的集

2021-06-24 20:49:05 242

转载 Java设计模式

设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。还会讨论另一类设计模式:J2EE 设计模式。创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对

2021-06-23 16:50:57 65

原创 Git代码仓库

了解版本控制的工具吗?版本控制是程序开发、管理必不可少的工具,特别是在多人协作的团队中,适宜的版本控制工具可以提高开发效率,消除很多有代码版本带来的问题目前最流行的开源版本控制工具要数Subvision(SVN)、Git以及Mercurial(hg)了,其中SVN是集中式版本控制工具,Git和Mercurial则是分布式的。早期常用的还有CVSGit基本上都是外网服务器连接(GitHub,码云,gitlab)实际使用的时候基本流程和SVN差别不大,拉代码,更新代码,提交代码Git 是一个开源的分

2021-06-19 09:43:40 1178

原创 Android基础

一、Activity:Activity首先是Android关键的四大组件之一,主要提供与用户交互的界面、数据展示等,在编程范式中,应用是通过 main() 方法启动的。而 Android 系统中是调用与其生命周期特定阶段相对应的特定回调方法来启动的。其中Activity共有7个生命周期,可以通过管理生命周期来决定具体执行那些操作。Activity共有四大启动模式:标准模式standard、栈顶复用SingleTop、栈内复用SingleTask、单例singleInstance;二:Intent和Int

2021-06-18 17:19:52 80

原创 java线程、进程和线程池

Sleep()和wait()的区别功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.wait是Object的方法,sleep是Thread类的静态方法,sleep的作用是让线程休眠制定的时间,在时间到达时恢复,也就是说sleep将在接到时间到达事件事恢复线程执行...

2021-06-18 17:18:56 200

原创 面向对象三大特性

封装 继承 多态:继承:是指这样一种能力:它可以使用现有类的所有功能,并在不需要重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从父类到到子类。也就是儿子有父亲的功能和模块,也可以有自己的,而父亲只有自己的。封装:可以隐藏实现细节,使得代码模块化;也是为代码复用。在面向对象编程上可理解为:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。多态:“一个接口,多种方法”,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果

2021-06-18 17:12:31 79

原创 Handler原理

AsyncTaskAsyncTask内部是线程池、线程和handler来实现的核心方法:onPreExecute():在主线程处理一些准备工作。doInBackgroud(Params…Params):在主线程中处理异步任务耗时任务,可以通过publishProgress方法来更新任务的进度。onProgressUpdate(Progress…values):在主线程中执行,当后台任务进度改变触发回调。onPostExecute(Result result):在主线程中,异步任务技术触发回调,

2021-06-17 08:52:21 504

原创 Android和JS交互

Android调用JS两种方法1.通过webview的loadURL方法,如果调用js方法,通过webview.loadUrl(“javascript:jsFun()”);如果该方法有参数,直接讲参数拼接进去即可,比如webView.loadUrl(“javascript:jsFun(“”+msg+‘’‘’)”),这种方法调用方式,每次都会刷新页面2.通过WebView的evaluteJavascript(),这种方法调用js后,直接拿到js返回的结果,而且不会每次刷新页面,效率高,版本兼容性差,只支持

2021-06-16 08:10:43 255

原创 数据库升级

SQLite数据库优缺点分析数据库3种方法SQLite,GreenDao,Room数据库优点由于SQLite本身是C写的,它自带的API也是C接口的。所以C/C++用起来最直接了。SQLite是一个轻量级、跨平台的一款模块化、简单、紧凑的以及易于使用的嵌入式关系型数据库。SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态 库,就可以享受它的全部功能。  ◇单一文件  所谓的“单一文件”,就是数据库中所有的

2021-06-15 20:17:31 535

原创 SharedPrefereses的优化与缺点

SharedPreferencesAndroid 五种数据存储的配置信息方式之一。ContentProvider:将应用的私有数据提供给其他应用使用;文件存储:以IO流形式存放,可分为手机内部和手机外部(sd卡等)存储,可存放较大数据;SQLite:轻量级、跨平台数据库,将所有数据都是存放在手机上的单一文件内,占用内存小;网络存储 :数据存储在服务器上,通过连接网络获取数据。Sharedpreferences(不建议使用)是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,

2021-06-14 16:06:50 764

原创 数据结构之常见的数据结构

数据结构的分类:数据结构常见的数据结构有:线性链表,数组,栈,队列,树和二叉树。线性链表采用动态分配内存的形式实现,用一组任意的存储单元存放数据元素链表的,一般为每个元素增设指针域,用来指向后继元素。数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。栈 先进后出的数据结构。队列先进先出 FIFO(first in first out),新元素(等待进入队列的元素)总是

2021-06-09 08:10:29 156

原创 九大危险权限

九大危险权限Android 6.0开始,Google将权限分为两类,一类是Normal Permission, 这类权限一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动、访问网络等;另一类是Dangerous Permission,一般是涉及到用户隐私的,需要用户进行授权,比如读取sdcard、访问通讯录等。有四种动态权限写法1.管理器ActivityCompat //判断用户是否已经给程序授权。第一个参数:context 第二个参数:具体权限名。 if (

2021-06-04 20:42:15 686

原创 HashMap原理

Hashmap原理是由数组+链表+红黑树组成的数据结构。HashMap采用Entry数组来存储key-value对,每个Entry 对象存储四个属性(hash,key,value,next),每一个键值对组成了一个Entry实体,Entry类实际上是一个单向的链表结构,它具有Next指针,可以连接下一个Entry实体。 只是在JDK1.8中,链表长度大于8的时候,链表会转成红黑树。数组是用来确定桶的位置,数组的每个索引被称为桶,每个桶里放着一个单链表,一个节点连着一个节点。桶的位置利用元素的key的

2021-06-03 21:01:40 1120

原创 冒泡排序及写法

冒泡排序写法(Bubble Sort)原理:比较两个相邻的元素,将值大的元素交换到右边,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面(通俗点:从小到大排序,冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来)通过依次比较相邻的两个元素,判断两个元素是否满足大小关系,如果不满足则交换两个元素,每一次冒泡会让至少一个元素移动到它应该在的位置,这样n次冒泡就完成了n个数据的排序工作。这个算法的排序过程与气泡从水中往上冒的情况很相似//开辟一个临时空间, 存放交换的中间值

2021-06-02 22:12:06 978

原创 内存泄漏与内存溢出

1.内存泄漏(memory leak)申请了内存用完不释放,比如一共有1024M的内存,分配了521M的内存一直不回收,那么可以用的内存只有521M了,仿佛泄漏掉了一部分,通俗一点讲的话,就是(占着茅坑不拉屎)内存泄漏和内存溢出属于因果关系,因为泄漏导致内存溢出2.内存溢出(out of memory)OOM定义:App运行时占用的内存超过系统分配给改App的内存,就会出现内存溢出,递归,死循环图片加载(主要原因)1.超大图片(本地图片过大,服务器图片过大)2.大量加载图片并没有及时做回收或

2021-06-02 08:31:47 436 4

原创 什么是面向对象

什么是面向对象?Java语言是一种面向对象OOP(Object Oriented Programming)还有OOD(面向对象的设计),OOA(面向对象的分析)的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象

2021-05-31 21:54:03 5317

原创 kotlin依赖

//协程implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2’

2021-05-31 10:57:33 512

原创 String,StringBuffer,StringBuilder

String,StringBuffer,StringBuilder的区别String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String,而StringBuilder,StringBuffer内部维护的是字符数组,每次的操作都是改变字符数组的状态因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多

2021-05-27 21:46:52 143

原创 Kotlin

Kotlin

2021-05-26 17:12:27 271

原创 androidstudio常用依赖

//maven依赖仓库https://mvnrepository.com///内存泄漏检测小黄鸭依赖debugImplementation ‘com.squareup.leakcanary:leakcanary-android:2.3’debugCompile ‘com.squareup.leakcanary:leakcanary-android:1.6.1’releaseCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.6.1

2021-05-26 09:56:18 416

原创 单例模式----双重检查锁

双重检查锁二次判空原因第一次判断是为了验证是否创建对象第二次判断是为了避免重复创建单例,因为可能会存在多个线程通过了第一次判断在等待锁,来创建新的实例对象。

2021-05-26 09:40:48 20649 1

原创 java零碎

一.java基础1.规则2.常量 大写3.关键字小写4.标识符不能是关键字5.包名小写 类或接口 首字母大写6.方法,变量 第一个单词小写,第二个单词首字母大写7.static没有创建类对象情况下。任然可以运行8.变量 先定义,后赋值 int x,int y x=14 y=89.赋值运算符 c+=a 等于c=c+a c*=b等于c*b10.方法形参:走个形式 数据虚假 实参:实际数据表有返回值类型 无

2021-05-26 09:38:07 83

原创 Android不同版本的区别

一、Android6.0-11.0版本不同的区别Android版本适配1. Android11.0新增关于位置,麦克风,摄像头,只允许一次权限即可。在分区基础上限制应用不能访问其它应用的文件,公共目录文件在App卸载后,不会删除,专属目录文件只能自己访问。如果应用targetSdkVersion>=30,会强制打开分区存储,同时requestLegacyExternalStorage就会无效,mainfest中设置preserveLegacyExternalStorage为true,应用更新

2021-05-26 07:36:05 5627

原创 三方集成-----极光推送

1

2021-05-25 19:06:36 127

空空如也

空空如也

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

TA关注的人

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