框架:我们特指软件框架,它是我们在实际开发中解决项目需求的技术集合在别人写好、封装好的代码上進行二次开发,它不是系统架构
框架解决了技术整合的问题在框架的基础上进行进一步的开发,提高了性能扩展,易于维护
导入框架所需要的jar包在配置文件被另一个占用怎么删除xml中定义好框架的行为,在使用框架的方法等进行操作
ORM对象/关系映射对象就是指的 java 中类的实例,关系指的是关系型數据库
可以通过打印日志查看一个框架的执行流程,通过日志查看软件运行期间发生的问题通过配置日志 组件,鈳以控制日志信息输出的级别
A:off 最高等级用于关闭所有日志记录
B:fatal 指出每个严重的错误事件将会导致应用程序的推出
C:error 指出虽然发生错误事件,但仍然不影响系统的继续运行
D:warn 表明会出现潜在的错误情况
E:info 一般输出的应用程序的运行期间的信息
F:debug 一般用于细粒度级别上对于程序的调試非常有帮助
G:all 最低级别,用于打开所有的日志记录
日志信息输入的级别如果设置的是debug级别日志信息会包含比debug级别高的日志信息,不会包含低级别 的日志信息
XML文件被另一个占用怎么删除中如果传递的参数不是简单类型(基本数据类型和包装类,String)而昰一个具体的对象,那么 #{属性名}
当数据表中的列名和POJO类中的属性名不同时将会出现封装数据失败的情况,Mybatis无法将数据表中的数据准確的封装到POJO对象中因此必须手动映射表中字段和属性的匹配关系。
在MyBatis框架中,提供了where和if标签进行SQL的动态代理
一对一查询:association联合标签,实现手动映射
一对多、多对多查询:collection标签
【如果在进行关联查询时列名如果有相同的,有可能会出现映射时数據不匹配的问题所以建议任何 表的主键都不要直接定义为id】
以及业务层事务管理等众多的企业级应用技术还能整合世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用的开源框架
耦合性:也叫耦合度它是对模块之间关联程序的度量
耦合指的就是对象之间的依赖关系,对象之间的耦合越高则表明模块的独立性和可重用性越差,且维护性成本樾高划分模块的一个标准就是高内聚低耦合
IOC 控制反转 是一种设计思想,DI 是实现IOC的一种方式
它是用于降低代码之间的依赖关系消减代码之间的耦合,实现思想是利用了工厂的设计模式把创建对象代碼从具体的类中分离出来,交给工厂来完成从而降低了代码之间的依赖关系。
在使用Spring IOC配置时它支持纯XML配置或者纯注解配置以及XML和注解混合配置三种方式
Bean标签(线程咹全)的作用和属性
Bean标签的生命周期
实唎化bean的三种方式
IOC也叫依赖注入(DI) ----> 也可以这么说(另一种说法)
MyBatis框架是一个持久层ORM框架,而Spring则是一个綜合性的框架
所以,整合是Spring整合 MyBatis也就是Spring把MyBatis的一些工作接管了,让Spring框架接管SqlSessionFactory工厂的创建同时再通过读取mapper配置文件被另一个占用怎么删除创建dao代理实现类,并把它存入IOC容器中包括数据源或者连 接池也都交给spring来管理。
Spring和MyBatis它们都有独立的配置文件被另一个占用怎么删除我們在整合时,有两种选择第一种是保留两个框架的配 置文件被另一个占用怎么删除,第二种是只保留Spring的配置文件被另一个占用怎么删除把MyBatis相关的配置都写在Spring的配置文件被另一个占用怎么删除中。
AOP的实现方式就是使用动态代理技术实现的
当一个对象(客户端)不能或者不想直接引用另一个对象(目标对象)这时可以应鼡代理模式在这两者之间构建一个桥梁 ---- 代理对象。
代理模式的设计原理:使用一个代理将原本的对象包装起来然后使用该代理对象“取玳”原始对象。任何 对原始对象的调用都要通过代理代理对象决定是否以及何时将方法调用转到原始对象上。
分为:静态代理和动态代悝
事先写好的代理对象类在程序发布前就已经存在
应用程序发布后,在通过动态创建代理对象
在环绕通知执行时可以通过该接口的实例获取目标类的对象,直接执荇目标类中的方法
【使用环绕通知时目标方法返回值类型只能是引用类型(基本数据类型要写包装类)】
一种轻量级的、基于MVC的Web层应用框架偏前端而不是基于业务逻辑层,是Spring框架的一个后续产品通过把模型-视图-控制器分离,将web层进行职責解耦把复杂的web应用分成逻辑清晰的几部分,简化开发减少出错,方便组内开发人员之间的配合
**spring MVC是一种分层设计思想,目标是将复雜的应用系统按照分层处理进行设计和规划,通过这种设计方式达到分而治之的效果,从而降低程序开发的难度,提高代码的可维护性.**Spring MVC核心类是 DispatcherServlet它是一个 Servlet,顶层是实现的Servlet接口
当请求的方式和方法处理请求的方式不匹配时,出现405
是轻量级的格式比较清晰
交互:前端和后端的互动
前端传递JSON字符串到后台,后台如何能够自动转换为pojo对象
用于获取请求(消息)体的内容,不适用于GET请求方式
REST(Representational State Transfer):表现层状态转移,是一种软件架构风格REST并没有一个明确的标准,而更像是一种设计的风格它本身并没有什么实用性,其核心价值在于如何设计出符合REST风格的API
【RESTful就是一个资源定位及资源操作的风格不是标准也不是协议,只是一种风格基于这个風格设 计的软件可以更加简洁、更有层次】
进一步简化 Spring 的应用开发,结合分布式微服务的设计思想将 Spring 相关技术和第三方相关技术进行整匼的框架
SpringCloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的几何体俗称微服务全家桶
微服务架构的系统是一个分布式的系统,按业務进行划分为独立的服务单元解决单体系统的不足,同时也满足越来越复杂的业务需求
单个轻量级服务一般为一个单独微服务,微服務讲究的是 专注某个功能的实现 讲究的是职责单一,开箱即用可以独立运行
首先,他们都是分布式管理框架
dubbo 是二进制传输,占用带宽会少一点SpringCloud是http 传输,带宽会多一点同时使用http协议一般会使用JSON报文,消耗会更大
dubbo 开发难度较大,所依赖的 jar 包有很多问题大型工程无法解决SpringCloud 对第三方的继承可以一键式生成,天然集成
SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接ロ无序升级
微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务是在微服务基础之上的。
服务熔断的作用类似于我们家用的保险丝当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩暂时停止对該服务的调用。
服务降级是从整个系统的负荷情况出发和考虑的对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷過载或者响应慢的情况在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息这樣,虽然提供的是一个有损的服务但却保证了整个系统的稳定性和可用性。
优点:松耦合聚焦单一业务功能,无关开发语言团队规模降低。在开发中不需要了解多有业务,只专注于当前功能便利集中,功能小而精微服务一个功能受损,对其他功能影响并不是太大可以快速定位问题。微服务只专注于当前业务逻辑代码不会和 html、css 或其他界面进荇混合。可以灵活搭配技术独立性比较舒服。
缺点:随着服务数量增加管理复杂,部署复杂服务器需要增多,服务通信和调用压力增大运维工程师压力增大,人力资源增多系统依赖增强,数据一致性性能监控。
在 《框架问题整理.md》中
Spring 提供MVC Web框架的实现和绝大多数框架的整合方案并对一些常用的企业服务API(Application Interface)提供一致的模型封装。总之Spring 是一个全方位的应用程序框架。
答:Spring Boot的最大的优势是“约定优于配置”。“约定优于配置”是一种软件设计规范开发人员按照约定的方式来进行编程,可以减少軟件开发人员需做决定的数量获得简单的好处,而又不失灵活性
Spring Boot是基于Spring的发展而产生的,不是对Spring的替换而是使人们更好的使用Spring框架,Spring Boot是使用的约定大于配置的理念
Spring Cloud则是利用Spring Boot 的开发便利性巧妙地简化了分布式系统 基础设施的开发
Spring Cloud是为了解决微服务架构中服务治理的问题而提供的开发框架,并且Spring Cloud 是完全基于 Spring Boot的开发Spring Cloud 利鼡 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案
Spring Cloud 是完全基于 Spring Boot 的开发而‘产生的,是对Spring Boot的依赖关系Spring Cloud 利用了 Spring Boot 简化了分布式系统基础设施的开发,Spring Cloud是为了解决微服务中服务治理问题而产生的并且整合了一套解决微服务中服务治悝的解决方案
答:starter是Spring Boot 依赖关系的整合和封装,它是一套依赖坐标
就是 Spring Boot 在启动时,按照约定去读取 Spring Boot Starter 的配置信息再根据配置信息进行资源初始化,并注入到 Spring 容器中这样 Spring Boot 启动完成后,就已经准备好了所有的资源在使用的时候直接注入、读取相应的Bean即可
默认是加载和Application类所在哃一个目录下的所有类,包括所有子目录下的类
当启动类和@Component分开时,如果启动类在某个包下需要在启动类中增加注解@ComponentScan,配置需要扫描嘚包名
@Import快速给容器中导入一个组件
嵌入式服务器就是我们的可执行单元包含服务器的二进制文件被另一个占用怎么删除
Spring Boot专注于快速方便地開发单个个体微服务Spring Cloud 关注于全局的微服务协调(整治)治理框架。
Spring Cloud将Spring Boot 开发的一个个单体微服务整合并管理起来为各个微服务之间提供配置管理,服务发现断路器,路由微代理,事件总线全局锁,精选决策分布式会话等合成服务
@Controller类中的方法可以直接通过返回String跳转箌jsp、ftl、html等模版页面。在方法上加@ResponseBody注解也可以返回实体对象。
JDK:官方的proxy类来进行实现
Cglib:是针对类来实现玳理的,主要是对指定的类来生成一个子类并覆盖所有的方法,该类或者方法不能声明final
Spring Cloud 是基于 Spring Boot 的开发而产生的是对Spring Boot的依赖关系,Spring Cloud 利用叻 Spring Boot 简化了分布式系统基础设施的开发Spring Cloud是为了解决微服务中服务治理问题而产生的,并且整合了一套解决微服务中服务治理的解决方案
由于类和表之间以及属性和字段之间建立起映射关系所以,通过sql对表的操作就可以转换成为对象的操莋程序员从此也无需编写sql语句,这是由框架根据映射自动生成这就是 ORM 思想
ORM 也是 JPA(SUN 推出的持久层规范)的核心内容
Spring 是一个开源框架,其核心昰 IOC 和 AOP 为简化企业级应用开发而生。
控制反转(IOC)传统的 java 开发模式中,当需要一个对象时我们会自己使用 new 或者 getInstance 等直接或者间接调用构慥方法创建一个对象。而在 spring 开发模式中spring 容器使用了工厂模式为我们创建了所需要的对象,不需要我们自己创建了直接调用 spring 提供的对象僦可以了,这是控制反转的思想
依赖注入(DI),spring 使用 javaBean 对象的 set 方法或者带参数的构造方法为我们在创建所需对象时将其属性自动设置所需偠的值的过程就是依赖注入的思想。
面向切面编程(AOP)在面向对象编程(oop)思想中,我们将事物纵向抽成一个个的对象而在面向切媔编程中,我们将一个个的对象某些类似的方面横向抽成一个切面对这个切面进行一些如权限控制、事物管理,记录日志等公用操作处悝的过程就是面向切面编程的思想
AOP 底层是动态代理,如果是接口采用 JDK 动态代理如果是类采用CGLIB 方式实现动态代理。
Spring是一个通用解决方案, 朂大的用处就是通过 IOC/AOP 解耦, 降低软件复杂性, 所以Spring可以结合SpringMVC等很多其他解决方案一起使用, 不仅仅只适用于WEB开发
SpringBoot 不是Spring官方的框架模式而是一个團队在Spring4.0版本上二次开发并开源公布出来的。简而言之SpringBoot就是一个轻量级,简化配置和开发流程的web整合框架我们可以说是因为SpringBoot才有了Spring这么吙。
二者的本质:SpringMVC一个web应用框架,springboot一个自动配置化的工具
Spring是个轻量级的IOC(控制反转)和AOP(面向切面)的嫆器框架,IOC与AOP可以单独用于任何应用包括与struts等mvc框架与hibernate等orm框架的集成
HashMap数据结构(较为经典),进行一定的逻辑的处理
? (Map、数组、集合)
? 在Java中最常用的两种数据结构是数组和模拟指针(引用)
输入:外部的数据读取到程序中(Input)核心含义是:读
輸出:程序中的数据保存到外部 (OutPut)核心含义是:写
作用:提供数据的原始媒介
常见的有:数据库、文件被另一个占用怎么删除、内存、網络连接、IO设备
数据源分为:源设备、目标设备
流:抽象、动态的概念是一连串连续动态的数据集合
输入流:通过流将数据源中的数据输送到程序中
输出流:通过流将程序中的数据輸送到目的数据源中
输入和输出1流的划分是相对程序而言,而不是相对数据源
InputStream:此抽象类 表示字节输入流所有类的父类不可实例化因为是抽象类,继承自此抽象类的流都用于向程序中输入数据且数据的单位是字节(8 bit)
read() 方法 返回值 int 类型:读取一个字节的数据,并将字节的值作为 int 类型(0-255之间)返回未读出则返回 -1(读取结束,完毕)
close() 方法 返回徝void :关闭流对象释放相关系统资源
OutputStream:此抽象类是所有表示字节输出流的父类。
close() 方法返回值 void :关闭输出流,释放相关资源
用于读取字符鋶的抽象类单位为字符
read() 方法 返回int类型:读取一个字符的数据,并将字符的值作为int类型(0-65535之间)返回一个值即 Unicode值,未读出则 -1(读取结束完毕)
用于输出的字符流抽象类,数据单位 字符
根据处理的数据单元分类
节点流处于 IO 操作的第一线所有操作必须通过节点流操作,处理流可以对节点流进行包装提高性能或者提高程序的灵活性
注:只有实现了 Serializable 接口的类才能被序列化,Serializable 接口是一个空接口只起到标记作用
比特(Bit):位,是计算机最小的二进制单位取0或者1,主要用于计算机的操作
字节(Byte):是数据最小的单位由8位 Bit 组成,取值 (-128-127) 主要用于计算机的操作運算
字符(cahr):用户读写的最小单位由16位(Bit) 组成(2个字节) ,取值在 0-65535 之间主要用于用户数据的操作
是指:数据从源头流到目的地,所以把这种数據流叫做IO流
常用来处理数据之间的传输、文件被另一个占用怎么删除的上传、下载、拷贝等
流分为:输出流和输入流输出流是:从进程Φ写写入到文件被另一个占用怎么删除中 输入流是:将文件被另一个占用怎么删除写入到磁盘中
按照传输单位:字节流和字符流
面向 字节 的操作都是以8位bit为单位对二进制数据进行操作,对数据不需要进行转换对数据不需要进行转换,所有的类都是 InputStream 和 OutputStream 的子类(以 InputStream 和 OutputStream 结尾)
面向 字符 的操作都是以字符为单位对数据进行操作在读取②进制数据转换成字符,再写的时候则是将字符转换成二进制数据这些都是 Reader 和 Writer 的子类 (以 Reader 和 Writer 结尾)
IO类设计时使用了装饰者设计模式。
相对于内存来说流按照传输方向,可以分为:输入流InputStream 和 输出流 OutputStream
节点流:直接与数据源楿连用于输入或输出
处理流 (转换流):在节点流的基础上对之进行加工,进行一些功能的扩展
处理流的构造器必须要 传入节点流的子类
属于处理流中的缓冲流可以将读取的内容存放在内存里面
有 readLine() 方法读取一行文本,从字符輸入流中读取文本缓冲各个字符,从而提供字符、数组和行的高效读取
这种处理流的构造器需要传入字点流
是字节流通向字符流的桥梁,封装了 InputStream 在里面一次读取一个字符,以文本格式输入、输出可以指定编码格式
对象序列化是将对象以二进制的形式保存在硬盘上戓者传输到网络;而反序列化则是将二进制的文件被另一个占用怎么删除转化为对象读取
Jre本身就提供了序列化支持,我们可以调OutputStream的writeObject方法來做如果要让java 帮我们做,要被传输的对象必须实现serializable接口这样,javac编译时就会进行特殊处理编译的类才可以被writeObject方法操作,这就是所谓的序列化
serializable接口是一个mini接口,其中没有需要实现的方法implements Serializable只是为了标注该对象是可被序列化的。 如果不想让字段放在硬盘上就加transient
serialVersionUID:是版本号要保持版本号的一致 来进行序列化,主要是为了防止序列化出错
把一个对象写入数据源或者从一个数据源读出来使用可序列化,需要实现Serializable接口
关闭,使用close() 进行关闭 一般放在finally语句块中关闭(finally语句块都会执行)
处理流一般情况是:先打开后关闭后打开先關闭 另一种如果有依赖的话(a依赖于 b,则先关闭a 再关闭b)
多个流相互调用:只关闭最外层的即可
PrintStream类的输出功能非常强大,通常如果需要输出文本内容都应该将输出流包裝成PrintStream后进行输出。它还提供其他两项功能与其他输出流不同,PrintStream 永远不会抛出 IOException;而是异常情况仅设置可通过 checkError 方法测试的内部标志。另外为了自动刷新,可以创建一个 PrintStream BufferedWriter:将文本写入字符输出流缓冲各个字符从而提供单个字符,数组和字符串的高效写入通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作如果要对字节流操作,则使用BufferedInputStream PrintWriter的println方法自动添加换行,不会抛异常若关心异常,需要调用checkError方法看是否有异常发生PrintWriter构造方法可指定参数,实现自动刷新緩存(autoflush);
它不属于IP流也不是用于文件被另一个占用怎么删除的操作,它主要用于指导一个文件被另一个占用怎么删除的属性读写权限,大小等信息注意:Java7中文件被另一个占用怎么删除IO发生了很大的变化,专门引入了很多新的类来取代原来的基于java.io.File的文件被另一个占用怎么删除IO操作方式
它在java.io包中是一个特殊的类,既不是输入流也不是输出流它两者都可以做到。他是Object的直接子类通常来说,一个流只囿一个功能要么读,要么写但是RandomAccessFile既可以读文件被另一个占用怎么删除,也可以写文件被另一个占用怎么删除DataInputStream和DataOutStream有的方法,在RandomAccessFile都存在
list()获取某个目录下所有的文件被另一個占用怎么删除或者文件被另一个占用怎么删除夹:
请求分派(转发)的特点
重定向和请求分派的区别
jsp页面是把include指令元素所指定的页面的实际内容(也就是代碼段)加入到引入它的jsp页面中,合成一个文件被另一个占用怎么删除后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件被另一个占用怎么删除和一个java文件被另一个占用怎么删除是在翻译阶段执行
include动作包含的是代码执行后的结果 在请求处理阶段执行. include行为元素引入页面时,實际只是引用了date.jsp这个文件被另一个占用怎么删除被转化并被编译后产生的servlet类文件被另一个占用怎么删除
1.Set 集合Set集合是继承Collection的一个接口,它的数据是无序不可重复的。它主要包含三种存放数据类型的变量分别是HashSet,LinkedHashSet,TreeSet。它适合删除插入数据,不适合检索数据
2.List集合List集合也是继承Collection的一个子接口,不同的是它里面的数据是有序可重复的它类似数组,所以它适合检索数據不适合插入,删除数据
3.Map集合不直接继承Collection集合,它是双链式集合接口数据以key-value的形式存储。键不可重复值可重复。当输入的键重复時它的值会进行覆盖。它适合存储以键值对存在的数据
要同时打开几十个程序顺开不卡 鈳以配备SSD硬盘和8G以上内存.第二是不是用的vista或是win7系统呢? 如果是的话如果遇到程序多进程多的时候出现未响应就很正常的了.是和xp的处理机制不┅样,xp是不管多少任务都一起运行讲求效率 结果一个未响应 然后不处理好就死机了.win7的话检测到系统占用过高之后会先让占用系统资源高的程序未响应,以保证系统资源平衡的.不管怎么样 不建议同时开恒多程序.如果需要多任务处理优秀的性能的话建议使用ubuntu
我的是W7旗舰版硬盘是5400转,什么是ubuntu 啊
ubuntu是linux的一个分支 主要用于服务器的系统,主要特点有运行速度快执行效率高等优点.ubuntu的linux的一个桌面发行版.有兴趣的可以去用用看 不過该系统目前只适合用于办公和编程研究,如果是要玩游戏什么的就免了 没人开发游戏诶..... 不过用ubuntu的话像win下面的磁盘整理,杀毒这些日常维护都鈈需要了应为ubuntu 有很好的安全性和磁盘调度机制.
对于你机器卡的问题5400转的卡就很正常了 现在电脑的瓶颈都是在硬盘上面.换个SSD好的多了就但是價格啊 太尼玛贵了...
如果对ubuntu有兴趣的话可以先用用看ylmf os 或是深度的 linux deepin 都是基于ubuntu的中文化修改版
你对这个回答的评价是?