您可以提高您站点的访问速度,那么就需要用到cache(缓存),通常可以我们使用cache来处理经常检索的结果或不经常改变的数据结果。

你将学习:

l  如何使用缓存来提高网站的响应速度。

本章介绍的功能:

l  WebCache helper

 

缓存来提高网站的响应

每当人们请求您站点中的页面时,Web服务器都会做一些工作,以便执行请求。对于其中一些包括有服务器端执行代码的页面,Web服务器可能会执行很长时间来完成任务。比如从数据库中检索数据。这些任务获取在较少数量的的请求时并不需要太长的时间,但是如果网上有了大量的流量,所有用户都进行了独立请求的时候,会导致Web服务器增加很多的工作,从而使执行速度变的缓慢。这最终会影响到网站的性能。

 

在这种情况下,改善您网站性能的方法之一便是缓存数据。如果您的网站上有在请求时响应的是相同数,且数据并不需要针对个人进行改变,另外在时间上也并不敏感。那么我们可以将数据缓存,在用户每次请求时并不在Web服务器上重新计算,而是在第一次访问时就将数据放到缓存中,在下一次请求时,只获取缓存中的数据。

 

在一般情况下,您缓存的信息并不经常改变。当你把信息放到缓存,它将存储在Web服务器上的内存中。你可以指定它应该被缓存多久,从几秒钟到几天。当缓存期限到期,该信息自动从缓存中删除。

 

注意    缓存中的项目并没有过期,但可能会因为其他原因可能会被删除。例如,Web服务器可能暂时低位运行内存,它回收内存的方法之一便是移出缓存项。正如你看到的,即使你放入缓存信息,你必须检查,以确保它在您使用时仍然存在。

 

想象您的网站有一个页面,显示当前的温度和天气预报。为了得到这种类型的信息,您可能会发送一个请求到外部服务。因为这个信息并不需要有太大的改变(例如,在两个小时内)因为和外部请求服务需要时间和带宽,所以这是一个很好的被缓存项目。

 

ASP.NET包括WebCache helper,使得您很容易地将缓存功能添加到网站,并添加到缓存中的数据。在此过程中,您将创建一个页面用来缓存的当前的时间。当然这不是一个真实的例子,因为当前的时间是不经常改变,而且不需要复杂的计算。然而,这是一个很好的方式来说明缓存在工作。

1.         添加一个新页面网站名为WebCache.cshtml

2.         在页面中添加以下代码和标记:

@{
   
var cacheItemKey = "Time";
   
var cacheHit = true;
   
var time = WebCache.Get(cacheItemKey);

   
if (time == null) {
        cacheHit
= false;
   
}

   
if (cacheHit == false) {
        time
= @DateTime.Now;
       
WebCache.Set(cacheItemKey, time, 1, false);
   
}
}
DOCTYPE html>


   
</span><span style="color:#660066">WebCache</span><span> </span><span style="color:#660066">Helper</span><span> </span><span style="font-family:宋体;mso-ascii-font-family: Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-theme-font:minor-latin; color:#660066">例子</span><span style="color:#666600"><</span><span style="color:#008800">/title><br> </</span><span>head</span><span style="color:#666600">></span><span><br> </span><span style="color:#008800"><body></span><span><br>     </span><span style="color:#008800"><div></span><span><br>         </span><span style="color:#006666">@if</span><span> </span><span style="color:#666600">(</span><span>cacheHit</span><span style="color:#666600">)</span><span> </span><span style="color:#666600">{</span><span><br>             </span><span style="color:#666600">@:</span><span style="color:#660066">Found</span><span> the time data </span><span style="color:#000088">in</span><span> the cache</span><span style="color:#666600">.</span><span><br>         </span><span style="color:#666600">}</span><span> </span><span style="color:#000088">else</span><span> </span><span style="color:#666600">{</span><span><br>             </span><span style="color:#666600">@:</span><span style="color:#660066">Did</span><span> </span><span style="color:#000088">not</span><span> find the time data </span><span style="color:#000088">in</span><span> the cache</span><span style="color:#666600">.</span><span><br>         </span><span style="color:#666600">}</span><span><br>     </span><span style="color:#666600"><</span><span style="color:#008800">/div><br>     <div><br>         </span><span style="font-family: 宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family: 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;color:#008800">页面上的时间被组成存为:</span><span style="color:#008800"> @time.<br>     </</span><span>div</span><span style="color:#666600">></span><span><br> </span><span style="color:#666600"><</span><span style="color:#008800">/body><br> </</span><span>html</span><span style="color:#666600">> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">   </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">在</span><span style="font-size:10.0pt;font-family:Consolas;mso-fareast-font-family:宋体; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">cacheItemKey</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">代码示例中,使用</span><span style="font-size:10.0pt">time</span><span style="font-size:10.0pt; font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: Calibri;mso-hansi-theme-font:minor-latin">定义了一个缓存项,</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">当您缓存数据时,需要为缓存定义一个名称,在整个网站中,这个缓存是独立存在的。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">   </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI";font-variant: small-caps;mso-font-kerning:0pt;mso-bidi-font-weight:bold">该代码首先读取</span><span style="font-size:10.0pt">time</span><span style="font-size:10.0pt; font-family:宋体;mso-ascii-font-family:"Segoe UI";mso-hansi-font-family:"Segoe UI"; mso-bidi-font-family:"Segoe UI";font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">缓存项中的值,如果返回值不为空,说明代码从缓存项目中获取了</span><span style="font-size:10.0pt">time</span><span style="font-size:10.0pt; font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: Calibri;mso-hansi-theme-font:minor-latin">缓存,并保存到变量</span><span>time</span><span style="font-family: 宋体; ">中。</span><span style="font-size:10.0pt;font-family: "Segoe UI","sans-serif";mso-fareast-font-family:宋体;font-variant:small-caps; mso-font-kerning:0pt;mso-bidi-font-weight:bold"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">   </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">然而,如果缓存条目不存在(也就是说,它是空的),代码会设置</span><span style="font-size:10.0pt">time</span><span style="font-size:10.0pt; font-family:宋体;mso-ascii-font-family:"Segoe UI";mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:"Segoe UI"; mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt;mso-border-alt: none windowtext 0cm;padding:0cm">的值</span><span style="font-size:10.0pt; font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: Calibri;mso-hansi-theme-font:minor-latin">为当前时间</span><span style="font-size: 10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI";mso-fareast-font-family: 宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:"Segoe UI"; mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt;mso-border-alt: none windowtext 0cm;padding:0cm">,将它添加到缓存中,并设置一分钟的到期时限。如果页面请求没有在一分钟之内进行,那么缓存中的项目将被丢弃。(默认缓存项到期时间是</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">20</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">分钟)。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">   </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">此代码说明的问题是您应该总是使用时缓存数据。在您得到的新的缓存之前,总是先检查</span><span style="font-size:10.0pt;font-family:Consolas;mso-fareast-font-family: 宋体;border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding: 0cm">WebCache.Get</span><span style="font-size:10.0pt;font-family:宋体; mso-ascii-font-family:"Segoe UI";mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">方法是否返回</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">null</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">值。请记住,缓存条目可能因为其他一些原因已过期或可能已被删除,所以从来不能保证任何给定的项目在缓存一直存在。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">   </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-21.0pt; mso-char-indent-count:0;mso-list:l1 level1 lfo2"> <span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:"Segoe UI";font-variant:small-caps;mso-font-kerning: 0pt;mso-bidi-font-weight:bold">3.<span style="font:7.0pt "Times New Roman"">         </span></span> <span style="font-size:10.0pt;font-family:宋体; mso-ascii-font-family:"Segoe UI";mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">在浏览器中运行</span><em><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">WebCache.cshtml</span></em><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">。(请确保页面在选定的工作区中,然后再运行它。)当您第一次请求页面时,时间数据不在缓存中,代码将添加时间值到缓存中。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><font face="'Segoe UI', sans-serif" size="2"><span style="font-variant: small-caps;"><br> </span></font></p> <p style="text-align: center; "><a href="http://img.e-com-net.com/image/info3/c8b150a6e7d848b8b2e7cbca5ed9f0c8.jpg" target="_blank"><img alt="利用缓存来提高网站的性能(Caching to Improve the Performance of Your Website )_第1张图片" src="http://img.e-com-net.com/image/info3/c8b150a6e7d848b8b2e7cbca5ed9f0c8.jpg" width="386" height="116" style="border:1px solid black;"></a></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-21.0pt; mso-char-indent-count:0;mso-list:l1 level1 lfo2"> <span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:"Segoe UI";font-variant:small-caps;mso-font-kerning: 0pt;mso-bidi-font-weight:bold">4.<span style="font:7.0pt "Times New Roman"">         </span></span> <span style="font-size:10.0pt;font-family:宋体; mso-ascii-font-family:"Segoe UI";mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">在浏览器中刷新</span><em><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">WebCache.cshtml</span></em><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm">。这一次,时间数据是从缓存中获取的。请注意你最后一次浏览网页以来的时间一直没有改变。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold"> </span></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:0cm;mso-char-indent-count: 0"><font face="'Segoe UI', sans-serif" size="2"><span style="font-variant: small-caps;"><br> </span></font></p> <p style="text-align: center; "><a href="http://img.e-com-net.com/image/info3/fd09a0f7c0f845fa82aad38e702d183a.jpg" target="_blank"><img alt="利用缓存来提高网站的性能(Caching to Improve the Performance of Your Website )_第2张图片" src="http://img.e-com-net.com/image/info3/fd09a0f7c0f845fa82aad38e702d183a.jpg" width="393" height="112" style="border:1px solid black;"></a></p> <p class="MsoListParagraph" style="margin-left:21.0pt;text-indent:-21.0pt; mso-char-indent-count:0;mso-list:l1 level1 lfo2"> <span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:"Segoe UI";font-variant:small-caps;mso-font-kerning: 0pt;mso-bidi-font-weight:bold">5.<span style="font:7.0pt "Times New Roman"">         </span></span> <span style="font-size:10.0pt;font-family:宋体; mso-ascii-font-family:"Segoe UI";mso-fareast-font-family:宋体;mso-fareast-theme-font: minor-fareast;mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">等待一分钟后缓存被清空,然后刷新页面。再次表明时间数据在缓存中没有找到,更新的时间将被添加到缓存项中。</span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold"> </span></p> <p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt; mso-bidi-font-weight:bold">   </span></p> <p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family: "Segoe UI";mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; font-variant:small-caps;mso-font-kerning:0pt">原文:</span></b><b><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt"> </span></b></p> <p class="MsoNormal"><span>http://www.asp.net/web-pages/tutorials/performance-and-traffic/15-caching-to-improve-the-performance-of-your-website </span></p> <p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family: "Segoe UI";mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI"; font-variant:small-caps;mso-font-kerning:0pt">资源:</span></b><b><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif"; mso-fareast-font-family:宋体;font-variant:small-caps;mso-font-kerning:0pt"> </span></b></p> <p class="MsoNormal"><span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";color:#267CB2;border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm"><span>第</span></span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif";color:#267CB2; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm">7</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family:"Segoe UI"; mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family: "Segoe UI";mso-bidi-font-family:"Segoe UI";color:#267CB2;border:none windowtext 1.0pt; mso-border-alt:none windowtext 0cm;padding:0cm"><span>章</span></span><span style="font-size:10.0pt;font-family:"Segoe UI","sans-serif";color:#267CB2; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm"> - </span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-font-family: "Segoe UI";mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:"Segoe UI";mso-bidi-font-family:"Segoe UI";color:#267CB2; border:none windowtext 1.0pt;mso-border-alt:none windowtext 0cm;padding:0cm"><span>显示图表中的数据</span></span></span><span style="font-size: 10.0pt;font-family:"Segoe UI","sans-serif";mso-fareast-font-family:宋体; font-variant:small-caps;mso-font-kerning:0pt;mso-bidi-font-weight:bold"> </span></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1205411148845916160"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(开发工具,WebMatrix,Razor,ASP.NET/MVC)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1946847593875173376.htm" title="C#使用Quartz.NET详细讲解" target="_blank">C#使用Quartz.NET详细讲解</a> <span class="text-muted">diaochejiang2761</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>C#使用Quartz.NET详细讲解Quartz.NET是一个开源的作业调度框架,是OpenSymphony的QuartzAPI的.NET移植,它用C#写成,可用于winform和asp.net应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持cron-like表达式等等。你曾经需要应用执行一个任务吗?这个</div> </li> <li><a href="/article/1946844869305626624.htm" title="程序员最喜爱的5款开发工具,每一款都爱不释手!" target="_blank">程序员最喜爱的5款开发工具,每一款都爱不释手!</a> <span class="text-muted">小宇java</span> <div>如果说编程是吃饭,那么开发工具就是程序员手中的筷子,每个人拿筷子的手法都不一样,拿的筷子品种也不一样,而一旦熟悉了一种拿捏方式和筷子样式,就很难去接受其他人使用筷子的品种和方法,这也算是程序员的一种特性吧!选择什么样的编辑器还和所从事的行业息息相关,那小编现在就程序员最喜欢的5中编辑器做个介绍。0.AtomAtom是github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,</div> </li> <li><a href="/article/1946841665767534592.htm" title="ASP.NET Core Web API中实现缓存" target="_blank">ASP.NET Core Web API中实现缓存</a> <span class="text-muted">AitTech</span> <a class="tag" taget="_blank" href="/search/.NetCore/1.htm">.NetCore</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/.netcore/1.htm">.netcore</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>在.NET6中,你可以使用几种方式来实现缓存,但最直接的方法之一是使用ResponseCaching中间件或自定义的ActionFilterAttribute(动作过滤器)。1.使用ResponseCaching中间件ASP.NETCore提供了一个内置的ResponseCaching中间件,它可以很容易地配置来缓存HTTP响应。这对于静态内容和一些动态内容(如基于查询参数的响应)非常有用。首先,</div> </li> <li><a href="/article/1946839268328534016.htm" title="本地开发用ASP.NET Core Web API项目创建及测试" target="_blank">本地开发用ASP.NET Core Web API项目创建及测试</a> <span class="text-muted">way_hj</span> <a class="tag" taget="_blank" href="/search/web%E5%BC%80%E5%8F%91/1.htm">web开发</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>1.服务端代码(C#)1.1创建ASP.NETCoreWebAPI项目打开VisualStudio2022。选择“创建新项目”。选择“ASP.NETCoreWebAPI”模板,点击“下一步”。输入项目名称(如OracleApi),选择项目位置,点击“创建”。1.2安装Oracle数据库依赖使用NuGet管理包工具在项目中安装Oracle数据库的EFCore依赖:Oracle.EntityFrame</div> </li> <li><a href="/article/1946828299137249280.htm" title="ASP.NET Core Web API 内存缓存(IMemoryCache)入门指南" target="_blank">ASP.NET Core Web API 内存缓存(IMemoryCache)入门指南</a> <span class="text-muted">王维志</span> <a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/webapi/1.htm">webapi</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>在WebAPI开发中,频繁访问数据库或第三方服务可能会带来性能瓶颈。为了提升接口响应速度并减轻后端压力,使用缓存是非常有效的优化手段。本文将带你快速上手ASP.NETCore提供的内存缓存(IMemoryCache),无需安装额外库,轻量、简单、适合中小项目什么是IMemoryCache?IMemoryCache是ASP.NETCore自带的缓存机制,使用服务器内存来存储数据对象,单机部署即可使用</div> </li> <li><a href="/article/1946825017778040832.htm" title="AI人工智能领域多模态大模型的发展历程回顾" target="_blank">AI人工智能领域多模态大模型的发展历程回顾</a> <span class="text-muted">AI智能探索者</span> <a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BD%93%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">智能体开发实战</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a> <div>AI人工智能领域多模态大模型的发展历程回顾关键词:AI人工智能、多模态大模型、发展历程、技术演变、应用场景摘要:本文旨在全面回顾AI人工智能领域多模态大模型的发展历程。通过对不同阶段核心概念、算法原理、数学模型等方面的深入剖析,结合实际项目案例,探讨其在各个领域的应用场景。同时,推荐相关的学习资源、开发工具和重要论文著作,最后总结多模态大模型的未来发展趋势与挑战,并对常见问题进行解答。1.背景介绍</div> </li> <li><a href="/article/1946771173249445888.htm" title="维基框架发布 1.0.11 至中央仓,深化国产化 DevOps 生态整合" target="_blank">维基框架发布 1.0.11 至中央仓,深化国产化 DevOps 生态整合</a> <span class="text-muted">维基框架</span> <a class="tag" taget="_blank" href="/search/%E7%BB%B4%E5%9F%BA%E6%A1%86%E6%9E%B6/1.htm">维基框架</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>一、核心事件:维基框架1.0.11正式入驻中央仓库维基框架(Wiki-Framework)作为国产全场景Java企业级开发框架,于7月9日正式发布v1.0.11版本至中央软件仓库(MavenCentral),标志着其正式纳入全球主流开发工具生态。本次发布聚焦安全增强与云原生适配:安全升级:集成OAuth2.1协议,修复CVE-2025-0113等5项高危漏洞,支持国密算法SM4加密通信。云原生支持</div> </li> <li><a href="/article/1946749244811571200.htm" title="Day18: Spring异常急诊科:解剖MVC中的异常分诊体系 —— 从局部绷带到全局手术台的异常处理全路线图" target="_blank">Day18: Spring异常急诊科:解剖MVC中的异常分诊体系 —— 从局部绷带到全局手术台的异常处理全路线图</a> <span class="text-muted">zhysunny</span> <a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>目录一、急诊分级诊疗体系:HandlerExceptionResolver优先权争夺战1.1四大科室优先级列表1.2分诊规则核心代码解析二、候诊大厅:@ControllerAdvice全局分诊台实现内幕2.1全局异常分诊站配置2.2分诊台特殊装备库三、疑难病例会诊:复合异常处理案例3.1参数验证异常特护病房3.2自定义业务异常绿色通道四、急诊科室扩展训练:自定义分诊规则4.1打造专属急诊科室五、急</div> </li> <li><a href="/article/1946743449080360960.htm" title="微软官方MSDN原版系统下载指南" target="_blank">微软官方MSDN原版系统下载指南</a> <span class="text-muted">nntxthml</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>微软官方MSDN原版系统下载指南在信息技术日新月异的今天,操作系统作为计算机的核心软件,其稳定性和可靠性对于用户而言至关重要。MSDN(MicrosoftDeveloperNetwork)作为微软面向开发人员和技术专业人员的资源平台,提供了丰富的开发工具和资源,其中就包括微软官方发布的原版系统镜像。对于需要给电脑安装新系统的用户来说,选择MSDN版的系统无疑是一个明智之举,因为它直接来源于微软,确</div> </li> <li><a href="/article/1946716094865666048.htm" title="项目快速上手指南:8 大核心切入点" target="_blank">项目快速上手指南:8 大核心切入点</a> <span class="text-muted">weixin_43391139</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%B7%A5%E7%A8%8B%E5%8C%96/1.htm">技术工程化</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a> <div>一、文档体系速览需求层产品需求文档(PRD):明确业务目标、用户故事和功能边界非功能需求:性能指标、安全要求、合规标准设计层架构图:系统分层、技术栈选型、核心组件交互ER图与数据字典:表结构关系、字段约束、业务术语定义API文档:接口规范、请求示例、错误码说明操作层用户手册:功能导航、操作流程、常见问题管理后台指南:权限配置、运维操作、数据报表二、代码库解构路径全局视野目录范式:MVC/DDD分层</div> </li> <li><a href="/article/1946646877256609792.htm" title="mvc" target="_blank">mvc</a> <span class="text-muted">ljh_10e3</span> <div>Mvc的核心思想将业务逻辑和显示相分离。MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的</div> </li> <li><a href="/article/1946609166210625536.htm" title="Spring MVC 技术解析" target="_blank">Spring MVC 技术解析</a> <span class="text-muted">我是廖志伟</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/MVC/1.htm">MVC</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/MVC/1.htm">MVC</a><a class="tag" taget="_blank" href="/search/Design/1.htm">Design</a><a class="tag" taget="_blank" href="/search/Pattern/1.htm">Pattern</a> <div>我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、Spri</div> </li> <li><a href="/article/1946608407419088896.htm" title="互联网大厂java求职者面试" target="_blank">互联网大厂java求职者面试</a> <span class="text-muted">我是廖志伟</span> <a class="tag" taget="_blank" href="/search/Java%E5%9C%BA%E6%99%AF%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">Java场景面试宝典</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%96%87/1.htm">八股文</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%B1%82%E8%81%8C/1.htm">求职</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a> <div>我是廖志伟,一名Java开发工程师,清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Z</div> </li> <li><a href="/article/1946608028597940224.htm" title="思途JAVA学习0716" target="_blank">思途JAVA学习0716</a> <span class="text-muted">Asu5202</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/idea/1.htm">idea</a> <div>1.环境设置Java开发需要安装JDK(JavaDevelopmentKit),它包含JRE(JavaRuntimeEnvironment)和开发工具。设置环境变量是关键步骤:JAVA_HOME:指向JDK安装目录,例如C:\ProgramFiles\Java\jdk-21。Path:添加%JAVA_HOME%\bin,以便在命令行中直接使用java和javac命令。验证安装:在命令行输入java</div> </li> <li><a href="/article/1946597437502189568.htm" title="上传文件csv并解析list_基于PyQt5表格控件TableWidget的csv文件内容显示" target="_blank">上传文件csv并解析list_基于PyQt5表格控件TableWidget的csv文件内容显示</a> <span class="text-muted"></span> <div>(70后红太阳2020年4月写于成都)一、配置环境开发环境:Win7;开发工具:Python3.8.2IDLE,QtDesigner5.13.2;Python安装目录:D:python;文件保存目录:D:python基于PyQt5表格控件TableWidget的csv文件内容显示;路径配置:在cmd下,运行path=%path%;Dpythonpython38-32scripts;D:python</div> </li> <li><a href="/article/1946555180791164928.htm" title="IIS部署ASP.Net Core 遇坑 502.记录" target="_blank">IIS部署ASP.Net Core 遇坑 502.记录</a> <span class="text-muted">DemonTutor</span> <div>IIS部署ASP.NetCore502.5错误和解决在Win2008的机器上部署ASP.NetCore程序,老是提示502.5错误。已经安装了MicrosoftVisualC++2015Redistributable.NETCoreWindowsServerHostingbundle对应版本的.NetCoreSDK,但程序就是跑不起来。出错截图直接使用dotnet命令程序是可以正常运行的,说明环境</div> </li> <li><a href="/article/1946532883476836352.htm" title="C#与Web开发:ASP.NET Core MVC框架" target="_blank">C#与Web开发:ASP.NET Core MVC框架</a> <span class="text-muted">墨瑾轩</span> <a class="tag" taget="_blank" href="/search/%E4%B8%80%E8%B5%B7%E5%AD%A6%E5%AD%A6C%23%E3%80%90%E4%B8%80%E3%80%91/1.htm">一起学学C#【一】</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a> <div>关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣引言嗨,小伙伴们!今天我们要聊的是一个超级有趣的主题——ASP.NETCoreMVC。如果你对C#还不熟悉,那么可以把它想象成一种既强大又灵活的语言,适合用来编写各种各样的应用程序。而ASP.NETCoreMVC呢?它是一种基于C#的现代Web开发框架,能够帮</div> </li> <li><a href="/article/1946529097542856704.htm" title="33、CentOS系统安装与配置全攻略" target="_blank">33、CentOS系统安装与配置全攻略</a> <span class="text-muted">tgb34567890</span> <a class="tag" taget="_blank" href="/search/Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%AE%A1%E7%90%86%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">Linux服务器管理实战指南</a><a class="tag" taget="_blank" href="/search/CentOS%E5%AE%89%E8%A3%85/1.htm">CentOS安装</a><a class="tag" taget="_blank" href="/search/CentOS%E9%85%8D%E7%BD%AE/1.htm">CentOS配置</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9B%B4%E6%96%B0/1.htm">系统更新</a> <div>CentOS系统安装与配置全攻略1.安装CentOS及系统更新与增强在使用引导加载器命令时要格外小心,因为不当使用可能会导致操作系统无法启动。接下来,我们将学习如何增强CentOS7的最小安装,添加额外的管理和开发工具。1.1准备工作拥有具有root权限的CentOS7操作系统的最小安装。连接到互联网,以便下载额外的软件包。1.2操作步骤系统更新:以root用户登录,输入以下命令:yum-yupd</div> </li> <li><a href="/article/1946419032907378688.htm" title="MySQL MVCC解密:多版本并发控制的魔法世界" target="_blank">MySQL MVCC解密:多版本并发控制的魔法世界</a> <span class="text-muted">码农技术栈</span> <a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>当多个用户同时读写数据库时,MySQL如何避免数据混乱?本文将揭开MVCC的神秘面纱,带你探索这个让数据库高并发运行的魔法引擎!一、为什么需要MVCC?并发控制的困境想象图书馆借阅场景:传统方式:一本书只能一个人看(锁机制)MVCC方式:复印多份,每人看不同版本(多版本控制)传统锁机制的痛点:事务A读数据加锁事务B写数据等待锁释放长时间等待系统卡顿二、MVCC是什么?时间旅行的艺术MVCC核心概念</div> </li> <li><a href="/article/1946413989558808576.htm" title="IntelliJ IDEA 使用技巧与插件推荐:提升开发效率的终极指南" target="_blank">IntelliJ IDEA 使用技巧与插件推荐:提升开发效率的终极指南</a> <span class="text-muted">海豹工匠</span> <a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/jetbrain/1.htm">jetbrain</a><a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E5%B7%A5%E5%85%B7/1.htm">编程工具</a> <div>在现代软件开发中,IntelliJIDEA作为一款功能强大的集成开发环境(IDE),深受开发者的喜爱。它不仅支持多种编程语言和框架,还提供了丰富的功能和插件,帮助开发者提高工作效率和代码质量。本文将深入探讨IntelliJIDEA的使用技巧和插件推荐,助您充分利用这款优秀的开发工具。目录IntelliJIDEA简介高效使用IntelliJIDEA的技巧快捷键大全代码导航与搜索高级重构实时错误检查与</div> </li> <li><a href="/article/1946389271229296640.htm" title="Spring MVC中@PathVariable的用法详解" target="_blank">Spring MVC中@PathVariable的用法详解</a> <span class="text-muted"></span> <div>@PathVariable是SpringMVC框架中的一个注解,主要用于从请求URI的模板变量中提取值,并将其绑定到控制器方法的参数上。它是构建RESTfulWeb服务和动态URL的关键工具。核心作用与工作原理定义URI模板:在控制器方法的@RequestMapping(或其变体如@GetMapping,@PostMapping等)注解中,使用花括号{}定义占位符。@GetMapping("/us</div> </li> <li><a href="/article/1943926338326949888.htm" title="flutter知识点" target="_blank">flutter知识点</a> <span class="text-muted">ZhDan91</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>#时隔4年了#4年前用flutter开发海外项目和医疗项目。绘制界面的语法与html还是较类似的。把这些封印的记忆和技术回顾一下,最开始是开发Android出身的,所以开发起flutter来依旧是用的androidstudio开发工具。整理下用到的知识点:整理来源:flutter面试题——基础篇(1)-CSDN博客1、Dart是单线程的。在单线程中以消息循环来运行的。其中敖汉两个任务队列。一个是微</div> </li> <li><a href="/article/1943920666499674112.htm" title="老系统改造增加初始化,自动化数据源配置(tomcat+jsp+springmvc)" target="_blank">老系统改造增加初始化,自动化数据源配置(tomcat+jsp+springmvc)</a> <span class="text-muted"></span> <div>老系统改造增加初始化,自动化数据源配置一、前言二、改造描述1、环境说明2、实现步骤简要思考三、开始改造1、准备sql初始化文件2、启动时自动读取jdbc文件,创建数据源,如未配置,需要一个默认的临时数据源2.1去掉spingmvc原本配置的固定dataSource,改为动态dataSource2.2代码类,这里是示例,我就不管规范了,放到一起2.2.1DynamicDataSourceConfig</div> </li> <li><a href="/article/1943914995217657856.htm" title="swagger【个人笔记】" target="_blank">swagger【个人笔记】</a> <span class="text-muted">撰卢</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>文章目录swagger导入mave坐标在配置类(WebMvcConfiguration)中加入knife4j相关配置设置静态资源映射,主要是让拦截器放行swagger常用注解@Api(tags="\[描述这个类的作用]")@ApiModel(description="\[描述这个类的作用]")@ApiModelProPerty("描述这个类的作用")@ApiOperation("\[描述方法的作用</div> </li> <li><a href="/article/1943721472937750528.htm" title="SpringMVC中的常用注解" target="_blank">SpringMVC中的常用注解</a> <span class="text-muted"></span> <div>SpringMVC中使用servlet的对象:(Request,Response,Session,Cookie)springmvc已经帮我们封装好了这些对象,只需在方法参数上使用所需要的对象即可@ControllerpublicclassServletController{/***只要在控制器方法上加入request,response,session类型的参数,springmvc框架会把这些对象准</div> </li> <li><a href="/article/1943720339687141376.htm" title="异常处理:@ControllerAdvice, @ExceptionHandler, @ResponseStatus, @Valid, @DataAccessException" target="_blank">异常处理:@ControllerAdvice, @ExceptionHandler, @ResponseStatus, @Valid, @DataAccessException</a> <span class="text-muted">张紫娃</span> <a class="tag" taget="_blank" href="/search/%E6%B3%A8%E8%A7%A3/1.htm">注解</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>注解名称来源框架/规范典型使用场景版本(引入年份)是否推荐使用@DataAccessExceptionSpringFramework封装JDBC/MyBatis等数据访问异常Spring1.0(2004)✅@TransactionalSpringFramework声明数据库事务(如Service层操作)Spring2.0(2007)✅@ExceptionHandlerSpringMVC方法内捕获并</div> </li> <li><a href="/article/1943719958030643200.htm" title="SpringMVC参数校验(针对`@RequestBody`返回`400`)" target="_blank">SpringMVC参数校验(针对`@RequestBody`返回`400`)</a> <span class="text-muted">Ryan-Miao</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>SpringMVC参数校验(针对@RequestBody返回400)前言习惯别人帮忙做事的结果是自己不会做事了。一直以来,spring帮我解决了程序运行中的各种问题,我只要关心我的业务逻辑,设计好我的业务代码,返回正确的结果即可。直到遇到了400。spring返回400的时候通常没有任何错误提示,当然也通常是参数不匹配。这在参数少的情况下还可以一眼看穿,但当参数很大是,排除参数也很麻烦,更何况,既</div> </li> <li><a href="/article/1943717303917015040.htm" title="Spring MVC" target="_blank">Spring MVC</a> <span class="text-muted">bjun2012</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>1.关于SpringMVCSpringMVC是基础spring框架基础之上,主要解决了后端服务器接收客户端提交的请求,并给予响应的相关问题.MVC=Model+View+ControllerModel:数据模型,通常由业务逻辑层(ServiceLayer)和数据访问层(DataAccessObjectLayer)构成View:视图Controller:控制器MVC只关心V-C之间的交互2.创建Sp</div> </li> <li><a href="/article/1943715413540007936.htm" title="SpringMVC @ExceptionHandler 典型用法" target="_blank">SpringMVC @ExceptionHandler 典型用法</a> <span class="text-muted"></span> <div>处理单个异常类型当getUser()方法抛出UserNotFoundException时,会自动调用handleUserNotFound()方法进行处理。@RestController@RequestMapping("/users")publicclassUserController{@GetMapping("/{id}")publicUsergetUser(@PathVariableLongid</div> </li> <li><a href="/article/1943711630751756288.htm" title="Swagger快速入门实战指南" target="_blank">Swagger快速入门实战指南</a> <span class="text-muted">Matthew Um</span> <div>本文还有配套的精品资源,点击获取简介:Swagger是一款功能强大的API开发工具,帮助开发者设计、构建、记录和使用RESTfulWeb服务。它通过直观的用户界面,简化了API的查看、测试和理解过程,特别是与Java开发和SpringMVC框架的无缝集成。本快速入门指南将带你通过五个简单步骤学习Swagger的基本使用,包括添加依赖、配置Swagger、使用API注解、运行应用以及如何在Swagg</div> </li> <li><a href="/article/73.htm" title="Hadoop(一)" target="_blank">Hadoop(一)</a> <span class="text-muted">朱辉辉33</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>今天在诺基亚第一天开始培训大数据,因为之前没接触过Linux,所以这次一起学了,任务量还是蛮大的。 首先下载安装了Xshell软件,然后公司给了账号密码连接上了河南郑州那边的服务器,接下来开始按照给的资料学习,全英文的,头也不讲解,说锻炼我们的学习能力,然后就开始跌跌撞撞的自学。这里写部分已经运行成功的代码吧.    在hdfs下,运行hadoop fs -mkdir /u</div> </li> <li><a href="/article/200.htm" title="maven An error occurred while filtering resources" target="_blank">maven An error occurred while filtering resources</a> <span class="text-muted">blackproof</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/%E6%8A%A5%E9%94%99/1.htm">报错</a> <div>转:http://stackoverflow.com/questions/18145774/eclipse-an-error-occurred-while-filtering-resources   maven报错: maven An error occurred while filtering resources   Maven -> Update Proje</div> </li> <li><a href="/article/327.htm" title="jdk常用故障排查命令" target="_blank">jdk常用故障排查命令</a> <span class="text-muted">daysinsun</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a> <div>linux下常见定位命令: 1、jps      输出Java进程       -q       只输出进程ID的名称,省略主类的名称;       -m      输出进程启动时传递给main函数的参数;     &nb</div> </li> <li><a href="/article/454.htm" title="java 位移运算与乘法运算" target="_blank">java 位移运算与乘法运算</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BD%8D%E7%A7%BB/1.htm">位移</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%AE%97/1.htm">运算</a><a class="tag" taget="_blank" href="/search/%E4%B9%98%E6%B3%95/1.htm">乘法</a> <div>  对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率。这个可以从一道面试题说起:     问题: 用最有效率的方法算出2 乘以8 等於几?” 答案:2 << 3 由此就引发了我的思考,为什么位移运算会比乘法运算更快呢?其实简单的想想,计算机的内存是用由 0 和 1 组成的二</div> </li> <li><a href="/article/581.htm" title="java中的枚举(enmu)" target="_blank">java中的枚举(enmu)</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>从jdk1.5开始,java增加了enum(枚举)这个类型,但是大家在平时运用中还是比较少用到枚举的,而且很多人和我一样对枚举一知半解,下面就跟大家一起学习下enmu枚举。先看一个最简单的枚举类型,一个返回类型的枚举: public enum ResultType { /** * 成功 */ SUCCESS, /** * 失败 */ FAIL, </div> </li> <li><a href="/article/708.htm" title="MQ初级学习" target="_blank">MQ初级学习</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/activemq/1.htm">activemq</a> <div>1.下载ActiveMQ 去官方网站下载:http://activemq.apache.org/ 2.运行ActiveMQ 解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。 启动ActiveMQ以后,登陆:http://localhos</div> </li> <li><a href="/article/835.htm" title="Spring_Transactional_Propagation" target="_blank">Spring_Transactional_Propagation</a> <span class="text-muted">布衣凌宇</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/transactional/1.htm">transactional</a> <div>//事务传播属性 @Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个 @Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务 @Transactional(propagation=Propagation.REQUIREDS_N</div> </li> <li><a href="/article/962.htm" title="我的spring学习笔记12-idref与ref的区别" target="_blank">我的spring学习笔记12-idref与ref的区别</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>idref用来将容器内其他bean的id传给<constructor-arg>/<property>元素,同时提供错误验证功能。例如: <bean id ="theTargetBean" class="..." /> <bean id ="theClientBean" class=&quo</div> </li> <li><a href="/article/1089.htm" title="Jqplot之折线图" target="_blank">Jqplot之折线图</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/timeseries/1.htm">timeseries</a><a class="tag" taget="_blank" href="/search/jqplot/1.htm">jqplot</a> <div>timeseriesChart.html <script type="text/javascript" src="jslib/jquery.min.js"></script> <script type="text/javascript" src="jslib/excanvas.min.js&</div> </li> <li><a href="/article/1216.htm" title="JDBC中事务处理应用" target="_blank">JDBC中事务处理应用</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/JDBC%E7%BC%96%E7%A8%8B/1.htm">JDBC编程</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1%E6%8E%A7%E5%88%B6%E8%AF%AD%E5%8F%A5/1.htm">事务控制语句</a> <div>  解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复   事务常用命令:             Commit提交         </div> </li> <li><a href="/article/1343.htm" title="[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论" target="_blank">[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/1.htm">线程安全</a><a class="tag" taget="_blank" href="/search/HashMap/1.htm">HashMap</a> <div>在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。 Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的</div> </li> <li><a href="/article/1470.htm" title="ng-if与ng-show、ng-hide指令的区别和注意事项" target="_blank">ng-if与ng-show、ng-hide指令的区别和注意事项</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a> <div>        angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或</div> </li> <li><a href="/article/1597.htm" title="【持久化框架MyBatis3七】MyBatis3定义typeHandler" target="_blank">【持久化框架MyBatis3七】MyBatis3定义typeHandler</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/TypeHandler/1.htm">TypeHandler</a> <div>什么是typeHandler? typeHandler用于将某个类型的数据映射到表的某一列上,以完成MyBatis列跟某个属性的映射   内置typeHandler MyBatis内置了很多typeHandler,这写typeHandler通过org.apache.ibatis.type.TypeHandlerRegistry进行注册,比如对于日期型数据的typeHandler, </div> </li> <li><a href="/article/1724.htm" title="上传下载文件rz,sz命令" target="_blank">上传下载文件rz,sz命令</a> <span class="text-muted">bitcarter</span> <a class="tag" taget="_blank" href="/search/linux%E5%91%BD%E4%BB%A4rz/1.htm">linux命令rz</a> <div>刚开始使用rz上传和sz下载命令: 因为我们是通过secureCRT终端工具进行使用的所以会有上传下载这样的需求: 我遇到的问题: sz下载A文件10M左右,没有问题 但是将这个文件A再传到另一天服务器上时就出现传不上去,甚至出现乱码,死掉现象,具体问题 解决方法: 上传命令改为;rz -ybe 下载命令改为:sz -be filename 如果还是有问题: 那就是文</div> </li> <li><a href="/article/1851.htm" title="通过ngx-lua来统计nginx上的虚拟主机性能数据" target="_blank">通过ngx-lua来统计nginx上的虚拟主机性能数据</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/ngx-lua%E3%80%80%E7%BB%9F%E8%AE%A1+%E8%A7%A3%E7%A6%81ip/1.htm">ngx-lua 统计 解禁ip</a> <div>介绍 以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页: https://github.com/skyeydemon/ngx-lua-stats 功能 支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计. 可以统计与query-times request-time </div> </li> <li><a href="/article/1978.htm" title="java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132" target="_blank">java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.Arrays; import java.util.Comparator; public class MinNumFromIntArray { /** * Q68输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。 * 例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题</div> </li> <li><a href="/article/2105.htm" title="Oracle基本操作" target="_blank">Oracle基本操作</a> <span class="text-muted">ccii</span> <a class="tag" taget="_blank" href="/search/Oracle+SQL%E6%80%BB%E7%BB%93/1.htm">Oracle SQL总结</a><a class="tag" taget="_blank" href="/search/Oracle+SQL%E8%AF%AD%E6%B3%95/1.htm">Oracle SQL语法</a><a class="tag" taget="_blank" href="/search/Oracle%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/1.htm">Oracle基本操作</a><a class="tag" taget="_blank" href="/search/Oracle+SQL/1.htm">Oracle SQL</a> <div>一、表操作 1. 常用数据类型 NUMBER(p,s):可变长度的数字。p表示整数加小数的最大位数,s为最大小数位数。支持最大精度为38位 NVARCHAR2(size):变长字符串,最大长度为4000字节(以字符数为单位) VARCHAR2(size):变长字符串,最大长度为4000字节(以字节数为单位) CHAR(size):定长字符串,最大长度为2000字节,最小为1字节,默认</div> </li> <li><a href="/article/2232.htm" title="[强人工智能]实现强人工智能的路线图" target="_blank">[强人工智能]实现强人工智能的路线图</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>     1:创建一个用于记录拓扑网络连接的矩阵数据表      2:自动构造或者人工复制一个包含10万个连接(1000*1000)的流程图      3:将这个流程图导入到矩阵数据表中      4:在矩阵的每个有意义的节点中嵌入一段简单的</div> </li> <li><a href="/article/2359.htm" title="给Tomcat,Apache配置gzip压缩(HTTP压缩)功能" target="_blank">给Tomcat,Apache配置gzip压缩(HTTP压缩)功能</a> <span class="text-muted">cwqcwqmax9</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>背景: HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,</div> </li> <li><a href="/article/2486.htm" title="SpringMVC and Struts2" target="_blank">SpringMVC and Struts2</a> <span class="text-muted">dashuaifu</span> <a class="tag" taget="_blank" href="/search/struts2/1.htm">struts2</a><a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>SpringMVC VS Struts2 1: spring3开发效率高于struts 2: spring3 mvc可以认为已经100%零配置 3: struts2是类级别的拦截, 一个类对应一个request上下文, springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应 所以说从架构本身上 spring3 mvc就容易实现r</div> </li> <li><a href="/article/2613.htm" title="windows常用命令行命令" target="_blank">windows常用命令行命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/command/1.htm">command</a> <div>在windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。winver 检查windows版本 wmimgmt.msc 打开windows管理体系结构(wmi) wupdmgr windows更新程序 wscrip</div> </li> <li><a href="/article/2740.htm" title="再看知名应用背后的第三方开源项目" target="_blank">再看知名应用背后的第三方开源项目</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a> <div>知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《 iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的开源框架,并对其中一些框架进行了分析,同样国外开发者 @iOSCowboy也在博客中给我们列出了国外多款知名应用使用的开源框架。另外txx's blog中详细介绍了 Facebook Paper使用的第三</div> </li> <li><a href="/article/2867.htm" title="Objective-c单例模式的正确写法" target="_blank">Objective-c单例模式的正确写法</a> <span class="text-muted">jsntghf</span> <a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/iPhone/1.htm">iPhone</a> <div>一般情况下,可能我们写的单例模式是这样的: #import <Foundation/Foundation.h> @interface Downloader : NSObject + (instancetype)sharedDownloader; @end #import "Downloader.h" @implementation</div> </li> <li><a href="/article/2994.htm" title="jquery easyui datagrid 加载成功,选中某一行" target="_blank">jquery easyui datagrid 加载成功,选中某一行</a> <span class="text-muted">hae</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/datagrid/1.htm">datagrid</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD/1.htm">数据加载</a> <div>1.首先你需要设置datagrid的onLoadSuccess $( '#dg' ).datagrid({onLoadSuccess :  function (data){      $( '#dg' ).datagrid( 'selectRow' ,3); }});   2.onL</div> </li> <li><a href="/article/3121.htm" title="jQuery用户数字打分评价效果" target="_blank">jQuery用户数字打分评价效果</a> <span class="text-muted">ini</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>效果体验:http://hovertree.com/texiao/jquery/5.htmHTML文件代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery用户数字打分评分代码 - HoverTree</</div> </li> <li><a href="/article/3248.htm" title="mybatis的paramType" target="_blank">mybatis的paramType</a> <span class="text-muted">kerryg</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>MyBatis传多个参数: 1、采用#{0},#{1}获得参数:    Dao层函数方法:     public User selectUser(String name,String area); 对应的Mapper.xml    <select id="selectUser" result</div> </li> <li><a href="/article/3375.htm" title="centos 7安装mysql5.5" target="_blank">centos 7安装mysql5.5</a> <span class="text-muted">MrLee23</span> <a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。   #列出所有被安装的rpm package rpm -qa | grep mariadb   #卸载 rpm -e mariadb-libs-5.</div> </li> <li><a href="/article/3502.htm" title="利用thrift来实现消息群发" target="_blank">利用thrift来实现消息群发</a> <span class="text-muted">qifeifei</span> <a class="tag" taget="_blank" href="/search/thrift/1.htm">thrift</a> <div>           Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就</div> </li> <li><a href="/article/3629.htm" title="实现一个sizeof获取Java对象大小" target="_blank">实现一个sizeof获取Java对象大小</a> <span class="text-muted">teasp</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E5%A4%A7%E5%B0%8F/1.htm">对象大小</a><a class="tag" taget="_blank" href="/search/sizeof/1.htm">sizeof</a> <div>   由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各虚拟机上都适用,而是仅在hotspot 32位虚拟机上,或者其它内存管理方式与hotspot 32位虚拟机相同的虚拟机上 适用。     </div> </li> <li><a href="/article/3756.htm" title="SVN错误及处理" target="_blank">SVN错误及处理</a> <span class="text-muted">xiangqian0505</span> <a class="tag" taget="_blank" href="/search/SVN%E6%8F%90%E4%BA%A4%E6%96%87%E4%BB%B6%E6%97%B6%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BC%BA%E8%A1%8C%E5%85%B3%E9%97%AD/1.htm">SVN提交文件时服务器强行关闭</a> <div>在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道 SVN无法读取current修复方法 Can't read file : End of file found 文件:repository/db/txn_current、repository/db/current   其中current记录当前最新版本号,txn_current记录版本库中版本</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>