自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何查看JVM内存各个区域占用情况?

3)jmap -heap pid:输出堆内存设置和使用情况(JDK11使用jhsdb jmap --heap --pid pid)13) jcmd 1 VM.flags 当前使用的参数 , jcmd 5296 VM.flags -all 所有参数。9)jstat -gc pid:输出gc信息,包括gc次数和时间,内存使用状况(可带时间和显示条目参数)4)jmap -histo pid:输出heap的直方图,包括类名,对象数量,对象占用大小。6)jmap -clstats pid:输出加载类信息。...

2022-08-16 23:20:49 1292 1

原创 JVM面试题(7-12)

针对Java虚拟机进程中的线程,Java提供一个专门的工具来查看线程的详细信息:jstack 进程id,我们使用jstack可以查看到某一个java线程下的所有线程的详细信息,我们在找程序中的错误或者尝试调优的时候通常会将上面的线程展示方法和stack线程详情展示方法结合起来使用,进而定位到一个线程并观察到它的详细信息。jstack最大的好处就是会把产生死锁的信息(包含是什么线程产生的)输出到最后,所以我们只需要看最后的内容就行了。- 不断的分析和调整,直到找到合适的JVM参数配置;...

2022-08-16 23:19:46 138

原创 jvm相关面试题(1-6)

如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时,没有足够的内存去创建对应的本地方法栈,那么java虚拟机将会抛出一个OutOfMemoryError异常。对象的年龄达到阈值(默认是15),或者没达到但是新生代的内存满了,那么年龄大的就要进老年代,大对象(数组之类的)直接进老年代。筛选回收,根据用户所期望的停顿时间指定回收计划,必须暂停全部的用户线程,多条收集器线程并行完成的。java虚拟机栈用于管理java方法的调用,而本地方法栈用于管理本地方法的调用。...

2022-08-16 23:18:20 182

原创 jvm中的编译器是什么?

jvm

2022-08-16 23:17:26 100

原创 程序计数器是个啥

程序计数器

2022-08-16 23:16:33 75

原创 jvm运行时数据区域

其实从这个图当中我们不难看出,JVM的设计模型其实就是操作系统的设计模型,对于操作系统而言,jvm就是一个应用,而对于class文件来说,JVM就是一个操作系统,JVM的方法区,相当于操作系统的硬盘区。至于堆虽然概念上一致目标也一致,分配内存的方式也一直(new,或者malloc等等),但是由于他们的管理方式不同,jvm是gc回收,而操作系统是程序员手动释放,所以在算法上有很多的差异,gc的回收算法,估计是jvm里面的经典啊,后面我们也会一点点的学习的,不要着急。...

2022-08-16 23:14:49 92

原创 redis配置密码

daemonize yes //将no改为yes :开启守护进程模式,在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。cd redis-6.0.9 //redis-6.0.9相当于安装包。// 这样退出 shell 重新打开依然就是新版的gcc了。然后我们将redis安装在/usr/local/目录下。//此时redis就已经安装到了local目录下了。//然后 编译安装到指定目录下。...

2022-08-16 23:12:56 132

原创 redis基础知识

最初的时候,数据库的并发非常少,需要把数据缓存到redis中,让redis去抗并发。一些热门的数据应该存储在缓存中,攻击方请求的数据预估没有在缓存,先访问缓存在访问数据,绕过热点数据访问冷门数据,直接访问数据库,如果绕过的频率高,会让数据库崩溃。redis单纯运行速度,比数据库在磁盘要快不少,redis在内存中(自己开辟一个区域,他是c写的,没有所谓jvm这些东西,redis和jvm是同级别的、、、、、、、),数据本身是在内存里面,redis相对于mysql来说,省去了从磁盘中加载的环节。...

2022-08-16 23:11:30 187

原创 JVM二三章面试点

例如在32位的HotSpot虚拟机中,如对象未被同步锁锁定的状态 下,Mark Word的32个比特存储空间中的25个比特用于存储对象哈希码,4个比特用于存储对象分代年 龄,2个比特用于存储锁标志位,1个比特固定为0。在对象添加一个引用计数器,有一个地方引用他就加一,引用失效就减一,任何计数器为零的对象就是不可能再被使用的。运行时常量池存放类信息,方法区相当于大数组,数组里在这个索引区域划分常量池,不同的类信息存在常量池中,相当于存在数据的这一块,那一块,根据不同的区域,把数组不断的切割存储存储他们。...

2022-08-16 23:09:53 270

原创 nginx修改mysql端口号

firewall-cmd --zone=public --add-port=1300/tcp --permanent //添加1300端口。#3306为mysql的端口。#1300为对外访问的端口。首先修改/etc/my.cnf(mysql配置文件) 里的端口。firewall-cmd --reload //使其生效。在/etc/nginx/nginx.conf下配置。然后在服务器开启改之后的端口 比如1300。然后在服务器控制台添加1300端口。注意:需要在服务器开启1300端口。...

2022-08-16 23:08:36 590

原创 CMS处理器的缺点

在并发阶段,它虽然不会导致用户线程停顿,但却会因为占用了一部分线程(或者说处理器的计。为了缓解这种情况,虚拟机提。是在并发标记、清理的时候让收集器线程、用户线程交替运行,尽量减少垃圾收集线程的独占资源的。时间,这样整个垃圾收集的过程会更长,但对用户程序的影响就会显得较少一些,直观感受是速度变。段,用户线程是还在继续运行的,程序在运行自然就还会伴随有新的垃圾对象不断产生,但这一部分。,也就是说,如果处理器核心数在四个或以上,并发回收时垃圾收集线程只占用不超过。的触发百分比,降低内存回收频率,获取更好的性能。.

2022-08-06 22:17:45 391

原创 IOC/AOP大白话讲解

中转,你new一个controller需要在new一个servlet,但是你new的servlettomcat也调用不到,如果你new的话,tomcat改动的比较多,耦合度比较高,所以才采取控制反转。mybatis的dao层,有接口没实现类---------》通过CGlib动态生成实现类,作为模板类给代理使用------->通过代理引用模板类生成对象-------》invoke调用对象的method方法-------》访问数据库。Object类中的全部方法,例如,tostring,equals等;...

2022-07-29 17:06:07 158

原创 扫码登录原理

实际上,知道了也没有影响,因为设备信息是唯一的,只要你的设备信息别人不知道,别人拿其他设备来访问,验证也是不通过的。手机登录&打开网页二维码登录页(二维码有时效5-10分钟左右,超时会过期)——>手机扫码之后跳转到一个页面,这个页面至少有两个按钮确认登录/取消登录——>手机上点击确认登录————手机上显示登陆成功&电脑网页显示登录成功并且跳转,以及显示登陆人信息。2.如果账号密码校验通过,服务端会把账号与设备进行一个绑定,存在一个数据结构中,这个数据结构中包括设备id,账号id,设备信息。...

2022-07-28 23:35:14 1350

原创 哈希set于哈希map的一些基本用法

8keySet()hashmap.keySet().iterator(),keySet是把key放到一个set集合中,通过迭代器遍历,再用hashmap.get(key)来取到value的值。1put方法put(key,value),我们经常用存储一些常用的数据,比如flag、百分比之类的,我们就可以返回map结构,如果key相同则值会覆盖,允许key和value为null。hashset.add(Ee)返回boolean型,如果此set中尚未包含指定元素,则添加指定元素;...

2022-07-28 23:31:54 1173

原创 JVM第二章基础

每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程;本地方法栈java的最终执行还是要翻译成操作系统自带的一些方法,最终调用的还是操作系统的方法(操作系统的内核,操作系统的方法)同样一个数据,不同的线程不能访问,A线程访问某个信息的时候,B,C线程不能访问;OutOfMemoryError内存溢出----内存不够了,就会溢出,指的是整个栈的内存,或者整个堆的内存。StackOverflowErroe栈溢出,单个的栈空间满了,没办法入栈---递归的情况容易出现这种情况。...

2022-07-28 22:09:00 917

原创 nginx部署域名

nginxsystemctlstatusnginx.service//查看nginx的状态。systemctlrestartnginx//任意目录下重启。使用nginx添加证书将http改为https。使用yum安装的nginx在etc目录下。证书文件需要在腾讯云服务器获取。配置文件为nginx.conf。https的默认端口为443。...

2022-07-28 22:05:13 1162

原创 java基础--内存

一、计算机的位数代表什么以及cpu的计算时间cpu一次处理数据的量决定了我们操作系统的位数,我们的计算机当前有32位的和64位的,也就意味着我们cpu一次只能计算64bit的数据,那么也就意味着我们的总线一次只能传输64位的数据。当代cpu的计算时间在0.2ns左右二、内存和磁盘的速度分析1.磁盘我们在磁盘上找数据的时候,首先涉及到机械臂的移动,以及盘面的转动 共需要 5ms 上边我们看到cpu的的计算速度和每次只能计算的量,那么我们可以看到我们磁盘和cpu的速度差是25000000倍那如何解决这个问题呢?

2022-07-28 10:15:16 1144

原创 磁盘的基本使用

曾经我们要向给计算机输入数据进行预算,我们只能输入0和1这两个数字,输出是以纸带的形式进行输出,在纸带上打眼的地方就代表着数字1,在纸带上没有打眼的地方就是0,但是有一次呀人们发现电脑没有问题,但就是输出不对,后来人们发现原来是一个小飞虫堵住了纸袋上的一个眼导致了错误的发生。(举例)假如正电压产生的是2V,负电压也产生2V,我们默认让磁头拥有3V的电压,当他滑到正的时候就有5V电压,当他滑动到负的时候就只有1V的电压。所以会产生两种方向相反的电压,所以需要我们的磁头也需要带有一定的电压。...

2022-07-28 10:11:01 1579

原创 JVM先行课

1、线程中的start()方法和run()方法的主要区别在于,当程序调用start()方法,将会创建一个新线程去执行run()方法中的代码。但是如果直接调用run()方法的话,会直接在当前线程中执行run()中的代码,注意,这里不会创建新线程。在第一个方法入栈后,去堆内存创建对象,因为address是static类型的,他在方法区中存在静态常量池,所以会赋值给北京;.class文件是字节码文件,字节码文件存在于方法区当中,字节码文件就是类信息,静态常量池也在方法区当中。main方法先执行,t1,t2。...

2022-07-27 15:30:52 1539

原创 java基础之计算机底层结构!

最早期的人类将自己养的牛羊的数量画在一根根的骨头上,假设我们用一条横线代表一头羊,随着人类生活越来越丰富,羊群的数量也越来越多,那么在骨头上画的线也就越来越多,数起来也就原来越麻烦,于是有些聪明的人就发现我们为什么不将每10个横线重新做一个标记,比如用一根竖线,这样我们数羊的时候我先数有几个竖线然后在数有多少横线。--直到发现二极管。我们可以通过对逻辑开关的改造成,逻辑与,或,异或,与非,或非,异或非等门,然后将他们当成最基本元素不断的搭建就会形成了加法器,在计算机当中一切的计算的基础就来源于加法器。...

2022-07-27 15:19:03 1524

原创 判断出入栈的合法性

1.用辅助栈实现,入栈的时候,查询最小值是否为空,如果没有就把数据一块放入主栈和辅助栈当中。实现一个栈,要求实现入栈出栈,并且写一个算法返回最小值并且时间复杂度是o(1)2.如果有的话就对比一下,如果辅助栈的栈顶元素小于数据,则把数据放入辅助栈。1.首先判断入栈的数据和i游标所指向的数据是否相等,不相等就继续入栈。1.判断主栈和辅助栈栈顶元素是否相等,不相等主栈出栈,相等一起出栈。3.最后如果栈为空,那么就说明我们出栈的顺序是合法的。1.直接返回辅助栈的栈顶元素就是最小值。判断用户出栈的数据是否合法。...

2022-07-27 15:16:40 2898

原创 git相关(很详细)

有abc三个电脑,abc都有狠多软件,C中有qq,wx,tomcat,这些设备都能进行网络服务,当一个请求来的时候,数据根据ip地址找到访问方,在网卡接收之后,怎么知道给谁呢,这时候需要发送方带上访问方的ip和端口号。应用层写一条信息,传给socket,socket传给操作系统,调用网络协议,在调用网卡驱动,传给网卡,最后通过网卡传给另一个电脑。因为本质也是电容信号;一个注解类的关键字是@interface,注解类中写的是变量,直接规定变量就行,default是默认值。...

2022-07-27 15:12:51 1263

原创 tomcat原理

1.利用socket获取HTTP协议字符串操作系统管着这几层操作系统管理的东西,真实的数据放在网卡当中,数据之间传输也是通过网卡传输的网卡的来历:如果只有两个计算机,只需要加一条电缆就行因为本质也是电容信号;后来电脑多了,就出现了网卡,控制着网络设备的发送与接收,很显然,网卡属于物理硬件。操作系统怎么操作网卡?通过网卡驱动来进行管理的socket和上述有什么关系?socket用于应用层和操作系统如何通信,他作用于应用层与操作系统之间,socket的本质是 操作系统提供的程序员操作网络协议的接口一个电脑发送一

2022-07-27 15:11:30 1595

原创 maven项目基础

另一个策略tomcat启动的时候完成对他的反射,将他们的映射关系存到哈希map中,key是url路径,value是controller的方法实例,在通过请求时,通过哈希map匹配并拿到controller实例以及controller方法的实例;要在web.xml配置调用的路径,tomcat只能识别web.xml,所以需要将其他的xml配置到web.xml中,通过调用web.xml调用其他的xml,类似springXML,SpringMVC.xml,Mybatis.xml。...

2022-07-27 15:10:22 1528

原创 jvm基础

jvm

2022-07-27 15:09:12 1469

原创 java的反射

反射就是为了获取类的信息、Class student =Student.class;如何获取变量的信息---通过FieldField类--》获取成员变量第一个方法:getField (String name) //指定的publi类型的全局变量第二个方法:getFields //获取所有的public类型全局变量第三个方法:getDeclarFields //忽略访问修饰符获取类当中所有的全局变量信息(如public,private等)(区别可看下面第二个代码)第四个方法:get

2022-04-20 22:54:49 1705

原创 java基础之 泛型类(二)

一、泛型类的定义泛型类的定义语法 class 类名称 <泛型标识、泛型标识,...> { private 泛型标识 变量名; ......} 常用的泛型标识 T、E、K、V /** * 泛型类的定义 * @param <T> 泛型标识-----类型形参 * T 创建对象的时候里面具体制定的数据类型 */public class Generic<T> { // T 是由外部使用类的时候来指

2022-04-20 16:29:01 2236 1

原创 泛型类数据(一)

无论是栈还是队列我们都只能存在int类型的数据,我们如果想存储字符串就必须重写一个String类型的栈和队列,这样做很显然会增加我们的代码的复杂性。一、泛型(这里边可以看到我们改变的是类型)public class Queue<wx> { private 陈岩[] arr = (wx[]) new Object[10]; private int f; private int s; public void set(wx value){ if (f -

2022-04-20 16:20:23 2052

原创 0基础之java 队列 基础知识与实现

队列的特点:先进先出(这里改成了in和out放在一起)以下为实现扩容首先我们必须知道什么时候算是数组满的情况,从下图当中我们我们可以看出in代表对列的输入,out代表对列的输出public class Queue { private int[] arr; // 该数据用于存放数据, 模拟队列 private int front; // 队列头 private int rear; // 队列尾 //构造方法...

2022-04-20 16:18:07 2253

原创 0基础之java种 栈 的基本实现

栈的特点是:先进后出一、我们为什么要将数组封装起来?同学们的疑惑点:为什么要用数组来进行先进先出?我们知道数组有一个特点就是能够通过下标的形式来进行获取和设置数据。但是一般情况之下我们是不能够得到数组的下标的,所以在这个地方我们一般需要借助相应的游标。并不是直接去操作数组。二、实现栈public class Stack { //声明一个数组 private int[] arr; //声明头结点 private int flage = 0; public Sta..

2022-04-20 16:11:31 1644

原创 (自学分析)操作系统基础

电脑由独立硬件组成,都由总线构成计算机连接硬件的导线都叫做总线总线内部会有一个闭环电路,任何两个零件要想工作都得形成闭合电路,至少两根导线(插头至少有2个线)CPU的工作原理:两边的电压信号相互作用里面复杂电路包含半导体,里面根据不同排列组合有些半导体打通有些半导体不会打通,里面的电压会不断变化导致输出结果也不一样;控制他的输入输出就是早期的机器语言最早的机器语言是一条纸带,纸带上有一小孔,每个小孔代表一个比特信号机器语言有大量重复----》导致出现了汇编语言----

2022-04-13 11:57:48 2423

原创 全网最细:详解堆排序(专为0基础准备)

首先在了解堆排序前,我们要知道什么是完全二叉树,什么是堆一、完全二叉树完全二叉树是一种特殊的二叉树。从上到下,从左到右,每一层的节点都是满的,最下边一层所有的节点都是连续集中在最左边二、堆堆排序分为两种,分别是大顶堆和小顶堆。大顶堆:在完全二叉树的基础上,每个结点的值都大于或等于其左右孩子结点的值小顶堆:在完全二叉树的基础上,每个结点的值都小于或等于其左右孩子结点的值三、堆排序的特点堆排序是利用堆这种数据结构而设立的一种排序算法(这个地方需要将数据的下标放在树的一旁(目的

2022-04-13 11:24:23 2356

原创 史上最全八大排序讲解时间复杂度篇(0基础都能看懂)

1.冒泡排序冒泡排序的基本原理对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数据就会逐个往前移动,好像气泡网上漂浮一样。冒泡排序的特点:升序排序当中每一轮比较会把最大的数沉到最底(这里以从小到大为例),所有相互比较的次数每一轮会比前一轮少一次。冒泡排序的时间复杂度:O(n^2)O(N)和真实的计算时间成正比从前到后执行一轮要n次,O(N) N指的是数据的规模.

2022-04-13 11:07:50 30257 10

空空如也

空空如也

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

TA关注的人

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