多线程还是多看多理解,就不做笔记了吧,以下是重点的截图。
interview(1)
Posted on
|
Edited on
|
In
interview
1. 同步 异步 非阻塞 阻塞 bio nio aio
这题问的是网络 IO 模型。
以 IO 的读数据(read)举例,会经历两个阶段:
1)等待数据准备。
2)将数据从内核拷贝到进程中。
IO 模型主要分为五种:
大型网站技术架构——读书笔记(1)
Posted on
|
Edited on
|
In
notes
《大型网站技术架构——核心原理与案例分析》 李智慧
读书笔记(1)
1. 技术演化
- 最初是应用程序、文件、数据库都在同一台服务器上完成最简单的网站结构。
- 为解决存储空间不足的问题,出现应用服务器、文件服务器、数据库服务器职责分开的情况。
- 应用服务器主要处理业务逻辑,需要更快更强的 CPU;
- 文件服务器需要存储用户上传的文件,需要更大的硬盘;
- 数据库服务器需要快速磁盘检索和数据缓存,所以需要更快的硬盘和更大的内存。
- 网站使用的缓存分为两种:应用服务器上的本地缓存(特点:响应快,但数据量小,可能跟程序争用内存资源)、缓存在分布式缓存服务器上的远程缓存(可采用集群的方式,不受内存容量限制)。
tinySpring-Aop-分析笔记(2)
Posted on
|
Edited on
|
In
spring
tinySpring Aop 分析笔记(2)
项目学习地址:code4craft/tiny-spring
step-8-invite-pointcut-and-aspectj
- step-8 新增了对
AspectJExpressionPointcut
这个类。- 它使用 AspectJ 表达式进行匹配。
- 实现了
Pointcut, ClassFilter, MethodMatcher
三个接口。 - 首先拿到一个
PointcutParser
,是用来解析 expression 的。 - 解析传入的
expression
,拿到一个PointcutExpression
的实现类。 - ClassFilter 表示与表达式匹配的类;
- MethodMatcher 查找与表达式匹配的方法;
- Pointcut 表示获取的是方法还是类。
tiny-spring-Aop 分析笔记(1)
Posted on
|
Edited on
|
In
spring
tinySpring Aop 分析笔记(1)
项目学习地址:code4craft/tiny-spring
step-7-method-interceptor-by-jdk-dynamic-proxy
step 7 针对有接口的情况,采用 jdk 动态代理的方式实现 AOP。
另一种情况是:无接口时,创建子类,然后进行增强(调用父类的方法),实现动态代理的实现。即 cglib 动态代理。
Aoot examination
Posted on
|
Edited on
|
In
examination
aoot examination
1. 接口和抽象类的区别
- 接口是对动作的抽象(这个对象能做什么),抽象类是对根源的抽象(这个对象是什么)。
- 两者都不能直接实例化,对接口实例化时,接口变量必须指向一个类对象(此类对象必须实现了所有的接口方法);对抽象类实例化时,抽象类变量必须指向一个子类对象(此子类对象必须实现了所有的抽象方法)。注:如果方法不能全部被类 A 实现,那么类 A 必然是抽象类。
- 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
- 抽象方法要被实现,所以不能是静态的,也不能是私有的。
UML(7)
Posted on
|
Edited on
|
In
UML
面向对象系统分析与设计(7)
1. 面向对象的六大设计原则
- 单一职责,single responsibility principle,SRP
- 一个类,只做一件事。
- 开闭原则,open close principle,OCP
- 对扩展开放,对修改封闭,保护既有系统。
- 是 OO 设计的真正核心。
- 里氏替换原则,liskov substitution principle,LSP
- 子类可以拓展父类的功能,但不能修改父类原有的功能。
- 接口隔离原则,interface segregation principle,ISP
- 接口间的依赖性要小;比如一个类要实现某功能时,如果接入接口 A 和接口 B,然而只有 A 的功能是必须的,但因为 A 和 B 的依赖性,接入 B 是完全没有必要的,修改的办法就是降低 A、B 间的依赖。
- 迪米特原则,law of demeter,LOD
- 陌生的类不要作为局部变量的形式出现在类的内部,耦合性会变高。
- DIP原则,dependency inversion principle。
- 模块设计、细节和策略应该依赖于抽象,抽象的稳定性决定了系统的稳定性。
- 变量不应该持有指向具体类的指针或引用。
- 类不应该从具体类派生。
- 任何方法都不应该覆写它的任何基类中已经实现了的方法。