10.19工作学习记录 AOP、sql分组查询、子查询关联查询 里式替换 开闭原则 迪米特法则

上午牛客刷题期间发现 对数组进行打印只能打印出地址,所以在打印之前应该先用 Arrays.toString方法将其转为字符串再进行打印

SpringAop: 案例一 用到的四个注解 @EnableAspectJAutoProxy 用在配置类上  切面类上用到注解@PointCut 里面给到切入点 @before配置为前置通知 @Aspect注解将其声明为切面类

SpringAOP是在不改变原有设计(代码)的前提下对其进行增强的,它的底层采用的是代理模式实现的,所以要对原始对象进行增强,就需要对原始对象创建代理对象,在代理对象中的方法把通知[如:MyAdvice中的method方法]内容加进去,就实现了增强,这就是我们所说的代理(Proxy)。

其实就是定义一个切面类 然后选择是前置还是后置通知 再定义一个切点与某个类中的某方法对应上即可 另外需要在配置类上加入@EnableAspectJAutoProxy注解

切点对应上某类的方法  通配符有一些讲究 环绕通知在切面类的方法中需要调用切点方法 

环绕通知必须依赖形参ProceedingJoinPoint才能实现对原始方法的调用,进而实现原始方法调用前后同时添加通知     

    @Around("servicePt()")    环绕用ProceedingJoinPoint   返回前返回后那些用 JoinPoint
    public void runSpeed(ProceedingJoinPoint pjp){   在通知方法中的 参数 pip 可以获取类名方法名等信息

@Before("pt()")
    public void before(JoinPoint jp) 
        Object[] args = jp.getArgs();
        System.out.println(Arrays.toString(args));    JoinPoint可以获取参数 

Aop的通知可以获取的数据中包含参数返回值异常(了解)

百度网盘案例  通过AOP来完成在进行密码校验前对密码的一个去空格操作   在切面方法中 获取了参数然后对参数进行了trim()操作(移除字符串首尾空格)

Spring事务管理:保证一系列数据库操作要么同时成功要么全部失败

@EnableTransactionManagement配置类注解   @Transactional 接口、类、方法注解

MySql语句:以供应商信息表与产品信息表为例  供应商表的主键为产品信息表的外键  可以通过供应商id来联结两张表查出 某产品名对应的供应商信息

实例例子:SELECT  dept_name,nick_name FROM `sys_dept`,sys_user
where sys_dept.dept_id = sys_user.dept_id and sys_user.del_flag = 0
ORDER BY dept_name,nick_name;   这是子查询的处理方式

SELECT  dept_name,nick_name FROM `sys_dept` AS d INNER JOIN
sys_user AS u ON d.dept_id = u.dept_id 
ORDER BY dept_name,nick_name;  这是内联结的处理方式

可以通过别名的方式来替代本表的子查询  给该表起两次别名 t1 t2 让t2.id=ta.id 然后and  where其中一个表即可    关于外部联结  内部联结是查出t1与t2中相互对应得上的  而左外联结是将左表所有数据查出来  右边相关数据查出来   若右表没有与左表对应的数据 则显示为null

牛客刷sql题: group by university,gender 可以按学校和性别分组

设计模式:里氏替换的起源 :在修改某父类时 他的子类都会受到影响 继承实际上让两个类的耦合增强了  要求我们尽量不要去改写父类的方法 通过组合聚合依赖等来解决问题   因此 建议让A与B继承同一个Base类 然后A实现Base类 在B中想要调用A的f1方法  通过在B中new一个A 来改写B的f3方法 在f3中调用A的f1方法

开闭原则:扩展而不是修改 对扩展开放(对提供方)对修改关闭(使用方) 案例是用的图形  绘制圆形、三角形、正方形 传统是用一个shape基类定义某个属性 以供子类来区分   改进后是用抽象类来实现

迪米特法则:最少知道原则 简单的定义:只跟最直接的朋友通信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值