`
liuguofeng
  • 浏览: 456097 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

细说Cache(转)

    博客分类:
  • Java
 
阅读更多

http://blog.csdn.net/yanghua_kobe/article/details/7093421

 

什么是缓存?

Web 应用程序通常都是被多个用户访问。一个Web站点可能存在一个“重量级”的加载,它能够使得站点在访问的时候,拖慢整个服务器。当站点被大量用户同时访问的时候,访问速度缓慢是大部分网站共同存在的问题。为了解决这个问题,我们可以使用一个更高级别的硬件配置,负载均衡器,高带宽,但是加载并不是拖慢站点唯一的“罪魁祸首”,所以我们需要提供一种方案,它也同样能够加速数据访问以及提升性能。而采用缓存正是一种很不错的解决方案。

缓存是一种能够存储我们通常需要使用的数据的技术,它能够把web 页面暂时存储在本地的硬盘上以供后续的检索。这种技术在多个用户同时访问一个站点,或者一个用户多次访问一个站点时,有效地提升了访问速度。为Web应用程序做的缓存可以发生在客户端(浏览器缓存),可以作用在客户端和服务端之间的一个服务器上(代理缓存/反向代理缓存),或者只作用在web服务器本身(页面缓存或数据缓存)。

我们可以选择花费大量的时间来存储缓存数据以提升应用程序的性能,但这并没有真正意义上达到我们的目的。因为如果我们考虑到Web 服务器的负载,我们就不得不考虑缓存数据存储的位置。接下来一节我们来讨论缓存的不同位置。

 

缓存所在的不同位置

一个web应用程序的缓存要么处于客户端(客户端浏览器),在客户端与服务器之间(代理或反向代理缓存),要么处于服务端(数据缓存、页面输出缓存)。所以我们就能够区分出缓存的位置:

   1、  客户端缓存

2、  代理缓存

3、  反向代理缓存

4、  Web服务器端缓存

1、  客户端缓存

在采用客户端缓存时,客户端浏览器通过在本地硬盘上存储缓存的数据作为一个零时文件,或者存储在浏览器的内部存储器上来执行缓存操作。它提供了一种快速访问相同数据的方式,因为它拒绝任何的网络加载以及服务端加载。该数据不能够被其他客户端共享,所以是客户端独有的。

 

优势

1、  因为数据存储在本地客户端,所以可以很容易地访问

2、  避免了网络传输

劣势

1、  缓存的数据独立于浏览器,所以是无法被共享的

2、 代理缓存

客户端缓存的主要的劣势是数据存储在客户端浏览器,属于客户端私有的。而代理缓存使用一种独有的服务器在服务端与客户端之间以一种共享的“位置”来缓存数据,所以所有的客户端都可以使用相同的共享数据。代理服务器(例如微软的代理服务器)来满足所有对web页面的请求,而无需将请求跨越网络传输到最终的web服务器,这能够使得快速访问成为现实。


 

代理缓存通常位于网络的网关附近来减少带宽的使用。有时通过多代理缓存服务器的使用来缓解大量用户访问代理的压力。这被称之为一种缓存集群。


 

优势

1、  数据被缓存在代理服务器可以很容易就被访问

2、  减少网络通信

劣势

1、  涉及到部署以及为了维护代理缓存服务器的基础设施的开销

3、反向代理缓存

 有些代理缓存服务器可以被防止到web 服务器的前端来减少他们接受到的请求的数量。它允许代理服务器处理通常接受到的请求,而仅仅传递其他的“特殊”请求给服务器。这称之为反向代理。


 

优势

1、  被缓存在反向代理服务器上的数据可以很容易地获得

2、  减少请求的数目

劣势

1、  当该服务器被配置在web服务器的前端,它可能导致额外的网络通信

4、web服务器缓存

在web服务端做缓存,缓存的数据被存储在web服务器上。数据缓存以及页面缓存可以使用web服务器这种缓存方案。


 

优势

1、  提高站点的性能,减少了从数据库以及其他服务器检索数据的开销。

劣势

1、  增加了网络加载开销

缓存的优势

1、  减少服务端的负载

2、  减少了带宽的消耗

ASP.NET中的缓存

Asp.net提供对页面、部分页面(页面片段),以及数据的缓存。缓存一个动态生成的页面被称之为页面输出缓存。当一个动态生成的页面被缓存,它只是第一次被访问。任何后续对相同页面的请求都将从缓存返回。Asp.net也提供缓存页面部分的缓存方式,被称之为部分页面缓存或者页面片段缓存。当采用数据缓存时被缓存的服务端数据(例如来自数据库的数据、XML数据)能够被简单地访问,而无需做再次检索。缓存减少了从数据库或其他数据源获取数据的开销。Asp.net提供一种“全套的”数据缓存引擎,包括清除(基于缓存的优先级),过期,文件,键,以及时间依赖。在asp.net中,有两种缓存形式可以提升性能。


 

在上面的图片中,(1)用来返回页面的缓存,这意味着它是用于输出缓存的,而(2)使用数据缓存,通过存储数据来减少获取数据的开销。

Asp.net支持两种形式的过期策略,这决定了什么时候对象将失效或者被从缓存中移除。

绝对过期:绝对过期发生在一个标识的时间。绝对过期时间被标识为一种全日期格式(hh:mm:ss)。在标识的时间,对象将从缓存中过期。

Asp.net 支持三种类型的缓存:

1、  页面输出缓存【输出缓存】

2、  页面片段缓存【输出缓存】

3、  数据缓存

 

不同类型的缓存

1、  页面输出缓存:在开始页面输出缓存之前,我们需要知道生成一个页面的过程,因为基于生成的页面,我们应该能够理解为什么我们应该使用缓存。一个aspx页面经过两个阶段的处理后被完成。首先,代码被编译进MSIL。然后,在执行期间,MSIL被编译到本地代码(通过JIT,即‘即时编译器’)。当我们编译站点的时候,一个asp.net页面的整个代码都被编译如MSIL,但是在执行的时候,仅仅只有部分MSIL被转换为本地代码,这提升了性能。


 

现在,不管我们得到了什么,如果有某个页面不是经常的变化,JIT就不需要每次都编译它。我们可以为那些内容相对静态的页面使用输出缓存。而不是对每个用户的请求,都去生成一个页面,我们可以使用页面输出缓存,以使得它可以从缓存中访问其自身。页面只需要被生成一次,然后的请求都从缓存中获取。页面输出缓存允许一个页面的整个内容都存储在缓存中。

在这幅图中,当第一次请求生成完页面,页面被缓存,而对之后的相同页面的请求,该页面会被从缓存中检索出,而不是再次生成。

对输出缓存,一个OutputCache属性可以被直接添加到任何一个asp.net页面,指定一个该页面被缓存的持续时间(秒)

示例

  1. <%@ Page Language="C#" %>  
  2. <%@ OutputCache Duration='300' VaryByParam='none' %>  
  3. <html>  
  4.   
  5.   <script runat="server">  
  6.     protected void Page_Load(Object sender, EventArgs e) {  
  7.         lbl_msg.Text = DateTime.Now.ToString();  
  8.     }  
  9.   </script>  
  10.   
  11.   <body>  
  12.     <h3>Output Cache example</h3>  
  13.     <p>Page generated on:  
  14.        <asp:label id="lbl_msg" runat="server"/></p>  
  15.   </body>  
  16. </html>  
<%@ Page Language="C#" %>
<%@ OutputCache Duration='300' VaryByParam='none' %>
<html>

  <script runat="server">
    protected void Page_Load(Object sender, EventArgs e) {
        lbl_msg.Text = DateTime.Now.ToString();
    }
  </script>

  <body>
    <h3>Output Cache example</h3>
    <p>Page generated on:
       <asp:label id="lbl_msg" runat="server"/></p>
  </body>
</html>

我们也可以在后台代码里设置缓存属性

  1. void Page_Load(Object sender, EventArgs e) {  
  2.       Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));  
  3.       Response.Cache.SetCacheability(  
  4.                    HttpCacheability.Public);  
  5.       Response.Cache.SetSlidingExpiration(true);  
  6.       _msg.Text = DateTime.Now.ToString();  
  7. }  
void Page_Load(Object sender, EventArgs e) {
      Response.Cache.SetExpires(DateTime.Now.AddSeconds(360));
      Response.Cache.SetCacheability(
                   HttpCacheability.Public);
      Response.Cache.SetSlidingExpiration(true);
      _msg.Text = DateTime.Now.ToString();
}

我们不得不提及duration以及VaryByParam属性。Duration定义缓存将会持续多长时间。VaryByParam定义不同的缓存参数值


 

就像上面展示的这幅图一样,如果我们对一个页面使用一个查询字符串,我们需要基于该参数缓存所有的页面,我们可以使用VaryByParam属性。基于查询字符串,数据应该被缓存,当用户请求一个页面,并携带一个查询字符串(图片中是ID),页面也能够在缓存中被检索到。下面的例子描述了VaryByParam属性的使用。

示例:

  1. <%@ OutputCache Duration="60" VaryByParam="*" %>  
  2. <! page would cached  for 60 seconds, and would create a separate cache  
  3.    entry for every variation of querystring -->  
<%@ OutputCache Duration="60" VaryByParam="*" %>
<! page would cached  for 60 seconds, and would create a separate cache
   entry for every variation of querystring -->

下面这幅图展示了最通用也是最重要的输出缓存的属性:

 

我们制定的所有outputCahce的属性,都来自System.Web.HttpCachePolicy类的实例。由asp.net提供的缓存策略的完整实现都封装在HttpCachePolicy类中。

输出缓存位置

就像我刚才提到的,我们可以存储缓存数据在不同的地方——客户端,服务器,代理服务器。现在,我将怎么设置缓存数据的位置。如果我们存储缓存数据,它将从缓存中检索出页面从而节省了页面的生成时间。但是另一种方式是可以保存数据在客户端浏览器,它可以减少网络通信。而OutputCache执行能够使用所有的三种方式的缓存——服务器,客户端,代理(默认)。

接下来的飙歌展示了缓存位置的明细。它展示了缓存处在的位置,以及对Cache-Control和过期时间头的影响。


 

例如,如果你为Location属性设置Client值,页面将不会被保存在服务端的缓存中,但是响应中将包含一个Cache-Control响应头(通过使用Cache-Control头,页面可以指明是否他们应该被缓存在一个代理上)设值为private,并且一个Expires头(Http 响应,指明该页面需要重新从服务器请求的日期和时间)值为一个时间段,它是由Duration属性指明的。

例子

 

  1. <%@ OutputCache Duration='120' Location='Client' VaryByParam='none' %>  
<%@ OutputCache Duration='120' Location='Client' VaryByParam='none' %>

 

该自理将保存缓存120秒,缓存的数据不会保存在服务端,而应该在客户端浏览器。

2、页面片段缓存:asp.net提供一种对页面片段的缓存方案,称之为页面片段缓存。为了缓存一个页面的一部分,你必须首先将这“部分页面”封装到一个用户控件中。在用户控件的源文件中,加入一个outputcache指令,并指明Duration以及VaryByParam属性。当用户控件在运行时被家载入一个页面中,它将会被缓存,并且所有的引用了相同用户控件的其他页面也将能够从缓存中检索数据。


 

接下来的示例显示了缓存片段的一些细节:

示例

  1. <!— UserControl.ascx —>  
  2.   
  3. <%@ OutputCache Duration='60'  
  4.                 VaryByParam='none' %>  
  5. <%@ Control Language="'C#'" %>  
  6.   
  7. <script runat="server">  
  8.   protected void Page_Load(Object src, EventArgs e)  
  9.   {  
  10.      _date.Text = "User control generated at " +  
  11.                    DateTime.Now.ToString();  
  12.   }  
  13. </script>  
  14. <asp:Label id='_date' runat="'server'" />  
<!— UserControl.ascx —>

<%@ OutputCache Duration='60'
                VaryByParam='none' %>
<%@ Control Language="'C#'" %>

<script runat="server">
  protected void Page_Load(Object src, EventArgs e)
  {
     _date.Text = "User control generated at " +
                   DateTime.Now.ToString();
  }
</script>
<asp:Label id='_date' runat="'server'" />

这里我已经缓存了一个用户控件,所以无论何时我们再一个页面中使用它,该页面的这部分都将会缓存起来。

3、数据缓存:数据缓存能够动态地提供一个应用程序的性能,因为它减少了数据检索所带来的一切“开销”。其实很简单,数据缓存将请求的数据存储在缓存中,这样web服务器就不需要对到来的所有请求去请求数据库服务器,它能够增加web站点的性能。为了实现数据缓存,我们需要找到那些可访问的并且非常普遍的数据。并且数据缓存是也是一种“全套特性”的缓存引擎,能够使你在多个Http请求以及多个来自相同应用程序里的会话之间检索和存储数据。


 

上面的图片展示了数据如何从数据库中北之间访问以及数据是如何从缓存中被重新检索。数据缓存不仅可以缓存SQL Server中的数据,我们甚至能够存储如图1.4中所示的其他数据源。

现在,让我们看看如何在web应用程序中实现数据缓存。这里有三种不同的方式来将数据或者对象加入缓存。但是,基于不同的方案,我们有不同的访问数据的方式。这些方法是Cache[],Cache.add(),cache.insert()。接下来的表格向你清晰地展示了这三种方法的异同点:


 

Cache[]是一种非常容易使用的属性,但cache.insert()以及cache.add()给我们对于缓存数据更多的控制。

现在我们需要看看cache.insert()以及Cache.Add()的细节。Cache.Insert()有四个重载方法,而Cache.Add()怎没有重载方法。接下来的表格展示了这些方法的大部分通用属性。


 

开始的两个是强制被Cache.Insert()方法使用的,而其他几个则有所不同。

缓存依赖

使用缓存依赖,我们可以为某些数据或可能改变的实体设置依赖。所以我们能够通过设置缓存依赖来更新或者移除缓存。在asp.net中支持三种类型的依赖:

(1)      基于文件的依赖

(2)      基于键的依赖

(3)      基于时间的依赖

基于文件的依赖:基于文件的依赖,在当磁盘上的文件改变时,可以让一个通常的缓存项失效。

使用缓存依赖,当文件改变时,我们可以从缓存中强制失效某些缓存项。我们可以设置多个文件依赖。在这样的情况下,依赖应该被建立在一组文件或文件夹上。

使用:基于文件的依赖是非常有用的,当你需要更新更新的数据是基于某个文件的时候。例如,一个新闻站点总是从一个文件中去获取数据,但是,如果某些爆炸性的新闻出来,他们只需要更新下文件,然后缓存就该失效,并且在失效时间之内,我们通过OnRemoveCallBack回调可以重新加载缓存中的已被更新的数据。

基于键的缓存依赖:基于键的依赖,在当另一个缓存项改变时,让一个通常的缓存项失效。

使用:当我们有多个内部关联对象在缓存中时,这将会非常有用,我们需要更新或过期所有的这些对象。

基于时间的缓存依赖:基于时间的依赖会让一个缓存项在预定的时间失效。Cache的Cache.Insert()方法被用来创建一个基于时间的缓存依赖。可以对其设置两种类型的时间:

(1)      绝对时间

(2)      “滑动”时间(相对的)

绝对:给一个缓存项设置一个失效的绝对时间。它是一个全时间格式,包含(hh:mm:ss)。

滑动:对每个请求重置缓存项的失效时间。当缓存项需要为了来自多个客户端的请求都保持存活的时候,它是非常有用的。

对这些所有的依赖,asp.net允许下面的操作发生:

自动失效:那些在使用中并且没有任何依赖的缓存项都会自动失效。

支持回调:缓存对象能够被配置来调用一个被“赋予”的一段代码,当一个缓存项被从缓存中移除时,这些代码就会被调用。这给了你机会去更新缓存。我们可以使用OnRemoveCallback()。

缓存使用的注意事项

输出缓存注意事项:

1、  使得一个页面上的输出缓存在通常情况下能够访问,对所有这些访问都确保他们返回一致的内容。

2、  当对一个页面使用输出缓存时,确保不引入不正确的行为,不为特定的用户做处理。

3、  谨慎地决定缓存页面的过期时间,平衡访问速度与内存消耗以及高速缓存一致性的正确访问(吞吐量)。

4、  如果你使用的是VaryByParam=’*’,考虑使用页面滑动过期。

数据缓存注意事项:

1、  数据缓存不是一个共享的可更新状态的容器

2、  缓存的数据是通常需要访问的以及获取相对比较“昂贵”的。

3、  如果数据依赖于文件,文件夹,或者其他的缓存实体,使用一种CacheDependency来确保它满足当前的需求。

缓存类型的建议

场景一:生成的页面通常都相同,但是有某些展示的表单通常会更新(使用页面片段缓存

场景二:生成的页面总是在变化,但是有一些对象并不是经常变动(使用数据缓存

场景三:生成的页面每隔几个小时变化一次,当信息通过一种自动处理过程从数据库中被加载时(使用页面输出缓存并且设置过期时间来匹配数据库的更新时间)。

更多关于缓存使用的注意事项,请参考:开发中常见的十种对缓存的错误使用

----部分内容参考自CodeProject,特此注明!

分享到:
评论

相关推荐

    韩顺平2011细说servlet笔记2

    ### 韩顺平2011细说Servlet笔记2:MVC模式修改用户管理系统 #### 1. 当前网站结构的问题分析 - **代码重复**:`LoginCl.java`和`ManageUser.java`文件中都有操作数据库的逻辑,导致代码重复。 - **层次混乱**:...

    精华版细说容灾备份的等级和技术

    精华版细说容灾备份的等级和技术 容灾备份是指通过在异地建立和维护一个备份存储系统,利用地理上的分离来保证系统和数据对灾难性事件的抵御能力。根据容灾系统对灾难的抵抗程度,可分为数据容灾和应用容灾。 数据...

    此项目由于毕设后端开发.rar

    java1.8 springboot2.1.3 maven mysql 5.7 redis 2.18 mybatis tk-mapper jetcache freemaker webSocket git 在编码后使用jenkins 和 阿里云的一台ECS 进行服务器的部署。ECS是ubuntu16.04 在业务中调用了阿里云的...

    同步电机无传感HFI高频谐波注入模型及代码解析,PMSM永磁同步电机滑模观测器仿真模型研究,基于28035的典型HFI方案实现,详细解析参数实现过程与机理,工程实践与理论基础相结合的SOP代码应用,基

    同步电机无传感HFI高频谐波注入模型及代码解析,PMSM永磁同步电机滑模观测器仿真模型研究,基于28035的典型HFI方案实现,详细解析参数实现过程与机理,工程实践与理论基础相结合的SOP代码应用,基于无传感HFI高频谐波注入模型的PMSM永磁同步电机同步控制技术:解析与代码实现,同步电机无传感HFI高频谐波注入模型+代码 PMSM永磁同步电机无传感器滑模观测器仿真模型(基于28035),典型的HFI方案; 代码为实际应用SOP代码,非一般玩票代码可比(非ti例程);解析说明详细描述了参数实现过程和实现机理,工程实践和理论基础结合。 ,核心关键词:同步电机;无传感HFI高频谐波注入模型;PMSM永磁同步电机;滑模观测器;仿真模型;28035;HFI方案;SOP代码;参数实现过程;实现机理;工程实践;理论基础。,基于HFI高频谐波注入的PMSM无传感器控制模型与SOP代码实现

    基于thinkphp3.2开发的商城系统

    一个采用thinkphp3.2开发的商城系统,无论从前台模板的设计,还是后台php的开,都具有非常好的学习价值。首先作为一套前台模板框架的学习总结成果。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    无人驾驶车辆动力学模型验证与预测控制资料详解:视频教程及carsim2019与matlab2018应用,无人驾驶车辆动力学模型验证与预测控制资料详解:视频教程及carsim2019与matlab201

    无人驾驶车辆动力学模型验证与预测控制资料详解:视频教程及carsim2019与matlab2018应用,无人驾驶车辆动力学模型验证与预测控制资料详解:视频教程及carsim2019与matlab2018应用,无人驾驶的车辆动力学模型验证。 配套详细视频讲解。 配套无人驾驶车辆模型预测控制资料,有视频讲解carsim2019,matlab2018 ,无人驾驶车辆动力学模型验证;配套视频讲解;无人驾驶车辆模型预测控制;carsim2019视频讲解;matlab2018资料,无人驾驶车辆动力学模型验证与MPC控制技术详解视频

    基于vue+elment-ui+node.js的后台管理系统 .zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    **基于多维度仿真的质子交换膜燃料电池模型构建与性能研究**,基于电化学经验模型与车辆参数,质子交换膜燃料电池稳态与动态建模仿真分析及特性研究,质子交膜燃料电池(#PEMFC) 稳态 AND 动态建模

    **基于多维度仿真的质子交换膜燃料电池模型构建与性能研究**,基于电化学经验模型与车辆参数,质子交换膜燃料电池稳态与动态建模仿真分析及特性研究,质子交膜燃料电池(#PEMFC) 稳态 AND 动态建模及仿真分析 Note:硕士lunwen复Xian;title:质子交膜燃料电池建模仿真与特性研究 内容: 1. 根据车辆结构参数和性能参数 确定燃料电池组相关参数, eg. 额定功率,最大功率等. (根据需求可省略,或改进); 2. 基于电化学经验模型,建立PEMFC 燃料电池的稳态数学模型; 3. 在稳态数学模型的基础上,考虑燃料电池双层电荷层现象以及电池电堆动态热传输的影响,建立PEMFC 电化学动态模型; 4. 建立稳态 AND 动态Simulink仿真模型; 5. 通过Signal Builder 模拟随时间阶跃下降的外加负载信号,Simulink仿真燃料电池的输出电压,输出功率,消耗功率,电池效率的变化曲线, 并详细分析了电池的稳态 动态响应特性以及影响因素; 6. 极其详尽的模型说明书(包含数学建模,simulink建模,模型结果分析,etc.) AND 图

    基于JavaWeb的求职招聘管理信息系统的设计与实现.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    学习资料-YOLOV5目标检测全套视频课程-共7课.zip

    推荐,YOLOV5目标检测全套视频课程,共7节。 1.任务需求与项目概述.mp4 2-数据与标签配置方法.mp4 3-标签转格式脚本制作.mp4 4-各版本模型介绍.mp4 5-项目参数配置.mp4 6-缺陷检测模型培训.mp4 7-输出结果与项目总结.mp4

    智慧农业解决方案 -促进产业结构转型,突破传统业态.ppt

    智慧农业解决方案 -促进产业结构转型,突破传统业态.ppt

    西门子200smart与昆仑通态锅炉换热站智能控制程序实例:涵盖模拟量读取、自动切换控制、时间段加热与温度设定、电能监控及Modbus通讯变频器控制 ,西门子200smart与昆仑通态锅炉换热站程序实

    西门子200smart与昆仑通态锅炉换热站智能控制程序实例:涵盖模拟量读取、自动切换控制、时间段加热与温度设定、电能监控及Modbus通讯变频器控制。,西门子200smart与昆仑通态锅炉换热站程序实例:模拟量读取、自动切换与时间加热控制,Modbus通讯变频器电能管理解决方案,西门子200smart和昆仑通态锅炉热站程序项目实例,程序内有利用模拟量读取,运算时间自动切,水泵一用一备故障自动切,自动时间段加热,时间段设定温度,电能读取及算法 modbus通讯控制变频器。 ,核心关键词: 西门子200smart; 昆仑通态锅炉; 换热站程序项目; 模拟量读取; 运算时间自动切换; 水泵一用一备故障自动切换; 自动时间段加热; 设定温度; 电能读取; 算法; Modbus通讯; 控制变频器。,西门子Smart200程序控制锅炉换热站:智能换热与节能优化管理实例

    基于HTML5+CSS3+jquery实现音乐播放器.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    相移格雷码解相位程序开发与条纹结构光编解码技术应用于单双目结构光三维重建系统,相移格雷码解相位程序开发:条纹结构光编解码技术助力单目双目结构光三维重建系统,相移格雷码解相位程序开发 条纹结构光编解码

    相移格雷码解相位程序开发与条纹结构光编解码技术应用于单双目结构光三维重建系统,相移格雷码解相位程序开发:条纹结构光编解码技术助力单目双目结构光三维重建系统,相移格雷码解相位程序开发 条纹结构光编解码,可用于单目或双目结构光三维重建系统 ,相移格雷码解相位程序开发; 结构光编解码; 单目结构光; 双目结构光; 三维重建系统,相移格雷码解相位程序开发:单目双目结构光三维重建系统编解码技术

    高集成伺服电机驱控芯片TMC9660例子代码

    高集成伺服电机驱控芯片TMC9660例子代码

    个人博客系统,使用Springboot,SpringDataJpa,Redis,RabbitMQ.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于任务链的中小工厂数字化新路径 高效搭建有竞争力的数字工厂.pptx

    基于任务链的中小工厂数字化新路径 高效搭建有竞争力的数字工厂.pptx

    光伏并网逆变器设计方案与高效实现:结合matlab电路仿真、DSP代码及环流抑制策略,光伏并网逆变器设计方案:结合matlab电路文件与DSP程序代码,实现高效并联环流抑制策略,光伏并网逆变器设计方案

    光伏并网逆变器设计方案与高效实现:结合matlab电路仿真、DSP代码及环流抑制策略,光伏并网逆变器设计方案:结合matlab电路文件与DSP程序代码,实现高效并联环流抑制策略,光伏并网逆变器设计方案,附有相关的matlab电路文件,以及DSP的程序代码,方案、仿真文件、代码三者结合使用效果好,事半功倍。 备注:赠送逆变器并联环流matlab文件,基于矢量控制的环流抑制策略和下垂控制的环流抑制 ,光伏并网逆变器设计方案; MATLAB电路文件; DSP程序代码; 方案、仿真文件、代码结合使用; 并联环流抑制策略; 下垂控制的环流抑制,光伏并网逆变器优化设计:方案、仿真与DSP程序代码三合一,并赠送并联环流抑制策略Matlab文件

    基于jsp+servlet设计的ECSHOP商城二次开发.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    校园在线拍卖系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    校园在线拍卖系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 按照校园在线拍卖系统的角色,我划分为了用户模块(拍卖者和用户)和管理员模块这两大部分。 拍卖者模块: (1)注册登录:用户注册为会员并登录校园在线拍卖系统;用户对个人信息的增删改查,比如个人资料,密码修改。 (2)竞拍商品管理:拍卖者可以对竞拍商品进行增删改查。 (3)竞拍订单管理:拍卖者可以看到用户提交的竞拍价格信息以及产品,可以对竞拍订单进行审核。 (4)评价订单管理:可以在此页面查看到用户提交的订单评价信息等。 (5)在线留言:可以回复用户的在线留言信息。 用户模块: (1)用户注册登录:用户注册为会员并登录校园在线拍卖系统;用户对个人信息的增删改查,比如个人资料,密码修改。 (2)拍卖资讯:用户可以在此模块中浏览系统发布的最新拍卖资讯。 (3)竞拍商品:用户可以查看到竞拍商品详情。 (4)在线竞拍:用户可以在竞拍商品下方点击立即竞拍,提交竞拍信息。 (5)在线留言:用户可以提交在线留言信息。 (6)竞拍订单:可以在线进行竞拍商品订单的支付。 (7)评价订单:支付后可以对订单进行评价。 管理员管理模块: (1)用户管理:管理员可以对前台上注册过的用户信息进行管控,对拍卖者信息进行审核,也可以对管理员信息进行管控。 (2)用户管理:管理员对系统用户的管理。 (3)商品分类管理:对商品进行分类管理。 (4)竞拍商品管理:对拍卖者发布的拍卖商品进行管理。 (5)竞拍订单管理:对用户提交的竞拍订单信息进行管理。 (6)评价订单管理:对用户的评价信息进行管理。 (7)在线留言管理:对用户的留言信息进行管理。 (8)系统管理:对通知公告、竞拍资讯、轮播图管理。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

Global site tag (gtag.js) - Google Analytics