- 博客(67)
- 资源 (31)
- 收藏
- 关注
原创 回顾 : 2018.03 -- 2019.07
2018.03-- 052018年的3月到5月之间,我认为是比较黑暗的一段时间。那时候,我的大学生涯已经开始接近尾声,因为我的学历一直是我的痛处,怎样面对未来社会的竞争?可能是因为受之前一个学长的影响吧,他当时就是先把学历升了一下,然后就直接面试的美团的大众点评,现在人家还在那上着班。当时临3月份的升学考试就还剩下3个月,都不到一百天了,但我还是想去冲一下,就这样,不顾一切的跑去了济...
2019-09-02 22:49:51
361
3
原创 Android Framework 之 SystemUI的启动流程
前面先说一下本文以Android O(8.0)代码为例。主要介绍从SystemService.java到启动SystemUI的过程,至于SystemUI的其他方面放至其他地方说啦。本文所涉及的类/frameworks/base/services/java/com/android/server/SystemServer.java/frameworks/base/packages...
2019-09-01 20:49:15
1897
1
原创 Java 关键字 之 final
概述final关键字算是与static都比较常用的一个关键字,它可以作用于属性、方法、参数和类。声明后,属性 -> 不可变;方法 -> 不可覆盖;形参 -> 不可变;类 -> 不可继承。Final属性(常量)在概述中已经提到,被final关键字修饰的属性是不可变的。在这个例子中我重新对str赋值,然后报了个语法错误,他说str不...
2019-08-28 00:18:08
211
原创 Java 关键字 之 static
概述本文围绕静态的变量、方法、代码块、导入展开,内部类先不做介绍,内部类需要单独出一篇去解释。静态方法静态方法最大的特点就是可以不依赖于任何对象就可以被进行访问,所以没有this方法。就像例子中有一个静态方法print2(),它在main方法中可以像普通方法一样直接被调用输出。public class StaticDemo { private static S...
2019-08-22 00:30:29
319
原创 Java虚拟机 之 内存分配
概述JVM的内存分配的原则有对象优先在Eden分配、大对象直接进入老年代、长期存活的对象进入老年代、空间分配担保、逃逸分析与栈上分配等。下面就一一详细介绍。对象优先在Eden分配关于这项策略,我们首先要先清楚的:Eden是属于新生代内存的一块区域。JVM打印GC详细信息的参数:-verbose:gc -XX:+PrintGCDetails选用...
2019-07-25 00:02:28
396
原创 Java 对象 的 生命周期 与 可达级别
对象的生命周期还好理解,就像是人的一生,从出生、少年、青年、中年、老年、死亡;关于对象,可达性可以理解为根据引用类型的不同而被分成了不同的可达等级。该篇只是对生命周期和可达级别做一个了解,目的是为了在以后读其他有关于JVM、对象、引用等类型的文章更容易理解。该篇与四种引用方式连接较为紧密。生命周期1. 创建阶段分配存储空间;构造对象;从超类对子类、对sta...
2019-07-11 00:19:09
384
原创 记录 VMware + Ubuntu14.4 + repo 的开发环境搭建
我下载的iso有980多M,我家网速有点慢,就先下载iso等待的时间搞点别的。1.下载Ubuntu 14.04打开下载地址:http://old-releases.ubuntu.com/releases/14.04.5/我下载64位的,选这个。竟然还有Mac版,好奢侈。2. 安装VMware从百度上一搜这个,很多下载的,下载完成后,一路确定。...
2019-07-10 00:10:01
1010
原创 Java 中的 强引用、软引用、弱引用 和 虚引用
引言Java中的强引用、软引用、弱引用和虚引用统称为Java四种引用方式。了解四种引用方式是用代码的方式去控制Java对象的生命周期,以达到节省资源等目的。强引用(StrongReference)强引用是最最普遍的一种引用了,也是最不容易被回收的一种对象。Object obj = new Object();只要这个对象还存在强引用,垃圾收集器就永远不会回收掉被引用的...
2019-07-09 23:55:17
533
原创 Android Framework 仿 WindowManager 添加系统服务
引言该demo为基于Android P(9.0)。根据原生WindowManager的调用方式,用AIDL跨进程通讯的方式实现。1. IWindowManager.aidl位置:/frameworks/base/core/java/android/os/IWindowManager.aidlpackage android.os;interface IWindowMa...
2019-06-16 00:36:37
571
原创 Java虚拟机 之 垃圾回收器
引言此篇是接着上一篇《垃圾回收算法》,也算是GC的下篇。上一篇将 如何判定对象为垃圾的两种算法 和 垃圾回收的四种算法整理完毕了。由于适用的场景不同,垃圾收集器也是多种多样,这一篇准备介绍常用的几种垃圾回收器。Serial 收集器1. 首先,Serial收集器是最基本的、发展最悠久的垃圾收集器。2. 它还是一个单线程垃圾收集器。假如有很多个线程正在运行,当需要垃圾回收的时...
2019-06-09 19:00:42
291
原创 Java虚拟机 之 垃圾收集算法
引言垃圾收集的学习的内容还算不少,放在一篇显得有点多,放两篇里感觉内容又都不算多,内容也无法界定成两部分,很纠结呐。但考虑到读两篇的感觉比一篇好的多,最起码是心理上,那就干脆分成两篇吧。此篇为垃圾收集的第一篇。如何判断对象为垃圾对象?1. 引用计数法引用计数器就是在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就加1;当引用失效(对象被置为空)的时候...
2019-06-08 16:23:48
305
原创 Java 中 String、StringBuffer 和 StringBuilder 的区别与联系
引言 这题应该是最最经典的一轮必问了,三个亲兄弟问的多了,网上自然而然被整理的也很多。我觉得我自己也应该整理一篇,以加深自己的印象,不至于假如真的有哪一天被问到了,答不出个所以然来。String源码位置(Android O):/libcore/ojluni/src/main/java/java/lang/String.java1. String对象非基本数据类型,存储在堆中;...
2019-06-04 22:02:07
262
原创 Java虚拟机 之 对象
引言本篇主要围绕对象的创建、内存分配、结构、访问定位来说的,对有些规则不理解的可以先查看上篇JVM内存区域。对象的创建过程通过new创建的对象,这个对象就存储在堆中。具体步骤如下:如何给对象分配内存?分配内存有两种方式,分别是指针碰撞和空闲列表。1. 指针碰撞前提是假设内存是规整的,用过的内存放在一边,空闲的内存放在一边,而中间拿一个指针作为分界点指示器...
2019-06-02 01:00:25
286
原创 Java 中 == , equals 与 hashCode 的区别与联系
引言关于 “==”、equals 和 hashCode,有时候不知道应该用哪个,感觉很多结果都是一样的,甚至乱用。为了以后不至于写错都不知到怎么错的,做一个笔记。简述==:比较两者之间的关系,这个关系在基本数据类型和引用类型变量中的比较有所差异。equals:比较两对象的内容。hashCode:比较对象在hash表中的位置。"=="1. 在基本数据类型(...
2019-05-30 01:02:13
559
原创 Java虚拟机 之 内存区域
引言上一篇介绍了JVM的发展史,那只是简单的看了JVM,只是知道有这么一个东西,是干什么用的;从这一篇到未来,将一点点慢慢了解它,为的是为以后的学习打下基础和浇灭面试官的狂气 :)。简介下面是我画的一个草图,可以表示出大致的结构图,但不是详细的。那我们平时所说的堆内存和栈内存到底是什么呢?堆内存:就是指的Java堆;栈内存:虚拟机栈中的局部变量表。线程独...
2019-05-27 23:25:27
262
原创 Java虚拟机 之 虚拟机发展史
在1991年4月,由James Gosling领导的一项以能够在各种消费性电子产品上运行的程序架构为目的的计划开始启动,此项计划的产品为Oak。1995年5月23日,Oak语言改名Java,并在SunWorld大会发布,并提出了“Write Once,Run Anywhere”的口号。从此拉开了Java的序幕……下面将大致介绍几款Java虚拟机,仅作了解,为将来的学习做一些铺垫。...
2019-05-15 00:10:33
369
1
原创 Java 设计模式 之 单例模式
简述单例模式应该算是最简单的、代码量最少的模式了。单例模式,英译“独生子”,其目的就是保证该对象在此应用中的唯一性。目的在简述中说的对象的唯一性可能还有些模糊,而如果一个对象在应用中使用次数非常多,在每一次的使用中,该对象被一次又一次地创建,这样是完全没有必要的操作,因为既浪费了资源,又增大了系统的开销。单例模式的存在,正是解决这样的困惑。大致流程1. 私有...
2019-05-10 00:10:23
206
原创 Java 构造方法
1. 什么是构造方法public class Son { private String name; private int age; Son(String name,int age){ this.name = name; this.age = age; }}上面的用法并不少见,他就是平时所述的构造函数(方法)。...
2019-04-11 20:49:11
842
原创 TCP/IP IP 协议 及 选路
1. IP 介绍1. IP是TCP/IP协议族中最核心的一个协议。比如说分用(https://blog.csdn.net/yichen97/article/details/87950880)中的作用。2. IP的特点:IP提供不可靠、无连接的数据报传送服务。不可靠。IP有可能丢包,他不能保证IP数据报能成功到达目的地,丢了之后,通过ICMP协议将“为什么丢包?网络上发生了什么事件...
2019-03-31 18:30:32
985
原创 TCP/IP 分层 封装 分用 端口号 以太网 环回口 MTU
1. 概述在开始之前先了解下两个概念,定义来自于《TCP/IP详解》。协议族:一系列相关协议的集合。参考模型:制定一个协议组中的各种协议之间的相互关系并划分需要完成的任务的设计。TCP/IP是一个实现Intent体系结构的协议族。2. 分层TCP/IP在OSI模型中是有七层的,但是由于表示层和会话层很少有人用到,所以又出现了TCP/IP的四层模型。四层模型相比于七...
2019-03-18 00:27:35
1704
原创 Android TV 平台 新添按键 与 GlobalKey
新添按键关于Android TV,Android平台按键的配置大致可分为以下几步(以Settings为例):1. 检查驱动在添加按键之前,要先检查一下驱动层是否配置成功。可以抓一份遥控器按下Settings按键的打印,查看有没有code产生;或者直接去问驱动的同事添没添就好了。:)2.Vendor_XXX_Product_XXX.kl这个文件名对于不同的代...
2019-02-25 23:34:24
1389
原创 Android 四大组件 BroadcastReceiver
1. Broadcast简介Broadcast用到的场景是非常多的,比如说实现在同一个App内的通信;或者不同App之间的通信;还有在特定情况下的通信(开机需要给更新App的提示等)。Broadcast的角色主要有一个广播发送者,和需要接受到消息的广播接收者。广播发送者先将广播发送出去,然后由广播接收者进行接收,收到广播后,就可以在广播接收器中做一些操作了。值得注意的是广播接收器...
2019-02-15 12:03:18
372
原创 Android 四大组件 Service
1. 适用范围Service主要使用在后台比较耗时和运行时间较长的逻辑。但是在service中使用 Thread.currentThread().getId() 获取得到的却是1,也就是主线程。如果想要在服务里执行耗时的逻辑,也需要创建一个子线程,否则也会阻塞线程。2. 生命周期左图是startService()所创建;右图是bindService()所创建。...
2019-01-21 14:51:02
216
原创 Android 四大组件Activity
1. Activity状态转换2. Activity生命周期3. Activity栈4. 启动另一个ActivityIntent intent =new Intent(FirstActivity.this,OtherActivity.class); startActivity(intent);5. Activity之间通信bun...
2018-12-24 20:47:28
231
原创 Java 线程 初识
说完这个线程,java部分就要结束了,就开始真正的Android路程就开始了,下一篇文章是Android的四大组件讲解。1. 在学习线程之前需要知道的几个概念多线程:一个进程运行时产生了多个线程,目的是为了节约CPU资源。并发:是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。并行:同时发生两个并发事件。线程安全:在并发的情况下,该代码经过多线程使用,...
2018-12-17 16:34:39
364
原创 Java 回调机制 初识
之前我对回调机制很不理解,回调机制是什么?它有什么用?怎样使用回调机制?看了这篇文章,肯定会明白的。1. 回调机制是什么?它有什么用?回调机制大体意思就是:借助一个接口,A发送一条消息给B,就去做别的事情了;然后B忙完手上的活,给A回复了一条消息。2. 回调机制的具体实现流程首先,要先定义一个接口。public interface CallBackInterfac...
2018-12-14 15:01:05
266
原创 Java 各类集合的对比
1.集合就是一个放数据的容器,准确的说是放数据对象引用的容器。2.常用集合:Collection:是一个接口。1List:元素有序、可重复、并引入位置下标。 1.1LinkedList:底层是双向循环链表。增删快、查询慢、线程不安全、效率高。 1.2ArrayList:底层数据结构是数组。查询快、增删慢、线程不安全、效率高。 1.3Vecto...
2018-12-13 21:30:27
557
SocketioDemo(Kotlin)
2018-08-27
计算网速工具类
2018-08-24
RecycleView
2018-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅