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

MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字

一、💛并发基本概念

 

并发的基本意思:

什么是并发呢?简单的理解就是同一时间执行

服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。

如果提交两个事务,改不同的表还没啥影响,假如要改相同的表,这时候可能会出现麻烦。

二、💙 脏读

由并发产生的第一个问题——脏读,什么是脏读呢?就是有脏数据(就是临时的数据,不是最终数据)就比如说我改完代码,还没有提交数据库,你正在读,这样你读的数据和我改的数据有偏差,也就是你读的都是错误的数据就叫脏读👴

那么我们如何解决脏读呢?🌸🌸🌸

我们要给写操作加锁,当事务A正在写的时候,事务B就不可以读取了,知道事务A写完为止,提交其他事务的事务B,才可以读取事务A

引入了写加锁,降低了两个事务的并发性,提高了隔离性。降低了效率,却提高了稳定性

 三、 💜不可重复读

有并发产生的第二个问题——不可重复读,什么是不可重复读呢?

同一个读取数据的事务中,可能会涉及到多次读的操作,多次读的数据不同

比如:我在写代码,同学们正在看我写代码,他们看的时候我正在修改,然后我就继续修改完事,同学们是一直都在执行看我代码这一个事务,在第一眼看和后面看的数据结果不同。

那我们该怎么解决不可重复读呢?🐬 🐬 🐬 

那就是给读操作加锁~(写操作加锁:是我写的时候别人不可以读。给读操作加锁是:别人在执行读的过程的时候,我可以再开一个事务去写,在第二个事务开始之前,其他读事务,读到的就是旧数据,第二个事务提交之后,别人再读就是新版数据了)

注意哈脏读和不可重复读肯容易混: 🍎 🍎 🍎

不可重复读是一个事务要多次读取,然后有个小傻子在啪啪的改,写完你第一次读和第二次读的数据不一样。

脏读是一个小帅哥在写完了,但是还没交,这时候一个小傻子过来读取数据,发现的读的数据全是错的数据,毕竟我还没交,交完才是正确的。

四、💚 幻读

我在写代码的时候已经加上了读加锁,写加锁的情况下 

同学们正在看的事务,我没修改,我只是又增加了一些东西,(读着读着多个类啥的这种问题)

我们该如何解决幻读呢,办法只有一个了,就是串行化~彻底放弃并发性,执行事务,所有的事务都是一个挨着一个多串行执行(执行完一个事务,再去执行下一个事务)并发性最低的,隔离性是最高的,效率是最低的,数据也是最可靠的

MySQL提供了四种事务隔离级别

1.read uncommitted.  (存在脏读,不可重复读,幻读三种可能)隔离性最小,并发性最大,数据可靠性最低,效率最高

2.read committed(存在写加锁了)解决了脏读,其他两个还存在,隔离性上升,并发性下降,可靠性上升,效率下降

3.repeatable read(解决了脏读,不可重复读)给写,读加锁,存在幻读,隔离性上升,并发性下降,可靠性上升,效率下降

4.serializable :事务彻底串行执行,全解决了问题,隔离性最大,并发性最小,数据可靠性最高,效率最低


最终弹-完结篇最后一块

一、Java的JDBC编程🍭

通过java代码来操作数据库

 实际开发中,我们大部分都是使用代码去操作数据库(但是代码也是要依赖SQL的)

一个成熟的数据库一般都会提供有一些API(Application Programming interface 应用程序编程接口(广义概念))

提到接口大家肯定会想起来这个interface接口(特指java语法中一个特殊的语法格式(狭义上的概念)java中的interface也是一种提供API的方式

成熟的数据库会提供一些API供你使用(API有一些类的方法)

每个数据库的API制作者是不同的人,设计出来的API当然也会相差很多,这样往往会提高学习成本(于是老大哥java站出来了),让他们遵守一套统一的API,让所有数据库按照一样的方式进行操作使用(只要掌握一套API,就可以操作各种数据库)

数据库厂商会提供对应的代码,这个代码就完成针对API的转换

API:写了一个程序,这个程序要给比尔提供哪些功能,这些功能往往是通过函数/类这样的方式提供的(如之前的Random,Scanner,ArrayList,String)

那么java如何使用JDBC操作MySQL呢

1.创建一个项目,正常java的创建操作

2.引入MySQL的驱动包作为项目依赖,把驱动包下载出来,导入到项目中

那我们该如何下载呢

方法一:Oracle的官网去下载(但是不是很好用)

方法二:github

方法三:中央仓库->圈子里面的功德活佛,把知名的知名的第三方库都收放到一起了,知道去中央仓库找    https://mvnrepository.com/(牛逼的佬) ♐️  ♐️  ♐️ 

 搜索完mysql之后,选择第二个,点击那个头像图片

 翻地下寻找对应的版本,大版本相同就行,5.1就可以

点击那个版本号5.19

选择下面图的jar包就行,下载完事

☀️🌤☀️🌤☀️🌤☀️🌤

 💫💫💫下一步,点击这里面的Directory ,名字可以写lib,把jar包,复制,粘贴,粘贴到lib里面.

🌕🌕🌕

粘贴后,点击这个,然后点击OK就行。 

🌗🌗🌗此时准备工作完成了,可以接下来写代码了

首先之前一直说Demo:例子, 以后找一些第三方库软件啥的可以用demo。

JDBC的流程(固定套路记住可以)

步骤一:创建数据源->数据库服务器是在哪里

你在之前自己建一个student(id name)的表

DataSource dataSource=new MysqlDataSource();

步骤二:(向上转型)

((MysqlDataSource)dataSource).setUrl();

给大家回顾一下,向上转型,和向下转型

向上转型:子类对象转成父类。

向下转型:父类对象转成子类。

实际上⚠️⚠️

MysqlDataSource dataSource=new MysqlDataSource();

dataSource.setUrl()其实就可以了 🌚 🌚 🌚

🍅🍅🍅

当然这么做肯定有他们的道理。

按照最初的转型方法,本质是希望让MysqlDataSource,不要扩散到代码的其他部分··思想其实是想降低mysql驱动包,和我们项目之间的耦合关系,避免后续更换数据库,成本过大。

Url:唯一资源定位符,通常用Url来描述网络上一个资源的位置,mysql本体是服务器~,相当于是网络上的资源,里面写的东西直接复制贴贴就行,不用背

"jdbc:mysql://127.0.0.1:3306/java108?characterEncoding=utf8&&useSSL=false"

这个是括号里面需要填写的,下面我们来分析一下每一块都是什么意思。

jdbc:mysql♈️url是一个什么类型的url ,这里的意思就是jdbc:mysql就是说给jdbc的mysql使用的。

127.0.0.1 ♉️网络上的一个地址~是通过这一串数字来表示的,这一串数字通常是4个部分,各个部分取值范围是0-255,4个部分使用,分割

3306♍️ 端号,区分主机上的应用程序

java108♋️数据库名字

characterEncoding=utf8&&useSSL=false; 统一字符集utf8

statement:是把sql原封不动的直接发给数据库服务器,数据库服务器自己解析sql

PreparedStatement,会先在客户端这边初步解析SQL(验证语法,是否正确),此时服务器就不用做这些检查了,从而降低服务器负担,另外,本身SQL存在String类型,JDBC提供statement对象,让我们把String对象转换成statement,再发给服务器执行,但是一般会使用PrparedStatement(预处理的语句)对象代替statement.

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Main {public static void main(String[] args) throws SQLException {//1.创建数据源DataSource dataSource=new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108?characterEncoding=utf8&&useSSL=false");
//设置你的数据库名字的密码,不是随便设置哈,你自己的数据库密码,root也是不能乱设置((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("lcl15604007179");//2.和数据库服务器建立链接,认准第二个sql的Connection,第一个com那个是mysql的驱动包Connection connection=dataSource.getConnection();//构造SQL语句String sql=" insert student values(1,'张三') ";PreparedStatement statement=connection.prepareStatement(sql);//4.执行SQL语句int n=statement.executeUpdate();     //返回有几行收到了影响System.out.println(n);//5.释放必要资源,关闭链接 -注意关闭顺序,后创建的先关闭statement.close();          //创建的对象都会持有一些计算机硬件,软件中资源connection.close();}
}

 🔯Java有垃圾回收机制,自动释放内存,但是资源不仅仅是内存啊,所以才需要关闭,资源需要手动关闭。

但是我们这么写,写出来的数据是写死的什么张三啥的,那我们该如何在动态的让用户输入数据呢,

PreparedStatement提供了我们占位符的写法,可以更优雅,更安全的解决上述问题

?是一个占位符,后续PreparedStatement会把变量数值带入到?中,

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);System.out.println("输入姓名");String name=scanner.nextLine();System.out.println("输入数字");int id=scanner.nextInt();//1.创建数据源DataSource dataSource=new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108?characterEncoding=utf8&&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("lcl15604007179");//2.和数据库服务器建立链接Connection connection=dataSource.getConnection();//3.构造SQL语句String sql=" insert student values(?,?) ";PreparedStatement statement=connection.prepareStatement(sql);statement.setInt(1,id);          //表示的是第一个问号statement.setString(2,name);     //表示的是第二个问号//4.返回受影响的行数int n=statement.executeUpdate();System.out.println(n);//5.释放必要资源,关闭链接statement.close();connection.close();}
}

🔜就算是插入,修改,删除也没有区别,删除就是轻微的改动,下面的setString和SQL语句而已

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scanner=new Scanner(System.in);System.out.println("输入姓名");String name=scanner.nextLine();//1.创建数据源DataSource dataSource=new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108?characterEncoding=utf8&&useSSL=false");((MysqlDataSource)dataSource).setUser("root");((MysqlDataSource)dataSource).setPassword("lcl15604007179");//2.和数据库服务器建立链接Connection connection=dataSource.getConnection();//3.构造SQL语句String sql=" delete  from student  where  name=? ";PreparedStatement statement=connection.prepareStatement(sql);statement.setString(1,name);//4.执行SQL语句int n=statement.executeUpdate();System.out.println(n);
//5关闭statement.close();connection.close();}
}

❤❤❤但是查询有说法,,一下就是查询要注意的操作。

 //4.执行查询操作,要使用excuteQuery,返回值是一个ResultSet类型的对象,表示了一个表格
      ResultSet resultSet = statement.executeQuery();
//遍历结果集合
      while (resultSet.next()) 

这个意思是什么捏?💝💝💝想象有一个光标,这个光标的初始情况下,指向第一行记录的前一个位置~

如果每次调用next为true,取这行数据 ,取完这一行,下次又要调用next,此时要是返回false,循环结束

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;public class Main {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);//1.创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108?characterEncoding=utf8&&useSSL=false");((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("lcl15604007179");//2.和数据库服务器建立链接Connection connection = dataSource.getConnection();//构造SQL语句String sql = " select * from student   ";PreparedStatement statement = connection.prepareStatement(sql);//4.执行查询操作,要使用excuteQuery,返回值是一个ResultSet类型的对象,表示了一个表格ResultSet resultSet = statement.executeQuery();
//遍历结果集合while (resultSet.next()) {
//获取这一行学号列int id = resultSet.getInt("id");
//获取姓名列String name = resultSet.getString("name");System.out.println("id: " +  id + ",name: " + name);}statement.close();connection.close();}
}

当然里面也可以包含一些占位符。💖💖💖

public class Main {public static void main(String[] args) throws SQLException {Scanner scanner = new Scanner(System.in);int student_id=scanner.nextInt();//1.创建数据源DataSource dataSource = new MysqlDataSource();((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/java108? characterEncoding=utf8&&useSSL=false");             ((MysqlDataSource) dataSource).setUser("root");((MysqlDataSource) dataSource).setPassword("lcl15604007179");//2.和数据库服务器建立链接Connection connection = dataSource.getConnection();//注意哈,这里面是id不是你写的那个变量student_idString sql = " select * from student   where id = ? ";PreparedStatement statement = connection.prepareStatement(sql);statement.setInt(1,student_id);//4.执行SQL语句ResultSet resultSet = statement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");System.out.println("id: " +  id + ",name: " + name);}
//5.注意关闭的时候result也需要关闭resultSet.close();statement.close();connection.close();}
}

💟💟💟复杂的SQL也是这么写都支持(create table ,drop table都可以就是不推荐)

DataSource

Connection

PreparedStatement

Result

四大天王,通过这四个类,就可以基本吃遍JDBC编程

大佬会对JDBC进行进一步封装,数据库操作框架(虽然项目中不一定使用JDBC,一般都用框架代替,但是JDBC是不变化的,框架是可变的,基于JDBC去使用框架

相关文章:

MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字

一、💛并发基本概念 并发的基本意思: 什么是并发呢?简单的理解就是同一时间执行 服务器同一时刻,给多个客户端提供服务~~,这两个客户端都可以给服务器提交事务。 如果提交两个事务,改…...

⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态

前置知识:类和对象 参考书籍:《C Primer 第五版》 目录 什么是面向过程?什么是面向对象? 一、封装 1、封装的含义以及如何实现封装 1.1 访问限定符(访问说明符) 1.2 什么是封装? 2、封装的优点…...

Element的el-select下拉框多选添加全选功能

先看效果图 全选: 没有选中时: 选中部分: 作者项目使用的是vue3写法,如果是vue2的自己转换一下 html代码: js代码: 拓展 另一种方法,如果不想使用勾选框,可以试试下面的方…...

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错:AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…...

MySQL 数据库 binLog 日志的使用

一、概念与作用 binlog(二进制日志)是MySQL数据库中的一种日志类型。它记录了数据库中的所有更改操作,例如插入、更新、删除操作。binlog以二进制形式存储,因此可以更高效地进行读取和解析。 binlog通常用于以下几个方面&#x…...

Apache Storm入门介绍之三分钟看懂Apache Storm

文章目录 0.前言1. 什么是 Apache Storm?1.1. Nimbus1.2. Zookeeper1.3. Supervisor1.4. Worker1.5 集群模式下各组件职责 2. 核心概念2.1基本架构和任务模型2.2 工作流程 3. 源码地址3.1. 代码结构3.1. 核心模块介绍 4. Storm入门实例0.创建java工程并引入依赖1. 创…...

RF手机天线仿真介绍(三):调谐开关分析

目录 简介调谐开关RON、COFF的影响分析不同位置的调谐器件coff影响分析不同位置的调谐器件Ron影响分析Coff引起谐振的解决示例 调谐开关VPEAK分析调谐开关Vpeak示例 简介 孔径调谐能调节天线的电长度,可将其谐振点切换到所需支持的工作频段。天线孔径调谐器通过改变…...

Ubuntu20.04 + QT5.14.2 + VTK8.2.0 + PCL 1.10 环境配置

目录 Ubuntu20.04 QT5.14.2 VTK8.2.0 PCL 1.10 环境配置一、VTK 编译和安装1、库依赖:2、下载资源:[下载VTK8.2.0](https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz)3、编译:4、安装5、qtcreator 配置编译的libQVTKWidgetPlugin.…...

GPT Prompt编写的艺术:如何提高AI模型的表现力

随着AI技术的迅速发展,人工智能模型变得越来越强大,能够协助我们完成各种任务。然而,如何更好地利用AI的能力仍然存在很大的探索空间。在与AI进行交互的过程中,我们主要依赖于Prompt,不管是直接与大模型交互&#xff0…...

Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)

1. 安装准备 安装前需要下载一些必须的依赖项。 不同版本opencv依赖会有不同,具体见官网opencv安装 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-…...

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面

前言: Cloud Studio是一个在线的云集成开发环境(IDE),可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具,例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具…...

自监督去噪:Noise2Self原理分析及实现 (Pytorch)

文章地址:https://arxiv.org/abs/1901.11365 代码地址: https://github.com/czbiohub-sf/noise2self 要点   Noise2Self方法不需要信号先验信息、噪声估计信息和干净的训练数据。唯一的假设就是噪声在测量的不同维度上表现出的统计独立性,而真实信号表现出一定的…...

docker容器学习笔记1

docker容器是干什么用的 docker就是一个轻量级的虚拟机,是一个容器,隔离性好,能够确保环境的统一,有效利用系统资源,轻松迁移和拓展。简单的可以理解为容器就是一个小型功能齐全的虚拟机。 实际上是如何使用的呢&…...

线程魔法:用Spring Boot的@Async注解开启异步世界

在现代的应用程序开发中,异步调用已成为提高性能和响应性的重要策略之一。通过使用Spring Boot框架,我们可以轻松地实现异步调用,从而在处理请求时能够同时执行耗时的操作,如发送电子邮件、处理文件等,而不会阻塞主线程…...

面试热题(接雨水问题)

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 我们看到题的第一步,永远是对入参进行判断 public int trap(int[] height) {if (height null) {return 0;}...} 但是我们想想看,接…...

Meta AI研究团队新AI模型: Llama 2 大语言模型

Llama是Facebook Research团队开发的基础语言模型集,旨在提供广泛的语言理解能力。它基于转换器架构,参数范围从7B到65B。通过使用Llama模型,研究人员和开发人员可以构建更先进的自然语言处理系统。您可以在GitHub上找到相关的代码和资源&…...

CSS水平垂直居中

1.利用定位 margin:auto 2.flex布局 3.grid布局 一、利用positionmargin:auto <style>.outer {position: relative; /*父亲相对定位*/width: 200px;height: 200px;background-color: red;}.inner {position: absolute; /*儿子绝对定位*/top: 0;bottom: 0;left: 0;ri…...

Yolov8-pose关键点检测:模型部署篇 | yolov8-pose.onnx python推理

💡💡💡本文解决什么问题:Yolov8-pose关键点训练得到的模型转换成onnx格式在python下完成推理 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_63774211/category_12398833.html ✨✨✨手把手教你从数据标记到生成适合Yolov8-pose的yolo数据集; 🚀🚀�…...

Linux中提示No such file or directory解决方法

说明&#xff1a; 在linux下&#xff0c;./xxx.sh执行shell脚本时会提示No such file or directory。但shell明明存在&#xff0c;为什么就是会提示这个呢&#xff1f; 这种其实是因为编码方式不对&#xff0c;如你在win下编辑sh&#xff0c;然后直接复制到linux下面 实现&…...

Sklearn-使用SVC对iris数据集进行分类

Sklearn-使用SVC对iris数据集进行分类 iris数据集的加载训练svc模型输出混淆矩阵和分类报告使用Pipeline管道完成固定操作不使用Pipeline使用Pipeline 使用SVC对iris数据集进行分类预测 涉及内容包含&#xff1a; 数据集的加载,训练集和测试集的划分训练svc模型,对测试集的预测…...

5步终极方案:用MediaCreationTool.bat轻松绕过Windows 11硬件限制

5步终极方案&#xff1a;用MediaCreationTool.bat轻松绕过Windows 11硬件限制 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.ba…...

ClearerVoice-Studio惊艳效果展示:同一段嘈杂录音三模型增强对比

ClearerVoice-Studio惊艳效果展示&#xff1a;同一段嘈杂录音三模型增强对比 1. 语音增强技术的新标杆 在音频处理领域&#xff0c;嘈杂环境下的语音清晰度提升一直是个技术难题。无论是线上会议的背景噪音&#xff0c;还是街头采访的环境杂音&#xff0c;都会严重影响语音的…...

5分钟快速上手MelonLoader:Unity游戏模组加载器完全指南

5分钟快速上手MelonLoader&#xff1a;Unity游戏模组加载器完全指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 想为你最爱…...

Display Driver Uninstaller:显卡驱动冲突的终极解决方案与系统净化技术伙伴

Display Driver Uninstaller&#xff1a;显卡驱动冲突的终极解决方案与系统净化技术伙伴 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display…...

造相-Z-Image-Turbo亚洲美女LoRA:无需代码,Web界面直接操作

造相-Z-Image-Turbo亚洲美女LoRA&#xff1a;无需代码&#xff0c;Web界面直接操作 1. 产品概述与核心价值 造相-Z-Image-Turbo亚洲美女LoRA镜像是一个开箱即用的AI图片生成解决方案&#xff0c;专为需要高质量亚洲风格人像的用户设计。这个镜像将先进的Z-Image-Turbo模型与精…...

宇树科技冲刺“人形机器人第一股”:出货量全球第一,专利短板却成IPO最大隐忧?

宇树科技冲刺“人形机器人第一股”&#xff1a;出货量全球第一&#xff0c;专利短板却成IPO最大隐忧&#xff1f;成都余行10000项创新清单&#xff0c;助机器人企业构建与出货量匹配的专利护城河2026年3月&#xff0c;宇树科技正式递交科创板IPO招股书&#xff0c;拟募资42.02亿…...

智能合约安全

智能合约安全&#xff1a;区块链世界的守护盾 在区块链技术快速发展的今天&#xff0c;智能合约已成为去中心化应用&#xff08;DApp&#xff09;的核心组件。由于其不可篡改的特性&#xff0c;一旦部署后漏洞难以修复&#xff0c;智能合约的安全问题显得尤为重要。从The DAO事…...

反思机制的工程实现:让AI Agent在失败后自我诊断与优化执行路径

反思机制的工程实现:让AI Agent在失败后自我诊断与优化执行路径 摘要/引言 开门见山 你有没有遇到过这种场景吗? 在过去半年里,各大公司的RAG Agent团队、AI助手产品经理和智能客服运营团队,可能都踩过同一个令人头疼的坑——**Agent在复杂任务面前“死脑筋”的情况:明明…...

计算机毕业设计:Python城市空气质量智能监测与预测平台 Django框架 可视化 数据分析 Prophet时间序列 大数据 大模型 深度学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

Cesium与3D瓦片技术赋能WebGIS楼盘分户全流程解析

1. Cesium与3D瓦片技术入门指南 第一次接触Cesium.js时&#xff0c;我被它强大的3D地理可视化能力震撼到了。作为一个基于JavaScript的开源库&#xff0c;Cesium能够直接在浏览器中呈现逼真的3D地球和地图场景。而3D瓦片技术&#xff08;3D Tiles&#xff09;则是实现大规模3D地…...