- 浏览: 325772 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
lzy.je:
期待FSF的!1985.10成立到现在GNU有多少大牛的项目数 ...
改变IT世界的11大Apache开源技术 -
dotaking:
7、8不了解
改变IT世界的11大Apache开源技术
Spring让LOB数据操作变得简单易行
本文讲解了在 Spring 中处理 LOB 数据的原理和方法,对于 Spring JDBC 以及 Spring 所集成的第三方 ORM 框架(包括 JPA、Hibernate 和 iBatis)如何处理 LOB 数据进行了阐述。
概述
LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型,前者用于存储大块的二进制数据,如图片数据,视频数据等,而后者用于存储长文本数据,如论坛的帖子内容,产品的详细描述等。值得注意的是:在不同的数据库中,大对象对应的字段类型是不尽相同的,如 DB2 对应 BLOB/CLOB,MySql 对应 BLOB/LONGTEXT,SqlServer 对应 IMAGE/TEXT。需要指出的是,有些数据库的大对象类型可以象简单类型一样访问,如 MySql 的 LONGTEXT 的操作方式和 VARCHAR 类型一样。在一般情况下, LOB 类型数据的访问方式不同于其它简单类型的数据,我们经常会以流的方式操作 LOB 类型的数据。此外,LOB 类型数据的访问不是线程安全的,需要为其单独分配相应的数据库资源,并在操作完成后释放资源。最后,Oracle 9i 非常有个性地采用非 JDBC 标准的 API 操作 LOB 数据。所有这些情况给编写操作 LOB 类型数据的程序带来挑战,Spring 在 org.springframework.jdbc.support.lob 包中为我们提供了相应的帮助类,以便我们轻松应对这头拦路虎。 Spring 大大降低了我们处理 LOB 数据的难度。首先,Spring 提供了 NativeJdbcExtractor 接口,您可以在不同环境里选择相应的实现类从数据源中获取本地 JDBC 对象;其次,Spring 通过 LobCreator 接口取消了不同数据厂商操作 LOB 数据的差别,并提供了创建 LobCreator 的 LobHandler 接口,您只要根据底层数据库类型选择合适的 LobHandler 进行配置即可。 本文将详细地讲述通过 Spring JDBC 插入和访问 LOB 数据的具体过程。不管是以块的方式还是以流的方式,您都可以通过 LobCreator 和 LobHandler 方便地访问 LOB 数据。对于 ORM 框架来说,JPA 拥有自身处理 LOB 数据的配置类型,Spring 为 Hibernate 和 iBatis 分别提供了 LOB 数据类型的配置类,您仅需要使用这些类进行简单的配置就可以像普通类型一样操作 LOB 类型数据。 本地 JDBC 对象 当您在 Web 应用服务器或 Spring 中配置数据源时,从数据源中返回的数据连接对象是本地 JDBC 对象(如 DB2Connection、OracleConnection)的代理类,这是因为数据源需要改变数据连接一些原有的行为以便对其进行控制:如调用 Connection#close() 方法时,将数据连接返回到连接池中而非将其真的关闭。 在访问 LOB 数据时,根据数据库厂商的不同,可能需要使用被代理前的本地 JDBC 对象(如 DB2Connection 或 DB2ResultSet)特有的 API。为了从数据源中获取本地 JDBC 对象, Spring 定义了 org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor 接口并提供了相应的实现类。NativeJdbcExtractor 定义了从数据源中抽取本地 JDBC 对象的若干方法:
有些简单的数据源仅对 Connection 对象进行代理,这时可以直接使用 SimpleNativeJdbcExtractor 实现类。但有些数据源(如 Jakarta Commons DBCP)会对所有的 JDBC 对象进行代理,这时,就需要根据具体的情况选择适合的抽取器实现类了。下表列出了不同数据源本地 JDBC 对象抽取器的实现类:
下面的代码演示了从 DBCP 数据源中获取 DB2 的本地数据库连接 DB2Connection 的方法: 清单 1. 获取本地数据库连接
在 ① 处我们通过 DataSourceUtils 获取当前线程绑定的数据连接,为了使用线程上下文相关的事务,通过 DataSourceUtils 从数据源中获取连接是正确的做法,如果直接通过 dateSource 获取连接,则将得到一个和当前线程上下文无关的数据连接实例。 JdbcTemplate 可以在配置时注入一个本地 JDBC 对象抽取器,要使代码 清单 1 正确运行,我们必须进行如下配置: 清单 2. 为 JdbcTemplate 装配本地 JDBC 对象抽取器
在获取 DB2 的本地 Connection 实例后,我们就可以使用该对象的一些特有功能了,如使用 DB2Connection 的特殊 API 对 LOB 对象进行操作。
LobCreator
虽然 JDBC 定义了两个操作 LOB 类型的接口:java.sql.Blob 和 java.sql.Clob,但有些厂商的 JDBC 驱动程序并不支持这两个接口。为此,Spring 定义了一个独立于 java.sql.Blob/Clob 的 LobCreator 接口,以统一的方式操作各种数据库的 LOB 类型数据。因为 LobCreator 本身持有 LOB 所对应的数据库资源,所以它不是线程安全的,一个 LobCreator 只能操作一个 LOB 数据。 为了方便在 PreparedStatement 中使用 LobCreator,您可以直接使用 JdbcTemplate#execute(String sql,AbstractLobCreatingPreparedStatementCallback lcpsc) 方法。下面对 LobCreator 接口中的方法进行简要说明:
LobHandler LobHandler 接口为操作 BLOB/CLOB 提供了统一访问接口,而不管底层数据库究竟是以大对象的方式还是以一般数据类型的方式进行操作。此外,LobHandler 还充当了 LobCreator 的工厂类。 大部分数据库厂商的 JDBC 驱动程序(如 DB2)都以 JDBC 标准的 API 操作 LOB 数据,但 Oracle 9i 及以前的 JDBC 驱动程序采用了自己的 API 操作 LOB 数据,Oracle 9i 直接使用自己的 API 操作 LOB 数据,且不允许通过 PreparedStatement 的 setAsciiStream()、setBinaryStream()、setCharacterStream() 等方法填充流数据。Spring 提供 LobHandler 接口主要是为了迁就 Oracle 特立独行的作风。所以 Oracle 必须使用 OracleLobHandler 实现类,而其它的数据库统一使用 DefaultLobHandler 就可以了。Oracle 10g 改正了 Oracle 9i 这个异化的风格,终于天下归一了,所以 Oracle 10g 也可以使用 DefaultLobHandler。 下面,我们来看一下 LobHandler 接口的几个重要方法:
在 Spring JDBC 中操作 LOB 数据
插入 LOB 数据 假设我们有一个用于保存论坛帖子的 t_post 表,拥有两个 LOB 字段,其中 post_text 是 CLOB 类型,而 post_attach 是 BLOB 类型。下面,我们来编写插入一个帖子记录的代码: 清单 3. 添加 LOB 字段数据
首先,我们在 PostJdbcDao 中引入了一个 LobHandler 属性,如 ① 所示,并通过 JdbcTemplate#execute(String sql,AbstractLobCreatingPreparedStatementCallback lcpsc) 方法完成插入 LOB 数据的操作。我们通过匿名内部类的方式定义 LobCreatingPreparedStatementCallback 抽象类的子类,其构造函数需要一个 LobHandler 入参,如 ② 所示。在匿名类中实现了父类的抽象方法 setValues(PreparedStatement ps,LobCreator lobCreator),在该方法中通过 lobCreator 操作 LOB 对象,如 ③、④ 所示,我们分别通过字符串和二进制数组填充 BLOB 和 CLOB 的数据。您同样可以使用流的方式填充 LOB 数据,仅需要调用 lobCreator 相应的流填充方法即可。 我们需要调整 Spring 的配置文件以配合我们刚刚定义的 PostJdbcDao。假设底层数据库是 Oracle,可以采用以下的配置方式: 清单 4. Oracle 数据库的 LobHandler 配置
大家可能已经注意到 nativeJdbcExtractor 和 oracleLobHandler Bean 都设置为 lazy-init="true",这是因为 nativeJdbcExtractor 需要通过运行期的反射机制获取底层的 JDBC 对象,所以需要避免在 Spring 容器启动时就实例化这两个 Bean。 LobHandler 需要访问本地 JDBC 对象,这一任务委托给 NativeJdbcExtractor Bean 来完成,因此我们在 ① 处为 LobHandler 注入了一个 nativeJdbcExtractor。最后,我们把 lobHandler Bean 注入到需要进行 LOB 数据访问操作的 PostJdbcDao 中,如 ② 所示。 如果底层数据库是 DB2、SQL Server、MySQL 等非 Oracle 的其它数据库,则只要简单配置一个 DefaultLobHandler 就可以了,如下所示: 清单 5. 一般数据库 LobHandler 的配置
DefaultLobHandler 只是简单地代理标准 JDBC 的 PreparedStatement 和 ResultSet 对象,由于并不需要访问数据库驱动本地的 JDBC 对象,所以它不需要 NativeJdbcExtractor 的帮助。您可以通过以下的代码测试 PostJdbcDao 的 addPost() 方法: 清单 6. 测试 PostJdbcDao 的 addPost() 方法
这里,有几个知识点需要稍微解释一下:AbstractDependencyInjectionSpringContextTests 是 Spring 专门为测试提供的类,它能够直接从 IoC 容器中装载 Bean。此外,我们使用了 ClassPathResource 加载图片资源,并通过 FileCopyUtils 读取文件的数据。ClassPathResource 和 FileCopyUtils 都是 Spring 提供的非常实用的工具类。
以块数据方式读取 LOB 数据
您可以直接用数据块的方式读取 LOB 数据:用 String 读取 CLOB 字段的数据,用 byte[] 读取 BLOB 字段的数据。在 PostJdbcDao 中添加一个 getAttachs() 方法,以便获取某一用户的所有带附件的帖子: 清单 7. 以块数据访问 LOB 数据
通过 JdbcTemplate 的 List query(String sql, Object[] args, RowMapper rowMapper) 接口处理行数据的映射。在 RowMapper 回调的 mapRow() 接口方法中,通过 LobHandler 以 byte[] 获取 BLOB 字段的数据。 以流数据方式读取 LOB 数据 由于 LOB 数据可能很大(如 100M),如果直接以块的方式操作 LOB 数据,需要消耗大量的内存资源,对应用程序整体性能产生巨大的冲击。对于体积很大的 LOB 数据,我们可以使用流的方式进行访问,减少内存的占用。JdbcTemplate 为此提供了一个 Object query(String sql, Object[] args, ResultSetExtractor rse) 方法,ResultSetExtractor 接口拥有一个处理流数据的抽象类 org.springframework.jdbc.core.support.AbstractLobStreamingResultSetExtractor,可以通过扩展此类用流的方式操作 LOB 字段的数据。下面我们为 PostJdbcDao 添加一个以流的方式获取某个帖子附件的方法: 清单 8. 以流方式访问 LOB 数据
通过扩展 AbstractLobStreamingResultSetExtractor 抽象类,在 streamData(ResultSet rs) 方法中以流的方式读取 LOB 字段数据,如 ④ 所示。这里我们又利用到了 Spring 的工具类 FileCopyUtils 将输入流的数据拷贝到输出流中。在 getAttach() 方法中通过入参 OutputStream os 接收 LOB 的数据,如 ① 所示。您可以同时覆盖抽象类中的 handleNoRowFound() 方法,定义未找到数据行时的处理逻辑。 在 JPA 中操作 LOB 数据 在 JPA 中 LOB 类型的持久化更加简单,仅需要通过特殊的 LOB 注释(Annotation)就可以达到目的。我们对 Post 中的 LOB 属性类型进行注释: 清单 9. 注释 LOB 类型属性
postText 属性对应 T_POST 表的 POST_TEXT 字段,该字段的类型是 LONTTEXT,并且非空。JPA 通过 @Lob 将属性标注为 LOB 类型,如 ①-1 和 ②-1 所示。通过 @Basic 指定 LOB 类型数据的获取策略,FetchType.EAGER 表示非延迟加载,而 FetchType.LAZY 表示延迟加载,如 ①-2 和 ②-2 所示。通过 @Column 的 columnDefinition 属性指定数据表对应的 LOB 字段类型,如 ①-3 和 ②-3 所示。
在 Hibernate 中操作 LOB 数据
下面我们使用 Spring 的 UserType 为 Post 配置 Hibernate 的映射文件,如 清单 10 所示: 清单 10 . LOB 数据映射配置
postText 为 String 类型的属性,对应数据库的 CLOB 类型,而 postAttach 为 byte[] 类型的属性,对应数据库的 BLOB 类型。分别使用 Spring 所提供的相应 UserType 实现类进行配置,如 ① 和 ② 处所示。 在配置好映射文件后,还需要在 Spring 配置文件中定义 LOB 数据处理器,让 SessionFactory 拥有处理 LOB 数据的能力: 清单 11 . 将 LobHandler 注入到 SessionFactory 中
在一般的数据库(如 DB2)中,仅需要简单地使用 HibernateTemplate#save(Object entity) 等方法就可以正确的保存 LOB 数据了。如果是 Oracle 9i 数据库,还需要配置一个本地 JDBC 抽取器,并使用特定的 LobHandler 实现类,如 清单 4 所示。 使用 LobHandler 操作 LOB 数据时,需要在事务环境下才能工作,所以必须事先配置事务管理器,否则会抛出异常。 在 iBatis 中操作 LOB 数据 iBatis 为处理不同类型的数据定义了一个统一的接口:com.ibatis.sqlmap.engine.type.TypeHandler。这个接口类似于 Hibernate 的 UserType。iBatis 本身拥有该接口的众多实现类,如 LongTypeHandler、DateTypeHandler 等,但没有为 LOB 类型提供对应的实现类。Spring 在 org.springframework.orm.ibatis.support 包中为我们提供了几个处理 LOB 类型的 TypeHandler 实现类:
当结果集中包括 LOB 数据时,需要在结果集映射配置项中指定对应的 Handler 类,下面我们采用 Spring 所提供的实现类对 Post 结果集的映射进行配置。 清单 12 . 对 LOB 数据进行映射
当 iBatis 引擎从结果集中读取或更改 LOB 类型数据时,都需要指定处理器。我们在 ① 和 ② 处为读取 LOB 类型的数据指定处理器,相似的,在 ③ 和 ④ 处为插入 LOB 类型的数据也指定处理器。 此外,我们还必须为 SqlClientMap 提供一个 LobHandler: 清单 13. 将 LobHandler 注入到 SqlClientMap 中
处理 LOB 数据时,Spring 要求在事务环境下工作,所以还必须配置一个事务管理器。iBatis 的事务管理器和 Spring JDBC 事务管理器相同,此处不再赘述。 小结 本文就 Spring 中如何操作 LOB 数据进行较为全面的讲解,您仅需简单地配置 LobHandler 就可以直接在程序中象一般数据一样操作 LOB 数据了。对于 ORM 框架来说,Spring 为它们分别提供了支持类,您仅要使用相应的支持类进行配置就可以了。因此您会发现在传统 JDBC 程序操作 LOB 头疼的问题将变得轻松了许多。 |
发表评论
-
CGLIB-Spring的一种反射机制
2009-08-04 00:12 972Spring 在进行反射时候主要有两种策略,一种是直接用JDK ... -
Spring声明式事务管理及事务嵌套
2009-08-04 00:43 838Spring声明式事务管理及事务嵌套:Spring动态代理的一 ... -
CGLIB-Spring的一种反射机制
2009-08-04 00:12 1018Spring 在进行反射时候主要有两种策略,一种是直接用JDK ... -
Spring声明式事务管理及事务嵌套
2009-08-04 00:43 1852Spring声明式事务管理及 ... -
怎样使用Spring发邮件?
2009-04-20 14:32 822怎样使用Spring发邮件? 2007-07- ... -
spring框架说明
2009-04-20 14:35 800spring框架 2007-06-27 15:18: ... -
spring执行定时任务
2009-04-20 14:37 760spring执行定时任务 2007-07-19 1 ... -
Spring的依赖关系(JAR)
2009-04-20 14:46 745Spring的依赖关系(JAR) 2007-06- ... -
使用Spring来创建一个简单的工作流引擎
2009-04-20 14:48 900使用Spring来创建一个简 ... -
spring各种邮件发送
2009-06-19 17:00 1090Spring邮件抽象层的主要包为org.springframe ... -
用Spring快速开发jms应用(JBOSS服务器)
2009-06-19 17:01 797异步进程通信是面向服 ... -
使用Spring来创建一个简单的工作流引擎
2009-06-19 17:06 884spring是支持控制反转编 ... -
Spring XML配置十二个最佳实践
2009-06-19 17:12 760在这篇文章里,对于Spri ... -
基于Spring的Hibernate Search全文检索功能示例
2009-06-19 17:14 791数据库:Oracle 9iJDBC驱动:OJDBC14开发环境 ... -
spring 事务管理
2009-07-08 17:33 1174关键字: 事务 spring Spring框架引人注目 ... -
为什么要用spring?
2009-07-08 18:16 835为什么要用spring, 下面 ...
相关推荐
智慧园区,作为现代城市发展的新形态,旨在通过高度集成的信息化系统,实现园区的智能化管理与服务。该方案提出,利用智能手环、定制APP、园区管理系统及物联网技术,将园区的各类设施与设备紧密相连,形成一个高效、便捷、安全的智能网络。从智慧社区到智慧酒店,从智慧景区到智慧康养,再到智慧生态,五大应用板块覆盖了园区的每一个角落,为居民、游客及工作人员提供了全方位、个性化的服务体验。例如,智能手环不仅能实现定位、支付、求助等功能,还能监测用户健康状况,让科技真正服务于生活。而智慧景区的建设,更是通过大数据分析、智能票务、电子围栏等先进技术,提升了游客的游玩体验,确保了景区的安全有序。 尤为值得一提的是,方案中的智慧康养服务,展现了科技对人文关怀的深刻体现。通过智慧手环与传感器,自动感知老人身体状态,及时通知家属或医疗机构,有效解决了“空巢老人”的照护难题。同时,智慧生态管理系统的应用,实现了对大气、水、植被等环境要素的实时监测与智能调控,为园区的绿色发展提供了有力保障。此外,方案还提出了建立全域旅游营销平台,整合区域旅游资源,推动旅游业与其他产业的深度融合,为区域经济的转型升级注入了新的活力。 总而言之,这份智慧园区建设方案以其前瞻性的理念、创新性的技术和人性化的服务设计,为我们展示了一个充满智慧与活力的未来园区图景。它不仅提升了园区的运营效率和服务质量,更让科技真正融入了人们的生活,带来了前所未有的便捷与舒适。对于正在规划或实施智慧园区建设的决策者而言,这份方案无疑提供了一份宝贵的参考与启示,激发了他们对于未来智慧生活的无限遐想与憧憬。
MES制造企业生产过程执行系统:全方位协同管理,提升生产效率与质量的信息化管理平台,MES制造企业生产过程执行系统:全面协同管理,提升生产效率与质量管理水平,mes制造企业生产过程执行系统,是一套面向制造企业车间执行层的生产信息化管理系统。 MES 可以为企业提供包括制造数据管理、计划排产管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心 设备管理、工具工装管理、采购管理、成本管理、项目看板管理、生产过程控制、底层数据集成分析、上层数据集成分解等管理模块,为企业打造一个扎实、可靠、全面、可行的制造协同管理平台 ,MES制造企业生产过程执行系统;生产信息化管理;制造数据管理;计划排产管理;生产调度管理;库存管理;质量管理;人力资源管理;设备管理;数据集成分析,MES制造企业生产执行系统:全面协同管理平台助力制造企业高效运营
内容概要:本文介绍了C++编程中常见指针错误及其解决方案,并涵盖了模板元编程的基础知识和发展趋势,强调了高效流操作的最新进展——std::spanstream。文章通过一系列典型错误解释了指针的安全使用原则,强调指针初始化、内存管理和引用安全的重要性。随后介绍了模板元编程的核心特性,展示了编译期计算、类型萃取等高级编程技巧的应用场景。最后,阐述了C++23中引入的新特性std::spanstream的优势,对比传统流处理方法展现了更高的效率和灵活性。此外,还给出了针对求职者的C++技术栈学习建议,涵盖了语言基础、数据结构与算法及计算机科学基础领域内的多项学习资源与实战练习。 适合人群:正在学习C++编程的学生、从事C++开发的技术人员以及其他想要深入了解C++语言高级特性的开发者。 使用场景及目标:帮助读者掌握C++中的指针规则,预防潜在陷阱;介绍模板元编程的相关技术和优化方法;使读者理解新引入的标准库组件,提高程序性能;引导C++学习者按照有效的路径规划自己的技术栈发展路线。 阅读建议:对于指针部分的内容,应当结合实际代码样例反复实践,以便加深理解和记忆;在研究模板元编程时,要从简单的例子出发逐步建立复杂模型的理解能力,培养解决抽象问题的能力;而对于C++23带来的变化,则可以通过阅读官方文档并尝试最新标准特性来加深印象;针对求职准备,应结合个人兴趣和技术发展方向制定合理的学习计划,并注重积累高质量的实际项目经验。
VSC下垂控制策略仿真模型:基于MATLAB 2014a及更高版本的全面支持与应用实践,VSC下垂控制策略仿真模型MATLAB版本支持及功能解析,VSC下垂控制策略仿真模型,支持MATLAB2014a及以上版本 ,VSC下垂控制策略; 仿真模型; MATLAB 2014a及以上版本; 核心关键词,MATLAB 2014a及以上版VSC下垂控制策略仿真模型研究
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装信息技术知识赛系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,信息技术知识赛系统的有效运用可以帮助管理人员准确快速地处理信息。 信息技术知识赛系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现信息技术知识赛系统的功能。其中管理员管理用户,新闻公告。 信息技术知识赛系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,信息技术知识赛系统都可以轻松应对。 关键词:信息技术知识赛系统;SpringBoot框架,系统分析,数据库设计
蓝桥杯是全国范围内具有广泛影响力的编程竞赛,对于准备参加蓝桥杯 Python 组比赛的同学来说,系统化的学习和针对性的训练是取得好成绩的关键。本项目是一份详细的蓝桥杯 Python 组准备建议,涵盖基础知识、算法与数据结构、刷题策略、实战演练以及心态调整等方面。
Simulink与Carsim联合仿真实现轨迹跟踪,考虑侧倾、曲率变化及侧偏刚度修正,考虑侧倾和曲率变化的轨迹跟踪:Simulink与Carsim联合仿真修正侧偏刚度技术解析,轨迹跟踪,考虑侧倾和曲率变化,同时修正侧偏刚度 simulink carsim联合仿真 ,轨迹跟踪; 侧倾和曲率变化; 侧偏刚度修正; Simulink; CarSim联合仿真,Simulink联合仿真:车辆轨迹跟踪及侧倾、曲率修正研究
总共包含 32 款 AAA 级科幻武器。四种武器类型,每种有 8 种不同的纹理变化! 所有内容均采用 PBR 材质,可直接用于开发游戏!
内容概要:本文详细介绍了在Ubuntu Linux上如何从零开始构建完整的PyTorch深度学习环境。步骤涵盖了镜像源配置、必需环境安装、Anaconda安装及配置,CUDA和显卡驱动安装,Anaconda虚拟环境创建,PyTorch安装及其相关依赖库的安装方法。对于安装过程中可能出现的一些问题提供了相应的解决方案。此外还简要涉及了Python环境的维护、IDE PyCharm的安装方法以及如何启动Anaconda附带的Jupyter Notebook。 适合人群:希望深入了解Linux操作系统下的机器学习环境配置过程的初级开发者和技术爱好者,特别是有兴趣应用PyTorch从事科研项目的人群。 使用场景及目标:旨在帮助读者掌握基于Ubuntu平台配置高性能PyTorch环境的具体流程,从而能快速投入到实际开发工作中;同时为未来扩展更多AI/ML应用打下坚实基础。 其他说明:本教程假设读者已经有一定Linux命令行操作基础,并且拥有基本的Python编程能力。教程重点在于具体的技术步骤而非理论讲解,对于每一阶段都附带有详尽的操作截图辅助理解。
IEEE9节点系统Simulink仿真:实现潮流计算与稳定性分析的电力仿真模型,基于Matlab Simulink的IEEE9节点系统仿真:潮流计算与稳定性分析,IEEE9节点系统Simulink仿真 1.基础功能:基于Matlab simulink平台搭建IEEE9节点仿真模型,对电力系统进行潮流计算(与编程用牛拉法计算潮流结果一致) 2.拓展功能: 可在该IEEE9节系统仿真模型上进行暂态、静态稳定性仿真分析。 ,IEEE9节点系统; Simulink仿真; 潮流计算; 牛拉法; 暂态稳定性仿真分析; 静态稳定性仿真分析,基于Simulink的IEEE9节点系统仿真:潮流计算与稳定性分析
欧姆龙NJ/NX系列PLC ST语言编程:Modbus RTU读写轮询与八从站通讯集成,搭配CF105模块使用,含FB功能块调用案例参考,欧姆龙NJ/NX系列PLC的ST语言编程:集成Modbus RTU读写轮询与八个485从站通讯功能,搭配CF105模块使用,含通讯FB功能块与主程序调用案例,欧姆龙NJ,NX系列plc,ST语言编写,该程序包含ModbusRTU的读写轮询,带八个485从站,此程序必须搭配欧姆龙CF105模块才能使用。 通讯的程序都封装成FB功能块可以直接调用,主程序有调用案例参考 ,欧姆龙NJ; NX系列PLC; ST语言编写; ModbusRTU读写轮询; 485从站; 欧姆龙CF105模块; 通讯FB功能块; 主程序调用案例。,欧姆龙PLC ST语言Modbus RTU读写轮询程序:CF105模块八从站通讯应用
数学建模相关主题资源2
Go语言教程&案例&相关项目资源
### **软件更新公告:AI会话存档与分析功能全新上线!** 亲爱的用户, 我们很高兴地宣布,本次软件更新带来了全新的 **AI会话存档与分析功能**,旨在帮助企业更好地管理员工与客户的沟通内容,提升服务质量,优化运营效率。以下是本次更新的详细内容: --- #### **1. 会话存档** - **功能描述**:系统将自动拉取员工与客户的文本聊天内容,并完整存档,方便随时查阅。 - **使用场景**: - 查看员工与客户的历史沟通记录。 - 审计聊天内容,确保合规性。 - 为客户问题提供追溯依据。 --- #### **2. AI会话报告** - **功能描述**:结合 **DeepSeek AI** 技术,对员工发送给客户的聊天内容进行智能分析,判断是否存在以下行为: - **敲单行为**:识别员工是否诱导客户下单或进行不必要的推销。 - **辱骂客户**:检测聊天内容中是否存在不当言辞或辱骂行为。 - **索要回扣/红包**:分析员工是否向客户索要回扣、红包或其他不当利益。 - **使用场景**: - 实时监控员工与客户的沟通质量。
毕业设计
并联型APF有源电力滤波器Matlab Simulink仿真研究:涉及dq和αβ坐标系谐波无功检测与SVPWM调制方式的仿真介绍文档,基于Matlab Simulink仿真的并联型APF有源电力滤波器谐波及无功检测技术研究,包含PI控制与SVPWM调制方式的深入探讨,并联型APF 有源电力滤波器 Matlab Simulink仿真 *dq FBD谐波 无功检测 *两相旋转坐标系(dq)、两相静止坐标系(αβ)下的PI控制 *SVPWM调制方式 (含仿真介绍文档) ,核心关键词:并联型APF; 有源电力滤波器; Matlab Simulink仿真; dq FBD谐波无功检测; 两相旋转坐标系PI控制; 两相静止坐标系PI控制; SVPWM调制方式。,基于Matlab Simulink仿真的并联型APF有源电力滤波器研究:dq FBD谐波与无功检测的PI控制及SVPWM调制方式
内容概要:本文详细介绍了苹果公司推出的编程语言 Swift,涵盖其基本概念、语法特点、环境搭建以及从 Swift 3 到 Swift 6 的重要更新与发展历程。Swift 是一门专注于 iOS、macOS、watchOS 和 tvOS 开发的语言,语法简洁,比 Objective-C 更易于学习和使用。文章首先简要介绍了 Swift 的基础知识,包括变量和常量、基本数据类型、控制流语句、函数定义、类和结构体,以及高级特性如可选类型、强制解包、可选绑定、闭包和协议。接着探讨了 Swift 的历史演变及其在不同操作系统(Linux 和 Windows)上的应用,尤其是 Swift 在 2015 年开源后的快速发展。最新的 Swift 6 版本引入了诸如编译时数据竞争保护等多项创新特性,极大地提升了并发编程的安全性和易用性。最后讨论了开发者的看法及其应用场景的可能性。 适合人群:具有一定编程基础的研发人员,尤其是那些有兴趣深入了解苹果生态系统或跨平台开发的技术爱好者。 使用场景及目标:帮助读者快速掌握 Swift 编程语言的核心概念和技术栈;指导初学者如何配置和使用 Xcode 编写首个 Swift 应用程序;分析最新发布的 Swift 6 更新亮点,并提供从 Swift 5 迁移到 Swift 6 期间可能遇到的问题及解决方法。 阅读建议:建议新手先掌握基本的 Swift 语法和面向对象编程思想再深入研究高级主题;同时密切关注官方发布的最新动态和支持资料,及时更新对 Swift 技术的认知;针对想要过渡到 Swift 6 的团队,务必进行充分的学习准备并在实践中积累经验以克服潜在困难。此外,考虑到 Swift 正逐渐扩展到非苹果平台的应用开发中,请对 Swift 在不同平台下的表现保持敏感并积极探索跨平台解决方案。
毕业设计
BLDC无刷直流电机与PMSM永磁同步电机的传感器/无传感器驱动算法全攻略:涵盖STM32F1实战代码与原理图,BLDC无刷直流电机与PMSM永磁同步电机的传感器/无传感器驱动算法集合,STM32F1代码全解析与分享,BLDC无刷直流电机和PMSM永磁同步电机 可提供所有代码中所有算法的,每个代码都亲自验证过。 基于STM32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感的霍尔实现。 永磁同步电机有感无感程序,有感为霍尔FOC和编码器方式, 无感为滑模观测器方式。 有原理图和文档,识的赶紧,物超所值。 提供里面所有代码,所有算法的。 提供里面所有代码,所有算法的。 ,BLDC无刷直流电机; PMSM永磁同步电机; 算法验证; STM32F1驱动; 有传感器驱动; 无传感驱动; 反电动势过零点; 霍尔实现; 霍尔FOC; 编码器方式; 换滑模观测器; 原理图; 文档。,基于STM32F1的BLDC与PMSM电机驱动解决方案:全算法代码与原理图详解
永磁同步电机矢量控制仿真研究:无SVPWM发波策略分析,永磁同步电机矢量控制仿真研究:不含SVPWM发波的算法优化分析,永磁同步电机矢量控制仿真,不带SVPWM发波 ,永磁同步电机; 矢量控制; 仿真; 不带SVPWM发波; 控制系统,永磁同步电机矢量控制仿真:非SVPWM发波技术探讨