自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(211)
  • 资源 (9)
  • 收藏
  • 关注

原创 从0开始搭建Flutter开发环境

准备工作Mac OS之所以选择在Mac上开发,是因为它同时支持Android和IOS系统,对Android Studio和xCode等IDE使用者也比较友好另外, Mac OS已经内置了...

2019-09-14 10:10:01 394

原创 安利一波Flutter

"一套代码,多平台运行"一直是当今互联网喊得比较响亮的口号。各种跨平台方案也是如雨后春笋般涌现,比如H5,Week等。其中最经典的莫过于React Native。但是,由...

2019-09-13 00:00:52 175

原创 提升算法数据结构的几个网站

与同事之间的一段对话,搞得我的小心脏又是扑通扑通的。最起码证明自己坚持在算法这条路上还是有意义的。平复心情,决定还是写一篇我自己感觉比较好用的几个提升算法技能网站,也当做是做一下自我总结。学习算法可能会遇到的障碍有时候我们自认为对一些理论知识已经掌握的足够扎实。比如说链表。相信大多数开发人员对于链表结构不会陌生;对于链表的工作机制了然于心,链表各种操作的时间复杂度也能做到侃侃而谈;甚至...

2019-08-28 22:03:40 731

原创 时间复杂度分析(二)--常见时间复杂度

之前我介绍了大O时间复杂度的由来和表示方式(算法时间复杂度分析(一)), 最后介绍了几个分析大O时间复杂度的简单规则。这一篇介绍一些平时开发中经常会遇到的时间复杂度。在我们实际开发过程中...

2019-08-28 21:54:56 697

原创 共享单车Android面试回忆

今天一个朋友分享了一下他前端时间去某单车公司面试资深安卓工程师岗位的经历。因为他也是通过朋友内推,所以并没有给他定是什么级别。一共经历了三轮技术面试,第一轮是一个高级工程师,第二轮是资深...

2019-07-06 22:13:52 351

原创 算法时间复杂度分析(一)

金庸武侠中描述一种武功招式的时候,经常会用到 “快、准、狠” 这3个字眼。同样,在计算机中我们衡量一种算法的执行效率的时候也会考量3个方面:“快、省、稳”。具体点来讲就是我们在实现某一种算法的时候,最终目的就是要求计算机(CPU)在最短的时间内,用最少的内存稳定的输出正确的结果。这一章节主要来理解 “快”,至于“省” 和 “稳”,我会在后续章节进行讲解。那如何来判断某一段代码运行的是否足够快呢...

2019-07-03 22:50:59 11590 4

原创 Activity启动流程

本文分析的源代码基于 android27Activity的启动流程相当复杂,比如我们在Activity A打开Activity B。这一过程开始于A.startActivity 经过...

2019-05-07 21:59:01 1119

原创 树(Tree)简介

计算机科学中,树(Tree)是将一组被称为结点(Node)的元素按照层次结构的方式组织而成。在这个层次结构最顶端的结点称为根, 与根直接相连的结点称为根的子结点。通常子节点本身也可以拥有...

2019-04-18 15:26:37 688

原创 如何写一个完美的单例类

设计模式在软件开发中一直是一个非常热门的话题。通常来说,设计模式是一种解决某一类软件开发问题的解决方案。而这篇文章所讲的单例模式就是创建型模式中的一种。单例模式的目的单例模式的主要目的是...

2019-04-12 22:40:00 663

原创 队列

队列&栈队列Queue是一种同栈Stack非常类似的结构。唯一的不同点是:最先被压入栈的数据,将会在最后被弹出栈;而队列与栈相反,最先进入队列的数据会被最先从队列中取出。这个非常...

2019-02-13 22:09:50 151

原创 Leetcode第1题: 快速查找数组中“和”为X的两个数

题目快速判断在一个数组中,是否存在两个数字,让这两个数字之和等于一个给定的值 X以数组num[] = {11, 15, 6, 8, 9, 10}为例:当x = 16时, 存在两个数字的...

2019-02-08 23:13:16 488

原创 栈Stack

文章结构1什么是栈具体描述栈的相关特点与使用场景2代码实现如何构建一个栈,以及需要实现哪几个方法3栈的应用举几个栈在生活中使用的例子,包括文件编辑器、浏览器、调用栈4面试题举例举例讲解几...

2019-02-07 19:11:16 196

原创 链表插入操作的时间复杂度真的是O(1)吗?

提起链表,很多人可能都会知道它的优势就是能够快速插入、删除数据。但是往链表中插入数据的时间复杂度真的是O(1)吗?相信看完这篇文章,读者会有自己的答案了。为什么用一节来讲解链表代码实现 ...

2019-01-24 22:29:34 19361 9

原创 初识链表

简介链表应该是面试时被提及最频繁的数据结构。所谓链表其实就是把一组节点通过指针引用的方式串成一条链。何为节点?链表中的节点就相当于一串珍珠项链上的一颗颗珍珠。每一个节点包含数据data,...

2019-01-23 09:16:26 194

原创 数组

简介数组(Array)是一种线性表结构,它用一组连续内存来存储一组具有相同类型的数据。 通过下标来访问数组中的数据元素。连续内存就如同我们去电影院看电影时,你跟你女朋友一定会选两个连在一...

2019-01-15 22:51:18 120

原创 数据结构--红黑树

为什么要平衡在上一节中,我们了解了 二叉搜索树 具有较稳定和较高的插入搜索效率。但是在某些极端情况下, 它的效率也会退化到 链表 的地步。比如以上一堆数据,按照插入顺序的不同,所构建二叉搜索树的结构也会不一样,如下图所示:很明显图a的效率肯定比图b效率高, 我们可以总结为: 在具有相同结点个数的情况下,一棵二叉搜索树的高度越低,它的效率也就越高。因此我们需要做的就是,不管被插入...

2018-12-28 22:36:27 1398 2

原创 数据结构--二叉搜索树

上一节我们讲了二叉树的定义,以及二叉树的遍历,这是面试中经常会问到的问题。但是坦白讲,在我们日常开发工作中普通的二叉树与二叉树遍历被用到的机会其实并不是很高。为什么这么说呢? 解答这道问题之前我们先来看一道面试题:用一种数据结构将如下一组数据保存在内存中, 并提供元素查找操作64, 50, 79, 10, 71, 30, 9, 88假如我们使用完全二叉树来保存这组数据,则这棵树会是如下所...

2018-12-22 22:27:23 2125 5

原创 数据结构--二叉树

1

2018-12-19 22:08:05 1745 2

原创 数据结构--树(Tree)

引入树(Tree)是一种非线性结构。其内部数据并不是以线性的方式存储在内存中,而是以一种层级的关系保存的内存当中。这种层级是什么意思呢? 举个例子,现实生活中其实有很多关系都是一层级的方式存在的。比较经典的有以下几种公司中的组织架构关系:家族族谱比赛的对阵表植物的根茎以上几种都是按照树形结构组织数据的绝好例子。树の定义接下来看一下在计算机科学中,树(Tree)是如何被定义...

2018-12-14 14:47:45 1419

原创 数据结构--树(Tree)的学习线路

不管是在面试时,还是日常开发过程中。树都是一种曝光率极高的一种数据结构。因此掌握树这项技能包对于开发工程师来说是必不可少的。但是树的种类很多,作为一个基本及格的工程师应该掌握哪些树,又该掌握到什么程度呢?我个人认为,对于树这种数据结构,只要掌握(最好是能信手拈来)以下几项就基本能够达到大部分的面试要求.什么是树知道树的定义,以及跟树相关的各个术语,比如根节点、叶子结点、树的高度等等。二...

2018-12-14 14:45:21 2197

原创 数据结构--队列

队列队列是一种同栈Stack非常类似的结构。唯一的不同点是:最先被压入栈的数据,将会在最后被弹出栈;而队列与之相反,最先进入队列的数据会被最先从队列中取出。这个非常好理解,比如我们在超市买东西的时候,需要排队结账。最先到达收银台的人会先结账。队列就是符合这种规律的一种数据结构:也就是我们常说的先进先出(FIFO)原则。基本操作我们已经知道,栈支持两种基本操作: 入栈(push)和出栈(po...

2018-12-02 13:50:33 517

原创 数据结构--栈

理解栈在理解"栈(Stack)"的时候,经常会用一个非常贴切的例子来理解它:就是一摞叠在一起的盘子。我们在放盘子的时候都是从下往上一个一个的放,反之在取盘子的时候都是从上往下一个一个的取出来。也就是说最先放进去的盘子在最后时刻才能被取出来。这就是我们常说的后进先出(LIFO)或者先进后出原则(FILO)。如下图所示:注意:正如装盘子的容器的容量是有限的, 一个栈的容量也是有限的,因此在往一...

2018-11-28 09:37:16 264

翻译 单链表反转

给定一个链表的头结点(Head), 根据这个Head将链表进行反转比如如下几种情况:输入如下链表的头结点 :1->2->3->4->NULL则输出结果为 ::4->3->2->1->NULL输入如下链表的头结点:1->2->3->4-&amp

2018-11-20 16:16:14 231

原创 数据结构--链表

简介同数组一样,链表也是一种线性结构。但是同数组不一样的是链表并不需要一组连续的内存空间来存储数据。取而代之的是,它通过“指针”将一组零散的内存串联起来,用一张图来体现链表和数组的区别如下:这样做的好处就是:可以动态的为链表申请所需要的内存举个例子,假设我们要申请一个100MB大小的数组,如果内存中没有连续的、足够大的存储空间时,几遍内存的剩余总空间大于100MB,仍然会申请失败;而链...

2018-11-18 13:49:42 517

原创 快速判断某一个数组是否是另一个数组的子集

给定两个无序数组:数组arr1[0…m-1] 和 数组arr2[0…n-1] ,判断数组arr2是否是arr1的子集。比如arr1[] = {11, 1, 13, 21, 3, 7}arr2[] = {11, 3, 7, 1}输出truearr1[] = {1, 2, 3, 4, 5, 6},arr2[] = {1, 2, 4}输出truearr1[] = {10, 5,...

2018-11-13 21:40:15 18209 2

原创 快速查找数组中“和”为X的两个数

快速判断在一个数组中,是否存在两个数字,让这两个数字之和等于一个给定的值 X。以数组 arr[] = {11, 15, 6, 8, 9, 10} 为例:当x = 16时, 存在两个数字的和为16: (6, 10) 输出: true当x = 35时, 存在两个数字的和为35: (26, 9) 输出: true当x = 45时, 不存在两个数字的和为45输出: false普通解法...

2018-11-11 21:29:10 3484

原创 数据结构--数组

定义数组(Array)是一种线性表结构,它用一组连续的内存空间来存储一组具有相同类型的数据。在这个定义中有几个关键词:线性表所谓线性表就是数据会排成像一条线一样的结构。也就是说线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表包括:顺序表和链表顺序表里面元素的地址是连续的,比如数组或者用数组实现的队列、栈等链表里面节点的地...

2018-11-06 14:05:51 626

原创 快速排序

简介:快速排序是一种利用分治思想的排序方法。它的最坏情况时间复杂度为O(n2)的排序算法。虽然最坏情况很差,但是快排通常是实际排序应用中最好的选择,因为它的平均性能非常好;它的期望时间复杂度是O(N * LogN),而且O(N * LogN)中隐含的常数因子非常小。另外它能够进行原址排序。基本思想通过一次 分区操作(Partition) 将需要排序的数据分割成独立的两部分,其中一部分的所有数...

2018-10-31 10:23:05 1196

原创 插入排序

算法思想插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较,如下图所示:那插曲排序是如何借助上面提到的思想来实现排序的呢?首先我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一...

2018-10-24 17:05:13 18178 6

原创 冒泡排序的实现与优化

Java实现通过使用Java 8的Lambda表达式,实现冒泡排序代码如下:void bubbleSort(Integer[] arr) { int n = arr.length; IntStream.range(0, n - 1) .flatMap(i -> IntStream.range(i + 1, n - i)) .forEach(j -> ...

2018-10-03 22:46:09 360

原创 冒泡排序(Bubble Sort)

介绍冒泡排序是一种简单的排序方法。它的核心思想是对数组进行=N - 1=次遍历,每一次遍历的过程中,会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!方法论正像刚才介绍的一样,为了给一个数组进行排序,我们遍历这个数组并且依次...

2018-10-03 22:03:41 686

原创 是否应该对private的方法写UnitTest code

最近在写UnitTest代码的时候遇到了点小问题,在解决过程当中有了点小心得,做一下记录。 完整代码在此处下载: https://download.csdn.net/download/zxm317122667/10652780问题主要对于 private 方法的单元测试。比如如下代码:有两个类,分别是Fish和Rod 鱼Fish.javapackage com.example....

2018-09-07 19:36:46 1310

原创 ARCore快速入门--使用GLSurfaceView和ARCore绘制3D模型

前言

2018-07-16 19:50:37 3935 7

原创 ARCore快速入门--添加ARCore并检测设备是否安装或支持

在开始写真正的ARCOre API之前,我们需要先在工程中添加对ARCore的支持,并且还要检查一下当前设备是否支持ARCore操作。主要是以下几项修改:清单文件在谷歌官方对ARCore的介绍中,提到了有两种类型的ARCore AppAR Required 强制性AR应用AR Optional 选择性AR应用所谓强制性AR应用,就是如果设备上没有安装 AR, 那么你的应用是...

2018-06-05 22:12:53 10310 2

原创 ARCore快速入门--在模拟器(Emulator)上运行AR应用

As Usual, GIF FirstWhy EmulatorARCore 目前并不是支持所有的Android设备,而只是支持了一些主流手机,下图是官网截止目前为止给出的一份Support list Manufacturer Model Notes Asus Zenone AR Zenfone ARES ...

2018-05-23 18:03:28 10494 3

原创 ARCore快速入门--简介

简介ARCore 是一套用来创建AR(augmented reality) App的SDK。 官方网站是https://developers.google.com/ar/develop/。它可以在现下多种流行开发平台中使用. 它本身封装了一套本地API,通过它可以实现一些最基础的AR效果:比如 手势监听、世界的定义、灯光识别 等 通俗来讲就是在用户视觉(主要是Camera)的基础上,覆...

2018-05-23 11:09:32 15868 1

翻译 自定义ViewPager实现仿 "多邻国" 的闪卡效果

原文链接: https://rubensousa.github.io/2016/08/viewpagercards (在原文的基础上,为了便于理解,添加了一点自己的理解)如果你使用过 Duolingo (多邻国免费学习英语), 那你很有可能看到过下面这种界面效果: 看起来相当的酷对不对? 鉴于效果不错并且使用场景很多,因此我决定开始仿照它做一个类似的 Sample首先分析一下这个效果...

2018-04-16 10:34:34 1296

原创 OpenGL如何设置抗锯齿

Texture mapping is a technique that applies an image onto an object’s surface as if the image were a decal or cellophane shrink-wrap. The image is created in texture space, with an (s, t) coordinate s

2018-01-24 12:22:59 1492

原创 将Html的tag标签使用OpenGL渲染到Texture中实例

/** * transform a Html tag String to Texture * * @param htmlString the html tag String like * "italic bold italic+bold italic+bold+un" * @param textSize d

2018-01-24 12:21:16 541

原创 Mockito + Robolectrie + RxJava 测试MVP架构项目

前言如果你在网上搜 哪种项目架构更好 的时候, 会看到成百上千的博客对各种架构解释优缺点。 但是不幸的是大多数文章都没有提到非常重要的一点: 单元测试 在我们选择某一种项目架构的时候,起决定性因素的无非是个人喜好或者项目需求。我并不认为 MVP 架构比 MVVM 架构更好,或者说 MVP 架构就是一种完美的客户解决方案。让我决定使用 MVP 架构的唯一理由就是它的 简洁性MVP

2018-01-12 11:51:19 770

优化对Private方法进行单元测试Demo

不要对private方法写UnitTest code。这说明调用这个private方法的public接口做了太多它不该做的事情

2018-09-07

GreenDaoDemo

GreenDao的详细实用案例,包含List<String>类型的保存,已经多表之间的关联

2017-06-21

主题切换应用

http://blog.csdn.net/zxm317122667/article/details/52688882 一步一步教你实现主题切换 注意:需要先运行并安装压缩包中的BlackTheme和WhiteTheme两个应用,最后在运行安装SwitchThemeDemo

2016-09-28

MaterialPullToRefresh

自定义FrameLayout,实现下拉刷新 带水波纹的下拉刷新MaterialPullToRefresh http://blog.csdn.net/zxm317122667/article/details/52094048

2016-08-02

Picasso实现下载图片进度提示

http://blog.csdn.net/zxm317122667/article/details/51814095

2016-07-03

MyPopListButton

Android自定义Button结合PopupWindow和ListView实现顺序显示下拉菜单控件 http://blog.csdn.net/zxm317122667/article/details/50929798

2016-03-19

Scrollview_ViewPager_ListView

Scrollview中嵌套ViewPager和ListView的问题和解决方案

2016-03-17

自定义ImageView,实现点击之后算出点击的是身体的哪个部位

自定义ImageView,实现点击之后算出点击的是身体的哪个部位

2015-08-13

自定义VIewGroup实现仿淘宝商品详情页

仿照X宝的商品详情页, 拉到页面底部时有一个粘滞效果,如果用户继续向上拉的话就进入下一页

2015-07-23

空空如也

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

TA关注的人

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