自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(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

纯 pcm 文件

纯pcm格式下载,测试文件

2016-05-23

commons-net-2.0.zip完成ftp必备

apache出产的ftp开发工具,很好用。

2011-07-26

判断键盘输入的是否是字符

可用多种方法实现判断。 for(int i=0;i<byt.length;i++) { if(judje.isInt(byt[i])) System.out.println(byt[i]+" :是数字"); else if(judje.isChar(byt[i])) System.out.println(byt[i]+" :是字符"); else if(judje.isSpace(byt[i])) System.out.println("此处是空格"); else System.out.println(byt[i]+" :是特殊字符"); }

2011-07-26

一元二次方程求解方法

闲来没事,做了方程求解来,分享一下。 public void getRoots() { if(boo) { System.out.println("是一元二次方程"); double disk=b*b-4*a*c; if(disk>=0) { root1=(-b+Math.sqrt(disk))/(2*a); root2=(-b-Math.sqrt(disk))/(2*a); System.out.printf("方程的根:%f,%f,\n",root1,root2); } else { System.out.println("方程没有实根\n"); } } else { System.out.println("不是一元二次方程"); } }

2011-07-26

web services 的简单测试

简单测试web services public class Hello { //服务方法 public String hello() { return "hello ," + name + ",Welcome to Axis"; } }

2011-07-25

空空如也

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

TA关注的人

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