MySQL数据库(JDBC)

文章目录

    • 1.JDBC基本介绍
        • 1.概述
        • 2.JDBC原理图
    • 2.JDBC快速入门
        • 1.JDBC API
        • 2.JDBC程序编写步骤
        • 3.环境配置
          • 1.创建src/lib文件夹,放入jar包
          • 2.加入到项目中
          • 3.配置代码提示
        • 4.代码实例
    • 3.数据库五种连接方式(推荐使用4、5)
        • 1.代码实例
        • 2.细节说明
          • 1.第四种方式是自动加载驱动原因
          • 2.可不可以不写类加载语句?
        • 3.方式五的连接方式(建议使用)
          • 1.src下(或者任意位置)创建配置文件(自定义名字)
            • src\\mysql.properties
          • 注意这个文件不能加空格
          • 2.获取连接
        • 4.课堂练习
          • 题目
          • 答案
    • 4.ResultSet查询
        • 1.基本介绍
        • 2.ResultSet查询表中所有数据
        • 3.SQL注入
    • 5.预处理
        • 1.基本介绍
        • 2.预处理查询
        • 3.预处理DML
        • 4.课堂练习
    • 6.JDBC_API
    • 7.JDBCUtils
        • 1.JDBCUtils工具类代码
        • 2.JDBCUtils_DML演示
        • 3.JDBCUtils_select演示
    • 8.事务
        • 1.基本介绍
        • 2.案例——使用事务处理银行转账
          • 1.创建表account
          • 2.编写代码

1.JDBC基本介绍

1.概述

image-20240118112513964

2.JDBC原理图

image-20240118112505929

2.JDBC快速入门

1.JDBC API

image-20240118113003734

2.JDBC程序编写步骤

image-20240118135757371

3.环境配置
1.创建src/lib文件夹,放入jar包

image-20240118135856127

2.加入到项目中

image-20240118140011319

3.配置代码提示

image-20240118140053358

4.代码实例

image-20240118141429958

package jdbc_;import com.mysql.cj.jdbc.Driver; //注意sql8是这个驱动import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** @author 孙显圣* @version 1.0* 完成简单的jdbc操作*/
public class Jdbc01 {public static void main(String[] args) throws SQLException {//1.注册mysql驱动类Driver driver = new Driver();//2.得到连接//(1)jdbc:mysql://表示jdbc连接mysql的协议//(2)localhost:主机,这个是数据库的ip地址//(3)3306:mysql:监听的端口号//(4)hsp_db02:是数据库的名字//(5)mysql的本质就是socket连接String url= "jdbc:mysql://localhost:3306/hsp_db02";//将用户名和密码封装到properties对象//这里的user和password是固定的Properties properties = new Properties();properties.setProperty("user", "root");properties.setProperty("password", "root");//获取连接Connection connect = driver.connect(url, properties);//3.执行sqlString sql = "insert into actor values(null, '刘德华', '男', '1970-1-1', '110')";//statement用于执行静态sql并返回其生成对的结果的对象Statement statement = connect.createStatement();//执行int i = statement.executeUpdate(sql);System.out.println(i > 0 ? "成功" : "失败");//4.关闭连接源statement.close();connect.close();}
}

3.数据库五种连接方式(推荐使用4、5)

1.代码实例
package jdbc_;import com.mysql.cj.jdbc.Driver;
import org.junit.jupiter.api.Test;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;/*** @author 孙显圣* @version 1.0*/
public class JdbcConnect {public static void main(String[] args) throws SQLException {//方式一//1.注册mysql驱动类Driver driver = new Driver();//2.得到连接//(1)jdbc:mysql://表示jdbc连接mysql的协议//(2)localhost:主机,这个是数据库的ip地址//(3)3306:mysql:监听的端口号//(4)hsp_db02:是数据库的名字//(5)mysql的本质就是socket连接String url= "jdbc:mysql://localhost:3306/hsp_db02";//将用户名和密码封装到properties对象//这里的user和password是固定的Properties properties = new Properties();properties.setProperty("user", "root");properties.setProperty("password", "root");//获取连接Connection connect = driver.connect(url, properties);System.out.println("方式一:" + connect);connect.close();}@Testpublic void method02() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {//方式二Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");Driver driver = (Driver) aClass.newInstance();String url= "jdbc:mysql://localhost:3306/hsp_db02";//将用户名和密码封装到properties对象//这里的user和password是固定的Properties properties = new Properties();properties.setProperty("user", "root");properties.setProperty("password", "root");//获取连接Connection connect = driver.connect(url, properties);System.out.println("方式二:" + connect);connect.close();}@Testpublic void method03() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {//方式三,使用DriverManager来替代driver进行统一管理Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");Driver driver = (Driver) aClass.newInstance();//创建url、user和passwordString url= "jdbc:mysql://localhost:3306/hsp_db02";String user= "root";String password= "root";DriverManager.registerDriver(driver); //注册driver驱动Connection connection = DriverManager.getConnection(url, user, password); //获取连接System.out.println("方式三:" + connection);connection.close();}@Testpublic void method04() throws ClassNotFoundException, SQLException {//方式四,在加载驱动时使用静态代码块自动注册驱动Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");//创建url、user和passwordString url= "jdbc:mysql://localhost:3306/hsp_db02";String user= "root";String password= "root";//使用DriverManager获取连接Connection connection = DriverManager.getConnection(url, user, password); //获取连接System.out.println("方式四:" + connection);connection.close();}@Testpublic void method05() throws IOException, ClassNotFoundException, SQLException {//获取properties文件的信息Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties")); //加载到properties文件中String driver = properties.getProperty("driver");String url = properties.getProperty("url");String user = properties.getProperty("user");String password = properties.getProperty("password");//加载驱动类Class<?> aClass = Class.forName(driver);//使用DriverManager获取连接Connection connection = DriverManager.getConnection(url, user, password);System.out.println("方式五:" + connection);connection.close();}}
2.细节说明
1.第四种方式是自动加载驱动原因
  1. Driver类加载的时候有个静态代码块
  2. 这个静态代码块会自动创建一个驱动实例并且注册

image-20240118152504941

2.可不可以不写类加载语句?
  1. 答案是可以的
  2. 原因是在mysql的驱动4以后是自动加载的
  3. mysql4以后自带配置文件会自动加载驱动并注册

image-20240118152711973

3.方式五的连接方式(建议使用)

image-20240118150606126

1.src下(或者任意位置)创建配置文件(自定义名字)
src\mysql.properties
user=root
password=root
url=jdbc:mysql://localhost:3306/hsp_db02
driver=com.mysql.cj.jdbc.Driver
注意这个文件不能加空格
2.获取连接
        //获取properties文件的信息Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties")); //加载到properties文件中String driver = properties.getProperty("driver");String url = properties.getProperty("url");String user = properties.getProperty("user");String password = properties.getProperty("password");//加载驱动类Class<?> aClass = Class.forName(driver);//使用DriverManager获取连接Connection connection = DriverManager.getConnection(url, user, password);
4.课堂练习
题目

image-20240118153237437

答案
package jdbc_;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** @author 孙显圣* @version 1.0*/
public class ConnectExercise {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//加载配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//获取内容String driver = properties.getProperty("driver");String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");//加载驱动类Class<?> aClass = Class.forName(driver);//获取连接Connection connection = DriverManager.getConnection(url, user, password);//编写sql//1.插入五条语句
//        String sql = "insert into actor values(null, '孙显圣', '男', '2002-12-8', '123456'), " +
//                "(null, '孙显圣2', '男', '2005-2-8', '123456'), " +
//                "(null, '孙显圣3', '男', '2001-12-8', '123456'), " +
//                "(null, '孙显圣4', '男', '2004-12-8', '123456'), " +
//                "(null, '孙显圣5', '男', '2006-12-8', '123456')";//2.修改id=1的数据,将名字改成自己的
//        String sql = "update actor set name = '孙显圣' where id = 1";//3.删除id = 1的记录String sql = "delete from actor where id = 1";//创建statementStatement statement = connection.createStatement();//执行sqlint i = statement.executeUpdate(sql);System.out.println(i > 0 ? "成功" : "失败");//关闭连接statement.close();connection.close();}
}

4.ResultSet查询

1.基本介绍

image-20240118160102786

image-20240118160523221

2.ResultSet查询表中所有数据
package jdbc_;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author 孙显圣* @version 1.0*/
public class ResultSet_ {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//加载配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//获取内容String driver = properties.getProperty("driver");String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");//加载驱动类Class<?> aClass = Class.forName(driver);//获取连接Connection connection = DriverManager.getConnection(url, user, password);//编写sql//查询所有记录String sql = "select * from actor ";//创建statementStatement statement = connection.createStatement();//执行查询ResultSet resultSet = statement.executeQuery(sql); //结果保存在resultSet中while (resultSet.next()) { //初始的resultSet指向的是ArrayList的表头,如果下一条记录不为空,则将光标移动到下一条记录//取出所有列的元素int anInt = resultSet.getInt(1);String string = resultSet.getString(2);String string1 = resultSet.getString(3);Date date = resultSet.getDate(4);String string2 = resultSet.getString(5);System.out.println(anInt + " " + string + " " + string1 + " " + date + " " + string2);}//关闭连接resultSet.close();statement.close();connection.close();}
}

image-20240118161847569

3.SQL注入

image-20240118162434151

5.预处理

1.基本介绍

image-20240118163356201

image-20240118163442804

2.预处理查询
package jdbc_;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author 孙显圣* @version 1.0*/
public class PreparedStatement_ {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//加载配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//获取内容String driver = properties.getProperty("driver");String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");//加载驱动类Class<?> aClass = Class.forName(driver);//获取连接Connection connection = DriverManager.getConnection(url, user, password);//编写sql//查询记录String sql = "select id, name from actor where id = ? and name = ?";//创建PrestatementPreparedStatement preparedStatement = connection.prepareStatement(sql);//进行预处理preparedStatement.setInt(1, 4);preparedStatement.setString(2, "孙显圣");//执行查询ResultSet resultSet = preparedStatement.executeQuery(); //结果保存在resultSet中,这里是不带sql的while (resultSet.next()) { //初始的resultSet指向的是ArrayList的表头,如果下一条记录不为空,则将光标移动到下一条记录//取出所有列的元素int anInt = resultSet.getInt(1);String string = resultSet.getString(2);System.out.println(anInt + " " + string);}//关闭连接resultSet.close();preparedStatement.close();connection.close();}
}
3.预处理DML
package jdbc_;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author 孙显圣* @version 1.0*/
public class PreparedStatement_01 {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//加载配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//获取内容String driver = properties.getProperty("driver");String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");//加载驱动类Class<?> aClass = Class.forName(driver);//获取连接Connection connection = DriverManager.getConnection(url, user, password);//编写sql//修改String sql = "update actor set name = ? where id = ?";//创建PrestatementPreparedStatement preparedStatement = connection.prepareStatement(sql);//进行预处理preparedStatement.setString(1, "孙显圣");preparedStatement.setInt(2, 2);//执行更新int i = preparedStatement.executeUpdate();//结果保存在resultSet中,这里是不带sql的System.out.println(i > 0 ? "成功" : "失败");//关闭连接preparedStatement.close();connection.close();}
}
4.课堂练习

image-20240118165606236

package jdbc_;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author 孙显圣* @version 1.0* 预处理课堂练习*/
public class PreStatementExercise {public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {//读取配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\mysql.properties"));//获取信息String driver = properties.getProperty("driver");String user = properties.getProperty("user");String password = properties.getProperty("password");String url = properties.getProperty("url");//类加载Class.forName(driver);//获取连接Connection connection = DriverManager.getConnection(url, user, password);//        //编写sql语句
//        String sql = "insert into actor values(null, ?, ?, ?, ?)";
//        //对sql进行预处理
//        PreparedStatement preparedStatement = connection.prepareStatement(sql);
//        preparedStatement.setString(1, "李华");
//        preparedStatement.setString(2, "男");
//        preparedStatement.setDate(3, Date.valueOf("2021-3-9")); //这里注意把日期变成string类型
//        preparedStatement.setString(4, "123456");//        //修改tom的记录,将name改成king
//        String sql = "update actor set name = ? where name = ?";
//        //对sql进行预处理
//        PreparedStatement preparedStatement = connection.prepareStatement(sql);
//        preparedStatement.setString(1, "king");
//        preparedStatement.setString(2, "tom");//        //删除一条记录
//        String sql = "delete from actor where id = ?";
//        //对sql进行预处理
//        PreparedStatement preparedStatement = connection.prepareStatement(sql);
//        preparedStatement.setInt(1, 3);//查询全部记录并显示在控制台上String sql = "select * from actor";//预处理PreparedStatement preparedStatement = connection.prepareStatement(sql);//执行sqlResultSet resultSet = preparedStatement.executeQuery();while (resultSet.next()) {//取出全部数据,并显示int anInt = resultSet.getInt(1);String string = resultSet.getString(2);String string1 = resultSet.getString(3);Date date = resultSet.getDate(4);String string2 = resultSet.getString(5);System.out.println(anInt + " " + string + " " +  string1 + " " +  date + " " +  string2);}//        //执行sql
//        int i = preparedStatement.executeUpdate();
//        System.out.println(i > 0 ? "成功" : "失败");//关闭连接resultSet.close();preparedStatement.close();connection.close();}
}

6.JDBC_API

image-20240118181539075

image-20240118181631902

7.JDBCUtils

image-20240118181921263

1.JDBCUtils工具类代码
package utils;import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;/*** @author 孙显圣* @version 1.0* 这是一个工具类,完成mysql的连接和关闭资源*/
public class JDBCUtils {//四个静态属性,因为每次程序运行的时候只需要一份private static String user;private static String password;private static String url;private static String driver;static { //静态代码块为四个静态属性初始化//读取配置文件Properties properties = new Properties();try {properties.load(new FileInputStream("src\\mysql.properties")); //读取的配置文件的位置} catch (IOException e) {throw new RuntimeException(e);}//将信息给静态属性user = properties.getProperty("user");password = properties.getProperty("password");url = properties.getProperty("url");driver = properties.getProperty("driver");}//连接数据库public static Connection getConnection() {try {return DriverManager.getConnection(url, user, password);} catch (SQLException e) {throw new RuntimeException(e);}}//关闭数据库//1.ResultSet//2.Statement,PrepareStatement,由于后一个是前一个的子接口,所以只传前面的就可以//3.Connectionpublic static void close(ResultSet resultSet, Statement statement, Connection connection) {if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {throw new RuntimeException(e);}}if (statement != null) {try {statement.close();} catch (SQLException e) {throw new RuntimeException(e);}}if (connection != null) {try {connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}}
2.JDBCUtils_DML演示
package jdbc_;import org.junit.jupiter.api.Test;
import utils.JDBCUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** @author 孙显圣* @version 1.0*/
public class JDBCUtils_Use {@Testpublic void testDML() {//建立连接Connection connection = JDBCUtils.getConnection();//编写sql语句进行修改String sql = "update actor set name = ? where id = ?";PreparedStatement preparedStatement = null;try {//进行预处理preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, "刘德华");preparedStatement.setInt(2, 6);//执行sqlint i = preparedStatement.executeUpdate();System.out.println(i > 0 ? "成功" : "失败");} catch (SQLException e) {throw new RuntimeException(e);} finally {//关闭资源JDBCUtils.close(null, preparedStatement, connection);}}}
3.JDBCUtils_select演示
package jdbc_;import org.junit.jupiter.api.Test;
import utils.JDBCUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*** @author 孙显圣* @version 1.0*/
public class JDBCUtils_Use {@Testpublic void testSelect() {//建立连接Connection connection = JDBCUtils.getConnection();//编写sql语句进行查询String sql = "select name, phone from actor where id = ?";PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {//进行预处理preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, 8);//执行查询resultSet = preparedStatement.executeQuery();while (resultSet.next()) {String string = resultSet.getString("name");String string1 = resultSet.getString("phone");System.out.println(string + " " + string1);}} catch (SQLException e) {throw new RuntimeException(e);} finally {//关闭资源JDBCUtils.close(resultSet, preparedStatement, connection);}}}

8.事务

1.基本介绍

image-20240118190904790

2.案例——使用事务处理银行转账
1.创建表account
CREATE TABLE account( id INT PRIMARY key auto_increment,name VARCHAR(32) NOT NULL DEFAULT'',blance DOUBLE NOT NULL DEFAULT 0
)INSERT INTO account VALUES(null, '马云', 3000);
INSERT INTO account VALUES(null, '马化腾', 10000);SELECT * FROM account
2.编写代码
package jdbc_;import utils.JDBCUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** @author 孙显圣* @version 1.0*/
public class Transaciton {public static void main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;PreparedStatement preparedStatement1 = null;try {//连接数据库connection = JDBCUtils.getConnection();//1.设置不自动提交事务connection.setAutoCommit(false);//编写sql进行模拟转账String sql1 = "update account set blance = blance - 100 where name = ?";//编写sql进行模拟接受String sql2 = "update account set blance = blance + 100 where name = ?";//预处理preparedStatement = connection.prepareStatement(sql1);preparedStatement.setString(1, "马云");preparedStatement1 = connection.prepareStatement(sql2);preparedStatement1.setString(1, "马化腾");//执行1preparedStatement.executeUpdate();//            //假设有个错误,则会回滚
//            System.out.println(10/0);//执行2preparedStatement1.executeUpdate();//3.如果都顺利执行完了也没有错误则提交事务connection.commit();} catch (SQLException e) {try {//2.如果中间出错了则回滚connection.rollback();} catch (SQLException ex) {throw new RuntimeException(ex);}throw new RuntimeException(e);} finally {//关闭连接JDBCUtils.close(null, preparedStatement, connection);JDBCUtils.close(null, preparedStatement1, null);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/293310.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国产数据采集卡定制,24位八通道以太网数据采集卡 labview 100K采样

XM702是一款以太网型高速数据采集卡&#xff0c;具有8通 道真差分输入&#xff0c;24位分辨率&#xff0c;单通道最高采样率100ksps八通 道同步共计800ksps、精密前置增益放大、集成IEPE/ICP硬件 支持的特点。本产品采用了多个高精度24位ADC单元及配合本 公司多年积累开发的前置…

GT收发器第一篇_总体结构介绍

文章目录 前言GT收发器介绍 前言 之前写过一篇简单介绍GT的文章https://blog.csdn.net/m0_56222647/article/details/136730026&#xff0c;可以先通过这篇文章对整体进行简单了解一下。 GT收发器介绍 参考xilinx手册ug476 对于7系列的FPGA&#xff0c;共有3个系列&#xf…

前端三剑客 —— CSS (第二节)

目录 内容回顾&#xff1a; CSS选择器*** 属性选择器 伪类选择器 1&#xff09;:link 超链接点击之前 2&#xff09;:visited 超链接点击之后 3&#xff09;:hover 鼠标悬停在某个标签上时 4&#xff09;:active 鼠标点击某个标签时&#xff0c;但没有松开 5&#xff09;:fo…

Python 从0开始 一步步基于Django创建项目(13)将数据关联到用户

在city_infos应用程序中&#xff0c;每个城市信息条目是关联到城市的&#xff0c;所以只需要将城市条目关联到用户即可。 将数据关联到用户&#xff0c;就是把‘顶层’数据关联到用户。 设计思路&#xff1a; 1、修改顶层数据模型&#xff0c;向其中添加‘用户’属性 2、根…

LC 106.从中序与后序遍历序列构造二叉树

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a; inorder [9,3,15,20,7], post…

尚医通day1

1 创建项目 doc 窗口 pnpm create vite 填写项目名 vue-syt选择框架 vuetypeScript 2整理项目 删除 /src/assets/vue.svg 文件&#xff0c;删除 /src/components 下的 helloWorld.vue删除app.vue内容&#xff0c;快捷键v3ts 生成模板内容去掉 /src/style.css 样式文件&…

Modbus协议介绍

Modbus存储区 从机存储数据&#xff0c;那么肯定要有一个存储区&#xff0c;那就需要文件操作&#xff0c;我们都知道这文件可以分为只读(-r)和读写(-wr)两种类型 并且存储的数据类型可以分为 &#xff1a;布尔量 和 16位寄存器 布尔量比如IO口的电平高低&#xff0c;灯的开关…

Windows 电脑麦克风 自动启用/禁用 小玩具!

WinMicrophone Windows 系统的 麦克风设备&#xff08;启用/禁用&#xff09;切换驱动&#xff01;它是小巧且快速的&#xff0c;它能够自动的检测并切换麦克风的情况。 您可以在软件包仓库中找到发布版本的exe包&#xff0c;无需安装&#xff01;其能够大大增大您在Windows中…

vue系列——v-on

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>v-on指令</title> </head> <body>…

Abaqus模拟新能源汽车电池理论概念

在新能源汽车电池的分析过程中&#xff0c;存在众多典型问题&#xff0c;这些问题跨越了机械、热管理和电气三大关键领域。其中&#xff0c;结构仿真分析作为一种重要的技术手段&#xff0c;主要聚焦于解决机械和热管理方面的挑战&#xff0c;为电池系统的性能优化和安全性提升…

jmeter性能压测的标准和实战中会遇到的问题

1.性能标准建议 CPU 使用率&#xff1a;不超过 70% 内存使用率&#xff1a;不超过 70% 磁盘&#xff1a;%util到达80%严重繁忙 &#xff08;os.disIO.filesystem.writeKbPS 每秒写入的千字节&#xff09; 响应时间&#xff1a;95%的响应时间不超过8000ms 事务成功率&#xff1a…

ClickHouse初体验

1.clickHouse是啥&#xff1f; ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库(DBMS)&#xff0c;使用 C语言编写&#xff0c;主要用于在线分析处理查询(OLAP)&#xff0c;能够使用SQL查询实时生成分析数据报告 2.clickHouse的特点 2.1列式存储 对于列的聚合&…

无忧微服务:如何实现大流量下新版本的发布自由

作者&#xff1a;项良、十眠 微服务上云门槛降低&#xff0c;用好微服务才是关键 据调研数据显示&#xff0c;约 70% 的生产故障是由变更引起的。在阿里云上的企业应用如茶百道、极氪汽车和来电等&#xff0c;他们是如何解决变更引起的稳定性风险&#xff0c;实现了在白天高流…

机器学习每周挑战——旅游景点数据分析

数据的截图&#xff0c;数据的说明&#xff1a; # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…

神奇的css radial-gradient

使用css radial-gradient属性&#xff0c;创造一个中间凹陷进去的形状。如下图 background: radial-gradient(circle at 50% -0.06rem, transparent 0.1rem, white 0) top left 100% no-repeat;

如何在极狐GitLab 自定义 Pages 域名、SSL/TLS 证书

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户…

【41-60】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了

【41-60】计算机网络基础知识&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用41、使用 Session 的过程是怎样的&#xff1f;42、Session和cookie应该如何去选择&#xff08;适…

算法学习——LeetCode力扣动态规划篇2(343. 整数拆分、96. 不同的二叉搜索树、416. 分割等和子集、1049. 最后一块石头的重量 II)

算法学习——LeetCode力扣动态规划篇2 343. 整数拆分 343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期&#xff1b;2.创建UDP套接字&#xff1b;3.绑定端口号&#xff0c;包括设置服务器端口号和IP地址&#xff0c;端口号一般是2字节使用uint16_t&#xff0c;而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

Stream流的详细说明

什么是stream流 Stream流是指一种数据处理的概念&#xff0c;它可以将数据以连续的方式传输&#xff0c;而不用等待整个数据集全部加载完成。在计算机编程中&#xff0c;Stream流通常用于处理大数据集或实时数据流。 Stream流可以分为输入流和输出流&#xff0c;输入流用于从数…