我的java天地

记录

一、有没有写过自定义classloader
二、本地去更新远程服务器上容器代码的方法
三、两个对象的hashcode一样说明就是同一个对象吗
四、
java中关键字volatile的作用

一般说来,volatile用在如下的几个地方:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。

其实Volatile是由于编译器优化所造成的一个Bug而引入的关键字。
int a = 10;
int b = a;
int c = a;
理论上来讲每次使用a的时候都应该从a的地址来读取变量值,但是这存在一个效率问题,就是每次使用a都要去内存中取变量值,然后再通过系统总线传到CPU 处理,这样开销会很大。所以那些编译器优化者故作聪明,把a读进CPU的cache里,像上面的代码,假如a在赋值期间没有被改变,就直接从CPU的 cache里取a的副本来进行赋值。但是bug也显而易见,当a在赋给b之后,可能a已经被另一个线程改变而重新写回了内存,但这个线程并不知道,依旧按 照原来的计划从CPU的cache里读a的副本进来赋值给c,结果不幸发生了。
于是编译器的开发者为了补救这一bug,提供了一个Volatile让开发人员为他们的过失埋单,或者说提供给开发人员了一个选择效率的权利。当变量加上了Volatile时,编译器就老老实实的每次都从内存中读取这个变量值,否则就还按照优化的方案从cache里读

五、spring在项目中的应用,版 本
六、maven的好处
七、硬引用和软引用区别   强引用和弱引用区别

1.强引用
    本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。


2.软引用(SoftReference)

    如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。
软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。

3.弱引用(WeakReference)
    如果一个对象只具有弱引用,那就类似于可有可物的生活用品。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。 
弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。


4.虚引用(PhantomReference)
    "虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。
虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃 圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是 否已经加入了虚引用,来了解

    被引用的对象是否将要被垃圾回收。程序如果发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

八、行业网关主要的业务是什么
九、客户经理发展的主要产品有哪些
十、webservice服务端具体开发
String webserviceurl = "http://wt.lmobile.cn:6003/submitdata/MmsWebInterface.asmx";   
          
MmsWebInterfaceLocator mwifl = new MmsWebInterfaceLocator();
MmsWebInterfaceSoap mwifs = mwifl.getMmsWebInterfaceSoap(new java.net.URL(webserviceurl));

http://apps.hi.baidu.com/share/detail/23852724

十一、java虚拟机中的内存模型及主要算法。堆栈区别
十二、.net和java中传输基本类型时大端及小端避免办法
十三、sessioin和cookie区别
十四、hash实现对key和value的排序
十五、如何在代码中中断一个线程任务
十六、动态代理和cglig区别
十七、java中是值传递还是引用传递
十八、java中集合类底层数据结构
十九、threadlocal解释
二十、状态模式、责任链模式、适配器模式、观察者模式、工厂方法、抽象工厂,各属于创建型、行为型还是什么型
二十一、面象对象设计原则
二十二、uml各图,特别是时序图
二十四、敏捷快发理解
二十五、写一个编译器最快算法(a+(b*c))*(d+e)正确,而))a+c则出错
二十六、linix中软链接和硬链接区别,> >> 的区别,找出一个文件中第四行和第五行的命令

1. 软连接(符号链接) ln -s   source  target  

2. 硬链接 ln source target   

知道了inode的作用就不难理解软硬链接的区别了。

  1. 软连接相当于快捷方式,如果打开并修改软连接,相应的文件也会随之改变。但是如果删除软连接,源文件并不会受到影响。
  2. 硬链接有点像引用和指针的结合,当打开和修改它时,相应的文件随之改变,但是所有这个文件的硬链接的内容也随之改变,这是因为所有的硬链接都拥有唯一的一个 inode 号,他们指向的是同一文件。
  3. 软连接可以跨文件系统创建,也就是可以在某个分区中创建到另外一个分区的软连接
  4. 硬链接则只能在本文件系统中使用(想想为什么?),其实原理很简单,因为 inode 是这个文件在当前分区中的索引值,是相对于这个分区的,当然不能跨越文件系统了。
  5. 最后一个区别是软连接可以连接任何文件或者文件夹,而硬链接则只能在文件之间创建
    > 输出重定向,内容会全部覆盖       >>是追加 
     sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行
二十七、java基础方面书籍
二十八、加强英文
二十九、jdk5和jdk6的新特性
netstat -ano | findstr "1433"

posted on 2012-03-31 23:20 tobyxiong 阅读(516) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年3月>
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(3)

随笔分类(144)

随笔档案(157)

相册

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜