后端基础
文章平均质量分 88
马德兰公爵
在读学生,博客首页http://www.madlandduke.cn/#/article
展开
-
记录一次写入长字符串到文件的bug
Java的io操作原创 2022-08-11 17:14:40 · 265 阅读 · 1 评论 -
JUC-并发基础
1 并发基础概念1.1 并发和并行他们都可以表示你两个或者多个任务一起执行,但是偏重点不同,并发偏重于多个任务交替执行,并行是真正意义上的同时执行。 并发和并行都能表示两个或多个任务一起执行,但是并发偏重于任务交替执行,多个任务之间很可能是串行的,而并行是真正意义上的"同时执行"。并发三要素:原子性、可见性、有序性1.2 java的内存模型(JMM)及基础java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统原创 2021-03-28 12:19:11 · 151 阅读 · 0 评论 -
JUC-线程基础
1. 概念1.1 进程和线程进程是一个系统运行程序的基本单位,是资源申请、调度和独立运行的单位。线程是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。线程优先级单核计算机只有一个CPU,各个线程轮流获得CPU的使用权,才能执行任务:优先级较高的线程有更多获得CPU的机会,反之亦然。优先级用整数表示,取值原创 2021-03-28 12:18:11 · 118 阅读 · 0 评论 -
JVM-对象和垃圾回收算法
1. 对象1.1 对象的创建方式创建过程一.虚拟机遇到一条new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用, 并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有, 那必须先执行相应的类加载过程.二.在类加载检查通过后, 接下来虚拟机将为新生对象分配内存。三.内存分配完成后, 虚拟机需要将分配到的内存空间都初始化为零值( 不包括对象头).四.接下来, 虚拟机要对对象进行必要的设置 ,也就是设置对象头五.在上面工作都完成之后, 从虚拟机的视原创 2021-03-21 17:18:29 · 91 阅读 · 0 评论 -
jvm-运行时数据区(二)
接上篇结构图如下1. 堆区1.1 概述其大小通过 - Xms(最小值)和 -Xmx(最大值)参数设置(例如:java -Xms=1M -Xmx=2M HackTheJava),-Xms 为 JVM 启动时申请的最小内存,默认为操作系统物理内存的 1/64 但小于 1G,-Xmx 为 JVM 可申请的最大内存,默认为物理内存的 1/4 但小于 1G,默认当空余堆内存小于 40% 时,JVM 会增大 Heap 到 -Xmx 指定的大小,可通过 - XX:MinHeapFreeRation 来指定这个比原创 2021-03-20 21:26:46 · 198 阅读 · 0 评论 -
jvm-运行时数据区(一)
1. java运行区域每个jvm只有一个Runtime实例.即为运行时环境,Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。整个类加载及运行时区域划分如下。具体介绍:.java文件被编译后形成.class文件保存在本地硬盘上被类加载器加载到到jvm中被称为DNA元数据模板然后放在方法区再调用这个模板的构造方法创建对象存放在堆中,由这些具体的对象通过getclass可以获得由那个的创建class文件–>JVM–>元数据模板,此过程由类原创 2021-03-20 16:53:18 · 86 阅读 · 0 评论 -
jvm-类的加载过程
马德兰的博客1. 概述从类的生命周期而言,一个类包括如下阶段:加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序进行,而解析阶段则不一定,它在某些情况下可能在初始化阶段后在开始,因为java支持运行时绑定。2. 类的加载过程2.1 加载1.通过一个类的全限定名获取此类的二进制字节流(从内存中读出)2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3.在内存中生成一个代表这个类的java.lang.class对象,作为方法区这个类的各原创 2021-03-19 17:43:44 · 152 阅读 · 0 评论 -
java基础-Arraylist
1. 综述一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList:底层数组,线程不安全,支持随机查询。Vector:底层数组,线程安全,速度慢,由arraylist代替。LinkedList:底层为双向链表,适合增删它定义了一些通用的方法://添加元素boolean add(E e);//添加元素到指定索引后void add(int ind原创 2021-03-07 11:46:08 · 136 阅读 · 0 评论 -
java基础-java8日期api
原文连接1.LocalDate 和 LocalTimeLocalDate、 LocalTime、 LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息 .你可以通过静态工厂方法of创建一个LocalDate实例。 LocalDate实例提供了多种方法来读取常用的值,比如年份、月份、星期几等now()静态方法, 根据当前时间创建对象LocalDa原创 2021-03-05 22:09:20 · 126 阅读 · 0 评论 -
java基础-注解
个人博客主页:http://www.madlandduke.cn/#/article1. 注解的定义注解通过 @interface 关键字进行定义。public @interface TestAnnotation {}它的形式跟接口很类似,不过前面多了一个 @ 符号。上面的代码就创建了一个名字为 TestAnnotaion 的注解。你可以简单理解为创建了一张名字为 TestAnnotation 的标签。2. 注解的应用创建一个类 Test,然后在类定义的地方加上 @TestAnnotatio原创 2021-02-21 22:49:21 · 169 阅读 · 0 评论