自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android系统架构

后来我结合JVM,以及操作系统基础知识,自己总结了一下。结合后面的图,还是很好理解的。ART就像安卓Java虚拟机,抽象了底层的细节(主要硬件层面的);但最终还是会调用本地的系统调用,最后调用驱动完成对硬件的操作。或者説,Java面向对象编程,这里的对象就是API;所以説,安卓是Java的面向组件编程。库层,ART在运行时,会需要很多的库,就在这里。这些库,就是对接驱动程序的。用户通过Java语言,操作API组件(如按钮)。Java语言,通过类,对API进行了封装。接受上面的命令,驱动硬件工作。

2025-04-16 16:44:22 227

原创 所谓跨平台,到底指的是什么?

JVM会根据不同的操作系统,将.class文件,解释成不同的系统调用,以控制硬件。可以理解成,不同的操作系统;为了让结果一样,JVM需要执行不同的操作。Java跨平台:.class文件——虚拟机(解释)——系统调用——驱动——硬件。为什么安卓只有一个系统,还需要跨平台?(kotlin>.class>JVM )因为不同的操作系统,提供了不同的系统调用。因为硬件不同,也会导致不同的系统调用。

2025-04-16 16:30:03 170

原创 其实在Java SE中,仅需要学习这2个章节就够了!

对Java整个体系的学习,Java SE的核心只有这二个,最多花15个小时。然后Java SE基础,等到真正需要的时候再学,不仅学的开心,而且效果好。文件与IO流,多线程:这一块真正重要的是,你得有操作系统基础,对操作系统原理有基础认知。他不仅是Java SE其他知识点的基础,也是后面Java Web、Java EE最核心的基础。这里面的基础不是简单的意思,而是构建的意思。更加重要的是,那些知识点,只是非常表面的东西。这一块真正重要的从来不是这个,而是你得对计算机的CPU、寄存器、内存有很好的认识。

2025-04-16 08:01:14 352

原创 Java文件类详解

File类是Java对系统调用(文件)进行封装,为用户提供易用的接口;抽象掉了“低级”的系统调用,使用户能够以平台无关的方式,与文件和目录交互。一个File对象,表示和操作系统的具体“文件/目录“建立了关系,当我们使用具体方法时,便会执行。对文件的创建,最好使用mkdires(),因为他可以创建单级目录,功能更强大。但具体是文件还是目录,必须等具体的操作,才知道。:此File表示的文件或目录是否实际存在。:删除文件或目录(如果是目录,则必须为。:此File表示的是否为目录。:此File表示的是否为文件。

2025-04-16 06:14:56 665

原创 Java SE中最难的知识点

Java中,真正核心的并且最难的,是面向对象。不就搞个Java Bean,然后调一调方法,最多整点接口多态,没什么难度。理解内部类,是你Java面向对象,能否达到中等水平的关键。很多人以为会用什么多态,背了背抽象类的作用,就是会面向对象了。这只是皮毛中的皮毛。面向对象思想,就像一个操作系统,其余的只是应用软件。作为用户,你不需要知道操作系统具体怎么写的,但你得知道它的原理。它是后面所有“高级内容”的基础,这里面的基础不是“简单”的意义,而是构建的意思。它是最接近JVM的,学面向对象,不了解JVM等于白学。

2025-04-15 10:41:31 289

原创 this、super与out.this的本质

然后子类在父类的后面,加载自己的成员,再执行自己的构造方法。当我们使用对象调用方法时,无论方法中是否有this,out.this,JVM都会将参数,(隐式)传给方法栈中的第0号地址进行存储。几乎等价于new Son(),所以用法参照 new Son(),只是这里单纯的调用构造器,没有其余操作。注意此时还没有this,out.this这些概念,只是JVM给对象分配地址时,把地址存储在这里。super只是一个关键字,如果我们使用它,就是在告诉JVM,跳过子类空间,从父类空间开始找。把当前对象的地址传回去。

2025-04-14 09:11:17 770

原创 Java继承原理分析(深度好文)

(假设Object—>A—>B—>C依次继承)如果没有继承,对象需要变量或者方法的时候,只会在“C的对象空间”找,然后就没了。如果有继承,对象会依次向上找,C空间没有就去B空间,B空间没有就像A空间,直到Object。也及扩大了“可查找空间”。这个可查找空间,分为“栈空间”和“元空间”,前者存放对象成员,后者存储类成员。具体细节如下:繁琐,涉及内容太多,但主线清晰。

2025-04-13 15:44:12 1017

原创 Java包详解

在JVM真正执行前,编译器会将(要使用)类连接在一起,形成一个完整的.class文件。package 用于声明当前类所在包,需要放在类的最上面。导入包语法 import java.util.Scanner // *表示当前包下所有类。java中的包,主要用于区分类、管理很多类(win下的目录文件夹)、控制访问范围等。java.lang.* //lang包是基本包,默认引入,不需要再引入。java.util.* //系统提供的工具包,如Scanner。如果我们不导入包,还想导入不同包的类,需要使用。

2025-04-13 09:43:38 361

原创 类和对象的加载与初始化(底层原理)

这一块应该是类和对象,最不好理解的内容之一。这里会讲到:构造器原理。创建对象的过程。继承的原理。因为内容涉及太多底层(JVM)的东西,并且底层也会改变。所以不能保证一定正确,但大体方向没有问题。内容有些过分抽象,结合图和下面我写的测试代码,比较好理解。

2025-04-12 15:46:42 587

原创 Java数组详细笔记

定义(重)基本:int [] arr (括号也可以放后面,但中间比较常见。静态初始化:使用元素初始化,系统根据元素计算长度。完整格式:int [] arr = new int[] {1, 2, 3};简化格式:int [] arr = {1, 2, 3}注:完整格式可以将定义和初始化分开,简化格式不可以。动态初始化:指定长度,会使用“默认值”初始化。格式:int [] arr = new int[3];注1:这个“3”表示创建了3个元素,但是下标是0,1,2。

2025-04-11 09:09:31 1004

原创 套接字到底是什么

会通过网卡,自动接收邮件放在信箱中。并且会自动(或手动——单独调用),将信箱中的邮箱,送到你的房间。在接受数据时,操作系统会检查,传入数据包的目的 IP 和端口。在发送数据时,我们得告诉套接字,我们要发到哪里(IP + 端口)。假设是发邮件,IP地址是你的公寓地址,端口是你的房间号。一个进程,可能有多个套接字。服务器端:绑定套接字,让操作系统监听这个IP和端口号。应用层:创建、关闭套接字,绑定端口等等。客户端:创建临时套接字,发送和接收数据。不同计算机上的进程通信,套接字完成。位于应用层和传输层之间的,

2025-04-09 11:38:19 397

原创 字长到底是什么?

CPU如何处理位数的呢?如同我们的“加法算式”一样,CU告诉ALU做加法;两个加数以及结果,分别由寄存器提供和保存。所以CPU的字长,通常和寄存器的最大位数(数据总结宽度;ACC寄存器等)相关。假设是32位的数据总线和寄存器,那么他最大一次只能处理32个字。如果是16位,那么考虑兼容性,通常没有问题;但如果是64位,必须分为二次操作。CPU一次处理数据的位数,是CPU处理数据的“单位”。

2025-04-04 08:12:02 519

原创 计算机基础四大件学习建议

理由:数据结构和其他课不一样,如果你只想懂“基本原理”,那么听这个就够了。如果你想具体的实现,你选择C或者Java语言,跟着做就好了。视频推荐:哈工大 李治军 操作系统(深,听课的时候忽略细节,抓住原理);先修:C语言、(离散数学可选) 注:后面打括号的都是可选的,最好学,不学不是特别影响内容理解。书籍推荐:现在操作系统(黑皮书);学习建议:抓大放小,忽略细节,抓住主要内容以及原理部分。先修:数据结构、组成原理(信号与信号)(汇编语言)学习建议:抓大放小,注重整体以及原理。先修:(操作系统)、(通信原理)

2025-03-31 19:24:11 2492 1

原创 进制、补码和浮点四则

注:适合有基本的人,做简要复习。首先是大纲,然后是进制与补码,最后是浮点加法。2^ N =?进制转换:2——>10,1610,16——>2浮点四则1)转成补码。正——本身;负——模+真值。2)对阶:小阶向大阶看齐。(移位)3)尾数相加。(判断溢出与否,双符号位)4)规格化。(补码的符号与第一位不同)

2025-03-31 09:47:45 490

原创 汇编语言书籍推荐

因为汇编语言就是“机器语言”,机器语言和硬件相关,所以能做什么操作,是“确定”的。首先,这本教材最大的亮点,是把道理讲懂了,语言能力过关了。其次,最大的缺点,就是所谓的“问题驱动”,导致的结果就是结构混乱。基于这些新东西,结合前面的指令系统的原理,根据具体的CPU型号,我们可以了解指令系统这块。但我想説的是,如果你学习计算机“不带脑子”,非常传统的从第一页,看到最后一页,那么这本书是非常好的;但如果你有自己的节奏,或者你只想学习“对你有用”的东西,那么这本教材是非常糟糕的。一是代码,基本是前面所学的;

2025-03-30 23:59:14 866

原创 为什么学习要少听课!

唯一的好处,就是此时你快一点,因为你有一点残留的印象。这里,我不得不提出一个猜想:就是老师在教给你知识的时候,同时毁掉了你的所有可能,或者説是天赋。因为绝大部分老师,都是你不会,我会,让我来告诉你。你内心当中,一定有什么东西,知道”这些“是垃圾,否则怎么会”昏昏欲睡“呢。依然是,我什么都知道,你坐着不要动,把我説的记住;又或者,先理解,然后记住。一旦有了崇拜,你将只能是奴隶,此时你将永远无法看清知识的本来面目,也无法真正掌握他。你应该放弃所有的老师和权威,遵从自己,让自己成为创造者,而不是“知识容器”。

2025-03-25 23:49:58 262

原创 对初学编程的人一个建议

安卓开发不是很难吧,但如果你一开始就上机,你很快就迷失了,你将花费大量的时间在“迷失”中。SSM框架也一样,一开始学习各种配置文件,一个星期过去了,还在配置文件,你在准备。但如果一开始,我们直接分析别人的代码,分析出原理性的东西,那么在真正实践的时候,便有的放矢、事半功倍。这有点像”跨越原始森林”,之前你只是跟着一个向导,你片刻不敢离开他,因为一旦你找不到他,你就迷路了。对于数学,或者物理等理论性很强的学科,我会建议他们,先做题,再实践。但对计算机,我有相反的观点,先去看理论,了解大概过程,再去实践;

2025-03-19 20:38:08 624

原创 Android Studio开发环境配置以及学习资料推荐

安卓这个环境,真的折腾的我头大。还好,终于成功了,能踩的坑差不多都踩了。以下是经验分享。注:如果你不是最新版,请装最新版本。JDK要17版本的,别的东西,直接一路下载就好了。(Gradle可能需要科技,或者换源)SDK是安装过程中下载,Gradle是进入后下载。我就是折腾了太多,最后发现全用最新版解决了!!!

2025-03-18 09:59:13 641

原创 我该选择什么样的资料?

不是要选择一个,你可以有很多选择。优先看书,因为阅读速度更快;精力不好,或者不懂(真的不懂,或者没有动态过程),再去听课。优先选择一个“主要的”,主要的不懂,再去找其他的。关键不是听哪个老师,而是你是否真的学到了东西。

2025-03-12 20:28:12 270

原创 JDK与IDEA环境

在学习具体的编程语言前,我们往往急于求成,或不知所措;这导致我们很容易错过一些简单基础的东西。例如集成环境、jDK各种环境问题。

2025-03-12 15:35:14 391

空空如也

空空如也

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

TA关注的人

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