什么是jsf_什么是JSF? JavaServer Faces简介

什么是jsf

JavaServer Faces(JSF)是Java标准技术,用于构建基于组件的,面向事件的Web界面。 与JavaServer Pages(JSP)一样,JSF允许访问服务器端数据和逻辑。 与JSP本质上是一个具有服务器端功能HTML页面不同,JSF是一个XML文档,它表示逻辑树中的正式组件。 JSF组件由Java对象作为后盾,这些Java对象独立于HTML并且具​​有Java的全部功能,包括访问远程API和数据库。

诸如JSF之类的框架的关键思想是封装(或包装 )诸如HTML,CSS和JavaScript之类的客户端技术,从而使开发人员能够构建Web界面而无需与这些技术进行过多交互。

本文简要介绍了JSF的Java Web应用程序基于组件的UI开发方法。 简单的示例介绍了JSF的MVC架构,事件模型和组件库。 示例包括JSF 2.3中的新功能,并且我们将使用PrimeFaces作为组件库。

不断发展的JSF

长期流行的JSF最近面临来自与Java兼容的Web框架(包括客户端JavaScript框架)的竞争。 尽管如此,JavaServer Faces仍然是Java标准,尤其是对于大规模Java企业开发而言 。 JSF规范还产生了许多框架和库,它们与最新的客户端改进保持同步。 其中之一是PrimeFaces,我们将在本教程中进行探讨。

虽然未来的开发计划尚不清楚,但是JSF 2.3在等待我们的过程中为开发人员提供了很多工作。 JSF 2.3于2017年3月发布,旨在对JSF进行现代化改造。 在数百个小规模的修复和较大的更新中 ,JSF 2.3弃用了托管bean批注,转而支持CDI,我将在本教程的后面部分介绍。

雅加达EE中的JSF 2.3

2017年9月, Oracle宣布了将Java EE迁移到Eclipse Foundation的意图 。 此后,Java EE已更名为Jakarta EE ,并且继续采用 JSF 2.3(Eclipse Mojarra)。 JSF规范的下一个主要版本将是Eclipse Mojarra 3.0 。

在JSF中构建基于组件的Web界面

JSF的核心思想是将功能封装到可重用的组件中。 这类似于JSP中使用的可重用标签,但JSF组件更为正式。

虽然可以在JavaServer Pages中使用JSF页面,但更常见的是使用Facelets构建独立的JSF页面。 Facelets是设计用于定义JSF接口的XHTML页面。 通过Facelets,您可以使用XML标记创建一个组件树,该树成为JSF用户界面的支架。

清单1展示了使用Facelets编写的简单JSF页面的主要部分。 在这个例子中,我们通过一个通过CDI放置在作用域中的bean访问Java的服务器端功能。 稍后您将了解有关CDI的更多信息。

清单1. JSF示例页面




   
      Hello JavaWorld!
   
   
      #{javaBean.content}
   

在清单1中,我们看到了一个标准的XHTML页面。 Facelets视图建立在XHTML之上。 除了XHTML名称空间之外,还定义和引用了一个辅助名称空间。

h库包含在JSF HTML页面中使用的标准组件。 http://xmlns.jcp.org/jsf/html库定义了JSF组件的集合,在这种情况下,是公共HTML元素的集合。 这些组件之一是元素。

JSF中HTML组件

在语法方面,清单1的元素引用带有h前缀的jsf/html库。 然后,它引用库中的特定组件,即head组件。

组件输出HTML head元素。 (所有这些语法对于这样一个简单的目的来说似乎都是过分的,但是有充分的理由,正如您很快就会看到的那样。)

嵌套组件

头部内部嵌套了一个标准HTML </code>元素。</span> <span>此元素与嵌套在其中的子元素内容一起提供给<code><h:head></code>组件。</span> </p> <p> <span>在文档主体中,JSF表达式包含在<code>#{}</code>语法中。</span> <span>这与<code>${}</code>格式的JSP表达式完全类似:它允许访问范围内的Java对象和简单函数。</span> </p> <p> <span>JSF的基本模式很简单:使用Facelets构建引用组件库的XML树,然后使用库中的组件将Java对象呈现为HTML。</span> </p> <h3 class="body"> <span style="font-weight: bold;">在JSF中使用Java对象</span> </h3> <p> <span>回到清单1,请注意,在执行此标记时,在JSF表达式( <code>${javaBean.content</code> )内, <code>javaBean</code>对象在作用域内。</span> <span>Facelets的XHTML访问<code>javaBean</code>对象上的<code>.content</code>属性。</span> <span>最终输出是一个Web界面,该界面将Facelets视图结构与Java的服务器端数据和逻辑功能合并在一起。</span> </p> <p> <span>使用JSF表达式只是从JSF用户界面访问Java应用程序数据的一种方法。</span> <span>最终,您将要探索JSF组件与Java后端交互的其他方式-诸如数据列表和网格以及各种输入控件之类的东西。</span> <span>到目前为止,已经足够了解JSF如何使用XML标记(或注释)来创建组件树,该组件树根据Java对象中包含的数据输出HTML。</span> </p> <p class="sidebar"></p> <h3 class="body"> <span style="font-weight: bold;">注释与XML</span> </h3> <p> <span>使用JSF 2.3,可以使用批注定义JSF组件,从而完全避开XML元数据。</span> <span>完全可以定义和部署JSF应用程序,而无需编辑任何XML。</span> </p> <h3 class="body"> <span style="font-weight: bold;">JSF应用程序的结构</span> </h3> <p> <span>与JavaServer Pages和Servlet API一样 ,JavaServer Faces也需要标准的目录结构和元数据。</span> <span>这些被部署为<em>.war</em>文件。</span> </p> <p> <span>.war文件的结构类似于Servlet或JSP应用程序。</span> <span>它包含一个<code>/web-app</code>目录,其中包含应用程序的标记文件(在本例中为HTML,JSP和Facelets),以及一个<code>/WEB-INF</code>目录,该目录提供了描述应用程序的元数据。</span> </p> <p class="sidebar"></p> <h3 class="body"> <span style="font-weight: bold;">服务JSF</span> </h3> <p> <span>尽管您可以在Glassfish之类的Java EE容器中运行JSF,但实际上只需要一个简单的servlet容器 。</span> <span>Tomcat是JSF和其他服务器端Java技术的流行容器。</span> </p> <h2> <span style="font-weight: bold;">JSF 2.3:规范和实现</span> </h2> <p> <span>Java的优势之一是它基于标准,并且这些标准由开放源代码社区流程控制。</span> <span>自成立以来,Java Community Process(JCP)一直监督Java技术的发展。</span> <span>一旦规范或规范改进得到JCP的开发和批准,就可以由多方实施。</span> <span>直到最近,Servlet,JSP和JSF都是使用JCP的开源规范过程开发的。</span> </p> <p> <span>截至撰写本文时,最新的JSF规范是JSF 2.3 ,于2017年作为Java EE 8的一部分发布。Oracle(现为Eclipse的) Mojarra是JSF参考实现,而MyFaces和PrimeFaces是受欢迎的第三方实现。</span> </p> <p> <span>这些框架中的每一个都实现JSF核心,其中包括一些标准组件。</span> <span>供应商还可以在标准之上提供其他组件库。</span> <span>在评估JSF框架时,最好考虑一下应用程序的需求以及可用的组件库来帮助您构建它。</span> <span>理想情况下,您的JSF框架应立即使您尽可能接近所需。</span> </p> <h2> <span style="font-weight: bold;">JSF 2.3中的MVC</span> </h2> <p> <span>JSF是一个<em>MVC框架</em> ,实现了model-view-controller模式 。</span> <span>在MVC模式中,其想法是将UI的三个关注点分离为谨慎的部分,因此更易于管理。</span> <span>通常, <em>视图</em>负责显示模型中的数据,而<em>控制器</em>负责设置模型并将用户路由到正确的视图。</span> </p> <p> <span>在JSF实现中,视图是Facelets页面及其XML标签集。</span> <span>这些定义了用户界面的布局。</span> <span>使用JSF的另一半是服务器端,其中Java类支持这些UI组件。</span> </p> <p class="sidebar"></p> <h3 class="body"> <span style="font-weight: bold;">JSF 2.3中不推荐使用的托管bean</span> </h3> <p> <span>JSF 2.3中已弃用了托管bean批注,并已将其替换为CDI( 上下文和依赖注入 )。</span> <span>使用CDI,开发人员可以定义上下文并将对象注入该上下文。</span> <span>那些熟悉托管bean的人会发现注释语法略有不同,但是语义仍然完全相同。</span> </p> <h3 class="body"> <span style="font-weight: bold;">控制器豆</span> </h3> <p> <span>在JSF 2.3中,控制器bean提供了MVC方程式的<em>控制器</em>部分。</span> <span>普通的Java对象(通常称为POJO或普通的Java对象)提供了模型。</span> </p> <p> <span>就流程而言,控制器Bean:</span> </p> <ol> <li> <span>确定将用户请求定向到哪里</span> </li> <li> <span>为模型设置POJO</span> </li> <li> <span>使用模型渲染Facelets视图</span> </li> </ol> <p> <span>然后,JSF将组件树和模型折叠在一起以呈现输出HTML。</span> </p> <p> <span>清单2显示了如何使用CDI定义清单1中的<code>javaBean</code>对象。</span> <span>此清单假定应用程序在其依赖项中包含cdi-api-1.2.jar。</span> </p> <h4> <span style="font-weight: bold;">清单2.使用CDI定义的JavaBean</span> </h4> <pre class="has"><code><code> import javax.inject.Named; import javax.enterprise.context.SessionScoped; @Named @ViewScoped public class JavaBean implements Serializable { private String content = ìWelcome to JSF!î // getters/setters } </code></code></pre> <h2> <span style="font-weight: bold;">带有PrimeFaces的JSF 2.3</span> </h2> <p> <span>在下一部分中,我将使用PrimeFaces向您展示JSF如何实现MVC模式,事件驱动的消息传递和可重用组件。</span> <span>首先,打开PrimeFaces Showcase ,单击左侧列中的<strong>Data</strong>链接,然后选择<strong>DataList</strong> 。</span> <span>这将调出PrimeFaces的DataList演示代码。</span> </p> <p> <span>图1显示了在哪里可以找到这些样本。</span> </p> <a href="http://img.e-com-net.com/image/info8/5f48abe4df5f4ba78271e3829b788ab1.jpg" target="_blank"><img alt="什么是jsf_什么是JSF? JavaServer Faces简介_第1张图片" width="650" height="297" class="lazy" src="http://img.e-com-net.com/image/info8/5f48abe4df5f4ba78271e3829b788ab1.jpg" style="display:block;margin:0 auto;border:1px solid black;"></a> <span><small class="credit">马修·泰森(Matthew Tyson)</small></span> <p> <span>图1. PrimeFaces展示柜</span> </p> <p> <span>图2显示了一个简单数据表的输出,该表取自PrimeFaces DataList演示。</span> </p> <a href="http://img.e-com-net.com/image/info8/6b7bde6e23564affb4e284c693ab971d.jpg" target="_blank"><img alt="什么是jsf_什么是JSF? JavaServer Faces简介_第2张图片" width="300" height="274" class="lazy" src="http://img.e-com-net.com/image/info8/6b7bde6e23564affb4e284c693ab971d.jpg" style="display:block;margin:0 auto;border:1px solid black;"></a> <span><small class="credit">马修·泰森(Matthew Tyson)</small></span> <p> <span>图2.基本DataList组件输出</span> </p> <h3 class="body"> <span style="font-weight: bold;">PrimeFaces DataList:访问数据模型</span> </h3> <p> <span>清单3给出了此<code>dataList</code>显示的标记。</span> <span>如果滚动到PrimeFaces展示柜的底部,则可以在<code>dataList.xhtml</code>选项卡中看到标记。</span> </p> <h4> <span style="font-weight: bold;">清单3. PrimeFaces DataList的Facelet</span> </h4> <pre class="has"><code><code> <p:dataList value="#{dataListView.cars1}" var="car" type="ordered"> <f:facet name="header"> Basic </f:facet> #{car.brand}, #{car.year} </p:dataList> </code></code></pre> <p> <span>在清单3中,请注意<code>dataList</code>组件的<code>value</code>属性。</span> <span>您可以看到它引用了<code>dataListView</code>对象,并访问它的<code>.cars1</code>属性。</span> <span>该组件将使用该字段返回的模型对象。</span> <span>JSF令牌使用常规访问器来引用对象属性,因此<code>.cars1</code>将引用对象上的<code>getCars()</code> getter。</span> </p> <p> <span>接下来,请注意<code>var="car"</code>属性。</span> <span>这告诉<code>dataList</code>组件在迭代<code>value</code>字段返回的汽车列表时要使用什么变量。</span> <span>这些属性特定于<code>dataList</code>组件,但<code>value</code>属性非常常见。</span> <span><code>var</code>属性对于迭代列表的组件也是常规的。</span> </p> <p> <span>在清单3的组件主体中,您可以看到可以通过诸如<code>#{car.brand}</code>类的JSF表达式访问<code>car</code>变量。</span> <span><code>dataListView.cars1</code>实例的每次迭代将输出<code>car.brand</code>字段。</span> </p> <p> <span>注意, <code><f:facet...></code>标记演示了自定义组件以使其显示方式的功能。</span> <span>在这种情况下,标头定义为<code>Basic</code> 。</span> </p> <p> <span>您可以通过将数据与标记结合起来,了解Facelets XML将如何驱动此输出。</span> <span>现在让我们看一下它背后的Java代码。</span> </p> <h2> <span style="font-weight: bold;">DataList的服务器端组件</span> </h2> <p> <span>清单4显示了<code>DataListView</code> ,清单3中的标记使用了Java类。您将很快看到<code>dataListView</code>实例如何与<code>DataListView</code>类相关联。</span> </p> <h4> <span style="font-weight: bold;">清单4. DataListView类</span> </h4> <pre class="has"><code><code> package org.primefaces.showcase.view.data; import java.io.Serializable; import java.util.List; import javax.annotation.PostConstruct; import javax.inject.Named; // Pre JSF 2.3, this was: // import javax.faces.bean.ManagedBean; import javax.inject.Inject; import javax.faces.bean.ViewScoped; import org.primefaces.showcase.domain.Car; import org.primefaces.showcase.service.CarService; @Named @ViewScoped public class DataListView implements Serializable { private List<Car> cars1; private Car selectedCar; @Inject("#{carService}") private CarService service; @PostConstruct public void init() { cars1 = service.createCars(10); } public List getCars1() { return cars1; } public void setService(CarService service) { this.service = service; } } </code></code></pre> <p> <span>清单4还有一些其他重要元素,我们将逐一考虑。</span> </p> <h3 class="body"> <span style="font-weight: bold;">依赖注入和注释</span> </h3> <p> <span>首先,请注意<code>DataListView</code>类使用<code>@Named</code>注释,您可以从import <code>import javax.inject.Named;</code>看到它<code>import javax.inject.Named;</code></span> <span>是JSF的一部分。</span> <span><code>@Named</code>注释告诉JSF此bean是应用程序的一部分。</span> <span><code>@ViewScoped</code>批注告知JSF,Bean将在视图的整个生命周期内都存在。</span> </p> <p> <span>接下来,观察<code>CarService</code>属性具有<code>@Inject</code>注释(在JSF 2.3之前称为<code>@ManagedProperty</code> )。</span> <span>这是JSF的另一项功能,它允许将bean“连接在一起”,这是一种由Spring框架和其他依赖项注入工具普及的技术。</span> <span>本质上,JSF将在范围内找到<code>carService</code>对象,并将其自动关联到<code>DataListView</code>对象上的<code>service</code>字段。</span> </p> <blockquote> <p>翻译自: https://www.infoworld.com/article/3322533/what-is-jsf-introducing-javaserver-faces.html</p> </blockquote> <p>什么是jsf</p> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1282851782409601024"></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">你可能感兴趣的:(什么是jsf_什么是JSF? JavaServer Faces简介)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892521678370566144.htm" title="人类社会的本质是什么?" target="_blank">人类社会的本质是什么?</a> <span class="text-muted">初学者↑</span> <a class="tag" taget="_blank" href="/search/%E6%AF%9B%E9%80%89/1.htm">毛选</a> <div>毛选中最接近本质的八句话,句句都是处理一切事物都适用的顶级法则,你最好背下来,能用一辈子。第一句话,谁是我们的朋友?谁是我们的敌人?这个问题是革命的首要问题。正确归因的能力,是一个人真正清醒且能够进入人生上升螺旋的开始。透过表象看本质,抓住本质找规律,运用规律才能改变世界。这句话能成为毛选开篇的第一句话,就是因为这是一句无限接近于底层规律的话。原文里讨论的是阶级问题,放在生意里照样适用。谁赚我的钱</div> </li> <li><a href="/article/1892521550163275776.htm" title="快速提升网站收录率的10个步骤" target="_blank">快速提升网站收录率的10个步骤</a> <span class="text-muted">百度网站快速收录</span> <a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%AB%99%E5%BF%AB%E9%80%9F%E6%94%B6%E5%BD%95/1.htm">百度网站快速收录</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E5%BF%AB%E9%80%9F%E6%94%B6%E5%BD%95/1.htm">百度快速收录</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E5%BF%AB%E9%80%9F%E6%94%B6%E5%BD%95/1.htm">网站快速收录</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E6%94%B6%E5%BD%95/1.htm">百度收录</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E6%94%B6%E5%BD%95/1.htm">网站收录</a> <div>快速提升网站收录率需要综合考虑多个方面,以下是10个具体步骤,旨在帮助网站更快地获得搜索引擎的收录:1.提交网站地图制作并提交XML站点地图:站点地图是一个包含网站所有页面链接的文件,有助于搜索引擎快速发现和抓取网站内容。通过提交站点地图给搜索引擎,可以显著提高网站的收录速度。2.保持内容更新定期发布高质量内容:搜索引擎喜欢更新频繁的网站,因此保持网站内容的定期更新是提高收录率的关键。确保内容原创</div> </li> <li><a href="/article/1892521423067475968.htm" title="“傻瓜”学计量——主成分分析法PCA(原理+实操)" target="_blank">“傻瓜”学计量——主成分分析法PCA(原理+实操)</a> <span class="text-muted">nn坚持学stata+matlab</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E9%87%8F/1.htm">计量</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/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/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>提纲:1.PCA原理2.视频推荐:PCA原理spass操作stata操作+matlab实操1.背景在一些领域中,需要对大量数据进行观测。但是可能会带来变量之间具有相关性、分别对每个指标分析带来的偏误等问题。因此,要寻找一个合理的方法,在减少需要分析的直白的同时,尽量减少原指标包含的信息缺失。通常做法是对有关联性的变量进行合并,这样就可以用较少的综合指标分别代表存在于各个变量中的各类信息。常用的方法</div> </li> <li><a href="/article/1892519279048323072.htm" title="GUI编程(window系统→Linux系统)" target="_blank">GUI编程(window系统→Linux系统)</a> <span class="text-muted">诚信爱国敬业友善</span> <a class="tag" taget="_blank" href="/search/%E5%BF%83%E5%BE%97/1.htm">心得</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/gui/1.htm">gui</a> <div>最近有个项目需要将windows系统的程序往Linux系统上面移植,由于之前程序没有考虑过多平台兼容的问题,导致部分功能不可用以下是对近期遇到的问题的总结,以及相应的解决方案和经验分享。1.Python模块安装与管理在Linux系统中,安装和管理Python模块时可能会遇到权限问题或依赖冲突。安装模块:使用pip安装模块时,建议使用--user选项,避免需要管理员权限:bash复制pipinsta</div> </li> <li><a href="/article/1892518775052365824.htm" title="网络安全常见十大漏洞总结(原理、危害、防御)" target="_blank">网络安全常见十大漏洞总结(原理、危害、防御)</a> <span class="text-muted">程序媛西米</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</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/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a> <div>一、弱口令【文末福利】产生原因与个人习惯和安全意识相关,为了避免忘记密码,使用一个非常容易记住的密码,或者是直接采用系统的默认密码等。危害通过弱口令,攻击者可以进入后台修改资料,进入金融系统盗取钱财,进入OA系统可以获取企业内部资料,进入监控系统可以进行实时监控等等。防御设置密码通常遵循以下原则:(1)不使用空口令或系统缺省的口令,为典型的弱口令;(2)口令长度不小于8个字符;(3)口令不应该为连</div> </li> <li><a href="/article/1892518648736706560.htm" title="华为昇腾服务器部署DeepSeek模型实战" target="_blank">华为昇腾服务器部署DeepSeek模型实战</a> <span class="text-muted">gzroy</span> <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/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a> <div>在华为的昇腾服务器上部署了DeepSeekR1的模型进行验证测试,记录一下相关的过程。服务器是配置了8块910B3的显卡,每块显卡有64GB显存,根据DeepSeekR1各个模型的参数计算,如果部署R1的Qwen14B版本,需要1张显卡,如果是32B版本,需要2张,Llama70B的模型需要4张显卡。如果是R1全参数版本,则需要32张显卡,也就是4台满配的昇腾服务器。这里先选择32B的模型进行部署</div> </li> <li><a href="/article/1892517514039062528.htm" title="银行排队问题之单队列多窗口服务[天梯赛 -- 栈和队列]" target="_blank">银行排队问题之单队列多窗口服务[天梯赛 -- 栈和队列]</a> <span class="text-muted">苏慕TRYACE</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>文章目录题目描述思路AC代码题目描述输入样例9020115161210105103301831253123输出样例参考文章思路队列模拟存储结构:使用结构体,存储每一个客户的到达时间和处理时间==(最大为60,大于60的,按60处理)==;用两个数组分别存储每一个窗口的办理人数和该窗口结束上一次处理的时间点具体流程:由于题目给定的顾客顺序是按照时间先后,因此我们顺序处理即可1.依次遍历每一个窗口,用</div> </li> <li><a href="/article/1892516883471593472.htm" title="嵌入式学习DAY28 --- 线程、同步和互斥问题、如何实现同步和互斥?" target="_blank">嵌入式学习DAY28 --- 线程、同步和互斥问题、如何实现同步和互斥?</a> <span class="text-muted">楼台的春风</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0/1.htm">嵌入式学习</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/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>嵌入式入门学习笔记,遇到的问题以及心得体会!DAY28概述:一、线程二、同步和互斥问题三、如何实现同步四、如何实现互斥笔记:一、线程1、什么是线程:(1)线程是轻量级的进程(2)线程存在于进程内,不能独立存在(3)线程参与CPU调度,进程是系统资源分配最小单位,线程是系统调度的最小单位(4)在单核CPU中,多线程并发属于伪并发,但是不牵扯虚拟地址空间的切换,所以开销比进程间切换要小很多(5)在多核</div> </li> <li><a href="/article/1892514237717213184.htm" title="【Unity 监狱内部环境资产包】Jails Interior 提供了完整的监狱内部结构,包括牢房、走廊、审讯室、看守室等,并配备了大量高质量的家具、铁栏、门窗和其他装饰,快速搭建沉浸式的监狱场景" target="_blank">【Unity 监狱内部环境资产包】Jails Interior 提供了完整的监狱内部结构,包括牢房、走廊、审讯室、看守室等,并配备了大量高质量的家具、铁栏、门窗和其他装饰,快速搭建沉浸式的监狱场景</a> <span class="text-muted">Unity游戏资源学习屋</span> <a class="tag" taget="_blank" href="/search/Unity%E6%8F%92%E4%BB%B6/1.htm">Unity插件</a> <div>JailsInterior是一款专为Unity设计的监狱内部环境资产包,适用于犯罪题材、恐怖游戏、警察模拟、逃脱解谜等类型的游戏。该插件提供了完整的监狱内部结构,包括牢房、走廊、审讯室、看守室等,并配备了大量高质量的家具、铁栏、门窗和其他装饰,帮助开发者快速搭建沉浸式的监狱场景。详细介绍1.逼真的监狱内部环境提供完整的监狱场景,包括牢房、走廊、审讯室、警卫室等,能够用于各类犯罪、逃脱、警察题材的游</div> </li> <li><a href="/article/1892514111388971008.htm" title="淘宝/天猫店铺订单数据导出、销售报表设计与数据分析指南" target="_blank">淘宝/天猫店铺订单数据导出、销售报表设计与数据分析指南</a> <span class="text-muted">不会玩技术的技术girl</span> <a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>在电商运营中,订单数据是店铺运营的核心资产之一。通过对订单数据的导出、整理和分析,商家可以更好地了解销售情况、优化运营策略、提升客户满意度,并制定科学的业务决策。本文将详细介绍淘宝/天猫店铺订单数据的导出方法、销售报表的设计思路以及数据分析的实用技巧,帮助电商从业者高效管理店铺数据。一、订单数据导出(一)手动导出订单数据淘宝和天猫平台提供了手动导出订单的功能,适用于数据量较小或临时性需求的场景。商</div> </li> <li><a href="/article/1892513355139182592.htm" title="MySQL 查询缓存技术深度解析" target="_blank">MySQL 查询缓存技术深度解析</a> <span class="text-muted">Minxinbb</span> <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/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/dba/1.htm">dba</a> <div>在现代数据库管理系统中,查询性能优化是提升应用响应速度和用户体验的关键环节。MySQL作为一款广泛使用的开源关系型数据库,提供了查询缓存功能,用于缓存查询结果,从而在后续相同的查询请求时能够快速返回结果,减少数据库的负载和查询时间。本文将深入探讨MySQL查询缓存技术的原理、配置、使用方法以及优化策略。一、查询缓存的基本原理(一)缓存机制概述MySQL查询缓存的核心思想是将查询语句和其对应的查询结</div> </li> <li><a href="/article/1892512724911452160.htm" title="ollama的docker 使用教程" target="_blank">ollama的docker 使用教程</a> <span class="text-muted">贾斯汀玛尔斯</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%B9%96/1.htm">数据湖</a><a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/Docker%E5%AE%B9%E5%99%A8/1.htm">Docker容器</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>好的,下面是Ollama在Docker中的使用教程。我将详细描述如何在Docker容器中运行Ollama,包括安装、配置和常用操作。OllamaDocker使用教程Ollama可以通过Docker运行,提供了一个简洁且隔离的环境来使用AI模型。本文将引导你如何在Docker中设置和使用Ollama。目录前提条件拉取OllamaDocker镜像启动Ollama容器基本命令操作停止容器<</div> </li> <li><a href="/article/1892512345561821184.htm" title="市面上采用多进程架构的游戏或游戏引擎的案例深入分析" target="_blank">市面上采用多进程架构的游戏或游戏引擎的案例深入分析</a> <span class="text-muted">你一身傲骨怎能输</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/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/%E6%B8%B8%E6%88%8F/1.htm">游戏</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a> <div>《绝地求生》(PUBG)《绝地求生》(PUBG)是一款采用多进程架构的游戏,这种设计帮助它在处理复杂的游戏逻辑和网络通信时提高了性能和稳定性。以下是一些关于《绝地求生》如何利用多进程架构的具体细节:多进程架构的优势性能优化:多进程架构允许游戏将不同的任务分配到多个处理器核心上运行,这样可以充分利用现代多核CPU的计算能力。例如,游戏的物理计算、AI逻辑、渲染和网络通信可以在不同的进程中并行处理,从</div> </li> <li><a href="/article/1892512218558296064.htm" title="DeepSeek预测25考研分数线" target="_blank">DeepSeek预测25考研分数线</a> <span class="text-muted">GIS前端嘉欣</span> <a class="tag" taget="_blank" href="/search/%E8%80%83%E7%A0%94/1.htm">考研</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/GIS/1.htm">GIS</a><a class="tag" taget="_blank" href="/search/webgis/1.htm">webgis</a> <div>25考研分数马上要出了。目前,多所大学已经陆续给出了分数查分时间,综合往年情况来看,每年的查分时间一般集中在2月底。等待出成绩的日子,学子们的心情是万分焦急,小编用最近爆火的“活人感”十足的DeepSeek帮大家预测一下25考研的分数线。一起来看看吧~影响国家线的关键因素1)报考人数2023年考研报名人数为474万(首次下降),2024年回升至438万(官方未公布,网传数据存疑)。若2025年报考</div> </li> <li><a href="/article/1892510850229530624.htm" title="Salesforce联手阿里云,销售易联手腾讯,还在靠”卖血求生“的CRM独立玩家何去何从?" target="_blank">Salesforce联手阿里云,销售易联手腾讯,还在靠”卖血求生“的CRM独立玩家何去何从?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/saas/1.htm">saas</a> <div>销售易官宣与腾讯战略合作升级,腾讯集团副总裁、腾讯政企业务总裁李强担任销售易董事长,销售易创始人史彦泽继续担任CEO。这场"资本+技术+生态"的强强联合,将行业竞争推向新维度,融资竞赛不再是SaaS企业生存的唯一筹码,中国企服市场正在发生深层变革。消息一出,便受到很多人的关注,这首当其中,最高兴的算要数销售易的客户,源自其将获得的三大核心价值升级,腾讯将进一步开放云计算、大数据、AI等核心技术能力</div> </li> <li><a href="/article/1892510469936181248.htm" title="清华大学第四发《DeepSeek+DeepResearch 让科研像聊天一样简单》" target="_blank">清华大学第四发《DeepSeek+DeepResearch 让科研像聊天一样简单》</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>当下科研领域,传统模式急需改变,清华大学第四版《DeepSeek+DeepResearch:让科研像聊天一样简单》全文一共86页,以下是文档的关键内容总结:一、智能组合优势DeepSeek与DeepResearch构建先进技术体系,有强大模型运算、智能数据处理和友好交互界面。模型在数据处理速度、精准度和泛化能力上远超传统模型。数据采集渠道广、处理快,能读取多种格式文件。数据分析深入,可视化直观,还</div> </li> <li><a href="/article/1892509328053694464.htm" title="如何选择最佳国外邮箱?注册、登录与购买指南" target="_blank">如何选择最佳国外邮箱?注册、登录与购买指南</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a> <div>在如今的数字化时代,邮箱已经成为我们日常生活和工作中不可或缺的工具。无论是个人通信、商务往来,还是注册各种在线服务,一个功能强大、稳定可靠的邮箱都是必不可少的。而在众多国外邮箱服务中,如何选择最适合自己的邮箱?本文将以Zoho邮箱为例,为您详细讲解如何选择、注册、登录以及购买国外邮箱服务。一、为什么选择国外邮箱?在选择邮箱服务时,很多人会考虑国外邮箱。以下是国外邮箱的几大优势:隐私保护更强国外邮箱</div> </li> <li><a href="/article/1892509319568617472.htm" title="信息获取、扫描与服务识别、漏洞验证、嗅探攻击、代理与隧道、metasploit渗透攻击等" target="_blank">信息获取、扫描与服务识别、漏洞验证、嗅探攻击、代理与隧道、metasploit渗透攻击等</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>1.信息获取信息获取是渗透测试和安全评估的第一步,主要目的是收集目标系统的各种信息。这些信息可以帮助确定攻击面和潜在的安全漏洞。技术和工具:域名信息:使用whois查询域名注册信息。DNS查询:使用nslookup或dig获取DNS记录,包括A记录、MX记录等。网络扫描:使用nmap或Masscan扫描目标网络,收集IP地址和开放端口信息。公开信息:通过搜索引擎、社交媒体、公司网站等公开资源获取目</div> </li> <li><a href="/article/1892509320273260544.htm" title="c和c++的区别是" target="_blank">c和c++的区别是</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a> <div>digitalRead处理的是数字信号,只能返回HIGH或LOW。analogRead处理的是模拟信号,将模拟电压值转换为10位数字值(0到1023),可以用来测量电压的实际值或模拟信号的强度。c和c++的区别是C和C++是两种编程语言,它们有许多共同点,但也有重要的区别。以下是它们的主要区别:1.语言类型C:是一种过程式编程语言。程序的执行依赖于函数和过程,代码是按顺序执行的。C++:是一种面向</div> </li> <li><a href="/article/1892509192254713856.htm" title="内存缓冲区溢出原理和预防措施" target="_blank">内存缓冲区溢出原理和预防措施</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>内存缓冲区溢出(BufferOverflow)是一种常见的安全漏洞,发生在程序试图向内存缓冲区写入超出其容量的数据时。这种溢出可以覆盖相邻的内存区域,可能导致程序崩溃或被攻击者利用来执行恶意代码。内存缓冲区溢出的原理缓冲区的定义:缓冲区是用于临时存储数据的内存区域。例如,字符数组或数据结构。溢出发生:当程序将数据写入缓冲区时,如果写入的数据超出了缓冲区的边界,超出的数据会覆盖相邻的内存区域。这可能</div> </li> <li><a href="/article/1892509193236180992.htm" title="数据包结构" target="_blank">数据包结构</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/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> <div>据包(数据包)结构是网络通信中的基本组成部分。它定义了在网络上传输数据时的组织方式和格式。了解数据包的结构有助于理解网络通信的工作原理,排查网络问题以及优化网络性能。以下是对数据包结构的详细解释:数据包的基本组成数据包通常由以下几个主要部分组成:头部(Header):定义:头部包含了用于路由和控制的数据包的元数据。这部分信息帮助网络设备(如路由器和交换机)正确地处理和转发数据包。内容:源地址和目的</div> </li> <li><a href="/article/1892507939978145792.htm" title="在CRM系统中,怎么做才能降低呆坏账的发生?" target="_blank">在CRM系统中,怎么做才能降低呆坏账的发生?</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/crmcrm%E7%B3%BB%E7%BB%9Fcrm%E9%94%80%E5%94%AE%E7%B3%BB%E7%BB%9F/1.htm">crmcrm系统crm销售系统</a> <div>在很多企业的日常运作中,销售团队的表现直接影响到公司的收入和利润。所以,如何制定一套高效的销售流程、如何规划和运作这些流程,是企业管理者特别关注的问题。想象一下,你是一位销售经理,每天的工作除了接待客户,还需要不断优化销售流程,确保每一个环节都顺畅运作。早上,团队成员报到,汇报前一天的销售情况和进展。你会发现,有些客户的支付进度滞后,订单的交付时间也出现了延误。于是,你开始回顾一下销售流程的每一个</div> </li> <li><a href="/article/1892507680455585792.htm" title="Android arcgis加载在线底图" target="_blank">Android arcgis加载在线底图</a> <span class="text-muted">Angie洛林</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/arcgis/1.htm">arcgis</a> <div>我整理的一些关于【信息系统】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/mic-position/757.html在Android中使用ArcGIS加载在线底图ArcGIS是Esri提供的一套强大的地理信息系统(GIS)解决方案,支持多种平台,包括Android。本文将介绍如何在Android应用中使用ArcGIS加载在线底图,并配有相关代码示</div> </li> <li><a href="/article/1892507056150212608.htm" title="管理升级的关键:2024年6大国内项目管理平台实测与选择指南(禅道、钉钉、云效、简道云、Tapd、Teambition)" target="_blank">管理升级的关键:2024年6大国内项目管理平台实测与选择指南(禅道、钉钉、云效、简道云、Tapd、Teambition)</a> <span class="text-muted"></span> <div>以下是一篇满足您要求的博客稿件:引言在当今快节奏的商业环境中,项目管理的重要性不言而喻。一款优秀的项目管理工具能够助力团队提高效率、优化流程,从而实现项目的成功交付。2024年,国内有众多项目管理平台可供选择,本文将对禅道、TAPD、云效、简道云、钉钉、Teambition这6大国内项目管理平台进行实测与分析,为您提供选择指南,帮助您找到最适合团队的项目管理工具。项目管理工具介绍禅道:开源且专业,</div> </li> <li><a href="/article/1892506293600579584.htm" title="cesium(vue)一些面试问题(包含Three.js)" target="_blank">cesium(vue)一些面试问题(包含Three.js)</a> <span class="text-muted">GIS瞧葩菜</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/cesium/1.htm">cesium</a> <div>1.在不同的应用场景和技术栈中,模型加载方法和格式有所不同,下面主要从Web前端三维场景(使用Three.js和cesium)使用Three.js加载模型常见模型格式及加载方法GLTF/GLB格式格式特点:GLTF(GraphicsLibraryTransmissionFormat)是一种开放的、基于JSON的三维模型传输格式,GLB是其二进制版本。它们具有文件小、加载快、支持动画、材质和骨骼等优</div> </li> <li><a href="/article/1892506041246085120.htm" title="vue3的Element plus (一)" target="_blank">vue3的Element plus (一)</a> <span class="text-muted">GIS瞧葩菜</span> <a class="tag" taget="_blank" href="/search/Element/1.htm">Element</a><a class="tag" taget="_blank" href="/search/plus/1.htm">plus</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a><a class="tag" taget="_blank" href="/search/Element/1.htm">Element</a><a class="tag" taget="_blank" href="/search/plus/1.htm">plus</a><a class="tag" taget="_blank" href="/search/vue3/1.htm">vue3</a> <div>介绍ElementPlus是一个基于Vue3的UI组件库,它是对ElementUI组件库的升级和扩展。ElementPlus提供了一套美观、易用且高效的组件,可以用于构建现代化的Web应用程序。ElementPlus的主要特点包括:支持Vue3:ElementPlus是专为Vue3开发的,充分利用Vue3的新特性和优势。TypeScript支持:ElementPlus提供了完整的TypeScrip</div> </li> <li><a href="/article/1892505537497591808.htm" title="动态规划之背包问题--python版本" target="_blank">动态规划之背包问题--python版本</a> <span class="text-muted">我是小码搬运工</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80/1.htm">python基础</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98/1.htm">背包问题</a><a class="tag" taget="_blank" href="/search/python%E7%89%88%E6%9C%AC/1.htm">python版本</a> <div>动态规划之背包问题–python版本问题已知一个最大量的背包,给定一组给定固定价值和固定体积的物品,求在不超过最大值的前提下,能放入背包中的最大总价值。解题思路该问题是典型的动态规划问题,分为三种不同的类型(0-1背包问题、完全背包和多重背包问题)解题关键–状态转移表达式:B(k,C)=max(B(k−1,C),B(k−1,C−ci)+vi)B(k,C)=max(B(k-1,C),B(k-1,C-</div> </li> <li><a href="/article/1892503900867588096.htm" title="深度学习工厂的蓝图:拆解CUDA驱动、PyTorch与OpenCV的依赖关系" target="_blank">深度学习工厂的蓝图:拆解CUDA驱动、PyTorch与OpenCV的依赖关系</a> <span class="text-muted">时光旅人01号</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>想象一下,你正在建造一座深度学习工厂,这座工厂专门用于高效处理深度学习任务(如训练神经网络)和计算机视觉任务(如图像处理)。为了让工厂顺利运转,你需要搭建基础设施、安装设备、设置生产线,并配备控制台来管理整个生产过程。以下是这座工厂的详细构建过程:1.工厂的基础设施:Ubuntu比喻:Ubuntu是工厂所在的土地和建筑,提供了基础设施和运行环境。作用:提供操作系统环境,支持安装和运行各种工具和框架</div> </li> <li><a href="/article/1892503900355883008.htm" title="动态规划之背包问题全解" target="_blank">动态规划之背包问题全解</a> <span class="text-muted">学会了,不,学废了</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a> <div>概述———动态规划提出人:理查德·贝尔曼本质:一张表格处理方法内容:把原问题分解为若干子问题,自底向上先求解最小子问题,把结果储存在表格中,求解大的子问题时直接从表格中查询小的子问题的解,以避免重复计算,从而提高效率。一、动态规划求解原理适用范围:问题需要具备3个性质———最优子结构、子问题重叠、无后效性。最优子结构指问题最优解包含其子问题的最优解,是使用动态规划的基本条件。三要素:状态、阶段、决</div> </li> <li><a href="/article/1892503270987984896.htm" title="(九万字)面向2025年BOSS直聘人工智能算法工程师高频面试题解析" target="_blank">(九万字)面向2025年BOSS直聘人工智能算法工程师高频面试题解析</a> <span class="text-muted">快撑死的鱼</span> <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/%E5%9B%9E%E5%BD%92/1.htm">回归</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a> <div>面向2025年BOSS直聘人工智能算法工程师高频面试题解析1.机器学习(ML)理论解析机器学习是让计算机从数据中学习规律的一套方法论,包含监督学习、无监督学习和强化学习等范式。在监督学习中,给定带标签的数据,算法尝试学习从输入到输出的映射关系;无监督学习则在缺乏标签的情况下挖掘数据内在结构;强化学习则让智能体通过与环境交互、依据奖赏反馈来改进策略(Q-learning-Wikipedia)。机器学</div> </li> <li><a href="/article/80.htm" title="java杨辉三角" target="_blank">java杨辉三角</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a> <div> package com.algorithm; /** * @Description 杨辉三角 * @author FuJianyong * 2015-1-22上午10:10:59 */ public class YangHui { public static void main(String[] args) { //初始化二维数组长度 int[][] y</div> </li> <li><a href="/article/207.htm" title="《大话重构》之大布局的辛酸历史" target="_blank">《大话重构》之大布局的辛酸历史</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a> <div>《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。   背景         公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中</div> </li> <li><a href="/article/334.htm" title="电驴链接在线视频播放源码" target="_blank">电驴链接在线视频播放源码</a> <span class="text-muted">dubinwei</span> <a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81/1.htm">源码</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E9%A9%B4/1.htm">电驴</a><a class="tag" taget="_blank" href="/search/%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">播放器</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91/1.htm">视频</a><a class="tag" taget="_blank" href="/search/ed2k/1.htm">ed2k</a> <div>本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网: http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。 项目源码: http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。 项目源码依赖于两个库项目,库项目一链接: http://git.oschina.</div> </li> <li><a href="/article/461.htm" title="Javascript中函数的toString()方法" target="_blank">Javascript中函数的toString()方法</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/toString/1.htm">toString</a><a class="tag" taget="_blank" href="/search/function/1.htm">function</a><a class="tag" taget="_blank" href="/search/object/1.htm">object</a> <div>简述     The toString() method returns a string representing the source code of the function.     简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。 句法     function.</div> </li> <li><a href="/article/588.htm" title="struts处理自定义异常" target="_blank">struts处理自定义异常</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/struts/1.htm">struts</a> <div>很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。 非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。 此处我们用的是非运行时异常,首先定义一个异常LoginException: /** * 类描述:登录相</div> </li> <li><a href="/article/715.htm" title="Linux中find常见用法示例" target="_blank">Linux中find常见用法示例</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数;</div> </li> <li><a href="/article/842.htm" title="SpringMVC的各种参数绑定方式" target="_blank">SpringMVC的各种参数绑定方式</a> <span class="text-muted">Harry642</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a><a class="tag" taget="_blank" href="/search/%E7%BB%91%E5%AE%9A/1.htm">绑定</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E5%8D%95/1.htm">表单</a> <div>1. 基本数据类型(以int为例,其他类似): Controller代码: @RequestMapping("saysth.do") public void test(int count) { } 表单代码: <form action="saysth.do" method="post&q</div> </li> <li><a href="/article/969.htm" title="Java 获取Oracle ROWID" target="_blank">Java 获取Oracle ROWID</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div> A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row. The oracle.sql.ROWID class i</div> </li> <li><a href="/article/1096.htm" title="java获取方法的参数名" target="_blank">java获取方法的参数名</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/parameter/1.htm">parameter</a><a class="tag" taget="_blank" href="/search/method/1.htm">method</a><a class="tag" taget="_blank" href="/search/reflect/1.htm">reflect</a> <div>reflect.ClassInformationUtil.java package reflect; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.Modifier; import javassist.bytecode.CodeAtt</div> </li> <li><a href="/article/1223.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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/%E6%9B%BF%E6%8D%A2/1.htm">替换</a><a class="tag" taget="_blank" href="/search/%E6%8F%90%E5%8F%96/1.htm">提取</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E6%89%BE/1.htm">查找</a> <div>正则表达式的查找;主要是用到String类中的split();       String str;      str.split();方法中传入按照什么规则截取,返回一个String数组   常见的截取规则: str.split("\\.")按照.来截取 str.</div> </li> <li><a href="/article/1350.htm" title="Java中equals()与hashCode()方法详解" target="_blank">Java中equals()与hashCode()方法详解</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/set/1.htm">set</a><a class="tag" taget="_blank" href="/search/equals%28%29/1.htm">equals()</a><a class="tag" taget="_blank" href="/search/hashCode%28%29/1.htm">hashCode()</a> <div>一.equals()方法详解     equals()方法在object类中定义如下:  public boolean equals(Object obj) { return (this == obj); }    很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I</div> </li> <li><a href="/article/1477.htm" title="精通Oracle10编程SQL(4)使用SQL语句" target="_blank">精通Oracle10编程SQL(4)使用SQL语句</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>--工资级别表 create table SALGRADE ( GRADE NUMBER(10), LOSAL NUMBER(10,2), HISAL NUMBER(10,2) ) insert into SALGRADE values(1,0,100); insert into SALGRADE values(2,100,200); inser</div> </li> <li><a href="/article/1604.htm" title="【Nginx二】Nginx作为静态文件HTTP服务器" target="_blank">【Nginx二】Nginx作为静态文件HTTP服务器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/HTTP%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">HTTP服务器</a> <div> Nginx作为静态文件HTTP服务器 在本地系统中创建/data/www目录,存放html文件(包括index.html) 创建/data/images目录,存放imags图片 在主配置文件中添加http指令   http { server { listen 80; server_name </div> </li> <li><a href="/article/1731.htm" title="kafka获得最新partition offset" target="_blank">kafka获得最新partition offset</a> <span class="text-muted">blackproof</span> <a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/partition/1.htm">partition</a><a class="tag" taget="_blank" href="/search/offset/1.htm">offset</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0/1.htm">最新</a> <div>kafka获得partition下标,需要用到kafka的simpleconsumer   import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.</div> </li> <li><a href="/article/1858.htm" title="centos 7安装docker两种方式" target="_blank">centos 7安装docker两种方式</a> <span class="text-muted">ronin47</span> <div>      第一种是采用yum 方式              yum install -y docker           </div> </li> <li><a href="/article/1985.htm" title="java-60-在O(1)时间删除链表结点" target="_blank">java-60-在O(1)时间删除链表结点</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class DeleteNode_O1_Time { /** * Q 60 在O(1)时间删除链表结点 * 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点 * * Assume the list is: * head->...->nodeToDelete->mNode->nNode->..</div> </li> <li><a href="/article/2112.htm" title="nginx利用proxy_cache来缓存文件" target="_blank">nginx利用proxy_cache来缓存文件</a> <span class="text-muted">cfyme</span> <a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a> <div>user  zhangy users; worker_processes 10; error_log  /var/vlogs/nginx_error.log  crit; pid        /var/vlogs/nginx.pid; #Specifies the value for ma</div> </li> <li><a href="/article/2239.htm" title="[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题" target="_blank">[JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a> <div>     假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:     string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"     定义一个0整数c,然后用这个整数c去</div> </li> <li><a href="/article/2366.htm" title="如何集成支付宝官方文档" target="_blank">如何集成支付宝官方文档</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>官方文档下载地址 https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash 集成的必要条件 1. 需要有自己的Server接收支付宝的消息 2. 需要先制作app,然后提交支付宝审核,通过后才能集成 调试的时候估计会真的扣款,请注意 </div> </li> <li><a href="/article/2493.htm" title="应该在什么时候使用Hadoop" target="_blank">应该在什么时候使用Hadoop</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a> <div>原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html 存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。 --------------------------------------------万能的分割线-------------------------------- 有人问我,“你在大数据和Hado</div> </li> <li><a href="/article/2620.htm" title="在GridView中对于有外键的字段使用关联模型进行搜索和排序" target="_blank">在GridView中对于有外键的字段使用关联模型进行搜索和排序</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>在GridView中使用关联模型进行搜索和排序 首先我们有两个模型它们直接有关联: class Author extends CActiveRecord { ... } class Post extends CActiveRecord { ... function relations() { return array( '</div> </li> <li><a href="/article/2747.htm" title="使用NSString 的格式化大全" target="_blank">使用NSString 的格式化大全</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a> <div>格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c</div> </li> <li><a href="/article/2874.htm" title="使用activeX插件对象object滚动有重影" target="_blank">使用activeX插件对象object滚动有重影</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/activeX%E6%8F%92%E4%BB%B6/1.htm">activeX插件</a><a class="tag" taget="_blank" href="/search/%E6%BB%9A%E5%8A%A8%E6%9C%89%E9%87%8D%E5%BD%B1/1.htm">滚动有重影</a> <div>  使用activeX插件对象object滚动有重影   <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#</div> </li> <li><a href="/article/3001.htm" title="SpringMVC4零配置" target="_blank">SpringMVC4零配置</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/springmvc4/1.htm">springmvc4</a> <div>基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。     项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g 2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动; 3.默认项目为零配置启动,如果需要更改启动方式,请</div> </li> <li><a href="/article/3128.htm" title="《开源框架那点事儿16》:缓存相关代码的演变" target="_blank">《开源框架那点事儿16》:缓存相关代码的演变</a> <span class="text-muted">j2eetop</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/1.htm">开源框架</a> <div>问题引入 上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。 该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。 当然去看相关实现代代码的时候,大致是下面的样子。 [java] view plain copy print ? public vo</div> </li> <li><a href="/article/3255.htm" title="AngularJS浅析" target="_blank">AngularJS浅析</a> <span class="text-muted">kvhur</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>概念 AngularJS is a structural framework for dynamic web apps. 了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm Directive 扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间</div> </li> <li><a href="/article/3382.htm" title="架构师之jdk的bug排查(一)---------------split的点号陷阱" target="_blank">架构师之jdk的bug排查(一)---------------split的点号陷阱</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/split/1.htm">split</a> <div>1.前言.    jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug. 2.代码 String[] paths = "object.object2.prop11".split("'"); System.ou</div> </li> <li><a href="/article/3509.htm" title="如何对10亿数据量级的mongoDB作高效的全表扫描" target="_blank">如何对10亿数据量级的mongoDB作高效的全表扫描</a> <span class="text-muted">quentinXXZ</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>  本文链接:  http://quentinXXZ.iteye.com/blog/2149440 一、正常情况下,不应该有这种需求 首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。 说一下,</div> </li> <li><a href="/article/3636.htm" title="C语言算法之水仙花数" target="_blank">C语言算法之水仙花数</a> <span class="text-muted">qiufeihu</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>/** * 水仙花数 */ #include <stdio.h> #define N 10 int main() { int x,y,z; for(x=1;x<=N;x++) for(y=0;y<=N;y++) for(z=0;z<=N;z++) if(x*100+y*10+z == x*x*x</div> </li> <li><a href="/article/3763.htm" title="JSP指令" target="_blank">JSP指令</a> <span class="text-muted">wyzuomumu</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a> <div> jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %> 常用的三种指令: page,include,taglib page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%> include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include</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>