Published on

ARTS 第44周

Authors

ARTS-44

Algorithm

https://leetcode.com/problems/length-of-last-word/

class Solution {
    public int lengthOfLastWord(String s) {
        int index = s.length() - 1;
        while (s.charAt(index) == ' ') {
            index--;
        }
        int wordLength = 0;
        while (index >= 0 && s.charAt(index) != ' ') {
            wordLength++;
            index--;
        }
        return wordLength;
    }
}

Review

Introduction to Java Bytecode

JVM Data Types

JVM 定义的数据类型包括原始类型引用类型

原始类型

  • 数值类型:byte(8位),short(16位),int(32位),long(64位),char(16位), float(32位), double(64位)
  • 布尔类型:boolean
  • returnAddress: 指针指令

引用类型

  • 类类型
  • 数组类型
  • 接口类型

布尔类型在字节码中支持受限,没有指令直接操作布尔值,布尔值会被编译器转换为int,使用int指令操作替代。

Stack-Based Architecture

  • JVM是基于堆栈的VM架构,而非基于寄存器的架构
  • PC寄存器:对于运行在Java程序每一个线程,由PC继勋奇来存储当前指令的地址
  • JVM stack:对于每一个线程,都会分配一个栈,来存储局部变量,方法参数和返回值
  • Heap:内存被所有线程和存储的对象共享(类的实例和数据),对象的释放由垃圾回收器管理
  • 方法区:对于每一个加载的类,方法区存储了方法代码、符号表和常量池
  • 数组局部变量,下标从0开始到length-1,长度由编译器来计算;一个局部变量可以保存除了longdouble的任何类型的值,longdouble占用两个局部变量
  • 操作数栈用于存储作为指令操作数的中间值,或者将参数传入方法调用

Tip

剪贴板工具是个好东西,工作电脑windows下用的QQ拼音输入法,里面有个剪贴板,一直没用过, 前几天无意打开看到本地剪贴板的内容有很多,试用了一下,真的可以提高不少工作效率; 暂时也不需要其他酷炫的功能,剪贴板历史足矣,用法也很简单,不多介绍了; 个人PC用的是fedora,剪贴板工具使用gnome下的Gpaste,给大家推荐试试,剪贴板工具,定能助你CV大法更牛掰。

Share

We believe that three things lead to success: Practice, Practice and Practice!

上一篇ARTS定格在2019年10月3日,不由感慨时间过得真快,这两年的代码量和技术书籍的阅读量也是少的可怜。

想要好好吐槽一下工作中的杂七杂八,回头想想还不都是自找的,想要变得优秀,就要持续学习,勇于承担。

这个需要综合能力的时代,技管并重,哪个都不能落下,压力山大。