自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wangxp423的博客

欢迎关注个人微信公众账号“Code之旅”

  • 博客(71)
  • 资源 (11)
  • 收藏
  • 关注

原创 数据结构和算法概述(含代码和文档)

一,数据机构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关1)线性数据结构数组,栈,队列,链表,哈希表2)树结构二叉树,二分搜索书,AVL,红黑树,Treap,Splay,堆,Trie,线段树,K-D树,并查集,哈夫...

2018-08-08 15:43:08 486

原创 一些自定义View

ViewExercise主要是自己平时工作之余关于View相关的一些练习。功能概览如下图所示:目录截图Toolbar效果练习StatusBar效果练习Canvas Path 贝塞尔曲线仿小米指南针仿小米指针语音搜索动画listView 缓动水波纹 雷达搜索 示例代码:http

2018-07-18 10:07:01 336

原创 Kotlin之Android项目实战--[玩android网站]App

WanAndroidKtWanAndroid网站,手机APP,Kotlin版。 感谢<玩Android网站>http://www.wanandroid.com/提供的api接口 GitHub源码:https://github.com/wangxp423/WanAndroidKt二维码下载接口玩Android接口代码结构Kotlin + MVP + K...

2018-07-03 14:58:31 1862

原创 Java设计模式汇总(全)

示例代码:https://github.com/wangxp423/ExerciseDesignmodel设计模式六大原则:单一职责原则开放-封闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则设计模式(23种)下面列一下各种设计模式对应代码的包名:简单工厂模式 –> simplefactory工厂方法模式 –> methodfactory抽象工厂模式...

2018-06-06 18:02:01 2720

原创 Activity启动模式之SingleInstance

启动模式系列之:Activity启动模式(一)启动模式系列之:Activity启动模式(二)一,SingleTask模式(栈内复用模式)解释:只要在栈(TaskRecord)内存在栈内复用模式的Activity。无论是在栈顶还是在栈内,多次调用都会复用实例。不会重复创建。除此之外栈内复用模式还可以设置不同的任务栈,即taskAffinity属性。二,未设置taskAffinity属...

2018-11-07 09:46:20 855

原创 Activity启动模式之SingleTask

启动模式系列之:Activity启动模式(一)一,SingleTask模式(栈内复用模式)解释:只要在栈(TaskRecord)内存在栈内复用模式的Activity。无论是在栈顶还是在栈内,多次调用都会复用实例。不会重复创建。除此之外栈内复用模式还可以设置不同的任务栈,即taskAffinity属性。二,未设置taskAffinity属性解释:没有设置taskAffinity属性。启动...

2018-11-06 10:31:32 1993

原创 Activity启动模式

一,启动模式分类:Standard(标准模式,默认)SingleTop(栈顶复用模式)SingleTask(栈内复用模式)SingleInstance(单实例模式)通过AndroidManifest可配置Activity的LaunchMode.如果没有配置,默认是Standard模式。taskAffinity属性,可设置Activity的栈。默认是当前包名。此属性仅适用于后三种启动...

2018-11-04 17:10:22 2495 2

原创 可能是最详细的Android点击事件处理详解(三)

前两篇文章: 可能是最详细的Android点击事件处理详解 可能是最详细的Android点击事件处理详解(二) 这里再次延伸一下,在ScrollView和RecyclerView嵌套中touch事件的传递过程,以及嵌套滑动冲突的问题。如上图,外层是一个NestedScrollView,上半部分是一个400dp的RecyclerView。下面是用来填充的一些TextVie...

2018-09-11 14:30:17 428

原创 可能是最详细的Android点击事件处理详解(二)

上一篇我们主要详细描述了touch事件在各层的传递 本篇文章主要是对比touch在不可滚动和可滚动的ViewGroup事件的传递过程如上图: - 左图:是ViewGroup嵌套View,不可滑动 - 右图:也是ViewGroup(RecyclerView)嵌套View,可以滑动主要想对比的就是,当手指按住View层,此时View层有Selector颜色变化,此时手指移动...

2018-09-10 16:37:21 280

原创 可能是最详细的Android点击事件处理详解

面试的时候,很多时候都会问到Touch事件的传递,而且问法角度都有所不同,但是还是会遵循基本的事件传递规则的,可能他问的你没处理过,但是根据基本规则慢慢思考来回答,都不会错。一,简介首先我们知道touch事件 主要是是在三个方法中传递和处理的。分别是: - dispatchTouchEvent 事件分发 - onInterceptTouchEvent 事件拦截 - o...

2018-09-07 18:18:26 6393

原创 Android Launcher:Activity的启动过程

本文转载自凶残的程序员的博客 [Android Launcher 启动 Activity 的工作过程]https://blog.csdn.net/qian520ao/article/details/78156214本来想写一篇关于Activity的启动过程的博客,发现凶残的程序员在上面链接中的文章中已经写得很好很详细了。所以就转载作为记录。 以下图片效果也是凶残的程序员...

2018-07-19 17:42:18 385

原创 Android studio2.2+,配置NDK,JNI开发

一,Android studio2.2+以上版本2.2以上版本默认是配置了NDK的。在你android SDK目录下的ndk-bundle下。在我们项目下的local.properties下已经配置好NDK路径了,如下(我的路径) ndk.dir=C:\forwork\java\Android\sdk\ndk-bundle sdk.dir=C:\forwork\java\Android...

2018-07-13 19:13:33 400

原创 Android内存泄露分析

一,内存泄露内存泄露:一个不在被使用的对象被另一个存活着的对象引用,在这种情况下垃圾回收器会跳过他,因为这种引用关系足以让该对象驻留在内存中,内存泄露是在组织垃圾回收器为未来的内存分配提供空间,这些泄露的对象一直占据着内存,导致我们的堆内存空间变得更小。也加剧了垃圾回收调用的频繁程度,妨碍应用程序的正常执行。内存溢出:通常的理解就是内存不够,是指堆内存大小超出了应用程序的分配内存范围导致的...

2018-07-13 15:27:01 1116

原创 Android内存抖动分析与注意事项

一,内存抖动内存抖动:指的是在短时间内大量的新对象被实例化,运行时无法承载这样的内存分配,在这种情况下垃圾回收事件被大量调用,影响到应用程序的UI和整体性能。二,分析内存抖动Android Studio提供了一个 profile的工具,可以帮助我们分析内存情况,在studio的上不有一个表盘的图标 点击红框图标,然后就会运行当前项目,选中连接的手机,然后在studio的底部就...

2018-07-12 11:21:10 1265

原创 Android窗口机制:Window PhoneWindow DecorView

一,布局在Android studio的Tools–>Layout Inspector–>选中连接的手机–>打开你要看的应用,然后在屏幕上就会显示当前页面的布局结构图View Tree 切换页面,会显示不同的页面的View Tree,然后会将View Tree保存在项目的captures目录下。从上图我们可以看到,我的页面只有一个LinearLayout下的Text...

2018-07-11 11:05:08 3712 1

原创 Kotlin之 lateinit 和 by lazy

最近在用kotlin写项目的时候,发现在初始化的时候用到了lateinit和by lazy两种方式,好奇他们有什么区别,就来写一下文章,加深下理解。一,lateinit(延迟初始化属性)一般地,属性声明为非空类型必须在构造函数中初始化(我们知道,kotlin中默认是空安全的,任何属性的声明都必须有初始化值,如果支持可空”?”,才能把属性声明为null)。然而这样经常不方便...

2018-07-05 11:19:50 4097

原创 Kotlin之 object(对象表达式,对象声明) 和 companion(伴生对象)

1,这两天在用kotlin写android项目,当写工具类的时候,发现把以前的工具类转成kotlin以后,都变成object修饰的类了。要知道object是表示单例,正常情况我们写工具类只需要静态方法而不需要单例的,所以这里有点困惑。 2,后来发现有companion object(伴生对象),最开始我以为这个伴生对象有点类似于java中的静态代码块,这样就可以不用object单例来写...

2018-07-03 18:52:37 2772

原创 Kotlin之do while和AssetsUtil

最近在用kotlin练习写一个Android项目,记录中途遇到的一些问题一,android中的AssetsUtil public static String getJson(Context context, String fileName){ StringBuilder stringBuilder = new StringBuilder()...

2018-06-29 17:00:27 1092

原创 kotlin之NotImplementedError: An operation is not implemented: not implemented

一,not implemented 异常//基类方法protected abstract fun cancelRequest() override fun onDestroyView() { super.onDestroyView() cancelRequest() }//子类实现override fun cancelRequest(...

2018-06-25 16:20:36 1600

原创 Kotlin出现java.lang.StackOverflowError: stack size 8MB

这两天用kotlin写程序的时候,突然出了这个异常,很好奇,然后搜了一下网上很多都是转载同一篇,并没有得到很有用的帮助,这里就当是做一个记录吧一,StackOverflowErrorjava.lang.StackOverflowError:stacksize8MBStackOverflowError是由于当前线程的栈满了,也就是函数调用层级过多导致。堆栈溢出错误一般是递归调用。出现...

2018-06-25 10:43:25 1598

原创 Kotlin之let,run,apply,with的使用

一,let可以用来映射可空值(如果非空的话)–>Kotlin的可空性,空安全fun testLet() { var data: String? = "abcde" val sub = data?.let { it.substring(1) println(data) } println(sub) val lis...

2018-06-21 19:00:38 1634

原创 kotlin之单例模式

一,Java单例模式回顾Java设计模式汇总(全)–回顾Java单例设计模式–回顾二,kotlin不带参数单例模式class Singleton private constructor(){ private object Holder{ val singleton = Singleton() } companion object {...

2018-06-20 18:12:00 1329

原创 kotlin-委托属性以及在SharedPreferences中的应用

一,属性委托有一些常见的属性类型,虽然我们可以在每次需要的时候手动实现他们,但是如果能够为大家把他们只实现一次并放入一个库会更好,例如包括延迟属性(lazy properties):其值只在首次访问时计算可观察性属性(observable properties):监听器会收到此属性变更的通知把多个属性存储在一个映射(map)中,而不是存在没个单独字段中为了涵盖这些(以及其他)情...

2018-06-19 16:55:02 1933 1

原创 kotlin的可空性,空安全

一,可空性可空性是 Kotlin 类型系统中帮助你避免 NullPointerException 错误的特性。 作为一个程序的用户,你很可能见过像这样干巴巴的错误信息“An error has occurred: java.lang.NullPointerException”(发生了错误 : java.lang.NullPointerException)。 这条信息还有另外一个版本“Unfor...

2018-06-13 18:04:30 2007

原创 访问者模式

一,定义访问者模式:表示一个作用于某对象结构中各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 访问者模式适用于数据结构相对稳定的系统,他把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。二,示例我们要实现一个男女在不同情况下的对比展示情况。因为只有男女,所以结构相对稳定//人 抽象类 接受一个行为public...

2018-06-06 17:26:54 1559

原创 解释器模式

一,定义解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 常见的解释器模式比如:正则表达式,我们给定一个正则的语法表示,当我们输入一串字符串,其中的解释器就会告诉我们这段字符串是否匹配该正则表达式。二,示例实现一个音乐解释器。 我们的规则: O表示音阶 “O 1”表示低音阶 ,“O 2”表示中音阶 “O 3”表...

2018-06-06 16:04:56 1558

原创 享元模式

一,定义享元模式:运用共享技术有效地支持大量细粒度的对象。 享元模式可以避免大量非常相似类的开销,在程序设计中,有时需要生成大量细粒度的类实例来表示数据,如果能发现这些实例除了几个参数外基本相同,有时就能够大幅度地减少需要实例化的类的数量,如果能把这些参数移到类实例的外面,在方法调用时将他们传递进来,就可以通过共享大幅度减少单个实例的数目。public class Test { ...

2018-06-06 11:44:17 1603

原创 中介者模式

一,定义中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。 中介者模式可以将系统的网状结构变成以中介者为中心的星型结构。 Colleague叫做抽象同事类 ConcreteColleague是具体同事类,没个具体同事只知道自己的行为,而不了解其他同事类的情况,而他们却都认识中介对象。 M...

2018-06-05 17:59:30 1537

原创 职责链模式

一,定义职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 二,示例实现一个加薪层层审批的例子 /** * @类描述:申请 */public class Request { private String requestType; //请求类型 ...

2018-06-05 16:29:20 1603

原创 命令模式

一,定义命令模式:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持可撤销的操作。 Command类,用来声明执行操作的接口 ConcreteCommand类,将一个接受者对象绑定于一个动作,调用接受者相应的操作,以实现execute invoker类,要求该命令执行这个请求。 receiver类,知道如何实施与执行一个请求相关的...

2018-06-05 14:46:43 1703

原创 桥接模式

一,定义桥接模式:将抽象部分与它的实现部分分离,使他们都可以独立的变化。什么叫抽象与它的实现分离,这并不是说,让抽象类和派生类分离,因为这没有任何意义,实现指的是抽象类和它的派生类用来实现自己的对象。说白了就是实现系统可能有多种角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减少他们之间的耦合。 二,示例按照不同的手机品牌,运行不同的手机软件。...

2018-06-04 18:33:45 1927

原创 单例模式

一,定义单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象,一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 二,示例public class Singleton { private static Si...

2018-06-04 16:37:12 2055

原创 迭代器模式

一,定义迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。迭代器模式的实用价值远不如他的学习价值大,因为很多语言已经把他封装好了。 二,示例/** * @类描述:抽象迭代器接口 */public abstract class Iterator { public abstract Object first(); publ...

2018-06-04 15:52:30 3457

原创 组合模式

一,定义组合模式,将对象组合成树形结构以表示”部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 Component:为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为,声明一个接口用户访问和管理Component的子部件Leaf:表示组合中叶节点对象,叶节点没有子节点。Composite:定义有枝节点行为,用来存储子部件,在Compo...

2018-06-04 11:53:55 4172

原创 备忘录模式

一,定义备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到原先保存的状态。 Originator(发起人):负责创建一个备忘录memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的那些状态Memento(备忘录):负责存储Or...

2018-06-01 15:01:38 5891

原创 适配器模式

一,定义适配器模式:将一个类的接口转换成客户希望的另外一个接口,adapter模式使得原本又有接口不兼容而不能一起工作的哪些类可以一起工作。简单的说,就是需要的东西就在面前,但却不能使用,而短时间内无法改造他,于是我们就想办法适配它。在GoF的设计模式中,对适配器模式讲了两种类型,类适配器模式和对象适配器模式。由于类适配器模式通过多重继承对一个接口与另外一个接口进行匹配,而C#,VB....

2018-06-01 10:59:55 5985

原创 状态模式

一,定义状态模式:当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换条件表达式过于复杂时的情况,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。二,示例实现一个根据时间变化,工作状态发生变化的示例 public abstract class State { //根据不...

2018-05-31 11:47:24 7386

原创 观察者模式

一,定义观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同事监听某一个主题对象,这个主题在状态发生该变时,会通知所有观察者对象,使他们能够自动更新自己。二,结构 Subject类,可翻译为主题或抽象通知者,一般用一个抽象类或者一个接口实现,他把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者,抽象提供一个接口,可以增加和删除观察者对象。Obse...

2018-05-30 15:21:52 8483

原创 建造者模式(生成器模式)

一,定义建造者模式:也叫生成器模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。二,结构 Builder:为创建一个Product对象的各个部件指定抽象接口 ConcreteBuilder:具体建造者,实现Builder接口,构造和装备各个部件, Product:具体的产品角色 Director:指挥者,可根据用户需求构建对象,她是构建一个使用...

2018-05-29 11:16:16 9429

原创 外观模式

一,定义外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 二,角色1,外观(Facade)角色 :客户端可以调用这个角色的方法。此角色知晓相关子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。2,子系统(SubSystem)角色:可以同时有一个或者多个子系统。...

2018-05-28 12:45:14 10065

Activity-LaunchMode

Activity启动模式例子,Standrd,SingleTop,SingleTask,SingleInstance实战实例。

2018-11-06

网络基础基本功电子书

网络基础基本功电子书PDF,kindle电子书,很好很实用,简单易懂。

2018-04-24

统计学七支柱-kindle电子书

统计学七支柱,kindle电子书,可以在kindle上看的电子书

2018-04-21

javaweb教程-kindle电子书

javaweb教程,kindle电子书,可以在kindle上看的电子书

2018-04-21

kotlin教程-kindle电子书

kotlin教程电子书,kindle电子书,可以在kindle上看的电子书

2018-04-21

android源码分析-kindle电子书

android源码分析,kindle电子书,可以在kindle上看的电子书

2018-04-21

设计模式-kindle电子书

设计模式(还有一些Android的),kindle电子书,可以在kindle上看的电子书

2018-04-21

ijkplayer编译好的.so文件,支持https,concat、rtsp、hls、rtmp、crypto、mpeg等

ijkplayer编译好的.so文件,支持https,concat、rtsp、hls、rtmp、crypto、mpeg等

2018-04-19

postman压缩包

postman工具包,导入chrome浏览器即可使用,方便接口API测试

2018-04-11

空空如也

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

TA关注的人

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