JavaWeb连接(JDBC)数据库实现增删改查

JavaWeb连接(JDBC)数据库实现增删改查

1、数据库结构

(1)、创建数据库(source_db)

(2)、创建数据表(tb_source),结构如下

字段名说明字段类型长度备注
id编号int主键,自增,增量为 1
name名称varchar50不能为空
type类型varchar20不能为空
uploadDate上传日期date不能为空

(3)、MySQL数据库创建表语句

# 新建表
CREATE TABLE `tb_source` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',`name` varchar(50) NOT NULL COMMENT '名称',`type` varchar(20) NOT NULL COMMENT '类型',`uploadDate` date NOT NULL COMMENT '上传日期',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;# 添加测试数据
INSERT INTO `tb_source` VALUES (1, '二次元', '视频', '2023-04-25');
INSERT INTO `tb_source` VALUES (2, '国际新闻', '文件', '2023-04-24');
INSERT INTO `tb_source` VALUES (3, '军事热点', '视频', '2023-05-01');
INSERT INTO `tb_source` VALUES (4, '国际新闻', '视频', '2023-04-11');
INSERT INTO `tb_source` VALUES (5, '精选小说', '文件', '2023-04-05');
INSERT INTO `tb_source` VALUES (6, '搞笑趣事', '视频', '2023-04-01');
INSERT INTO `tb_source` VALUES (7, '八卦闲谈', '文件', '2023-04-16');
INSERT INTO `tb_source` VALUES (8, '美女热舞', '视频', '2023-04-25');
INSERT INTO `tb_source` VALUES (9, '美女热舞', '文件', '2023-04-25');
2、新建JavaWeb项目详细步骤

(1)、设置项目名称和项目路径

在这里插入图片描述

在这里插入图片描述

(2)、完成新建一个空项目,目录结构

在这里插入图片描述

(3)、为新建的项目添加Web工程容器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)、添加Tomcat工具用于启动Web项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(5)、运行结果

在这里插入图片描述

3、项目文件目录结构(重点了解)

(1)、目录介绍

在这里插入图片描述

(2)、引入jar包步骤:https://blog.csdn.net/qq_54693844/article/details/134259335

4、创建JDBC数据库访问类:FactoryDB

(1)、创建FactoryDB类

  • 注意点留意存放位置(package com.item.source.common.jdbc)
package com.item.source.common.jdbc;import java.sql.*;/*** @author 为一道彩虹*/
public class FactoryDB
{private static final String URL = "jdbc:mysql://localhost:3306/source_db?characterEncoding=utf-8";private static final String USER = "root";private static final String PASSWORD = "123456";/** 1.加载驱动 */static{try{Class.forName("com.mysql.cj.jdbc.Driver");}catch (ClassNotFoundException e){e.printStackTrace();}}/** 2.获取数据库连接 */public static Connection GetConnection(){try{return DriverManager.getConnection(URL, USER, PASSWORD);}catch (SQLException throwables){throwables.printStackTrace();}return null;}/** 3.关闭资源 */public static void Close(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet){try{if (resultSet != null){resultSet.close();}if (preparedStatement != null){preparedStatement.close();}if (connection != null){connection.close();}}catch (SQLException e){e.printStackTrace();}}/** 4.测试是否连接成功 */public static void main(String[] args){System.out.println(GetConnection());}
}

(2)、测试连接是否成功

在这里插入图片描述

5、创建实体类:Source

(1)、创建Source实体类

package com.item.source.model.entity;/*** 描述:Source实体类** @author 为一道彩虹*/
public class Source
{/** 编号 */private int id;/** 名称 */private String name;/** 类型 */private String type;/** 上传日期 */private String uploadDate;/** 无参构成方法 */public Source(){}/** 有参构成方法(初始化) */public Source(int id, String name, String type, String uploadDate){this.id = id;this.name = name;this.type = type;this.uploadDate = uploadDate;}/** get和set方法 */public int getId() {return id;}public void setId(int id){this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getType(){return type;}public void setType(String type) {this.type = type;}public String getUploadDate(){return uploadDate;}public void setUploadDate(String uploadDate) {this.uploadDate = uploadDate;}
}
6、创建数据访问层:SourceManageDAOByJDBCImpl(重点复习)

(1)、首先创建对应的接口

package com.item.source.dao;import com.item.source.model.entity.Source;
import java.util.List;/*** 课程 Source DAO层* @author 为一道彩虹*/
public interface SourceManageDAOByJDBC
{/*** 查询所有Source数据* @return 多条数据才用List<Source>接收数据*/List<Source> QueryAllSource();
}

(2)、创建SourceManageDAOByJDBCImpl实现类

package com.item.source.dao.impl;import com.item.source.common.jdbc.FactoryDB;
import com.item.source.dao.SourceManageDAOByJDBC;
import com.item.source.model.entity.Source;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;/*** 描述:Source DAO实现层** @author 为一道彩虹*/
public class SourceManageDAOByJDBCImpl implements SourceManageDAOByJDBC
{/*** 查询所有Source数据* @return 多条数据才用List<Source>接收数据*/@Overridepublic List<Source> QueryAllSource(){// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;List<Source> sourceList = new ArrayList<>();try{// SQL 语句String SQL = "SELECT * FROM  tb_source";// 执行 SQL 语句preparedStatement = connection.prepareStatement(SQL);// executeQuery 执行查询操作   得到查询结果集合resultSetresultSet = preparedStatement.executeQuery();while (resultSet.next()){// 创建 Source 实体接收对应数据Source source = new Source();source.setId(resultSet.getInt("id"));source.setName(resultSet.getString("name"));source.setType(resultSet.getString("type"));source.setUploadDate(resultSet.getString("uploadDate"));// 添加到sourceList,用于返回数据sourceList.add(source);}}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection,preparedStatement,resultSet);}return sourceList;}/** 测试对应操作是否成功 */public static void main(String[] args){// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();// 调用 QueryAllSource 方法List<Source> sourceList = daoImp.QueryAllSource();// 循环输出for (Source source : sourceList){System.out.print(source.getId() + "\t");System.out.print(source.getName() + "\t");System.out.print(source.getType() + "\t");System.out.println(source.getUploadDate());}}
}

(3)、测试对应操作是否成功

在这里插入图片描述

在这里插入图片描述

7、条件查询、模糊查询和增删改查操作(重点复习)
1、条件查询

(1)、SourceManageDAOByJDBC接口实现

/*** 课程 Source DAO层* @author 为一道彩虹*/
public interface SourceManageDAOByJDBC
{/*** 查询所有Source数据* @return 多条数据才用List<Source>接收数据*/List<Source> QueryAllSource();/*** Source条件查询* @param name 名称* @return Source数据有一条的时候*/Source conditionalQuery(String name);/*** Source条件查询* @param name 名称* @return  List<Source>数据有多条的时候*/List<Source> conditionalQueryList(String name);
}

(2)、SourceManageDAOByJDBCImpl类实现

/*** 描述:Source DAO实现层** @author 为一道彩虹*/
public class SourceManageDAOByJDBCImpl implements SourceManageDAOByJDBC
{/*** 查询所有Source数据* @return 多条数据才用List<Source>接收数据*/@Overridepublic List<Source> QueryAllSource(){// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;List<Source> sourceList = new ArrayList<>();try{// SQL 语句String SQL = "SELECT * FROM  tb_source";// 执行 SQL 语句preparedStatement = connection.prepareStatement(SQL);// executeQuery 执行查询操作   得到查询结果集合resultSetresultSet = preparedStatement.executeQuery();while (resultSet.next()){// 创建 Source 实体接收对应数据Source source = new Source();source.setId(resultSet.getInt("id"));source.setName(resultSet.getString("name"));source.setType(resultSet.getString("type"));source.setUploadDate(resultSet.getString("uploadDate"));// 添加到sourceList,用于返回数据sourceList.add(source);}}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection,preparedStatement,resultSet);}return sourceList;}/*** Source条件查询* @param name 名称* @return Source数据有一条的时候*/@Overridepublic Source conditionalQuery(String name){// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;Source source = null;try{// SQL 语句String SQL = "SELECT * FROM tb_source WHERE name = ?";// 执行 SQL 语句preparedStatement = connection.prepareStatement(SQL);// 装入参数preparedStatement.setString(1, name);// executeQuery 执行查询操作   得到查询结果集合resultSetresultSet = preparedStatement.executeQuery();while (resultSet.next()){// 创建 Source 实体接收对应数据source = new Source();source.setId(resultSet.getInt("id"));source.setName(resultSet.getString("name"));source.setType(resultSet.getString("type"));source.setUploadDate(resultSet.getString("uploadDate"));}}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection,preparedStatement,resultSet);}return source;}/*** Source条件查询* @param name 名称* @return  List<Source>数据有多条的时候*/@Overridepublic List<Source> conditionalQueryList(String name){// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;List<Source> sourceList = new ArrayList<>();try{String SQL = "SELECT * FROM tb_source WHERE name = ?";preparedStatement = connection.prepareStatement(SQL);preparedStatement.setString(1, name);// executeQuery 执行查询操作   得到查询结果集合resultSetresultSet = preparedStatement.executeQuery();while (resultSet.next()){// 创建 Source 实体接收对应数据Source source = new Source();source.setId(resultSet.getInt("id"));source.setName(resultSet.getString("name"));source.setType(resultSet.getString("type"));source.setUploadDate(resultSet.getString("uploadDate"));// 添加到sourceList,用于返回数据sourceList.add(source);}}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection,preparedStatement,resultSet);}return sourceList;}/** 测试对应操作是否成功 */public static void main(String[] args){// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();System.out.println("--------------有一条数据时------------------");// 调用 conditionalQuery 方法,Source条件查询Source source1 = daoImp.conditionalQuery("搞笑趣事");System.out.print(source1.getId() + "\t");System.out.print(source1.getName() + "\t");System.out.print(source1.getType() + "\t");System.out.println(source1.getUploadDate());System.out.println("--------------有多条数据时------------------");// 调用 conditionalQuery 方法,Source条件查询List<Source> sourceList = daoImp.conditionalQueryList("美女热舞");// 循环输出for (Source source : sourceList){System.out.print(source.getId() + "\t");System.out.print(source.getName() + "\t");System.out.print(source.getType() + "\t");System.out.println(source.getUploadDate());}}
}

(3)、测试对应操作是否成功

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、模糊查询

(1)、SourceManageDAOByJDBC接口实现

/*** Source模糊查询* @param name 名称* @return List<Source>模糊查询存在多条和单条数据情况使用List存储*/
List<Source> sourceFuzzyQuery(String name);

(2)、SourceManageDAOByJDBCImpl类实现

/*** Source模糊查询* @param name 名称* @return List<Source>模糊查询存在多条和单条数据情况使用List存储*/
@Override
public List<Source> sourceFuzzyQuery(String name)
{// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;ResultSet resultSet = null;List<Source> sourceList = new ArrayList<>();try{String SQL = "SELECT * FROM tb_source WHERE name LIKE ?";preparedStatement = connection.prepareStatement(SQL);preparedStatement.setString(1, "%" + name + "%");// executeQuery 执行查询操作   得到查询结果集合resultSetresultSet = preparedStatement.executeQuery();while (resultSet.next()){// 创建 Source 实体接收对应数据Source source = new Source();source.setId(resultSet.getInt("id"));source.setName(resultSet.getString("name"));source.setType(resultSet.getString("type"));source.setUploadDate(resultSet.getString("uploadDate"));// 添加到sourceList,用于返回数据sourceList.add(source);}}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection,preparedStatement,resultSet);}return sourceList;
}/** 测试对应操作是否成功 */
public static void main(String[] args)
{// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();// 调用 sourceFuzzyQuery 方法,Source模糊查询List<Source> sourceList = daoImp.sourceFuzzyQuery("美女");// 循环输出for (Source source : sourceList){System.out.print(source.getId() + "\t");System.out.print(source.getName() + "\t");System.out.print(source.getType() + "\t");System.out.println(source.getUploadDate());}
}

(3)、测试对应操作是否成功

在这里插入图片描述

在这里插入图片描述

3、添加数据

(1)、SourceManageDAOByJDBC接口实现

/*** 添加Source数据* @param source Source实体对象数据* @return 影响行数,因为添加数据是插入操作 数据库返回的是影响了几行(int数据)*/
int AddSourceData(Source source);

(2)、SourceManageDAOByJDBCImpl类实现

/*** 添加Source数据* @param source Source实体对象数据* @return 影响行数,因为添加数据是插入操作 数据库返回的是影响了几行(int数据)*/
@Override
public int AddSourceData(Source source)
{// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;int result = 0;try{// SQL 语句String sql = "INSERT INTO tb_source(name, type, uploadDate) VALUES (?, ?, ?)";// 执行 SQL 语句preparedStatement = connection.prepareStatement(sql);// 装入参数preparedStatement.setString(1, source.getName());preparedStatement.setString(2, source.getType());preparedStatement.setString(3, source.getUploadDate());result = preparedStatement.executeUpdate();}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection, preparedStatement, null);}return result;
}/** 测试对应操作是否成功 */
public static void main(String[] args)
{// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();// 创建Source对象,并且初始化数据(id设置自增)Source source = new Source();source.setName("贸易新闻");source.setType("视频");source.setUploadDate("2023-05-20");// 调用 AddSourceData 方法,Source添加数据int result = daoImp.AddSourceData(source);// 判断是否添加成功if (result != 0){System.out.println("添加Source数据成功");}else{System.out.println("添加Source数据失败!!!");}}

(3)、测试对应操作是否成功
在这里插入图片描述

在这里插入图片描述

4、修改数据

(1)、SourceManageDAOByJDBC接口实现

/*** 编辑Source数据(根据ID修改)* @param source Source实体对象数据* @param id 编号* @return 影响行数,和添加数据同理*/
int EditSourceData(Source source, int id);

(2)、SourceManageDAOByJDBCImpl类实现

/*** 编辑Source数据(根据ID修改)* @param source Source实体对象数据* @param id 编号* @return 影响行数,和添加数据同理*/
@Override
public int EditSourceData(Source source, int id)
{// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;int result = 0;try{// SQL 语句String sql = "UPDATE tb_source SET name = ?, type = ?, uploadDate = ? WHERE id = ?";// 执行 SQL 语句preparedStatement = connection.prepareStatement(sql);// 装入参数preparedStatement.setString(1, source.getName());preparedStatement.setString(2, source.getType());preparedStatement.setString(3, source.getUploadDate());preparedStatement.setInt(4, id);result = preparedStatement.executeUpdate();}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection, preparedStatement, null);}return result;
}/** 测试对应操作是否成功 */
public static void main(String[] args)
{// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();// 创建Source对象,并且初始化数据(id设置自增)Source source = new Source();source.setName("美女礼仪");source.setType("视频");source.setUploadDate("2023-05-24");// 调用 EditSourceData 方法,Source修改数据int result = daoImp.EditSourceData(source, 9);// 判断是否添加成功if (result != 0){System.out.println("修改Source数据成功");}else{System.out.println("修改Source数据失败!!!");}
}

(3)、测试对应操作是否成功

在这里插入图片描述

在这里插入图片描述

5、删除数据

(1)、SourceManageDAOByJDBC接口实现

/*** 删除Source数据(根据ID删除)* @param id 编号* @return 影响行数,和添加数据同理*/
int DeleteSourceData(int id);

(2)、SourceManageDAOByJDBCImpl类实现

/*** 删除Source数据(根据ID删除)* @param id 编号* @return 影响行数,和添加数据同理*/
@Override
public int DeleteSourceData(int id)
{// 获取数据库连接Connection connection = FactoryDB.getConnection();PreparedStatement preparedStatement = null;int result = 0;try{// SQL 语句String sql = "DELETE FROM tb_source WHERE id = ?";// 执行 SQL 语句preparedStatement = connection.prepareStatement(sql);// 装入参数preparedStatement.setInt(1, id);result = preparedStatement.executeUpdate();}catch (Exception e){e.printStackTrace();}finally{// 关闭连接数据库对象,防止资源重复调用FactoryDB.Close(connection, preparedStatement, null);}return result;
}/** 测试对应操作是否成功 */
public static void main(String[] args)
{// 创建SourceManageDAOByJDBCImpl对象SourceManageDAOByJDBCImpl daoImp = new SourceManageDAOByJDBCImpl();// 调用 DeleteSourceData 方法,Source删除数据int result = daoImp.DeleteSourceData( 9);// 判断是否添加成功if (result != 0){System.out.println("删除Source数据成功");}else{System.out.println("删除Source数据失败!!!");}
}

(3)、测试对应操作是否成功

在这里插入图片描述

在这里插入图片描述

先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!

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

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

相关文章

前端面试 vue 按钮级的权限控制

方案一 按钮权限也可以用v-if判断 但是如果页面过多&#xff0c;每个页面页面都要获取用户权限role和路由表里的meta.btnPermissions&#xff0c;然后再做判断 这种方式就不展开举例了 方案二 使用自定义指令实现 按钮级的权限控制 思维导图 心就是自定义指令的书写 首先…

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

​​​​​​​ 目录 一、引言 二、零样本音频分类&#xff08;zero-shot-audio-classification&#xff09; 2.1 概述 2.2 意义 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数​​​​​​​ 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模…

【MySQL】:对库和表的基本操作方法

数据库使用的介绍 什么是SQL 学习数据库的使用——>基于 SQL编程语言 来对数据库进行操作 重点表述的是“需求”&#xff0c;期望得到什么结果。&#xff08;至于结果是如何得到的&#xff0c;并不关键&#xff0c;都是数据库服务器在背后做好了&#xff09; 重点表述的是…

线程之间的通信

第一题 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdarg.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <dirent.h> #include <…

蔡司小乐圆:护航青少年视力健康,专业应对近视挑战

在科技日新月异的今天&#xff0c;电子产品已深度融入青少年的日常&#xff0c;为生活带来便利的同时&#xff0c;也悄然间对他们的视力构成了威胁。近视&#xff0c;这一日益严峻的健康问题&#xff0c;正牵动着无数家庭的心弦。蔡司眼镜&#xff0c;作为眼镜行业的领军者&…

7月21日,贪心练习

大家好呀&#xff0c;今天带来一些贪心算法的应用解题、 一&#xff0c;柠檬水找零 . - 力扣&#xff08;LeetCode&#xff09; 解析&#xff1a; 本题的贪心体现在对于20美元的处理上&#xff0c;我们总是优先把功能较少的10元作为找零&#xff0c;这样可以让5元用处更大 …

代码随想录算法训练营第35天|LeetCode 01背包问题 二维、01背包问题 一维、416. 分割等和子集

1. LeetCode 01背包问题 二维 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1046 文章链接&#xff1a;https://programmercarl.com/背包理论基础01背包-1.html#算法公开课 视频链接&#xff1a;https://www.bilibili.com/video/BV1cg411g7Y6/ 思路&#xf…

压缩pdf大小的方法 指定大小软件且清晰

在数字化时代&#xff0c;pdf文件因其良好的兼容性和稳定性&#xff0c;已成为文档分享的主流格式。然而&#xff0c;高版本的pdf文件往往体积较大&#xff0c;传输和存储都相对困难。本文将为您详细介绍几种简单有效的方法&#xff0c;帮助您减小pdf文件的大小&#xff0c;让您…

UML的六大关系---泛化、实现、关联、聚合、组合、依赖

文章目录 前言1. 泛化关系(Generalization)2. 实现关系(Realization)3. ‌关联关系(Association)4. 聚合关系(Aggregation)5. 组合关系(Composition)6. 依赖关系(Dependency)总结 前言 讲到设计模式&#xff0c;就会有 U M L UML UML类图这个东西。 一开始就很难理解各种线啥意…

Android RSA 加解密

文章目录 一、RSA简介二、RSA 原理介绍三、RSA 秘钥对生成1. 密钥对生成2. 获取公钥3. 获取私钥 四、PublicKey 和PrivateKey 的保存1. 获取公钥十六进制字符串1. 获取私钥十六进制字符串 五、PublicKey 和 PrivateKey 加载1. 加载公钥2. 加载私钥 六、 RSA加解密1. RSA 支持三…

CTF-Web习题:2019强网杯 UPLOAD

题目链接&#xff1a;2019强网杯 UPLOAD 解题思路 打开靶场如下图所示&#xff0c;是一个注册和登录界面 那就注册登录一下&#xff0c;发现是一个提交头像的页面&#xff1a; 试了一下只有能正确显示的png图片才能提交成功&#xff0c;同时F12拿到cookie&#xff0c;base6…

树形背包问题

一些题目给定了树形结构&#xff0c;在这个树形结构中选取一定数量的点或边&#xff08;也可能是其他属性&#xff09;&#xff0c;使得某种与点权或者边权相关的花费最大或者最小。解决这类问题&#xff0c;一般要考虑使用树上背包。 树上背包&#xff0c;顾名思义&#xff0c…

Linux 基础开发工具 : Vim编辑器

Vim 是 Linux 和其他类 Unix 系统上广泛使用的文本编辑器之一。它基于更早的 vi 编辑器&#xff0c;但添加了许多增强功能和扩展。Vim 是“Vi IMproved”的缩写&#xff0c;意为“改进的 Vi”&#xff0c;我们常使用Vim编辑器编写c/c代码。 ps&#xff1a;该篇介绍均为最基础介…

Blender中保存透明图片

在Blender中保存透明图片&#xff0c;主要是通过在渲染设置中调整背景透明度&#xff0c;并选择合适的文件格式来保存图像。以下是一个详细的步骤指南&#xff1a; 一、设置渲染属性 打开Blender并加载你想要渲染的模型。在右侧的属性编辑器中&#xff0c;找到并点击“渲染属…

解决Visual studio内报错信息:MSB8036:找不到 Windows SDK 版本问题

问题描述&#xff1a; 找不到WindowsSDK版本&#xff0c;请安装所需版本的Windows SDK&#xff0c;或者在项目属性页中通过右键单击解决方案并选择“重定解决方案目标”来更改SDK版本。 首先&#xff0c;如果你尝试了以下两种方法&#xff1a; &#xff08;1&#xff09;重新…

【Qt】 FFmpeg+Qt windows 32位或者64位环境搭建

简介 目前Ffmpeg官网&#xff08;64位连接&#xff09;下载的均为64位编译的&#xff0c;这要求我们采用的Qt creator也采用64位编译器。但是仍存在部分用户采用32位编译器&#xff0c;所以这部分用户需下载32 Ffmpeg&#xff08;32位连接&#xff09;。 根据使用的编译器位数…

Linux下安装Redis(超简单)

1.下载 选着自己需要下载的版本后&#xff0c;右击选择复制链接&#xff0c;然后利用命令进行下载&#xff0c;进入Xshell控制台&#xff0c;输入wget将复制的链接粘帖上&#xff0c;这里我选择的是6.0.6版本。 命令如下&#xff1a; wget https://download.redis.io…

7款主流大模型实测:简单的数感测试全翻车

实测strawberry中有2个字母“r”&#xff1f;不会比大小的大模型也几乎数不对数&#xff0c;数理能力差到惊人&#xff01; 科技新知 原创 谁能想到&#xff0c;号称“超级大脑”的大模型&#xff0c;竟然在几道简单的数学题上败给了小学生。 近日&#xff0c;国内火热的音乐…

Vue.js 2 项目实战(三):综合案例-小黑记事本

前言 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的设计目标是通过采用易于上手的结构和强大的功能&#xff0c;使前端开发变得更加简便和高效。以下是 Vue.js 的一些关键特性和优点&#xff1a; 核心特性 声明式渲染 Vue.js 使用声明式语法来描述用户界面&a…

HR怎么看待PMP证书呢?

不是HR&#xff0c;但 HR 的招人标准也是根据市场跟岗位需求来的吧。据我了解&#xff0c;PMP 证书目前还是有市场的&#xff0c;大家可以根据自己的行业跟公司&#xff0c;去判断下 PMP 的含金量&#xff0c;看自己是否需要去考。一定要结合自己的需求分析&#xff0c;盲目跟风…