自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 apk签名原理

apk的签名信息在apk解压后的META-INF目录下。这三个文件分别是MANIFEST.MF,CERT.SF,CERT.RSA。下面会说明这三个文件的作用以及生成方式。MANIFEST.MFMANIFEST.MF会将整个apk中所有的文件进行SHA1-BASE64编码,生成的摘要信息就是SHA1-Digest。下面的就是MANIFEST.MF中记录AndroidManifest.xml的摘要...

2018-11-30 02:17:18 366

原创 关于DexClassLoader和PathClassLoader,以及Dalvik加载类的过程

android中,dalvik虚拟机加载的是dex文件,用于加载类的ClassLoader是PathClassLoader和DexClassLoader。PathClassLoader和DexClassLoader都继承自BaseDexClassLoader,它们的父ClassLoader为BootClassLoader。回顾在JVM中,自定义的ClassLoader一般直接继承自ClassLo...

2018-11-11 21:26:09 1159

原创 从源码看Java HashMap原理

Java中HashMap是常用的容器类,对其原理性的东西一直停留在道听途说的程度,但是对细节以及优化的缘由方面一直没有进行过深入的思考。考虑到后期将会为自己前途奔波操劳(^.^),决定打开源码粗略研究一番。由于HashMap的源码很长,不可能对每一个细节逐一深钻,尤其是涉及到处理hash冲突的红黑树优化,对于红黑树具体实现不做研究。主要是为了分清主次矛盾,避免深入细节而不能自拔,毕竟红黑树方面目...

2018-11-07 00:41:00 222

原创 classloader 中的findClass方法和loadClass方法

findClass方法是JDK1.2后提出的,目的是为了保证加载的类符合双亲委派模型。而loadClass方法一直存在,没有实现双亲委派模型,不过可以让我们自己去实现。双亲委派模型的目的对于JVM而言,能够加载的类都是将.java文件通过编译后的字节码加载入内存中的。而编译后的文件,也就是通过javac命令编译成的.class文件,终究是以流的形式变成byte[]的数组,再通过ClassLoa...

2018-11-05 00:35:32 4023 1

原创 从字节码看Java对字符串拼接的优化

Java中有个经典的问题,如下代码的输出结果: String s1 = "a"; String s2 = s1 + "b"; String s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab");答案可以在这里直接给出,输出结果为 false和true,而给出的解释是:对于字

2018-11-03 20:02:20 514

原创 android:taskAffinity回退问题

今天遇上了一个奇怪的问题:从第三方应用通过intent打开应用内的一个Activity,记做C。将C通过home键切换到后台,然后再从应用的桌面入口进入Activty A,再在A中打开Activity B。上面Activity的调用顺序可以表示为: 第三方App -> C -> 后台 桌面 -> A -> B   目前界面停留在Activity B中,但是当按下back

2018-02-06 20:43:23 823

原创 java的传值与传引用

对于基本类型,java都是传值。而对于引用类型,其实java也是通过值传递的,只是传递的值不是实例本身,而是实例的引用的副本。 public void genericFunc(int a){ //do something } public void referenceFunc(Object a){ //do something

2018-02-03 12:57:38 305

原创 java访问权限

java的访问权限分为四种:private,protected,public以及当所有修饰词都不加时的包访问权限。 privatedefaultprotectedpublic类内√√√√本包非类内×√√

2018-01-24 00:15:24 253

原创 Android的gradle中compile和provided的区别

先说最多的说法: compile和provided都是对某个module或者jar等进行依赖。compile会对它进行编译,并将编译后的结果打包到apk中;而provided只会对其进行编译,不会将module或者jar等打包到apk中。对于这个说法,我的理解一直不是很深刻。compile还好说,毕竟编译完成后,同时将编译后的jar放到apk中,等到运行时调用apk中再从apk中加

2017-10-24 23:48:37 792

原创 回车和换行的一些事情

关于回车(\r)和换行(\n)的起源,大意是过去的打字机为了提高打字效率,在每一行的末尾会加上回车和换行两个字符。回车的意思是将打字头回退到当前行的首部,而换行则是新起一行进行打印。比如,现在要打印下面这两行,aline1和bline2。首先打字机打完aline1后,此时打字头停留在"1"的这个位置。这时,先进行回车操作,那么打字头会回退到"a"的这个位置。然后,再进行换行操作,打字头放到了下一行

2017-05-31 00:03:26 704

原创 二叉树的非递归前序,中序,后续遍历实现

二叉树的前中后序遍历通过递归的方式非常容易实现,通过调整一下打印节点和遍历左右子树的顺序即可实现。而非递归方式实现二叉树则要比递归实现复杂一些。主要原因是,递归的写法屏蔽掉了二叉树的回溯过程。但是,通过非递归方式实现的二叉树遍历,就不得不“人工”地对遍历栈进行控制。本文会对二叉树的前中后的非递归遍历方式进行说明。

2017-05-16 20:56:49 6522 1

空空如也

空空如也

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

TA关注的人

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