JVM 面试题
JVM 面试题1.JVM 的 TLAB 是什么?TLAB(Thread-Local Allocation Bufer)是IM 中为每个线程分配的一小块堆内存,用于加速对象的分配操作。每个线程都有自己的 TLAB,,大大加速了内存分配的同时避免了多线程竞争共享堆内存时的同步开销。
工作原理:
每个线程在执行过程中优先从自己的 TLAB 中分配内存。
当 TLAB 中的内存耗尽时,线程会重新向 Eden 区申请一个新的 TLAB,或者直接从 Eden 区分配内存。
对象超过一定大小时(大对象),不会在 TLAB 中分配,而是直接在 Eden 区进行分配。
2.JVM 垃圾回收时产生的 concurrent mode failure 的原因是什么?concurrent mode failure 是在Java 虚拟机使用 CMS(Concurrent Mark-sweep) 垃圾收集器 时的一种失败现象。当 CMS 在执行垃圾回收时,发现内存中的老年代(Old Generation)空间不足以继续分配新对象时,导致垃圾回收被迫转为 FuI GC。
产生的原因:
CMS 收集器是并发进行的 ...
JUC 面试题
JUC 面试题1.什么是 Java 中的线程同步线程同步是指,在多线程环境下为了避免多个线程同时访问共享资源,从而引发数据不一致或其他问题的一种机制。
当多个线程共享同一资源(如变量、对象或文件),若没有同步机制,可能会导致竞态条件,即线程对共享资源的操作是非原子性的,多个线程之间会同时修改数据,导致结果不符合预期。
拓展知识
Java 中常见的同步方式
1)synchronized
Java 提供的关键字,用于在方法或代码块上加锁,确保同一时刻仅有一个线程能执行被同步的方法或代码块
在 synchronized 可以使用 wait()、notify() 和 notifyAll() 实现条件等待通知。
wait():当前线程进入等待状态,直到被其他线程唤醒。必须在同步块或同步方法中调用。
notify():唤醒一个等待的线程。如果有多个线程在等待,同一时刻只能唤醒一个。
notifyAll():唤醒所有等待的线程。
例如在 synchronized 块或方法中,可以使用 wait()方法使线程等待某个条件满足,可使用 notify() 或 notifyAll() 方法唤醒等待的 ...
面试狗 - interviewdog 项目笔记
面试狗 - interviewdog 项目笔记前端初始化配置Next.js 有两种开发模式(App Router / Page Router),注意,本项目用的是新的开发模式 App Router,建议看英文官方文档:https://nextjs.org/docs/getting-started/installation#automatic-installation
执行安装命令:
1npx create-next-app@latest
历史 next-app 版本:https://www.npmjs.com/package/next?activeTab=versions
安装 prettier (代码自动格式化插件),安装命令
1npm install --save-dev --save-exact prettier
修改 .eslintrc.json 文件可以改变校验规则,一般自己做项目不需要修改。
123{ "extends": ["next/core-web-vitals", "prettier&quo ...
手摸手教你前端和后端是如何实现导出 Excel 的?
前言大家好呀,我是雪荷。在上篇文章(https://blog.hejiajun.icu/2024/07/26/EasyExcel-%E5%88%9D%E4%BD%BF%E7%94%A8%E2%80%94%E2%80%94-Java-%E5%AE%9E%E7%8E%B0%E5%A4%9A%E7%A7%8D%E5%86%99%E5%85%A5-Excel-%E5%8A%9F%E8%83%BD-CSDN%E5%8D%9A%E5%AE%A2/)中给大家介绍了 Java 是如何写入 Excel 的,那么这篇算是对上篇文章的拓展,主要介绍前端和后端分别是如何导出数据至 Excel 的。
前端导出 Excel我就用之前比赛的项目给大家演示吧,其组件库为 Ant Design Vue,框架为 Vue3,使用的第三方库为 XLSX。整体的实现并不困难只需写两个函数即可,话不多说直接上代码。
安装命令
1npm install XLSX
引入 XLSX
1import * as XLSX from 'xlsx';
vue 的 template 部分
1234567891011121 ...
Spring Boot 引入 Guava Retry 实现重试机制
为什么要用重试机制在如今的系统开发中,为了保证接口调用的稳定性和数据的一致性常常会引入许多第三方的库。就拿缓存和数据库一致性这个问题来说,就有很多的实现方案,如先更新数据库再删除缓存、先更新缓存再更新数据库,又或者是异步缓存写入。然而某些场景下出现更新数据库成功,但删除缓存失败,又或者是更新缓存失败但更新数据库失败了。因此为保证缓存数据库的一致性,我们可以尝试引入重试机制来实现,当数据库更新成功后去删除缓存,如果删除失败就进行重试。
引入 Guava Retry 库实现重试机制引入依赖在引入依赖前,先创建一个 Spring Boot 工程,这里我就不演示了。
12345<dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> <version>1.0.6</version></dependency>
编写重试器的配置类常见的重试策略
重试间隔时间, ...
EasyExcel 初使用—— Java 实现多种写入 Excel 功能-CSDN博客
前言大家好,我是雪荷。之前有一篇博客(EasyExcel 初使用—— Java 实现读取 Excel 功能_java easyexcel.read-CSDN博客)介绍了 Java 如何读取 Excel 表格,那么此篇博客就和大家介绍下 Java 如何利用 EasyExcel 写入 Excel。
EasyExcel 官方网址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel
前置准备引入依赖先创建一个 Spring Boot 工程,随后加入 EasyExcel 和 Lombok 依赖。
12345678910<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency><dependency> <groupId>com.aliba ...
EasyExcel 初使用—— Java 实现读取 Excel 功能
前言在我们项目的开发中啊,前端有时候会传送 Excel 文件给后端(Java)去解析,那我们作为后端该如何实现对 Excel 文件的解析和数据读取呢?说到这我就不得不推荐 EasyExcel 了!
EasyExcel 介绍引用下官方对于 EasyExcel 介绍:EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。
官方网址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel
快速上手 EasyExcel前置工作先创建一个 Spring Boot 工程,并在 pom.xml 文件添加 EasyExcel 和 Lombok 依赖。
12345678910<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true ...
无题
用户中心前端前端初始化安装脚手架
12npm i @ant-design/pro-cli -gpro create user-center-fronted
安装完选择 simple、ts、ant design pro
项目瘦身
1.执行 package.json 的 i18n 脚本,删除国际化(注意:删除国际化会初始化 routes.ts 文件)。删除 src/locale 目录和 src/components/index.ts SelectLang 组件
2.删除e2e 集成测试目录
3.删除 sevices/swagger 目录
4.删除 src/tests 目录
5.删除 src/config/openapi.json 文件
错误显示没有 RequestConfig
1import type { RequestConfig } from '@umijs/max';
Ant desgin pro 不显示侧边栏
是因为在 routes.ts 文件中没配置 name 属性
...
Oracle 笔记
目录
第一章 数据库概述
1.1、数据库的好处
1.2、数据库的常见概念
1.3、数据库的存储特点
1.4、数据库的常见分类
1.5、SQL语言的分类
第二章 Oracle概述
2.1、Oracle的概述
2.2、Oracle的下载
2.3、Oracle的安装
2.4、Oracle的目录
2.5、Oracle的配置
2.6、Oracle的命令行连接
2.7、Oracle的窗口化连接
2.8、Oracle的体系结构
2.9、Oracle的测试用户
第三章 DQL语言
3.1、完整语法
3.2、简单查询
3.3、别名查询
3.4、去重查询
3.5、条件查询
3.6、分组查询
3.7、分组过滤
3.8、排序查询
3.9、分页查询
3.10、多表查询
3.11、联合查询
3.12、子查询
第四章 函数大全
4.1、数值型函数
4.2、字符型函数
4.3、日期函数
4.4、转换函数
4.5、聚组函数
4.6、分析函数
4.7、其它函数
第五章 DCL语言
5.1、创建表空间
5.2、删除表空间
5.3、创建用户
5.4、删除用户
5.5、授权用户
5.6、取消授权
5 ...