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

大数据写入到Oracle数据库(批量插入数据)

    开发中经常遇到批量插入数据的需求,为了提高开发效率大多会使用ORM架构,个别之处 才会手写SQL,我们使用C#.NET Core5.0开发,所以优先选择了微软的EF。 

    但是EF原生没有批量操作功能,需要自己扩展或使用第三方的扩展,由于使用第三方扩展怕有风险,因此全部自己手写批量插入和更新。

    一段时间后数据多了,这里发现EF查询性能较差,2百万条数据就开始慢得不想用喽,后来换成SqlSugar(下面简称SS),SS的查询确实与原生SQL差不多,很好,很强大,但是它自带的批量插入就不太好用喽,测试后发现性能与官方宣传的差距太大。

 

本文实测并记录了Oracle 11g r2 单张表113列,批量插入1万条数据的结果:

方法一:

描述 :使用参数数组插入(如果看不懂我的描述,可以继续向下看源代码);

耗时:插入1万条1.729秒

 

方法二        :

描述 :使用OracleBulkCopy插入;

耗时:插入1万条2.672秒

方法三      :

描述 :使用sugar的Fastest.BulkCopy插入;

耗时:插入1万条4.532秒        

以上3个方法多次测试每次耗时略有差异,但基本一致 。

sugar的其他批量插入方法:

经测试只适合插入100条以内的数据,插入数据生成 INSERT ALL  INTO Table() VALUES()语句,个人觉得大量数据不适用,因为数据插入过多后代码会耗尽数据库服务器的cpu,导致无响应的问题

db.Insertable(list).ExecuteCommand();

下面这种就更不行了,是一条一条插入的:

db.Insertable(targetList).UseParameter().ExecuteCommand();

29d839c9e3144dd9ba775d07189d5e06.png

 

方法一代码:

以下代码根据项目手工编写,经测试性能是最高的,就本文测试的环境下远远高于sqlsugar的性能  。

/// <summary>/// 批量插入;要么全部成功要么全部失败/// </summary>/// <typeparam name="T"></typeparam>/// <param name="list"></param>/// <returns></returns>public static int BulkAdd<T>(List<T> list){Type model = typeof(T);List<PropertyInfo> pi = GetMappedField<T>();//生成数据源与参数OracleParameter[] paras = new OracleParameter[pi.Count];//用于存放数据for (int i = 0; i < pi.Count; i++){PropertyInfo p = pi[i];string name = p.Name;Type pt = p.PropertyType;//bool t1 = pt.IsGenericType;//Console.WriteLine($"序号:{i + 1};字段{ p.Name};类型{ pt.Name };IsGenericType:{pt.IsGenericType}");//if (name == "LLCLY")//{//    string name2 = p.Name;//}//此字段是否可可为空bool IsNullable = pt.Name == "Nullable`1";var colArr = new object[list.Count];for (var rowIndex = 0; rowIndex < list.Count; rowIndex++){object val = p.GetValue(list[rowIndex], null);//时间或整形不能为nullif (IsEnum(p)){//枚举单独处理colArr[rowIndex] = val == null ? DBNull.Value : val.GetHashCode();//Console.WriteLine($"序号:{i + 1};字段{ p.Name};类型{ pt.Name };值{val};hash:{val.GetHashCode()}");continue;}else{if (IsNullable){bool teste1 = pt.DeclaringType != null && pt.DeclaringType.IsEnum;bool teste2 = p.DeclaringType != null && p.DeclaringType.IsEnum;bool teste3 = pt.GetGenericArguments()[0].IsEnum;if (IsEnum(p)){colArr[rowIndex] = (val == null || !IsNullable) ? DBNull.Value : val.GetHashCode();}//Console.WriteLine($"序号:{i + 1};字段{ p.Name};类型{ pt.Name }-{pt.GetGenericArguments()[0].Name};值{val}");}else{colArr[rowIndex] = (val == null && !IsNullable) ? 0 : val;//Console.WriteLine($"序号:{i + 1};字段{ p.Name};类型{ pt.Name };值{val}");}}}//基本类型OracleDbType dt = OracleDbType.Varchar2;if (p.PropertyType.Namespace == "System"){if (IsNullable){//可为空时找真实基本类型pt = pt.GetGenericArguments()[0];}switch (pt.Name){case "String":dt = OracleDbType.Varchar2;break;case "Short":case "Int":case "Int16":dt = OracleDbType.Int16;break;case "Int32":dt = OracleDbType.Int32;break;case "Decimal":dt = OracleDbType.Decimal;break;case "Long":case "Int64":case "Double":dt = OracleDbType.Long;break;case "DateTime":dt = OracleDbType.Date;break;default:break;}}else if (p.PropertyType.IsEnum || pt.BaseType.Name == "Enum" || p.PropertyType.BaseType.Name == "Enum"){//枚举单独处理dt = OracleDbType.Int32;}paras[i] = new OracleParameter($":{name}", dt) { Value = colArr };}//获取表名string tableName = model.Name;TableAttribute[] arrDesc = (TableAttribute[])model.GetCustomAttributes(typeof(TableAttribute), false);if (arrDesc.Length > 0){//EF架构的表属性名tableName = arrDesc.First().Name;}else{//sqlsugar架构的表属性名SugarTable[] tableDesc = (SugarTable[])model.GetCustomAttributes(typeof(SugarTable), false);tableName = tableDesc.First().TableName;}//获取字段string[] propertys = pi.Select(o => o.Name).ToArray();string[] paras_propertys = propertys.Select(o => $":{o}").ToArray();int result = 0;string sql = $"INSERT INTO {tableName}({string.Join(",", propertys)}) VALUES({string.Join(",", paras_propertys)})";using (OracleConnection oracleConnection = new(Conn)){oracleConnection.Open();using (var command = oracleConnection.CreateCommand()){command.ArrayBindCount = list.Count;command.FetchSize = 1000;command.CommandText = sql.ToString();command.CommandType = CommandType.Text;command.Parameters.AddRange(paras);command.BindByName = true;result = command.ExecuteNonQuery();}}return result;}public static bool  IsEnum(PropertyInfo p) {Type pt = p.PropertyType;return pt.IsEnum|| pt.BaseType.Name == "Enum"//标记可为空的枚举  || (pt.GetGenericArguments().Length > 0 && pt.GenericTypeArguments.First().IsEnum);//|| (pt.GetGenericArguments().Length > 0 && pt.GetGenericArguments()[0].IsEnum);}/// <summary>/// 获取映射的字段/// </summary>/// <returns></returns>public static List<PropertyInfo> GetMappedField<T>() {Type model = typeof(T);List<PropertyInfo> proTemp = model.GetProperties(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public).ToList();//过滤出与表对应的字段List<PropertyInfo> pi = new List<PropertyInfo>();for (int i = 0; i < proTemp.Count; i++){PropertyInfo p = proTemp[i];string name = p.Name;Type pt = p.PropertyType;//是否泛型 如:List<User>   Int?  等//bool t1 = pt.IsGenericType;//Console.WriteLine($"序号:{i + 1};字段{ p.Name};类型{ pt.Name };IsGenericType:{pt.IsGenericType}");if (pt.BaseType == null){continue;}//被标记不与数据库映射的字段SugarColumnSugarColumn[] caArray = (SugarColumn[])p.GetCustomAttributes(typeof(SqlSugar.SugarColumn), true);if (caArray.Any(a => a.IsIgnore == true)){continue;}Object[] caArray2 =  p.GetCustomAttributes(typeof(NotMappedAttribute), true);if (caArray2.Length > 0){continue;}//基本类型if (p.PropertyType.Namespace == "System"){pi.Add(p);}else if (p.PropertyType.IsEnum || pt.BaseType.Name == "Enum" || p.PropertyType.BaseType.Name == "Enum"){pi.Add(p);}else{//不与数据库映射的字段continue;}}return pi;}

方法二代码:

 /// <summary>/// 批量插入数据/// [有人说,会自动创建多余的列,还可能多一些数据,且删不掉,但是我没遇到过]/// </summary>/// <param name="table">数据表</param>/// <param name="targetTableName">数据库目标表名</param>/// <returns></returns>public static  bool ExcuteBulkData(DataTable table, string targetTableName=null){bool result = false;using (OracleConnection conn = new(Conn)){conn.Open();using (OracleBulkCopy bulkCopy = new(Conn, OracleBulkCopyOptions.Default)){if (table != null && table.Rows.Count > 0){bulkCopy.DestinationTableName = targetTableName?? table.TableName;bulkCopy.BatchSize = table.Rows.Count;for (int i = 0; i < table.Columns.Count; i++){string col = table.Columns[i].ColumnName;bulkCopy.ColumnMappings.Add(col, col);}bulkCopy.BulkCopyOptions = new() {};bulkCopy.WriteToServer(table);result = true;}}}return result;}

方法三源代码:

引用过sqlsugar后只需要下面一行代码即可实现批量插入,但是性能有限 。

sugar.db.Fastest<CardDel>().BulkCopy(targetList);

 

总结:

1、方法一适合所有场景 ;方法二可根据情况选择,性能略低于第一种;sqlsugar的批量插入根据情况选择,性能并没有官网宣传的那么高,以上经验全部来源于个人实践后总结,供大家参考 。

2、平时要多自己写实例测试才能得到真实的结果,不能只看官网的宣传。

 

相关文章:

zabbix动作执行命令失效不起作用?

1. zabbix在web界面设置完主机组&#xff0c;主机&#xff0c;监控项&#xff0c;触发器&#xff0c;动作之后 监控项监控到了&#xff0c;触发器触发动作&#xff0c;但是执行的指令不起作用 流程 在zabbix-agent端将nginx服务down掉&#xff0c;zabbix会自动监控并执行重启的…...

【Linux】在Linux中执行命令ifconfig, 报错-bash:ifconfig: command not found解决方案

一、报错信息 ifconfig 报错-bash:ifconfig: command not found 同时&#xff0c;通过ip addr查看&#xff0c;也看不到IP信息 二、解决方案 找到ifcfg-ens0文件&#xff0c;此文件的目录在/etc/sysconfig/network-scripts目录下 命令&#xff1a;cd /etc/sysconfig/network…...

vue 使用 html2canvas 截屏并下载图片至本地(重点兼容ie浏览器)

安装html2canvas&#xff1a; npm install --save html2canvas注意&#xff1a;如果是某些原因不能npm的话就直接把依赖包拷贝到node_modules就可以啦 html&#xff1a; <div class"details-box" v-show"detailsFormShow"><div class"det…...

FastAPI vs Flask: 选择最适合您的 Python Web 框架

文章目录 1. 简介2. 安装和设置3. 路由和视图4. 自动文档生成5. 数据验证和序列化6. 性能和异步支持结论 在 Python Web 开发领域&#xff0c;FastAPI 和 Flask 是两个备受欢迎的选择。它们都提供了强大的工具和功能&#xff0c;但是在某些方面有所不同。本文将比较 FastAPI 和…...

【使用ChatGPT的API之前】OpenAI API提供的可用模型

文章目录 一. ChatGPT基本概念二. OpenAI API提供的可用模型1. InstructGPT2. ChatGPT3. GPT-4 三. 在OpenAI Playground中使用GPT模型-ing 在使用GPT-4和ChatGPT的API集成到Python应用程序之前&#xff0c;我们先了解ChatGPT的基本概念&#xff0c;与OpenAI API提供的可用模型…...

OpenDiary 24.5

我去!五月了我去!五月了 一亿年没更日寄了pixiv 100277433四月后日谈 鉴于整个四月基本没记日记,有必要开展一次考古活动 因为考古是比较困难的事情,所以想到什么就写什么了打了一整月的 p5r,四月下旬全都在高强度 p5r,每天都情不自禁打很长很长时间 一个月打了 93h 之多…...

大数据写入到Oracle数据库(批量插入数据)

开发中经常遇到批量插入数据的需求&#xff0c;为了提高开发效率大多会使用ORM架构&#xff0c;个别之处 才会手写SQL&#xff0c;我们使用C#.NET Core5.0开发&#xff0c;所以优先选择了微软的EF。 但是EF原生没有批量操作功能&#xff0c;需要自己扩展或使用第三方的扩展&am…...

【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字 p205 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/ 1. 题目介绍&#xff08;39. 数组中出现次数超过一半的数字&#xff09; 数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可…...

es-head插件插入查询以及条件查询(五)

es-head插件插入查询以及条件查询 1.es-head插件页面介绍 页面详细介绍 2.es-head查询语句 2.1.查询索引中的全部数据 curl命令交互&#xff0c;采用GET请求 语法格式&#xff1a; curl -XGET es地址:9200/索引名/_search?pretty [rootelaticsearch ~]# curl -XGET 192…...

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例&#xff1a; 1、安装anaconda&#xff1a;&#xff08;anaconda自带Python,安装了anaconda就不用再安装Python了&#xff09; 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…...

基于微信小程序的图书馆选座系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习&#xff08;…...

特斯拉4D成像毫米波雷达与木牛科技早期开源的产品几乎一模一样?

近日&#xff0c;在中欧智能网联汽车协会秘书长林示的组织下&#xff0c;中益基金投资总监王子文考察了全球毫米波雷达领跑者—木牛科技。 考察过程中&#xff0c;木牛科技COO王卫向两位详细介绍了木牛科技具备怎样的全球毫米波雷达领跑者的科技硬实力&#xff0c;以及木牛科技…...

[golang gin框架] 10.Gin 商城项目介绍

一.商城项目介绍 1.详细功能介绍图 2.数据库 ER 图 需要用到的数据表举例 二.MVC架构搭建以及执行流程分析 1.关于 MVC 模式的简单介绍 Gin 不是一个 MVC 的框架&#xff0c;所有的代码都可以写在 main.go 中。当我们的项目比较大的时候&#xff0c; 所有代码写在一个文件里面…...

python@调用系统命令行@os.system@subprocess@标准输入输出@sys.stdin@sys.stdout@input@print

文章目录python调用系统命令行os.system标准输入输出sys.stdinsys.stdoutinputprint概要os.systemdemoswindows命令解释器ComSpecsubprocessrecommended&#x1f388;基本用法demos标准输入输出sys.stdininput()sys.stdin.inputinput()交互模式小结sys.stdoutsys.stdout.wirte(…...

15-哈希表

哈希表&#xff08;Hash table&#xff09;&#xff0c;也称散列表&#xff0c;是一个能够将数值映射而成地址从而进行直接访问的数据结构&#xff0c;通过哈希表我们可以快速、迅捷地访问数据。 哈希表原理 假设我们拥有一个数x&#xff08;也称关键值&#xff0c;key&#…...

【超详细文件操作(三)】C语言

作者&#xff1a;日出等日落 专栏&#xff1a;C语言 只有流过血的手指&#xff0c;才能弹出世间的绝唱。 ——泰戈尔 目录 1.文件的随机读写 1.1 fseek函数 1.1.1 下面使用fseek函数 1.2 ftell函数 1.3 rewind函数 …...

【数据分析之道-基础知识(四)】字典

文章目录专栏导读1、字典简介2、字典创建3、字典访问4、字典修改5、字典添加6、字典删除7、字典内置函数专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN Python领域新星创作者&#xff0c;专注于分享python领域知识。 ✍ 本文录入于《数据分析之道》&#xff0c;本专栏…...

【计组】RAM的深入理解

一、存储机理 RAM的实现逻辑有种&#xff0c;分别是触发器和电容。 SRAM&#xff08;Static&#xff09;DRAM&#xff08;Dynamic&#xff09;存储方式触发器电容破坏性读出否&#xff08;触发器具有稳态&#xff0c;能够锁住0或1两种状态&#xff09;是&#xff08;电容需要…...

51单片机学习笔记_13 ADC

ADC 使得调节开发板上的电位器时&#xff0c;数码管上能够显示 AD 模块 采集电位器的电压值且随之变化。 开发板上有三个应用&#xff1a;光敏电阻&#xff0c;热敏电阻&#xff0c;电位器。 一般 AD 转换有多个输入&#xff0c;提高使用效率。 ADC 通过地址锁存与译码判断采…...

JVM 常量池

Class文件常量池 每个Class文件都会有一个单独的常量池,我们称为Class文件常量池,我们可以用javap命令反汇编Class文件,可以查看java编译器为我们生成的字节码。 CLass文件常量池存下内容&#xff1a; 字面量&#xff1a; 文本字符串(代码中用双引号包裹的字符串部分的值)被…...

Leetcode.1024 视频拼接

题目链接 Leetcode.1024 视频拼接 Rating &#xff1a; 1746 题目描述 你将会获得一系列视频片段&#xff0c;这些片段来自于一项持续时长为 time秒的体育赛事。这些片段可能有所重叠&#xff0c;也可能长度不一。 使用数组 clips描述所有的视频片段&#xff0c;其中 clips[i…...

彩色滤镜阵列CFA与Bayer滤镜

彩色滤镜阵列&#xff08;CFA&#xff09; 在彩色光电摄影中&#xff0c;可以通过分光&#xff0c;使用三个传感器分别捕获红、绿、蓝三个通道的颜色分量。但为了降低成本&#xff0c;绝大部分成像系统中采用单芯片 CMOS、CCD 传感器结合彩色滤镜阵列(Color Fiter Array&#…...

Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)

UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元&#xff0c;想着在读研期间做点对自己有意义的事&#xff0c;因此选择了动漫人物生成方向(呜呜呜&#xff0c;太感谢导师理解和支持了)…...

SpringBoot实现自己的日志服务

日志服务是作为软件开发架构的必备服务之一&#xff0c;一直都是我们所关注&#xff0c;所考虑的服务关键点&#xff0c;一个优秀的日志服务可以为项目的维护提供有力的支持&#xff0c;提高了系统的可靠性。 前言 如何设计一个优秀而又可靠的日志服务&#xff0c;是一直以来都…...

基于ssm流浪动物救助及领养管理系统(文档)024

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…...

maven安装及配置(IDEA版)简洁

1.下载Maven&#xff1a;您可以从Maven官方网站&#xff08;https://maven.apache.org/download.cgi&#xff09;下载适合您操作系统的Maven版本&#xff0c;并解压缩到您想要安装的位置。 2.配置环境变量&#xff1a;将Maven的bin目录添加到PATH环境变量中&#xff0c;这样…...

最全Linux应用开发解析(持续更新)

一、文件IO 1.1 文件描述符 在 Linux 操作系统中的一切都被抽象成了文件&#xff0c;那么一个打开的文件是如何与应用程序进行对应呢&#xff1f; 解决方案是使用文件描述符&#xff08;file descriptor&#xff0c;简称fd&#xff09;&#xff0c;当在进程中打开一个现有文…...

SpringBoot学习笔记下

文章目录1 接口架构风格 —RESTful1.1 REST1.2 在页面中或者ajax中&#xff0c;支持put&#xff0c;delete请求2 Spring Boot 集成 Redis2.1 redis起步依赖2.2 对比 StringRedisTemplate 和 RedisTemplate3 SpringBoot集成Dubbo3.1 看 SpringBoot继承Dubbo的文档3.2 公共项目7.…...

小米12/12S/13Pro手机MIUI14系统小黄鸟(HttpCanary)CA证书无法注入问题

很多用户获取ROOT是为了抓包&#xff0c;这里一般常常依赖一款名叫HttpCanary的软件&#xff0c;因软件 图标是一只小鸟&#xff0c;我们经常叫他小黄鸟。从日常使用上来看&#xff0c;黄鸟确实有抓包获取数据等 功能&#xff0c;也在多个手机上实践成功&#xff0c;网上相关教…...

SpringCloud学习笔记(四)Docker

一、Docker如何解决依赖的兼容问题 将应用的libs&#xff08;函数库&#xff09;、Deps&#xff08;依赖&#xff09;、配置与应用一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离 二、Dokcer如何解决开发、测试、生…...

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件&#xff0c;或者是批量更改数量&#xff0c;还是组件里面的一些标识&#xff0c;当处理这些批量数据处理的业务时&#xff0c;BOM的批量更改一个想到的就是CS20&#xff0c;但是CS20当BOM需要替换的时候就不是很适用。新增的组…...

基于OpenTelemetry实现可观测性-Part 4 Collector

译注&#xff1a;这是一个系列&#xff0c;共分成6部分&#xff0c;这是第4部分。翻译自&#xff1a;https://trstringer.com/otel-part4-collector/在上一篇博文中&#xff0c;我们讨论了如何使用 SDK 和追踪器提供者从进程获取遥测数据。存在很多不同类型的导出器&#xff0c…...

STM32学习(十二)

软件定时原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xff08;延时&#xff09;功能。 不精准&#xff1a;函数调用压栈进栈需要耗费额外的时间&#xff1b;流水线使得程序执行时间不确定。CPU死等。 定时器定时原理 使用精准的时基&#xff0c;通过…...

Python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计 1 网上商城系统 这是一个基于pythonvue开发的商城网站&#xff0c;平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能…...

组装式交付-云巧 知多少

组装式交付-云巧 知多少组装式交付背景云巧什么是云巧呢&#xff1f;云巧的优势丰富的组件&#xff0c;提升代码复用全面的集成方式&#xff0c;支持模块化组装云原生标准&#xff0c;预集成阿里云产品云巧的构成云巧组件云巧资产市场云巧生态云巧工坊总结组装式交付背景 一直…...

「解析」牛客网-华为机考企业真题 41-60

又是一年春招时&#xff0c;有幸收到华为自动驾驶算法岗&#xff0c;之前刷题不多&#xff0c;在此汇总下牛客网的真题&#xff0c;主要采用Python编写&#xff0c;个人觉得语言只是实现工具而已&#xff0c;并不是很关键&#xff0c;Python简洁易懂&#xff0c;更加适合算法工…...

RPA机器人在信息化管理、报告生成实现自动化成为生态环境局新宠

随着人们对环境和自然资源的保护意识逐渐增强&#xff0c;我国在环保领域的投入力度也越来越大。然而&#xff0c;环境保护任务的繁重与复杂&#xff0c;也意味着环保执法机关需要更加高效、精准的手段来完成任务。这时&#xff0c;“机器人流程自动化”&#xff08;简称RPA&am…...

关于线程池你了解些什么?

前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...

基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优

目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...

低代码开发:助力企业高效实现数字转型的一大利器

随着互联网、移动互联网、物联网等技术的迅速普及和应用&#xff0c;数字经济时代的到来&#xff0c;人们的生产、消费和生活方式都发生了巨大的变化&#xff0c;而传统企业也面临着巨大的挑战和机遇。 在数字经济时代&#xff0c;数据成为一种重要的生产要素。数据成为一种重要…...

centos7安装mysql并添加密码

网上找的教程有的是不能用&#xff0c;有的是改密码有问题&#xff0c;下面这个教程亲测可用 #安装wget,wget是Linux中的一个下载文件的工具 yum -y install wget #使用wget下载文件 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-com…...

大数据未来发展怎么样?

就目前情况来看&#xff0c;大数据行业前景不错薪资待遇好&#xff0c;也有越来越多的人选择大数据行业&#xff0c;各大名企对于大数据人才需求不断上涨。 大数据从业领域很宽广&#xff0c;不管是科技领域还是食品产业&#xff0c;零售业等都是需要大数据人才进行大数据的处…...

图书管理系统(考试样品)

一、执行下面的sql CREATE DATABASE bms CHARACTER SET utf8mb4;USE bms;DROP TABLE IF EXISTS tb_book;CREATE TABLE tb_book (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,desc TEXT ,type_id INT DEFAULT NULL,PRIMARY KEY (id) ) ; INSERT INTO tb_book VA…...

树与二叉树(图示超详解哦)

这里写目录标题引言树与二叉树树的概念及结构树的表示二叉树特殊的二叉树二叉树的性质二叉树的表示顺序结构链式结构总结引言 在前面的一段时间里&#xff0c;我们学习了顺序表、链表、栈、队列的知识。其实这些顺序结构都是线性的&#xff0c;它们的逻辑结构都是一条线穿起来…...

【vue3】数据绑定,动态渲染class与style

数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式&#xff08;style&#xff09;。因为 class 和 style 都是 attribute&#xff0c;我们可以和其他 attribute 一样使用 v-bind 将它们和动态的字符串绑定。但是&#xff0c;在处理比较复杂的绑定时&#xff0c…...

axios使用

参考地址&#xff1a;https://github.com/axios/axios html CDN <script src"https://cdn.jsdelivr.net/npm/axios1.1.2/dist/axios.min.js"></script>或者 <script src"https://unpkg.com/axios1.1.2/dist/axios.min.js"></scrip…...

countup.js 数字动画

countup.js 数字动画1. 安装2. 参数3. Vue组件封装3.1 组件代码3.2 调用方式1. 安装 npm i countup.js2. 参数 项目Valuetargetstring, HTMLElement ,HTMLInputElement - id of html element, input, svg text element, or DOM element reference where counting occursendV…...

10个问题带你全面理解Linux性能优化

1. 为什么面试官喜欢考察性能优化问题&#xff1f; 面试官考察性能优化问题的目的可能并不是要你设计一个性能很高的系统&#xff0c;而是为了全方位考察一个面试者的知识背景和实践能力。 1) 性能优化涉及的知识面既需要深度&#xff0c;同时又需要一定的广度 从深度上来说…...

php使用yield处理大数据文件

1.概述 yield和return有点像&#xff0c;它是一个生成器&#xff0c;对PHP应用的性能有非常大的影响&#xff0c; 只有在调用的时候才会执行&#xff0c;并不产生多余的值&#xff0c;比如读取一个很大的文件或者计算大量的数据时&#xff0c;如果直接读取很有可能内存就爆了&a…...

数据更新 | CnOpenData法拍房数据

法拍房数据 一、数据简介 法拍房&#xff0c;即“法院拍卖房产”&#xff0c;是被法院强制执行拍卖的房屋 。当债务人&#xff08;业主&#xff09;无力履行借款合约或无法清偿债务时&#xff0c;而被债权人经司法程序向法院申请强制执行&#xff0c;将债务人名下房屋拍卖&…...

(一)kafka从入门到精通之初识kafka

一、发布订阅系统 在学习kafka之前&#xff0c;我们先来看看什么是发布订阅系统。 概念 数据的发送者不会直接把消息发送给接收者&#xff0c;这是发布与订阅消息系统的一个特点。发布者以某种方式对消息进行分类&#xff0c;接受者订阅它们&#xff0c;以便接受特定类型的消…...

stata17中double类型与float类型的区别(变量的存储格式和显示格式、数值运算出错、转换数值格式、字符型数据转换为数值型数据)

double类型与float类型区别 参考&#xff1a;变量的存储格式和显示格式 数值运算出错 因为营业总收入和其他业务收入都是字符型数据&#xff0c;所以使用real函数将其转换为数值型数据。 gen 主营业务收入 real(营业总收入)-real(其他业务收入)结果如下图所示&#xff1a;计…...

【JVS低代码配置平台】基于树形字典的纯配置实现左树右表

左树右表是我们在业务管理系统中常见的业务形态&#xff0c;如下图所示&#xff0c;树形结构用于多层级的数据的展示&#xff0c;列表页作为对应数据的横向行级展现。 实现树形的配置有两种模式&#xff0c;一种是根据树形字典配置&#xff08;简单导入即可&#xff09;&#x…...

Spring Boot实现Redis同数据源动态切换DB | Spring Cloud 31

一、前言 在某些业务场景下&#xff0c;需要多访问同一Redis数据源下的不同DB。 在Redis中默认提供了16个数据库&#xff08;序号0-15&#xff09;&#xff0c;默认Redis使用的是db 0。 此章节基于spring-boot-starter-data-redis模块&#xff0c;实现了Redis同数据源动态切换…...

[技术经理]02 什么是技术经理?

目录01什么是技术经理02总结01什么是技术经理 什么是技术经理&#xff1f; 我用一句话概括为&#xff1a;专业技术团队的管理者。 技术经理&#xff0c;是一种管理职位&#xff0c;通常是在软件开发、互联网等科技公司或技术团队中担任。 技术经理的职责&#xff0c;**是管理…...

油炸食品的最佳用油:米糠油

摘要&#xff1a;本文详细介绍了米糠油作为最佳油炸用油的各种特点&#xff0c;但更重要的是建议采用真空油炸方法&#xff0c;更能发挥米糠油的优势。 油炸食品是我们日常生活中常见的美味&#xff0c;人们普遍的共识是“油炸食品虽然好吃&#xff0c;但不适合多吃”&#xff…...

为什么DasViewer加载矢量图层kml文件显示加载失败?

答&#xff1a;加载KML之前需要先添加实景三维模型&#xff0c;kml的展开依赖实景三维模型的坐标系文件&#xff0c;由cad生成的 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大…...

【优选算法】—Leetcode—11—— 盛最多水的容器

1.题目 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#…...

linux上如何排查JVM内存过高?

怎么排查JVM内存过高&#xff1f; 前言&#xff1a; 想必工作一两年以后的同学都会逐渐面临到&#xff0c;jvm等问题&#xff0c;但是可能苦于无法熟练的使用一些工具&#xff1b;本文将介绍几个比较常用分析工具的使用方法&#xff0c;带着大家一步步定位分析问题。 1、top 查…...

Mamba结构的Demo源码解读

文章目录 前言一、mamba结构构建辅助函数解读1、dataclass方法解读2、Norm归一化LayerNormRMSNormRMSNorm源码 3、nn.Parameter方法解读 二、mamba原理二、mamba模型构建1、主函数入口源码解读2、Mamba类源码解读 三、ResidualBlock的mamba结构源码解读四、MambaBlock构成Resid…...

什么牌子的洗地机质量最好?四款耐用高分产品推荐

洗地机具备了吸尘、擦拭、除菌等多种功能&#xff0c;可以一次完成多种清洁任务&#xff0c;帮助用户更高效地保持家居整洁&#xff0c;节省时间和精力&#xff0c;备受人们的喜爱。但是怎么挑选到优质的洗地机一直是大家关注的问题。今天&#xff0c;笔者将结合自己在家电行业…...

优化理论复习——(四)

无约束优化专题&#xff0c;主要使用了序列无约束极小化方法 无约束优化问题相关解法 最优性条件 互补松弛条件 对于一般约束优化问题&#xff1a; 整理一下就是著名的kkt条件&#xff1a; 这里只需要注意一点&#xff0c;那就是互补松弛条件只对不等式约束有限制。 然后是…...

FastSpeech 2整体结构、模块配置及优化

微软亚洲研究院和微软 Azure 语音团队联合浙大人工智能联合研究院提出了FastSpeech 的改进版 FastSpeech 2&#xff0c;它抛弃了 Teacher-Student 知识蒸馏框架降低训练复杂度&#xff0c;直接用真实的语音数据作为训练目标避免信息损失&#xff0c;同时引入了更精确的时长信息…...

试用NXP官方的UDS bootloader

文章目录 1.前言2.资料获取2.1 MCU例程 2.2 开发环境2.3 上位机2.4 硬件 3.工程修改3.1 boot工程修改 3.2 app工程修改4.测试情况5.例程分享 1.前言 最近很多客户在开发S32K系列MCU时咨询是否可以提供基于UDS协议的bootloader。本文以S32K144为例&#xff0c;介绍如何使用NXP官…...

HTML5 Canvas发光Loading动画源码

源码介绍 之前我们分享过很多基于CSS3的Loading动画效果&#xff0c;相信大家都很喜欢。今天我们要来分享一款基于HTML5 Canvas的发光Loading加载动画特效。Loading旋转图标是在canvas画布上绘制的&#xff0c;整个loading动画是发光3D的视觉效果&#xff0c;HTML5非常强大。 …...

2.外卖点餐系统(Java项目 springboot)

目录 0.系统的受众说明 1.系统功能设计 2.系统结构设计 3.数据库设计 3.1实体ER图 3.2数据表 4.系统实现 4.1用户功能模块 4.2管理员功能模块 4.3商家功能模块 4.4用户前台功能模块 4.5骑手功能模块 5.相关说明 新鲜运行起来的项目&#xff1a;如需要源码数据库…...

视频号小店常见问题解答,新手做店最关心的问题!

大家好&#xff0c;我是电商小V 视频号小店可以说是今年最热门的一个风口期项目&#xff0c;想去做的人也是日益增多&#xff0c;也是凭借着自身的流量吸引了很多玩家的入驻&#xff0c; 但是对于很多玩家&#xff0c;视频号小店就是一个全新的项目&#xff0c;一个全新的领域&…...

Vue 问题集

Q:MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 connection listeners added. Use emitter.setMaxListeners() to increase limit A: 可能由多个问题导致&#xff0c;我的是情况1 1. vue.config.js - devServer 代理设置只能添加10个&#…...