自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kimi985566的博客

YESTERDAY YOU SAID TOMORROW.

  • 博客(73)
  • 收藏
  • 关注

原创 Appium在Dialog/DialogFragment关闭后找不到布局元素的解决方法

Appium在Dialog/DialogFragment关闭后找不到布局元素的解决方法Appium在进行自动化测试时,当Dialog/DialogFragment关闭后找不到布局元素。该问题属于一个Known Issue(点击这里),主要出现在Android 6.0以上。解决问题主要有两种方法:手写方法使程序先进入后台再显示:public void minimize() { dr...

2019-03-06 11:23:10 966

原创 Android中的矢量动画

Android中的矢量动画在Android中,对于矢量动画我们可以使用的是AnimatedVectorDrawableCompat,其能够兼容更多的版本(Android 4.0 (API level 14) 及以上)。对于API 24及更高版本,此类会自动委托给AnimatedVectorDrawable。 对于API 24之下的版本,此类相当是带有ObjectAnimator和Animato...

2019-02-07 22:26:19 1539 2

原创 React Native 列表的总结

React Native 列表的总结FlatList和SectionList都是React Native中高性能的列表组件。他们有着共同的特点:完全跨平台。行组件显示或隐藏时可配置回调事件。支持单独的头部组件。支持单独的尾部组件。支持自定义行间分隔线。支持下拉刷新。支持上拉加载。实质两者都是基于VirtualizedList组件的封装,因此需要注意:当某行滑出渲染区域之外...

2018-12-19 09:38:31 1792

原创 Kotlin中的@JvmOverloads

Normally, if you write a Kotlin function with default parameter values, it will be visible in Java only as a full signature, with all parameters present. If you wish to expose multiple overloads to J...

2018-12-18 16:45:24 536

原创 React Native与Android原生之间的通讯

React Native与Android原生之间的通讯在React Native中可以通过在java层自定义@ReactMethod方式给JavaScript调用,这样在JavaScript层就可以直接调用Android中的Native方法。但是很多场景下需要我们去回调获取结果。这时候就需要实现RN与原生之间的通讯。对于RN与Android原生之间的通讯,主要有以下几种方式帮助我们来实现:...

2018-12-13 16:02:42 922

原创 MobX的一些总结

MobXMobX通过透明的函数响应式编程,使得其成为一种简单、可扩展的状态管理工具。使用MobX可以将应用编程响应式的编程方式。其背后的原理是:任何源自应用状态的东⻄都应该自动地获得。React和MobX是一对强力组合。React通过提高机制把应用状态转换为可渲染组件树并对其进行渲染;MobX提供机制来存储和更新应用状态供React使用。1. 概念MobX主要区分了概念:Stat...

2018-12-13 14:35:45 925

原创 React Native接入现有Android原生工程并实现简单的RN与Android通信

对于一个新的工程,可以直接使用React Native进行开发,但是对于现有的项目如果全面改造将会是一项巨大的工程。好在RN提供了方式为我们接入现有工程。同时,对于Android中的一些组件,RN不一定有已经继承的实现方式,我们可以通过实现ReactMethod的方式实现RN使用Android原生组件。1. 接入React Native1. RN开发环境准备及Android原生项目这里不再赘...

2018-12-11 10:25:54 972

转载 Kotlin的let、with、run、apply、also

作用域函数Kotlin中提供了一系列的作用域函数,这些函数写起来很简单,但是提供的功能很强大。他们是带接受者的Lambda。不过对于Lambda有一点需要注意:在lambda表达式,只支持单抽象方法模型,也就是说设计的接口里面只有一个抽象的方法,才符合lambda表达式的规则,多个回调方法不支持。letlet扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,l...

2018-12-06 17:36:51 340 1

转载 Git的一些总结

Git 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 而对于Git这样的分布式版本控制系统 ,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份 。1. 初次运行 Git 前的配置G...

2018-07-11 15:33:41 153

原创 排序算法的实现(Java)

1. 冒泡排序/** * Title: 交换排序中的冒泡排序 ,一般情形下指的是优化后的冒泡排序,最多进行n-1次比较,依赖于初始序列 * Description:因为越大的元素会经由交换慢慢"浮"到数列的顶端(最后位置),最大的数最后才确定下来,所以称为冒泡排序 * 时间复杂度:最好情形O(n),平均情形O(n^2),最差情形O(n^2) * 空间复杂度:O(1) * 稳 定 ...

2018-05-02 15:14:42 124

原创 Android Apk打包的流程

APK是Android Package的缩写,即Android安装包(apk)。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件基于 zip 文件格式,它与 jar 文件的构造方式相似。1. APK包中有些什么 文件名称 文件类型 文件作用 classes.dex 文件 java源文件经过编译和转换后生...

2018-04-24 14:53:31 604

转载 Https

HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。1...

2018-04-18 16:26:52 314

原创 Android TabLayout 的一些小问题

在做项目时,遇到一个问题,有时候在tabLayout.setupWithViewPager(viewPager)前设置标题到后来可能就变成空白的,不显示Tab的title,解决了很久都不行。结果研究,有两种方法来解决问题:在tabLayout.setupWithViewPager(viewPager)手动重新添加标题,这里不再赘述;重写adapter中的getPageTitlea...

2018-04-13 14:56:34 570

转载 Android ViewStub, Gone & Invisible

1. invisibleview设置为invisible时,view在layout布局文件中会占用位置,但是view为不可见,该view还是会创建对象,会被初始化,会占用资源。2. goneview设置gone时,view在layout布局文件中不占用位置,但是该view还是会创建对象,会被初始化,会占用内存等资源。3. ViewStubViewStub是一个轻量级的V...

2018-04-13 09:18:39 531

原创 Android Handler

1. 概念handler通过发送和处理Message和Runnable对象来关联向对应线程的MessageQueue。可以让对应的Message和Runnable在未来的某个时间点进行相应的操作;让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程。2. 作用当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要...

2018-04-09 16:19:25 151

原创 Android 责任链模式

1. 概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给链中的下一个对象,直到有对象处理它为止。2. 使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定;在不明确指定接受者的情况下,向多个对象中的一个提交一个请求;可动态指定一组对象处理请求,客户端可以动态创建责任链来处理请求。...

2018-04-08 14:10:29 206

转载 神经网络的直观解释

转载自: http://www.hackcv.com/index.php/archives/104/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 卷积神经网络(ConvNets 或者 CNNs)属于神经网络的范畴,已经在诸如图像识别和分类的领域证明了其高效的能力。卷积神经网络可以成功识别人脸、物...

2018-04-08 10:50:15 1408

转载 Android RecyclerView和ListView的异同

1. ViewHolderViewHolder是用来保存视图引用的类,无论是ListView亦或是RecyclerView。在ListView中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的话,ListView每次getView的时候都会调用findViewById(int),这将导致ListView性...

2018-04-07 11:03:34 2963

原创 Android 观察者模式

1. 概念定义对象之间一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。2. 使用场景一个抽象模型有两个方面,其中一个方面依赖于另一个方面;一个对象的改变将导致一个或多个其他对象也发送改变;需要在系统中创建一个触发链。3. UML抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观...

2018-04-07 10:35:14 164

原创 Android 模板模式

1. 概念模板方法是通过定义一个算法骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤来实现特定的算法。2. 使用场景多个子类有公有的方法,并且逻辑基本相同时;重要、复杂的算法,可以把核心算法设计为模板方法;重构时,模板模式是一个经常使用的模式。抽象模板&具体模板:定义的数量和类型/模板的方法3. 在Android中的实际应用activity...

2018-04-07 08:59:45 251

原创 Android 策略模式

1. 概念策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。2. 使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,而又需要使用if-else 或者 ...

2018-04-06 09:13:43 313

原创 Android 组合模式

1. 概念将对象以树形结构组织起来,以达成“部分——整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。2. 使用场景需要表示一个对象整体或部分层次;让客户能够忽略不同对象层次的变化。3. 优点高层模块调用简单节点自由增加4. 缺点控制叶子节点方法较为困难;由于是使用继承,则增加方法困难5. Android中的使用And...

2018-04-06 08:40:55 155

原创 Android 外观模式

1. 概念外观模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单的使用子系统,它负责把客户端的请求转发给子系统内部的各个模块进行处理。外观模式提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。 2. 使用场景如果你希望为复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。使用外观对象对实现大部分客户需要...

2018-04-05 12:54:10 218

转载 Android 装饰模式

1. 概念动态地给一个对象增加一些额外的职责,就增加对象功能而言,装饰模式比生成子类实现更加灵活,装饰模式是一种对象结构型模式。可以是继承的一种替代。2. 使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象增加职责;当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式;3. UMLComponent:抽象组件,可以是一...

2018-04-05 11:16:25 111

原创 Android Adapter模式

1. 模式定义将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 其别名为包装器(Wrapper)2. 使用场景如果你想要使用一个已经存在的类,但是它的接口不符合你的需求,这种情况可以使用适配器模式,来把已有的实现转换成你需要的接口;如果你想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作,这种情况可以...

2018-04-05 10:33:06 168

原创 Android Builder模式

1. 模式定义Builder模式是比较复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,使得同样的构建过程可以创建不同的表示。2. 使用场景相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时;产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适...

2018-04-05 09:52:32 139

原创 Caffe AlexNet

AlexNet是CNN领域内一个具有重要历史意义的网络模型,它证明了CNN在复杂模型下的有效性,并使用GPU使大数据训练在可接受的时间范围内得到了结果。1. 模型解读AlexNet共有八层结构,有60M以上的参数量。其前五层是卷积层,后三层是全连接层,最后一个全连接层的输出具有1000个输出的softmax。网络最后的优化目标是最大化平均的multinomial logis...

2018-04-03 11:14:20 462

原创 Caffe MNIST LeNet

LeNet是一个用来识别手写数字的最经典的卷积神经网络,是Yann LeCun在1998年设计并提出的,是早期神经网络中最具有代表性的实现系统之一,其论文是CNN领域的第一篇经典之作。1. LeNet模型简介LeNet网络的规模较小,但包含了卷基层、Pooling层、全连接层,这些都是构成现代CNN网络的基本组件,后续更加复杂的网络模型都离不开这些基本网络层组件。LeN...

2018-04-02 17:37:46 374

原创 GridView & BaseAdapter设置四宫格的一些问题

最近在项目中需要在主页中设置一个四宫格的页面, 于是就使用了GrideView与BaseAdapter的组合,但是完成后它会滑动,并不是固定的,而且它也不是适应其父容器大小设置的.要解决这个问题,我在BaseAdapter的getView中重写了item的大小:@Override public View getView(int i, View view, ViewGroup v...

2018-03-19 14:23:21 427

转载 Hashmap&Hashtable

HashMap和HashTable的区别一种比较简单的回答是: HashMap HashTable 非线程安全的 线程安全的 键和值都允许有null存在 都不允许 效率高 效率低1. HashMap是非线程安全的,HashTable是线程安全的,内部的方法基本都经过synchronized修饰。 2. 因为同步、哈希性能等原因,性能...

2018-03-19 07:40:38 154

原创 Java 类加载器

每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。简单的说,类加载器(class load...

2018-03-18 22:57:47 187

原创 Java异常处理

异常是指程序运行时(非编译时)所发生的非正常情况或错误,当程序违反了语义规则时,JVM就会将出现的错误表示为一个异常并抛出。这个异常可以在catch程序块中进行捕获,然后进行处理。异常处理的目的就是为了提高程序的安全性与健壮性。1. Error&Exception1.1 ErrorError表示程序在运行期间出现了非常严重的错误,并且该错误是不可恢复的,...

2018-03-15 08:15:00 137

转载 Java synchronized&volatile

synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象;静态同步方法,锁是当前类的class对象;同步方法块,锁是括号里面的对象。1. synchronized对象锁synchroni...

2018-03-12 08:20:34 151

转载 Java Thread run&start

实现并启动线程有两种方法: 1. 写一个类继承自Thread类,重写run方法。用start方法启动线程; 2. 写一个类实现Runnable接口,实现run方法。用new Thread(Runnable target).start()方法来启动。1. start 和 run 方法解释1.1 start:  用start方法来启动线程,真正实现了多线程运行,这时无需等待run方...

2018-03-11 16:31:23 201

转载 Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。1. ...

2018-03-11 09:47:44 135

原创 OpenCV for Android (6)——通过使用JNI实现骨架化

OpenCV在Android上虽然有自己的开源库,能够处理很多的图像问题,但是一旦涉及到一些需要使用算法方面的问题比如骨架化或者像素点操作的问题时,其处理速度会变得很满,且处理效果并不是十分完美。例如我最近需要实现书法字的骨架化问题,对于使用导入的OpenCV库,如果使用像素点的逐个操作,要是再放在主线程肯定会导致ANR,毕竟这样的操作太耗时了。而改用其他的骨架化算法效果不佳:publ...

2018-03-10 22:25:21 409

原创 CMake的一些小问题

最近在学习Cmake,在学习的过程中遇到一个问题: 安装共享库和头文件,在CMakeList.txt中添加了如下命令INSTALL(TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)INSTALL(FILES hello.h DESTINATION include/hello...

2018-03-07 09:47:25 1066 2

转载 Android Lint

Android Studio 提供一个名为 Lint 的代码扫描工具,可帮助您发现并纠正代码结构质量的问题,而无需实际执行该应用,也不必编写测试用例。该工具会报告其检测到的每个问题并提供该问题的描述消息和严重级别,以便您可以快速确定需要优先进行哪些关键改进。此外,您可以调低问题的严重级别,忽略与项目无关的问题,也可以调高严重级别,以突出特定问题。Android Lint是一个静态代码分...

2018-03-04 09:38:06 153

转载 Android Hotfix

Hotfix:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力。热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术。Android平台出现了一些优秀的热更新方案,主要可以分为两类: - 基于multidex的热更新框架,包括Nuwa、Tinker等; - 基于native hook方案,如阿里开源的Andfix和Dexposed。...

2018-03-03 09:26:21 223

转载 Android中的引用

在JDK1.2以前的版本中,若一个对象不被任何变量引用,则程序就无法再使用这个对象。从JDK1.2版本开始,把对象的引用分为4种级别,从而使程序能够更加灵活的控制对象的生命周期。这4种级别由高到低依次为Strong Reference(强引用)、Soft Reference(软引用)、Weak Reference(弱引用)、Phantom Reference(虚引用)。1. Strong ...

2018-02-28 21:38:09 130

空空如也

空空如也

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

TA关注的人

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