使用全局变量引发的问题

  • 前言
  • 一:问题代码
  • 二:修正代码
  • 总结

有个经典的面试题:static final 修饰的全局变量List, 其地址是不变的,但是内容是可变的。

前言

最近在工作中遇到了这个问题:每次读取后,会进行加工。最终导致List越来越大。且重启后,数据会重置。

一:问题代码

@RestController
@RequestMapping(value = "demo")
public class DemoController {private static final List<String> STR_LIST = Lists.newArrayList("1", "2", "3", "4");@PostMapping(value = "m1", name = "m1")public void methodOne(@RequestBody JSONObject jsonObject) {List<String> strList = STR_LIST;strList.add(String.valueOf(strList.size() + 1));System.out.println(STR_LIST);}}

执行结果:

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

二:修正代码

@RestController
@RequestMapping(value = "demo")
public class DemoController {private static final List<String> STR_LIST = Lists.newArrayList("1", "2", "3", "4");@PostMapping(value = "m1", name = "m1")public void methodOne(@RequestBody JSONObject jsonObject) {List<String> strList = Lists.newArrayList(STR_LIST);strList.add(String.valueOf(strList.size() + 1));System.out.println(STR_LIST);}}

执行结果:

[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]

总结

使用全局变量时,建议new一个对应去接收,而不是直接等于。

  List<String> strList = Lists.newArrayList(STR_LIST);

工作记录 - 使用全局变量引发的问题相关推荐

  1. 如何通过路由器日志查看路由器是否断网过_路由器本身有一个日志功能,里面存了很多工作记录...

    第一种原因或许是来自路由器内存的问题,路由器本身有一个日志功能,里面存了很多工作记录. 有的路由器本身内存小,用的时间久了日志信息就会占满内存,出现路由器无缘无故卡一下的状况,从而导致网络连接故障,无 ...

  2. 5.20——工作记录

    5.20--工作记录 前言 记录 jsp显示问题 人员详情检索 证件类型 证件号码 变灰 禁用 恢复人员检索信息 总结 前言 记录 jsp显示问题 问题:之前显示成aseid了 问题解决 点详情把人员 ...

  3. 2015年1月工作记录和阅读记录

    2019独角兽企业重金招聘Python工程师标准>>> 关于IT.翻过了2014的一年,也走到了大四的中间.成长说不上,但是眼界是慢慢开阔了.这一年的节奏像流水一样缓慢平稳,没有特别 ...

  4. 5.26——工作记录

    5.26--工作记录 前言 过程 总结 重点 前言 目标:1.准备查询的基础sql 2.查询页面, 3.点击设备编码按钮的显示 4.图片 过程 deviceStatusPerceptionEventI ...

  5. 5.6-5.8工作记录2—分页模糊查询

    5.6-5.8工作记录2-改造ssh 前言 作战过程 5.7项目上篇--分页模糊查询 jsp ssm PK ssh 准备ssm 对比ssh: 工作bug记录 注意 打怪 查询以及分页 知识点 准备第二 ...

  6. 项目实训工作记录(二)

    项目实训工作记录(二)赵乐乐 201800301115 词向量搜索分析与算法设计 项目实训工作记录(二)赵乐乐 201800301115 1.词向量搜索 2.搜索过程中的问题分析 3.基于效率的算法设 ...

  7. openshift/origin工作记录(9)——openshift结合jenkins实现持续集成

    最近工作为基于jenkins.Openshift实现持续集成. 由于只给了我一周的时间,这里先记录一下V1.0版的实现过程. 集成jenkins 参考<openshift/origin学习记录( ...

  8. 2020.4.23工作记录————Regsvr32加载控件失败:“请确保该二进制存储在指定路径中。。。”

    工作记录----Regsvr32加载控件失败: 之前的OCX控件今天我因为工作需要又重新写了个新的,跟之前不同的是这次的控件链接了第三方的动态库,但是在OCX控件生成完成后我使用管理员身份运行cmd对 ...

  9. 计算机科学与技术指导情况记录表,计算机科学与技术学院工作记录模板.doc

    计算机科学与技术学院工作记录模板 武汉科技大学 计算机科学与技术学院 2011 / 2012 学年 第 二 学期 毕业设计工作记录 毕业设计(论文)题目: 基于JAVA的网上购物系统 专业名称: 计算 ...

最新文章

  1. Batch Normalization的一些个人理解
  2. 2018-2019 网络对抗技术 20165231 Exp5 MSF基础应用
  3. 由浅入深剖析go channel
  4. 扛并发主力军,引入应用层缓存
  5. scare机器人如何手眼标定_基于视觉伺服的工业机器人系统研究(摄像机标定、手眼标定、目标单目定位)...
  6. Spring Boot 设置 ASCII banner 艺术字
  7. 小蒜的A+B 计蒜客 - T1283
  8. php上传文件类插件,JQueryfileupload插件实现文件上传功能_jquery
  9. selenium定位方式
  10. cacti实现微信告警功能
  11. samba - 为 UNIX 实现的 Windows SMB/CIFS 文件服务器
  12. 【笔记】VUE学习笔记
  13. java优化 pdf_Java性能优化权威指南 PDF扫描[132MB]
  14. vax关于js方面的一些设置
  15. 【深度学习】视频分类技术整理
  16. 华硕笔记本FH5900VQ 如何利用Winflash更新BIOS
  17. 如何一键修改CAD图纸底图颜色?
  18. 用Android和node.js实现扫码登录
  19. 金融业分布式数据库选型及HTAP场景实践
  20. 计算机科学与技术专接本试题,计算机科学与技术专业专接本入学考试试题.doc...

热门文章

  1. CC2640R2F学习笔记(7)——自定义服务和特征
  2. 用python的gui界面设计签名_Python GUI--Tkinter简单实现个性签名设计
  3. 操作系统ucore实验——lab1
  4. 设置pdf为护眼绿色
  5. web端自动化测试--淘宝
  6. 全球及中国工业EB加速器行业动态发展及前景规划研究报告2021-2027年
  7. win10(版本1803,os ver 17134.165)内置Ubuntu子系统在vim中文乱码问题
  8. 处理VR透镜畸变的三种方法
  9. PAT——1057 数零壹
  10. 如何更快地学会任何事情?