当前位置: 首页 > news >正文

Asp .Net Core系列:基于MySQL的DBHelper帮助类和SQL Server的DBHelper帮助类

文章目录

    • MySQLDBHelper
    • MSSQLDBHelper

MySQLDBHelper

app.config中添加配置

	<connectionStrings><add name="MySqlConn" connectionString="server=localhost;port=3306;user=root;password=123456;database=db1;SslMode=none"/></connectionStrings>

MySQLDBHelper

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace Common
{/// <summary>/// 数据库操作类/// </summary>public class MySQLDBHelper{public readonly static string MySqlConn = ConfigurationManager.ConnectionStrings["MySqlConn"].ConnectionString.ToString();/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, MySqlParameter[] pms){using (MySqlConnection conn = new MySqlConnection(MySqlConn)){conn.Open();using (MySqlTransaction transaction = conn.BeginTransaction()){using (MySqlCommand cmd = new MySqlCommand(sql, conn)){if (pms != null && pms.Length > 0){cmd.Parameters.AddRange(pms);}int rows = cmd.ExecuteNonQuery();transaction.Commit();return rows > 0;}}}}/// <summary>///  执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, Dictionary<string, object> pms){MySqlParameter[] parameters = null;if (pms != null && pms.Count > 0){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteNonQuery(sql, parameters);}/// <summary>///  执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql){return ExecuteNonQuery(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, MySqlParameter[] pms) where T : new(){using (var connection = new MySqlConnection(MySqlConn)){connection.Open();using (var command = new MySqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){List<T> tList = new List<T>();while (reader.Read()) // 遍历结果集中的每一行数据  {var t = ConvertToModel<T>(reader);tList.Add(t);}return tList;}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, Dictionary<string, object> pms) where T : new(){MySqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQuery<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql) where T : new(){return ExecuteQuery<T>(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, MySqlParameter[] pms) where T : new(){using (var connection = new MySqlConnection(MySqlConn)){connection.Open();using (var command = new MySqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){while (reader.Read()) // 遍历结果集中的每一行数据  {var t = ConvertToModel<T>(reader);return t;}return default(T);}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, Dictionary<string, object> pms) where T : new(){MySqlParameter[] parameters = null;if (pms != null && parameters.Length > 0){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQueryOne<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="sql"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql) where T : new(){return ExecuteQueryOne<T>(sql, new MySqlParameter[] { });}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, MySqlParameter[] pms = null){DataTable dt = new DataTable();using (MySqlDataAdapter adapter = new MySqlDataAdapter(sql, MySqlConn)){if (pms != null){adapter.SelectCommand.Parameters.AddRange(pms);}adapter.Fill(dt);}return dt;}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, Dictionary<string, object> pms){MySqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToMySqlParameters(pms).ToArray();}return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql){MySqlParameter[] parameters = null;return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 字典转MySqlParameters/// </summary>/// <param name="parameters"></param>/// <returns></returns>public static List<MySqlParameter> DictionaryToMySqlParameters(Dictionary<string, object> parameters){List<MySqlParameter> MySqlParameters = new List<MySqlParameter>();foreach (var kvp in parameters){string parameterName = kvp.Key;object parameterValue = kvp.Value;// 创建 MySqlParameter 对象  MySqlParameter MySqlParameter = new MySqlParameter(parameterName, parameterValue);MySqlParameters.Add(MySqlParameter);}return MySqlParameters;}/// <summary>/// 按列名转换(单条使用比较方便)/// </summary>/// <param name="reader"></param>/// <returns></returns>public static T ConvertToModel<T>(MySqlDataReader reader) where T : new(){T t = new T();PropertyInfo[] propertys = t.GetType().GetProperties();List<string> drColumnNames = new List<string>();for (int i = 0; i < reader.FieldCount; i++){drColumnNames.Add(reader.GetName(i));}foreach (PropertyInfo pi in propertys){if (drColumnNames.Contains(pi.Name)){if (!pi.CanWrite){continue;}var value = reader[pi.Name];if (value != DBNull.Value){pi.SetValue(t, value, null);}}}return t;}}
}

MSSQLDBHelper

app.config中添加配置

	<connectionStrings><add name="SqlConn" connectionString="Server=127.0.0.1;Database=db1;UserId=sa;Password=123456;"/></connectionStrings>

MSSQLDBHelper

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace Common
{/// <summary>/// 数据库帮助类/// </summary>public class MSSQLDBHelper{public readonly static string SqlConn = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString.ToString();/// <summary>/// 执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, SqlParameter[] pms){using (SqlConnection conn = new SqlConnection(SqlConn)){conn.Open();using (SqlTransaction transaction = conn.BeginTransaction()){using (SqlCommand cmd = new SqlCommand(sql, conn)){if (pms != null && pms.Length > 0){cmd.Parameters.AddRange(pms);}int rows = cmd.ExecuteNonQuery();transaction.Commit();return rows > 0;}}}}/// <summary>///  执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql, Dictionary<string, object> pms){SqlParameter[] parameters = null;if (pms != null && pms.Count > 0){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteNonQuery(sql, parameters);}/// <summary>///  执行增、删、改的方法:ExecuteNonQuery,返回true,false/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static bool ExecuteNonQuery(string sql){return ExecuteNonQuery(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, SqlParameter[] pms) where T : new(){using (var connection = new SqlConnection(SqlConn)){connection.Open();using (var command = new SqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){List<T> tList = new List<T>();while (reader.Read()) // 遍历结果集中的每一行数据  {var t = ConvertToModel<T>(reader);tList.Add(t);}return tList;}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql, Dictionary<string, object> pms) where T : new(){SqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQuery<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个List/// </summary>/// <param name="sql"></param>/// <returns></returns>public static List<T> ExecuteQuery<T>(string sql) where T : new(){return ExecuteQuery<T>(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, SqlParameter[] pms) where T : new(){using (var connection = new SqlConnection(SqlConn)){connection.Open();using (var command = new SqlCommand(sql, connection)){if (pms != null && pms.Length > 0){command.Parameters.AddRange(pms);}using (var reader = command.ExecuteReader()){while (reader.Read()) // 遍历结果集中的每一行数据  {var t = ConvertToModel<T>(reader);return t;}return default(T);}}}}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql, Dictionary<string, object> pms) where T : new(){SqlParameter[] parameters = null;if (pms != null && parameters.Length > 0){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQueryOne<T>(sql, parameters);}/// <summary>/// 将查出的数据装到实体里面,返回一个实体/// </summary>/// <typeparam name="T"></typeparam>/// <param name="sql"></param>/// <returns></returns>public static T ExecuteQueryOne<T>(string sql) where T : new(){return ExecuteQueryOne<T>(sql, new SqlParameter[] { });}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, SqlParameter[] pms = null){DataTable dt = new DataTable();using (SqlDataAdapter adapter = new SqlDataAdapter(sql, SqlConn)){if (pms != null){adapter.SelectCommand.Parameters.AddRange(pms);}adapter.Fill(dt);}return dt;}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <param name="pms"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql, Dictionary<string, object> pms){SqlParameter[] parameters = null;if (pms != null){parameters = DictionaryToSqlParameters(pms).ToArray();}return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 将查出的数据装到table里,返回一个DataTable/// </summary>/// <param name="sql"></param>/// <returns></returns>public DataTable ExecuteQueryDataTable(string sql){SqlParameter[] parameters = null;return ExecuteQueryDataTable(sql, parameters);}/// <summary>/// 字典转SqlParameters/// </summary>/// <param name="parameters"></param>/// <returns></returns>public static List<SqlParameter> DictionaryToSqlParameters(Dictionary<string, object> parameters){List<SqlParameter> SqlParameters = new List<SqlParameter>();foreach (var kvp in parameters){string parameterName = kvp.Key;object parameterValue = kvp.Value;// 创建 SqlParameter 对象  SqlParameter SqlParameter = new SqlParameter(parameterName, parameterValue);SqlParameters.Add(SqlParameter);}return SqlParameters;}/// <summary>/// 按列名转换(单条使用比较方便)/// </summary>/// <param name="reader"></param>/// <returns></returns>public static T ConvertToModel<T>(SqlDataReader reader) where T : new(){T t = new T();PropertyInfo[] propertys = t.GetType().GetProperties();List<string> drColumnNames = new List<string>();for (int i = 0; i < reader.FieldCount; i++){drColumnNames.Add(reader.GetName(i));}foreach (PropertyInfo pi in propertys){if (drColumnNames.Contains(pi.Name)){if (!pi.CanWrite){continue;}var value = reader[pi.Name];if (value != DBNull.Value){pi.SetValue(t, value, null);}}}return t;}}
}

相关文章:

Asp .Net Core系列:基于MySQL的DBHelper帮助类和SQL Server的DBHelper帮助类

文章目录 MySQLDBHelperMSSQLDBHelper MySQLDBHelper app.config中添加配置 <connectionStrings><add name"MySqlConn" connectionString"serverlocalhost;port3306;userroot;password123456;databasedb1;SslModenone"/></connectionStrin…...

【排序】对各种排序的总结

文章目录 前言1. 排序算法的复杂度及稳定性分析2. 排序算法的性能测试2.1 重复率较低的随机值排序测试2.2 重复率较高的随机值排序测试 前言 本篇是基于我这几篇博客做的一个总结&#xff1a; 《简单排序》&#xff08;含&#xff1a;冒泡排序&#xff0c;直接插入排序&#x…...

Apache ActiveMQ RCE CNVD-2023-69477 CVE-2023-46604

漏洞简介 Apache ActiveMQ官方发布新版本&#xff0c;修复了一个远程代码执行漏洞&#xff0c;攻击者可构造恶意请求通过Apache ActiveMQ的61616端口发送恶意数据导致远程代码执行&#xff0c;从而完全控制Apache ActiveMQ服务器。 影响版本 Apache ActiveMQ 5.18.0 before …...

C语言可变参数输入

本博文源于笔者正在学习的可变参数输入&#xff0c;可变参数是c语言函数中的一部分&#xff0c;下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…...

飞天使-k8s知识点10-kubernetes资源对象3-controller

文章目录 pod探针 控制器 pod 概述&#xff1a; 1. pod是k8s中的最小单元 2. 一个pod中可以运行一个容器&#xff0c;也可以运行多个容器 3. 运行多个容器的话&#xff0c;这些容器是一起被调度的 4. Pod的生命周期是短暂的&#xff0c;不会自愈&#xff0c;是用完就销毁的实体…...

【Vue技巧】Vue2和Vue3组件上使用v-model的实现原理

ChatGPT4.0国内站点&#xff0c;支持GPT4 Vision 视觉模型&#xff1a;海鲸AI 在Vue中&#xff0c;v-model 是一个语法糖&#xff0c;用于在输入框、选择框等表单元素上创建双向数据绑定。当你在自定义组件中实现 v-model 功能时&#xff0c;你需要理解它背后的原理&#xff1a…...

博客随手记

随手记...

【2023】java常用HTTP客户端对比以及使用(HttpClient/OkHttp/WebClient)

&#x1f4bb;目录 1、介绍2、使用2.1、添加配置2.1.1、依赖2.1.2、工具类2.1.3、实体2.1.4、Controller接口 2.2、Apache HttpClient使用2.3 、OkHttp使用2.4、WebClient使用 1、介绍 现在java使用的http客户端主要包括以下几种 而这些中使用得最频繁的主要是&#xff1a; A…...

微信小程序获取来源场景值

https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html#返回来源信息的场景 https://developers.weixin.qq.com/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.html 场景值列表 只有1008是来源群聊 /** * 生命周期函数--监…...

Vue3:vue-cli项目创建及vue.config.js配置

一、node.js检测或安装&#xff1a; node -v node.js官方 二、vue-cli安装&#xff1a; npm install -g vue/cli # OR yarn global add vue/cli/*如果安装的时候报错&#xff0c;可以尝试一下方法 删除C:\Users**\AppData\Roaming下的npm和npm-cache文件夹 删除项目下的node…...

关于CAD导入**地球的一些问题讨论

先上示例: 上图是将北京王佐停车场的红线CAD图导入到图新地球效果,如果看官正是需要这样的效果,那么请你继续往下看,全是干货! 在地球中导入CAD图可以做为电子沙盘。对于工程人来说,是极有帮助的。以前一直用谷歌地球,大约在2020年左右,就被和谐了。当时感觉挺可惜的。…...

Semaphore信号量详解

在Java并发编程中&#xff0c;Semaphore是一个非常重要的工具类。它位于java.util.concurrent包中&#xff0c;为我们提供了一种限制对临界资源的访问的机制。你可以将其视为一个同步控制的瑞士军刀&#xff0c;因为它既能够控制对资源的并发访问数量&#xff0c;也能够保证资源…...

Python的核心知识点整理大全66(已完结撒花)

目录 D.3 忽略文件 .gitignore 注意 D.4 初始化仓库 D.5 检查状态 D.6 将文件加入到仓库中 D.7 执行提交 D.8 查看提交历史 D.9 第二次提交 hello_world.py D.10 撤销修改 hello_world.py 注意 D.11 检出以前的提交 往期快速传送门&#x1f446;&#xff08;在文…...

k8s的存储卷

存储卷------数据卷 把容器内的目录&#xff0c;和宿主机的目录进行挂载。 容器在系统上的生命周期是短暂的&#xff0c;delete&#xff0c;k8s用控制&#xff08;deployment&#xff09;创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会回复到初始状态。 …...

Git 实战指南:常用指令精要手册(持续更新)

&#x1f451;专栏内容&#xff1a;Git⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、Git 安装过程1、Windows 下安装2、Cent os 下安装3、Ubuntu 下安装 二、配置本地仓库1、 初始化 Git 仓库2、配置 name 和 e…...

关于SpringMVC前后端传值总结

一、传递方式 1、查询参数&路径参数 查询参数&#xff1a; URI:/teachers?typeweb GetMapping("/klasses/teachers") public List<Teacher> getKlassRelatedTeachers(String type ) { ... }如果查询参数type与方法的名称相同&#xff0c;则直接将web传入…...

【排序】归并排序(C语言实现)

文章目录 1. 递归版的归并排序1.1 归并排序的思想2. 递归版的归并排序的实现 2. 非递归版的归并排序 1. 递归版的归并排序 1.1 归并排序的思想 归并排序&#xff08;MERGE - SORT&#xff09;是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法&#xff08;Divide a…...

127. 单词接龙

和433.最小基因变化这道题一样的解法。 https://blog.csdn.net/qq_43606119/article/details/135538247 class Solution {public int ladderLength(String beginWord, String endWord, List<String> wordList) {Set<String> cnt new HashSet<>();for (int …...

计算机算法贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种常见的算法思想&#xff0c;它在每一步选择当前状态下最优的解决方案&#xff0c;从而希望最终能够达到全局最优解。 贪心算法的基本思路是每一步都选择当前状态下的局部最优解&#xff0c;而忽略了当前选择所带来的影…...

基于css实现动画效果

介绍 本文将会基于css&#xff0c;实现各种动画效果&#xff0c;接下来会从简单几个例子入手。 案例 三颗球 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><title>React App</title><style>…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...