- 博客(95)
- 资源 (26)
- 问答 (1)
- 收藏
- 关注
原创 数据结构之二分搜索树增删改查和遍历实现
1. 概念是指一棵空树或者具有下列性质的二叉树:1. 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;2. 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;3. 任意节点的左、右子树也分别为二叉查找树;4. 没有键值相等的节点。2. 构建一个二分搜素树节点 public class TreeNode<E exte...
2018-08-29 15:07:00 446
原创 数据结构之递归实现
1. 概念解释:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。2...
2018-08-29 00:01:42 2223
原创 超详细的Glide源码解析
1. 简单使用Glide.with(this).load(url) .placeholder(R.mipmap.ic_launcher) .error(R.mipmap.ic_launcher) .centerCrop() .skipMemoryCache(tr...
2018-08-19 22:38:27 5380 1
原创 Java-堆排序
1.概念 是一种树形选择排序,在排序过程中,将待排序的记录r[1..n]看成是一颗完全二叉树的顺序存储结构, 利用完全二叉树中的双节点和孩子节点之间的内在关系,在当前无序的序列中选择关键字最大或最小的记录。2.思路 实现堆排序需解决两个问题: (1)如何将n 个待排序的数建成堆; (2)输出堆顶元素后,怎样调整剩余n-1 个元素,使其成为一个新堆。...
2018-04-01 16:54:42 108
原创 Java-基数排序
1.桶式排序概念 有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字, 将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数)2.基数排序概念 基于桶式排序,将要排序的数字一位一位的比较,经历多次桶式排序,得出最终的序列 如果要排序的元素可以分成多位,并且每一位都在一个固定的范围内,则可以用这种排序方法,...
2018-03-31 00:02:41 206
原创 Java-希尔排序
1. 基本概念 基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d, 对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序, 当增量减到1时,进行直接插入排序后,排序完成。2. 算法分析 1、将包含n个元素的数组,分成n/2个数组序列,第一个数据...
2018-03-30 17:34:34 154
原创 Java-归并排序
1.原理/思路 归并排序的设计思路是:将待排序的数组分为两个字数组,分别对它们按同样的方式进行排序,最后将两个有序子数组 归并成一个有序数组。2.分析做法1.将当前序列一分为二,求出分裂点mid = (left + right) / 2;2.对子序列arr[left,mid]递归,进行归并排序,结果放入data[left,mid]中;3.对子序列arr[mid+1,righ...
2018-03-30 00:31:57 155
原创 快速排序(面试必备,多种解法)
1.原理/思路快速排序一般基于递归实现。其思路是这样的:1.选定一个合适的值(理想情况中值最好,但实现中一般使用数组第一个值),称为“枢轴”(pivot)。2.基于这个值,将数组分为两部分,较小的分在左边,较大的分在右边。3.可以肯定,如此一轮下来,这个枢轴的位置一定在最终位置上。4.对两个子数组分别重复上述过程,直到每个数组只有一个元素。5.排序完成。2.分析做法1.附设...
2018-03-29 23:52:02 383
原创 Java-插入排序
1.原理 把n个待排序的元素看成一个有序表和无序表。一开始有序表只包含一个元素,无序表中包含n-1个元素。 排序过程中每次从无序表中取出第一个元素,把它依次与有序表中的元素进行比较。然后把它插入到有序表的适当位置, 形成新的有序表。 通俗的讲:假设第一个元素是有序的,后面的元素往前插入,依次进行比较,小的往前挪,大的往后挪,找到合适的位置插入。 打个形象的比方就是打扑克牌时的摆牌。...
2018-03-29 23:11:50 235
原创 Java-选择排序
1.原理 每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。 也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。2.思路 给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据, 将它与arr[0]交换;第2趟,在待排序数...
2018-03-29 21:20:48 124
原创 Java-冒泡排序
1.原理比较两个相邻的元素,将值大的元素交换至右端。2.思路依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。分析:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N...
2018-03-29 20:59:45 226
原创 scheme唤醒外部APP
1. 跳转原理使用 scheme 的方式去实现跳转,先整理一下思路,首先如果要外部能唤醒 App ,那么 App 肯定要先注册一个全局的事件监听吧。然后,应该有一个页面来处理接受事件,然后解析出具体的参数,根据参数跳转具体的页面,就是这么简单。2. 目标APP注册这里需要使用到 Android Activity中的 <intent-filter> ,现在可以...
2018-03-17 20:51:19 2885
原创 android原生与js互调
1.初始化1.布局中添加webview控件2.让webview支持jswebView.getSettings().setJavaScriptEnabled(true);3.加载网页webView.loadUrl(url);4.让webview加载网页id_webview.setWebChromeClient(new WebChromeClient());2.原
2018-01-19 22:30:13 4581
原创 Android Design Support Library使用
1. 添加依赖compile 'com.android.support:design:25.1.1'2. Snackbar介绍SnackBar通过在屏幕底部展示简洁的信息,为一个操作提供了一个轻量级的反馈,并且在Snackbar中还可以包含一个操作,在同一时间内,仅且只能显示一个 Snackbar,它的显示依赖于UI,不像Toast那样可以脱离应用显示。它的用法和Toast很相似
2017-10-24 19:37:03 541
原创 基于七牛播放器的直播
这个播放器是用的七牛的播放器,直播一般都是需要后台先推流,然后根据后台给的播放地址开始直播,我这里只是一个演示,自己在网上找了一个地址,可以直接播放。
2017-10-10 22:31:11 1854 1
原创 仿小米计步折线图
项目用到的技术点mvp简单应用自定义控件使用1. ScrollView的自定义 因为我们需要的是折线图可以左右滑动,但是我们需要实时计算滑动距离,所以需要自己定义,代码比较简单/* * ScrollView并没有实现滚动监听,所以我们必须自行实现对ScrollView的监听, * 我们很自然的想到在onTouchEvent()方法中实现对滚动横轴进行监听 */public clas
2017-10-01 20:06:53 950
原创 基于VideoView的自定义控制面板的视频播放器
项目用到的技术点和亮点VideoView封装视频播放工具类自定义视频控制面板手势识别器的使用1. VideoView封装视频播放工具类 视频播放这些其实都挺简单的,VideoView这个类都提供了相应方法,详细见代码 代码都比较简单,不过需要注意的是要在主线程中更新视频面板的UI信息。/***************************************************
2017-09-23 22:19:41 3443 2
原创 语音播放与录音 (五分钟学会用 非常全面)
项目用到的技术点和亮点语音录音 (单个和列表)语音播放(单个和列表)语音录音封装语音播放器封装语音列表顺序播放语音列表单个播放 复用问题处理因为安装原生录音不能录mp3格式文件 而mp3格式是安卓和ios公用的,所以我们需要的是能直接录取mp3文件或者录完的格式转成mp3格式 下面添加这个库 能直接录mp3文件,我觉得是最方便的 compile ‘com.czt.mp3recor
2017-09-19 23:53:00 5382
原创 电话,手机,微信账号,邮箱正则表达式校验
正则表达式用好了真的挺强大手机号校验电话校验邮箱校验微信账号校验1. 手机号校验 /** * 校验规则: * 手机号为11位 * 首位只能为1 * 第二位只能是3-9数字 * 后面9位可以是任意数字 * @param phoneNum * @return */ public boolean che
2017-08-11 15:14:26 3735
原创 RecycleView的优雅使用
recycleView出来也有一段时间了,虽然说也存在一些缺点和不足,但是总的来说是比listView强大很多,说说recycleview的优点吧集成了ListView和GridView的所有功能,还支持瀑布流功能支持条目插入,删除动画,移动动画支持拖拽排序,侧滑删除,实现比较简单封装了viewholder的回收复用通过布局管理器就能控制列表的横纵向局部刷新方便1. RecycleVi
2017-08-03 15:50:00 499
原创 RxJava+Retrofit+okhttp+mvp+butterknife实现的简易开源项目
首先介绍下该项目用到的技术点和亮点(大神请绕道,小弟菜鸡)1. Rxjava+Retrofit+okhttp搭建的网络框架2. mvp设计模式3. butterknife注解方式查找控件,减少findViewById冗余代码4. Glide图片加载框架5. Recyclerview结合SwipeRefreshLayout实现列表和下拉刷新6. 封装了ListView和GridView,Re
2017-02-12 22:19:00 3752 5
原创 数据结构之链表实现
分析:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。单链表是链表中结构最简单的。一个单链表的节点(Node)分为两个部分,一个是数据域,一个是节点域。双向链表可以从两个方向遍历1. 单向链表1)定义一个节点class Node<E> { ...
2018-08-28 22:37:58 423
原创 数据结构之栈和队列的实现
1. 分析:1. 栈的特点是先进后出2. 栈就好比一个箱子,先放进去的东西,被压在了箱子底部,需要上面的东西拿出来之后下面的东西才能拿出来。3. 队列的特点是先入先出4. 队列就好比排队买票,先排队的先买票,我可不会给你插队的5. 队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空...
2018-08-28 22:08:32 254
原创 数据结构之可变长度数组-仿ArrayList实现
分析:1. 实现一个能自动扩容的Array,基于数组实现2. 有增删改查操作3. 类似一个Arraylist结合,支持范型1.构造函数private E[] mDatas;private int size;public Array(int capacity){ mDatas = (E[]) new Object[capacity]; size = 0...
2018-08-28 21:36:11 443
原创 自定义View系列之源代码下载
1. 自定义View系列自定义View实战之开关按钮实现自定义View实战之仿土豆Loading实现自定义View实战之渐变,可拨动,带动画圆环控件实现自定义View实战之饼状图效果实现自定义View实战之仿QQ小红点实现自定义View实战之仿雷达蜘蛛网实现自定义View之钟表盘实现2. 自定义ViewGroup系列自定义ViewGroup之自定义布局的实现...
2018-07-22 17:39:13 330
原创 自定义ViewGroup之游标卡尺的实现
效果图预览 1. 分析1. 游标卡尺嘛首先得绘制一个尺子吧2. 有了尺子不得绘制刻度线3. 绘制具体刻度值4. 还要绘制能拨动的按钮,不然怎么叫游标卡尺5. 拨动尺子的时候应该是能实时看到数据2. 技术实现原理1. 尺子组成是一个长长的进度条加上带刻度线和刻度值的数据2. 进度条可以用canvas.drawRect画一个矩形3. 刻度线和刻度值分别用canvas...
2018-07-11 23:11:58 2363
原创 自定义ViewGroup之仿奥运五环的实现
图片预览 1. 分析和实现原理1. 自定义一个圆环2. 自定义ViewGroup,然后添加圆环3. onMeasue和onLayout处理4. 绘制文字2. 绘制圆环//平移坐标系到中心点canvas.translate(mCenterX,mCenterY);mPaint.setColor(mRingColor);//两种思路 画圆 或者画圆环canvas...
2018-07-11 22:22:09 406
原创 自定义ViewGroup之流式布局的实现
效果图预览1. 分析1. 流式布局就是一行可能有多个控件超过一行自动换行 2. 在onMeasure中计算子控件的宽度,如果子控件的宽度已经超过父控件的宽度了就自动换行,高度累加。3. onLayout中控制每一个子控件的左上右下的布局2. onMeasure处理 //记录每一行的宽度,width不断取最大宽度但是不能大于行的宽度 int lineWidth = 0;...
2018-07-11 21:58:48 494
原创 自定义ViewGroup之自定义布局的实现
图片预览 1. 分析1. 自定义简易FrameLayout 分别左上,右上,左下,右下4个子View2. 自定义简易LinearLayout,实现横向和纵向布局3. 自定义简易RelativeLayout,实现layout_alignParentXXX方法2. 实现原理1. 自定义ViewGroup主要是复写onMeasure测量每一个子View的宽高,复写onLayo...
2018-07-11 21:33:30 3454 1
原生自己定义的视频播放器
2017-09-24
基于VideoView的自定义控制面板的视频播放器
2017-09-23
语音录制与播放 史上最全
2017-09-19
域名的申请以及网站的上传
2014-11-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人