- 浏览: 223648 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
- /*
- *在项目中,遇到这样的一个问题,当某一模块需要插入,更新一批大的数据量时,
- *此处大的含义是:更新到的数据记录比较多
- *用ibatis实现一条一条的插入,更新,如此循环下去。速度很慢
- *分析:
- * 这些操作有个共同点:
- * PreparedStatement对象和已映射的语句完全一致(简单点说:就是操作不断重复)
- * 由于事物是交给spring管理了,所以每做一次操作都会起一个事物,久而久之导致
- * 性能问题。
- *
- * batch批处理就适合那些查询,插入,更新,删除等大量重复的操作
- *
- * 存储过程也比较适合这样的场合,但要求很多
- * 批处理 是把 所有sql语句 放入一块内存中,然后一次性全部写到服务器,这个节省了客* 服端到服务器的访问时间
- */
- -- Create table
- create or replace table DEMO
- (
- UUID NUMBER,
- UUSER VARCHAR2(50),
- UPASSWORD VARCHAR2(50)
- )
- --Insert a million records with the DEMO procedure
- create or replace procedure demo_p(total in integer) AS
- uuid number :=1;
- uuser varchar2(50) := 'user';
- upassword varchar2(50) :='password';
- begin
- loop
- insert into demo(uuid,uuser,upassword) values(uuid,uuser||uuid,upassword||uuid);
- uuid := uuid + 1;
- exit when uuid >= total;
- end loop;
- end;
- ---Clear table then call procedure to insert a million records
- truncate table demo;
- call demo_p(1000);
- select * from demo;
- --Java实现
- --1--ibatis普通实现插入一百条条数据--
- --2--ibatis批量插入一百万条数据--
- --3--ibatis调用存储过程插入一百万条数据--
/* *在项目中,遇到这样的一个问题,当某一模块需要插入,更新一批大的数据量时, *此处大的含义是:更新到的数据记录比较多 *用ibatis实现一条一条的插入,更新,如此循环下去。速度很慢 *分析: * 这些操作有个共同点: * PreparedStatement对象和已映射的语句完全一致(简单点说:就是操作不断重复) * 由于事物是交给spring管理了,所以每做一次操作都会起一个事物,久而久之导致 * 性能问题。 * * batch批处理就适合那些查询,插入,更新,删除等大量重复的操作 * * 存储过程也比较适合这样的场合,但要求很多 * 批处理 是把 所有sql语句 放入一块内存中,然后一次性全部写到服务器,这个节省了客* 服端到服务器的访问时间 */ -- Create table create or replace table DEMO ( UUID NUMBER, UUSER VARCHAR2(50), UPASSWORD VARCHAR2(50) ) --Insert a million records with the DEMO procedure create or replace procedure demo_p(total in integer) AS uuid number :=1; uuser varchar2(50) := 'user'; upassword varchar2(50) :='password'; begin loop insert into demo(uuid,uuser,upassword) values(uuid,uuser||uuid,upassword||uuid); uuid := uuid + 1; exit when uuid >= total; end loop; end; ---Clear table then call procedure to insert a million records truncate table demo; call demo_p(1000); select * from demo; --Java实现 --1--ibatis普通实现插入一百条条数据-- --2--ibatis批量插入一百万条数据-- --3--ibatis调用存储过程插入一百万条数据--
1--构建环境 添加 classes12.jar ibatis-2.3.4.726.jar
2--写好ibatis基本配置文件,公共资源文件
SqlMapConfig.properties
- # DB Config
- driver=oracle.jdbc.driver.OracleDriver
- url=jdbc:oracle:thin:@localhost:1521:orcl
- username=scott
- password=tiger
# DB Config driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localhost:1521:orcl username=scott password=tiger
SqlMapConfig.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE sqlMapConfig
- PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
- <!-- Always ensure to use the correct XML header as above! -->
- <sqlMapConfig>
- <properties resource = "com/oyp/sqlmap/SqlMapConfig.properties" />
- <settings cacheModelsEnabled="true" enhancementEnabled="true"
- lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
- maxTransactions="5" useStatementNamespaces="false" />
- <transactionManager type = "JDBC">
- <dataSource type = "SIMPLE">
- <property name="JDBC.Driver" value="${driver}" />
- <property name="JDBC.ConnectionURL" value="${url}" />
- <property name="JDBC.Username" value="${username}" />
- <property name="JDBC.Password" value="${password}" />
- </dataSource>
- </transactionManager>
- <sqlMap resource = "com/oyp/sqlmap/User.xml"/>
- </sqlMapConfig>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <!-- Always ensure to use the correct XML header as above! --> <sqlMapConfig> <properties resource = "com/oyp/sqlmap/SqlMapConfig.properties" /> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <transactionManager type = "JDBC"> <dataSource type = "SIMPLE"> <property name="JDBC.Driver" value="${driver}" /> <property name="JDBC.ConnectionURL" value="${url}" /> <property name="JDBC.Username" value="${username}" /> <property name="JDBC.Password" value="${password}" /> </dataSource> </transactionManager> <sqlMap resource = "com/oyp/sqlmap/User.xml"/> </sqlMapConfig>
3--dto层,或者说是model层
User.java
- package com.oyp.model;
- import java.io.Serializable;
- /**
- * @author oyp 2009-12-14
- */
- public class User implements Serializable {
- private static final long serialVersionUID = 2804032598967813289L;
- private int id;
- private String name;
- private String password;
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
package com.oyp.model; import java.io.Serializable; /** * @author oyp 2009-12-14 */ public class User implements Serializable { private static final long serialVersionUID = 2804032598967813289L; private int id; private String name; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
4--sqlmap映射文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE sqlMap
- PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-2.dtd">
- <sqlMap namespace = "user" >
- <typeAlias alias = "user" type = "com.oyp.model.User"/>
- <insert id = "insert_user" parameterClass = "user" >
- INSERT INTO DEMO (UUID, UUSER, UPASSWORD) VALUES ( #id#,#name#, #password# )
- </insert>
- <update id = "clear_user" >
- truncate table demo
- </update>
- <parameterMap id="oypmap" class="java.util.Map">
- <parameter property="total" javaType="int" jdbcType="INTEGER" mode="IN" />
- </parameterMap>
- <procedure id="procedureoyp" parameterMap="oypmap" >
- { call demo_p(?) }
- </procedure>
- </sqlMap>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace = "user" > <typeAlias alias = "user" type = "com.oyp.model.User"/> <insert id = "insert_user" parameterClass = "user" > INSERT INTO DEMO (UUID, UUSER, UPASSWORD) VALUES ( #id#,#name#, #password# ) </insert> <update id = "clear_user" > truncate table demo </update> <parameterMap id="oypmap" class="java.util.Map"> <parameter property="total" javaType="int" jdbcType="INTEGER" mode="IN" /> </parameterMap> <procedure id="procedureoyp" parameterMap="oypmap" > { call demo_p(?) } </procedure> </sqlMap>
5--DAO层
- package com.oyp.dao;
- import java.sql.SQLException;
- import com.ibatis.sqlmap.client.SqlMapClient;
- import com.oyp.model.User;
- public class UserDAO {
- public static SqlMapClient sqlMap = AppSqlConfig.getSqlMap();
- public static void insertUser(User user) throws SQLException {
- sqlMap.insert("insert_user",user);
- }
- public static void clearTable() {
- try {
- sqlMap.update("clear_user");
- }catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
package com.oyp.dao; import java.sql.SQLException; import com.ibatis.sqlmap.client.SqlMapClient; import com.oyp.model.User; public class UserDAO { public static SqlMapClient sqlMap = AppSqlConfig.getSqlMap(); public static void insertUser(User user) throws SQLException { sqlMap.insert("insert_user",user); } public static void clearTable() { try { sqlMap.update("clear_user"); }catch (SQLException e) { e.printStackTrace(); } } }
5--获取封装数据库信息的Ibatis对象
- package com.oyp.dao;
- import java.io.IOException;
- import java.io.Reader;
- import com.ibatis.common.resources.Resources;
- import com.ibatis.sqlmap.client.SqlMapClient;
- import com.ibatis.sqlmap.client.SqlMapClientBuilder;
- public class AppSqlConfig {
- private static final SqlMapClient sqlMap;
- static {
- try {
- Reader reader = Resources.getResourceAsReader("com/oyp/sqlmap/SqlMapConfig.xml");
- sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
- reader.close();
- } catch (IOException e) {
- // Fail fast.
- throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
- }
- }
- public static SqlMapClient getSqlMap() {
- return sqlMap;
- }
- }
package com.oyp.dao; import java.io.IOException; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class AppSqlConfig { private static final SqlMapClient sqlMap; static { try { Reader reader = Resources.getResourceAsReader("com/oyp/sqlmap/SqlMapConfig.xml"); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e); } } public static SqlMapClient getSqlMap() { return sqlMap; } }
大公告成,等着测试下
休息................
开始测试
- /**
- * 描述:一般处理
- * @author oyp 2009-12-15
- */
- public class Main {
- public static int number =Util.number;
- public static void main (String[] args) throws SQLException {
- //清空表
- UserDAO.clearTable();
- //一般处理
- List<User> list = new ArrayList<User>();
- for (int i = 0 ; i < number; i++) {
- User tempuser = new User();
- tempuser.setId(i);
- tempuser.setName("user"+i);
- tempuser.setPassword("password"+i);
- list.add(tempuser);
- }
- //开始
- UserDAO.sqlMap.startTransaction();
- long begin = System.currentTimeMillis();
- for (int i = 0 ; i < number ; i++) {
- try {
- UserDAO.insertUser(list.get(i));
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- UserDAO.sqlMap.commitTransaction();
- UserDAO.sqlMap.endTransaction();
- System.out.println(System.currentTimeMillis()-begin);
- }
- }
- /**
- * 描述:batch处理
- * @author oyp 2009-12-15
- */
- public class MainBatch {
- public static int number =Util.number;
- public static void main (String[] args) throws SQLException {
- //清空表
- UserDAO.clearTable();
- //批量插入的对象
- List<User> list = new ArrayList<User>();
- for (int i = 0 ; i < number; i++) {
- User tempuser = new User();
- tempuser.setId(i);
- tempuser.setName("user"+i);
- tempuser.setPassword("password"+i);
- list.add(tempuser);
- }
- //批量处理开始
- long begin = System.currentTimeMillis();
- UserDAO.sqlMap.startTransaction();
- for (int i = 0 ; i < number ; i ++) {
- if (i % 10000 == 0) {
- UserDAO.sqlMap.startBatch();
- }
- UserDAO.insertUser(list.get(i));
- if ((i+1) % 10000 ==0) {
- UserDAO.sqlMap.executeBatch();
- }
- }
- UserDAO.sqlMap.executeBatch();
- UserDAO.sqlMap.commitTransaction();
- UserDAO.sqlMap.endTransaction();
- System.out.println(System.currentTimeMillis()-begin);
- }
- }
- /*
- *描述:调用存储过程
- *@author oyp 2009-12-15
- */
- public class MainProcedure {
- public static int number =Util.number;
- public static void main (String[] args) throws SQLException {
- //清空表
- UserDAO.clearTable();
- HashMap map = new HashMap();
- map.put("total", number);
- //调用存储过程
- long begin = System.currentTimeMillis();
- UserDAO.sqlMap.startTransaction();
- UserDAO.sqlMap.insert("procedureoyp",map);
- UserDAO.sqlMap.commitTransaction();
- UserDAO.sqlMap.endTransaction();
- System.out.println(System.currentTimeMillis()-begin);
- }
- }
/** * 描述:一般处理 * @author oyp 2009-12-15 */ public class Main { public static int number =Util.number; public static void main (String[] args) throws SQLException { //清空表 UserDAO.clearTable(); //一般处理 List<User> list = new ArrayList<User>(); for (int i = 0 ; i < number; i++) { User tempuser = new User(); tempuser.setId(i); tempuser.setName("user"+i); tempuser.setPassword("password"+i); list.add(tempuser); } //开始 UserDAO.sqlMap.startTransaction(); long begin = System.currentTimeMillis(); for (int i = 0 ; i < number ; i++) { try { UserDAO.insertUser(list.get(i)); } catch (SQLException e) { e.printStackTrace(); } } UserDAO.sqlMap.commitTransaction(); UserDAO.sqlMap.endTransaction(); System.out.println(System.currentTimeMillis()-begin); } } /** * 描述:batch处理 * @author oyp 2009-12-15 */ public class MainBatch { public static int number =Util.number; public static void main (String[] args) throws SQLException { //清空表 UserDAO.clearTable(); //批量插入的对象 List<User> list = new ArrayList<User>(); for (int i = 0 ; i < number; i++) { User tempuser = new User(); tempuser.setId(i); tempuser.setName("user"+i); tempuser.setPassword("password"+i); list.add(tempuser); } //批量处理开始 long begin = System.currentTimeMillis(); UserDAO.sqlMap.startTransaction(); for (int i = 0 ; i < number ; i ++) { if (i % 10000 == 0) { UserDAO.sqlMap.startBatch(); } UserDAO.insertUser(list.get(i)); if ((i+1) % 10000 ==0) { UserDAO.sqlMap.executeBatch(); } } UserDAO.sqlMap.executeBatch(); UserDAO.sqlMap.commitTransaction(); UserDAO.sqlMap.endTransaction(); System.out.println(System.currentTimeMillis()-begin); } } /* *描述:调用存储过程 *@author oyp 2009-12-15 */ public class MainProcedure { public static int number =Util.number; public static void main (String[] args) throws SQLException { //清空表 UserDAO.clearTable(); HashMap map = new HashMap(); map.put("total", number); //调用存储过程 long begin = System.currentTimeMillis(); UserDAO.sqlMap.startTransaction(); UserDAO.sqlMap.insert("procedureoyp",map); UserDAO.sqlMap.commitTransaction(); UserDAO.sqlMap.endTransaction(); System.out.println(System.currentTimeMillis()-begin); } }
- 1-- Util.number = 1000 ;
- 普通处理:593ms
- 批量处理:94ms
- 存储过程处理:218ms
- 2--Util.number = 10000;
- 普通处理:2734ms
- 批量处理:328ms
- 存储过程处理:1172ms
- 3--Util.number = 100000;
- 普通处理: 32641 ms 休息....
- 批量处理: 1937ms 休息....
- 存储过程处理:8453 ms
- 4--Util.number = 300000;
- 批量处理: 3937 ms 休息....
- 5--Util.number = 1000000;
- 批量处理: 电脑被我折腾着不行了
- Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- at java.util.Arrays.copyOf(Arrays.java:2760)
- at java.util.Arrays.copyOf(Arrays.java:2734)
- at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
- at java.util.ArrayList.add(ArrayList.java:351)
- at MainBatch.main(MainBatch.java:24)
- (注:因为要创建插入数据库的对象所以内存耗尽, :twisted: 公司配的电脑太差!)
- 存储过程: 119906 ms
1-- Util.number = 1000 ; 普通处理:593ms 批量处理:94ms 存储过程处理:218ms 2--Util.number = 10000; 普通处理:2734ms 批量处理:328ms 存储过程处理:1172ms 3--Util.number = 100000; 普通处理: 32641 ms 休息.... 批量处理: 1937ms 休息.... 存储过程处理:8453 ms 4--Util.number = 300000; 批量处理: 3937 ms 休息.... 5--Util.number = 1000000; 批量处理: 电脑被我折腾着不行了 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2760) at java.util.Arrays.copyOf(Arrays.java:2734) at java.util.ArrayList.ensureCapacity(ArrayList.java:167) at java.util.ArrayList.add(ArrayList.java:351) at MainBatch.main(MainBatch.java:24) (注:因为要创建插入数据库的对象所以内存耗尽, :twisted: 公司配的电脑太差!) 存储过程: 119906 ms
这些纯属菜鸟级的试验,真正的项目当中要考虑到各方面的原因,要比这复杂多了,所以哪里需要改善,或者有什么好的建议,尽管砸吧!~~(事务,数据库)
ps: 这种情况,存储过程的效率怎么比不上批处理 ??
发表评论
-
pushlet
2012-05-31 14:56 1184基于pushlet的文件监控系统的研究与实现 http ... -
@Transactional spring 配置事务
2012-04-25 11:15 2106@Transactional spring 配置事 ... -
Spring的组件自动扫描机制
2012-04-09 17:47 0Spring将所有的bean都纳入到IOC中创建、管理和维护。 ... -
struts&rest
2012-04-03 00:11 804深入浅出REST http://www.infoq. ... -
文件转码
2011-11-16 09:55 2043工程项目太多,各工程或各文件编码不统一时,可运行本工具类,把工 ... -
安装和使用SpringIDE-------III
2011-07-29 10:40 8792. 编写类文件 · ... -
安装和使用SpringIDE-------II
2011-07-29 10:39 695显示图表,如图: 发表于 @ 2006 ... -
安装和使用SpringIDE
2011-07-29 10:36 1143这篇文章谈谈如何安装与使用SpringIDE。作为辅助Sp ... -
使用AJDT简化AspectJ开发
2011-07-29 10:05 1074面向方面编程(AOP)可用来解决当今的 许多 应用需求 ... -
利用Apache的CLI来处理命令行
2011-05-16 17:02 994CLI是Jakarta Commons中的一个子类。如果你仅仅 ... -
CGlib简单介绍
2011-04-28 08:37 897CGlib概述:cglib(Code Generation L ... -
Java ClassLoader
2011-04-25 18:24 1025当Java编译器编译好.class ... -
Template模式与Strategy模式
2011-04-20 16:23 703template method模式和stra ... -
Ibatis读写CLOB数据
2011-03-21 14:21 1070转载:http://www.iteye.com/topic/7 ... -
轻松构建和运行多线程的单元测试
2011-03-18 22:09 1016背景 并行程序 并行程序是指控制计算机系统中两个或多个分别 ... -
Cairngorm3中文简介
2011-03-18 22:07 1040官方原文地址:http://opensource.adobe. ... -
ibator改造之返回数据库注释和数据库分页
2010-12-23 17:24 2273转载:http://www.iteye.com ... -
quatrz 任务监控管理 (2)
2010-10-28 23:28 1454在《Quartz 任务监控管理 (1)》http://www. ... -
Quartz任务监控管理 (1)
2010-10-28 23:27 1336转载:http://sundoctor.iteye.com/b ... -
Quartz 在 Spring 中如何动态配置时间
2010-10-28 23:25 1732转载: http://sundoctor.iteye.com ...
相关推荐
### iBATIS学习笔记知识点概览 #### 一、iBATIS简介 - **定义**:iBATIS是Apache的一个开源项目,它提供了一种对象关系映射(ORM)的解决方案,通过这种方式可以将Java对象与数据库表进行映射,从而简化了数据访问...
文件名如 "iBatis2学习笔记:多对多映射(双向).htm" 暗示了文档可能深入讲解了如何配置和使用双向多对多映射,而 "iBatis2学习笔记:SqlMap的配置总结(18条).htm" 可能提供了关于 iBatis 配置的全面概述。...
lim_3ck_01b_0718
内容概要:本文介绍了一种新颖的变压器模型C2Former(Calibrated and Complementary Transformer),专门用于解决RGB图像和红外图像之间的物体检测难题。传统方法在进行多模态融合时面临两个主要问题——模态错位(Modality miscalibration)和融合不准确(fusion imprecision)。作者针对这两个问题提出采用互模交叉注意力模块(Inter-modality Cross-Attention, ICA)以及自适应特征采样模块(Adaptive Feature Sampling, AFS)来改善。具体来说,ICA可以获取对齐并且互补的特性,在特征层面进行更好的整合;而AFS则减少了计算成本。通过实验验证了基于C2Former的一阶段和二阶段检测器均能在现有公开数据集上达到最先进的表现。 适合人群:计算机视觉领域的研究人员和技术人员,特别是从事跨模态目标检测的研究人员,对Transformer架构有一定了解的开发者。 使用场景及目标:适用于需要将可见光和热成像传感器相结合的应用场合,例如全天候的视频监控系统、无人驾驶汽车、无人
pepeljugoski_01_0108
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
lusted_3ck_02_1118
内容概要:本文提出了用于虚拟同步发电机(VSG)在非对称电网故障期间的一种自适应低电压穿越(LVRT)方法。现有LVRT方法由于故障检测延迟可能导致逆变器损坏的问题以及新的电网标准(GCs)规定了逆变器基资源(IBRs)需要注入负序电流的需求。所提出的LVRT方法采用初始故障时刻电压控制环差补及有功功率环相角调整,使系统能够在正常运行时保持特性不受影响,并在出现不对称故障时立即限制输出电流。模拟结果显示,新方法不仅能迅速响应并抑制故障电流,在不同类型的不对称故障条件下亦能良好表现。此外,该方法不需要参数设计,且能够最大限度利用IBRs电流,同时维持IBRs电压源特性和符合新的GCs。 适合人群:电力电子与能源系统的学术研究人员和技术人员,熟悉虚拟同步发电技术以及LVRT相关背景的工程师。 使用场景及目标:主要适用于包含虚拟同步发电机的新能源系统中的故障穿越技术改进,以满足最新国际电气电子工程师协会(IEEE)的电气互连标准,并解决当前LVRT方法无法全面符合规范的问题,确保系统的安全可靠运行。该研究可用于改进新能源并网逆变器的设计。 其他说明:文章通过对现有的LVRT控制方法进行改进来
内容概要:本导读书籍《DeepSeek从入门到精通》旨在为读者提供对AI工具DeepSeek全面的认识。书籍首先概述了DeepSeek作为一个国产、开源的多功能AI平台的功能和特点,接着详细介绍了如何入门操作,并通过实战演示来帮助用户掌握不同应用场景下的高级提示词策略和使用技巧,如针对不同类型的提示语的设计方法和实际应用。特别是在‘发散’部分,对提示语进行了深入剖析,不仅探讨了提示词的高级技术和策略,还包括AI幻觉、人机协作以及知识生成等方面的讨论,有助于用户深入理解和灵活应用提示词,在各种任务中提高效率并获得更好的效果。最后一章展望了AI与人类在未来内容创作中的角色转变和发展趋势。这本详细的指导手册能帮助读者形成系统的AI工具认知和技术体系,快速上手并在实践中不断加深对该领域的理解。 适用人群:面向希望深入了解AI工具尤其是提示词设计的专业人士、开发者及所有有兴趣探索这一领域的个人;适合有一定技术背景的从业者。 使用场景及目标:帮助初学者快速启动DeepSeek的日常使用,为中高级用户提供更深入的高级功能理解和实践,特别是涉及提示词构建的技术细节,助力于提升特定任务处理效率和结果品质
下载 1. 单击“立即下载”,以下载该文件。 2. 出现“文件下载”窗口后,单击“保存”,以将文件保存到硬盘。 安装 1. 浏览至文件下载目标位置并双击新下载的文件。 2. 仔细阅读对话窗口中显示的发布信息。 3. 下载并安装对话窗口中标识的任何必备项,然后再继续。 4. 单击“Install”(安装)按钮。 5. 按照其余提示执行更新。 安装 1. 将解压的文件复制到可访问Windows的介质。 2. 将系统重新引导至Windows操作系统。 3. 打开“服务器管理器”->“设备管理器”->“存储控制器”,然后单击“PERC控制器”。 5. 单击“更新驱动程序软件”,并按照提示更新驱动程序。 4. 重新引导系统以使更改生效。
Saxena_01_0107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
第8节模型预测控制在运动规划中的应用
覆盖了人口统计、经济发展、教育体系、环境资源等多个关键领域,旨在为研究人员、政策规划者及相关各界提供全面洞察社会现状与趋势的窗口。 2024年修订内容如下: 资源和环境–增加“倒塌房屋间数”。 农业–增加“大豆”、“花生”、“油菜籽”、“芝麻”“甘蔗”“甜英”业及辅助性活动”产值和指数。 工业–增加“智能手机”产量。 卫生和社会服务–增加“分地区儿童健康情况`和“分地区孕产妇健康情况”。 文化和体育–增加公共图书馆“少儿文献数”和国有博物馆“未成年人参观人次”情况。 城市、农村和区域发展–增加“乡村办水电站”“农村水电装机容量”“农村水电年发电量”情况。 科学技术–新增分行业新产品开发经费支出、新产品销售收入等指标。 运输、邮电和软件业–公路营业性客运量包括班车包车客运量、公共汽电车城际城乡客运量、出租汽车(含巡游出租汽车、网络预约出租汽车)城际城多客运量 运输、邮电和软件业–公路客运周转量包括班车包车客运周转量、公共汽电车城际城乡客运周转量、出租汽车(含巡游出租汽车、网络预约出租汽车)城际城乡客运周转量。 就业和工资、固定资产投资、工业、建筑业、批发和零售业、房地产、科学计算等修订主要内容: (1)拓展适用范围 为了更全面覆盖统计调查对象,新标准按照市场主体登记注册管理实际对分类范围作相应调整,从“企业”扩大至所有“市场主体”,增加了“农民专业合作社(联合社)”和“个体工户”等类别。 (2)取消相关类别 由于《中华人民共和国私营企业暂行条例》已被废止,根据《中华人民共和国公司法》《中华人民共和国个人独资企业法》《中华人民共和国合作企业法》,将相关“私营有限责任公司”、“私营股份有限公司”分别列入“有限责任公司、“股分有限公司”范围类别。引国,“私营独资企业”调整为“个人独资企业”,“私营合伙企业”调整为“合伙企业”。 (3)调整分类结构 一是关于“内资企业”。根据《中华人民共和国市场主体登记管理条例》规定,将原内资企业分类“国有企业”“集体企业”、“股份合作企业”、“联营企业”、“有限责任公司”、“股份有限公司”、“私营企业”和“其他企业”等8个类别调整为“有限责任公司”、“股份有限公司”、“非公司企业法人”、“个人独资企业”、合伙企业”和“其他内资企业”等6个类别。其中,原“国有企业”、“集体企业”、“股份合作企业”“联营企业”纳入新类别“非公司企业法人”下;原“私营企业”类别取消(上段已述)。二是关于“外商投资企业”和“港澳台投资企业”。根据《中华人民共和国外商投资法》规定,将原外商投资企业分类“中外合资经营企业”“中外合作经营企业”、“外资企业”、“外商投资股份有限公司”和“其他外商投资企业”等5个类别调整为“外商投资有限责任公司”、“外商投资股份有限公司”、“外商投资合伙企业”和“其他外商投资企业”等4个类别。港澳台投资企业参照外商投资企业分类方法调整。 (4)规范类别名称根据市场监管部门对登记注册管理的规范名称,分别将原“国有企业”、“集体企业”更名为“全民所有制企业(国有企业)”、“集体所有制企业(集体企业)” (5)统一内资范围根据《中华人民共和国外商投资法》和相关部门规定,将登记注册为内资公司的有限责任公司(外商投资企业投资)、登记注册为内资公司的股份有限公司(上市、外商投资企业投资)等市场主体,即外商投资企业市场主体在中国境内的再投资市场主体,由原标准中的“外商投资企业”调整为新标准中的“内资企业”相关类别。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
基于comsol 6.2软件,建立了单晶生长的二维模型,用的是数学模块的PDE方法,涵盖了温度场和浓度场。
Gaussian_Filter