自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 JVM内存模型、常用参数及调优。

JVM内存结构主要分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器,其中方法区和堆是线程共享的,其他的都是线程隔离的。方法区:主要存放类的信息、静态变量、常量、编译后的方法代码,永久代PermGen是方法区的实现,JDK1.8后永久代被移除换成了元空间Metaspace,元空间的本质和永久代类似,都是对方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。元空间大小,理论上取决于32位/64位系统可虚拟的内存大小。堆:唯一用途就是用来存放.

2022-01-14 23:27:51 174

原创 并发的原子性、可见性、有序性。

   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用vola

2022-01-11 23:41:16 107

原创 Java内存屏障

JVM运行时刻内存分配在 java 垃圾回收整理一文中,描述了jvm运行时刻内存的分配。其中有一个内存区域是jvm虚拟机栈,每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完之后的某一个时(线程退出之前),自动把线程变量副本的值回写到对象在堆中变量。这样在堆中的

2022-01-11 23:08:15 356

原创 Class文件的解析

class文件的数据结构:Class文件是一组以8个字节为基础单位的二进制字节流。各项数据会严格的按照顺序紧凑的排列在class文件中,中间没有分隔符,使得class文件存储的内容几乎全部都是程序运行的。无符号数:属于基本数据类型 主要用于描述数字 索引符号 数量值 或者按照UTF-8编码构成的字符串值数据类型 U1 U2 U4 U8 也只是逻辑上的区分。表: 由多个无符号数或者其他表作为数据项构成的复合数据类型。所有的表都习惯以_info结尾 表主要用于描述有层次关系的复合结构数据。

2022-01-09 00:29:14 593

原创 Spring笔记Day2

1.注解的使用1.1 Configuration注解该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。@Configuration注解的类必需使用<context:component-scanbase-package="XXX"/>扫描定义一个MainConfig,用@Configuration注解,那MainConfig相当于xml里的beans,里面用@Bean

2021-09-14 20:13:04 48

原创 Spring笔记Day1

1.Spring是什么?它的特点和优势分别是?1.1 Spring是什么?1.2 Spring的优点。2.耦合是什么意思?3.Spring核心是什么?4.IOC是什么含义?提到控制就要理解控制的含义,控制就是对象的创建、初始化、销毁。创建对象,原来是 new 一个,现在给 Spring 容器创建了;对象初始化,比如 A 依赖 B,原来是我们通过构造器或者 setter 方法赋值,现在给 Spring 容器自动注入了;销毁对象,原来是我们直接赋值 null 或者做一些...

2021-09-14 17:54:36 59

原创 线程池原理

简介:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程池包括以下四个基本组成部分: 1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新...

2021-08-17 18:01:21 84

原创 JAVA中强引用和弱引用的区别

前景概述:在java中,每一个变量都像是我们生活中手边的生活用品,有的使用频繁,有的使用不频繁,在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。然后在实际应用过程中,可能并不像完美情况这么顺利,就像生活中总有一些特定场合又有一些必不可少用处的物品一样,丢掉又舍不得,留着又太浪费空间,所以就要有一种折中的方

2021-08-16 21:41:59 2440

原创 值传递和引用传递、深拷贝和浅拷贝!

首先给大家解释一下这几个名词的概念:值传递:在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。引用传递:引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说

2021-08-15 20:17:09 1514

原创 HashMap底层原理(JDK8及以后)!

HashMap顾名思义,可以看出它和Hash表有着密不可分的联系,在讲解HashMap之前,我们先来了解一下Hash表。哈希表:相比数组、线性链表、二叉树这几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1),接下来我们就来看看哈希表是如何实现达到惊艳的常数阶O(1)的。我们知道,数据结构的物理存储结构只有两种:顺序存储结构和链式存储结构(像栈,队列,树,图等是从逻辑结构去抽象的,映射到内存中,也这两种物...

2021-08-15 17:28:03 148

原创 JAVA中main方法如何执行。

public class Test{ public static void main(String[] args){ System.out.println("hello world"); }}上述就是java代码中的一段简单的main函数的代码,代码执行后输出结果为:hello worldmain函数:在java中main函数是一个特殊的函数,是java代码的入口函数,即java代码执行时,会寻找main函数,执行完main函数,整个代.

2021-08-10 22:11:10 2058

原创 TCP协议和UDP协议的区别!

用表格形式简单的展示一下二者的区别: TCP UDP 是否可靠 是 否 是否面向链接(即建立连接) 是 否 使用的套接字对象 Socket DatagramSocket 运行速度 相对较快 相对较慢 传输包大小有无限制 无 有 是否保证数据顺序 是 否 是否保证数据正确性 是 否 ...

2021-08-10 17:29:12 47

原创 JAVA基础——函数总结

函数总结: 函数 常见的系统类 函数:什么是函数:函数的调用:public为主函数是公开权限 最大权限static为主函数是静态函数void表示该函数没有返回值main是主函数的名称helloJava是函数名return:此处因为有void所以不写return局部变量:函数的重载:递归:常见的系统类:Math:常见的还有:abs(); 返回一个绝对值 m...

2021-07-13 17:22:44 124

原创 JAVA基础——程序控制流程

程序控制流程(三大流程)switch语句块 循环 循环加强switch语句块 :switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。switch构造如下:switch case 语句有如下规则: switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。 switch 语句可以拥有

2021-07-10 18:50:48 49

原创 JAVA基础——常见运算符

JAVA运算符:算术运算符 比较(关系)运算符 逻辑运算符 自加自减运算符 赋值运算符 三目运算符 位运算符算术运算符:以a = 1;b = 2为例。符号 描述 示例 + 相加:将符号两边的数加起来 a+b=3 - 相减:用符号左边的数减去右边的数 a-b=-1 * 相乘:将符号两边的数乘起来 a*b=2 / 相除:用符号左边的数除以右边的数 a/b=0.5 % 取余:符号左边的数除以右边的数所.

2021-07-10 18:22:09 57

原创 JAVA基础————变量与数据类型

本篇文章讲述JAVA基础里的变量与数据类型。1.变量: 1.1变量的概念: 变量表示内存中的一个存储区域,该区域用来不断的存放同一类型的常量数据,并可以重复使用这个区域。并且这个区域有自己的名称(变量名)和类型(数据类型)。其就如同数学中的未知数。 1.2定义变量的格式: 数据类型 变量名称 = 变量值; //先声明...

2021-07-07 14:16:08 58

原创 2021-07-07Java中JDK的下载、安装以及环境配置

这篇文章主要是讲解Java新手需要进行的JDK下载、安装以及环境变量的配置。以下是JDK的安装和下载:1.首先在百度搜索Oracle公司官网,点击带蓝色官方标记的链接进入官网。2.进入官网后,找到products(产品),点击进入:3.点击Java:4.找到页面右上方的Download Java按钮,并点击:5.在跳转的页面中寻找自己需要的版本,并点击下载(以Java SE 8 版本为例):6.在跳转页面下滑,找到适合自己电脑的版本,点击下载(以windows

2021-07-07 13:38:06 229

空空如也

空空如也

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

TA关注的人

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