Struts2面试问答

Struts2是用Java开发Web应用程序的著名框架之一。 最近,我写了很多Struts2教程 ,在这篇文章中,我列出了一些重要的Struts2面试问题以及答案,以帮助您进行面试。

  1. 什么是Struts2?
  2. Struts1和Struts2之间有什么区别,或者Struts2比Struts1更好?
  3. 什么是Struts2核心组件?
  4. Struts2中的拦截器是什么?
  5. Struts2拦截器实现哪种设计模式?
  6. 在Struts2中创建Action类的不同方式有哪些?
  7. Struts2动作和拦截器是否是线程安全的?
  8. Struts2中的Front Controller是哪个类?
  9. Struts2中的Interceptor有什么好处?
  10. 什么是ValueStack和OGNL?
  11. 命名一些在Struts2中引入的有用注释?
  12. 提供一些重要的Struts2常量?
  13. Struts2中的动作映射中名称空间的用途是什么?
  14. 哪个拦截器负责将请求参数映射到动作类Java Bean属性?
  15. 哪个拦截器负责i18n支持?
  16. 将Action接口和ActionSupport类用于我们的操作类有什么区别,您希望使用哪一个?
  17. 我们如何在动作类中获取Servlet API请求,响应,HttpSession等对象?
  18. execAndWait拦截器有什么用?
  19. Struts2中的令牌拦截器有什么用?
  20. 我们如何将log4j集成到Struts2应用程序中?
  21. 有什么不同的Struts2标签? 我们如何使用它们?
  22. Struts2中的自定义类型转换器是什么?
  23. 我们如何编写自己的拦截器并将其映射为行动?
  24. 拦截器的生命周期是多少?
  25. 什么是拦截器堆栈?
  26. 什么是struts-default软件包,它有什么好处?
  27. Struts2操作URI的默认后缀是什么,我们如何更改它?
  28. 结果页面的默认位置是什么,我们如何更改它?
  29. 我们如何在Struts2应用程序中上传文件?
  30. 开发Struts2应用程序时应遵循的最佳实践是什么?

    1. 什么是Struts2?

      Apache Struts2是一个开放源代码框架,可以用Java构建Web应用程序。 Struts2基于OpenSymphony WebWork框架。 它比Struts1有了很大的改进,使其更加灵活,易于使用和扩展。 Struts2的核心组件是“操作”,“拦截器”和“结果”页面。

      Struts2提供了许多方法来创建Action类并通过struts.xml或通过注释对其进行配置。 我们可以为常见任务创建自己的拦截器。 Struts2带有很多标签,并使用OGNL表达式语言。 我们可以创建自己的类型转换器来呈现结果页面。 结果页面可以是JSP和FreeMarker模板。

    2. Struts1和Struts2之间有什么区别,或者Struts2比Struts1更好?

      Struts2旨在克服Struts1的缺点,并使它更加灵活,可扩展。 一些明显的区别是:

      组件 Struts1 Struts2
      动作班 Struts1动作类被强制扩展一个Abstract Class,使其无法扩展。 Struts2动作类非常灵活,我们可以通过实现Action接口,扩展ActionSupport类或仅具有execute()方法来创建它们。
      线程安全 Struts1操作类是Singleton且不是线程安全的,因此在开发人员方面要格外小心,以免由于多线程而产生任何副作用。 每个请求都会实例化Struts2动作类,因此不存在多线程处理并使它们成为线程安全的。
      Servlet API耦合 Struts1 API与Servlet API紧密耦合,并且Request和Response对象传递给操作类execute()方法。 Struts2 API与Servlet API松散耦合,并自动将表单bean数据映射到我们最常用的动作类java bean属性。 但是,如果需要引用Servlet API类,则可以使用* Aware接口。
      测试中 由于Servlet API耦合,Struts1动作类很难测试。 Struts2 Action类就像普通的Java类一样,我们可以通过实例化它们并设置它们的属性来轻松地对其进行测试。
      请求参数映射 Struts1要求我们创建ActionForm类来保存请求参数,并且需要在struts配置文件中对其进行配置。 Struts2请求参数映射是动态完成的,我们需要做的是在动作类中具有Java Bean属性,或者实现ModelDriven接口以提供用于映射的Java Bean类名称。
      标签支持 Struts1使用JSTL标签,因此受到限制。 Struts2使用OGNL并提供各种UI,控件和数据标签。 它更加通用且易于使用。
      验证方式 Struts1支持通过手动validate()方法进行验证 Struts2支持手动验证以及验证框架集成。
      视图渲染 Struts1使用标准的JSP技术为JSP页面提供bean值以供查看。 Struts2使用ValueStack存储请求参数和属性,我们可以使用OGNL和Struts2标签访问它们。
      模块支持 Struts1模块设计复杂,看起来像单独的项目 Struts2为软件包提供“命名空间”配置,以轻松创建模块。
    3. 什么是Struts2核心组件?

      Struts2的核心组件是:

      1. 动作班
      2. 拦截器
      3. 结果页面,FreeMarker模板的JSP
      4. ValueStack,OGNL和标签库

    4. Struts2中的拦截器是什么?

      拦截器是Struts2框架的基础。 Struts2拦截器负责框架完成的大多数处理,例如将请求参数传递给动作类,使Servlet API请求,响应,可用于动作类的会话,验证,i18n支持等。

      ActionInvocation负责封装Action类和拦截器,并按顺序触发它们。 在ActionInvocation中使用的最重要的方法是invoke()方法,该方法跟踪拦截器链并调用下一个拦截器或操作。 这是Java EE框架中“责任链”模式的最佳示例之一。

    5. Struts2拦截器实现哪种设计模式?

      Struts2拦截器基于拦截过滤器设计模式。 在拦截器堆栈中调用拦截器非常类似于责任链设计模式。

    6. 在Struts2中创建Action类的不同方式有哪些?

      Struts2提供了创建动作类的不同方法。

      1. 通过实现动作界面
      2. 使用Struts2 @Action注释
      3. 通过扩展ActionSupport类
      4. 任何将execute()方法返回String的普通Java类都可以配置为Action类。
    7. Struts2动作和拦截器是否是线程安全的?

      Struts2 Action类是线程安全的,因为会为处理该请求的每个请求实例化一个对象。

      Struts2拦截器是单例类,并且创建了一个新线程来处理请求,因此它不是线程安全的,我们需要仔细实现它们,以避免共享数据出现任何问题。

    8. Struts2中的Front Controller是哪个类?

      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是Struts2中的Front Controller类,每个请求处理都从该类开始。 早期版本的Struts2使用org.apache.struts2.dispatcher.FilterDispatcher作为Front Controller类。

    9. Struts2中的Interceptor有什么好处?

      拦截器的一些好处是:

      • 拦截器在实现高级别关注点分离方面起着至关重要的作用。
      • Struts2拦截器是可配置的,我们可以将其配置为所需的任何操作。
      • 我们可以创建自己的自定义拦截器来执行一些常见任务,例如请求参数记录,身份验证等。这有助于我们在单个位置处理常见任务,从而降低了维护成本。
      • 我们可以创建拦截器堆栈以用于不同的动作。
    10. 什么是ValueStack和OGNL?

      ValueStack是Struts2将应用程序数据存储在其中的存储区域,用于处理客户端请求。 数据存储在使用ThreadLocal的ActionContext对象中,该对象具有特定于特定请求线程的值。

      对象图导航语言(OGNL)是一种功能强大的表达语言,用于处理存储在ValueStack上的数据。 从体系结构图中可以看到,拦截器和结果页面都可以使用OGNL访问存储在ValueStack上的数据。

    11. 命名一些在Struts2中引入的有用注释?

      Struts2中引入的一些重要注释是:

      1. @Action创建动作类
      2. @Actions为多个动作配置单个类
      3. @Namespace和@Namespaces用于创建不同的模块
      4. 结果页的@Result
      5. @ResultPath用于配置结果页面的位置
    12. 提供一些重要的Struts2常量?

      我使用的一些Struts2常数是:

      1. struts.devMode以开发模式运行我们的应用程序。 此模式不会重新加载属性文件,并提供额外的日志记录和调试功能。 这在开发应用程序时非常有用,但在将代码移至生产环境时应将其关闭。
      2. struts.convention.result.path来配置结果页面的位置。 默认情况下,Struts2在{WEBAPP-ROOT} / {Namespace} /中查找结果页面,我们可以使用此常量更改位置。
      3. struts.custom.i18n.resources定义用于i18n支持的全局资源束。
      4. struts.action.extension为Struts2应用程序配置URL后缀。 默认后缀为.action,但有时我们可能希望将其更改为.do或其他名称。

      我们可以在struts.xml文件中配置上述常量,如下所示。

      <constant name="struts.devMode" value="true"></constant>
      <constant name="struts.action.extension" value="action,do"></constant>
      <constant name="struts.custom.i18n.resources" value="global"></constant>
      <constant name="struts.convention.result.path" value="/"></constant>
    13. Struts2中的动作映射中名称空间的用途是什么?

      Struts2名称空间配置使我们可以轻松创建模块。 我们可以使用名称空间根据动作类的功能来分隔它们,例如admin,user,customer等。

    14. 哪个拦截器负责将请求参数映射到动作类Java Bean属性?

      com.opensymphony.xwork2.interceptor.ParametersInterceptor拦截器负责将请求参数映射到Action类java bean属性。 该拦截器在struts-default软件包中配置为“ params”。 此拦截器是basicStack和defaultStack拦截器堆栈的一部分。

    15. 哪个拦截器负责i18n支持?

      com.opensymphony.xwork2.interceptor.I18nInterceptor拦截器负责Struts2应用程序中的i18n支持。 该拦截器在名为“ i18n”的struts-default软件包中配置,并且是i18nStack和defaultStack的一部分。

    16. 将Action接口和ActionSupport类用于我们的操作类有什么区别,您希望使用哪一个?

      我们可以实现Action接口来创建我们的动作类。 该接口具有我们需要实现的单个方法execute()。 使用此接口的唯一好处是它包含一些可用于结果页的常量,这些常量是SUCCESS,ERROR,NONE,INPUT和LOGIN。

      ActionSupport类是Action接口的默认实现,它也实现与Validation和i18n支持相关的接口。 ActionSupport类实现Action,Validateable,ValidationAware,TextProvider和LocaleProvider接口。 我们可以重写ActionSupport类的validate()方法以在我们的操作类中包括字段级验证登录。

      根据需求,我们可以使用任何方法来创建struts 2动作类,我最喜欢的是ActionSupport类,因为它有助于在动作类中轻松编写验证和i18n逻辑。

    17. 我们如何在动作类中获取Servlet API请求,响应,HttpSession等对象?

      Struts2操作类不提供对Servlet API组件(如请求,响应和会话)的直接访问。 但是有时我们需要在操作类中进行这些访问,例如检查HTTP方法或设置cookie以响应。

      因此,Struts2 API提供了一堆* Aware接口,我们可以实现这些接口来访问这些对象。 Struts2 API使用依赖项注入将Servlet API组件注入到动作类中。 一些重要的Aware接口是SessionAware,ApplicationAware,ServletRequestAware和ServletResponseAware。

      您可以在Struts2 Action Classes教程中的如何获取Servlet API会话中了解有关它们的更多信息。

    18. execAndWait拦截器有什么用?

      Struts2为长时间运行的动作类提供了execAndWait拦截器。 我们可以使用此拦截器将中间响应页面返回给客户端,一旦处理完成,最终响应将返回给客户端。 此拦截器在struts-default包中定义,实现在ExecuteAndWaitInterceptor类中提供。

      查看Struts2 execAndWait拦截器示例,以了解有关此拦截器以及如何使用它的更多信息。

    19. Struts2中的令牌拦截器有什么用?

      Web应用程序的主要问题之一是双重表单提交。 如果不小心,重复提交表单可能导致向客户收取双倍的费用或两次更新数据库值。 我们可以使用令牌拦截器来解决双重表单提交问题。 这个拦截器是在struts-default包中定义的,但它不是任何拦截器堆栈的一部分,因此我们需要在操作类中手动添加它。

      在Struts2令牌拦截器示例中了解更多信息。

    20. 我们如何将log4j集成到Struts2应用程序中?

      Struts2为日志目的提供了log4j API的轻松集成,我们所需要的只是WEB-INF / classes目录中的log4j配置文件。

      您可以在Struts2 Log4j集成中签出示例项目。

    21. 我们如何使用它们?

      Struts2提供了许多自定义标签,我们可以在结果页中使用它们来创建客户端请求的视图。 这些标签大致分为三类-数据标签,控制标签和UI标签。

      我们可以通过使用taglib指令在JSP页面中添加这些标记来使用这些标记。

      <%@ taglib uri="/struts-tags" prefix="s" %>

      一些重要的数据标签是属性,设置,推送,Bean,操作,包含,i18n和文本标签。 在Struts2数据标签中了解更多信息 。

      控制标签用于操作和导航集合中的数据。 一些重要的控制标签是if-elseif-else,迭代器,附加,合并,排序,子集和生成器标签。 在Struts2控制标签中了解更多信息。

      Struts2 UI标记用于生成HTML标记语言,将HTML表单数据绑定到动作类属性,类型转换,验证和i18n支持。 一些重要的UI标签是表单,文本字段,密码,文本区域,复选框,选择,广播和提交标签。 在Struts2 UI标签上阅读有关它们的更多信息。

    22. Struts2中的自定义类型转换器是什么?

      Struts2支持OGNL表达式语言,它在Struts 2中执行两项重要任务-数据传输和类型转换。

      OGNL非常灵活,我们可以轻松地对其进行扩展以创建自己的自定义转换器类。 创建和配置定制类型转换器类非常容易,第一步是修复定制类的输入格式。 第二步是实现转换器类。 类型转换器类应实现com.opensymphony.xwork2.conversion.TypeConverter接口。 由于在Web应用程序中,我们总是以String形式获取请求,并以String形式发送响应,因此Struts 2 API提供了TypeConverter接口的默认实现StrutsTypeConverter。 StrutsTypeConverter包含两个抽象方法– convertFromString将String转换为Object,convertToString将Object转换为String。

      有关实现的详细信息,请阅读Struts2 OGNL示例教程 。

    23. 我们如何编写自己的拦截器并将其映射为行动?

      我们可以实现com.opensymphony.xwork2.interceptor.Interceptor接口来创建我们自己的拦截器。 拦截器类准备就绪后,我们需要在struts.xml包中定义要使用的类。 我们还可以使用我们的自定义拦截器和defaultStack拦截器创建拦截器堆栈。 之后,我们可以为要使用拦截器的操作类配置它。

      使用自定义拦截器的最佳示例之一是验证会话,请在Struts2 Interceptor Tutorial中阅读有关会话的更多信息。

    24. 拦截器的生命周期是多少?

      拦截器接口定义了三种方法-init(),destroy()和intercept()。 初始化和销毁​​是拦截器的生命周期方法。 拦截器是Singleton类,Struts2初始化一个新线程来处理每个请求。 创建拦截器实例时将调用init()方法,我们可以在此方法中初始化任何资源。 当应用程序关闭时会调用destroy()方法,我们可以在此方法中释放任何资源。

      exclude()是每次客户端请求通过拦截器时调用的方法。

    25. 什么是拦截器堆栈?

      拦截器堆栈可帮助我们将一个包装中的多个拦截器组合在一起以备将来使用。 struts-default软件包创建一些最常用的拦截器堆栈-basicStack和defaultStack。 我们可以在包的开头创建自己的拦截器堆栈,然后配置操作类以使用它。

    26. 什么是struts-default软件包,它有什么好处?

      struts-default是一个抽象包,它定义了所有Struts2拦截器和常用的拦截器堆栈。 建议在配置我们的应用程序包时扩展此程序包,以避免再次配置拦截器。 通过消除在我们的应用程序中配置拦截器和结果页面的繁琐任务,可以帮助开发人员。

    27. Struts2操作URI的默认后缀是什么,我们如何更改它?

      Struts2操作的默认URI后缀为.action,在Struts1中的默认后缀为.do。 我们可以通过在Struts2配置文件中将struts.action.extension常量值定义为以下内容来更改此后缀:

      <constant name="struts.action.extension" value="action,do"></constant>
    28. 结果页面的默认位置是什么,我们如何更改它?

      默认情况下,Struts2在{WEBAPP-ROOT} / {Namespace} /目录中查找结果页面,但有时我们希望将结果页面保留在另一个位置,我们可以在Struts2配置文件中提供struts.convention.result.path常量值来更改结果页面位置。

      另一种方法是在操作类中使用@ResultPath批注提供结果页面的位置。

    29. 我们如何在Struts2应用程序中上传文件?

      文件上传是Web应用程序中的常见任务之一。 这就是Struts2为通过FileUploadInterceptor上传文件提供内置支持的原因。 该拦截器在struts-default程序包中进行配置,并提供选项来设置文件的最大大小和可以上传到服务器的文件类型。

      在Struts2文件上传示例中阅读有关FileUpload拦截器的更多信息。

    30. 开发Struts2应用程序时应遵循的最佳实践是什么?

      开发Struts2应用程序时的一些最佳实践是:

      1. 创建软件包时,请始终尝试扩展struts-default软件包,以避免配置拦截器时的代码冗余。
      2. 对于整个应用程序中的常见任务,例如记录请求参数,请尝试使用拦截器。
      3. 始终将动作类的Java Bean属性保留在单独的Bean中,以供代码重用并实现ModelDriven接口。
      4. 如果您有要在多个操作中使用的自定义拦截器,请为其创建拦截器堆栈,然后使用它。
      5. 尝试根据功能区域将应用​​程序划分为具有名称空间配置的不同模块。
      6. 尝试在结果页面中使用Struts2标记以澄清代码,如果需要,请创建自己的类型转换器。
      7. 使用开发模式可以加快开发速度,但是请确保生产代码不在开发模式下运行。
      8. 将Struts2 i18n支持用于资源包并支持本地化。
      9. Struts2提供了许多地方,您可以在其中拥有资源包,但尝试保留一个全局资源包和一个动作类资源包,以避免混淆。
      10. struts-default软件包配置所有拦截器并创建不同的拦截器堆栈。 尝试仅使用所需的内容,例如,如果您没有本地化要求,则可以避免使用i18n拦截器。

这就是Struts2面试问答的全部内容,如果您遇到任何我遗漏的重要问题,请通过评论告知我。

参考:《 Struts2访谈》问答来自JCG合作伙伴 Pankaj Kumar,在Developer Recipes博客上。

翻译自: https://www.javacodegeeks.com/2013/11/struts2-interview-questions-and-answers.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于canvas的骨骼动画

最近学习到了一种关于canvas的骨骼动画&#xff0c;听这个名字就知道他和canvas之前的动画不同&#xff0c;不知道你有没有兴趣了解一下呢&#xff1f;关于骨骼动画最初是无意间在腾讯团队上看到的&#xff0c;但是由于他官网的教程是在是少之又少&#xff0c;也就仅有一个小de…

Python APSchedule安装使用与源码分析

我们的项目中用apschedule作为核心定时调度模块。所以对apschedule进行了一些调查和源码级的分析。 1、为什么选择apschedule&#xff1f; 听信了一句话&#xff0c;apschedule之于python就像是quartz之于java。实际用起来还是不错的。 2、安装 # pip安装方式 $ pip install ap…

NetBeans 7.4的本机Java打包

成为“ NetBeans 74 NewAndNoteworthy ”页面的NetBeans 7.4的新功能之一是“本机打包 ”&#xff0c;在该页面上被描述为“ JavaSE项目现在支持使用JavaFX提供的本机打包技术来创建本机包。 ” 我将使用一个非常简单的示例来演示NetBeans 7.4中的本机打包功能。 下一个代码清…

基于Vue开发一个日历组件

最近在做一个类似课程表的需求&#xff0c;需要自制一个日历来支持功能及展现&#xff0c;就顺便研究一下应该怎么开发日历组件。 更新 2.23修复了2026年2月份会渲染多一行的bug&#xff0c;谢谢深蓝一人童鞋提出的bug&#xff0c;解决方案是给二月份的日历做特殊处理&#xf…

php 打开word乱码怎么办,如何解决php word 乱码问题

php word乱码的解决办法&#xff1a;首先打开“/Writer/Word2007/Base.php”文件&#xff1b;然后添加“$objWriter->writeAttribute(‘w:eastAsia’, $font)”内容&#xff1b;最后保存修改即可。PHPword解决中文乱码一、增加东亚字体支持打开并编辑路径/Writer/Word2007/B…

Java开发人员访谈的MindMap

多年来&#xff0c;我曾在许多Java开发人员访谈中担任小组成员。 之前&#xff0c;我曾写过一篇标题为“成功进行软件工程师技术面试的7大技巧”的文章&#xff0c;其中涵盖了很少的一般准则。 在本文中&#xff0c;我将分享一个思维导图&#xff0c;其中包含Java开发人员访谈中…

送给大家一个好看的简历神器

很多人看到里边有好看的东西就习惯性的点进来看看&#xff0c;还一边点一边想 —— 好看的简历我见多了&#xff0c;你这个又能好看到哪里去。我想差不多可以&#xff1a; 哪里吧因为最近有在准备简历&#xff0c;就习惯性的找一找有没有现成的简历模板。结果全是付费的&#x…

PHP简单实现单点登录功能示例

1.准备两个虚拟域名 127.0.0.1 www.openpoor.com127.0.0.1 www.myspace.com 2.在openpoor的根目录下创建以下文件 index.PHP 123456789101112131415161718<?phpsession_start();?><!DOCTYPE html><html><head><meta charset"UTF-8"/&…

JUNG 计算图属性,中心度,偏心率,直径,半径

本文介绍利用Java的第三方API JUNG 计算图中&#xff1a; closeness centrality&#xff1b;// 图中某节点的 接近中心性/亲密中心性 betweenness centrality&#xff1b;// 图中某节点的 中介中心性/介数中心性 distance; // 图中两节点的最短距离 eccentricity; // 图中某节…

Java VM –提防YoungGen空间

您可能从我们以前的面向性能的文章中看到&#xff0c;健康的JVM是实现最佳应用程序性能和稳定性的最重要目标之一。 这样的健康评估通常仅关注主要收集的频率&#xff08;避免&#xff09;或检测内存泄漏的存在。 年轻一代空间或短寿命物体的大小和足迹如何&#xff1f; 本文…

小程序绘图工具painter-json文件绘制保存分享图-可点击任意元素触发函数

Painter是由酷家乐移动前端团队打造的一款小程序绘图组件。 原项目地址&#xff1a;https://github.com/Kujiale-Mobile/Painter 新版地址&#xff1a;https://github.com/shesw/Painter 这款交互版原来是为了针对业务中的新需求而由我自己开发的&#xff0c;后来需求改动&a…

4 张动图解释为什么(什么时候)使用 Redux

dev-reading/fe 是一个阅读、导读、速读的 repo&#xff0c;不要依赖于 dev-reading/fe 学习知识。本 repo 只是一个快速了解文章内容的工具&#xff0c;并不提供全文解读和翻译。你可以通过本平台快速了解文章里面的内容&#xff0c;找到感兴趣的文章&#xff0c;然后去阅读全…

您正在使用什么垃圾收集器?

我们的研究实验室正全速前进。 随着最近的资金注入 &#xff0c;我们只能保证我们不断创新的步伐只会加快。 我们进行的部分研究与GC优化有关。 在处理这个有趣领域中的问题时&#xff0c;我们认为可以分享一些有关GC算法使用的见解。 为此&#xff0c;我们对使用特定GC算法的…

前端布局推进剂 - 间距规范化

我是一个爱折腾设计的前端&#xff0c;一直都在标榜自己的页面还原是多么的牛 X 。怎么做到页面还原&#xff1f;我有一个最笨但是有效的方法&#xff0c;就是把设计稿直接存成图片&#xff0c;作为背景图然后临摹着设计稿进行开发。我觉得自己太有才了。像素级还原有没有&…

echarts折线图相关

optionJKDLine {  title: {text: 告警数量趋势图,textStyle:{  //标题样式fontStyle:normal,fontFamily:sans-serif,fontSize:12    }},tooltip: {trigger: axis},legend: {  //图例,默认显示},grid: {  //图表距离left: -3%,right: 5%,bottom: 3%,top:20%,contai…

一个关于fixed抖动的小bug

前言 大家都知道position: fixed用于生成绝对定位的元素&#xff0c;相对于浏览器窗口进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 突然发现自己之前写的网页有个小bug&#xff1a;在购买页面的…

腾讯Node.js基础设施TSW正式开源

经过六年的迭代与沉淀&#xff0c;腾讯Tencent Server Web (以下简称TSW)这一公司级运维组件于今日正式开源。TSW是面向WEB前端开发者&#xff0c;以提升问题定位效率为初衷&#xff0c;提供云抓包、全息日志和异常发现的Node.js基础设施。TSW每天为百亿次请求提供稳定服务&…

ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)...

摘要&#xff1a; Android中对SQLite数据库使用&#xff0c;是一件非常频繁的事情。现今&#xff0c;也有非常多的SQLite处理的开源框架&#xff0c;其中最著名的greenDao&#xff0c;它以占用资源少&#xff0c;处理效率高等特点&#xff0c;成为优秀的ORM框架之一。那么对于g…

配置MySQL以进行ADF开发

大家好。 今天&#xff0c;我将向您展示如何为Oracle ADF开发配置MySQL数据库。 恕我直言&#xff0c;当您将ADF与其他数据库而不是Oracle DB一起使用时&#xff0c;您将无法使用Oracle ADF的全部功能&#xff0c;有时您会发现自己正在寻找解决方法&#xff0c;以实现某些行为…

React Native面试知识点

本文原创首发于公众号&#xff1a;ReactNative开发圈&#xff0c;转载需注明出处。 本文会不定期不断更新&#xff0c;想查看最新版本请移步至https://github.com/forrest23/react-native-interview 1.React Native相对于原生的ios和Android有哪些优势&#xff1f; 1.性能媲美…