随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
1、High performance - 对数据库高并发读写的需求
web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。其实对于普通的BBS网站,往往也存在对高并发写请求的需求,例如像JavaEye网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。
2、Huge Storage - 对海量数据的高效率存储和访问的需求
类似Facebook,twitter,Friendfeed这样的SNS网站,每天用户产生海量的用户动态,以Friendfeed为例,一个月就达到了2.5亿条用户动态,对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。再例如大型web网站的用户登录系统,例如腾讯,盛大,动辄数以亿计的帐号,关系数据库也很难应付。
3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?
在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地,例如:
1、数据库事务一致性需求
很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。
2、数据库的写实时性和读实时性需求
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说我(JavaEye的robbin)发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。
3、对复杂的SQL查询,特别是多表关联查询的需求
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值数据库(Key-Value Store DB)风起云涌,多得让人眼花缭乱。前不久国外刚刚举办了NoSQL Conference,各路NoSQL数据库纷纷亮相,加上未亮相但是名声在外的,起码有超过10个开源的NoSQLDB,例如:
Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDB, ......
这些NoSQL数据库,有的是用C/C++编写的,有的是用Java编写的,还有的是用Erlang编写的,每个都有自己的独到之处,看都看不过来了,我(robbin)也只能从中挑选一些比较有特色,看起来更有前景的产品学习和了解一下。这些NoSQL数据库大致可以分为以下的三类:
一、满足极高读写性能需求的Kye-Value数据库:Redis,Tokyo Cabinet, Flare
高性能Key-Value数据库的主要特点就是具有极高的并发读写性能,Redis,Tokyo Cabinet, Flare,这3个Key-Value DB都是用C编写的,他们的性能都相当出色,但出了出色的性能,他们还有自己独特的功能:
1、Redis
Redis是一个很新的项目,刚刚发布了1.0版本。Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是我知道的性能最快的Key-Value DB。
Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从List两端push和pop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。
Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,并且它没有原生的可扩展机制,不具有scale(可扩展)能力,要依赖客户端来实现分布式读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。目前使用Redis的网站有github,Engine Yard。
2、Tokyo Cabinet和Tokoy Tyrant
TC和TT的开发者是日本人Mikio Hirabayashi,主要被用在日本最大的SNS网站mixi.jp上,TC发展的时间最早,现在已经是一个非常成熟的项目,也是Kye-Value数据库领域最大的热点,现在被广泛的应用在很多很多网站上。TC是一个高性能的存储引擎,而TT提供了多线程高并发服务器,性能也非常出色,每秒可以处理4-5万次读写操作。
TC除了支持Key-Value存储之外,还支持保存Hashtable数据类型,因此很像一个简单的数据库表,并且还支持基于column的条件查询,分页查询和排序功能,基本上相当于支持单表的基础查询功能了,所以可以简单的替代关系数据库的很多操作,这也是TC受到大家欢迎的主要原因之一,有一个Ruby的项目miyazakiresistance将TT的hashtable的操作封装成和ActiveRecord一样的操作,用起来非常爽。
TC/TT在mixi的实际应用当中,存储了2000万条以上的数据,同时支撑了上万个并发连接,是一个久经考验的项目。TC在保证了极高的并发读写性能的同时,具有可靠的数据持久化机制,同时还支持类似关系数据库表结构的hashtable以及简单的条件,分页和排序操作,是一个很棒的NoSQL数据库。
TC的主要缺点是在数据量达到上亿级别以后,并发写数据性能会大幅度下降,NoSQL: If Only It Was That Easy提到,他们发现在TC里面插入1.6亿条2-20KB数据的时候,写入性能开始急剧下降。看来是当数据量上亿条的时候,TC性能开始大幅度下降,从TC作者自己提供的mixi数据来看,至少上千万条数据量的时候还没有遇到这么明显的写入性能瓶颈。
这个是Tim Yang做的一个Memcached,Redis和Tokyo Tyrant的简单的性能评测,仅供参考
3、Flare
TC是日本第一大SNS网站mixi开发的,而Flare是日本第二大SNS网站green.jp开发的,有意思吧。Flare简单的说就是给TC添加了scale功能。他替换掉了TT部分,自己另外给TC写了网络服务器,Flare的主要特点就是支持scale能力,他在网络服务端之前添加了一个node server,来管理后端的多个服务器节点,因此可以动态添加数据库服务节点,删除服务器节点,也支持failover。如果你的使用场景必须要让TC可以scale,那么可以考虑flare。
flare唯一的缺点就是他只支持memcached协议,因此当你使用flare的时候,就不能使用TC的table数据结构了,只能使用TC的key-value数据结构存储。
二、满足海量存储需求和访问的面向文档的数据库:MongoDB,CouchDB
面向文档的非关系数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。MongoDB是用C++开发的,而CouchDB则是Erlang开发的:
1、MongoDB
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Mongo主要解决的是海量数据的访问效率问题,根据官方的文档,当数据量达到50GB以上的时候,Mongo的数据库访问速度是MySQL的10倍以上。Mongo的并发读写效率不是特别出色,根据官方提供的性能测试表明,大约每秒可以处理0.5万-1.5次读写请求。对于Mongo的并发读写性能,我(robbin)也打算有空的时候好好测试一下。
因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储,但我也看到有些评论认为GridFS性能不佳,这一点还是有待亲自做点测试来验证了。
最后由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎,很多项目都考虑用MongoDB来替代MySQL来实现不是特别复杂的Web应用,比方说why we migrated from MySQL to MongoDB就是一个真实的从MySQL迁移到MongoDB的案例,由于数据量实在太大,所以迁移到了Mongo上面,数据查询的速度得到了非常显著的提升。
MongoDB也有一个ruby的项目MongoMapper,是模仿Merb的DataMapper编写的MongoDB的接口,使用起来非常简单,几乎和DataMapper一模一样,功能非常强大易用。
2、CouchDB
CouchDB现在是一个非常有名气的项目,似乎不用多介绍了。但是我却对CouchDB没有什么兴趣,主要是因为CouchDB仅仅提供了基于HTTP REST的接口,因此CouchDB单纯从并发读写性能来说,是非常糟糕的,这让我立刻抛弃了对CouchDB的兴趣。
三、满足高可扩展性和可用性的面向分布式计算的数据库:Cassandra,Voldemort
面向scale能力的数据库其实主要解决的问题领域和上述两类数据库还不太一样,它首先必须是一个分布式的数据库系统,由分布在不同节点上面的数据库共同构成一个数据库服务系统,并且根据这种分布式架构来提供online的,具有弹性的可扩展能力,例如可以不停机的添加更多数据节点,删除数据节点等等。因此像Cassandra常常被看成是一个开源版本的Google BigTable的替代品。Cassandra和Voldemort都是用Java开发的:
1、Cassandra
Cassandra项目是Facebook在2008年开源出来的,随后Facebook自己使用Cassandra的另外一个不开源的分支,而开源出来的Cassandra主要被Amazon的Dynamite团队来维护,并且Cassandra被认为是Dynamite2.0版本。目前除了Facebook之外,twitter和digg.com都在使用Cassandra。
Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。我看到有文章说Facebook的Cassandra群集有超过100台服务器构成的数据库群集。
Cassandra也支持比较丰富的数据结构和功能强大的查询语言,和MongoDB比较类似,查询功能比MongoDB稍弱一些,twitter的平台架构部门领导Evan Weaver写了一篇文章介绍Cassandra:http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/,有非常详细的介绍。
Cassandra以单个节点来衡量,其节点的并发读写性能不是特别好,有文章说评测下来Cassandra每秒大约不到1万次读写请求,我也看到一些对这个问题进行质疑的评论,但是评价Cassandra单个节点的性能是没有意义的,真实的分布式数据库访问系统必然是n多个节点构成的系统,其并发性能取决于整个系统的节点数量,路由效率,而不仅仅是单节点的并发负载能力。
2、Voldemort
Voldemort是个和Cassandra类似的面向解决scale问题的分布式数据库系统,Cassandra来自于Facebook这个SNS网站,而Voldemort则来自于Linkedin这个SNS网站。说起来SNS网站为我们贡献了n多的NoSQL数据库,例如Cassandar,Voldemort,Tokyo Cabinet,Flare等等。Voldemort的资料不是很多,因此我没有特别仔细去钻研,Voldemort官方给出Voldemort的并发读写性能也很不错,每秒超过了1.5万次读写。
从Facebook开发Cassandra,Linkedin开发Voldemort,我们也可以大致看出国外大型SNS网站对于分布式数据库,特别是对数据库的scale能力方面的需求是多么殷切。前面我(robbin)提到,web应用的架构当中,web层和app层相对来说都很容易横向扩展,唯有数据库是单点的,极难scale,现在Facebook和Linkedin在非关系型数据库的分布式方面探索了一条很好的方向,这也是为什么现在Cassandra这么热门的主要原因。
如今,NoSQL数据库是个令人很兴奋的领域,总是不断有新的技术新的产品冒出来,改变我们已经形成的固有的技术观念,我自己(robbin)稍微了解了一些,就感觉自己深深的沉迷进去了,可以说NoSQL数据库领域也是博大精深的,我(robbin)也只能浅尝辄止,我(robbin)写这篇文章既是自己一点点钻研心得,也是抛砖引玉,希望吸引对这个领域有经验的朋友来讨论和交流。
从我(robbin)个人的兴趣来说,分布式数据库系统不是我能实际用到的技术,因此不打算花时间深入,而其他两个数据领域(高性能NoSQLDB和海量存储NoSQLDB)都是我很感兴趣的,特别是Redis,TT/TC和MongoDB这3个NoSQL数据库,因此我接下来将写三篇文章分别详细介绍这3个数据库。
出处:
http://robbin.iteye.com/blog/524977
分享到:
相关推荐
单链表的基本操作 1.实验题目 问题描述:实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除 等单链表的基本操作。通过代码的编写理解并掌握单链表的过程编写以及作用。 2.实验要求 (1)依次从键盘读入数据,建立一个单链表并将单链表的初始化设置为空; (2)通过操作选择,输出单链表中的数据元素 (3)显示单链表的长度; (4)根据指定条件能够查找出元素和修改元素; (5)实现在指定位置插入和删除元素的功能 (6)显示操作后的结果 3.算法设计 (1)用到的结构(逻辑结构、存储结构) 逻辑结构:线性结构 存储结构:带头结点的单链表 (2)算法设计思路 定义结点类型LNode,每个结点包括数据域data和指针域next。定义头指针LinkList 。编写如下函数: 1、createlist(LinkList &L);用尾插法创建一个带头结点的单链表。 2、print(LinkList L);输出该单链表中的数据元素。 3、ListLength(LinkList L);求该单链表的长度。 4、GetElem(LinkList &L,int i,ElemType &e);查找第i个元素。 5、SetElem(LinkList &L,int i,ElemType m);修改第i个元素。 6、ListInsert (LinkList &L, int i, ElemType e );在第i个元素前插入一个元素。7、ListDelete(LinkList &L,int i,ElemType &e2);删除第i个元素。 8、main();通过case结构来调用createlist(LinkList &L)、GetElem(LinkList &L,int i,ElemType &e)、SetElem(LinkList &L,int i,ElemType m)、ListInsert (LinkList &L, int i, ElemType e )、ListDelete(LinkList &L,int i,ElemType &e2) 4.调试和测试 调试过程总结经过多次调试,本程序能很好的完成实验要求的各项功能。给出几组测 试数据及实验结果: 4.1 系统界面 4.2 创建带头结点的单链表 (先输入单链表整数,每输入完一个整数后按回车键,数据输入完后以0结束) 4.3 打印链表中的数据 4.4 打印链表长度 4.5 按位置取元素 4.6 修改链表中的元素 4.7 插入结点 4.8 按结点位置编号删除结点 4.8 显示做了修改后的链表元素: 5.实验总结 对比这次试验,在上机的时候明显感觉到比之前更加有思路,能够很好地找个关键性 的语句对程序进行修改,这次试验虽然说比上次好,但是也暴漏出了许多的缺陷,在编 写的时候,感觉整个流程都挺对,但是就是运行不出来,或者是不能够实现原有的功能 ,通过与同学的交流,然后慢慢地参照课本才将本次试验很好地完成。 6.附录(源程序) #include<stdio.h> #include<conio.h> #include"stdafx.h" #define OK 1 #define ERROR 0 typedef char ElemType; typedef int Status; typedef struct LNode { ElemType data; LNode *next; } LNode,*LinkList; Status createlist(LinkList &L) //尾插法创建带头结点的单链表 { int ch; L=new LNode; L->next=NULL; printf("请输入单链表中的数据:"); scanf("%d", &ch); LinkList r=L; while(ch!=0) { LinkList p=new LNode; p->data=ch; p->next=NULL; r->next=p; r=p; scanf("%d", &ch); } return OK; } void print(LinkList L) //输出单链表 { LinkList p=L->next; printf("单链表为:\n"); while(p) { printf("%2d",p->data); p=p->next; }} Status ListLength(LinkList L) //求单链表的长度 { int k=0; LinkList p=L->next; while(p){ k++; p=p->next;} printf("\n"); printf("单链表的长度为 %d:" , k); printf("\n"); return k; } Status GetElem(Lin 单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据元素和指向下一个节点的指针。在这个实验报告中,重点是实现带头结点的单链表的基本操作,包括建立、求长度、取元素、修改元素、插入和删除等。 实验题目要求从键盘读入数据来构建一个单链表,并初始化为空。这意味着我们需要编写一个函数来创建链表,例如`createlist`函数,该函数使用尾插法,即每次新输入的数据会被添加到链表的末尾。这可以通过循环读取用户输入,创建新的节点并将其连接到现有链表的末尾来实现。 实验要求能够输出链表中的数据元素,这可以通过`print`函数完成。此函数遍历链表,打印每个节点的数据域。 另外,链表的长度可以通过`ListLength`函数计算,该函数遍历整个链表,每次遇到一个节点就增加计数器,最后返回计数值。 查找和修改元素的功能由`GetElem`和`SetElem`函数提供。`GetElem`用于获取指定位置的元素,而`SetElem`则用于修改这个位置的元素值。这两个函数都需要处理非法索引的情况,例如索引超出链表范围。 此外,实验还需要实现插入和删除操作。`ListInsert`函数在给定位置插入新元素,而`ListDelete`函数删除指定位置的元素。这两种操作都需要在链表中找到正确的位置,然后调整指针以保持链表的连续性。 在实验的调试和测试阶段,作者通过输入不同数据和执行各种操作来验证程序的正确性,并针对出现问题的地方进行了修改和完善。 实验总结部分,作者提到这次实验相比以前更有思路,能够更有效地修改程序,但也暴露了编程过程中的一些不足,如逻辑错误或功能不完全实现。这些问题通过与同学的交流和参考教材得到了解决。 源代码部分展示了实现这些功能的C语言结构,包括定义链表节点类型`LNode`,头指针`LinkList`,以及上述各函数的定义。这些函数实现了链表操作的核心逻辑。 这个实验旨在加深对单链表的理解,包括其基本操作的实现细节和问题解决过程,这对于学习数据结构和算法至关重要。通过这样的实践,可以提高对链表这种数据结构的实际运用能力。。内容来源于网络分享,如有侵权请联系我删除。
项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途,网络商品/电子资源资料具可复制性不支持退款。质量优质,放心下载使用。
基于S7-200 PLC的西流水电厂油压装置自动化集成方案:梯形图程序详解、接线图与IO分配指南及组态画面展示,基于S7-200 PLC的西流水电厂油压装置自动化控制:梯形图程序解析与接线图原理研究,IO分配及组态画面详解,基于S7-200 PLC的西流水电厂油压装置自动化 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,S7-200 PLC; 油压装置自动化; 梯形图程序; 接线图原理图; IO分配; 组态画面,基于S7-200 PLC的西流水电厂油压装置自动化:解析梯形图与IO配置的智能控制系统
内容概要:本文详尽介绍了常见于数据科学和机器学习领域的多种数据集类型,涵盖从基本表格型到复杂多媒体型的各种格式。它解释了每一类别资源的特征,例如CSV、Excel、JSON、SQL数据库导出文件以及压缩包等形式,并举例说明各自的应用范围。针对不同形式的数据资源,文中具体讲述了它们适用的任务类型,如图像分类、自然语言处理、视频行为识别和其他特定领域内的应用实例。 适合人群:所有对机器学习、数据分析及科学研究感兴趣的人员;从事相关职业的专业人士,以及希望扩展专业知识的学习者。 使用场景及目标:帮助读者选择正确的数据格式来匹配自己的项目需求,并理解不同格式的优势以便更好地进行数据分析和建模工作;同时,也为用户提供了一套全面的认知工具,使他们能够有效地管理和操作这些不同类型的数据集。 其他说明:了解并熟练掌握多种数据集的形式和特点对于数据科学家而言是非常重要的技能之一。通过对不同数据源的认识,可以使他们在实际工作中更加游刃有余地应对挑战。此外,随着科技的进步与发展,新型的数据集格式也将不断涌现。
基于PLC的S7-1200与Wincc组态路交通指挥系统:梯形图程序、接线图与组态画面详解,基于PLC的S7-1200与Wincc组态路交通指挥系统:梯形图程序、接线图与组态画面详解,S7-1200 和Wincc组态基于PLC的路交通指挥系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,S7-1200; Wincc组态; PLC控制; 路交通指挥系统; 梯形图程序; 接线图原理图; IO分配; 组态画面,基于S7-1200 PLC与Wincc组态的路交通指挥系统:梯形图与组态画面详解
这是一款人生重开模拟器微信小程序源码 让你的人生开启不一样的变化 不知道各位玩家有没有被最近超火的一款名为《人生重开模拟器》小游戏刷屏呢?想必不少玩家玩过了各种各样的模拟器,有的可以模拟医生,有的可以模拟警察,甚至还能模拟小偷、流浪汉、山羊等等,那么这个火爆的《人生重开模拟器》又是怎样的呢,下面让我们一起来看看吧! 网站搭建教程 1,准备一个域名和虚拟主机(或服务器),这个看个人条件,如果是纯小白首次建站的话建议先用免费虚拟主机和二级域名尝试。(虚拟主机和免费二级域名各位网上自行搜索,或用三楼其他作者推荐主机) 2,主机或者服务器绑定你的域名 3,把源码上传到主机wwwroot文件夹中 4,解压源码,完成安装 5,直接打开域名时会显示404,需要按照对应文件夹位置打开域名,域名访问地址http://你的域名/view
基于微信小程序的工单报修管理系统_维修 环境:php5.6 mysql 上传后台源码到服务域名下 导入数据库 更改<后端>和<后端/admin>目录下的php数据库信息,你的域名,以及小程序的appid及key,对两个文件都要改。 具体参考随带安装教程
使用unity接入本地部署的stablediffusion进行图生图,文生图操作。 unity版本:2021.3.16f1
基于模糊神经网络控制的风光MPPT与VSC逆变并网仿真模型:对一二三等负荷的功率分配优化研究,基于模糊神经网络控制的风光MPPT与VSC逆变并网仿真模型:实现功率分配与负载优化算法的仿真研究,引入模糊神经网络对123等级负荷进行功率分配的风光MPPT+VCS逆变并网simiulink matlab仿真模型 仿真模块组成: (1)光伏MPPT30kW (2)直驱风机MPPT30kW (3)VSC控制 (4)模糊逻辑控制器负载优化算法 (5)一、二、三重要等级负荷 (6)升压+输电+并网 ,关键词:模糊神经网络; 功率分配; 风光MPPT+VCS逆变并网; 仿真模型; 光伏MPPT; 直驱风机MPPT; VSC控制; 模糊逻辑控制器; 负载优化算法; 重要等级负荷; 升压; 输电; 并网。,基于模糊神经网络的MPPT+VCS逆变器在风光互补系统中的功率分配仿真研究
EPLAN P8部件库:Pai型号低压电气控制系统设计常用品,高效导入,小巧便捷,专业工具助力高效设计!,EPLAN P8部件库之Pai型号:低压电气控制系统设计常用品,高效导入小文件,便捷实用,EPLAN P8部件库:包含低压电气控制系统设计常用品Pai型号。 导入单个文件很小几十M,简单易用 ,EPLAN P8部件库;低压电气;控制系统设计;Pai型号;文件导入;简单易用,EPLAN P8低压电气部件库:Pai型号集成,小巧易用设计首选
北京大学-DeepSeek系列-提示词工程和落地场景
基于非合作博弈模型的多微网交易策略与动态定价研究——以Matlab平台实现探索,基于非合作博弈模型的多微网交易策略研究与实现:Matlab平台下的动态定价与P2P交易探索,关键词:非合作博弈 多微网 交易策略 编程语言:matlab平台 主题:基于非合作博弈模型多微网交易策略研究 参考文档:《基于博弈论的多微电网系统交易模式研究》完全复现 内容简介: 代码主要做的是微电网电能交易以及动态定价的问题,首先构建了多微网的基本效用函数模型,考虑了微网的发电成本、电 购电收益,以及平台提供P2P交易的服务费用,同时博弈双方定义为P2P交易中的电微网以及上级市场运营商,博弈策略则为提供服务费用以及P2P交易电价费用,整体复现结果和文档一致,该代码具有一定的创新性,适合新手学习以及在此基础上进行拓展 ,非合作博弈;多微网;交易策略;P2P交易;动态定价;效用函数模型;服务费用;上级市场运营商;matlab平台,Matlab实现:基于非合作博弈的多微网交易策略研究与动态定价问题
附件带文本教程和视频教程 每月更新!
人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。
项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途,网络商品/电子资源资料具可复制性不支持退款。质量优质,放心下载使用。
智能中控主机设计套件软件-ICS1000
Matlab 2016下的统一电能质量变换器(UPQC)仿真研究:ip-iq检测与电压电流补偿技术探究,统一电能质量变换器(UPQC)Matlab Simulink仿真实现与ip-iq检测技术——电压电流补偿的研究应用(基于Matlab2016环境),统一电能质量变器(UPQC)Matlab simulink仿真,ip-iq检测,电压电流补偿,软件版本matlab2016 ,统一电能质量变换器(UPQC);Matlab simulink仿真;ip-iq检测;电压电流补偿;软件版本matlab2016,Matlab 2016版UPQC仿真:IP-IQ检测与电压电流补偿技术研究
各类电梯设备技术图纸与部件资料集,电梯图纸总览:主板、变频器图纸大集合,包括多种型号规格细节解析,各类电梯图纸,主板,变频器图纸 E:\各类电梯图纸,主板,变频器图纸\图纸 ├─0VFR2B-403.404 HVIB..pdf 6.46MB ├─1_2_1_PV33-3L.pdf 601.59KB ├─1_PV33-3L.pdf 601.59KB ├─1_RV33-4NV(1).pdf 1.64MB ├─778 P1.pdf 28.67MB ├─ABA26800AKT--GDCB线路板图纸.pdf 4.18MB ├─ACD4 UD- 403图纸 KDA26800ACC.pdf 1.5MB ├─GECB 程序版 ABA26800AML.pdf 3.5MB ├─GECB-AP.pdf 6.5MB ├─GECB-EN主板GBA26800LC.pdf 2.24MB ├─gvf3
跳频通信系统MATLAB仿真.rar。内容来源于网络分享,如有侵权请联系我删除。
版本号:1.6.4 – 全国无限开版 【修复】商户页面打开显示空白问题 版本号:1.6.3 – 全国无限开版 修复某些情况下远程视频文件不能删除的问题 版本号:1.6.2 – 全国无限开版 修复部份手机抽奖奖品图PNG黑底 优化代码结构