问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等
文章目录
- 1. Java创建对象有哪四种方式?
- 2. 什么是maven?maven的核心功能有哪些?
- 3. 什么是MVC?说说分层的好处。
- 4. Spring的两大核心技术是什么?
- 5. 什么是IOC/DI?
- 6. 谈谈面向对象编程与面向接口编程的区别。
- 7. 什么是反射?说说反射是如何应用到spring框架上。
- 8. 说说java 解析xml有哪些技术?
- 9. 抽象类与接口的区别。
- 10. 谈谈表单的同步提交与异步提交的区别。
1. Java创建对象有哪四种方式?
- new
Students s1 = new Students()
- clone
Students s2 = (Students) s1.clone();
- 反射
Class clazz = s1.getClass();Constructor constructor = clazz.getConstructor();Students s2 = (Students) constructor.newInstance();
- 对象反序列化
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file));out.writeObject(s1); //把s1对象写入到文件中。ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));Students s2 = (Students) in.readObject();
2. 什么是maven?maven的核心功能有哪些?
定义:
- maven是一种项目架构管理工具,用来方便导入jar包的,它的核心思想是:约定大于配置。
核心功能:
- 依赖管理
举例:依赖service
<dependencies><dependency><groupId>com.shsxt</groupId><artifactId>wc-service</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
</dependencies>
groupId:项目隶属的实际项目-公司名称
artifactId:模块-项目名
version:项目当前所处的版本
平常需要的库,查找网站:http://mvnrepository.com/
然后复制到pom.xml文件中,记得写在project便签和dependencies中,保存就依赖了。
- 模块管理
在 Maven 中需要定义一个 parent POM 作为一组 module 的聚合 POM。在该 POM 中可以使用 标签来定义一组子模块。 parent POM 不会有什么实际构建产出。 而 parent POM 中的 build 配置以及依赖配置都会自动继承给子 module。
例如子模块的pom.xml配置如下:
<modelVersion>4.0.0</modelVersion><parent><groupId>com.hbgc</groupId><artifactId>base</artifactId><version>1.0-SNAPSHOT</version><!--父模块的pom.xml位置--><relativePath>../base/pom.xml</relativePath></parent><groupId>com.hbgc</groupId><artifactId>springbootdemo</artifactId><version>0.0.1-SNAPSHOT</version><name>springbootdemo</name><description>Demo project for Spring Boot</description>
- 插件管理
添加插件,类似于添加依赖, 通过 GAV 来指定插件, 其中对于maven官方插件, 可以省略 GroupId。
举例:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.0.0</version></plugin></plugins>
</build>
- 部署管理
在idea中,我们可以打开maven project视图。在maven的生命周期列表中进行测试、打包和安装。
此外,maven有三套生命周期:clean、default(最核心)、site
3. 什么是MVC?说说分层的好处。
MVC是一个架构,或者说是一个设计模式,它就是强制性使应用程序的输入,处理和输出分开。将一个应用程序分为三个部分:Model,View,Controller 即模型、视图、控制器。
Model:
- 业务处理 :业务逻辑(Service)
- 数据持久层:CRUD (Dao)
View:
- 展示数据
- 提供链接发起Servlet请求 (a,form,img…)
Controller (Servlet):
- 接收用户的请求 :(req:请求参数、Session信息….)
- 交给业务层处理对应的代码
- 控制视图的跳转
分层是体现了MVC的设计模式。
分层的好处就是解耦,做到高内聚,低耦合。
4. Spring的两大核心技术是什么?
(1) IOC(DI):Inverse of Controller,控制反转
Dependency Inject ,依赖注入。
两个是一回事,就是把猫叫了个咪。
如何理解依赖注入呢?
①创建对象永远不是new
②面向接口的编程
(2)AOP:面向切面编码
5. 什么是IOC/DI?
IOC:即控制反转,最基础的调用对象是通过new一个对象出来,例如:People p=new People(),我们Spring框架中的IOC即改变这种方式的调用,将后面“new People”转换为xml文件去调用,即使用第三者调用。
DI:即依赖注入,是具体的实现技术,是指由第三方组件负责将实例变量(实现类)传入到对象(调用类)中去。
6. 谈谈面向对象编程与面向接口编程的区别。
- 首先,面向接口编程是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
- 面向对象编程:java就是面向对象编程,所谓在java中万事万物皆对象,这是因为java中所有类的调用都是new出来的,其次面向对象用到三大特性,即封装、多态、继承。
- 面向接口编程:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务,而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。这样做对系统灵活性大有好处,当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。
- 总之:面向对象编程就是一堆对象,通过封装、继承、多态等更加有效的组织程序;面向接口编程就是一堆接口,通过接口规约对象的属性和方法,是面向对象一部分。
7. 什么是反射?说说反射是如何应用到spring框架上。
- 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
- 通过解析xml文件,获取到id属性和class属性里面的内容,利用反射原理获取到配置里面类的实例对象,存入到Spring的bean容器中。
8. 说说java 解析xml有哪些技术?
(1)DOM
优点:
- 形成树结构,直观好理解,代码更容易编写
- 解析过程中树结构保留在内存中,方便修改
缺点:
- 当xml 文件较大时,对内存耗费比较大,容易影响解析性能并造成内存溢出
(2) SAX
优点:
- 采用事件驱动模式,对内存耗费比较小
- 适用于只需要处理xml中数据时
缺点:
- 不易编码
- 很难同时访问同一个xml中的多处不同数据
(3) JDOM
- 仅使用具体类而不使用接口
- API大量使用了Collections类
(4) DOM4J
- JDOM的一种智能分支,它合并了许多超出基本xml文档表示的功能
- 使用接口和抽象基本类方法,是一个优秀的Java XML API
- 具有性能优异、灵活性好、功能强大和极端易用使用的特点
- 是一个开放源代码的软件
DOM4J和JDOM在实际开发用的比较多,第三方的解析技术。
9. 抽象类与接口的区别。
使用抽象类是为了代码的复用,而使用接口是为了实现多态性,具体有如下区别:
(1)成员区别
抽象类:成员变量:可以变量,也可以常量构造方法:有成员方法:可以抽象,也可以非抽象接口:成员变量:只可以常量成员方法:只可以抽象
(2) 关系区别
类与类:继承,单继承
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承
(3)设计理念区别
抽象类: 被继承体现的是:”is a”的关系。 抽象类中定义的是该继承体系的共性功能。
接口: 被实现体现的是:”like a”的关系。 接口中定义的是该继承体系的扩展功能。
比如:保温杯是水杯,具有保温功能。保温杯 extends 水杯 implements 保温,水杯是抽象类,保温是接口。
10. 谈谈表单的同步提交与异步提交的区别。
- 表单的同步提交:表单默认的提交行为是同步提交,浏览器会锁死等待服务端的响应结果。
无论服务端响应的是什么,都会直接把响应的结果覆盖掉当前页面。(服务器重定向只针对同步提交有效) - 表单的异步提交:form标签内部不再编写action和method,而是通过ajax的url和method选项去实现提交,提交的表单内容不会发生锁死,浏览器任然可以干别的事情。
- 目前企业项目,大多数使用异步提交方式,很少使用同步提交。
问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等相关推荐
- 面向对象编程和面向接口编程的区别
随记 说实话,没有一定编程基础,这两个还真的是很难懂,因为对于IT编程思想很重要,如果有了编程思想,这两个的区别就很好理解了. 1.面向对象编程: 首先java就是面向对象编程,所谓在java中万事万 ...
- 阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第21章:抽象类与接口应用:课时94:案例分析二(绘图处理)
案例分析二 考虑一个表示绘图的标准,并且可以根据不同的图形来进行绘制: interface IGraphical { // 定义绘图标准public void paint() ; // 绘图 } cl ...
- 【Java基础系列教程】第八章 Java面向对象详解(三)_抽象类、接口、内部类、深拷贝与浅拷贝
一.JavaBean规范 1.1 什么是JavaBean JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中.特点是可序列化,提供无参构造器,提供getter方法和 ...
- Systemverilog:面向对象编程与面向过程编程区别
在学习验证的同学中开始学习大家都很对"对象"这个概念一脸懵,尤其是这个概念在后续的学习中非常的重要.不理解的话,就是很难理解面向对象编程这个对象到底是什么?和面向过程的C语言到底有 ...
- Java中抽象类和接口的区别(来源二,原始来源不明确)
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类往往用来表征我们在对问题 ...
- 面向对象编程和面向过程编程的区别,以及优缺点
面向对象编程 当需要实现一个功能的时候我们并不关心具体的步骤,而是找一个已经具备该功能的人来帮我们做事.那就用到了封装.继承和多态. 封装 - 把需要的功能放到一个方法中,别人只能调用这个方法 继承 ...
- 2021/1/26-每日三题第33弹:皮皮虾,我们走 !你知道什么是面向对象编程和面向过程编程吗 ???
前言: 朋友们好啊,今天双双双双是一波神回复啊
- Go面向对象编程的三大特性
Go面向对象编程的三大特性 1.基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样. 2.面向对象编程思想-抽象 抽象: 在定义一个结构体类型时,实 ...
- 09-01 面向对象编程
文章目录 二 类与对象 三 面向对象编程 3.1 类的定义与实例化 3.2 属性访问 3.2.1 类属性与对象属性 3.2.2 属性查找顺序与绑定方法 3.3.3 小结 #一 对象的概念 " ...
最新文章
- mac下找不到.m2文件解决方法
- 人工智能浪潮下的语音交互——VUI设计(基础篇)
- python 列表转字典
- (转)字典树原理+实现
- 第三次学JAVA再学不好就吃翔(part103)--BufferedInputStream和BufferOutputStream
- java 检测ip网速_java心跳测网速Demo
- 三星要带头了!考虑明年手机不送充电器
- 二月春风似剪刀的上一句是什么,二月春风似剪刀全诗赏析
- 玩转Linux进程控制命令
- MAC下maven本地仓库配置
- 2021版小新Pro14 Ubuntu 20.04 配置指南
- windows批量修改文件权限
- 快圣诞节了,用Python 送你一棵圣诞树
- html字体图标设置
- NCBI数据下载-sra
- 论文——多指标与机器学习算法相结合的中国县级玉米产量早期预测
- 利用随机森林算法实现Bank风险预测
- 09 | 校招简历投递渠道汇总与对比分析,选对渠道才能事半功倍
- 教你“如何巧看黑马测试视频,悄悄成为测试高手?”
- 学计算机买笔记本是i5 i7,i7一定比i5强?买电脑陷阱你一定要注意了
热门文章
- oracle 拼接sql 日期,动态SQL对日期处理注意事项
- 文本分类入门(十)特征选择算法之开方检验
- 20201021 《计算感知》第3节课 笔记
- python爬虫与数据分析实战27_Python网络爬虫与文本数据分析
- mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁
- 六级单词pdf_雅思提高词汇量是背单词还是大量刷题
- mysql 查数据 default无效_导入mysql数据的时候提示Field * doesn't have a default value解决方法...
- getplotlyoffline(‘http://cdn.plot.ly/plotly-latest.min.js‘)无法下载如何解决
- error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug...
- 【转载】redis开启远程访问