- 博客(12)
- 问答 (2)
- 收藏
- 关注
原创 trim去除空格失败
1、背景一个小功能需要填写数据并上传excel文件,因此点击保存后在后台对文件中的数据进行常规校验,其中就包括使用 trim 方法去除首位空格的操作。2、问题填完信息、上传好文件后,保存失败了,发现错误(模拟示例):java.lang.NumberFormatException: For input string: " 123 "仔细看可以发现多了空格所以转换失败。查看代码,发现已经做了trim操作(以下为简单示例):{ // str为文件中某列的一格数据 String str = "
2021-08-25 21:32:18
2364
原创 关于boolean类型
阿里开发规范:POJO 类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(),RPC 框架在反向解析的时候, “以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。1、常见写法 boolean success; boolean isSuccess; Boolean success; //推荐写法 Boolean isSuc
2021-08-25 15:51:01
1578
原创 方法区 JVM第七章
七、方法区1、栈、堆、方法区的交互关系从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及独立会话管理栈、堆、方法区的交互关系下面就涉及了对象的访问定位Person 类的 .class 信息存放在方法区中person 变量存放在 Java 栈的局部变量表中真正的 person 对象存放在 Java 堆中在 person 对象中,有个指针指向方法区中的 person 类型数据,表明这个 person 对象是用方法区
2021-03-08 15:54:42
330
原创 堆
六、堆1、堆的核心概述1.1 堆内存一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了,堆是JVM管理的最大一块内存空间,并且堆内存的大小是可以调节的。-Xms10m -Xmx20m: 堆内存10m,最大堆内存20m《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Alloc
2021-01-11 15:06:32
1210
原创 idea配置LeetCode插件
首先在idea的File -> Settings -> Plugins种下好leetcode editor插件;然后idea的右下角可以看到leetcode的标志(如箭头1),点击;点击 箭头2 所指的设置按钮,会出现左边的leetcode plugin设置页面;在箭头3处输入leetcode账号,密码在同一行,这里看不到;在箭头4处指定项目存放的路径;箭头5处是生成的java文件的文件名,参考设置P$!{question.frontendQuestionId}_$!veloci.
2021-01-11 13:46:15
726
原创 本地方法栈
五、本地方法栈1、本地方法接口1.1 什么是本地方法?简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern 告知C++编译器去调用一个C的函数。“A native method is a Java method whose implementation is provided b
2020-12-17 17:11:48
169
原创 虚拟机栈
目录四、虚拟机栈1、虚拟机栈的基本内容1.1 Java虚拟机栈是什么1.2 虚拟机栈的生命周期1.3 作用1.4 栈的优点1.5 虚拟机栈的异常2、栈的存储单位-栈帧2.1 栈存储什么?2.2 栈的运行原理2.3 栈帧的内部结构3、栈帧__局部变量表3.1 局部变量表3.2 关于Slot的理解3.3、Slot 的重复利用4、栈帧__操作数栈4.1 操作数栈特点4.2 ++i 与 i++ 的区别4.3 栈顶缓存技术5、栈帧__动态链接6、方法的调用6.1 静态链接与动态链接6.2 早期绑定与晚期绑定6.3
2020-12-03 14:30:23
327
原创 程序计数器
目录三、程序计数器1、PC寄存器概述2、代码示例3、两个面试题4、CPU时间片三、程序计数器Program Counter Register1、PC寄存器概述java虚拟机规范网址:https://docs.oracle.com/javase/specs/jvms/se8/html/index.htmlJVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运
2020-12-03 14:00:55
190
原创 运行时数据区
目录二、运行时数据区1、运行时数据区结构1.1 内存与运行时数据区1.2 线程的内存空间2、线程2.1 线程2.2 JVM 系统线程二、运行时数据区1、运行时数据区结构1.1 内存与运行时数据区内存内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布
2020-12-01 16:41:38
129
原创 类加载子系统
一、类加载子系统1、内存结构1.1 JVM架构图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HK3AMMW6-1606188154188)(image/第02章_JVM架构-简图.jpg)]OutOfMemoryErrorStackOverflowErrorGC(垃圾回收)程序计数器×××虚拟机栈√(栈可扩展时)√×本地方法栈√(栈可扩展时)√×堆√×√方法区√×√1.2 完整框图
2020-11-28 14:12:43
212
2
原创 前言 JVM 架构
目录前言1、JVM架构模型1.1 基于栈的指令集架构1.2 基于寄存器的指令级架构1.3 两种架构的举例1.4 JVM 架构总结2、JVM 生命周期1、虚拟机的启动2、虚拟机的执行3、虚拟机的退出前言1、JVM架构模型 Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:1.1 基于栈的指令集架构基于栈式架构的特点:设计和实现更简单,适用于资源受限的系统;避开了寄存器的分配难题:使用零地址指令方式分
2020-11-23 16:42:27
115
原创 关于getResource()方法和getResourceAsStream()方法
1 对于getResource()方法·class.getClassLoader().getResource("") --- class.getResource("/") 是从项目的ClassPath根下获取资源 classes·SourceTest.class.getResource("") 是从此类所在的包下取资源 classes/com.xxx./(最后的"/"下的文件是类名.class)2 对于getResourceAsStream()方法同理其中class.getClassLo.
2020-06-01 21:09:50
310
空空如也
C语言 static定义变量的问题
2017-10-15
DS1302的复位稳定问题
2017-09-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人