JAVA的一些有用的知识理解(个人向,有错改之,续更)

1.继承作用,可重写被继承方法,调用方法默认使用重写的方法

2.装饰者模式说白了就是利用实现,统一装饰者和被装饰者方法。
然后装饰者再去调用被装饰者的类,
再创建同名方法去调用被装饰者的同名方法,顺便加些其它代码进行增强
装饰者最终的增强效果就这样实现了(懂了后感觉有点蠢,不知道为什么)
最后使用时就利用多态传入被装饰者类,执行装饰者方法

3.序列化本质:把内存中堆内存的对象持久化存到硬盘中(具体什么用多看案例吧)
为什么类要继承序列化接口,就是为了可以序列化对象。毕竟对象是类产生的。所以可以推断只要是类产生的对象要序列化都要让该类继承序列化接口
然后序列化的类为什么要写serializerUID,就是为了让存在硬盘里的对象删除后再重新持久化后反序列化还能识别出来是这个类。不然硬盘里的被删除了,你再反序列化,因为程序自动产生的UID会因为每次序列化都不一样

4.this本质是栈内存中的引用,既然是引用,自然要指向堆内存中的对象。
那么问题来了,静态对象怎么办?
记得方法区存储代码和静态对象方法以及常量吗。那么既然对象不在堆,引用也没有,就不能用this啦,只能用类+名来拿。super也可以这样想
顺便一提,成员变量在堆内存。局部变量在栈内存,具体变量在方法区内存(理解这些有助于多线程和一些其他方法的学习)

5.array类(应该是这个)有很多算法方便我们整理排序查找数据

6.包装类有什么用?首先我们一般只是使用int,string这些东西。那么出现了integer这些东西来干什么?
这样理解:int,string是基本数据类型,你不能当类来使用。包装类包装类,当然是当类来使用啦!!!类中可是有很多好用的方法的

7.匿名内部类,就是

public static void main(String[] args) {
        Outer outer = new Outer();
        // 测试1,Inner为接口
        outer.method1(new Inner() {
            String s1 = "this is s1 in Inner";

            public String say() {
                // 外部类和匿名函数类中有同名变量s1
                return s1;
            }
        });

简单明了,新建接口再直接写方法实现接口方法,而不是传统写个类继承接口

8.一个进程可以启动多个线程(不同用户访问一个web服务器就是多个线程)。线程之间共享堆内存和方法区内存。可以想象下万一有几万人同时访问,即有几万个线程,创建几万个对象甚至几十万对象,堆内存会不会爆呢?

9.IOC思想:简单的说就是利用外部代码管理主业务代码直接的关系,使得主业务代码之间可以直接获取对方。
所以spring家族利用反射,做出外部代码。你可以通过配置文件配置或注解方式来事先设置好业务代码类或对象之间的关系。用时直接获取就行,而不用new。这里就是我们用的依赖注入和查找什么的东西
当然你可以继续深究下spring设计的代码,找到可以利用的时机去实现一定的效果:如bean的生命周期这些

10.AOP思想:利用代理模式设计外部代码增强主业务类的全部方法(通知)或某方法(顾问)。
这里spring也使用了IOC来配置代理对象和代理方法。甚至也是利用bean的生命周期来增强业务代码

11.DAO:管理dao层与数据库连接与使用。其中使用事务来对数据进行安全管理,当然事务也是通过配置来设置

12.spring理解:IOC,AOP,DAO是spring基本组成。统一这样理解spring先设计了他自己的IOC(利用配置来管理类,接口直接关系)然后AOP,DAO都使用类似IOC的配置方便我们使用AOP和DAO。那么我们就利用配置规则使用AOP(aop:xxx这样来使用,当然AOP核心是利用代理实现功能的)。DAO也同理。
总而言之:spring帮助我们管理了service和dao层!!!!!当然开发web程序还差个controller层,于是springMVC来了!!!!!

13.springmvc核心内容可参考https://www.cnblogs.com/hamawep789/p/10840774.html
这里做个补充(看完上面再看补充):对于前端发起的请求进行定位到哪个controller(非方法)是在映射器定位到的(所以这里可选择定位方式),并且把一连串需要的信息(包括自己写的controller)打包成处理器执行链给中央调度器。然后转给适配器。适配器主要适配你写的controller是继承或实现了什么适配器(正常是有默认的,当然适配器做了什么可自己深究)最后执行controller方法。(适配器解析定位请求的方法)

14.要理解springmvc的过程可以去看MVC中拦截器的执行方式:其在执行handle时使用,处理器会先看有没有拦截器再执行controller方法,整个结果返回给中央调度器,返回视图后执行完成方法。
(这里似乎可以想象出shiro是怎么实现权限管理的)

15.理解了springmvc过程作用:比如处理器方法,不同处理器可以自定义请求异常发生后的行动。还可以看
https://www.cnblogs.com/panxuejun/p/7715917.html

深度理解了运行原理后可在不同时机设计代码

16.这里总结spring家族的理解:
第一版:spring,使用IOC创建service和dao和数据库关系,使用aop管理增强代码和安全。解决了后端代码问题
第二版:springmvc,设计了一系列映射器,处理器适配器,视图解析器和中央调度器管理前端和后端的请求,通过各种配置让用户使用。这样就解决了前端到后端问题
第三版:springboot,既然前面几个版本已经基本满足了开发的需要,这里开始全面整合,让用户更好地使用spring!!因此,这里开始全注解式开发。并给出了一些管理前后端代码的方法。
第四版:springcloud,由于springboot让开发变得简单了,但管理代码和分布式方案较少!这里推出springcloud(微服务)。增加了许多代码管理,分布式方案和工具!!!!
总结:1,2版解决了基本开发问题,3版降低了开发难度,4版增强了开发功能。因此第5版会是什么????

17.以上spring家族理解了,springboot等以后的产品基本都是IOC,AOP思想的实现(如shiro,swagger等)。具体代码也不过是用了各种设计模式。所以理解了后,任何产品看源码就会很简单了,学起来也快了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值