java
文章平均质量分 85
里昂007
来日方长
展开
-
ClassLoader类加载
ART 和 DalvikDVM也是实现了JVM规范的一个虚拟器,默认使用CMS垃圾回收器,但是与JVM运行 Class 字节码不同,DVM执行 Dex(Dalvik Executable Format)** ——专为 Dalvik 设计的一种压缩格式。Dex 文件是很多 .class 文件处理压缩后的产物,最终可以在 Android 运行时环境执行。而ART(Android Runtime) 是在 Android 4.4 中引入的一个开发者选项,也是 Android 5.0 及更高版本的默认An原创 2021-02-02 14:02:40 · 287 阅读 · 0 评论 -
dex文件加密
反编译什么是反编译?(what ) 定义:利用编译程序从源语言编写的源程序产生目标程序的过程。怎么进行反编译?先了解apk的文件构造加固方案的手段反模拟器 模拟器运行apk,可以用模拟器监控到apk的各种行为,所以在实际的加固apk运行中,一旦发现模拟器在运行该APK,就停止核心代码的运行。代码虚拟化 代码虚拟化在桌面平台应用保护中已经是非常的常见了,主要的思路是自建一个虚拟执行引擎,然后把原生的可执行代码转换成自定义的指令进行虚拟执行。加密...原创 2021-02-01 16:36:32 · 943 阅读 · 0 评论 -
Java IO
IO框架 Java IO的学习是一件非常艰巨的任务。它的挑战是来自于要覆盖所有的可能性。不仅存在各种I/O源端还有想要和他通信的接收端(文件/控制台/网络链 接),而且还需要以不同的方式与他们进行通信(顺序/随机存取/缓冲/二进制/字符/行/字 等等)这些情况综合起来 就给我们带来了大量的学习任务,大量的类需要学习。 我们要学会所有的这些java 的IO是很难的,因为我们没有构建一个关于IO的体系,要构建这个体系又需要深入理解 IO库的演进过程,所以,我们如果缺乏历史的眼光,很快原创 2021-01-31 18:01:30 · 145 阅读 · 0 评论 -
JSON解析
JSON 定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式 作用 数据标记,存储,传输 特点 1. 读写速度快 2. 解析简单 3. 轻量级 4. 独立于语言,平台 5. 具有自我描叙性 JSON解析 语法 JSON建构于两种结构: “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象 (object),纪录(record),结原创 2021-01-30 09:42:39 · 500 阅读 · 0 评论 -
Java序列化
序列化 定义以及相关概念1. 由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认 识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化字节序 列的过程。相反地,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序 列化,即把字节序列转化为对象 2. 无论是在进程间通信、本地数据存储又或者是网络数据传输都离不开序列化的支持。而针对不同场 景选择合适的序列化方案对于应用的性能有着极大的影响。 3.原创 2021-01-29 21:57:14 · 175 阅读 · 0 评论 -
Java并发基础(2)
模板方法模式同步器的设计基于模板方法模式。模板方法模式的意图是,定义一个操作中的算法的骨架,而将一些步骤的实现延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。我们最常见的就是Spring框架里的各种Template。实际例子我们开了个蛋糕店,蛋糕店不能只卖一种蛋糕呀,于是我们决定先卖奶油蛋糕,芝士蛋糕和慕斯蛋糕。三种蛋糕在制作方式上一样,都包括造型,烘焙和涂抹蛋糕上的东西。所以可以定义一个抽象蛋糕模型然后就可以批量生产三种蛋糕这样原创 2021-01-28 20:26:56 · 110 阅读 · 0 评论 -
Java并发基础(1)
启动启动线程的方式只有:1、X extends Thread;,然后X.start2、X implements Runnable;然后交给Thread运行线程的状态Java中线程的状态分为6种:1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线.原创 2021-01-28 20:17:33 · 117 阅读 · 0 评论 -
JAVA并发编程
1、线程基础、线程之间的共享和协作基础概念什么是进程和线程进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘 IO 等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的、静态的,进程是活的、动态的。进程可以分为系原创 2021-01-27 13:57:21 · 1433 阅读 · 0 评论 -
动态代理原理
静态代理代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。目的:(1)通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性;(2)通过代理对象对访问进行控制;代理模式一般会有三个角色:抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用。也就是真正的业务逻辑在此。代理角色:需要实现抽象角色原创 2021-01-26 16:17:56 · 83 阅读 · 0 评论 -
注解与反射
注解Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。注解声明声明一个注解类型Java中所有的注解,默认实现 Annotation 接口:与声明一个"Class"不同的是,注解的声明使用 @interface 关键字。一个注解的声明如下:元注解在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之为原创 2021-01-25 17:06:45 · 90 阅读 · 0 评论 -
Java进阶-泛型(2)
Wildcards and Subtyping(通配符和子类型) 如泛型,继承和子类型中所述,泛型类或接口不仅仅因为它们的类型之间存在关系而相关。但是,你可 以使用通配符在通用类或接口之间创建关系。 给定以下两个常规(非泛型)类: class A { /* ... */ } 编写以下代码是合理的: B b = new B(); A a = b; 此示例显示常规类的继承遵循此子类型规则:如果B扩展了A,则类B是类A的子类型。此规则不适用于 通用类型: List原创 2021-01-24 15:25:06 · 169 阅读 · 0 评论 -
Java进阶-泛型(1)
本预先资料来源于Oracle官方文档Java™ 教程-Java Tutorials 官方文档:https://docs.oracle.com/javase/tutorial/java/generics/index.html 中文翻译:https://pingfangx.github.io/java-tutorials/java/generics/types.html 泛型(Generic)是Java编程语言的强大功能。它们提高了代码的类型安全性,使你在编译时可以检测 到更多错误。 在..原创 2021-01-23 10:21:01 · 254 阅读 · 0 评论 -
OkHttp原理解析(2)
5、资源是否不变CacheControl responseCaching = cacheResponse.cacheControl();if (responseCaching.immutable()) { return new CacheStrategy(null, cacheResponse);}如果缓存的响应中包含 Cache-Control: immutable ,这意味着对应请求的响应内容将一直不会改变。此时就可以直接使用缓存。否则继续判断缓存是否可用6、响应的缓存...原创 2021-01-07 17:07:37 · 354 阅读 · 0 评论 -
OkHttp原理解析(1)
基于OkHttp 3.10.0版本,最新OkHttp为:4.0.1逻辑与3版本并没有太大变化,但是改为kotlin实现。OkHttp介绍OkHttp是当下Android使用最频繁的网络请求框架,由Square公司开源。Google在Android4.4以后开始将源码中的HttpURLConnection底层实现替换为OKHttp,同时现在流行的Retrofit框架底层同样是使用OKHttp的。优点:支持Http1、Http2、Quic以及WebSocket连接池复用底层TCP(Socket原创 2021-01-07 16:45:38 · 470 阅读 · 1 评论 -
Java中的泛型
Java中的泛型为什么我们需要泛型?通过两段代码我们就可以知道为何我们需要泛型实际开发中,经常有数值类型求和的需求,例如实现int类型的加法,有时候还需要实现long类型的求和,如果还需要double类型的求和,需要重新在重载一个输入是double类型的add方法。定义了一个List类型的集合,先向其中加入了两个字符串类型的值,随后加入一个Integer类型的值。这是完全允许的,因为此时list默认的类型为Object类型。在之后的循环中,由于忘记了之前在list中也加入...原创 2020-12-18 15:48:51 · 210 阅读 · 1 评论 -
JAVA网络通讯(3)
Java原生网络编程一些常见术语 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。主机A的应用程序要能和主机B的应用程序通信,必须通过Socket建立连接,而建立Socket连接必须需要底层TCP/IP协议来建立TCP连接。建立TCP连接需要底层IP协议来寻...原创 2020-12-17 15:05:27 · 185 阅读 · 0 评论