开发类
尽人事看天意
Android开发 软件开发
展开
-
Java 23种设计模式之组合模式
组合模式原创 2018-01-01 19:03:29 · 198 阅读 · 0 评论 -
Java 23种设计模式之单例模式
单例模式原创 2018-01-02 23:18:18 · 196 阅读 · 0 评论 -
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 阅读 · 0 评论 -
HTTPS单双向验证
Https单向和双向认证原创 2018-03-15 10:56:37 · 275 阅读 · 0 评论 -
scheme唤醒外部APP
1. 跳转原理使用 scheme 的方式去实现跳转,先整理一下思路,首先如果要外部能唤醒 App ,那么 App 肯定要先注册一个全局的事件监听吧。然后,应该有一个页面来处理接受事件,然后解析出具体的参数,根据参数跳转具体的页面,就是这么简单。2. 目标APP注册这里需要使用到 Android Activity中的 <intent-filter> ,现在可以...原创 2018-03-17 20:51:19 · 2885 阅读 · 0 评论 -
Java-冒泡排序
1.原理比较两个相邻的元素,将值大的元素交换至右端。2.思路依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。分析:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N...原创 2018-03-29 20:59:45 · 226 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Java-插入排序
1.原理 把n个待排序的元素看成一个有序表和无序表。一开始有序表只包含一个元素,无序表中包含n-1个元素。 排序过程中每次从无序表中取出第一个元素,把它依次与有序表中的元素进行比较。然后把它插入到有序表的适当位置, 形成新的有序表。 通俗的讲:假设第一个元素是有序的,后面的元素往前插入,依次进行比较,小的往前挪,大的往后挪,找到合适的位置插入。 打个形象的比方就是打扑克牌时的摆牌。...原创 2018-03-29 23:11:50 · 235 阅读 · 0 评论 -
快速排序(面试必备,多种解法)
1.原理/思路快速排序一般基于递归实现。其思路是这样的:1.选定一个合适的值(理想情况中值最好,但实现中一般使用数组第一个值),称为“枢轴”(pivot)。2.基于这个值,将数组分为两部分,较小的分在左边,较大的分在右边。3.可以肯定,如此一轮下来,这个枢轴的位置一定在最终位置上。4.对两个子数组分别重复上述过程,直到每个数组只有一个元素。5.排序完成。2.分析做法1.附设...原创 2018-03-29 23:52:02 · 383 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Java-希尔排序
1. 基本概念 基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d, 对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序, 当增量减到1时,进行直接插入排序后,排序完成。2. 算法分析 1、将包含n个元素的数组,分成n/2个数组序列,第一个数据...原创 2018-03-30 17:34:34 · 154 阅读 · 0 评论 -
Java 23种设计模式之解释器模式
解释器模式原创 2018-01-02 23:06:55 · 207 阅读 · 0 评论 -
Java 23种设计模式之访问者模式
访问者模式原创 2018-01-02 23:05:19 · 331 阅读 · 0 评论 -
Java 23种设计模式之享元模式
享元模式原创 2018-01-01 19:06:09 · 166 阅读 · 0 评论 -
Java 23种设计模式之策略模式
策略模式原创 2018-01-01 19:09:44 · 241 阅读 · 0 评论 -
Java 23种设计模式之模板方法模式
模版方法模式原创 2018-01-01 19:12:16 · 177 阅读 · 0 评论 -
Java 23种设计模式之观察者模式
观察者模式原创 2018-01-01 19:13:55 · 179 阅读 · 0 评论 -
Java 23种设计模式之命令模式
命令模式原创 2018-01-01 19:16:08 · 147 阅读 · 0 评论 -
Java 23种设计模式之备忘录模式
备忘录模式原创 2018-01-02 22:53:10 · 190 阅读 · 0 评论 -
Java 23种设计模式之迭代器模式
迭代器模式原创 2018-01-02 22:55:21 · 151 阅读 · 0 评论 -
Java 23种设计模式之责任链模式
责任链模式原创 2018-01-02 22:57:52 · 188 阅读 · 0 评论 -
Java 23种设计模式之状态模式
状态模式原创 2018-01-02 23:00:17 · 164 阅读 · 0 评论 -
Java 23种设计模式之中介者模式
中介者模式原创 2018-01-02 23:02:56 · 237 阅读 · 0 评论 -
Java-基数排序
1.桶式排序概念 有限个数字m,每个数字的大小都在1与n之间,则我们可以假设有n个桶,遍历m个数字, 将其存入对应的桶中(如数字的值为3,就存入3号桶,桶的值对应存入数字的个数)2.基数排序概念 基于桶式排序,将要排序的数字一位一位的比较,经历多次桶式排序,得出最终的序列 如果要排序的元素可以分成多位,并且每一位都在一个固定的范围内,则可以用这种排序方法,...原创 2018-03-31 00:02:41 · 206 阅读 · 0 评论 -
Java-堆排序
1.概念 是一种树形选择排序,在排序过程中,将待排序的记录r[1..n]看成是一颗完全二叉树的顺序存储结构, 利用完全二叉树中的双节点和孩子节点之间的内在关系,在当前无序的序列中选择关键字最大或最小的记录。2.思路 实现堆排序需解决两个问题: (1)如何将n 个待排序的数建成堆; (2)输出堆顶元素后,怎样调整剩余n-1 个元素,使其成为一个新堆。...原创 2018-04-01 16:54:42 · 108 阅读 · 0 评论 -
自定义ViewGroup之流式布局的实现
效果图预览1. 分析1. 流式布局就是一行可能有多个控件超过一行自动换行 2. 在onMeasure中计算子控件的宽度,如果子控件的宽度已经超过父控件的宽度了就自动换行,高度累加。3. onLayout中控制每一个子控件的左上右下的布局2. onMeasure处理 //记录每一行的宽度,width不断取最大宽度但是不能大于行的宽度 int lineWidth = 0;...原创 2018-07-11 21:58:48 · 496 阅读 · 0 评论 -
自定义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 阅读 · 0 评论 -
自定义ViewGroup之游标卡尺的实现
效果图预览 1. 分析1. 游标卡尺嘛首先得绘制一个尺子吧2. 有了尺子不得绘制刻度线3. 绘制具体刻度值4. 还要绘制能拨动的按钮,不然怎么叫游标卡尺5. 拨动尺子的时候应该是能实时看到数据2. 技术实现原理1. 尺子组成是一个长长的进度条加上带刻度线和刻度值的数据2. 进度条可以用canvas.drawRect画一个矩形3. 刻度线和刻度值分别用canvas...原创 2018-07-11 23:11:58 · 2363 阅读 · 0 评论 -
自定义View系列之源代码下载
1. 自定义View系列自定义View实战之开关按钮实现自定义View实战之仿土豆Loading实现自定义View实战之渐变,可拨动,带动画圆环控件实现自定义View实战之饼状图效果实现自定义View实战之仿QQ小红点实现自定义View实战之仿雷达蜘蛛网实现自定义View之钟表盘实现2. 自定义ViewGroup系列自定义ViewGroup之自定义布局的实现...原创 2018-07-22 17:39:13 · 330 阅读 · 0 评论 -
Java类的初始化顺序(静态 代码块 构造函数等的执行顺序)
Java类的初始化顺序Java 父类构造函数,父类静态成员变量,父类普通成员变量,父类静态代码块,父类代码块,子类构造函数 子类静态成员变量,子类普通成员变量,子类静态代码块,子类代码块执行顺序没有继承情况下1. 执行顺序 1. 静态成员变量 2. 静态代码块 3. 普通成员变量 4. 普通代码块 5. 构造函数2. 总结: ...原创 2018-04-24 11:44:22 · 4890 阅读 · 0 评论 -
超详细的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 · 5381 阅读 · 1 评论 -
数据结构之可变长度数组-仿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 阅读 · 0 评论 -
数据结构之栈和队列的实现
1. 分析:1. 栈的特点是先进后出2. 栈就好比一个箱子,先放进去的东西,被压在了箱子底部,需要上面的东西拿出来之后下面的东西才能拿出来。3. 队列的特点是先入先出4. 队列就好比排队买票,先排队的先买票,我可不会给你插队的5. 队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空...原创 2018-08-28 22:08:32 · 254 阅读 · 0 评论 -
数据结构之链表实现
分析:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。单链表是链表中结构最简单的。一个单链表的节点(Node)分为两个部分,一个是数据域,一个是节点域。双向链表可以从两个方向遍历1. 单向链表1)定义一个节点class Node<E> { ...原创 2018-08-28 22:37:58 · 424 阅读 · 0 评论 -
数据结构之递归实现
1. 概念解释:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。2...原创 2018-08-29 00:01:42 · 2223 阅读 · 0 评论 -
自定义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 评论 -
自定义View之钟表盘实现
效果图预览 gif图片录制的不是很清晰 1. 分析和技术实现1. 绘制一个外圆和一个红色的内圆,还需要绘制中间的一个小圆点2. 绘制刻度,这里我才用了旋转画布的操作来简化计算3. 主要就是canvas的操作,canvas.save和canvas.restore成对出现,保证当前画布操作不会影响其他的4. 因为秒钟要每秒更新一次,需要调用postInvalidateDelaye...原创 2018-07-10 23:34:39 · 488 阅读 · 0 评论 -
常见笔试题
1. 判断一个数是不是3的n次方,比如3,9,27返回true, 12,15这样的返回false简易思路: 1. 肯定能被3整除 2. 最后一个数除3一定等于1 3. 别忘记1是3的0次方/*** 判断一个数是不是3的次方* @param n* @return*/public boolean is3Power(int n){ if(n =...原创 2018-04-25 00:06:12 · 161 阅读 · 0 评论 -
自定义View之基础概念(一)
1. TouchSlop:TouchSlop是一个常量,保存的是系统所能识别出的最小滑动距离。获取方式:ViewConfiguration.get(this).getScaledTouchSlop();2. VelocityTracker:VelocityTracker,速度追踪,通过这个类我们可以获取手指在滑动时的速度,其中包括水平和垂直方向的速度1. 在View的onTou...原创 2018-07-09 21:00:56 · 209 阅读 · 0 评论 -
自定义View之基础概念(二)
1. MotionEvent中 get 和 getRaw 的区别event.getX(); //触摸点相对于其所在组件坐标系的坐标event.getY();event.getRawX(); //触摸点相对于屏幕默认坐标系的坐标event.getRawY();2. 角度和弧度的换算关系圆一周对应的角度为360度(角度),对应的弧度为2π弧度。故得等价关...原创 2018-07-09 21:11:37 · 179 阅读 · 0 评论