宅家36天咸鱼翻身入职腾讯,源码+原理+手写框架
Posted 程序员超时空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宅家36天咸鱼翻身入职腾讯,源码+原理+手写框架相关的知识,希望对你有一定的参考价值。
前言
进程和线程的提出极大的提高了操作提供的性能。进程让操作系统的并发性成为了可能,而线程让进程的内部并发成为了可能。
多进程的方式也可以实现并发,为什么我们要使用多线程?
多进程方式确实可以实现并发,但使用多线程,有以下几个好处:
- 进程间的通信比较复杂,而线程间的通信比较简单,通常情况下,我们需要使用共享资源,这些资源在线程间的通信比较容易。
- 进程是重量级的,而线程是轻量级的,故多线程方式的系统开销更小。
由此可见多线程的学习对程序员来说是至关重要的,这也是为什么不论是大大小小的公司面试官都会问到的问题。金九银十即将来临,我特意花了时间搜集了一些相关的资料整理出了这份“Java多线程核心笔记”,我把多线程分为十一个模块进行解读。让我们来看看文档的内容
AOP简介
AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想。AOP 是 OOP(面向对象编程 Object Oriented Programming)的思想延续
AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码的编写方式(例如性能监视、事务管理、安全检查、缓存、日志记录等)
AOP核心思想
基于代理思想,对原来目标对象,创建代理对象,在不修改原对象代码情况下,通过代理对象,调用增强功能的代码,从而对原有业务方法进行增强
切面:需要代理一些方法和增强代码
AOP的应用场景
场景一:记录日志
场景二:监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交或者回滚、关闭事务 )
Spring AOP编程两种方式
方式一:Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类植入增强代码(编程复杂,不推荐)
方式二:Spring 2.0 之后支持第三方 AOP框架(AspectJ ),实现另一种 AOP编程 (推荐)
AOP编程相关术语
1.Aspect(切面): 是通知和切入点的结合,通知和切入点共同定义了关于切面的全部内容—它的功能、在何时和何地完成其功能
2.joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点.
3.Pointcut(切入点):所谓切入点是指我们要对哪些joinpoint进行拦截的定义.通知定义了切面的”什么”和”何时”,切入点就定义了”何地”.
4.Advice(通知、增强):所谓通知是指拦截到joinpoint之后所要做的事情就是通知.通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)
5.Target(目标对象):代理的目标对象
6.Weaving(织入):是指把切面应用到目标对象来创建新的代理对象的过程.切面在指定的连接点织入到目标对象
7.Introduction(引入)(不要求掌握):在不修改类代码的前提下, Introduction可以在运行期为类动态地添加一些方法或Field.
AOP编程底层实现机制
AOP 就是要对目标进行代理对象的创建, Spring AOP是基于动态代理的,分别基于两种动态代理机制: JDK动态代理和CGLIB动态代理
方式一:JDK动态代理
JDK动态代理,针对目标对象的接口进行代理 ,动态生成接口的实现类 (必须有接口)
过程要点
1.必须对接口生成代理
2.采用Proxy对象,通过newProxyInstance方法为目标创建代理对象。
该方法接收三个参数 :
(1)目标对象类加载器
(2)目标对象实现的接口
(3)代理后的处理程序InvocationHandler
3.实现InvocationHandler 接口中 invoke方法,在目标对象每个方法调用时,都会执行invoke
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。
面试题多多少少对于你接下来所要做的事肯定有点帮助,但我更希望你能透过面试题去总结自己的不足,以提高自己核心技术竞争力。每一次面试经历都是对你技术的扫盲,面试后的复盘总结效果是极好的!如果你需要这份完整版的面试真题笔记,只需你多多支持我这篇文章。
试真题笔记**,只需你多多支持我这篇文章。
以上是关于宅家36天咸鱼翻身入职腾讯,源码+原理+手写框架的主要内容,如果未能解决你的问题,请参考以下文章
程序员如何解决中年危机?成功入职腾讯月薪45K,程序员翻身之路