java 笔记

本文深入探讨了Java反射机制及其在Spring AOP框架中的应用,包括反射的原理、作用、优缺点以及如何利用反射实现动态代理和增强方法等功能。同时,还对比了Struts2拦截器与过滤器的区别,提供了在实际开发中解决Servlet线程安全问题的策略。

¥java何时使用static变量

第一:考虑是不是多个对象来操作同一个变量。比如一个对象个数记录器。

第二:因为static变量是一直存在在内存中的。如果一个对象需要频繁建立,则就可以考虑在这个类的变量使用static关键字。因为这样在频繁建立对象时,实际上其变量就不必频繁建立了。

spring容器
使用容器可以降低耦合性,各个类编写都不用考虑别的类,具体怎么关联由容器通过配置文件,反射来进行处理,降低类之间的耦合度。。
sping本身是一个容器,用来实例化bean,动态装配。严格说aop不是spring特性,因为在struts中也有用到该特性,ioc才是spring特性。
  无论是aop还是ioc都用到了反射机制,可见反射机制是spring的一个很重要的特征。
1.DAO的作用是如果更换其他数据库或改写连接时,只需要改写DAO,程序调用DAO来访问数据库。

如果实现接口的话,则必须还要构造thread对象。
停止线程的建议的方法是while(flag)标记的方法,置方法为false>interupt>stop;

线程的join理解为合并更符合愿意,相当于融合到一个线程执行了,调用join(t)的线程要等待t执行完之后再执行。
一个对象有多个加锁的房间,但是一个对象就只有一个钥匙,也就是说多个加锁的方法,一次只能执行一个,因为只有一把钥匙。

 ant是一种编译打包工具,如果不嫌手动打包慢的话,可以不用!

对java动态代理和spring aop的理解
OP中被代理的对象是已经写好的代码,即通过配置文件就可以,以java反射的机制来调用被代理对象,需要处理的操作在invoke方法里添加,自己要对被代理的对象添加自己的业务逻辑在invoke方法里面加,比如在代理执行前或后增加日志记录或者是添加时间等。
   动态代理无非就是在原来静态代理的基础上加上java的反射机制,这样就可以灵活的调用代理,这个代理可以不用预先编译,代理工厂内部方法就是实现反射等一系列的操作,这个在视频中讲的也很清楚。spring视频中第20个教程。
spring中的aop其实原来的那个东西叫被代理对象,日志拦截器应该叫代理对象的操作部分,由spring自己生成一个动态代理,将日志拦截器等额外的操作加到要操作的被代理对象中才生成一个代理对象,也就是说日志拦截器严格讲不能叫代理,代理是spring生成结合的。
    spring aop的好处不仅仅时表面上看来的面向“面”的编程,即一个代理可以加到多个被代理对象的方法中,还有一个面向:"切",所谓面向切,就是说被代理对象不用添加侵入性的代码就可以,即被代理对象不用写任何代理,完全有spring来处理。

 struts2拦截器和过滤器的区别
实现原理不一样
filter 责任链,无非就是方法调用
interceptor 动态代理,反射,动态编译

sevlet预防线程不安全问题的解决方法之一
在实际的开发中也应避免或最小化 Servlet 中的同步代码;在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。
  由上面得到结论: java类静态变量存储在静态区中,类实例变量存放在堆中,而方法变量存放在栈中。

对java反射的理解
一般来讲都是对代码要先编译,即运行时直接调用编译后的代码,但是有了反射机制后,运行中的代码就可以直接调用预先未经编译后的代码~
    java反射是在运行时才通过外部资源获取类名,加载类的详细信息,并进行构造对象或者设值、取值。它是支持对象序列化和javabean等特性的关键。
以下转载自网络:
Java反射机制是Java语言被视为准动态语言的关键性质。如果Java反射仅仅能够得到Java类(或对象)运行时的信息,而不能改变其行为和属性,那么它当然算不上“动态”。百度了一把何谓“动态语言”,解释如下:动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。由此看来,Java确实不能算作“动态语言”。但是和CC++等纯静态语言相比,Java语言允许使用者在运行时加载、探知、使用编译期间完全未知的classes,所以我们说Java是“准动态”语言。
细心地读者可能已经发现,在“类中最重要的三个信息”一节中,我们获取的信息其实都是属于类的,而不是对象。对于类的信息提取,其实并不涉及到对象内存,在程序编译完成的那一刻起,一切都已经是确定的了。因此,它并不能算“动态”。而如何对对象内存进行操作和访问,才是“动”的真正含义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值