自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 热修复原理

热修复是一种在出现大bug的时候进行一种无须发版就能修复的一种技术,就能修复代码的bug,也能修复资源的问题和so库的问题,热修复的框架也有很多,主要还是阿里和腾讯的热修框架比较流行,主要介绍2种:一:阿里的AndFix原理:这里用到最核心的知识点就是在native层获取到指定方法的结构体,然后改变他的nativeFunc字段值,而这个值就是可以指定这个方法对应的native函数指针,所以先从...

2019-11-07 14:44:42 292

原创 aidl总结

概念AIDL是Android Interface Definition Language的简写,即Android接口定义语言。我们知道Android系统为每一个应用开启一个独立的虚拟机,每个应用都运行在各自进程里(默认情况下),彼此之间相互独立,无法共享内存。当一个应用想要访问另一个应用的数据或调用其方法,就要用到Android系统提供的IPC机制。而AIDL就是Android实现IPC机制的方...

2019-11-06 17:10:01 253

原创 OkHttp知识点总结

OKhttp3 是最近比较主流的网络请求框架。面试中,常会问道你对okhttp3是否有深入的了解。在这篇文章我总结了下okhttp3的原理(非用法,用法自己百度就行),以及大神们根据源码分析OKhttp3比较好的文章。1.首先是大神们对OKhttp3的源码分析:(转载)Android OkHttp(三)源码解...

2019-11-01 15:41:22 484

原创 retrofit总结

一.简介Retiofit SQUARE公司开发的,是一个符合RESTFUL设计风格请求网络封装的框架,其底层进行网络请求用的是OKHTTPRetrofit就是一个网络请求框架的封装,底层的网络请求默认使用的Okhttp,本身只是简化了用户网络请求的参数配置等,还能与Rxjava相结合,使用起来更加简洁方便。二.功能1.通过注解配置网络请求参数2. 支持同步异步的请求3.可以添加多个解析...

2019-10-31 15:57:32 338

原创 RXJava 总结

1:介绍1.RXJava是一套异步编程的API,这套API是基于观察者模式的,并且是链式的调用的,所以RXJava的编码逻辑是非常的简洁。2.RXJava组成的元素:被观察者(Observable)观察者(Observer)订阅(subscribe)3.使用:首先在 gradle 文件中添加依赖:implementation 'io.reactivex.rxjava2:rxjava...

2019-10-30 14:19:36 145

原创 深入理解Android EventBus原理

1.使用1.定义一个evnet;public static class MessageEvent 2.准备观察者声明和注释你的订阅方法,可选地指定线程模式@Subscribe(threadMode = ThreadMode.MAIN) //比如这个就指定主线程public void onMessageEvent(MessageEvent event) {/* Do somethin...

2019-10-29 14:07:00 681

原创 web前端知识点

知识点htmlhtml5新特性 https://blog.csdn.net/m0_37696296/article/details/81083402websocket理解和使用 https://blog.csdn.net/jing_80/article/details/82111423浏览器模型常见对象window、history、xhr、locationhttps://www.cn...

2019-10-29 09:44:34 422

原创 linux 删除文件夹里的指定大小的文件

删除大小为0KB的文件//进入指定的文件夹执行find . -name "*" -type f -size 0c|xargs -n 1 rm -f还可以删除指定大小的文件,只要修改对应的 -size 参数就行,例如find . -name "*" -type f -size 1024c|xargs -n 1 rm -f...

2019-10-18 11:04:51 701

原创 设计模式:桥接模式

一、前言Android桥接(Bridge)模式,又被称为桥梁模式。结构型模式之一。我们知道桥梁起到连接两岸的作用,而桥接模式的作用和这十分类似,就是连接抽象部分和实现部分。起到解耦的作用。二、定义将抽象部分与实现部分分离,使它们都可以独立的进行变化。三、例子理论部分还是比较抽象,下面我举一个例子来说明什么是桥接模式,并在其中说明桥接模式的核心。例子是我们要给圆、正方形和长方形添加白色或黑...

2019-10-12 17:15:50 137

原创 设计模式:外观模式

1.定义提供一个接口,使得客户端只通过接口访问。隐藏内部子系统的实现。2.例子2.1 抽象出API方法,并实现public abstract class NokiaPhone { public abstract void design(); public abstract void development(); public abstract void produc...

2019-10-12 16:48:07 101

原创 设计模式:享元模式

1.定义它是对象池的一种实现。享元模式用来尽可能的减少内存的使用量。多用于存在大量重复对象的场景,或需要缓冲池的时候。用来缓存共享的对象。这样来避免内存溢出等。举例定义巴士车票public interface Ticket { public void showTicketInfo(String type);}public class BusTicket implements ...

2019-10-12 15:08:18 95

原创 设计模式:装饰者模式

1.定义装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。2.举例概念永远是懵懂的,下面我们通过一个简单的例子,理解何为装饰者模式。1、定义一个被装饰者先抽象出一个person,吃饭public abstract class Person { public abstract void eat();...

2019-10-10 16:25:59 93

原创 设计模式:适配器模式

一、前言适配器模式就是将两个不兼容的类融合在一起。通过转换使他们可以兼容的工作。Android代码中最常见的适配器就是Adapter了。ListView、GridView、RecyclerView都使用Adapter,Adapter的作用都一样,把高度定制化的item view和ListView分开。item view通过一个Adapter和ListView联系到一起。解耦而不失高度可定制。二...

2019-10-10 16:14:46 101

原创 设计模式:代理模式

代理模式定义为其他对象提供一种代理以控制这个对象的访问。1、静态代理静态代理很好理解就是我们需要编写一个代理类。实现我们需要代理的所有方法。所以称之为静态代理。由于需要代理的方法可能有很多。为了约束代理类和被代理类这些相同的方法,所以写一个接口来继承是最直观的方式,当然这个接口不是必须的,可加可不加。都不影响,主要是理解代理这个设计模式的思想。代理模式的变化也很多。public inter...

2019-10-10 11:18:17 121

原创 设计模式:观察者模式

定义定义一个被观察者,多个观察者,一旦被观察者发生变化,会通知各个观察者。1、定义观察者public abstract class WeatherOberver{ public abstract void rain(); public abstarct void sun();}2、定义被观察者public class WeatherObervable exte...

2019-09-16 16:28:01 103

原创 设计模式:责任链模式

责任链模式定义一个请求发送到接收者,接收者成连式结构,沿着链式结构传递请求,直到有对象处理请求。举例小明需要请假15天,OA上,小明把请假递交给组长。组长只有3天的权限,所以组长把请假流转给部门长处理。部门长只有7天权限,所以请假流转到了经理。经理经过评估,觉得可以放,于是请假批准。小东需要请假3天,组长就能批准。不会流转到部门长那里。我们先写一个员工请假类,代码很简单就是请假天数pu...

2019-09-11 10:45:18 124

原创 设计模式:策略模式

策略模式定义: 对统一问题的不同解决方案单独封装起来策略模式举例最近房租涨的这么猛,就以计算不同地方的房租为例这里的Calculation就是我们的计算策略public interface Calculation{ int calculationAverageRent();} 然后我们算一下深圳和北京这两个地方的平均房租public class ShenzhenAvaera...

2019-09-10 16:22:36 90

原创 设计模式:工厂设计模式

工厂模式用于创建对象的接口,交给子类去实现普通工厂模式:生产具体的产品,创建的产品是类(Class)。抽象工厂模式:生产抽象的产品,创建的产品是接口(Interface)。普通工厂模式举例我们举一个生产Nokia的例子public abstract class NokiaPhone{ public abstract void powerOnPhone(); }...

2019-09-10 15:31:37 110

原创 设计模式:Builder模式

Builder模式1.定义Builder模式是创建一个复杂对象的一种模式,此模式,用户不用知道内部构建细节,可以更好的控制构建流程。一个复杂对象可以有很多参数、部件,Builder模式就是为了将创建这个复杂对象的过程和对象的众多参数部件分开,已达到解耦的目的。这样构建过程和部件都可以自由扩展,两者之间的耦合也降到最低2 例子public class Person { privat...

2019-09-07 16:36:58 121

原创 设计模式:单例模式

设计模式:单例模式1. 单例模式的应用多用于程序只需要一个实例,通常是很消耗资源的类,例如:线程池,数据库,i/o,缓存,网络请求等,由于比较消耗资源,所以没必要创建多个实例。2.单例模式举例饿汉式 public class SingletionStarving { private static final SingletionStarving mInstance = new ...

2019-09-07 16:22:38 83

原创 Xcode 9 “iPhone is busy问题解决

Xcode 9 “iPhone is busy: Preparing debugger support for iPhone”https://stackoverflow.com/questions/46316373/xcode-9-iphone-is-busy-preparing-debugger-support-for-iphone

2019-09-06 15:46:09 2534

原创 List Set Map的数据结构

List、Set和Map都是接口(Interface),其中Collection是所有集合类的接口,Set和List也都实现该接口LIstList比较常用的有ArrayList和LinkedList,还有一个比较类似的VectorArrayListArrayList是线程不安全的,在不考虑线程安全的情况下查询速度比较快的。ArrayList插入数据可以重复,性能上要比Vector...

2019-09-05 13:48:40 990

原创 数据结构:堆,栈,队列

堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。堆和栈都是一样的都是先进后出的原则 ,又分为二叉堆,斐波那契堆,实际应用:堆排序等栈有一句经典的言语来概括:先进后出,后进先出。往里面加数据叫入栈,取数据叫出栈,底部叫栈底,顶部叫栈顶使用数组实现的叫静态栈 使用链表实现的叫动态栈public class Stac...

2019-08-30 13:43:52 89

原创 TCP/IP的三次握手和四次挥手

TCP/IP的三次握手: (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个...

2019-08-28 16:48:10 123

原创 http请求包括

http 请求包含哪几个部分(请求行、请求头、请求体)http协议报文1.请求报文(请求行/请求头/请求数据/空行)请求行求方法字段、URL字段和HTTP协议版本例如:GET /index.html HTTP/1.1get方法将数据拼接在url后面,传递参数受限...

2019-08-28 15:37:03 311

原创 链表之双向链表

首先在说下单链表,才能和双链表作比较单链表(单向链表):由两部分组成数据域(Data)和结点域(Node),单链表就像是一条打了很多结的绳子,每一个绳结相当于一个结点,每个节结点间都有绳子连接,这样原理的实现是通过Node结点区的头指针head实现的,每个结点都有一个指针,每个节点指针的指向都是指向自身结点的下一个结点,最后一个结点的head指向为null,这样一来就连成了上述所说绳子一样的...

2019-08-27 14:09:43 182

原创 mac环境下Android 反编译

一、需要的工具apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。 dex2jar:将反编译后的classes.dex文件转化为.jar文件。 jd-gui:用于将.jar文件转换成java代码。二、反编译步骤第一步:使用apktool工具对APK进行反编译1.下载apktool注:mac要保留为.shcd /...

2019-08-27 11:09:05 135

原创 链表之单向链表

一:单向链表基本介绍链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和删除时优势明显。下面对单向链表做一个介绍上图中最左边的节点即为头结点(Head),但是添加节点的顺序是从右向左的,添加的新节点会被作为新节点。最先添加的节点对下一节点的引用可以为空。引用是...

2019-08-26 17:31:25 201

原创 算法学习:快速排序

从数列中挑出一个元素,称为 “基准”(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序代码:void QuickSort(int A[],i...

2019-08-26 09:12:20 162

原创 算法学习:希尔排序

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键...

2019-08-26 08:36:17 110

原创 算法学习:插入排序

插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入代码实现public static void insertSort(int[] array){if(array.length==0) return array;for(int i =0;i<a...

2019-08-22 15:06:34 144

原创 算法学习:选择排序

选择排序(Selection Sort)表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好代码实现:public static int[] selectionSort(int[] array){ if(array.legth==0) return array; for(int i=0;i&l...

2019-08-21 14:14:15 81

原创 算法学习:冒泡排序

## 冒泡排序 1.描述:冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端 2.动图展示:[link](https://forum.mianbaoban.cn/d...

2019-08-21 10:18:46 235

原创 Flutter学习总结(一)

1 .Padding是一个容器类,可以包含控件,使其子控件有边距 EdgeInsetsGeometry是一个抽象类,开发的时候用他的子类EdgeInsets常用的方法:all(double value) //都使用相同的数值only({left, top, right ,bottom }) //可以设置具体某个方向的填充fromLTRB(double left, double top, ...

2019-08-21 09:50:45 276

原创 ES6中的const关键字

1.const是一个只读的常量,一旦声明,不可修改2.和let一样,不存在变量的提升和只在相应的代码块中生效。3.觉得和java中的String差不多,声明的常量也是指向内存的一块地址值,可以为申明的对象或者数组增加相应的属性,但是不可重新指向新的地址值。...

2018-06-29 15:49:10 734

原创 ES6 中的let关键字

1.let不像var,他只在相应的代码块中生效。2.let不存在变量的提升。console.log(foo);var foo=2;  //不会报错,存在变量的提升console.log(bar);let bar =2;  //会报错3.存在暂时性死区if(true){tmp ='abc'console.log(tmp); //报错let tmp;console.log(tmp)  //underf...

2018-06-29 15:36:24 563

原创 编码总结规范

1. 必要的地方要写上注释 2.类名要大写,驼峰规范。 3. 方法名首字母要小写,以后开头要大写。 4.重复的代码尽量要抽取。 5.同样能实现功能的控件,可以想最简单的,三思而后行。 6.多学习,多总结,每天看一点,学习的知识要总结。

2015-04-16 11:53:42 285

原创 tablelayout 使用

android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/white"    android:orientation="vertical" >            android:layout_width="matc

2015-03-20 13:49:49 250

原创 分享界面用tablelayout

android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/white"    android:orientation="vertical" >            android:layout_width="matc

2015-03-20 12:53:36 229

原创 ExpandableListView的注意问题

1、首次加载全部展开:mDownloadListView.setAdapter(mDownloadAdapter);for (int i = 0; i     mDownloadListView.expandGroup(i);}提醒:加载前别忘了判断adapter是否为空和有没有Group数据哦、2、不能点击收缩: mDownloadLi

2015-03-13 12:17:28 358

空空如也

空空如也

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

TA关注的人

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