Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库

Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库

在Windows中使用C#连接Mysql数据库比较简单,可以直接使用MySql.Data库,目前最新版本为:8.3.0。
当然也可以结合MySql.Data和Dapper库一起使用,目前Dapper的最新版本为:2.1.35。
Dapper是一款轻量级ORM工具,是一个简单的.NET对象映射器,在速度上几乎与使用原始ADO.NET数据读取器的速度一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询数据库,提供了一种简单、高效的方式来执行数据库查询、插入、更新和删除操作。

一、使用Mysql.Data和Dapper来操作Mysql数据库

准备条件:
(1)、OS:Windows 10或Windows11
(2)、Visual Stuidio 2022
(3)、MySQL安装包,比如mysql-installer-web-community-8.0.36.0.msi

本文使用的Visual Studio版本是VS2022,MySQL版本为:8.0.36,对应的下载地址为:mysql-installer-web-community-8.0.36.0.msi,并采用C# .Net WinForm窗体程序作为演示示例,我们展示如何使用Mysql.Data和Dapper连接MySql数据库,并查询MySql数据库中对应的people表,然后在窗体程序中输入字段LastName来查询对应的数据,鼠标按下search按钮,在ListBox中展示从MySQL数据库中的查询结果;另外我们在下方的三个输入框中分别输入用户的FirstName、LastName、EmailAddress字段,然后鼠标点击insert按钮,往数据库表中插入一条记录。最终的程序界面如下图所示:
MySQL数据库访问窗体示例程序
(1)、根据LastName查询记录
我们首先在输入框中输入LastName如蒋(英文中LastName代表中文中的姓,FirstName代表中文中的名),然后鼠标点击【Seach】按钮,查询的结果展示在下方中的ListBox中,如下图所示:
根据LastName查询数据

(2)、往数据库people表中插入一条记录
我们首先在下面的FirstNameLastNameEmailAddress三个文本框中输入对应的数据,然后鼠标点击insert按钮,即可插入一条记录。
注意:由于Id是主键自增的,所以不用管。
插入一条记录

执行插入记录后,原来输入的FistNameLastNameEmailAddress记录会被清空,如下图所示:
执行插入记录后,原来的输入记录会被清空
接下来我们输入在最上方根据刚刚输入的LastName:蒋,看FirstName为青青,LastName为蒋,EmailAddress为jiangqingqing@china.com的那条记录是否入库,如下图所示:
检查刚刚插入的数据是否入库

二、C#窗体程序源代码下载

完整的C#窗体程序代码我已经上传到github上面了:
Github源代码

git clone https://github.com/ccf19881030/WindowsFormsMySqlDbApp.git

或者直接下载https://github.com/ccf19881030/WindowsFormsMySqlDbApp/archive/refs/heads/main.zip源代码即可,
下载源代码描述

三、创建C# MySQL数据库窗体示例程序

1、创建一个基于C# .Net的WinForm窗体程序

基于VS2022,创建一个WinForm .Net窗体程序,如下图所示:
WinForm .Net窗体程序

最终的程序代码结构如下图所示:
最终的程序代码结构

2、通过NuGet包管理器安装Mysql.Data和Dapper库

创建项目名称为WindowsFormsMySqlDbApp的C#窗体程序之后,通过项目中的引用-》管理 NuGet 程序包(N)-》浏览,分别输入MySql.Data和Dapper,然后点击安装:
MySql.Data库
Dapper

安装了MySql.Data和Dapper库

3、设计界面UI

WinForm界面如下图所示:
WinForm窗体程序

WinForm界面和MFC一样很简单,只由LabelTextBoxButtonListBox这四种控件组成。

4、安装MySQL数据库,并Navicat Premium 16或者MySQL命令行创建数据库ytdemo和people表

安装mysql-installer-web-community-8.0.36.0.msi数据库安装包之后,我们root账号的初始密码设置为123456,然后使用Navicat Premium 16连接并登录本地MySQL数据库,然后先创建ytdemo数据库,然后在该数据库中创建people表,其字段结果如下图所示:
people表结构
people表结构的脚本如下:
people.sql

/*Navicat Premium Data TransferSource Server         : localhost_mysql_rootSource Server Type    : MySQLSource Server Version : 80036Source Host           : localhost:3306Source Schema         : ytdemoTarget Server Type    : MySQLTarget Server Version : 80036File Encoding         : 65001Date: 09/03/2024 14:34:56
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for people
-- ----------------------------
DROP TABLE IF EXISTS `people`;
CREATE TABLE `people`  (`Id` int NOT NULL AUTO_INCREMENT,`FirstName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`LastName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`EmailAddress` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 33 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

然后往数据库表中插入一些测试数据,如下图所示:
people表中的测试数据
people的测试数据如下:

-- ----------------------------
-- Records of people
-- ----------------------------
INSERT INTO `people` VALUES (1, 'Timothy', 'Corey', 'TimCorey@gmail.com');
INSERT INTO `people` VALUES (2, 'Jane', 'Simth', 'JSmith@apple.com');
INSERT INTO `people` VALUES (3, 'Sue', 'Storm', 'SueStorm@126.com');
INSERT INTO `people` VALUES (4, 'Bob', 'McClure', 'BobMClu@microsoft.com');
INSERT INTO `people` VALUES (5, 'Mary', 'Jones', 'maryJones@google.com');
INSERT INTO `people` VALUES (6, 'Ray', 'Stone', 'rayStone@163.com');
INSERT INTO `people` VALUES (7, '操', '曹', 'caocao@neusoft.com');
INSERT INTO `people` VALUES (8, '权', '孙', 'sunquan@huawei.com');
INSERT INTO `people` VALUES (9, '备', '刘', 'liubei@qq.com');
INSERT INTO `people` VALUES (10, '飞', '张', 'zhangfen@qq.com');
INSERT INTO `people` VALUES (11, '羽', '关', 'guanyu@qq.com');
INSERT INTO `people` VALUES (12, '亮', '诸葛', 'zhugeliang@qq.com');
INSERT INTO `people` VALUES (13, '郎', '王', 'wanglang@126.com');
INSERT INTO `people` VALUES (14, '肃', '鲁', 'lusu@163.com');
INSERT INTO `people` VALUES (15, '云', '赵', 'zhaoyun@qq.com');
INSERT INTO `people` VALUES (16, '超', '马', 'machao@qq.com');
INSERT INTO `people` VALUES (17, '纯', '马', 'machun@alibaba.com');
INSERT INTO `people` VALUES (18, '万翼', '马', 'mawanyi@qq.com');
INSERT INTO `people` VALUES (19, '禅', '刘', 'liushan@qq.com');
INSERT INTO `people` VALUES (20, '懿', '司马', 'simayi@neusoft.com');
INSERT INTO `people` VALUES (21, '昭', '司马', 'simazhao@neusoft.com');
INSERT INTO `people` VALUES (22, '炎', '司马', 'simayan@neusoft.com');
INSERT INTO `people` VALUES (23, '相如', '司马', 'simaxiangru@han.com');
INSERT INTO `people` VALUES (24, '德宗', '司马', 'simadezong@neusoft.com');
INSERT INTO `people` VALUES (25, '峰', '欧阳', 'ouyangfeng@qq.com');
INSERT INTO `people` VALUES (26, '克', '欧阳', 'ouyangke@qq.com');
INSERT INTO `people` VALUES (27, '超风', '梅', 'machaofeng@126.com');
INSERT INTO `people` VALUES (28, '志', '徐', 'xuzhi@gmail.com');
INSERT INTO `people` VALUES (29, '万宗', '毛', 'maowanzong@china.com');
INSERT INTO `people` VALUES (30, '人凤', '毛', 'maorenfeng@taiwan.com');
INSERT INTO `people` VALUES (31, '爱天', '毛', 'maaitian@china.com');
INSERT INTO `people` VALUES (32, '于铭', '毛', 'mayumin@china.com');
INSERT INTO `people` VALUES (33, '科', '孙', 'sunke@china.com');
INSERT INTO `people` VALUES (34, '中山', '孙', 'sunzhongshan@china.com');
INSERT INTO `people` VALUES (35, '世凯', '袁', 'yuanshikai@qing.com');
INSERT INTO `people` VALUES (36, '袁', '立', 'yuanli@gmail.com');
INSERT INTO `people` VALUES (37, '国西', '李', 'liguoxi@ybu.com');
INSERT INTO `people` VALUES (38, '二', '李', 'lier@dangdang.com');
INSERT INTO `people` VALUES (39, '丽丽', '叶', 'yeili@hongkong.com');
INSERT INTO `people` VALUES (40, '婷', '叶', 'yeting@qq.com');
INSERT INTO `people` VALUES (41, '耳父', '陈', 'chenerfu@china.com');
INSERT INTO `people` VALUES (42, '国富', '陈', 'chenguofu@taiwan.com');
INSERT INTO `people` VALUES (43, '立夫', '陈', 'chenlifu@taiwan.com');
INSERT INTO `people` VALUES (44, '诚', '陈', 'chenchen@taiwan.com');
INSERT INTO `people` VALUES (45, '崇禧', '白', 'baichongxi@taiwan.com');
INSERT INTO `people` VALUES (46, '果夫', '陈', 'chengefu@taiwan.com');
INSERT INTO `people` VALUES (47, '美龄', '宋', 'songmeiling@taiwan.com');
INSERT INTO `people` VALUES (48, '庆龄', '宋', 'songqinglin@china.com');
INSERT INTO `people` VALUES (49, '蔼龄', '宋', 'songailing@taiwan.com');
INSERT INTO `people` VALUES (50, '祥熙', '孔', 'kongxiangxi@gmail.com');
INSERT INTO `people` VALUES (51, '仕杰', '宋', 'songshijie@huawei.com');
INSERT INTO `people` VALUES (52, '天赐', '张', 'zhangtianci@huawei.com');
INSERT INTO `people` VALUES (53, '峰', '乔', 'qiaofeng@xiaomi.com');
INSERT INTO `people` VALUES (54, '誉', '段', 'duanyu@gmail.com');
INSERT INTO `people` VALUES (55, '竹', '虚', 'xuzhu@gmail.com');
INSERT INTO `people` VALUES (56, '容复', '慕', 'morongfu@gmail.com');
INSERT INTO `people` VALUES (57, '植', '曹', 'caozhi@neusoft.com');
INSERT INTO `people` VALUES (58, '丕', '曹', 'caopi@neusoft.com');
INSERT INTO `people` VALUES (59, '冲', '曹', 'caochong@neusoft.com');
INSERT INTO `people` VALUES (60, '爽', '曹', 'caoshuang@neusoft.com');
INSERT INTO `people` VALUES (61, '真', '曹', 'caozhen@neusoft.com');
INSERT INTO `people` VALUES (62, '睿', '曹', 'caorui@neusoft.com');
INSERT INTO `people` VALUES (63, '伟庭', '曹', 'caoweiting@neusoft.com');
INSERT INTO `people` VALUES (64, '值', '王', 'wangzhi@sony.com');
INSERT INTO `people` VALUES (65, '双双', '陈', 'chenshuangshuang@gmail.com');
INSERT INTO `people` VALUES (66, '介石', '蒋', 'jiangzhongzhen@taiwan.com');
INSERT INTO `people` VALUES (67, '经国', '蒋', 'jiangjingguo@taiwan.com');
INSERT INTO `people` VALUES (68, '纬国', '蒋', 'jiangweiguo@taiwan.com');
INSERT INTO `people` VALUES (69, '万安', '蒋', 'jiangwanan@taiwan.com');
INSERT INTO `people` VALUES (70, '方良', '蒋', 'jiangfangliang@taiwan.com');
INSERT INTO `people` VALUES (71, '英', '蒋', 'jiangying@china.com');
INSERT INTO `people` VALUES (72, '学森', '钱', 'qianxuesen@china.com');
INSERT INTO `people` VALUES (73, '雪', '林', 'linxue@gmail.com');
INSERT INTO `people` VALUES (74, '国栋', '林', 'linguodong@gmai.com');
INSERT INTO `people` VALUES (75, '万里', '蒋', 'jiangwanli@gmail.com');
INSERT INTO `people` VALUES (76, '勃', '周', 'zhoubo@han.com');
INSERT INTO `people` VALUES (77, '彬彬', '周', 'zhoubinbin@china.com');
INSERT INTO `people` VALUES (78, '德旺', '朱', 'zhudewang@china.com');
INSERT INTO `people` VALUES (79, '正田', '朱', 'zhuzhengtian@gmail.com');
INSERT INTO `people` VALUES (80, '元璋', '朱', 'zhuyuanzhang@ming.com');
INSERT INTO `people` VALUES (81, '允炆', '朱', 'zhuyunwen@ming,com');
INSERT INTO `people` VALUES (82, '标', '朱', 'zhubiao@ming.com');
INSERT INTO `people` VALUES (83, '棣', '朱', 'zhuli@ming.com');
INSERT INTO `people` VALUES (84, '高炽', '朱', 'zhugaochi@ming.com');
INSERT INTO `people` VALUES (85, '高煦', '朱', 'zhugaoxu@ming.com');
INSERT INTO `people` VALUES (86, '瞻基', '朱', 'zhuzhanji@ming.com');
INSERT INTO `people` VALUES (87, '厚照', '朱', 'zhuhouzhao@ming.com');
INSERT INTO `people` VALUES (88, '秀', '刘', 'liuxiu@han.com');
INSERT INTO `people` VALUES (89, '璋', '刘', 'liuzhang@han.com');
INSERT INTO `people` VALUES (90, '莉莉', '刘', 'liulili@han.com');
INSERT INTO `people` VALUES (91, '志', '刘', 'liuzhi@han.com');
INSERT INTO `people` VALUES (92, '屈氂', '刘', 'liuqumao@han.com');
INSERT INTO `people` VALUES (93, '梦', '刘', 'liumeng@han.com');
INSERT INTO `people` VALUES (94, '凤凤', '张', 'zhangfengfeng@126.com');
INSERT INTO `people` VALUES (95, '美丽', '刘', 'liumeili@126.com');
INSERT INTO `people` VALUES (96, '靖', '郭', 'guojing@163.com');
INSERT INTO `people` VALUES (97, '蓉', '黄', 'huangrong@163.com');
INSERT INTO `people` VALUES (98, '芙', '郭', 'guofu@163.com');
INSERT INTO `people` VALUES (99, '襄', '郭', 'guoxiang@163.com');
INSERT INTO `people` VALUES (100, '美美', '郭', 'guomeimei@163.com');
INSERT INTO `people` VALUES (101, '克', '欧阳', 'ouyangke@126.com');
INSERT INTO `people` VALUES (102, '康', '杨', 'yangkang@126.com');
INSERT INTO `people` VALUES (103, '佳伟', '沈', 'shenjiawei@126.com');
INSERT INTO `people` VALUES (104, '逍遥', '李', 'lixiaoyao@gmail.com');
INSERT INTO `people` VALUES (105, '正淳', '段', 'duanzhengchun@gmail.com');
INSERT INTO `people` VALUES (106, '星竹', '李', 'lixingzhu@gmail.com');
INSERT INTO `people` VALUES (107, '紫', '阿', 'azi@163.com');
INSERT INTO `people` VALUES (108, '朱', '阿', 'azhu@163.com');
INSERT INTO `people` VALUES (109, '延庆', '段', 'duanyanqing@gmail.com');
INSERT INTO `people` VALUES (110, '微微', '曹', 'caoweiwei@126.com');
INSERT INTO `people` VALUES (111, '乐天', '何', 'heletian@ybu.com');
INSERT INTO `people` VALUES (112, '晓婷', '何', 'hexiaoting@gmail.com');

5、创建Person实体对象

在C#窗体程序中创建一个Person实体类,对应数据库表中的people结构,具体代码如下图所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WindowsFormsMySqlDbApp
{public class Person{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }public string EmailAddress { get; set; }public string FullInfo{get{return $" {FirstName} {LastName} ({EmailAddress})";}}}
}

6、MySQL连接字符串

我们的MySQL链接字符串为:Server=127.0.0.1;Port=3306;database=ytdemo;user id=root;password=123456;
如果在云环境中我们需要将Server对应的本地数据库IP地址127.0.0.1修改为对应的云服务器IP地址,user id对应用户名,password对应我们的用户密码。
为了方便,我们一般不要把MySQL数据库连接字符串硬编码在代码中写死,一般可以放在App.Config配置文件中,例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup><connectionStrings><add name="SampleDB" connectionString="Server=127.0.0.1;Port=3306;database=ytdemo;user id=root;password=123456;" /></connectionStrings>
</configuration>

7、创建MySQL数据库字符串访问类以及查询people表数据的接口

对应的MySQL连接字符串访问类Helper如下:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WindowsFormsMySqlDbApp
{public static class Helper{public static string ConnectVal(string name){return ConfigurationManager.ConnectionStrings[name].ConnectionString;}}
}

另外,我们创建一个MySQLDataAccess类用于连接和访问MySQL数据库,具体的实现代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using MySql.Data.MySqlClient;namespace WindowsFormsMySqlDbApp
{public class MySQLDataAccess{//public static string connStr = "Server=127.0.0.1;Port=3306;database=ytdemo;user id=root;password=123456;"; /// <summary>/// 根据lastName获取所有的人员信息列表/// </summary>/// <param name="lastName">姓</param>/// <returns></returns>public List<Person> GetPersonList(string lastName){using (IDbConnection connection = new MySqlConnection(Helper.ConnectVal("SampleDB"))){//string searchSql = "select * from people where LastName=@LastName";//return connection.Query<Person>(searchSql, new { LastName = lastName }).ToList();var personList = connection.Query<Person>($"select * from people where LastName = '{lastName}'").ToList();return personList;}}/// <summary>/// 往数据库表people中插入一条记录/// </summary>/// <param name="firstName"></param>/// <param name="lastName"></param>/// <param name="emailAdress"></param>public void InsertPerson(string firstName, string lastName, string emailAddress){using (IDbConnection connection = new MySqlConnection(Helper.ConnectVal("SampleDB"))){//string insertSql = $"INSERT INTO `people`(FirstName, LastName, emailAddress) VALUES ('{firstName}', '{lastName}', '{emailAdress}');";//connection.Execute(insertSql);Person newPerson = new Person { FirstName = firstName, LastName = lastName, EmailAddress = emailAddress };string insertSql = "INSERT INTO `people`(FirstName, LastName, emailAddress) VALUES (@FirstName, @LastName, @EmailAddress);";connection.Execute(insertSql, newPerson);}}}
}

8、在查询按钮实现函数中实现具体的查询逻辑

具体的界面和查询逻辑实现代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsMySqlDbApp
{public partial class DashBoardForm : Form{List<Person> people = new List<Person>();   // 查询结果列表public DashBoardForm(){InitializeComponent();// 更新绑定内容UpdateBinding();}/// <summary>/// 刷新ListBox中的数据,将peopleFoundListBox和peopl列表数据进行绑定,并显示FullInfo字段内容/// </summary>public void UpdateBinding(){peopleFoundListBox.DataSource = people;peopleFoundListBox.DisplayMember = "FullInfo";}/// <summary>/// search按钮单击响应处理函数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void searchButton_Click(object sender, EventArgs e){// 创建MySQLDataAccess类对象MySQLDataAccess dataAccess = new MySQLDataAccess();// 根据UI窗体用户输入的LastName字段,调用dataAccess对象的GetPersonList接口从people表查询数据people = dataAccess.GetPersonList(lastNameTextBox.Text);// 更新绑定内容,将people查询结果展示在peopleFoundListBox中UpdateBinding();}/// <summary>/// insert按钮响应处理函数/// 功能:接收用户输入,往people数据表中插入记录/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void insertDataButton_Click(object sender, EventArgs e){MySQLDataAccess dataAccess = new MySQLDataAccess();// 插入一条数据记录到people表中dataAccess.InsertPerson(firstNameInsTextBox.Text, lastNameInsTextBox.Text, emailAddressInsTextBox.Text);// 插入数据之后将界面中的记录数据清空firstNameInsTextBox.Text = "";lastNameInsTextBox.Text = "";emailAddressInsTextBox.Text = "";}}
}

9、运行程序

代码完成之后,我们运行程序,结果下图所示:
程序运行结果
插入记录

四、参考资料

  • https://www.nuget.org/packages/MySql.Data/
  • https://www.nuget.org/packages/Dapper
  • https://github.com/mysql-net/MySqlConnector
  • https://github.com/DapperLib/Dapper
  • https://github.com/ccf19881030/WindowsFormsMySqlDbApp

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

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

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Progress)

进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 说明&#xff1a; 该组件从API version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Progress(options: ProgressOptions<Type>) 创建进度组件&a…

Python Web应用程序构建的最佳实践:代码实例与深度解析【第122篇—装饰器详解】

Python Web应用程序构建的最佳实践&#xff1a;代码实例与深度解析 在当今数字时代&#xff0c;构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python&#xff0c;作为一种简洁、强大的编程语言&#xff0c;为Web开发提供了丰富的工具和框架。在本篇文章中&#xff…

用户案例|向量引擎在携程酒店搜索中的应用场景和探索

Zilliz AI 初创计划是面向 AI 初创企业推出的一项扶持计划&#xff0c;预计提供总计 1000 万元的 Zilliz Cloud 抵扣金&#xff0c;致力于帮助 AI 开发者构建高效的非结构化数据管理系统&#xff0c;助力打造高质量 AI 服务与运用&#xff0c;加速产业落地。访问https://zilliz…

【机器学习300问】38、什么是K-means算法?

在实际工作中&#xff0c;我们经常会遇到这样一类问题&#xff1a;给机器输入大量的特征数据&#xff0c;并期望机器通过学习找出数据存在的某种共性特征、结构或关联。这类问题被称为“非监督学习”问题。这篇文章我就来聚焦非监督学习中的其中一个任务——聚类 例如在数字营销…

OpenHarmony教程指南—ArkTS时钟

简单时钟 介绍 本示例通过使用ohos.display 接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * Math.PI /…

leetcode 3.11

leetcode hot 100 二分查找1.寻找旋转排序数组中的最小值 矩阵1.搜索二维矩阵 II知识点&#xff1a;upper_bound, lower_bound知识点&#xff1a;二分查找 2.搜索二维矩阵 链表1.合并两个有序链表2.两数相加3. 删除链表的倒数第 N 个结点 二分查找 1.寻找旋转排序数组中的最小…

【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

鸿蒙Next学习-Flex布局

Entry Component struct FlexCase {build() {//需要在构造参数上传Flex({ direction: FlexDirection.Row,justifyContent:FlexAlign.Center }) {//flex布局Row().width(100).height(100).backgroundColor(Color.Red)Row().width(100).height(100).backgroundColor(Color.Yellow…

c++11语法特性

c11 1.c11发展简介 ​ 第一个比较正式的c标准是1998提出的c98标准。之后定了5年计划&#xff0c;每5年来一次大更新。在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C…

工作中Git如何切换远程仓库地址

工作中Git如何切换远程仓库地址 部门之前的仓库不用了&#xff0c;重新建了一个仓库&#xff0c;但是上传代码还是上传到了之前的仓库里面了&#xff0c;所以得进行修改&#xff0c;下面将修改地址的方法进行操作。 方法一、直接修改远程仓库地址 查看当前远程仓库地址 git …

使用 ChatGPT 写高考作文

写作文&#xff0c;很简单&#xff0c;但写一篇好的作文&#xff0c;是非常有难度的。 想要写一篇高分作文&#xff0c;需要对作文题目有正确的理解&#xff0c;需要展现独到的观点和深入的思考&#xff0c;需要具备清晰的逻辑结构&#xff0c;需要准确而得体的语言表达。 正…

【Linux进阶之路】HTTPS = HTTP + S

文章目录 一、概念铺垫1.Session ID2.明文与密文3.公钥与私钥4.HTTPS结构 二、加密方式1. 对称加密2.非对称加密3.CA证书 总结尾序 一、概念铺垫 1.Session ID Session ID&#xff0c;即会话ID&#xff0c;用于标识客户端与服务端的唯一特定会话的标识符。会话&#xff0c;即客…

LeetCode 热题 100 | 回溯(二)

目录 1 39. 组合总和 2 22. 括号生成 3 79. 单词搜索 菜鸟做题&#xff0c;语言是 C&#xff0c;感冒快好版 关于对回溯算法的理解请参照我的上一篇博客&#xff1b; 在之后的博客中&#xff0c;我将只分析回溯算法中的 for 循环。 1 39. 组合总和 题眼&#xff1a;c…

15届蓝桥杯第二期模拟赛题单详细解析

文章目录 &#x1f9e1;&#x1f9e1;t1_求余&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t2_灌水&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t3_字符显示&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t4_区间最大和…

网络计算机

TCP/IP四层模型 应用层&#xff1a;位于传输层之上&#xff0c;主要提供两个设备上的应用程序之间信息交换的服务&#xff0c;它定义了信息交换的格式&#xff0c;消息会交给下一层传输层来传递。我们把应用层交互的数据单元称为报文。应用层工作在操作系统的用户态&#xff0…

YOLOv8_pose-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

Android 音频系统

导入 早期Linux版本采用的是OSS框架&#xff0c;它也是Unix及类Unix系统中广泛使用的一种音频体系。 ALSA是Linux社区为了取代OSS而提出的一种框架&#xff0c;是一个源代码完全开放的系统(遵循GNU GPL和GNU LGPL)。ALSA在Kernel 2.5版本中被正式引入后&#xff0c;OSS就逐步…

C语言:操作符详解(下)

目录 一、逗号表达式二、下标访问[ ]、函数调用()1. [ ]下标引用操作符2.函数调用操作符 三、结构成员访问操作符1.结构体(1) 结构的声明(2) 结构体变量的定义和初始化 2.结构成员访问操作符(1)结构体成员的直接访问(2)结构体成员的间接访问 四、操作符的属性&#xff1a;优先级…

Rudolf and the Ball Game

传送门 题意 思路 暴力枚举每一个妆台的转换条件 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<algorithm> #include<cmath> #include<queue> #include<cstring> #include<ma…

【Docker】容器的生态系统

Docker提供了一整套技术支持&#xff0c;包括核心技术、平台技术、支持技术。 核心技术 容器核心技术是指能让Container&#xff08;容器&#xff09;在host&#xff08;集群、主机&#xff09;上运行起来的那些技术。 1&#xff09;容器规范&#xff1a;OCI&#xff08;runt…