全栈工程师修炼指南
熊燚(四火)
Oracle首席软件工程师
立即订阅
2286 人已学习
课程目录
已更新 43 讲 / 共 40 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 从成长角度看,为什么你应该成为全栈工程师?
免费
学习路径 | 怎样成为一名优秀的全栈工程师?
导读 | 如何学习这个专栏?
第一章 网络协议和 Web 接口 (6讲)
01 | 网络互联的昨天、今天和明天:HTTP 协议的演化
02 | 为HTTP穿上盔甲:HTTPS
03 | 换个角度解决问题:服务端推送技术
04 | 工整与自由的风格之争:SOAP和REST
05 | 权衡的艺术:漫谈Web API的设计
06 | 特别放送:北美大厂如何招聘全栈工程师?
第二章 欢迎来到 MVC 的世界 (7讲)
07 | 解耦是永恒的主题:MVC框架的发展
08 | MVC架构解析:模型(Model)篇
09 | MVC架构解析:视图(View)篇
10 | MVC架构解析:控制器(Controller)篇
11 | 剑走偏锋:面向切面编程
12 | 唯有套路得人心:谈谈Java EE的那些模式
13 | 特别放送:选择比努力更重要
第三章 从后端到前端 (7讲)
14 | 别有洞天:从后端到前端
15 | 重剑无锋,大巧不工:JavaScript面向对象
16 | 百花齐放,百家争鸣:前端MVC框架
17 | 不一样的体验:交互设计和页面布局
18 | 千言万语不及一幅画:谈谈数据可视化
19 | 打开潘多拉盒子:JavaScript异步编程
20 | 特别放送:全栈团队的角色构成
第四章 数据持久化 (7讲)
21 | 赫赫有名的双刃剑:缓存(上)
22 | 赫赫有名的双刃剑:缓存(下)
23 | 知其然,知其所以然:数据的持久化和一致性
24 | 尺有所短,寸有所长:CAP和数据存储技术选择
25 | 设计数据持久层(上):理论分析
26 | 设计数据持久层(下):案例介绍
27 | 特别放送:聊一聊代码审查
第五章 寻找最佳实践 (6讲)
28 | Ops三部曲之一:配置管理
29 | Ops三部曲之二:集群部署
30 | Ops三部曲之三:测试和发布
31 | 防人之心不可无:网站安全问题窥视
32 | 和搜索引擎的对话:SEO的原理和基础
33 | 特别放送:聊一聊程序员学英语
第六章 专题 (7讲)
34 | 网站性能优化(上)
35 | 网站性能优化(下)
36 | 全栈开发中的算法(上)
37 | 全栈开发中的算法(下)
38 | 分页的那些事儿
39 | XML、JSON、YAML比较
40 | 全栈衍化:让全栈意味着更多
全栈工程师修炼指南
登录|注册

11 | 剑走偏锋:面向切面编程

四火 2019-10-04
你好,我是四火。
今天我们要接触一个和 MVC 密切相关的,能带来思维模式改变的编程范型——面向切面编程(AOP,Aspect Oriented Programming)。

“给我一把锤子,满世界都是钉子”

我记得曾经有这样一个相当流行的观点,是说,编程语言只需要学习一门就够了,学那么多也没有用,因为技术是一通百通的,别的编程语言可以说是大同小异。我相信至今抱有这种观点的程序员也不在少数。
可惜,事实远没有那么美好。这个观点主要有两处值得商榷:
其一,不同的技术,在一定程度上确实是相通的,可是,技术之间的关联性,远不是“一通百通”这四个简简单单的字能够解释的。妄想仅仅凭借精通一门编程语言,就能够自动打通其它所有编程语言的任督二脉,这是不现实的。
其二,通常来说,说编程语言大同小异其实是很不客观的。编程语言经过了长时间的发展演化,如今已经发展出非常多的类型,用作编程语言分类标准之一的编程范型也可谓是百花齐放。
因此我们要学习多种编程语言,特别是那些能带来新的思维模式的编程语言。现在,把这个观点泛化到普遍的软件技术上,也一样适用。我们都知道要“一切从实际出发”,都知道要“具体问题具体分析”,可是,在眼界还不够开阔的时候,特别是职业生涯的早期,程序员在武器库里的武器还非常有限的时候,依然无法避免“给我一把锤子,满世界都是钉子”,在技术选择的时候眼光相对局限。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《全栈工程师修炼指南》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • 不记年
    要说AOP的缺点的话,代码会变得不直观,需要脑补运行过程。不易调试,因为代码变得不直观,断点有时都不知道打在哪里。如果多层嵌套的话,上面的问题会加倍~

    作者回复: 👍

    2019-10-11
    1
  • 小寞子。(≥3≤)
    写过安卓开发。。在spring的时候遇到aop代理问题。。第一次听到这个概念。。 当时还不知道我用了半年的安卓开发里面很多功能实现其实就是aop。 一查才知道是什么。
    2019-11-24
  • anginiit
    今年的项目都是springboot架构的,直接使用aop的就是写过一个用户操作日志记录,就是通过切面来拦截用户请求然后把用户信息记录下来的,没有特别深的使用过呢。不过原理已经明白了。
    2019-10-10
  • pyhhou
    1. 之前没怎么了解过 AOP,到时 DI 这个概念倒是一直听到,但也就是知道个概念,今天算是弄清楚 AOP、IoC、DI 这几个东西的基本概念了

    2. 从我个人角度来看,AOP 确实隐藏了资源层的一些实现,程序员只需要关注业务层的代码,不需要特别考虑资源访问的逻辑,但是如果资源层的实现出现了问题,在 AOP 的架构下,会增加一定的 debug 难度,因为在这种架构下,资源层的逻辑可以说是不透明的;另外就是 AOP 其实和一般的设计思想有点不太一样,使用和适应上会有一定的门槛吧;性能方面的话,动态 AOP 实现会影响代码的实际运行效率,静态 AOP 实现又相对比较复杂,这也是一个需要权衡的地方
    2019-10-10
  • Dream.
    没接触过Spring,很多地方都没看懂再说什么

    比如xml配置后执行顺序为(1) → (4) → (0) → (5) → (2)

    没看到(0)在哪里,这个顺序是怎么来的看了好几遍也没看懂

    作者回复: 这里介绍的是配置切面逻辑以后的实际执行过程,(0) 就是原始代码,在你看到的(1) - (5) 的代码块的上方。

    2019-10-09
  • sky
    iOS里用的runtime的一些方法也是aop了

    作者回复: 👍

    2019-10-05
  • 我叫徐小晋
    老师您好。SpringBoot中分层,model层,dao层,service层,controller层。上层通过@Autowired来使用下层的方法,这个就是文中说到的Ioc吗?

    作者回复: 不太理解你的意思,@Autowired 就是文中的例子啊。

    2019-10-05
    1
收起评论
7
返回
顶部