接触CSDN到现在,一直都是遇到编程问题来搜索解答的,从大神的博客中学到了很多,也使惑得以解
![奋斗](http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)
![大哭](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif)
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)
关于对MVC设计模式的理解:
MVC 模式是一种软件架构模式,把软件系统分成三个部分:模型(Model)、视图(View)、控制器(Controller)关于String、StringBuffer和StringBuilder三者的区别
模型(Model):应用程序的主体部分,程序员在此编写应有的功能,当数据发生改变时,它负责通知视图部分,一个模型可以为多个视图提供数据。
视图(View):视图即为用户看到的界面,可以与用户进行交互,视图可以根据由模型传递的数据来进行视图的更新
控制器(Controller):主要是负责安排模型和视图来处理相应的请求,调用模型来响应请求并在视图中反应处理后的结果
使用该模式的目的:实现动态程序设计,使程序的部分重用成为可能,同时使程序结构更为直观
给出一张简图做参考:
优点:这种设计方式使视图层和业务层分开,降低了应用的耦合性,同时也使开发人员分工明确、各司其职。
这道题算是JAVA面试题中经常见到的了, 表面上看三者都可以用来定义字符串,但其用法却有所不同;简单比较如下:
对于由String定义的字符串来说,每一次改变字符串都会新增加一个对象,如String a = “hah”;String a = a + “hih”;
在第二个语句中改变a时,就会新new一个String对象(值得注意的是,String本身是一个类而不是基本数据类型);
而StringBuilder和StringBuffer,在每次操作字符串时则不会新增对象,而是直接操作原对象;StringBuilder类和StringBuffer类基本是相同的,主要的区别就在于StringBuffer类是线程安全的,在多线程访问时起保护作用。
关于物理内存和虚拟内存
物理内存,顾名思义就是硬件实际的内存大小,比如常见的500G硬盘、32G的U盘等等,这里的500G、32G即为物理内存对于这次的笔试,问答题就这三个,以后遇到的都会以这种方式来记录下来,算是一种知识和经验的积累吧。不得不小小的吐槽一下,大三开始到现在一直在学习Android,结果发现校招的都没有Android的,难道只有自己去找了吗,甚是纠结啊。
虚拟内存,是计算机系统中一种内存管理技术,由于计算机内存的造价较高,所以一般内存的容量都比较小,比如常见的4G内存,而计算机的应用软件都是在内存中运行的,每个应用都会占用一定内存,这就导致一个问题,如果计算机同时运行很多软件,使计算机的内存空间几乎被占满了,那么此时计算机就无法再运行用户的下一个应用,直到内存空出一定空间,当然了人,如果现实中真是这样,那我们在使用电脑时岂不是很头疼了(夸张点讲,如果计算机内存很小,我们一次只能使用一个应用,因为计算机没有足够内存,导致QQ、音乐、游戏不能同时使用,那样岂不是很不爽?),所以了,在计算机系统中出现了一个叫做的虚拟内存的内存管理技术,它的作用就是解决用户内存不足的问题,当执行的程序占用了大部分内存,导致当前内存不足以支撑运行下一个应用时,系统便会“拿”出一部分物理内存来充当内存使用,大意上就这么理解哈。
“拿” :理论上来讲,计算机程序的运行时是需要把全部的程序调入内存才能运行,但是由于虚拟内存技术的存在,使得程序在运行时,可以先将一部分需要运行的程序装入内存,剩余部分暂时放在外存,当这一部分运行结束需要下一部分时,将已运行的部分由内存转移到外存,同时将外存的需要的那一部分转移到内存,这种方式就可避免因为内存不足引起的程序无法运行的问题