`
kingwudy
  • 浏览: 3684 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类

读书笔记-《大型网站系统与Java中间件实践》-第二章

阅读更多

大型网站及其架构演进过程

——你的网站现在哪个阶段?

本章首先介绍了大型网站的特征:海量数据、高并发的访问量、网站本身业务和系统的复杂度。基于这些特点,可以确定大型网站必然是一种很常见的分布式系统,而本书重点要介绍的中间件系统也是在大型网站的架构变化中出现并发展的。

然后透过透过一个交易网站的架构演进史来形象反应了大型网站的架构演进过程

大型网站中,其实最核心的功能就是计算和存储。一个网站从小到大的演进可以说都是在围绕着这两个方面进行处理。

通常我们会选择一个开源的Server作为容器,直接使用JSP/Servlet等技术或者使用一些开源框架来构建我们的应用选择一个数据库管理系统来存储数据,通过JDBC进行数据库的连接和操作

2.2.1 Java技术和单机来构建的网站。如图2-3


2-3 技术单机构建的网站

2.2.2 从一个单机的交易网站开始:我们重点关注的是随着数据量、访问量提升,网站结构发生变化。


  
2-4 基于Java技术用单机构建的交易网站

    各个功能模块之间是通过JVM内部的方法调用来交互,而应用和数据库之间是通过JDBC访问。

2.2.3 单机负载告警,数据库与应用分离

    随着服务器的负载持续升高,把数据库与应用从一台机器分到两台机器,调整以后我们能够缓解当前的系统压力


 
2-5 应用与数据库分开的结构

2.2.4 应用服务器负载告警,如何让应用服务器走向集群

    应用服务器压力变大时,把应用从单机变为集群应用服务器从一台变为了两台,用户对两个应用服务器访问的选择问题:可以通过DNS来解决,也可以通过在应用服务器集群前增加负载均衡设备来解决。


 
2-6 应用服务器集群

2.2.4.1 引入负载均衡设备


 
2-7 引入负载均衡设备的结构

2.2.4.2 解决应用服务器变为集群后的Session问题

    在会话开始时,分配一个唯一的会话标识(SessionId),通过Cookie把这个标识告诉浏览器,以后每次请求的时候,浏览器都会带上这个会话标识来告诉Web服务器请求是属于哪个会话的。在Web服务器上,各个会话有独立的存储,保存不同会话的信息。如果遇到禁用Cookie的情况,一般的做法就是把这个会话标识放到URL的参数中。


 
2-8 Session

    会话数据是需要保存在各台单机上的


 
2-9 负载均衡、应用集群与Session

Session问题的几种解决方案

1Session Sticky:保证同一个会话的请求都在同一个Web服务器上处理。这需要负载均衡器能够根据每次请求的会话标识来进行请求转发。


 
2-10 Session Sticky方式

    在负载均衡器上做了“手脚”。同时也带来了如下几个问题:

    1.1、如果有一台Web服务器宕机或者重启,那么这台机器上的会话数据会丢失;

    1.2、负载均衡器需要进行应用层(第7层)的解析,这个开销比第4层的交换要大。负载均衡器变为了一个有状态的节点;

    1.3这种做法内存消耗会更大,容灾方面会更麻烦。

2Session Replication:在每个服务器中存放一套Session数据


 
2-11 SessionReplication方式

    Web服务器之间则增加了会话数据的同步Session复制)。这个方案本身也有问题,而且在一些场景下,问题非常严重

    2.1、同步Session数据造成了网络带宽的开销

    2.2、每台Web服务器都要保存所有的Session数据

    2.3、这个方案不适合集群机器数多的场景。

3Session数据集中存储:Web服务器之间没有了Session数据复制,并且Session数据也不是保存在本机了,而是放在了另一个集中存储的地方。


 
2-12 集中存储Session方式

    存在的问题:

    3.1、读写Session数据引入了网络操作

    3.2、如果集中存储Session的机器或者集群有问题

4Cookie BasedSession数据放在Cookie


 
2-13 CookieBased的方式

    存在的不足:

    4.1Cookie长度的限制

    4.2、安全问题

    4.3、带宽消耗

    4.4、性能影响

2.2.4.3 Session问题小结

    对于大型网站来说,Session StickySession数据集中存储是比较好的方案,而这两个方案又各有优劣,需要在具体的场景中做出选择和权衡。

2.2.5 数据读压力变大应用读写分离

2.2.5.1 采用数据库作为读库

    大型网站读多写少增加一个读库


 
2-14 加入读库后的架构

    增加一个读库对结构影响写操作要走主库,事务中的读也要走主库,不同业务选择也会有差异。广义的读写分离可以扩展到更多的场景,实际上是增加了读“源”

同时也带来两个问题:

    1数据复制问题。

    2应用对于数据源的选择问题。

    数据库系统方面的支持:

    1一般都提供了数据复制的功能

    2、数据复制时延

    3不同的数据库系统有不同的支持

    3.1MySQL支持Master(主库)+Slave(备库)的结构,提供了数据复制的机制镜像方式的复制semi-sync

    3.2Oracle,之前接触的主要是Data Guard方案Oracle 10g以前物理备库是不可读的逻辑备库可以提供读服务

2.2.5.2 增加搜索引擎其实是一个读库


 
2-15 引入搜索引擎的结构

    搜索集群(Search Cluster)的使用方式和读库的使用方式是一样的把搜索引擎当成一个读库。

2.2.5.3 加速数据读取的利器——缓存

不管是数据缓存还是页面缓存,都需要考虑缓存命中率的问题。

1.数据缓存

    大型系统中的数据缓存主要用于分担数据库的读的压力,从目的上看,类似于我们前面提到的分库和搜索引擎。特点如下:

    1.1缓存系统一般是用来保存和查询键值(Key-Value)对的

    1.2“热”数据

    1.3通过应用完成的

    1.4最近不被访问的数据就被清除

    1.5在数据库的数据发生变化后,主动把数据放入缓存系统中

    1.6根据数据库记录的变化去更新缓存的代码要能够理解业务逻辑


 
2-16 加入缓存后的结构

2.页面缓存

    ESI就是针对这种情况的一个规范可以采用ESI或者类似的思路来做,也可以把页面缓存与页面渲染放在一起处理

    对于ESI的处理是在Apache中进行


 
2-17 Apache中的ESI模块

    这样的做法更高效,它把渲染与缓存的工作结合在了一起,而且这种做法只是看起来没有前一种方式分工清晰而已


 
2-18 JBoss中的ESI功能

2.2.6 弥补关系型数据库的不足,引入分布式存储系统

    常见的分布式存储系统有分布式文件系统、分布式Key-Value系统和分布式数据库。文件系统是大家所熟知的,分布式文件系统就是在分布式环境中由多个节点组成的功能与单机文件系统一样的文件系统,它是弱格式的,内容的格式需要使用者自己来组织;而分布式Key-Value系统相对分布式文件系统会更加格式化一些;分布式数据库则是最格式化的方式。


 
2-19 引入分布式存储系统的结构

2.2.7 读写分离后,数据库又遇到瓶颈

    数据垂直拆分和水平拆分

2.2.7.1 专库专用,数据垂直拆分

    垂直拆分的意思是把数据库中不同的业务数据拆分到不同的数据库中


 
2-20 数据库垂直拆分后的结构

    如何处理原来单机中跨业务的事务。一种办法是使用分布式事务,其性能要明显低于之前的单机事务;而另一种办法就是去掉事务或者不去追求强事务支持,则原来在单库中可以使用的表关联的查询也就需要改变实现了。可以根据不同业务的特点进行更多优化。

2.2.7.2 垂直拆分后的单机遇到瓶颈,数据水平拆分

    数据水平拆分就是把同一个表的数据拆到两个数据库中读写分离解决的是读压力大的问题水平拆分是把同一个表拆到不同的数据库中我们可以进一步把用户表拆分到两个数据库中,它们拥有结构一模一样的用户表,而且每个库中的用户表都只涵盖了一部分的用户,两个数据库的用户合在一起就相当于没有拆分之前的用户表。


 
2-21 数据水平拆分后的结构

2.2.8 数据库问题解决后,应用面对的新挑战

2.2.8.1 拆分应用

    第一种方式,根据业务的特性把应用拆开两个应用


 
2-22 根据功能拆分应用

    第二种方式,根据功能拆分成三个系统


 
2-23 按功能拆分后的结构

2.2.8.2 走服务化的路

    处于最上端的是Web系统处于中间的是一些服务中心处于下层的则是业务的数据库


 
2-24 服务化结构

    首先,业务功能之间的访问不仅是单机内部的方法调用了,还引入了远程的服务调用。其次,共享的代码不再是散落在不同的应用中了,这些实现被放在了各个服务中心。第三,数据库的连接也发生了一些变化,我们把与数据库的交互工作放到了服务中心连接数据库的任务交给相应的业务服务中心了,这样可以降低数据库的连接数第四,通过服务化,无论是前端Web应用还是服务中心,都可以是由固定小团队来维护的系统,这样能够更好地保持稳定性,并能更好地控制系统本身的发展

2.2.9 初识消息中间件

    消息中间件:面向消息的系统(消息中间件)是在分布式系统中完成消息的发送和接收的基础软件。优点:异步和解耦


 
2-25 消息中间件

2.2.10 总结

    我们通过一张图来看看经过演进之后,我们的网站变成什么样子了


 
2-26 整体结构图

 

    后面关于Java中间件的实践部分(第3章)会继续讲解一些更细节的内容。

 

  • 大小: 14 KB
  • 大小: 23.3 KB
  • 大小: 24.4 KB
  • 大小: 31.3 KB
  • 大小: 36.5 KB
  • 大小: 10.7 KB
  • 大小: 26.9 KB
  • 大小: 28.5 KB
  • 大小: 25.9 KB
  • 大小: 29.2 KB
  • 大小: 38 KB
  • 大小: 54.2 KB
  • 大小: 72 KB
  • 大小: 64.9 KB
  • 大小: 5 KB
  • 大小: 5.2 KB
  • 大小: 70.2 KB
  • 大小: 59.5 KB
  • 大小: 60.7 KB
  • 大小: 39.7 KB
  • 大小: 26.5 KB
  • 大小: 48.6 KB
  • 大小: 12.5 KB
  • 大小: 37.4 KB
分享到:
评论
2 楼 kingwudy 2014-07-01  
zc0604 写道
讲的 很 通俗啊 。

这是好书的特点:把复杂的东西讲的很简单
1 楼 zc0604 2014-06-21  
讲的 很 通俗啊 。

相关推荐

    中间件技术及应用考试复习重点

    #### 第一章 中间件产生背景与分布式环境 ##### 一、中间件的基本概念 1. **中间件定义**:中间件是位于系统软件(如操作系统和网络软件)与应用软件之间的一种软件层。它的主要功能是使不同的应用软件能够跨越...

    EJB学习笔记.doc

    * 第 5 章:实体基础(JPA 全称:Java 持久化 API) * 第 6 章:消息服务(JMS、MDB) * 第 7 章:给 EJB 增加功能(Bean 的调用、公用的标注、依赖注入、拦截器) * 第 8 章:实体高级部分 * 第 9 章:事务 * 第 10...

    flink-table-api-java-1.12.4.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于MPC的微网共享储能日前日内优化调度技术及其实现

    内容概要:本文详细探讨了基于模型预测控制(MPC)的微网共享储能优化调度技术,分为日前优化和日内滚动MPC跟踪两大部分。日前优化部分通过分析居民用电需求,制定储能充放电策略,确保整体能源利用效率最大化。日内滚动MPC跟踪部分则通过预测模型、滚动优化和反馈校正,动态调整储能状态,保持系统稳定。文中提供了多个Python和MATLAB代码片段,展示了具体的技术实现细节,如K-means聚类、CVXPY建模、LSTM+ARIMA混合预测等。 适合人群:从事微网系统设计、储能优化调度的研究人员和技术开发者,以及对模型预测控制感兴趣的工程技术人员。 使用场景及目标:适用于微网系统的储能管理,旨在提高能源利用效率、降低运营成本,并确保系统在各种工况下的稳定性。主要目标是通过合理的储能调度,实现削峰填谷和平抑负荷波动。 其他说明:文章不仅介绍了理论背景,还分享了实际应用中的经验和教训,如处理光伏出力预测误差、优化求解器性能等问题。同时,文中提到的一些关键技术点,如充放电互斥约束、终端约束等,有助于深入理解MPC的应用挑战和解决方案。

    未来互联网:元宇宙、Web3.0与区块链的变革力量

    本书由Bernard Marr撰写,探讨了互联网的第三次演变——未来互联网,即Web 3.0和元宇宙的概念。作者详细分析了元宇宙技术、Web3和区块链如何共同作用,推动互联网向更沉浸式和去中心化的方向发展。书中指出,这一变革不仅将改变我们的日常生活和娱乐方式,还将深刻影响教育、金融、医疗保健以及制造业等多个行业。同时,作者也探讨了政府和公共服务如何利用未来互联网提高效率,以及企业如何在这一变革中重新思考产品、服务和业务运营。书中还强调了未来互联网对技能需求的影响,以及如何在企业中建立适应未来互联网的成功文化,并制定相应的战略。

    flink-connector-jdbc_2.12-1.13.6.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    FPGA中基于VHDL的16阶FIR低通滤波器设计与实现

    内容概要:本文详细介绍了如何使用VHDL语言在FPGA上实现16阶FIR低通滤波器的设计与实现。首先,文中给出了滤波器的基本参数设定,如采样率为50MHz,截止频率为3MHz,并采用汉明窗进行设计。接着,展示了顶层实体声明及其内部逻辑结构,包括移位寄存器作为延迟线以及乘累加操作的具体实现方法。同时提供了完整的VHDL代码片段,涵盖了从顶层实体定义到具体的功能模块,如系数生成、数据移位寄存器和乘累加模块。此外,还讨论了ModelSim仿真的配置与测试激励生成方式,确保仿真结果能够正确反映滤波器性能。最后,针对硬件实现过程中可能出现的问题进行了提示,如时钟约束、资源优化等。 适合人群:具有一定FPGA开发经验的技术人员,尤其是对VHDL编程有一定了解并希望深入研究FIR滤波器实现的人群。 使用场景及目标:适用于需要在FPGA平台上快速搭建并验证FIR低通滤波器的应用场合。主要目标是帮助开发者掌握FIR滤波器的工作原理及其在FPGA上的高效实现方法。 其他说明:文中不仅提供了详细的代码示例,还包括了许多实用的经验分享和技术要点提醒,有助于提高开发效率并减少常见错误的发生。

    车辆紧急防避撞AEB控制系统:基于模糊控制与逆动力学模型的仿真与代码解析

    内容概要:本文详细介绍了车辆紧急防避撞AEB控制系统的构建与实现。首先,文章阐述了驾驶员制动模型,通过模拟人类驾驶者的制动行为,使车辆能够根据实际情况做出适当的制动反应。其次,引入了模糊控制方法用于计算期望减速度,使得车辆能够在面对不确定性环境时作出智能化决策。再次,建立了纵向发动机逆动力学模型,以确定合适的节气门开度,确保车辆的动力输出满足制动需求。此外,还探讨了制动压力与减速度的关系以及风阻和滚动阻力的影响,并展示了具体的代码实现。最后,文章描述了仿真的步骤,强调了验证模型有效性的重要性。 适合人群:从事自动驾驶技术研发的专业人士、对车辆控制感兴趣的工程师和技术爱好者。 使用场景及目标:适用于研究和开发先进的车辆安全辅助系统,旨在提高车辆在紧急情况下的避撞能力,减少交通事故的发生。通过理解和应用文中提供的模型和代码,可以为实际工程项目提供理论支持和技术指导。 其他说明:文章不仅提供了详细的理论解释,还包括了大量的代码示例,便于读者理解和实践。同时,作者还分享了一些实际开发中的经验和技巧,有助于解决可能出现的问题并优化系统性能。

    Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码

    Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源码Python基于Mapreduce批处理的某招聘网站爬虫及可视化展示项目源

    基于 Python 和 Selenium 的完整网页自动化脚本工具案例,用于模拟用户登录一个示例网站、获取用户信息并退出登录(由于实际网站的结构和元素可能不同,实际使用时需要根据目标网站进行调整)

    脚本功能: 自动打开浏览器。 进入指定的登录页面。 输入预设的用户名和密码。 点击登录按钮。 登录成功后获取用户信息并打印。 点击退出按钮并退出登录。 关闭浏览器。 注意事项: 确保已安装适用于您浏览器的驱动程序,例如 ChromeDriver,并正确设置其路径。 在实际应用中,您需要根据目标网站的结构和元素修改选择器(如 By.NAME、By.ID 等)和相应的值。 此脚本仅为示例,实际使用时需要考虑更复杂的场景,例如异常处理、验证码处理、动态元素加载等。 遵守目标网站的使用条款和法律法规,不要用于非法或未经授权的操作。

    groovy-2.2.2.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    【信息安全领域实战项目】

    【信息安全领域实战项目】

    groovy-2.4.15.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    基于滑膜控制的五车编队自适应协同巡航仿真与模型研究

    内容概要:本文探讨了基于滑膜控制的五辆车编队实现自适应协同巡航控制(ACC)的研究。通过carsim/Simulink平台进行仿真,采用分层控制结构,上层滑膜控制器根据前车的距离和速度误差计算期望加速度,下层则通过控制节气门开度和制动压力来实现车速控制。文中展示了详细的算法架构、关键代码片段以及丰富的仿真结果图,验证了滑膜控制在车辆编队中的优越性能,特别是在紧急情况下能够迅速反应并保持稳定的跟车距离。 适合人群:对自动驾驶技术和车辆控制系统感兴趣的科研人员、工程师及高校相关专业学生。 使用场景及目标:适用于研究和开发多车编队的自适应巡航控制系统,旨在提高车队行驶的安全性和效率。具体目标包括减少车速跟踪误差、优化节气门和制动控制、提升紧急情况下的响应速度。 其他说明:提供了详细的滑膜控制理论讲解和技术实现细节,附带完整的仿真数据和工程落地指导,有助于读者深入理解和应用该技术。

    flink-table-common-1.13.3.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    三相桥式整流电路双闭环控制系统设计与MATLAB仿真

    内容概要:本文详细介绍了三相桥式整流电路采用双闭环控制(电流内环和电压外环)的方法及其在MATLAB中的仿真实现。首先阐述了为何需要引入电流内环来提高系统的动态响应速度和稳定性,特别是在负载突变情况下。接着描述了硬件配置,包括六个晶闸管的工作方式以及触发脉冲的生成机制。文中给出了具体的双PI控制器参数设置方法,并展示了如何通过调整电流环和电压环的比例和积分系数来优化系统性能。此外,还讨论了常见的调试问题及解决方案,如同步触发信号的相位补偿、PI参数的选择、采样时间的影响等。最后通过仿真实验数据对比,证明了双闭环控制相比单环控制在稳定性和抗干扰方面有着显著优势。 适合人群:从事电力电子研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于需要深入了解三相桥式整流电路双闭环控制原理并进行仿真实践的学习者;旨在帮助读者掌握双闭环控制系统的参数选择、调试技巧及应用实例。 其他说明:文中提供了大量MATLAB代码片段用于辅助理解和实施具体控制策略,同时分享了许多来自实际项目的经验教训,有助于读者更好地将理论应用于实践中。

    基于Matlab的飞蛾扑火优化算法(MFO)详解及其23个测试函数应用

    内容概要:本文详细介绍了飞蛾扑火优化算法(Moth Flame Optimization, MFO)的原理和实现方法。首先解释了MFO的基本概念,即通过模仿飞蛾绕光飞行的行为来构建优化算法。接着展示了MFO的关键公式和Matlab代码实现,特别是飞蛾位置更新公式的具体形式。文中提供了23个经典的测试函数用于评估MFO性能,并给出了具体的调用方式。此外,还讨论了算法运行效果以及一些重要的调参经验和技巧,如种群数量、迭代次数、边界设定等。最后分享了一个实际应用案例,展示了MFO在光伏电池板排布优化中的成功应用。 适合人群:对优化算法感兴趣的科研工作者、学生以及从事相关领域研究的专业人士。 使用场景及目标:适用于需要高效求解复杂优化问题的研究项目,尤其是涉及多峰函数优化的情况。目标是帮助读者掌握MFO的工作原理并能够独立应用于实际问题中。 其他说明:本文不仅提供了详细的理论讲解和技术细节,还包括完整的代码实现和丰富的实验数据,有助于深入理解和实践MFO算法。

    一个通用的数据库管理工具和SQL客户端,具有许多功能,包括元数据编辑器、SQL 编辑器、富数据编辑器、ERD、数据导出/导入/迁移、SQL 执行计划等

    DBeaver 是一个通用的数据库管理工具和 SQL 客户端,具有许多功能,包括元数据编辑器、SQL 编辑器、富数据编辑器、ERD、数据导出/导入/迁移、SQL 执行计划等。支持 MySQL, PostgreSQL, Oracle, DB2, MSSQL, Sybase, Mimer, HSQLDB、Derby、Teradata、Vertica、Netezza、Informix 等。

    永磁同步电机降阶负载转矩观测器及其前馈补偿的应用研究

    内容概要:本文详细探讨了永磁同步电机(PMSM)中采用降阶负载转矩观测器进行转矩估计的方法,并介绍了将估计得到的负载转矩用于前馈补偿的技术。首先,文章指出传统全阶观测器存在模型复杂、参数调整困难的问题,提出利用降阶观测器简化模型并提高参数调整效率。接着,通过具体的数学推导和MATLAB/Simulink代码展示了降阶观测器的设计过程,强调了关键参数如观测器增益的选择对系统性能的影响。然后,讨论了前馈补偿的具体实现方式,即在速度环输出中加入负载转矩估计值,从而有效减小突加负载引起的转速波动。最后,通过实验数据对比证明了该方法的有效性和优越性,尤其是在应对突加负载时的表现更为突出。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是关注永磁同步电机控制策略优化的专业人士。 使用场景及目标:适用于需要精确控制永磁同步电机转矩的应用场合,如电梯、电动汽车等。目标是提高系统的抗干扰能力和稳定性,减少突加负载导致的转速波动。 其他说明:文中提供了详细的MATLAB和C语言代码示例以及仿真模型构建指南,有助于读者理解和实践所介绍的技术。此外,还分享了一些实用的工程经验和调试技巧,如参数设置范围、注意事项等。

    西门子1200 PLC水处理系统:SCL编程实现模拟量换算、滤波、时间换算及Modbus TCP通讯

    内容概要:本文详细介绍了西门子1200 PLC在水处理系统中的应用,重点讲解了SCL编程实现的关键功能块,包括模拟量换算、滤波、时间换算以及Modbus TCP通讯程序。每个功能块都有详细的代码示例和应用场景说明,展示了如何将模拟量信号转换为数字量、去除信号噪声、进行时间单位换算以及实现设备间的高效通信。此外,文中还提到了一些实用技巧,如仿真环境搭建、电气原理图解读、HMI界面设计等。 适合人群:具备一定PLC编程基础的技术人员,尤其是从事水处理行业自动化控制领域的工程师。 使用场景及目标:① 学习如何利用SCL语言编写高效的PLC功能块;② 掌握水处理系统中常见的信号处理方法;③ 实现PLC与其他设备之间的可靠通信;④ 提升对复杂工业控制系统的设计和调试能力。 其他说明:文中不仅提供了理论知识,还分享了许多实际项目中的经验和优化技巧,帮助读者更好地理解和应用所学内容。

Global site tag (gtag.js) - Google Analytics