- 博客(13)
- 资源 (8)
- 收藏
- 关注
原创 Java 类加载过程
1、加载加载的过程本质上是一个读取二进制数据的过程。可以是文件,网络数据,内存中的数据等,这一阶段是可以自定义的。加载过程中会在堆中初始化一个 class 对象。2、验证验证就是验证这堆二进制数据是不是有效的,就是这个 class 数据是否可以载入虚拟机。例如验证文件是否是 0xCAFEBAB 开头,再验证版本号是否被当前 JVM 支持,然后再校验内部的变量等等是否符合规范。3、准备准备阶段会在内...
2018-04-12 10:45:32
495
原创 现有项目集成 ReactNative 框架的方法
官方的文档写了一大堆,其实主要是针对 RN 开发人员的,如果不开发 RN 或者 RN 模块有其他人开发的话,其实只要几行代码来集成 RN 的 Maven 库就可以了。1、准备 Maven 库事实上,RN 的 Maven 库本质上就是一个本地文件夹,内部有 aar、pom 等文件,aar 是核心库,pom 是依赖,因此可以从 RN 开发人员那边复制这个 Maven 库。位于 node_modules...
2018-04-12 09:13:06
259
原创 并行和并发的区别
看这张图:据说这张图是 Erlang 之父 Joe Armstrong 画的,意思是说,并发的话两个队列交替使用一台咖啡机,而并行则是两个队列分别使用不同的咖啡机。换成线程和处理器的话,就是并发是多个线程通过例如时间片轮转的方式交替使用处理器,而并行则是多个线程各自占用一个处理器同时执行。...
2018-04-11 19:30:20
280
原创 Java 垃圾回收算法
1、标记-清除标记:从根对象开始遍历所有对象并标记,遍历完成的时候,未被标记的对象就是垃圾对象。清除:从内存中删除未被标记的对象。这种算法简单,但是效率比较低,又会产生内存碎片。2、标记-整理标记:从根对象开始遍历所有对象并标记,遍历完成的时候,未被标记的对象就是垃圾对象。整理:将被标记的对象压缩到一块内存区域,然后清理内存边界到该区域的其他空间。这种算法主要是为了解决标记-清除带来的内存碎片的问...
2018-04-11 17:10:42
205
原创 Android WebView 中 JavaScript 和 Native 通信方式
0、在开发 Hybrid App 的时候,经常需要处理 JavaScript 和 Native 交互的问题,其实从根本上说,是一个通信方式的问题,至于具体实现,其实有很多的方案。1、JavascriptBridgeAndroid 中的 WebView 有 addJavascriptInterface 接口,该接口的功能是将一个 Java 对象注入到 WebView 的 window 对象中,即在 ...
2018-04-11 13:50:45
494
原创 Android WebView HTTP 和 HTTPS 混合调用
做项目的时候观察到一种现象,公司 H5 页面访问接口的时候获取不到数据。结合前后发生的事情,将原因锁定在最近公司网址由 HTTP 换作 HTTPS 上。经过查询,在 API 21 及以后,Android WebView 更改了安全策略,不允许 HTTPS 的页面通过 AJAX 调用 HTTP 接口。1、解决办法有两个,一个是将 HTTP 服务转换为 HTTPS,还有一个是更改 Android We...
2018-04-11 12:52:16
1897
原创 Java 中的 String,StringBuffer,StringBuilder
1、StringString 是一个由 final 关键字修饰的类,内部维护一个同样由 final 修饰的 char 数组。对于 String 的操作,本质上都是对内部 char 数组的操作。因此在内存中,String 是不可变的。这么做带来的好处在于,提高性能以及可能减少一定的内存使用。在编译阶段,String 常量会被放在常量池中,编译器检测到相同的 String 常量,会让它们指向同一个常量...
2018-04-11 11:27:37
174
原创 Java 中 Error 和 Exception 的区别
1、Throwable 类Error 和 Exception 都继承自 Throwable 类,因此事实上他们都是可以被 try/catch 的。2、语义上区别Error 通常代表很严重的错误,程序无法处理的那种,例如 VirtualMachineError 等。Exception 通常代表程序可以处理的异常,例如 IOException 等。3、Exception 处理Exception 中有一...
2018-04-11 10:47:33
178
原创 Java 的四个基本特性
1、抽象抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。2、封装通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装。我们编写一个类就是对数据和数据操作的封装。可以说,封装就...
2018-04-11 10:31:51
918
原创 Java 中引用方式
1、强引用:强引用与可用内存和是否发出 GC 无关,系统宁愿抛出 OutOfMemory 异常也不会去回收。一般的实现都是强引用。2、软引用:软引用对象会在系统内存不够且发生 GC 的情况下被回收。实现方式例如:SoftReference<Object> srObject = new SoftReference<>(new Object());软引用经常被应用在缓存的设计当...
2018-04-08 11:04:38
162
原创 基于栈虚拟机和基于寄存器虚拟机的比较
1、指令条数:栈式>寄存器式,例如一个加法运算 a = b + c 的字节码指令:栈式:I1: LOAD CI2: LOAD BI3: ADD I4: STORE A寄存器式:I1: add a, b, c2、代码尺寸:栈式<寄存器式,这个在 Android 开发中会经常遇到,众所周知传统的 JVM 是基于栈的,而 Android 中的Dalvik 虚拟机则是基于寄存器的,对于同...
2018-04-08 10:33:32
496
原创 Java 中的 CountDownLatch, CyclicBarrier, Semaphore
1、CountDownLatchCountDownLatch 主要用于一个线程需要等到其他线程完成任务后继续执行的场景。CountDownLatch 不可重用。示例:package site.iway;import java.util.Random;import java.util.concurrent.CountDownLatch;public class Main { pr...
2018-04-08 10:05:05
193
原创 Ubuntu Server MySQL 允许 root 用户远程访问
1、运行 apt-get install mysql-server,输入并确认密码后发现远程电脑无法通过 root 用户登录2、在服务器上用 mysql 的 root 用户登录3、use mysql; 进入 mysql 数据库4、select User,Host from user; 发现有多个 root 用户5、强迫症,删除多余的 root 用户,仅留下 Host=’localhost' 的 r...
2016-01-28 10:26:04
323
将图片与文件打包及解包
2012-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人