- 博客(12)
- 资源 (6)
- 收藏
- 关注
原创 判断线段是否相交
上图是相交的,则向量 A1A2 和 向量A1B2在向量A1B1两侧 可以推导出:(A1A2*A1B1)x(A1B2*A1B1)<0基本概念:1,A1A2=(x2-x1,y2-y1)2,(A1A2*A1B1)坐标运算向量积,可以用三阶行列式表示(A1A2*A1B1)=其中i,j,k表示x,y,z轴上的单位向量。对我们来说判断平面即可,可推导公式:因此判断方法:private boolean i...
2018-04-21 17:37:58
814
1
原创 Android换肤原理
qq 网易云音乐的换肤功能很炫酷,这里总结下换肤原理。换肤分为两种模式,静态换肤 动态换肤。静态换肤就是把不同皮肤的资源打包到apk中,使用时切换,这种换肤的弊端就不再多说了(种类固定,apk大)。这里介绍下动态换肤,主要步骤如下:1,注册监听所有Activity的生命周期2,监听所有view的创建,找到可以换的属性并存储3,加载皮肤包(其实是一个只包含资源的apk)4,执行换肤操作下面是实现技术...
2018-03-17 17:49:43
543
原创 protobuf使用
Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。用于socket的数据传输在合适不过了。编译很麻烦,所以谷歌提供了插件:https://github.com/google/protobuf-gradle-plugin项目源码地址:https://github.com/g
2018-02-03 16:29:46
373
原创 android进程保活
有些时候(国内通常是这样)我们需要应用在 后台存活,但是现在的很多手机room是在内存不足或者一定时间后销毁进程的。总结几种android常用的保活手段。系统出于体验和性能上的考虑,app在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来。打开的应用越多,后台缓存的进程也越多。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制来判断要kill掉哪些进程,以腾出内存来供
2018-01-31 17:52:05
240
原创 android热修复原理
android的热修复网上也是玲琅满目,写这篇文章仅是备忘,大神请绕道。看了一些热修复的帖子,现在总结下目前主流的热修复技术有两中,基于java虚拟机的热修复(hotfix)和基于Classloader的热修复(tinker)。当然还有其他的目前阿里的Sophix据说是非侵入式,但是不是今天研究重点(没有开源,我也不知道原理)先看下修复的比较吧。一,继续虚拟机的热修复这个
2018-01-25 17:27:42
239
原创 Android app dex加密原理
目前android app反编译工具越来越牛逼,大点的app都会有加固技术。这里简单介绍下dex加密原理.我们可能都听说过app加固,是对我们的app加了一层壳保护,但是这个壳是神马东西呢,今天主要介绍下这个东系西。加固分为几个部分(步骤)1,把源apk(要加固的apk s.apk)中的dex文件加密。加密之后就不再是正常的 dex文件,那么市面上的反编译工具就不能按照正常的de
2018-01-25 16:47:40
2556
原创 几种常用排序算法和图论
这段时间在学算法,总结一下几种常用的排序算法1,冒泡排序算法此算法算是入门排序算法,public void sort(int[] a) { int temp = 0; for (int i = a.length - 1; i > 0; --i) { for (int j
2017-12-10 19:46:21
432
原创 RxJava被压模式源码分析
被压模式不了解的可以自行百度,有详细的资料,这里不再详述。RxJava中被压模式体现在使用中即Flowable+Subscrible模式。简单的使用分为三步:1,创建FlowableFlowable flowable = Flowable.create(new FlowableOnSubscribe() { @Override public void subscri
2017-11-21 11:19:37
661
原创 实现哈夫曼树
手写实现哈夫曼树的编码功能:package com.example.admin.myapplication.tree;/** * 哈夫曼树 * Created by admin on 2017/11/16. */public class HuffmanTree { private SortLinkQueue linkQueue; public HuffmanT
2017-11-16 18:59:48
321
原创 手写实现二叉排序树
实现二叉排序树的增,删和便利算法package com.example.admin.myapplication.tree;/** * 二叉排序树 * Created by admin on 2017/11/16. */public class OrderTree { public static class Node { int value;
2017-11-16 18:58:27
422
原创 逆波兰表达式原理实现
解析原理如下:(1) 该运算符为左括号"(",则直接存入运算符堆栈。 (2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇到左括号为止,此时抛弃该左括号。 (3) 该运算符为非括号运算符: (a) 若运算符堆栈栈顶的运算符为左括号,则直接存入运算符堆栈。 (b) 若比运算符堆栈栈顶的运算符优先级高,则直接存入运算
2017-11-10 16:33:52
776
原创 strus2 向前台传参数
一。用Struts标签传值 struts接受请求时,会创建ActionContext,ValueStack,Action Object,把action存入ValueStack,所以在jsp页面中用标签可以直接取值:Action 代码如下:private int res
2011-09-13 21:55:47
328
判断键盘输入的是否是字符
2011-07-26
一元二次方程求解方法
2011-07-26
web services 的简单测试
2011-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人