1. ehcache使用了LinkedHashMap来存放Element。jdk要1.5以上。Ehcache1.5可以使用jdk1.4
2. 如果在添加Elemtent时,缓存中的Element个数达到了最大缓存数并且overflowToDisk配置的属性为true,Ehcache会更具配置项MemoryStoreEvictionPolicy的失效策略将Element输出到磁盘。如果overflowToDisk为fasle,Ehcache将删除内存中Element
3. 值得注意的是缓存中失效的Element并不会别马上清理掉,所以想得到内存的真实大小应该调用方法calculateInMemorySize()方法。
4. 一个ehcache.xml对应一个CacheManager
5. 不同的缓存应该对应不同的硬盘上的路径,否则会报错
6. 注意要想使用磁盘缓存,缓存的Element必须实现序列化接口。否则会抛出NotSerializableException异常。
7. Ehcache会将每个缓存配置的文件路径下创建一个cache_name.data文件,如果使用的磁盘持久化技术,还会生成一个cache name.index文件。
8. Ehcache有一个后台线程专门做Ellment失效监测以及清除工作。设置线程运行间隔时间,可通过设置diskExpiryThreadIntervalSeconds属性来完成,此值不宜设置过低,否则会导致清理线程占用大量CPU资源。默认值是120秒。
9. 持久化可在Element的diskPersistent配置项中配置,如果配置为“false”或是“omitted”在CacheManager shutdown或是startup后,用来缓存Element的文件将被清除掉。如果设置为“true”,data和index文件会被保存下来,对于新创建的CacheManager Element也是可用的。
10. 使用时必须显示调用cache. Flush()才会将数据缓存到磁盘中。
11. 磁盘缓存步骤:从MemoryStore中把没有失效的Element刷新到DiskStore,Element被写入到data文件,Element将被序列化到index文件。
12. 磁盘缓存大小默认是没有限制的,不过可通过maxElementsOnDisk来指定。当磁盘缓存达到maxElementsOnDisk指定的值时,Ehcache会清理磁盘中的缓存使用默认策略是LFU(使用频率最低)。
13. 在使用完Ehcache后,必须要shutdown缓存。Ehcache中有自己的关闭机制,不过最好在你的代码中显示调用CacheManager.getInstance().shutdown();
14. Cache:对于getValue()能取到可序列化的值;getObjectValue()取得非序列化的值
15. cache.getSize();得到缓存中元素的个数;获得当前MemoryStore中的element数量:cache.getMemoryStoreSize();获得当前DiskStore中element数量:cache.getDiskStoreSize();
16. 在使用完Ehcache后,必须要shutdown缓存。Ehcache中有自己的关闭机制,不过最好在你的代码中显示调用CacheManager.getInstance().shutdown();
17. ehcache-core-1.6—1.7没有任何依赖;ehcache1.7.1依赖SLF4J,以及相应的log的jar包。
18. CacheManager可以通过单例(factory的静态方法)或者构造函数(constructors)创建。分别叫做single model和instance model。当两种情况都有的时候,系统会采用单例模式,构造器每次都生成单例模式
19. 对于想存储数据到硬盘,或者集群时复制到其他缓存区域的数据,必须可序列化。如果不可序列化,该数据在进行上述操作时会被丢弃,且没有报错,只是在debug级别有日志信息。
20. 读取cache的数据,有以下几种方式:
Cache-aside: 直接操作数据
Cache-as-sor:read-through、write-through和write-behind的结合
Read-through:
Write-through:
Write-behind:
21. 从ehcache2.0开始,以下属性可以在运行时改变:
• timeToLive
• timeToIdle
• maxElementsInMemory
• maxElementsOnDisk
• memory store eviciton policy
• CacheEventListeners can be added and removed dynamically []
当eternal属性为“true”时,timeToLive和timeToIdle会失效
22. 以下代码演示怎么运行时修改缓存属性
This example shows how to dynamically modify the cache configuration of an already running cache:
Cache cache = manager.getCache("sampleCache");
CacheConfiguration config = cache.getCacheConfiguration();
config.setTimeToIdleSeconds(60);
config.setTimeToLiveSeconds(120);
config.setMaxElementsInMemory(10000);
config.setMaxElementsOnDisk(1000000);
Dynamic cache configurations can also be frozen to prevent future changes:
Cache cache = manager.getCache("sampleCache");
cache.disableDynamicFeatures();
23. 2.5之前是通过元素的个数来表示内存或者硬盘的大小;2.5之后,通过字节数来表示。2.5暂时还没有出来。新属性将会是:
The new cache attributes are:
• maxBytesOnHeap
• maxBytesOffHeap (formerly maxMemoryOffHeap)
• maxBytesOnDisk
甚至,还可以指定比例,如:maxBytesOnHeap="20%".
24. Ehcache可以将一些数据一直放到缓存或者堆栈或者硬盘或者terracotta的L2中。主要是为了满足Hibernate等一些情况下的需求。但是,这样很容易造成内存溢出的错误
25. 当缓存刚启动时,ehcache提供一个机制可以先加载数据:BootstrapCacheLoader
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.distribution.jgroups.JGroupsBootstrapCacheLoaderFactory"
properties="bootstrapAsynchronously=true"/>
DiskStoreBootstrapCacheLoaderFactory:从硬盘加载数据到堆栈
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.store.DiskStoreBootstrapCacheLoaderFactory"
properties="bootstrapAsynchronously=true"/>
TerracottaBootstrapCacheLoaderFactory:从terracotta的L2中加载数据
<bootstrapCacheLoaderFactory
class="net.sf.ehcache.store.TerracottaStoreBootstrapCacheLoaderFactory"
properties="bootstrapAsynchronously=true"/>
26. 可以配置ehcache在读或者写的时候,做些事情。
CacheConfiguration config = new CacheConfiguration("copyCache", 1000).copyOnRead(true)
Cache copyCache = new Cache(config);
默认此属性是false。
<cache name="copyCache"
maxElementsInMemory="10"
eternal="false"
timeToIdleSeconds="5"
timeToLiveSeconds="10"
overflowToDisk="false"
copyOnRead="true"
copyOnWrite="true">
<copyStrategy class="com.company.ehcache.MyCopyStrategy"/>
</cache>
27. 每一个cache都有一个copyStrategy,所以,该实现是要求线程安全的
在ehcache启动的时候,可以设置缓存失效。命令行启动的时候如下:
java -Dnet.sf.ehcache.disabled=true
其他特殊的系统属性:
1)java -Dnet.sf.ehcache.use.classic.lru=true
当LRU被选中的时候,更老的LruMemoryStore实现策略将会被真正采用
28. ehcache.xml必须遵守ehcache.xsd文件中的要求
29. 当无参的构造函数,或者静态构造方法被调用的时候,系统会在最顶层的classpath路径下找名叫ehcache.xml的配置文件,如果查找失败,会以jar包中的ehcache-failsafe.xml文件(里边的缓存配置极其简单)替代。同时,一个警告会提醒用户建立自己的配置文件。
30. Update checker可以检查是否有最新的ehcache版本。有两个办法可以去掉该功能:
1)通过系统参数:-Dnet.sf.ehcache.skipUpdateCheck=true
2)通过配置文件: <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="false" monitoring="autodetect"
dynamicConfig="true">
31. Ehcache1.6之前只支持ASCII编码,之后,UTF-8也被支持。但UTF-8比ASCII更多落后,所以没必要做专门的转换
32. 每一个Cachemanager应该有自己的独有的ehcache.xml配置文件。因为,当共用时,硬盘缓存路径或者监听端口将会冲突。系统也会发出警告,提醒用户配置专门的配置文件为每一个cachemanager.在分布式系统中,ehcache.xml应该配置成一样的。
33. Ehcache有3个存储:
1) 内存存储
2) 非堆存储(大内存,企业ehcache才拥有)
3) 硬盘存储(两个版本:开源的和企业级ehcache)
34. 内存存储
其本质是使用java的LinkedHashMap来实现的。多线程安全、内存管理安全、速度快
35. calculateInMemorySize()可以用来计算当前ehcache内存占用大小。但生产线上不应该使用,因为这个功能效率非常低
36. 同时,ehcache内部有一个低等级的进程,它会判断元素的是否过期。diskExpiryThreadIntervalSeconds属性可以设置该线程执行的间隔时间(默认是120秒,不能太小,以免影响效率).
37. 非堆存储
Terracotta BigMemory是一个新增的功能,它允许系统占用堆以外的内存,速度是硬盘存储的100倍,允许很大的存储空间被创建(350G被测试过)
因为非堆数据是以字节流的形式存储,所以要求Element的key和value都要是可以序列化的。
因为序列化和反序列化的过程,这种存储形式比内存存储慢10倍
38. 硬盘存储
线程安全的
39. 当maxElementsOnDisk被设置的时候,硬盘上的存储达到限制时,LFU算法会被执行用于清除数据,只能是该算法,不可配置
40. Persistence被设置成false或者omitted,当系统重启时,不会硬盘的数据存储在硬盘上,.data文件将会被删除.相反,.data文件不会被删除,下次重启后Cachemanager还可以使用.data文件。
41. 虚拟机被停止的时候,强烈建议调用Cachemanager.shutdown()方法。
42. 在关闭java虚拟机时,系统执行以下步骤:
Considerations for guidance on how to safely shut the Virtual Machine down.
When a DiskStore is persisted, the following steps take place:
• Any non-expired Elements of the MemoryStore are flushed to the DiskStore
• Elements awaiting spooling are spooled to the data file
• The free list and element list are serialized to the index file
On startup the following steps take place:
• An attempt is made to read the index file. If it does not exist or cannot be read successfully, due to disk corruption, upgrade of ehcache, change in JDK version etc, then the data file is deleted and the DiskStore starts with no Elements in it.
• If the index file is read successfully, the free list and element list are loaded into memory. Once this is done, the index file contents are removed. This way, if there is a dirty shutdown, when restarted, Ehcache will delete the dirt index and data files.
• The DiskStore starts. All data is available.
• The expiry thread starts. It will delete Elements which have expired.
43. 一个示范性地配置:
把一个拥有8G机器内存的存储分配成各种存储。设想有一个7G的数据集,共7M个元素,每个元素1k大小。
我们设置1G的堆存储和7G的非堆存储:
java -Xms1G -Xmx1G -XX:maxDirectMemorySize=7G
对应的配置文件为:
<cache
maxElementsInMemory=100
overflowToOffHeap="true"
maxMemoryOffHeap="7G"
... />
44. 对于第二种集群方法,以下服务器被测试过:
• Glassfish V2/V3
• Tomcat 6
• Jetty 6
Tomcat 6通过了所有的继集成测试
支持Weblogic10.3.2,但是SOAP不兼容。
45. 最大的Ehcache单实例在内存中可以缓存20GB,最大的磁盘可以缓存100GB
分享到:
相关推荐
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本小型诊疗预约平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此小型诊疗预约平台利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理病例管理、字典管理、公告信息管理、患者管理、单页数据管理、药品管理、医生管理、医生收藏管理、医生留言管理、医生预约挂号订单管理、管理员管理等功能。小型诊疗预约平台的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:小型诊疗预约平台;SSM框架;Mysql;自动化
内容概要:本文详细介绍了从230V交流输入到400V直流输出的有源功率因数矫正(APFC)系统的实现方法和技术要点。首先解释了不可控桥式整流的作用及其局限性,然后重点讨论了Boost型PFC电路的设计,包括电感的选择、控制算法的实现以及相关硬件配置。文中提供了具体的C语言和Python代码片段来帮助理解开关管控制逻辑和电感量计算。此外,还分享了一些实际调试过程中遇到的问题及解决方案,如EMI问题、电流环控制策略等。 适合人群:从事电力电子设计的技术人员,尤其是对APFC技术感兴趣的工程师。 使用场景及目标:适用于需要高效能电源转换的应用场合,如工业电源、通信基站等。目标是提高功率因数,降低谐波污染,确保电能的有效利用。 其他说明:文章不仅涵盖了理论知识,还包括了许多实用的经验技巧,对于理解和掌握APFC的实际应用非常有帮助。同时提醒读者,在实际项目中还需考虑更多因素,如过流保护、过压保护、电磁兼容性等。
内容概要:本文详细介绍了ABB机器人数据采集与监控系统的多种应用场景和技术实现方式。首先展示了如何通过RAPID程序实现实时坐标采集,利用Socket通信将位姿数据发送出去。接着讲解了用Python进行远程IO信号控制的方法,以及通过FTP和批处理脚本实现程序的远程更新。此外,还探讨了系统快照备份、日志分析等功能的具体实现步骤。文中强调了网络通信、位姿数据采集、程序传输、系统备份和日志分析等方面的技术细节,并提供了多个代码示例。 适合人群:从事工业自动化、机器人工程及相关领域的技术人员,特别是那些希望深入了解ABB机器人数据采集与监控系统的开发者。 使用场景及目标:适用于需要对ABB机器人进行数据采集、远程控制、程序更新和系统维护的实际工程项目。主要目标是提高工作效率,减少人工干预,确保系统的稳定性和可靠性。 其他说明:文中不仅提供了详细的代码示例,还分享了许多实践经验,如避免常见错误、优化性能等。同时提醒使用者在操作过程中保持谨慎,以防止意外情况的发生。
内容概要:本文详细介绍了两种应用于自动驾驶领域的激光雷达检测算法及其源码实现。第一种算法基于点云聚类,利用DBSCAN算法对点云数据进行聚类,从而识别出不同的物体。第二种算法基于特征提取,通过计算FPFH特征并使用RANSAC进行配准,实现点云的特征匹配。此外,文中还探讨了体素化处理和基于深度学习的PointPillars变种方案,分别适用于嵌入式设备和复杂场景。每种算法均配有示例代码、数据包及安装使用文档,方便开发者直接应用于项目中。 适合人群:从事自动驾驶技术研发的工程师和技术爱好者,尤其是对激光雷达点云处理感兴趣的读者。 使用场景及目标:①帮助开发者理解和实现激光雷达点云处理算法;②提供实际工程项目中可复用的代码和数据包;③提高自动驾驶系统的环境感知能力和检测精度。 其他说明:文中提到的代码和数据包已在实际项目中验证有效,能够直接应用于自动驾驶项目的开发。同时,针对不同硬件平台(如Jetson Xavier、RTX 3080)给出了具体的优化建议。
内容概要:本文详细介绍了选择排序算法的核心原理、具体实现步骤、性能分析及其优化方法。选择排序作为一种简单直观的排序算法,通过每一轮从未排序部分选择最小(或最大)元素并将其放置到已排序部分的末尾,逐步实现整个数组的排序。文章还提供了Python代码实现,并对其进行了逐行解析。此外,文中讨论了选择排序的时间复杂度、空间复杂度和稳定性,分析了其在不同场景下的优缺点,并与快速排序、冒泡排序进行了对比。最后,介绍了双元选择排序的优化方法及其性能提升效果。 适合人群:适合初学者和有一定编程基础的学习者,尤其是对数据结构和算法感兴趣的读者。 使用场景及目标:适用于小规模数据处理、资源受限环境(如嵌入式系统)、教学领域等。目标是帮助读者理解选择排序的工作机制,掌握其编码实现,并能在适当场景中应用。 其他说明:选择排序虽然时间复杂度较高,但在特定条件下仍有一定的实用价值。通过学习选择排序,读者不仅能掌握一种具体的排序算法,还能从中体会到算法设计的思想和方法。
内容概要:本文详细介绍了基于STM32F103C8的两轮平衡车的设计与实现,重点探讨了卡尔曼滤波和PID算法在姿态解算和运动控制中的应用。首先,针对MPU6050传感器返回的噪声数据,利用卡尔曼滤波进行平滑处理,确保角度数据的准确性。接着,通过PID控制器调节电机转速,使平衡车能够在动态中保持直立。文中还涉及了电机驱动、电压补偿以及参数调优的具体方法和技术细节。最终,通过不断的调试和优化,成功实现了平衡车的稳定运行。 适合人群:具有一定嵌入式开发经验的研发人员,尤其是对卡尔曼滤波和PID控制感兴趣的工程师。 使用场景及目标:适用于希望深入了解姿态解算和运动控制原理的研究者和开发者。目标是掌握如何将理论应用于实际工程项目中,提高对传感器数据处理和控制系统设计的理解。 其他说明:文中提供了详细的代码片段和调试技巧,有助于读者更好地理解和复现实验结果。此外,还分享了一些实用的经验教训,如参数选择、硬件选型等方面的注意事项。
内容概要:本文详细介绍了如何使用C# WinForms构建一个纯原生的工作流表单设计器,涵盖动态控件生成、拖拽移动、对齐辅助线、属性调整等功能模块。作者通过具体代码示例展示了如何利用鼠标的MouseDown、MouseMove和MouseUp事件实现控件的创建、移动和对齐,同时提供了对齐辅助线、属性调整等实用功能的具体实现方法。此外,还讨论了如何通过自定义控件、事件处理和绘图功能进一步增强设计器的功能。 适合人群:具有一定C#编程基础,尤其是对WinForms感兴趣的开发者。 使用场景及目标:适用于需要快速搭建工作流表单的应用场景,如企业内部审批流程管理系统的开发。主要目标是帮助开发者掌握WinForms的基本绘图和事件处理机制,以及如何通过原生控件实现复杂的设计器功能。 其他说明:文中强调了使用原生控件而非第三方库的优势,如灵活性高、便于理解和调试。同时也提供了一些扩展功能的方向,如序列化保存、连线功能和验证逻辑等。
内容概要:本文详细介绍了基于欧姆龙NJ501-1400控制器和EtherCAT总线的全自动锂电池二封机的设计与实现。系统集成了松下A6伺服电机、温控器、真空压力传感器、二维条码读取装置等多种设备,实现了高效稳定的生产工艺。文中重点讨论了EtherCAT总线的高速同步特性、伺服轴控制的功能块封装、扫码模块的通信优化、配方管理和故障记录等功能的具体实现方法和技术难点。此外,还分享了调试过程中遇到的问题及其解决方案,如伺服轴参数配置、扫码枪丢包处理、温控PID自整定等。 适合人群:从事工业自动化控制系统的工程师和技术人员,尤其是熟悉PLC编程、EtherCAT总线技术和锂电池生产设备的专业人士。 使用场景及目标:适用于需要深入了解和掌握锂电池二封机自动化控制系统的开发人员。目标是帮助读者理解如何利用欧姆龙NJ/NX系列PLC和EtherCAT总线构建高效的自动化生产线,提高设备的整体性能和可靠性。 其他说明:文章不仅提供了详细的代码示例和技术细节,还分享了许多宝贵的实践经验,对于解决实际工程中的常见问题具有很高的参考价值。
内容概要:本文详细介绍了基于FPGA的四相八拍步进电机控制系统的开发过程。主要内容包括:1. 使用VHDL和Verilog编写LED显示屏驱动代码,用于显示角度、学号和姓名等信息;2. 实现步进电机的正反转控制,通过状态机管理相序变化;3. 开发加速减速控制模块,确保电机启动和停止时的平稳性;4. 设计调速功能,通过调节脉冲频率实现速度控制。此外,文中还讨论了调试过程中遇到的问题及其解决方案。 适合人群:对FPGA开发和步进电机控制感兴趣的电子工程师、嵌入式系统开发者以及相关专业的学生。 使用场景及目标:适用于需要高精度运动控制的应用场合,如工业自动化、机器人技术和精密仪器等领域。目标是帮助读者掌握FPGA控制步进电机的基本原理和技术细节。 其他说明:文中提供了详细的代码片段和调试经验分享,有助于读者更好地理解和应用所学知识。同时,作者还提到了一些实用技巧,如通过PWM调节实现多级变速,以及如何避免步进电机的共振问题。
immich相册系统docker镜像文件之一
内容概要:本文深入探讨了基恩士KV8000控制器在全自动锂电池注液封装机中的应用。该系统采用了多种先进的硬件组件,如威伦通触摸屏、EtherCAT总线模块、松下A6伺服、SMC真空压力表和欧姆龙E5CC温控器等。通过详细讲解KV8000的硬件搭建、通信机制、伺服轴多位置变址控制、温度控制、人机交互等功能,揭示了其在工业自动化领域的卓越性能。文中还介绍了如何通过简化编码、优化通信协议、增强故障记录等方式提升系统的稳定性和易用性。 适合人群:从事工业自动化、机电一体化及相关领域的工程师和技术人员。 使用场景及目标:适用于希望深入了解工业自动化控制系统的设计与实现,尤其是锂电池生产设备的技术人员。目标是掌握KV8000控制器的应用技巧,提高生产效率和产品质量。 其他说明:文章不仅提供了理论知识,还包括大量实用的代码片段和实践经验分享,有助于读者快速理解和应用。
内容概要:本文详细介绍了三菱PLC时间锁机程序2.0的设计与实现,重点讲解了三期时间锁的设置方法及其扩展方式。程序通过比较PLC内部时钟与预设时间来决定是否触发停机信号。主要内容包括时间锁的核心逻辑、多期时间控制、停机控制、临时解锁机制以及注意事项。文中还提供了具体的梯形图代码示例,帮助读者理解和应用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉三菱PLC编程的从业者。 使用场景及目标:适用于需要精确时间管理的自动化设备,如租赁设备管理、按服务周期收费的设备等。主要目标是确保设备在特定时间内正常运行,超过规定时间则自动停机,防止非法使用。 其他说明:建议定期备份程序并更换PLC内部时钟电池,以确保系统的稳定性和准确性。同时,注意不要将锁机信号误接到安全回路,以免引发安全隐患。
内容概要:本文详细记录了利用COMSOL进行基于开口谐振环(SRR)的二次谐波产生的建模过程。首先介绍了SRR的基本概念及其在非线性光学中的重要性,随后逐步讲解了几何建模、材料属性设置、物理场配置、求解器配置以及后处理的具体方法。文中还分享了许多实用的操作技巧,如参数化控制几何尺寸、非线性材料属性的正确设置、频率设置中的双频模式、网格划分的优化策略等。此外,作者还提供了多个避免常见错误的经验之谈,确保仿真的顺利进行。 适合人群:从事非线性光学研究、超材料设计及相关领域的科研人员和技术爱好者。 使用场景及目标:帮助读者掌握COMSOL中SRR二次谐波仿真的完整流程,提高仿真效率并减少错误发生。具体目标包括:①理解SRR在非线性光学中的应用;②学会正确的建模、材料选择和物理场设置;③掌握求解器配置和后处理技巧;④避免常见的仿真陷阱。 其他说明:文章不仅提供了详细的理论解释,还结合了大量实践经验,使读者能够更好地理解和应用相关知识。
内容概要:本文详细介绍了基于Java构建的物联网云平台的全套源码,涵盖了设备管理、传感器管理、开关状态记忆、通讯协议与机制、任务与记录、用户与权限管理、前端与安全、开发便捷性等多个功能模块。平台采用了MQTT、Spring Boot、Shiro、MyBatis、Ehcache、Thymeleaf、Bootstrap、Swagger等一系列主流技术,实现了设备远程控制、传感器数据处理、权限管理和数据可视化等功能。文中不仅展示了具体的代码实现,还深入探讨了设计思想和技术细节,如指令生命周期管理、滑动窗口算法、设备级权限控制、状态同步机制等。 适合人群:具备一定Java编程基础,尤其是对物联网开发感兴趣的开发人员、研究人员和技术爱好者。 使用场景及目标:适用于希望深入了解物联网云平台架构和实现细节的技术人员,帮助他们掌握设备远程控制、传感器数据处理、权限管理等方面的知识,从而应用于实际项目开发或研究工作中。 其他说明:该平台提供了丰富的功能模块和详细的代码示例,能够作为学习和开发的基础框架。通过对平台源码的学习,开发者可以获得宝贵的实践经验,提升技术水平。
内容概要:本文详细介绍了单相交流调压、三相交流调压(含带中性线的三相调压)的技术原理及其应用场景。文中不仅阐述了通过控制晶闸管触发角来调节输出电压的方法,还提供了Python、Verilog和MATLAB/Simulink的代码示例,展示了不同触发角下电压波形的变化特性。此外,文章探讨了三相桥式半控整流电路在不同负载条件下的仿真表现,强调了触发角和负载性质对输出波形的影响。 适合人群:从事电力电子研究和技术开发的专业人士,以及对电力电子技术感兴趣的工程技术人员。 使用场景及目标:帮助读者深入理解单相和三相交流调压的基本原理,掌握通过编程手段模拟调压过程的方法,提升对实际电路设计和故障排查的能力。 其他说明:文章通过具体的代码实例和波形分析,使理论与实践相结合,有助于读者更好地理解和应用相关技术。同时提醒读者注意实际应用中的潜在问题,如谐波污染、中性线过载等。
内容概要:本文详细介绍了如何利用MATLAB搭建Z源光伏并网系统的仿真模型,重点探讨了扰动观察法(P&O)实现最大功率点跟踪(MPPT)以及电压电流双闭环控制的具体方法。文中通过具体代码展示了直通矢量法在Z源逆变器中的应用,解释了如何通过调整开关管的状态来实现电压提升,并讨论了双闭环控制中PID控制器的参数设置及其对抗电网扰动的作用。此外,文章还分享了一些仿真过程中的实践经验,如初始化设置、仿真精度和参数调整等方面的问题。 适合人群:从事电力电子、新能源发电领域的研究人员和技术人员,尤其适用于有一定MATLAB/Simulink基础并对光伏并网系统感兴趣的读者。 使用场景及目标:①帮助读者理解Z源逆变器的工作原理及其在光伏并网系统中的优势;②掌握扰动观察法和双闭环控制的具体实现方法;③提高仿真模型的准确性,为实际系统的设计和优化提供参考。 其他说明:文章强调了仿真过程中的一些关键技术和注意事项,如直通矢量的插入策略、PID参数的整定、仿真精度的选择等。通过对这些技术细节的深入探讨,旨在为读者提供一个完整的Z源光伏并网系统仿真解决方案。
用html创作的一个方田教育App下载单机网站,未经许可请勿转载!!!
本文章实现TCP、WIFI、串口工具的功能开发,这样方便与单片机MCU进行上下位机相互通信调试。 实现的TCP连接界面 文章地址:https://blog.csdn.net/u011463646/article/details/117969241
内容概要:本文详细介绍了支持TCP/IP、HTTP、MQTT通讯协议的物联网平台源码,重点讲解了其架构设计和技术实现。该平台主要由后台服务、传感器解析服务和web展示三部分组成,涵盖了实时数据采集、报警管理、历史数据分析、报表导出等功能。文中提供了多个代码示例,如通过HTTP协议获取传感器数据、使用MQTT协议进行消息传递、报警信息管理等。此外,还深入探讨了协议解析、数据流处理、权限设计等核心技术模块,展示了如何通过Go、Python、C/C++、JavaScript等语言实现这些功能。同时,针对海康摄像头的特殊需求,提出了环形缓冲区设计、动态协议适配等解决方案。 适合人群:具备一定编程基础,尤其是对物联网开发感兴趣的开发者和技术爱好者。 使用场景及目标:适用于希望深入了解物联网平台开发的技术人员,旨在帮助他们掌握多种通讯协议的集成方法,提高数据处理效率,增强系统的稳定性和扩展性。 其他说明:本文不仅提供了详细的代码示例,还分享了许多实际开发中的经验和技巧,如协议解析、数据流处理、权限设计等,有助于读者快速上手并应用于实际项目中。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。