java中如何实现全局变量

问题描述

“JAVA中不应该有所谓全局变量的概念,全局变量严重影响了封装和模块化,所以如果你的程序中需要所谓的全局变量,那一定是你对程序的设计出了问题。”很多地方看到上面的话,我也始终认为上面的话是正确的。但是实际项目中有时候会觉得增加一个全局变量会很有用,例如增加一个SessionManager类,使用全局变量SessionMap管理多个用户的session。本帖想仅就技术层面如何实现全局变量,使用static关键字或使用单例模式,每种实现是否会有线程安全问题。servletContext实现原理是什么,是否线程安全。网上查了好久,内容都很相似,看完之后还是有疑惑,第一次发帖,请大神指教

解决方案

解决方案二:
全局变量肯定还是有用的,虽然说占内存啊,影响性能什么的,但是有时候还非他不可全局变量的实现的话,常用的都是publicstaticfinal,这样当做常量来用,多方面实现
解决方案三:
引用1楼shijing266的回复:

全局变量肯定还是有用的,虽然说占内存啊,影响性能什么的,但是有时候还非他不可全局变量的实现的话,常用的都是publicstaticfinal,这样当做常量来用,多方面实现

我也觉得publicstaticfinalCollention是比较方便的实现,但是这样会有线程安全问题吧,所以我想的是改为private的,然后使用synchronizedgetValue/setValue方法读写数据,不考虑性能的情况下这样是否可行
解决方案四:
可不可行试试就知
解决方案五:
首先,你得达到你的目的,在考虑性能
解决方案六:
全局变量?你要是不想用publicstaticfinal、还不如放到session中那、哪都能取得到、也不烧性能、就是有点不安全
解决方案七:
现在得代码第一、安全性;第二、实现需求;第三、可扩展性;第四、性能,因为现在企业级用户对于服务器得投资越来越不在乎,一个大型项目应用服务器都要4-8台,通信服务器2台,数据库服务器4台,矩阵若干,一个项目坐下来几百万得硬件。性能方面只要不是太离谱没关系得。中国特色
解决方案八:
“JAVA中不应该有所谓全局变量的概念,全局变量严重影响了封装和模块化,所以如果你的程序中需要所谓的全局变量,那一定是你对程序的设计出了问题。”————————————————————————————————以前信过这种观点,现在不信了:)太武断。这是把java往死里整啊。。。
解决方案九:
引用6楼ooppookid的回复:

现在得代码第一、安全性;第二、实现需求;第三、可扩展性;第四、性能,因为现在企业级用户对于服务器得投资越来越不在乎,一个大型项目应用服务器都要4-8台,通信服务器2台,数据库服务器4台,矩阵若干,一个项目坐下来几百万得硬件。性能方面只要不是太离谱没关系得。中国特色

这倒是也算不上什么中国特色。原因说透了很简单:服务器比人便宜。是高薪养一个资深技术人员还是砸设备是个很容易判断的问题。从程序员的角度看,资本家的阴险企图就是把开发这个活儿从“智力密集型”转变成“体力密集型”。顺便吐槽下Spring+struct+hibernate,这就是个成功忽悠案例~~~~
解决方案十:
引用8楼deltatang的回复:

Quote: 引用6楼ooppookid的回复:
现在得代码第一、安全性;第二、实现需求;第三、可扩展性;第四、性能,因为现在企业级用户对于服务器得投资越来越不在乎,一个大型项目应用服务器都要4-8台,通信服务器2台,数据库服务器4台,矩阵若干,一个项目坐下来几百万得硬件。性能方面只要不是太离谱没关系得。中国特色

这倒是也算不上什么中国特色。原因说透了很简单:服务器比人便宜。是高薪养一个资深技术人员还是砸设备是个很容易判断的问题。从程序员的角度看,资本家的阴险企图就是把开发这个活儿从“智力密集型”转变成“体力密集型”。顺便吐槽下Spring+struct+hibernate,这就是个成功忽悠案例~~~~

为什么这么说呢,SSM相对SSH有什么特别明显的优点么
解决方案十一:
引用9楼dksy891028的回复:

Quote: 引用8楼deltatang的回复:
Quote: 引用6楼ooppookid的回复:
现在得代码第一、安全性;第二、实现需求;第三、可扩展性;第四、性能,因为现在企业级用户对于服务器得投资越来越不在乎,一个大型项目应用服务器都要4-8台,通信服务器2台,数据库服务器4台,矩阵若干,一个项目坐下来几百万得硬件。性能方面只要不是太离谱没关系得。中国特色

这倒是也算不上什么中国特色。原因说透了很简单:服务器比人便宜。是高薪养一个资深技术人员还是砸设备是个很容易判断的问题。从程序员的角度看,资本家的阴险企图就是把开发这个活儿从“智力密集型”转变成“体力密集型”。顺便吐槽下Spring+struct+hibernate,这就是个成功忽悠案例~~~~

为什么这么说呢,SSM相对SSH有什么特别明显的优点么

ssm是啥。。。。好吧,我查了一下,才晓得m指的是mybatis。。。我也没说ssm比ssh好啊。。。这么说吧,所有的这个shm之类的组合并将之市场化的努力就跟微软的xxstudio产品,期望用鼠标拖拉几个图标就搞定编程这个事情是一样的:)降低培训成本和劳动力的成本
解决方案十二:
静态关键字static,在类加载的时候就被执行了,一般这个是常量,增加读取速度,你说的全局变量,这个很有必要,一般全局变量,都会使用单例模式,整个过程中只会存在一个实例,这个你可以看看工厂模式,也是这么来的

时间: 2024-11-01 22:28:21

java中如何实现全局变量的相关文章

java 中全局变量与Scanner问题

问题描述 java 中全局变量与Scanner问题 看最下面的结果,为什么是先输入一个整数后它才执行main()方法中的System.out.println("请输入一个整数的语句");,如果我想让这个System.out.pritnln();语句先执行,然后在执行那个Scanner语句该怎么办,还有个问题就是就是为什么最上面的全局变量和Scanner 语句一定要用static来修饰,否则就报错 解决方案 首先,类加载的时候就会初始化静态变量,方法块,再者,nextint是线程阻塞方法

关于Java中各种修饰符与访问修饰符的说明

访问 补充一下JAVA的基础知识(转)关于Java中各种修饰符与访问修饰符的说明 类:访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被所有类访问(使用) public类必须定义在和类名相同的同名文件中 package 可以被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中   修饰符 名称 说明 备注 f

Java中static、this、super、final用法

一.static  请先看下面这段程序:   public class Hello{     public static void main(String[] args){ //(1)       System.out.println("Hello,world!");   //(2)     }   } 看过这段程序,对于大多数学过Java 的从来说,都不陌生.即使没有学过Java,而学过其它的高级语言,例如C,那你也应该能看懂这段代码的意思.它只是简单的输出"Hello,w

Thinking:Java中static、this、super、final用法

Thinking:Java中static.this.super.final用法   本篇旨在帮助准备学习Java以及刚接触Java的朋友认识.掌握和使用static.this.super.final这几个关键字的使用.Java博大精深,我也是一位正在学习和使用Java的爱好者,文中难免有不妥之处,欢迎指正. 一.static 请先看下面这段程序:   public class Hello{    public static void main(String[] args){ //(1)     

线程-java中this和Thread.currentThread()区别,见下代码

问题描述 java中this和Thread.currentThread()区别,见下代码 public class hello extends Thread { public hello(String name){ super(name); System.out.println(""Thread.currentThread().getname()=""+Thread.currentThread().getName()); System.out.println(&qu

深入理解java中的synchronized关键字_java

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和 synchronized 块. 1. synchronized 方法:通过在方法声明中加入 synchronized关键字来声明 synchronized 方法.如: 复制代码 代码如下: publ

java中关于变量的作用域的问题

问题描述 java中关于变量的作用域的问题 在java中局部变量,实例变量,类变量的作用域都分别是什么呢? 解决方案 在java中: 局部变量:一般指的就是方法内部的变量,它的作用域范围就是定义方法体内部,也就是两个花括号之间,出了这个范围就访问不到了.实例变量实例变量也叫_非静态成员变量_,它的作用范围是在当前类创建的实例对象范围,如果当前实例对象被销毁,它也将随之消失,各个实例对象之间互不影响.类变量类变量也叫_静态成员变量_,顾名思义类变量,它就是跟当前类有关系的,它是属于当前类的.cla

java static-关于java中static的问题

问题描述 关于java中static的问题 一.能总结一下java中static关键字的用法吗?及其一些注意事项. 二.帮我解释几个句子为什么是错误的: 1.关键字static final再修饰int类型变量的时候,必须同时定义变量的初始值为0. 2.关键字static放在类前面做修饰符时,表示该类中的所有方法都为静态方法. 解决方案 在Java语言中,static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Ja

java中的几个存储机制

问题描述 java中的几个存储机制 新人初学java,有几个问题一直搞不懂,所以求教各位,感激不尽 1.关于堆栈和堆得问题,现在有这样一种说法,说是变量的存储机制是根据他的作用域决定的,一个方法里定义的变量,则这个变量在这个方法结束后,就会被销毁,所以他的存储的生命期是定好的,所以会存到栈里(堆栈),然后如果是定义的全局变量,是放在堆里的,但是我又看到书上说一般基本数据类型(byte,short,int long,float,double,char)这些是存放在栈里的,而引用数据类型,数组,对象