当前位置: 首页 > 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>…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

篇章一 论坛系统——前置知识

目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构​编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...

Faiss vs Milvus 深度对比:向量数据库技术选型指南

Faiss vs Milvus 深度对比&#xff1a;向量数据库技术选型指南 引言&#xff1a;向量数据库的时代抉择 在AI应用爆发的今天&#xff0c;企业和开发者面临着如何存储和检索海量向量数据的重大技术选择。作为当前最受关注的两大解决方案&#xff0c;Faiss和Milvus代表了两种不同…...