首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

getContext()方法在片段中返回null。将上下文保存在变量中是个好主意吗?我想了解其中的利弊。

getContext()方法在片段中返回null。将上下文保存在变量中是个好主意吗?我想了解其中的利弊。

在理解这个问题之前,我们需要了解一些背景知识。在云计算领域中,上下文通常指的是程序执行的环境和状态信息。getContext()方法是一种用于获取当前上下文的方法。

当getContext()方法在片段中返回null时,意味着无法获取当前上下文。这可能是由于上下文未正确初始化或其他原因导致的。在这种情况下,将上下文保存在变量中可能是一个好主意,因为它可以提供一个备份的上下文,以便在需要时使用。

利益:

  1. 灵活性:将上下文保存在变量中可以使程序更加灵活,因为您可以在需要时随时访问上下文,而不必依赖于getContext()方法的返回值。
  2. 性能优化:如果您需要频繁地访问上下文,将其保存在变量中可以避免多次调用getContext()方法,从而提高程序的性能。

劣势:

  1. 内存占用:保存上下文可能会占用额外的内存空间,特别是如果上下文对象很大或者需要保存多个上下文对象时。
  2. 数据一致性:如果上下文对象在程序执行过程中发生变化,而您没有及时更新保存的上下文变量,可能会导致数据一致性的问题。

总结起来,将上下文保存在变量中可以提供灵活性和性能优化的好处,但也需要注意内存占用和数据一致性的问题。在实际应用中,需要根据具体情况权衡利弊,选择适合的方式来处理上下文。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

struts2中action如何获取jsp页面参数

执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放的是Action在执行时需要用到的对象....是实现ThreadLocal的一个内部类.ThreadLocal可以命名为"线程局部变量",它为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突...4. struts2中获得request、response和session (1)非IoC方式 方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext...session是个Map对象, 在Struts2中底层的session都被封装成了Map类型....(); 这条语句放在这个位置是错误的,同样把这条语句放在构造方法中也是错误的。

2.3K150

多线程引发的惨案直接把年终给干没了

问题简述 先简单介绍一下问题产生的背景,我们有个返利业务,其中有个搜索场景,这个场景是用户在 app 输入搜索关键词,然后 server 会根据这个关键词到各个平台(如淘宝,京东,拼多多等)调一下搜索接口...2.简化变量的传递逻辑 接下来我们来看使用 ThreadLocal 的等二个好处,简化变量的传递逻辑,线程在处理业务逻辑时可能会调用几十个方法,如果这些方法中只有几个需要用到 clientInfo,难道要在这几十个方法中定义一个...由上文可知通过 ThreadLocal 设置的本地变量是同 threadlocal 一起保存在 Thread 的 ThreadLocalMap 这个内部类中的,所以可在线程调用的任意方法中取出,伪代码如下...变量吗,这么做不是不可以,但不够优雅,更合适的做法是我们只定义一个 ThreadLocal 变量,变量存的是一个上下文对象,其他像 clientInfo,userId,header 等信息就作为此上下文对象的属性即可...此外我们在 getMap 和 createMap 这两个方法中也发现它的底层其实是用 inheritableThreadLocals 来存储的,而 ThreadLocal 用的是 threadLocals

31620
  • 通过添加HTTP Header实现上下文数据在WCF的自动传递

    多年之前,我写了一篇通过WCF扩展实现上下文信息从客户端自动传递到服务端的文章,其实现机制很简单:将上下文信息存放到SOAP Header进行传递。...三、创建ContextSender将上下文附加到请求消息的HTTP Header 实现上下文从客户端到服务端的自动传递需要解决两个问题:客户端将当前上下文附加到请求消息中,服务端则从请求消息获取上下文信息并作为当前的上下文...在BeforeSendRequest方法中,我们将所有上下文元素置于请求消息的HTTP Header之中。...而上下文的获取和设置实现在BeforeInvoke方法中,确保在服务操作在执行的时候当前上下文信息已经存在。...整个HTTP请求消息如下所示,从中我们可以清楚地看到两个上下文项存在于HTTP Header列表中。

    1.6K110

    ThreadLocal案例分析

    而用synchronized修饰过后,串行访问时就不存在不可见的情况。从而保证了count变量的正确性。那么是否可以换个思路:让变量只能被一个线程访问,这不就不存在之前谈到的线程安全问题了吗?...= null) m.remove(this); } 1.1.2 变量的生命周期 这里所的变量指的是存储在Thread对象中的变量副本。...当第一次接触Struts2的时候,曾一直困惑于一个问题:Action中的每个方法的请求参数怎么获得的?处理结果又是如何返回的?...数据不再需要作为方法参数传入或作为返回值返回。Struts2的返回值仅仅作为控制流的标识(比如:选择哪个视图)。Struts2中数据载体就是ActionContext。...其中解决并发问题的本质是一种以空间换时间的思路,时间效率提升了,但是也存在着内存使用时的潜在溢出风险。

    45710

    Spring Security(一)--Architecture Overview

    前者致力于让读者先了解整体的架构,方便让我们有一个宏观的把控,而后者以特定的demo配合讲解,可以让读者在解决问题的过程中顺便掌握一门技术。...(…)方法,设置到其中。...中,对应的方法便是retrieveUser,虽然有两个参数,但是retrieveUser只有第一个参数起主要作用,返回一个UserDetails。...如果你已经被这些概念搞得晕头转向了,不妨这么理解DaoAuthenticationProvider:它获取用户提交的用户名和密码,比对其正确性,如果正确,返回一个数据库中的用户信息(假设用户信息被保存在数据库中...还记得Authentication接口中的getUserDetails()方法吗?其中的UserDetails用户详细信息便是经过了AuthenticationProvider之后被填充的。

    1K80

    Spring Security (一) Architecture Overview

    前者致力于让读者先了解整体的架构,方便让我们有一个宏观的把控,而后者以特定的demo配合讲解,可以让读者在解决问题的过程中顺便掌握一门技术。...(…)方法,设置到其中。...中,对应的方法便是retrieveUser,虽然有两个参数,但是retrieveUser只有第一个参数起主要作用,返回一个UserDetails。...如果你已经被这些概念搞得晕头转向了,不妨这么理解DaoAuthenticationProvider:它获取用户提交的用户名和密码,比对其正确性,如果正确,返回一个数据库中的用户信息(假设用户信息被保存在数据库中...还记得Authentication接口中的getUserDetails()方法吗?其中的UserDetails用户详细信息便是经过了AuthenticationProvider之后被填充的。

    1.1K60

    Context都没弄明白,还怎么做Android开发?

    Context到底是什么 Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?...它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。...出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。...getApplication()方法的语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。...那么也许在绝大多数情况下我们都是在Activity或者Service中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例

    37120

    超性感的React Hooks(二)再谈闭包

    就以我和PP同学在面试过程中的对话为引子,对话内容大概如下: 我:能聊聊你对闭包的理解吗 PP:函数执行时访问上层作用域的变量,就能形成闭包,闭包可以持久化保持变量。 我:还有其他的吗?...在接着聊闭包与模块之间的联系之前,我们先来回顾几个的概念。 闭包是一个特殊的对象 它由两部分组成,执行上下文A以及在A中创建的函数B。 当B执行时,如果访问了A中的变量对象,那么闭包就会产生。...思考题:setCounter的执行会产生闭包吗? 根据闭包的特性,state模块中的state变量,会持久存在。...这个文件共有两千多行,是一个非常复杂的模块。 第一步,要搞清楚这个模块的作用。 具体的方法是观察模块返回了什么内容。搜索export。...经过简单的分析,所有的核心逻辑都写在renderWithHooks中。通过断点调试也能定位到这个方法。 快速分析一个函数的作用,一个思路是看它返回了什么,二个思路是看它改变了什么。

    1.3K20

    写给精明Java开发者的测试技巧

    但是,今天我想和你谈论一系列小建议,这些建议可以帮助你在头脑中理清测试自下而上是如何运作的。从如何构造一个简单的单元测试到对 mock(模拟) 和 spy(监视) 以及复制粘贴测试代码更高层次的理解。...我们正在破坏单元测试中一个基本规则:只测试单独的单元,而不是这个单元的实现细节。 我并不是在说单元测试只能测试单独的类。然而在大多数情况下,把类作为一个单独的单元考虑,可能是一个好主意。...了解何时使用断言 对于编写应用程序测试来说,JUnit和TestNG都是非常优秀的框架,它们提供了许多不同的方法在测试中对一个值进行断言。例如,检查两个值是相同还是不同,或者值是否为空。...有时,Spy应用程序在做什么,或者验证程序使用特定参数调用了特定方法并调用了指定次数,是很有用的。有时,我们想触发数据库层,但又想模拟数据库返回给我们的响应。...当你想在代码片段中强行设定某些条件时,存根会很有用,例如,如果数据库调用失败,而你希望在测试中触发数据库异常处理。存根是模拟对象个一个特例。

    2.1K10

    [干货]让你彻底搞懂 Context 到底是什么,如果没弄明白,还怎么做 Android 开发?

    Context到底是什么 Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?...它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。...出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。...getApplication()方法的语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。...那么也许在绝大多数情况下我们都是在Activity或者Service中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例

    1.5K20

    Context都没弄明白,还怎么做Android开发?

    Context到底是什么 Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说称之为“上下文”,那么这个“上下文”到底是指什么意思呢?...它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文。...出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。...getApplication()方法的语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。...那么也许在绝大多数情况下我们都是在Activity或者Service中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例

    80340

    一个Callable接口能有多少知识点?

    只要一个接口中只包含有一个方法,那么,这个接口就是函数式接口。 在JDK中,实现Callable接口的子类如下图所示。...虽然这些类在实际工作中很少被直接用到,但是作为一名合格的开发工程师,设置是秃顶的资深专家来说,了解并掌握这些类的实现有助你进一步理解Callable接口,并提高专业技能(头发再掉一批,哇哈哈哈。。。)。...private static native AccessControlContext getStackAccessControlContext(); 原来是个本地方法,方法的字面意思就是获取能够访问系统栈的决策上下文对象...并在构造方法中为三个成员变量赋值,如下所示。...如果任务没有被取消,则更新任务的缓存,将调用call()方法返回的泛型对象绑定到Task对象中的ObjectProperty对象中,其中,ObjectProperty在Task类中的定义如下。

    22820

    针对高级前端的8个级JavaScript面试问题

    + 运算符有一个有趣的特性,那就是当其中一个操作数是字符串时,它更倾向于执行字符串的连接。在我们的例子中,'1' 是一个字符串,因此 JavaScript 隐式地将数字 1 转换为字符串。...为了解决由于数组长度增长而导致的无限循环问题,可以在进入循环之前将数组的初始长度存储在一个变量中。然后,可以使用这个初始长度作为循环迭代的限制。...当一个对象在需要基本值的上下文中被使用时,JavaScript 首先会在对象内部查找valueOf方法。...在valueOf方法不存在或不返回适当的基本值的情况下,JavaScript会退回到toString方法。这个方法负责提供对象的字符串表示形式。...然而,在valueOf方法不存在或不返回适当的基本值的情况下,JavaScript会退回到toString方法。

    18710

    针对高级前端的8个级JavaScript面试问题

    + 运算符有一个有趣的特性,那就是当其中一个操作数是字符串时,它更倾向于执行字符串的连接。在我们的例子中,'1' 是一个字符串,因此 JavaScript 隐式地将数字 1 转换为字符串。...为了解决由于数组长度增长而导致的无限循环问题,可以在进入循环之前将数组的初始长度存储在一个变量中。然后,可以使用这个初始长度作为循环迭代的限制。...当一个对象在需要基本值的上下文中被使用时,JavaScript 首先会在对象内部查找valueOf方法。...在valueOf方法不存在或不返回适当的基本值的情况下,JavaScript会退回到toString方法。这个方法负责提供对象的字符串表示形式。...然而,在valueOf方法不存在或不返回适当的基本值的情况下,JavaScript会退回到toString方法。

    21830

    2020年了,Android后台保活还有戏吗?看我如何优雅的实现!

    除了之前那些耳熟能详的保活黑科技以外,在Android 9.0(甚至Android 10)时代,我们还有哪些保活方法可以用?那么,请跟着本文作者的思路,看看更优雅的后台保活实现方法吧。...下次被产品说「 XXX 都可以保活,为什么我们不行!」的时候,你就知道怎么怼回去了。大厂通过和手机厂商的合作,将自己的应用默认加入到白名单中。如果你在一个能谈成这种合作的大厂,也就不用往下看了。...不同的厂商在不同的地方进行设置,一般是在各自的「手机管家」,但更难的是,就算同一个厂商的系统,不同的版本也可能是在不同地方设置。...在之前做的跑步应用中,我在设置里增加了一个权限设置页面,将上面提到的设置放在这里面。 最近发现友商某咚也跟进了,图 1 是我们做的,图 2 是某咚做的: ?...某咚从设计、从我写的不够好的文案,甚至是我从十几台手机上一张一张截下来的图,进行了全方位的致敬。感谢某咚的认可,但最近在某个发布会上听到这么一句话:在致敬的同时,能不能说一句谢谢?

    5.8K21

    深入理解Spring Security授权机制原理

    一、一种是基于注解方法级的鉴权,其中,注解方式又有@Secured和@PreAuthorize两种。...JWT拦截的过滤器JwtFilter,这里的addFilterBefore方法将在下一篇文详细分析,这里暂不展开,该方法大概意思就是,将自定义过滤器JwtFilter加入到Security框架里,成为其中的一个优先安全...它的有意思之处在于,是将多个参数统一归纳到一个类当中,其到统一管理作用,你想,若是N多个参数,传进来都分散到类的各个地方,参数多了,代码多了,方法过于分散时,可能就很容易造成阅读过程中,弄糊涂这些个参数都是哪里来了...二、获取认证通过之后保存在 SecurityContextHolder的用户信息,其中,authorities是一个保存用户所拥有全部权限的集合; ?...到这一步,代码就开始难懂了,这部分封装地过于复杂,总体的逻辑,是将用户信息所具有的权限与该接口的权限表达式做匹配,若能匹配成功,返回true,在三目运算符中, allowed ?

    2.7K20

    高并发之——深入解析Callable接口

    只要一个接口中只包含有一个方法,那么,这个接口就是函数式接口。 在JDK中,实现Callable接口的子类如下图所示。 ?...虽然这些类在实际工作中很少被直接用到,但是作为一名合格的开发工程师,设置是秃顶的资深专家来说,了解并掌握这些类的实现有助你进一步理解Callable接口,并提高专业技能(头发再掉一批,哇哈哈哈。。。)。...private static native AccessControlContext getStackAccessControlContext(); 原来是个本地方法,方法的字面意思就是获取能够访问系统栈的决策上下文对象...并在构造方法中为三个成员变量赋值,如下所示。...如果任务没有被取消,则更新任务的缓存,将调用call()方法返回的泛型对象绑定到Task对象中的ObjectProperty对象中,其中,ObjectProperty在Task类中的定义如下。

    42720
    领券