自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用Langchain-chatchat搭建本地知识库

可以使用或者。

2023-11-28 09:09:24 2076 1

原创 JVM-常见的垃圾回收器(概述)

当我了解JVM的内存结构,常见的垃圾回收算法和垃圾回收器的相关理论基础后终于到了具体的垃圾回收器实现,本篇文章将会简要介绍一下常见的垃圾回收器及其实现。

2023-08-27 17:52:06 73

原创 JVM-堆中的对象

创建阶段使用阶段不可见阶段不可达阶段收集阶段终结阶段空间重分配阶段。

2023-08-27 15:53:48 67

原创 JVM-堆内存布局及其GC算法的应用

所谓跨代引用问题,即:Old区(Young区)的对象引用到了Young区(Old区)的对象,因此在做Young区(往往是这样,因为Old区的GC在某些垃圾回收器中会同时对Young区做GC操作)的GC操作时,由于跨代引用的情况发生,需要额外遍历Old区的对象,造成额外的性能开销。也被叫做Young GC 主要负责Young区域的垃圾回收也被叫做Old GC,应该是负责Old区域的垃圾回收,但是在一些垃圾收集器中Major GC的含义有点类似Full GC,负责收集Young区和Old区。

2023-08-26 12:35:30 75

原创 JVM-垃圾回收算法(垃圾回收算法)

标记清除算法,主要分为两个步骤:第一个步骤就是标记垃圾对象,第二个步骤就是将这些对象从内存中清除。关于第一步标记,需要注意的是,由于Java中查询垃圾对象的算法是可达性分析算法,因此往往标记的都是非垃圾对象,因此对于Java来说如果使用标记清除算法清理垃圾对象,其实清除的是非标记对象。如果要使用标记复制算法,需要将内存空间分成两个部分用于进行对象复制;首先查询出垃圾对象然后将非垃圾对象复制到另一边的内存空间中去最后对清除原先的内存空间。

2023-08-25 15:10:15 52 1

原创 JVM-垃圾回收算法(垃圾判定算法)

所谓引用计数就是在这个对象信息中有一个专门的空间专门用于记录:其他引用或者其他对象对自己的指向次数。如果该对象的这个计数为0,就可以判断这个对象是个垃圾对象。先找出JVM中的GC Root对象;然后从GC Root对象开始根据依赖关系遍历依赖的对象并给这些对象打上标记;当所有根据GC Root对象遍历的对象标记完后。堆中剩余的其他未被标记的对象就是垃圾对象。

2023-08-24 18:16:01 55 1

原创 JVM-运行时数据区(线程私有区域)

每一个Java虚拟机线程都拥有一个私有的虚拟机栈。虚拟机栈的创建在虚拟机线程的创建的同时被创建。Java虚拟机栈中包含一个个栈帧结构,但是Java虚拟机栈只能对栈帧进行出栈或者压栈操作。Java虚拟栈的大小是固定的(创建时固定),但是在栈帧创建前可以采用JVM指令对栈帧大小进行修改。如果栈帧的总大小超过分配给栈的大小,JVM会抛出异常。本地方法栈和JAVA虚拟机栈的功能相似,只不过本地方法栈中的栈帧是执行native方法时压入本地方法栈的。

2023-08-23 20:56:08 35

原创 JVM-运行时数据区(线程共享区域)

运行时常量池中的大部分信息来自于Class文件中的常量池,只不过将其中的符号引用转变为了直接引用。当类和接口被创建时,它们对应的运行时常量池同时被创建。方法区在JVM启动时创建,属于JVM中工作线程共享的区域。虽然Java虚拟机规范中将方法区描述为堆的一个逻辑部分,但是方法区又被称为非堆(No-Heap),目的是为了和堆区别开来方法区主要存放虚拟机加载的运行时常量池,类元信息,即时编译器之后的代码等数据。

2023-08-23 18:47:02 39

原创 JVM-运行时数据区(概要)

Java 虚拟机定义了在程序执行过程中使用的。其中一些数据区在 Java 虚拟机启动时创建,只有在 Java 虚拟机退出时才会销毁。其他数据区是按线程创建的。每线程数据区在创建线程时创建,并在线程退出时销毁。tip:【由官方文字翻译而来,英文原版见下链接官网。

2023-08-23 18:10:48 34

原创 JVM-类加载机制

JVM最开始的工作肯定是,加载class文件到JVM中并可以识别class的内容最后保证class文件的指令可以正常运行。因此,本篇文章会尽量将一个class文件到jvm的运行时数据区的流程及其涉及到jvm中的一些组件阐述清晰。

2023-08-21 15:32:44 38 1

原创 JVM概述

由于class的文件格式中有大把内容可以深究,但是由于本人时间和精力有限,对于很多概念不会深究。如果读者感兴趣可以自行阅读官方文档,链接如下:u4 magic;//魔术 32位//小版本号 16位//主版本号 16位// 常量池中常量数量 16位// 常量池// 标识类的状态例如是否是static 权限修饰符是什么?这里有一定的计算规则不展开// 常量池中类信息的引用(也可以理解为索引吧) 16位// 常量池中类信息的引用(也可以理解为索引吧) 16位// 接口数量 16位。

2023-08-20 21:08:53 40 1

原创 素数伴侣(匈牙利算法)

若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的 N ( N 为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。有一个正偶数 n ,表示待挑选的自然数的个数。后面给出 n 个具体的数字。

2023-04-20 00:50:29 470 2

原创 Qt配置mysql驱动

Qt配置mysql驱动问题产生的环境:QT6.2.3(mingw_64)mysql5.7win10mingw_64,ninja,CMake(均采用qt自带的,在qt安装目录下的tool文件夹中,记得配置环境变量)问题描述:​ qt连接mysql数据库时报错:QSqlDatabase: QMYSQL driver not loadedQSqlDatabase: available QSQLITE QMARIADB QODBC QPSQL 解决方案:根据第二行报错信息可知该版本

2022-02-15 15:29:31 1467 1

原创 Centos7安装mysql5.7.22脚本

写在前面:本人shell小白,本脚本基于他人写的脚本进行的二次编写,主要用于今后部署mysql时方便查询。由于某些原因不好找到源码出处,就无法列出源码链接了,特此声明,还望原作者谅解。本脚本仍有许多地方有待优化,但用于一个简单的自动化部署绰绰有余。自动化安装脚本#!/bin/bash# Mysql安装包所在路径,需要带上包名,示例:PACKAGE_FULL_WAY=/root/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gzreadonly PACKAGE

2021-05-09 16:18:59 240

原创 Maven

Mavenmaven的作用构建多模块的项目使用maven快速导入jar包使用maven将项目生成jar等maven简介maven是一款***服务于Java平台***的自动化***构建***工具。所谓构建即:​ 以Java源文件,框架配置文件,JSP,HTML,图片等静态资源,为原材料去生成一个可以运行的项目的过程。Maven项目的约定目录结构为什么要有指定的目录结构?因为maven是一个构建工具,maven工具在运行中必须知道java源码,框架配置文件,其他静态资源的目录结构,

2021-03-25 16:42:35 301

qt6mysql驱动dll文件

环境: win10专业版 qt6.2.3 mysql5.7

2022-02-15

空空如也

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

TA关注的人

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