Java程序设计笔记
张少飞
这个作者很懒,什么都没留下…
展开
-
创建对象
1、 Java新创建的对象被分配到堆中(Heap),所有的对象都是通过对象的引用来访问的,2、当使用New创建对象时,虚拟机会调用构造器,它会执行对象初始化所需的一切动作。如果没有编译器会自动创建一个。3、原创 2016-11-03 15:13:15 · 225 阅读 · 0 评论 -
同步synchronized
原创 2016-11-03 15:57:05 · 248 阅读 · 0 评论 -
关于多线程导致数据不一致的情况的思考
这里我要引入一个比较不是很常见的Java 内存模型(JMM java Memory Model),线程基础数据会存放在一个自身对应的线程栈中,如果两个线程需要交互必须要通过共享内存中的变量进行。才能够达到线程间通信的效果。但是由于JVM可以对他们进行任意排序以提高程序的性能。同时处理器也会对指令进行优化。这些操作会导致在多线程环境下数据变得不可靠。因为指令的顺序因为处理器的优化导致了一些不稳定的因原创 2016-11-30 11:37:04 · 7870 阅读 · 0 评论 -
领域模型
请注意﹐这里的显示****,并没有UI过程﹐实际上就是返回这个对象的某个属性﹐至于如何显示﹐那是UI层的故事。1、领域模型是一种思维﹐是一种方法,是在系统分析阶段使用2、系统分析员在接手一个系统后﹐首先要做到的事情就是得出系统的服务和服务场景。也就是我们经常所讲的用例(use case)3、用例表示的是使用系统的一个场景﹐其本质在于详细描述了系统用户(actor)与系统是如何交互的转载 2017-01-03 18:16:18 · 1929 阅读 · 0 评论 -
构建线程安全的类
1、因为对象的状态由对象的变量组成,通常叫做域{x,y...}, 通过private final构建一个封闭的环境,变量的访问通过对外的方法接口,这个方法接口是同步的,这样就能够保证对象的线程安全。2、通过final定义可以缩减对象的域。3、通过对象的私有锁来保护状态public class privateLock{private final Object myLock = ne原创 2016-12-20 11:04:00 · 291 阅读 · 0 评论 -
maven中的groupId和artifactId到底指的是什么?
转载自百度知道一位网友的回答(略修改) 地址:https://zhidao.baidu.com/question/1639120287056394340.html侵删。具体回答如下:groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。转载 2017-09-25 15:07:09 · 1111 阅读 · 0 评论 -
Java interface 接口的使用理解
很多人都比较疑惑,为什么要使用接口。 在我个人理解来说,接口其实是一套协议,一套契约,是框架开发者与使用者之间的一种契约,框架开发者/架构师承诺,只要你符合我的契约,也就是实现接口那么我必然可以支持你的拓展类。当框架设计者认为这一个类需要被灵活的拓展用于适应需求,在提供一个默认的解决方案的同时,提出了这种契约,以便使用者拓展。可以看看下面的例子,就比较容易理解,接口定义的意义。框架设计者允许使用者原创 2017-09-21 11:57:55 · 1040 阅读 · 0 评论 -
设计模式-装饰者模式Java实现
装饰者模式(Decorator Pattern) ,当一个对象在使用的过程中可能更换或者增加包装,就像汉堡一样,可能搞一些不同的活动而更换包装袋,但是不需要修改汉堡。这时候只需要印刷新的包装盒并更换包装盒就能完美适配新的需求,而不需要修改其他的东西。在程序的角度来说,这些需要改动的部分可能写在配置文件上,在设计的角度上,对修改封闭,但是对拓展开放,从而使得程序不会由于修改原来的代码而导致新的问题出...原创 2018-05-13 22:52:49 · 202 阅读 · 0 评论 -
Java 方法参数传对象时引用的不可变性
当一个对象当做参数传递当一个方法后,这个方法可以改变这个对象的属性,这个到底是值传递还是引用传递?这个是值传递,Java只支持参数的值传递,当一个对象实例作为参数传递到方法中的时候后,参数的值就是该对象的引用。只能改变属性,并不能改变引用。对引用的修改是无效的。当传入String作为参数修改他的值的时候,为什么会不生效?因为String是不能改变的,只会生成一个新的字符串,然后将引用修改成新...原创 2019-01-15 16:24:54 · 1080 阅读 · 0 评论