java
落幕高墙
这个作者很懒,什么都没留下…
展开
-
jdk动态代理使用
1.定义一个接口A2.定义一个实现类B3.定义一个类C,实现InvocationHandler接口【持有B】4.调用Proxy.newProxyInstance 【参数为A,C】5.从4得到一个最终的代理对象D这里解释一下InvocationHandler里面的invoke方法的第一个参数是什么,这里直接贴出代码,省得再去翻看。先来看看最终生成的关系图:对...原创 2020-02-02 11:56:57 · 144 阅读 · 0 评论 -
xmlBeanFactory源码解析
一.xmlBeanFactory结构先来看看怎么用我们可以使用xmlBeanFactory把spring使用起来,代码如下: ClassPathResource classPathResource = new ClassPathResource("spring2.xml"); XmlBeanFactory xmlBeanFactory = new XmlBean...原创 2020-01-14 22:45:01 · 366 阅读 · 0 评论 -
从FileSystemXmlApplicationContext窥探spring源码一角
一.一切从BeanFactory和ApplicationContext说起beanfactorybeanFactory是Spring的一个顶级接口,为什么说他"顶级"?因为他是spring里面最高层次的一个接口,也就是说,他没有继承任何接口,他就是自成一派,就是最大的老大了。如下图:有图有真相,绝对够顶级了,没有继承任何其他接口。实际上这个beanFactory定义了io...原创 2020-01-10 16:51:48 · 1844 阅读 · 2 评论 -
工厂模式
1.静态工厂模式假设现在有一个牛奶工厂来提供牛奶生产。设置一个牛奶接口,三个实现类 =》 1.蒙牛牛奶 2.伊利牛奶 3.经典牛奶设置一个工厂类,传入参数,使用if和else来判断返回的实现类。这种方式比较 “笨”,如果我们新增一个 “A牛奶”实现类,需要做3个修改1.新增实现类2.修改工厂类,增加if else分支...原创 2019-12-18 18:57:35 · 86 阅读 · 0 评论 -
内部类
1.普通内部类普通内部类,不能有静态代码块、不能有静态方法、静态变量、静态内部类原因如下:我们不妨用反证法来证明:假设现在有一个普通内部类A,里面有一个静态变量B(其实其他几个都是同个道理,所以这里只用静态变量来举例子),普通内部类的加载,是需要依靠其对应的外部类。如果外部类仅仅只是加载到jvm,没有实例化,内部类是没有被加载到内存中的。因为普通内部类仅仅只是一个普通的成员属性,只有实...原创 2019-12-16 22:10:27 · 98 阅读 · 0 评论 -
软件设计原则
1、开闭原则开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增...原创 2019-12-14 11:48:09 · 98 阅读 · 0 评论 -
factoryBean+jdk动态代理,模拟mybatis(顺便整理一下jdk动态代理)
jdk动态代理:package com.luban.源码调试.postprocessor;import com.luban.源码调试.dao.UserMapper;import org.apache.ibatis.annotations.Select;import org.springframework.beans.factory.FactoryBean;import...原创 2019-12-11 21:32:32 · 431 阅读 · 0 评论 -
@Import
原文:https://www.linuxidc.com/Linux/2019-10/161056.htm@Import 注解@Import注解提供了和XML中<import/>元素等价的功能,实现导入的一个或多个配置类。@Import即可以在类上使用,也可以作为元注解使用。@Target(ElementType.TYPE)@Retention(Retenti...原创 2019-12-08 11:14:11 · 142 阅读 · 0 评论 -
分析jdk动态代理源码
原创 2019-11-28 12:11:46 · 73 阅读 · 0 评论 -
AnnoationConfigApplicationContext源码解析(不含refresh)
1.AnnotationConfigApplicationContentAnnotationConfigApplicationContent维护了2个属性,有四个构造方法来看看AnnotationConfigApplicationContent的构造方法关系2.AnnotationConfigApplicationContext源码解析(暂时不含refresh...原创 2019-12-01 11:58:39 · 152 阅读 · 0 评论 -
BeanFactory和FactoryBean
1.factoryBean用法用&+factoryBean的类型,来获取到实现factoryBean的类使用&daoFactoryBean来获取到DaoFactoryBean这个实例用factoryBean上面的注解name,来获取getObject里面的实体类,如下图,getbean的时候 =》 getBean("daoFactoryBean"),可以获取到TempD...原创 2019-11-27 21:17:32 · 183 阅读 · 0 评论 -
Reference对象源码分析
/* * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * *...原创 2019-11-24 19:26:24 · 742 阅读 · 0 评论 -
cas部署
1.拿到4.0.0war包2.解压tomcat3.war包放webapps下面4.启动tomcat5.进入localhost8080/cas6登录进入 =》 casuser/Mellon7修改登录密码原创 2019-11-21 16:15:11 · 182 阅读 · 1 评论 -
模仿jdk动态代理
package com.luban.proxy;import com.luban.jdk动态代理.Invocation;import java.io.File;import java.io.FileWriter;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import java.net...原创 2019-11-23 19:09:28 · 82 阅读 · 0 评论 -
代理1
1.静态代理静态代理,实际上就是我们自个写好,定死一些类,然后这些类按照继承和实现接口的方式来实现一些aop的功能。当然,这些模式适用于固定的流程,比如事先定好的aop规则就是:让类A的Aop=>处理日志,让类B的Aop=>处理数据库,最后到业务逻辑。如果我们想要在这个链条后面增加aop,我们直接重新一个类C的Aop,然后接入类B的Aop。这样就可以了,但是这样的话,是非常固定的,...原创 2019-11-20 22:41:08 · 75 阅读 · 0 评论 -
aop2
1.环绕通知Proceedingjoinpoint和JoinPoint的区别:Proceedingjoinpoint继承了JoinPoint,Proceedingjoinpoint 实际上就是执行中的连接点,例如:class A { public void query(){} public void query2(){}}那么query和query2会...原创 2019-11-18 21:25:47 · 354 阅读 · 0 评论 -
apo1
一.aop术语aop概念:aop相对于oop来说,oop是面向对象编程,万物皆对象,我们很多个对象组成一个controller,组成一个model,组成一个mapper,然后不同的层之间相互调用,在这些调用之间,肯定会有一些非常相似的代码,散落在每个角落,我们aop需要做的就是把这些代码维护起来,放到一个统一的切面中。1.连接点 连接点是一个表达式,这个表达式一写出...原创 2019-11-16 23:59:16 · 459 阅读 · 0 评论 -
springioc2
1.Bean的生命周期回调 1-1.实现InitalizingBean接口,重写afterpropertiesSet方法该方法会在对应实现接口的Bean被实例化之后自动调用。但是这种方式和spring的耦合度非常高,严重依赖于spring的某个接口。 1-2.xml文件指定init方法xml文件注入,在bean标签上写好init属性即可指定对应的in...原创 2019-11-13 19:02:41 · 90 阅读 · 0 评论 -
ioc1
idea创建父子工程:1.创建一个maven工程2.删掉maven工程下的src文件3.邮件maven工程,新建一个modul,勾选archetype,选择webapp,不断next4.子工程的pom文件,加入spring依赖,引入spring依赖。新建src文件,src下面新建main文件夹。5.刷新maven,会自动刷新为一个web工程,src-main下自动多出...原创 2019-11-12 11:23:53 · 139 阅读 · 0 评论 -
spring二
请求 => web.xmlDispatchServlet extends HttpServletinit() => 初始化方式,spring应该要在这里先初始化service() =》浏览器访问url,由web容器调用 doGet/doPost =》 controller的逻辑destory() =》 销毁servlet综上,入口就是从xml的拦截器类开始...原创 2019-11-03 11:50:16 · 72 阅读 · 0 评论 -
注解
注解的定义注解通过 @interface 关键字进行定义。public @interface TestAnnotation {}1它的形式跟接口很类似,不过前面多了一个 @ 符号。上面的代码就创建了一个名字为 TestAnnotaion 的注解。你可以简单理解为创建了一张名字为 TestAnnotation 的标签。注解的应用上面创建了一个注解,那么注解的的使用方法...原创 2019-11-02 19:26:59 · 82 阅读 · 0 评论 -
spring源码
java就是一个一个对象Bean(咖啡豆),为什么?面向对象编程嘛。从javaBean->Enterprose java beans(EJB)->pojo(spring提出的)spring就受不了了,ejb的各种bean,而且jsp,java代码+html+js+sql语句,挤在一起,难以维护。如上图,ioc就是把所有的bean保存到内存中,然后di就是进行注...原创 2019-11-02 19:02:16 · 292 阅读 · 0 评论 -
使用Condition手写简易版数据库连接池
package com.roocon.thread.td2;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.LinkedList;import java.util.concurrent.locks.Condition;impo...原创 2018-07-22 08:13:53 · 265 阅读 · 0 评论 -
gc的对象的分类
Gc对象的性质 可触及我们都知道,gc对无用对象进行标记,然后回收。我们需要了解一下,gc是如何识别到这个对象是无用对象的? 从根节点有链条链到这个对象,我们就说这个对象是可触及的,可触及的对象就不应该被回收。可复活虽然现阶段不可触及,但是后面有可能再次被标记为可触及。 不可触及不可触及对象就可回收了,不可触及的对象再也不可能被标记成可原创 2018-01-03 12:40:41 · 488 阅读 · 0 评论