大气污染溯源算法及其技术实现

  • 污染溯源基础概念知识

大气污染溯源是指识别并追踪污染物的来源及其传输过程,以确定造成大气污染的根本原因和污染物传播路径的技术和方法。这对于制定有效的控制和减轻污染策略至关重要。大气污染的溯源主要涉及以下几个方面:

  1. 污染源识别:首先要确定污染源的类型,大气污染主要分为自然源(如火山爆发、沙尘暴、森林火灾产生的烟尘)和人为源(工业排放、汽车尾气、农业燃烧、燃煤电厂、建筑活动)。
  2. 化学与物理分析 - 通过对大气样本(如降水、颗粒物、气溶胶体、气体)进行化学成分分析,识别污染物的种类(如二氧化硫化物、氮氧化物、臭氧族化合物、重金属、挥发性有机化合物)。
  3. 同位素标记与分子标志物 - 使用稳定同位素和放射性同位素标记、分子标志物追踪特定污染物,比如13H、13C、14N等,可以揭示污染物的来源和传输路径。
  4. 模型模拟 - 利用大气传输模型模拟污染物的扩散过程,如高斯羽烟、WRF模型、CMAQS模型,结合气象数据(风向、温湿度、压力、风速、逆温层)模拟污染物的传播轨迹。
  5. 遥感技术 - 利用卫星遥感、无人机、航空遥感图像分析大气污染状况,监测大范围的污染分布,如PM2.5、NOx、O3浓度。
  6. 时空分析 - 结合时间序列分析和空间统计方法,如GIS分析,追踪污染变化趋势和空间分布,识别热点区域。
  7. 数据融合与大数据 - 利用多源数据(环境监测站、移动监测、社会经济数据)融合分析,通过AI、机器学习算法提高溯源精度。大气污染溯源是一项复杂的跨学科工作,需要环境科学、化学、气象学、计算机科学、地理信息科学等多领域知识的综合应用。通过这些技术手段,可以准确找到污染源头,为政策制定和环保措施提供科学依据,减少大气污染对人体健康和环境的负面影响。
  • 大气污染溯源流程
2.1站点污染物超标异常报警监测

大气污染物超标监测是环境监测中一个关键环节,它涉及到对空气中存在的各种有害物质浓度进行定期或连续监测,以确保其浓度保持在国家或地方规定的安全限值内。当监测结果显示污染物浓度超过这些限值时,即认为是超标。以下是对大气污染物监测超标处理的一般流程:

  1. 实时监测与数据收集:使用在线监测设备(如自动监测站、传感器网络)连续监测大气中的主要污染物,如二氧化硫氧化物(SOx)、氮氧化物(NOx)、颗粒物(PM2.5、PM10)、臭氧、异味等,实时收集数据。
  2. 数据验证与分析:对收集到的数据进行质量控制和校验,确保数据的准确性和可靠性。运用统计分析、趋势分析、时空分布等方法,识别超标原因。

3. 超标预警:设定阈值预警系统,一旦监测数据超过设定的阈值,立即触发预警,可视化展示实时高值预警站点。

2.2融合气象条件溯源

气象条件下的污染物高斯扩散原理:

环境科学中的高斯扩散模型在环境科学领域,高斯模型常用于模拟污染物在大气、水体或土壤中扩散的过程。高斯模型假设污染物的浓度分布遵循高斯分布,其中污染物的浓度随着距离源的距离增加而呈指数下降。这通常用于预测污染物的浓度场、评估环境影响、规划应急响应或制定污染控制策略。

统计学中的高斯分布在统计学中,高斯分布是一种连续概率分布,常用于描述自然界中许多随机变量的分布,如误差或测量误差。高斯分布由均值(μ)、方差(σ²)决定,公式为: [ f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}]在环境模型中,高斯分布用来描述污染物浓度的概率分布,即在某一特定点的污染物浓度值的概率,随着距离污染源的距离增加而按高斯分布规律衰减小。

高斯扩散方程在数学上,高斯扩散方程描述了这种浓度随时间变化的扩散过程,它是一个偏微分方程,通常形式为: [ \frac{\partial c}{\partial t} = D \nabla \Delta c] 其中 (c) 是浓度,(t) 是时间,(D) 是扩散系数,(\Delta) 是拉普朗克算子,代表空间二阶导数。编程语言(如.NET、Java等)中实现高斯模型,或是在GIS、气象、大气科学、医疗、警务等领域的应用;

示例应用验证

2.3污染溯源查找

风速小于1.5m/s查找周边25公里范围内企业

风速1.5m/s以上查找上下风口22.5度范围内企业

2.4相关性分析

相关性分析是统计学中一种重要的方法,用于研究两个或多个变量之间相互关系的性质,主要包括关系的方向(正相关或负相关)、强度以及是否存在线性。相关性分析不意味着因果关系,而是表明变量之间的伴随关系或关联度量度。以下是相关性分析的一些核心概念和方法:

相关系类型

•正相关:**当一个变量增加时,另一个变量也倾向于增加,如身高和体重。

•负相关:**一个变量增加时,另一个变量倾向于减少,如冰淇淋销量与气温。

•无相关:**两个变量变化无明显关联,或关系随机。

相关系强度

相关系数值(通常用r表示)衡量相关强度:

•|r ≈ 0:几乎无相关

•0.3 ≤ |r| < .5:低度相关

•.5 ≤ |r| < .8:中度相关

•|r| ≈ 1:高度相关

见方法

•Pearson相关系数:用于度量连续变量,假设数据近似正态分布。

•Spearman秩相关:连续或分类变量,不关心变量分布,关注排序关系。

•Kendall相关:非参数,适用于小样本量数据,排序数据。

•偏相关:控制其他变量影响,分析两变量间净相关。

应用

•气象:影响分析。

分析过程

  1. 数据收集:确保数据质量,代表性。
  2. 预处理:缺失值处理,异常值处理。
  3. 选择模型:根据数据类型选相关系数。
  4. 计算:软件执行分析。
  5. 解读:图表,理解r值。

相关性分析是理解和预测模型、决策支持科学假设的重要工具。

关联企业和企业站点进行溯源相关性分析(推最近26小时,相关性分析连续24小时)

2.4集成AI精准溯源

后台代码算法实现

try {
            Map<String, Object> kv = new HashMap<>();
            kv.put("labelMap", new HashMap<>());
            Map<String, String> headerMap = new HashMap<>();
            if(authorization==null)
                authorization="eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VyX2tleSI6IjlkNGZjN2VjLWRkMDEtNDE1MC1iMjRjLTZlMDFhM2EzOWMzYSIsInVzZXJuYW1lIjoiYWRtaW4ifQ.Yoxhd_UCCMiBPHHsFaFAZp2q0kQZ7guXR6oTA4wz3CNEYKIOZ1U-IOE2pxDzEzVG2N-CWI8S4arj3ffNXF5V8g";
            headerMap.put("Authorization", authorization);
            String[] confs= FileUtils.ReadTxt("peConfig.txt").split(";");
            JSONArray datalist = null;
            String url = confs[0] + "/stationExceed/changingTrends?contaminant=" + factor + "&end=" + end + "&start=" + start + "&stationIds=" + id;
            JSONObject obj = JSON.parseObject(HttpUtils.get(url,kv, headerMap));
            logger.warn("请求的地址为:"+url+"返回的数据为"+obj);
            datalist = (JSONArray)((JSONObject)((JSONArray)(((JSONObject)obj.get("data")).get("series"))).get(0)).get("values");
            double[] x = new double[datalist.size()-2];
            for (int i = datalist.size()-1,j=0; i > 1; i--,j++) {
                x[j] = TransferDouble(datalist.get(i));
            }
            String entIds = "";
            JSONArray datalist1 = null;

            String url1 = confs[0] + "/station/list?stationTypeDictIds="+stationTypeDictIds;
            JSONObject obj1 = JSON.parseObject(HttpUtils.get(url1,kv, headerMap));
//            logger.warn("请求的地址为:"+url1+"返回的数据为"+obj1);
            datalist1 = (JSONArray)obj1.get("data");

            JSONArray eArr = new JSONArray();
            String thetas = "";
            if(windSpeed>=1.5){
                for(int i = 0; i < datalist1.size(); i++){
                    double distancel=InterpolationUtils.GetDistance(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    if(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("id").equals(id)||distancel>100000){
                        continue;
                    }
                    double dgr=InterpolationUtils.getDegrees(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    if(dgr <0 ){
                        dgr += 360.0;
                    }
                    if(wd>=11.25&wd<=349.75){
                        if(Math.abs(dgr-wd)<=11.25){
                            eArr.add(datalist1.get(i));
                            entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                            thetas=thetas+String.valueOf(Math.abs(dgr-wd))+",";
                        }
                    }else {
                        if(dgr<11.25){
                            dgr += 360.0;
                        }
                        if(wd<11.25){
                            wd += 360.0;
                        }
                        if(Math.abs(dgr-wd)<=11.25){
                            eArr.add(datalist1.get(i));
                            entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                            thetas=thetas+String.valueOf(Math.abs(dgr-wd))+",";
                        }
                    }
                    if(eArr.size()==5){
                        break;
                    }

                }
                int ecount = eArr.size()+5;
                for(int i = 0; i < datalist1.size(); i++){
                    double distancel=InterpolationUtils.GetDistance(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    if(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("id").equals(id)||distancel>100000){
                        continue;
                    }
                    double dgr=InterpolationUtils.getDegrees(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    if(dgr <0 ){
                        dgr += 360.0;
                    }
                    double wd1=wd;
                    if(wd>180){
                        wd1=wd-180;
                    }else {
                        wd1=wd+180;
                    }
                    if(wd1>=11.25&wd1<=349.75){
                        if(Math.abs(dgr-wd1)<=11.25){
                            eArr.add(datalist1.get(i));
                            entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                            thetas=thetas+String.valueOf(Math.abs(dgr-wd))+",";
                        }
                    }else {
                        if(dgr<11.25){
                            dgr += 360.0;
                        }
                        if(wd1<11.25){
                            wd1 += 360.0;
                        }
                        if(Math.abs(dgr-wd1)<=11.25){
                            eArr.add(datalist1.get(i));
                            entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                            thetas=thetas+String.valueOf(Math.abs(dgr-wd1))+",";
                        }
                    }
                    if(eArr.size()==ecount){
                        break;
                    }

                }
            }else {
                for(int i = 0; i < datalist1.size(); i++){
                    if(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("id").equals(id)){
                        continue;
                    }
                    double dgr=InterpolationUtils.getDegrees(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    double ds=InterpolationUtils.GetDistance(lon,lat,TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lon")),TransferDouble(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("lat")));
                    if(ds <25000 ){
                        eArr.add(datalist1.get(i));
                        entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                        thetas=thetas+String.valueOf(Math.abs(dgr-wd))+",";
                    }
                    if(eArr.size()==10){
                        break;
                    }
                }
            }
            for(int i = 0; i < datalist1.size(); i++){
                if(((com.alibaba.fastjson.JSONObject)datalist1.get(i)).get("id").equals(id)){
                    eArr.add(datalist1.get(i));
                    entIds = entIds + ((JSONObject)datalist1.get(i)).get("id").toString() + ",";
                    thetas=thetas+"0,";
                    break;
                }
            }

            if(entIds.equals("")){
                return "";
            }
            JSONArray datalist2 = null;

            String url2 = confs[0] + "/stationExceed/changingTrends?contaminant=" + factor + "&end=" + end + "&stationIds=" + entIds.substring(0, entIds.length() - 2) + "&start=" + start;
            JSONObject obj2 = JSON.parseObject(HttpUtils.get(url2,kv, headerMap));
            logger.warn("请求的地址为:"+url2+"返回的数据为"+obj2);
            datalist2 = (JSONArray)((JSONObject)obj2.get("data")).get("series");
            double[] pearsonCorrelations=new double[datalist2.size()];
            double[] emissionCorrelations=new double[datalist2.size()];

            for(int i=0;i<datalist2.size();i++){
                JSONArray datalistL=(JSONArray)(((JSONObject)datalist2.get(i)).get("values"));
                double[] y1 = new double[datalistL.size()-2];
                double[] y2 = new double[datalistL.size()-2];
                double[] y3 = new double[datalistL.size()-2];
                for (int k = datalist.size()-1,j=0; k > 1; k--,j++) {
                    y1[j] = TransferDouble(datalistL.get(k));
                }
                for (int k = datalist.size()-2,j=0; k > 0; k--,j++) {
                    y2[j] = TransferDouble(datalistL.get(k));
                }
                for (int k = datalist.size()-3,j=0; k > -1; k--,j++) {
                    y3[j] = TransferDouble(datalistL.get(k));
                }
                double correlation1 = StatisticsUtil.correlation(x, y1, PEARSON_ID);
                double correlation2 = StatisticsUtil.correlation(x, y2, PEARSON_ID);
                double correlation3 = StatisticsUtil.correlation(x, y3, PEARSON_ID);
                if(Double.isNaN(correlation1)){
                    correlation1 = 0;
                }
                if(Double.isNaN(correlation2)){
                    correlation2 = 0;
                }
                if(Double.isNaN(correlation3)){
                    correlation3 = 0;
                }
                pearsonCorrelations[i]=correlation1;
                double q = y1[0];
                if(correlation2>pearsonCorrelations[i]){
                    pearsonCorrelations[i]=correlation2;
                    q = y2[0];
                }
                if(correlation3>pearsonCorrelations[i]){
                    pearsonCorrelations[i]=correlation3;
                    q = y3[0];
                }
                double lz=Math.sqrt(Math.pow(((JSONObject)eArr.get(i)).getDouble("lon")-lon,2)+Math.pow(((JSONObject)eArr.get(i)).getDouble("lat")-lat,2));
                double lX=lz*Math.cos(TransferDouble(thetas.split(",")[i])/180);
                double lY=lz*Math.sin(TransferDouble(thetas.split(",")[i])/180);
                emissionCorrelations[i]=InterpolationUtils.interpolation_GaussPlumeP(lX, lY,1, windSpeed, q, 0,"A");
                ((JSONObject) eArr.get(i)).put("emissionCorrelation",emissionCorrelations[i]*1000);
                ((JSONObject) eArr.get(i)).put("pearsonCorrelation",pearsonCorrelations[i]);
                ((JSONObject) eArr.get(i)).put("lineGeoField","[["+((JSONObject)eArr.get(i)).getString("lon")+","+((JSONObject)eArr.get(i)).getString("lat")+"],["+lon+","+lat+"]]");
            }
            return eArr.toJSONString();

        }catch (Exception e){
            return "";
        }

 如果对您有所帮助,请点赞打赏支持!

技术合作交流qq:2401315930

最后分享一下地图下载器设计及下载地址:

链接:https://pan.baidu.com/s/1RZX7JpTpxES-G7GiaVUxOw 
提取码:61cn

地图下载器代码结构设计及功能实现_地图下载管理器解析-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Facebook开户 | 如何检查公共主页的状态

想要了解你的Facebook公共主页的状态吗&#xff1f; Facebook公共主页是让广告主与粉丝互动、传播信息的绝佳平台&#xff0c;但是大家知道如何检查并维护自己的主页状态吗&#xff1f;别担心&#xff0c;Facebook提供了一系列简单易用的工具来帮助大家实现这一目标。 *Page Q…

RedHat9网络配置设计

目录 一、实验目的 二、实验过程 1、配置新网络接口 2、多网卡配置网络 3、网络接口的绑定&#xff0c;进行远程访问 4、配置网络接口的组合 一、实验目的 本次实验的目的是使用nmcli命令工具配置网络&#xff0c;ens160配置多个网卡&#xff0c;进行网络接口的绑定与组合…

一文搞懂Java8 Lambda表达式、方法引用

Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式&#xff0c;使用它设计的代码会更加简洁。通过Lambda表达式&#xff0c;可以替代我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数&#xff1b; 体验Lambda表达式 我们通过一个小例子来体验下L…

单元测试框架Pytest的基本操作

Pytest基本操作 1. 详解1.1 命名规则:1.2 自定义查找规则:1.3 3种运行方式1.4 执行顺序2. 断言2.1 定义2.2 断言的规则3. mark3.1 mark的作用3.2 mark的标记方式3.3 注册标签名3.4 skip跳过标记4. pytest的参数化5. pytest的夹具(fixture测试夹具)5.1. 作用5.2. 夹具应用场…

Java网络编程:UDP通信篇

目录 UDP协议 Java中的UDP通信 DatagramSocket DatagramPacket UDP客户端-服务端代码实现 UDP协议 对于UDP协议&#xff0c;这里简单做一下介绍&#xff1a; 在TCP/IP协议簇中&#xff0c;用户数据报协议&#xff08;UDP&#xff09;是传输层的一个主要协议之一&#xf…

LeetCode hot100-57-G

17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。不会&#xff0c;放IDEA里执行了一下大概理解了流程 …

《Ai企业知识库》-rasa-初步使用

根据上面的环境准备之后&#xff1a; 《Ai企业知识库》-模型实践-rasa开源学习框架-搭建简易机器人-环境准备(针对windows)-02-CSDN博客 基础的使用&#xff1a; rasa项目初始化&#xff1a; rasa init 首先进入目标文件夹 在dos窗口&#xff08;目标文件夹下&#xff09…

10Django项目--用户管理系统--改

对应视频链接点击直达 10Django项目--用户管理系统--改 对应视频链接点击直达改a&#xff0c;本质b&#xff0c;修改(更新) 页面相关a&#xff0c;index页面新增操作按钮b&#xff0c;修改(更新)页面c&#xff0c;路由和函数 OVER&#xff0c;不会有人不会吧不会的加Q139400651…

pdf只要其中一页 pdf只要第一页怎么办 pdf只要前几页怎么弄

在现代办公环境中&#xff0c;PDF文件已经成为我们日常工作中不可或缺的一部分。然而&#xff0c;有时我们可能只需要PDF文件中的某一页&#xff0c;而不是整个文件。这时&#xff0c;我们该如何操作才能只获取所需的那一页呢&#xff1f;本文将详细操作方法&#xff0c;帮助大…

全面盘点多模态融合算法及应用场景

关注作者&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕博&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&#xff0c;项目管理专业人士&#xff0c;上亿营收AI产品研发负责人 多…

工控一体机10.1寸显示器电容触摸屏(YA1308101JK)产品规格说明书

如果您对工控一体机有任何疑问或需求&#xff0c;或者对如何集成工控一体机到您的业务感兴趣&#xff0c;可移步控芯捷科技。 一、硬件功能介绍 YA1308101JK产品介绍&#xff1a; YA1308101JK搭载 Android10 主流操作系统&#xff0c;具有系统版本更高、占用内存更低、运行效率…

LeetCode583:两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 代码 解法1 /*dp[i][j]&#xff1a;以i-1为结尾的wrod1中有以j-1为尾的word2的个数为了让word1和word2相同&#xff0c;最少操作…

什么是老板和工程师都喜欢的FMEA?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在企业管理与工程技术领域&#xff0c;FMEA&#xff08;潜在失效模式与效应分析&#xff09;早已不仅仅是一个概念或工具&#xff0c;它更是一种思维方式和团队协作的精髓。那么&#xff0c;究竟什么才是老板和工程师都喜欢的FMEA呢&#xff…

学习笔记——动态路由协议——OSPF(OSPF网络类型2)

2、OSPF网络类型 常见链路层协议对应的默认网络类型 网络类型 描述 常见链路层协议 Hello报文间隔 报文类型 有无DR、BDR选举 P2P 点对点网络 HDLC、PPP、LAPB 10s 以组播方式发送OSPF报文 有 P2MP 点对多点网络 无 30s 以组播方式发送Hello报文&#xff0c;单…

YOLOv10最详细全面讲解2- 目标检测-环境搭建、训练自己的数据集

YOLOv10没想到出来的如此之快&#xff0c;作为一名YOLO的爱好者&#xff0c;以YOLOv5和YOLOv8的经验&#xff0c;打算出一套从数据集装备->环境配置->训练->验证->目标追踪全系列教程。请大家多多点赞和收藏&#xff01;&#xff01;&#xff01; 系列文章&#xf…

基于h5和大数据的游戏数据型网站-计算机毕业设计源码30844

摘 要 在目前的形势下&#xff0c;科技力量已成为我国的主要竞争力。而在科学技术领域&#xff0c;计算机的使用逐渐达到成熟&#xff0c;无论是从国家到企业再到家庭&#xff0c;计算机都发挥着其不可替代的作用&#xff0c;可以说计算机的可用领域遍及生活、工作的各个方面。…

TPM是如何平衡设备维护与生产需求的?

在当今快节奏的生产环境中&#xff0c;设备维护与生产需求之间的平衡成为了企业持续发展的关键所在。TPM&#xff08;全面生产维护&#xff09;作为一种先进的生产管理理念&#xff0c;为企业提供了实现这一平衡的有效路径。具体如深圳天行健精益管理咨询公司下文所述&#xff…

四川古力未来科技抖音小店畅享多重好处

在当今数字化浪潮席卷之下&#xff0c;四川古力未来科技抖音小店以其独特的魅力&#xff0c;正逐渐成为消费者们的新宠。作为融合了先进科技与便捷购物体验的创新平台&#xff0c;它不仅能够满足消费者的多样化需求&#xff0c;更在提升购物体验、优化服务流程等方面展现出了显…

【ai】livekit服务本地开发模式及example app信令交互详细流程

文档要安装git lfs 下载当前最新版本1.6.1 windows版本&#xff1a;启动dev模式 服务器启动 (.venv) PS D:\XTRANS\pythonProject\LIVEKIT> cd .\livekit_release\ (.venv) PS D:\XTRANS\pythonProject\LIVEKIT\livekit_release> lsDirectory: D:\XTRANS\pythonProject\L…

MyBatis入门——MyBatis的基础操作(2)

目录 一、打印日志 二、参数传递 常见错误&#xff1a;使用对象接受 小结&#xff1a; 三、增&#xff08;Insert&#xff09; 返回主键 四、删&#xff08;Delete&#xff09; 五、改&#xff08;Update&#xff09; 六、查&#xff08;Select&#xff09; 1、起别名…