什么是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/1943993281092317184.htm" title="为什么会出现“与此站点的连接不安全”警告?" target="_blank">为什么会出现“与此站点的连接不安全”警告?</a> <span class="text-muted"></span> <div>当浏览器弹出“与此站点的连接不安全”的红色警告时,不仅会让访客感到不安,还可能直接导致用户流失、品牌信誉受损,甚至引发数据泄露风险。作为网站运营者,如何快速解决这一问题?一、为什么会出现“与此站点的连接不安全”警告?浏览器提示“不安全连接”,本质上是检测到当前网站与用户之间的数据传输未经过加密保护。以下是触发警告的常见原因:1.未安装SSL证书SSL(SecureSocketsLayer)证书是网</div> </li> <li><a href="/article/1943993154692771840.htm" title="什么是证书吊销列表?CRL 解释" target="_blank">什么是证书吊销列表?CRL 解释</a> <span class="text-muted">WoTrusSSL</span> <a class="tag" taget="_blank" href="/search/ssl/1.htm">ssl</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a> <div>数字证书是安全在线互动的支柱,用于验证身份和确保加密通信。但是,当这些证书被盗用或滥用时,必须立即撤销它们以维持信任。这就是证书撤销列表(CRL)的作用所在。CRL由证书颁发机构(CA)维护,对于识别和撤销已撤销的证书,防止其造成危害至关重要。在本指南中,我们将探讨什么是CRL、它们如何运作以及为什么它们对网络安全至关重要。什么是证书吊销列表(CRL)?证书吊销列表(CRL)是证书颁发机构(CA)</div> </li> <li><a href="/article/1943993028356141056.htm" title="有必要获得WHQL测试认证吗,有什么好处?" target="_blank">有必要获得WHQL测试认证吗,有什么好处?</a> <span class="text-muted"></span> <div>什么是WHQL认证?WHQL是MicrosoftWindowsHardwareQualityLab的缩写,中文意思是Windows硬件设备质量实验室,主要是对Windows操作系统的兼容性测试,检验硬件产品和驱动程序在windows系统下的兼容性和稳定性。当某一硬件或软件通过WHQL测试时,制造商可以在其产品包装和广告上使用“DesignedforWindows”标志。该标志可以证明硬件或软件已经</div> </li> <li><a href="/article/1943992776169418752.htm" title="Flask框架入门:快速搭建轻量级Python网页应用" target="_blank">Flask框架入门:快速搭建轻量级Python网页应用</a> <span class="text-muted">「已注销」</span> <a class="tag" taget="_blank" href="/search/python-AI/1.htm">python-AI</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/%E7%BD%91%E7%AB%99%E7%BD%91%E7%BB%9C/1.htm">网站网络</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>转载:Flask框架入门:快速搭建轻量级Python网页应用1.Flask基础Flask是一个使用Python编写的轻量级Web应用框架。它的设计目标是让Web开发变得快速简单,同时保持应用的灵活性。Flask依赖于两个外部库:Werkzeug和Jinja2,Werkzeug作为WSGI工具包处理Web服务的底层细节,Jinja2作为模板引擎渲染模板。安装Flask非常简单,可以使用pip安装命令</div> </li> <li><a href="/article/1943992397344075776.htm" title="驱动程序为什么要做 WHQL 认证?" target="_blank">驱动程序为什么要做 WHQL 认证?</a> <span class="text-muted">GDCA SSL证书</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>驱动程序进行WHQL(WindowsHardwareQualityLabs)认证的核心价值在于解决兼容性、安全性和市场准入三大关键问题,具体必要性如下:️‌一、规避系统拦截,保障驱动可用性‌消除安装警告‌未认证的驱动在安装时会触发Windows的‌红色安全警告‌(如“无法验证发布者”),甚至被系统强制拦截。通过WHQL认证的驱动获得微软数字签名,用户可无阻安装‌。满足系统强制要求‌Windows1</div> </li> <li><a href="/article/1943992398082273280.htm" title="求是网:“内卷式”竞争的突出表现和主要危害有哪些?" target="_blank">求是网:“内卷式”竞争的突出表现和主要危害有哪些?</a> <span class="text-muted">加百力</span> <a class="tag" taget="_blank" href="/search/%E8%B4%A2%E7%BB%8F%E7%A0%94%E7%A9%B6/1.htm">财经研究</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80%E7%9F%A5%E8%AF%86/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%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>"内卷式"竞争主要表现为:企业层面的低价竞争、同质化竞争和营销"逐底竞争";地方政府层面的违规优惠政策、盲目重复建设和设置市场壁垒。危害体现在三个层面:微观上导致"劣币驱逐良币",损害消费者利益;中观上破坏行业生态,挤压产业链利润空间;宏观上扭曲资源配置,抑制创新活力。什么是“内卷式”竞争?概括其一般特征,是指经济主体为了维持市场地位或争夺有限市场,不断投入大量精力和资源,却没有带来整体收益增长的</div> </li> <li><a href="/article/1943992396924645376.htm" title="WHQL签名怎么申请" target="_blank">WHQL签名怎么申请</a> <span class="text-muted">GDCA SSL证书</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>WHQL(WindowsHardwareQualityLabs)签名是微软对硬件和驱动程序进行认证的一种方式,以确保它们与Windows操作系统的兼容性和稳定性。以下是申请WHQL签名的基本步骤,供您参考:1.准备阶段准备硬件设备和驱动程序:确保您的硬件设备已经准备好,并且对应的驱动程序已经经过充分的测试,能够在各种配置和环境下正常工作。获取EV代码签名证书:根据微软的要求,驱动程序进行WHQL认</div> </li> <li><a href="/article/1943992018111885312.htm" title="发票合并工具" target="_blank">发票合并工具</a> <span class="text-muted">小朋的软件园</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>"发票合并工具"是一款专为高效整理票据设计的实用工具,支持将来自不同渠道的发票文件(如PDF文档、各类图片格式)快速整合为排版规范的PDF文件,尤其适用于财务报销场景下的批量票据处理需求。核心功能亮点多格式兼容:无缝导入PDF文件及常见图片格式(.png/.jpg/.jpeg/.bmp),适配多来源发票整合需求。智能布局配置:提供灵活的页面布局选项(每页2/3/4张发票),其中"2合1"模式针对报</div> </li> <li><a href="/article/1943991262029869056.htm" title="C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element(" target="_blank">C++ 11 Lambda表达式和min_element()与max_element()的使用_c++ lamda函数 min_element(</a> <span class="text-muted"></span> <div>网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!intmain(){vectormyvec{3,</div> </li> <li><a href="/article/1943991135068286976.htm" title="k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper" target="_blank">k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper</a> <span class="text-muted">云游</span> <a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/helm/1.htm">helm</a><a class="tag" taget="_blank" href="/search/helm-push/1.htm">helm-push</a> <div>ChartMuseum是Kubernetes生态中用于存储、管理和发布HelmCharts的开源系统,主要用于扩展Helm包管理器的功能核心功能‌集中存储‌:提供中央化仓库存储Charts,支持版本管理和权限控制。‌‌跨集群部署‌:支持多集群环境下共享Charts,简化部署流程。‌‌离线部署‌:适配无网络环境,可将Charts存储在本地或局域网内。‌‌HTTP接口‌:通过HTTP协议提供服务,用户</div> </li> <li><a href="/article/1943991008740044800.htm" title="上位机知识篇---SD卡&U盘镜像" target="_blank">上位机知识篇---SD卡&U盘镜像</a> <span class="text-muted"></span> <div>常用的镜像烧录软件balenaEtcherbalenaEtcher是一个开源的、跨平台的工具,用于将操作系统镜像文件(如ISO和IMG文件)烧录到SD卡和USB驱动器中。以下是其使用方法、使用场景和使用注意事项的介绍:使用方法下载安装:根据自己的操作系统,从官方网站下载对应的安装包。Windows系统下载.exe文件后双击安装;Linux系统若下载的是.deb文件,可在终端执行“sudodpkg-</div> </li> <li><a href="/article/1943990629709180928.htm" title="Guava LoadingCache" target="_blank">Guava LoadingCache</a> <span class="text-muted">sqyaa.</span> <a class="tag" taget="_blank" href="/search/java%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/1.htm">java并发编程</a><a class="tag" taget="_blank" href="/search/Java%E7%9F%A5%E8%AF%86/1.htm">Java知识</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/guava/1.htm">guava</a> <div>LoadingCache是GoogleGuava库提供的一个高级缓存实现,它通过自动加载机制简化了缓存使用模式。核心特性自动加载机制当缓存未命中时,自动调用指定的CacheLoader加载数据线程安全:并发请求下,相同key只会加载一次灵活的过期策略支持基于写入时间(expireAfterWrite)和访问时间(expireAfterAccess)的过期可设置最大缓存大小,基于LRU策略淘汰丰富的</div> </li> <li><a href="/article/1943990125864218624.htm" title="JavaScript 树形菜单总结" target="_blank">JavaScript 树形菜单总结</a> <span class="text-muted">Auscy</span> <a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a> <div>树形菜单是前端开发中常见的交互组件,用于展示具有层级关系的数据(如文件目录、分类列表、组织架构等)。以下从核心概念、实现方式、常见功能及优化方向等方面进行总结。一、核心概念层级结构:数据以父子嵌套形式存在,如{id:1,children:[{id:2}]}。节点:树形结构的基本单元,包含自身信息及子节点(若有)。展开/折叠:子节点的显示与隐藏切换,是树形菜单的核心交互。递归渲染:因数据层级不固定,</div> </li> <li><a href="/article/1943989244456398848.htm" title="冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)" target="_blank">冒泡、选择、插入排序:三大基础排序算法深度解析(C语言实现)</a> <span class="text-muted">xienda</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%8E%92%E5%BA%8F%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> <div>在算法学习道路上,排序算法是每位程序员必须掌握的基石。本文将深入解析冒泡排序、选择排序和插入排序这三种基础排序算法,通过C语言代码实现和对比分析,帮助读者彻底理解它们的差异与应用场景。算法原理与代码实现1.冒泡排序(BubbleSort)工作原理:通过重复比较相邻元素,将较大元素逐步"冒泡"到数组末尾。voidbubbleSort(intarr[],intn){  for(inti=0;iarr[</div> </li> <li><a href="/article/1943988486428225536.htm" title="全面触摸屏输入法设计与实现" target="_blank">全面触摸屏输入法设计与实现</a> <span class="text-muted">长野君</span> <div>本文还有配套的精品资源,点击获取简介:触摸屏输入法是针对触摸设备优化的文字输入方案,包括虚拟键盘、手写、语音识别和手势等多种输入方式。本方案通过提供主程序文件、用户手册、界面截图、示例图、说明文本和音效文件,旨在为用户提供一个完整的、多样的文字输入体验。开发者通过持续优化算法和用户界面,使用户在无物理键盘环境下也能高效准确地进行文字输入。1.触摸屏输入法概述简介在现代信息技术飞速发展的今天,触摸屏</div> </li> <li><a href="/article/1943988486843461632.htm" title="LeetCode 148. 排序链表:归并排序的细节解析" target="_blank">LeetCode 148. 排序链表:归并排序的细节解析</a> <span class="text-muted">进击的小白菜</span> <a class="tag" taget="_blank" href="/search/2025/1.htm">2025</a><a class="tag" taget="_blank" href="/search/Top100/1.htm">Top100</a><a class="tag" taget="_blank" href="/search/%E8%AF%A6%E8%A7%A3/1.htm">详解</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>文章目录题目描述一、方法思路:归并排序的核心步骤二、关键实现细节:快慢指针分割链表1.快慢指针的初始化问题2.为什么选择`fast=head.next`?示例1:链表长度为偶数(`1->2->3->4`)三、完整代码实现四、复杂度分析五、总结题目描述LeetCode148题要求对链表进行排序,时间复杂度需为O(nlogn),且空间复杂度为O(logn)。由于链表的特殊结构(无法随机访问),归并排序</div> </li> <li><a href="/article/1943987856808669184.htm" title="前端项目架构设计要领" target="_blank">前端项目架构设计要领</a> <span class="text-muted"></span> <div>1.架构设计的核心目标在设计前端项目架构时,核心目标是模块化、可维护、可扩展、可测试,以及开发效率的最大化。这些目标可以通过以下几个方面来实现:组件化:将UI功能封装为可复用的组件。模块化:将业务逻辑分解为独立的模块或服务。自动化构建与部署:实现自动化构建、测试和部署流程,减少人为操作的错误。代码规范化与检查:确保团队协作时,代码风格和质量一致。2.项目目录结构设计一个清晰合理的目录结构对大型项目</div> </li> <li><a href="/article/1943987101301272576.htm" title="精通Canvas:15款时钟特效代码实现指南" target="_blank">精通Canvas:15款时钟特效代码实现指南</a> <span class="text-muted">烟幕缭绕</span> <div>本文还有配套的精品资源,点击获取简介:HTML5的Canvas是一个用于绘制矢量图形的API,通过JavaScript实现动态效果。本项目集合了15种不同的时钟特效代码,帮助开发者通过学习绘制圆形、线条、时间更新、旋转、颜色样式设置及动画效果等概念,深化对Canvas的理解和应用。项目中的CSS文件负责时钟的样式设定,而JS文件则包含实现各种特效的逻辑,通过不同的函数或类处理时间更新和动画绘制,提</div> </li> <li><a href="/article/1943986975048527872.htm" title="高效批量单词翻译工具的设计与应用" target="_blank">高效批量单词翻译工具的设计与应用</a> <span class="text-muted"></span> <div>本文还有配套的精品资源,点击获取简介:在信息技术飞速发展的今天,批量单词翻译工具通过计算机的数据处理能力,大大提高了语言学习和文字处理的效率。用户通过简单输入单词列表到一个文本文件,并运行翻译程序,即可获得翻译结果并保存至指定文件。该工具集成了内置或外部翻译引擎,利用自然语言处理技术实现快速准确的翻译,并可能提供词性识别等附加功能。尽管机器翻译无法完全取代人工校对,但它为用户提供了一种高效的翻译解</div> </li> <li><a href="/article/1943986471220342784.htm" title="嵌入式系统LCD显示模块编程实践" target="_blank">嵌入式系统LCD显示模块编程实践</a> <span class="text-muted"></span> <div>本文还有配套的精品资源,点击获取简介:本文档提供了一个具有800x480分辨率的3.5英寸液晶显示模块LW350AC9001的驱动程序代码,以及嵌入式系统中使用C/C++语言进行硬件编程的实践指南。该模块的2mm厚度使其适用于空间受限的便携式设备。内容包括驱动程序源代码、硬件控制接口使用方法,以及如何在嵌入式系统中进行图形处理、电源管理与性能优化。1.嵌入式系统原理1.1嵌入式系统概念嵌入式系统是</div> </li> <li><a href="/article/1943986344934043648.htm" title="深入剖析OpenJDK 18 GA源码:Java平台最新发展" target="_blank">深入剖析OpenJDK 18 GA源码:Java平台最新发展</a> <span class="text-muted">想法臃肿</span> <div>本文还有配套的精品资源,点击获取简介:OpenJDK18GA作为Java开发的关键里程碑,提供了诸多新特性和改进。本文章深入探讨了OpenJDK18GA源码,揭示其内部机制,帮助开发者更好地理解和利用这个版本。文章还涵盖了PatternMatching、SealedClasses、Records、JEP395、JEP406和JEP407等特性,以及HotSpot虚拟机、编译器、垃圾收集器、内存模型</div> </li> <li><a href="/article/1943985460749594624.htm" title="FPGA小白到项目实战:Verilog+Vivado全流程通关指南(附光学类岗位技能映射)" target="_blank">FPGA小白到项目实战:Verilog+Vivado全流程通关指南(附光学类岗位技能映射)</a> <span class="text-muted">阿牛的药铺</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%A7%BB%E6%A4%8D%E9%83%A8%E7%BD%B2/1.htm">算法移植部署</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/verilog/1.htm">verilog</a> <div>FPGA小白到项目实战:Verilog+Vivado全流程通关指南(附光学类岗位技能映射)引言:为什么这个FPGA入门路线能帮你快速上岗?本文设计了一条**"Verilog语法→工具链操作→光学项目实战→岗位技能对标"的阶梯式学习路径。不同于泛泛而谈的FPGA教程,我们聚焦光学类产品开发**核心能力(时序接口设计、图像处理算法移植、高速接口应用),通过3个递进式项目(从LED闪烁到图像边缘检测),</div> </li> <li><a href="/article/1943985461282271232.htm" title="PyTorch & TensorFlow速成复习:从基础语法到模型部署实战(附FPGA移植衔接)" target="_blank">PyTorch & TensorFlow速成复习:从基础语法到模型部署实战(附FPGA移植衔接)</a> <span class="text-muted">阿牛的药铺</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%A7%BB%E6%A4%8D%E9%83%A8%E7%BD%B2/1.htm">算法移植部署</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/tensorflow/1.htm">tensorflow</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a> <div>PyTorch&TensorFlow速成复习:从基础语法到模型部署实战(附FPGA移植衔接)引言:为什么算法移植工程师必须掌握框架基础?针对光学类产品算法FPGA移植岗位需求(如可见光/红外图像处理),深度学习框架是算法落地的"桥梁"——既要用PyTorch/TensorFlow验证算法可行性,又要将训练好的模型(如CNN、目标检测)转换为FPGA可部署的格式(ONNX、TFLite)。本文采用"</div> </li> <li><a href="/article/1943985461995302912.htm" title="22、文档:Google Docs的强大与易用性" target="_blank">22、文档:Google Docs的强大与易用性</a> <span class="text-muted">pear55</span> <a class="tag" taget="_blank" href="/search/%E6%8E%A2%E7%B4%A2%E4%BA%91%E6%8A%80%E6%9C%AF%E7%9A%84%E6%97%A0%E9%99%90%E5%8F%AF%E8%83%BD/1.htm">探索云技术的无限可能</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/Docs/1.htm">Docs</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E7%AB%AF%E6%96%87%E6%A1%A3/1.htm">云端文档</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E9%9F%B3%E8%BE%93%E5%85%A5/1.htm">语音输入</a> <div>文档:GoogleDocs的强大与易用性1.GoogleDocs简介GoogleDocs是Google提供的在线办公套件的一部分,它是一个基于云端的文字处</div> </li> <li><a href="/article/1943984578133815296.htm" title="Android ViewBinding 使用与封装教程" target="_blank">Android ViewBinding 使用与封装教程</a> <span class="text-muted">积跬步DEV</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98%E5%A4%A7%E5%85%A8/1.htm">开发实战大全</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>AndroidViewBinding使用与封装教程:一、ViewBinding是什么?核心功能:为每个XML布局文件自动生成一个绑定类(如ActivityMainBinding),直接暴露所有带ID的视图引用。优点:避免繁琐的findViewById(),类型安全且编译时检查。对比DataBinding:ViewBinding仅处理视图引用,无数据绑定功能。DataBinding支持双向数据绑定,</div> </li> <li><a href="/article/1943984451734269952.htm" title="理解TCP连接中的进程阻塞与CPU调度机制" target="_blank">理解TCP连接中的进程阻塞与CPU调度机制</a> <span class="text-muted">109702008</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%23/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/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/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> <div>引言在计算机网络通信中,TCP连接的建立是一个经典的三次握手过程。当用户调用connect()函数发起连接时,内核会发送SYN报文并等待对方的SYN-ACK响应。此时,调用进程通常会进入阻塞状态,暂停执行直至连接成功或超时。这一机制看似简单,但其背后的内核实现却涉及进程调度、等待队列管理和CPU资源分配等复杂操作。本文将深入探讨阻塞状态的实现原理,并解析CPU在进程阻塞期间的行为。一、进程阻塞的实</div> </li> <li><a href="/article/1943983696184930304.htm" title="基于链家网的二手房数据采集清洗与可视化分析" target="_blank">基于链家网的二手房数据采集清洗与可视化分析</a> <span class="text-muted">Mint_Datazzh</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE/1.htm">项目</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a> <div>个人学习内容笔记,仅供参考。项目链接:https://gitee.com/rongwu651/lianjia原文链接:基于链家网的二手房数据采集清洗与可视化分析–笔墨云烟研究内容该课题的主要目的是通过将二手房网站上的存量与已销售房源,构建一个二手房市场行情情况与房源特点的可视化平台。该平台通过HTML架构和Echarts完成可视化的搭建。因此,该课题的主要研究内容就是如何利用相关技术设计并实现这样</div> </li> <li><a href="/article/1943983191836651520.htm" title="【超硬核】JVM源码解读:Java方法main在虚拟机上解释执行" target="_blank">【超硬核】JVM源码解读:Java方法main在虚拟机上解释执行</a> <span class="text-muted">HeapDump性能社区</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</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/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a> <div>本文由HeapDump性能社区首席讲师鸠摩(马智)授权整理发布第1篇-关于Java虚拟机HotSpot,开篇说的简单点开讲Java运行时,这一篇讲一些简单的内容。我们写的主类中的main()方法是如何被Java虚拟机调用到的?在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过由于Java方法与C/C++函数的调用约定不同,所以并不能直接调用,需要JavaC</div> </li> <li><a href="/article/1943983064719880192.htm" title="分布式学习笔记_04_复制模型" target="_blank">分布式学习笔记_04_复制模型</a> <span class="text-muted">NzuCRAS</span> <a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/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/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>常见复制模型使用复制的目的在分布式系统中,数据通常需要被分布在多台机器上,主要为了达到:拓展性:数据量因读写负载巨大,一台机器无法承载,数据分散在多台机器上仍然可以有效地进行负载均衡,达到灵活的横向拓展高容错&高可用:在分布式系统中单机故障是常态,在单机故障的情况下希望整体系统仍然能够正常工作,这时候就需要数据在多台机器上做冗余,在遇到单机故障时能够让其他机器接管统一的用户体验:如果系统客户端分布</div> </li> <li><a href="/article/1943983065500020736.htm" title="Python之七彩花朵代码实现" target="_blank">Python之七彩花朵代码实现</a> <span class="text-muted">PlutoZuo</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Python之七彩花朵代码实现文章目录Python之七彩花朵代码实现下面是一个简单的使用Python的七彩花朵。这个示例只是一个简单的版本,没有很多高级功能,但它可以作为一个起点,你可以在此基础上添加更多功能。importturtleastuimportrandomasraimportmathtu.setup(1.0,1.0)t=tu.Pen()t.ht()colors=['red','skybl</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>