windows同时安装两个不同版本的Mysql
windows同时安装两个不同版本的Mysql 本地已经安装了mysql-5.7.11 版本,现在需要再安装一个8版本的MySQL,由此记录一下。 查看本地mysql版本 1.下载MySQL 官网下载历史版本地址:MySQL :: Download MySQL Community Server (Archived Versions) 选择版本后点击下载。 2.下载完成后,解压文件。(ps:注意将压缩包解压到和之前版本不同路径(路径请勿包含中文或空格))。 3.创建 my.ini 配置文件(放在解压根目录,如 D:\mysql-8.0.28\my.ini) 123456789101112131415161718192021[mysqld]# 端口(如 3307,与 5.7 不同)port=3307 # 安装目录basedir="D:/Application/mysql-8.0.28"# 数据目录datadir="D:/Application/mysql-8.0.28/data"# 服务端使用的字符集默认为UT...
MySQL面试题
MySQL面试题 此笔记为本人备考面试时整理,内容多源于网络搜集,仅作后续查阅之用,无盈利意图。若有侵权,请联系删除。 参考资料: https://javaguide.cn/ https://www.xiaolincoding.com/ https://pdai.tech https://javabetter.cn/ 一、MySQL基础1、数据库三大范式查看答案 1NF 要求字段值必须是不可再分的原子值。 反例:用户信息表中地址字段存储 “北京市海淀区”,未拆分为省、市、区,违反 1NF;正例:拆分为province、city、district,每个字段独立存储。 2NF 1NF的基础上,要求非主属性完全依赖主键,避免部分依赖(如订单明细拆分)。 场景:订单明细表((订单号+商品ID为主键)+ 金额 ),若字段订单金额仅依赖订单号,则存在部分依赖(非主属性订单金额不依赖商品ID),违反 2NF;优化:拆分为订单表(订单号、金额)和订单明细表(订单号、商品 ID、数量)。 3NF 2NF的基础上,非主键字段之间不能有依赖关系,消除传递依赖,如学生表与班级表分离。 反例:学生表...
MySql进阶
MySql进阶 此笔记由本人学习 B 站黑马程序员 MySQL 数据库视频进阶篇内容后,总结提取摘要制成。视频地址:黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括 MySQL体系结构MySQL体系结构:连接层,服务层,引擎层,存储层。 连接层:处理客户端连接、认证和线程管理。 连接器(Connector): 处理客户端连接请求,支持 TCP/IP、Unix Socket、命名管道等连接方式。 验证用户身份(用户名、密码、主机权限)。 为每个连接分配线程(或从线程池获取)。 线程池(Thread Pool): 管理数据库连接线程,减少频繁创建 / 销毁线程的开销。 适用于高并发场景(如 MySQL Enterprise Edition)。 服务层:包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 SQL 接口(SQL Interface):...
系统升级
SSH框架升级为SpringBoot前言和准备 公司系统使用框架为SSH(Spring + Spring MVC + Hibernate),现在要求升级为SpringBoot。 原项目:Spring 3.1.3 + Hibernate 4.2.21 使用jar包方式 准备升级为:SpringBoot2.7.6 + 使用mavne管理jar包 Spring Boot 2.x需要Spring 5和Hibernate 5.2+,因此我们需要升级这些依赖。 步骤1. 创建Spring Boot项目 使用阿里云地址 https://start.aliyun.com/ 来创建一个新的Spring Boot 项目。选择 JDK8、Maven、Spring Boot 版本2.7.6。 目录结构为: 2. jar包用maven替换将原项目src下的目录复制到新建的项目中。先运行一下@SpringBootApplication 类,根据报错去添加相关依赖。没有去网站[Maven Repository: Search/Browse/Explore (mvnreposito...
JVM 基础 5 - GC 垃圾回收
垃圾回收JVM 垃圾回收 (Garbage Collection, GC) 是 Java 虚拟机自动管理堆内存的核心机制。它负责识别并回收程序中不再使用的对象所占用的内存,防止内存泄漏,极大地简化了开发人员的内存管理工作。 垃圾回收器如果发现某个对象不再使用,就可以回收该对象。 .cfafpsfmcguw{zoom: 67%;} .uqmblncjoway{zoom:67%;} 自动垃圾回收,自动根据对象是否使用由虚拟机来回收对象 优点:降低程序员实现难度、降低对象回收bug的可能性 缺点:程序员无法控制内存回收的及时性 手动垃圾回收,由程序员编程实现对象的删除 优点:回收及时性高,由程序员把控回收的时机 缺点:编写不当容易出现悬空指针、重复释放、内存泄漏等问题 如果需要手动触发垃圾回收,可以调用System.gc()方法。语法: System.gc()注意事项: 调用System.gc()方法并不一定会立即回收垃圾,仅仅是向Java虚拟机发送一个垃圾回收的请求,具体是否需要执行垃圾回收Java虚拟机会自行判断。 如何判断对象可以回收引用计数法引用...
JVM 基础 4 - JVM 内存结构'
运行时数据区Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 根据 Java 虚拟机规范的规定,运行时数据区可以分为以下几个部分: 程序计数器(Program Counter Register) Java 虚拟机栈(Java Virtual Machine Stacks) 本地方法栈(Native Method Stack) 堆(Heap) 方法区(Method Area) 程序计数器定义|作用程序计数器(Program Counter Register)也叫PC寄存器,用来存储指向下一条指令的地址,即将要执行的指令代码。由执行引擎读取下一条指令。 当我们的java程序被编译成二进制字节码文件后,如下图: 右面,是我们写的代码,左面是二进制字节码形式(.class) 它们将由我们的解释器来将他们转换为机械码,从而让机器运行。 细心的你会发现,每个二进制字节码的前面都有一个类似于索引的数字。他们的作用也跟索引差不多,为当前程序标一个序号,记上他们的地址。 即使有了地址,解释器也不知道他们的顺序是什么样...
JVM 基础 3 - Java 类加载机制
Java 类加载机制类的生命周期类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载、验证、准备、解析、初始化、使用和卸载。其中,验证、准备和解析这三个阶段可以统称为链接。 加载(Loading) 类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息,程序员可以使用Java代码拓展的不同的渠道。 从本地磁盘上获取文件 运行时通过动态代理生成,比如Spring框架 Applet技术通过网络获取字节码文件 类加载器在加载完类之后,Java虚拟机会将字节码中的信息保存到方法区中,方法区中生成一个InstanceKlass对象,保存类的所有信息,里边还包含实现特定功能比如多态的信息。 Java虚拟机同时会在堆上生成与方法区中数据类似的java.lang.Class对象,作用是在Java代码中去获取类的信息以及存储静态字段的数据(JDK8及之后)。 链接(Linking)链接阶段将加载的类准备好以供JVM使用,分为以下三个子阶段: 验证(Verification)此阶段会对字节码进行校验,确保其符合 Java ...
JVM 基础 2 - Java 类字节码
Java虚拟机的组成Java虚拟机主要分为以下几个组成部分: ClassLoader:类加载子系统,核心组件类加载器,负责将字节码文件中的内容加载到内存中。 JVM内存结构:运行时数据区,JVM管理的内存,创建出来的对象、类的信息等等内容都会放在这块区域中。 执行引擎:包含了即时编译器、解释器、垃圾回收器,执行引擎使用解释器将字节码指令解释成机器码,使用即时编译器优化性能,使用垃圾回收器回收不再使用的对象。 本地接口:调用本地使用C/C++编译好的方法,本地方法在Java中声明时,都会带上native关键字,如下图所示。 字节码文件的组成 字节码文件比较难读,更加详细的请去官网https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5阅读。 字节码文件总共可以分为以下几个部分: 基础信息:魔数、字节码文件对应的Java版本号、访问标识(public final等等)、父类和接口信息 常量池:保存了字符串常量、类或接口名、字段名,主要在字节码指令中使用 字段: 当前类或接口声明的...
JVM 基础 1 - JVM介绍
JVM什么是JVMJVM 全称是 Java Virtual Machine,中文译名 Java虚拟机,是 Java 生态的核心,它负责执行字节码,提供内存管理、垃圾回收、线程管理等功能,使 Java 程序能够实现 “一次编写,到处运行” 的跨平台特性。 JVM的三大核心功能是什么?JVM 包含内存管理、解释执行虚拟机指令、即时编译三大功能。 常见的JVM虚拟机有哪些? JVM知识体系 学习文献 https://blog.csdn.net/weixin_50280576/article/details/113775575 https://lisxpq12rl7.feishu.cn/wiki/F2AFw0doOiW89Fkr8kGcCTyVnLh https://pdai.tech/md/java/jvm/java-jvm-x-overview.html https://javaguide.cn/java/jvm/jvm-garbage-collection.html https://javabetter.cn/jvm/jit.html