夜光带你走进Java架构师必备知识点(13)高级程序员

夜光序言:

 

十里桃林醉春光,你却未依约定而来,我也不曾黯然离去。

酒壶碗筷照旧,清香浮动,黄昏把影拨弄,你来亦不来,已无大碍。

 

 

 

 

 

 

 

正文:

十四、fastDFS

1.fastDFS简介

fastDFS是一个开源轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大量存储和负载均衡的问题,特别适合以文件为载体的在线服务。

FastDFS实现了软件方式的RAID,可以使用廉价的IDE硬盘进行存储,支持存储服务器在线扩容

支持相同内容的文件只保存一份,节约磁盘空间,FastDFS只能通过Client API访问,不支持POSIX访问方式

FastDFS特别适合大中型网站使用,用来存储资源文件(如:图片、文档、音频、视频等等)

 



 

2.系统架构-上传文件流程

1. client询问tracker上传到的storage,不需要附加参数

2.tracker返回一台可用的storage

3.client直接和storage通讯完成文件上传

 



 

3.相关术语

1.Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server的状态,是连接Client和Storage server的枢纽。

2.Storage Server:存储服务器,文件和meta data都保存到存储服务器上

3.group:组,也可称为卷。同组内服务器上的文件是完全相同的

4.文件标识:包括两部分:组名和文件名(包含路径)

5.meta data:文件相关属性,键值对(Key Value Pair)方式,如:width=1024,heigth=768

 



 

 

4.同步机制

 

同一组内的storage server之间是对等的,文件上传、删除等操作可以在任意一台storage server上进行;

文件同步只在同组内的storage server之间进行,采用push方式,即源服务器同步给目标服务器

源头数据才需要同步,备份数据不需要再次同步,否则就构成环路了

 


5.通信协议

 

协议包由两部分组成:header和body

header共10字节,如下:

  8 bytes body length

  1 byte command

              1 byte status

body数据包格式由取决于具体的命令,body可以为空

 

 


 


 

十五、Spring

1.spring介绍

spring是一个非常活跃的开源框架,它是一个基于IOC和AOP来构架多层javaEE系统框架,它的主要目的是简化企业级开发

spring以一种非侵式的方式来管理代码,spring提倡"最少侵入",这就意味着可以适当的安装或者卸载spring。

 


2.专业术语

1.组件/框架设计

1).侵入式设计

引入了框架,对现有的类的结构有影响,即需要实现或者继承某些特定类

2).非侵入式设计

引入了框架,对现有类结构没有影响

2.控制反转

控制反转也是IOC,对象的创建交个外部容器完成,叫做控制反转。

3.依赖注入

处理对象的依赖关系

4.控制反转和依赖注入的区别

控制反转:解决对象创建问题(对象创建交给别人)

依赖注入:在创建完对象后,对象关系的处理是依赖注入(通过set方法依赖注入)

 

 



 

3.spring

1.概述

spring框架可以解决对象创建之间依赖关系的一种框架,可以和其他的框架一起使用   


 

4.spring模块

 

1.springCode:springCode是核心功能(IOC容器),解决创建依赖关系

2.SpringWeb:SpringWeb是spring对web模块的支持

3.SpringDao:支持对JDBC的操作

4.SpringORM:对持久层框架整合

5.springAOP:面向切面

6.SpringEE:对JavaEE模块其他支持。

 

 


5.springIOC容器

1.创建对象

springIOC容器,是spring核心内容

作用:创建对象并且处理对象的依赖关系

2.IOC容器创建对象

创建对象方式:

1.调用无参构造函数

2.带有参构造函数

3.工厂创建对象

1).静态方法创建对象

2).非静态方法创建对象

 


对象创建:单例、多例

默认springBean是单例

  配置多例:score="prototype"   

配置单例:score="singleton"

如果bean设置为单例,会在加载配置文件后,直接初始化bean

如果bean设置为多例,会在调用getBean方法后,初始化bean

如果bean设置为lazy-init="true"会在调用getBean方法创建

销毁必须要手动销毁,调用destory方法销毁

 


3.对象依赖关系

 

1.spring中,如何给对象的属性赋值?

1).通过构造函数

2).通过set方法给属性注入值

3).p名称标签

4).自动状态

5).注解

 

 



 

6.AOP

1.什么是AOP?

 

AOP是面向切面编程,AOP采取横向抽取机制,取代了传统继承体系重复代码(性能监视、事务管理、安全检查、缓存)

springAOP使用纯java实现,不需要专门编译过程和类加载器,在运行期间通过代理方式向目标类织入增强代码

Aspect是一个基于java语言的AOP框架,Spring2.0开始,SpringAOP引入了对Aspect的支持,Aspect扩展了java语言,提供了一个专门的编译器,在编译时提供横向代码的织入。

 


2.AOP底层原理

 

AOP底层是通过代理机制实现,

动态代理(JDK使用):JDK的动态代理是对实现了接口的类生成代理。

cglib代理机制:对类生成代理

 


3.AOP的术语

 

1.joinpoint(连接点):所谓连接点是指那些被拦截的点,在spring中这些点指的是方法,因为spring只支持方法类型的连接点。

2.pointcut(切入点):所谓切入点是指要对哪些joinpoint进行拦截的定义。

3.advice(通知/增强):所谓通知是指拦截到joinpoint之后所要做的事情就是通知,通知分为前置通知,后置通知,异常通知,最终通知,环绕通知(切面要完成的功能)

4.introduction(引介):引介是一种特殊的通知在不修改类代码的前提下,introduction可以在运行期间为类动态的添加一些方法或field

5.target(目标对象):代理的目标对象

6.weaving(织入):是把增强应用到目标对象来创建新的代理对象的过程

4.CGLIB动态代理

CGLIB是一个开源项目,是一个强大,高性能,高质量的code生成类库,可以在运行期间扩展java类与实现java接口,hibernate支持它来实现PO字节码动态生成,hibernate生成持久化类的Javassist

 


5.结论

spring框架,如果实现了接口,就使用JDK的动态代理生成代理对象,如果这个类没有实现任何接口,使用GBLIB生成代理对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值