Java EE

022-抽象类与抽象方法

倾然丶 夕夏残阳落幕 提交于 2020-12-16 10:37:19
声明:我的所有文章,都是对网上教学视频的整理,包括狂神说、尚硅谷、黑马程序员等等,用来作为参考资料,无任何商业使用,请广大网友参考,不喜勿喷,谢谢。(注意,由于网站的原因,有些代码字符可能会出现问题,建议大家阅读代码时,最好和下面的图片对应来看) 一、抽象类的引入 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。 二、抽象类与抽象方法的定义 1、用abstract关键字来修饰一个类,这个类叫做抽象类 2、用abstract来修饰一个方法,该方法叫做抽象方法,该方法只有方法的声明,没有方法的实现,以分号结束,如:public abstract void talk(); 3、含有抽象方法的类必须被声明为抽象类 4、抽象类不能被实例化,抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体;若没有重写全部的抽象方法,仍为抽象类。 5、不能用abstract修饰变量、代码块、构造器 6、不能用abstract修饰私有方法、静态方法、final的方法、final的类 三、示例 四、抽象类应用 抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类。 例如:在一个航运公司系统中

MyBatis学习总结

◇◆丶佛笑我妖孽 提交于 2020-12-15 15:09:24
一. 三层架构 界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet) 业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据 数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。 三层对应的包 界面层: controller包 (servlet) 业务逻辑层: service 包(XXXService类) 数据访问层: dao包(XXXDao类) 三层中类的交互 用户使用界面层–> 业务逻辑层—>数据访问层(持久层)–>数据库(mysql) 三层对应的处理框架 界面层—servlet—springmvc(框架) 业务逻辑层—service类–spring(框架) 数据访问层—dao类–mybatis(框架) 二.框架 模版: 1. 规定了好一些条款,内容。 2. 加入自己的东西 框架特点: 1. 框架一般不是全能的, 不能做所有事情 2. 框架是针对某一个领域有效。 特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。 3. 框架是一个软件 三.mybatis框架 介绍: 一个框架,早期叫做ibatis, 代码在github。 mybatis是 MyBatis SQL Mapper Framework for Java (sql映射框架) (1)sql mapper :sql映射

SpringMVC自定义类型转换器

纵然是瞬间 提交于 2020-12-15 06:16:37
SpringMVC 自定义类型转换器    我们在使用SpringMVC时,常常需要把表单中的参数映射到我们对象的属性中,我们可以在默认的spring-servlet.xml加上如下的配置即可做到普通数据类型的转换,如将String转换成Integer和Double等: < mvc:annotation-driven />   或 < bean id ="conversionService" class ="org.springframework.format.support.FormattingConversionServiceFactoryBean" />   其实 <mvc:annotation-driven /> 标签会默认创建并注册一个 RequestMappingHandlerMapping (在Spring3.2之前是DefaultAnnotationHandlerMapping) 和 RequestMappingHandlerAdapter (Spring3.2之前是AnnotationMethodHandlerAdapter),当然,如果上下文有对应的显示实现类,将该注解注册的覆盖掉。该注解还会创建一个ConversionService,即 FormattingConversionServiceFactoryBean。   如果想把一个字符串转换成其它实体类型

还有40天,Java 11就要横空出世了。

风流意气都作罢 提交于 2020-12-15 00:36:51
↑ 点击上方 “Java架构师历程” 关注我们 作者:mush 来源: http://mushiming.top/mushblog/archives/834 Java 10已经发布将近5个月了,现在已经是时候谈论Java 11. Oracle 向更快的发布周期迈进 意味着更多的功能正在以前所未有的速度发展。 还有40天的时间才会发布Java 11,我们还可以了解是否应该升级到Java 9,10,或者我们是否应该等待Java 11。 让我们来看看。 Java 11即将推出的功能有哪些,它们与Java 9和10的不同之处是什么? Java 11的发布日期定于2018年9月,并且该存储库目前已开放以进行错误修复,以及更多JDK增强建议的提议将添加到即将发布的版本中。虽然该列表不是最终的,但已经有4个提案计划用于下一个版本: 1. Lambda参数的本地变量语法 在声明隐式类型lambda表达式的形式参数时,此JEP将允许使用var。这里的目标是将局部变量声明的语法与隐式类型的lambda表达式中的形式参数声明的语法对齐。这样,而不是写这个: (x,y) - > x.process(y) 我们可以写: (var x,var y) - > x.process(y) 这扩展了Java 10 Local Variable Type Inference,它引入了一种新的语法

tomcat启动服务 org.apache.jasper.servlet.TldScanner scanJars 缓慢

扶醉桌前 提交于 2020-12-14 22:17:10
tomcat启动时在 org.apache.jasper.servlet.TldScanner scanJars 位置启动特别慢,详细日志: INFO: Initialization processed in 1427 ms 十二月 14, 2020 4:35:29 下午 org.apache.catalina.core.StandardService startInternal INFO: Starting service [Catalina] 十二月 14, 2020 4:35:29 下午 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/8.5.41 十二月 14, 2020 4:35:37 下午 org.apache.jasper.servlet.TldScanner scanJars INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found

java web

孤街浪徒 提交于 2020-12-14 11:27:53
JSP(前端页面)+Servlet(控制器)+JavaBean(数据获取与封装组件),创建DAO获取数据库数据,创建VO封装取回的数据,并用EL表达式展示在页面中。实现一个数据库的模糊查询。(java web实验报告) 1.首项给大家看一下我这个web实验的目录 2.软件准备:MyEclipse和MySQL数据库 2-1.MySQL数据库: 首先我在MySQL数据库里面建立一张名为:t_student的表: 3.核心代代码: 3-1.jsp代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> < html > < body > < form action = " Test_servlet " method = " POST " > 请输入学生信息: < input type = " text " name = " stuinfo " > < input type = " submit " value = " 查询 " > </ form > <!--

想进BAT一线互联网大厂,该怎么准备技术面试?一位6年老Android的面经总结(附300+面试题)

倖福魔咒の 提交于 2020-12-14 10:09:31
前言 准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。谁想到婚假还没休完,老板就在公司宣布了撤出上海的决定,愿意去深圳的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。悲哀…. 幸好提前准备过,不过都是断断续续的今天看点这个,明天看点那个,三天打鱼两天晒网的,也没用心去准备。这下好了,直接到了最差的地步了,没办法,用心准备吧。 简历内容 基本信息 姓名,联系方式,工作年限,学校,专业,学历 个人技能 工作几年 独立开发 掌握的技能,组件化、插件化、热修复、自定义view 适配、架构、第三方源码、性能优化 职业技能:管理能力、产品能力、沟通能力 这些东西一定要写自己熟悉的,最好项目里面能体现出来的内容 项目经验 项目描述: 一句话 工作内容:做了哪些模块,用了什么技术、做过哪些优化,重构方面的内容 项目方面写两到三个项目,最好最近一两家公司做的项目 公司经历 公司名称 时间 工作内容 面试题准备 项目中用到的技术 整理出来,上网找找相关的技术文章和面试题看看,然后用自己的话把这些内容梳理出来,最好有自己的看到,面试官习惯问为什么。 Android知识点 基础: 四大组件、fragment、自定义View、事件分发、滑动处理、handler、AsyncTask

高并发下接口幂等性解决方案

心不动则不痛 提交于 2020-12-14 08:28:45
阅读文本大概需要3分钟。 0x01、幂等性概念 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现. 一句话: 幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。 0x02、幂等性场景 1、查询操作 查询一次和查询多次,在数据不变的情况下,查询结果是一样的。select是天然的幂等操作; 2、删除操作 删除操作也是幂等的,删除一次和多次删除都是把数据删除。(注意可能返回结果不一样,删除的数据不存在,返回0,删除的数据多条,返回结果多个) ; 3、唯一索引 防止新增脏数据。比如:支付宝的资金账户,支付宝也有用户账户,每个用户只能有一个资金账户,怎么防止给用户创建资金账户多个,那么给资金账户表中的用户ID加唯一索引,所以一个用户新增成功一个资金账户记录。要点:唯一索引或唯一组合索引来防止新增数据存在脏数据(当表存在唯一索引,并发时新增报错时,再查询一次就可以了,数据应该已经存在了,返回结果即可); 4、token机制:防止页面重复提交 原理上通过session

初涉springboot(一)

隐身守侯 提交于 2020-12-13 21:51:29
概述   1、了解springboot的作用   2、构建第一个springboot项目 一、springboot的作用   ① 原先在构建SSM项目的时候,可以感觉到,在一些不是很大的项目,构建配置文件的过程所需的时间花费甚至超过项目本身的业务,每次构建一个新项目都得搞各种配置文件(xml\configuration类)。我们需要一些自动化的配置,springboot可以做到。   ② 近几年随着业务增加,流量增大等原因,所有业务堆积在一个项目是很恐怖的,一个项目里面光理清业务逻辑就很压力,更别说后期开发,到了集群时期,多个服务器部署相同的项目,改一个业务就得重新挨个部署,效率低下,就有人(Josh Evans大神)提出微服务的架构,他认为服务应该是独立个体(大概这意思)。随着技术发展,业务逐渐被独立出来,形成能独立执行的个体,分散在各个服务器中,也就是微服务架构,各个服务通过中间件交流,而springcloud就是实现微服务架构的技术之一,而了解springcloud,则先需要了解springboot。 二、构建第一个springboot项目   以往构建spring项目,我们需要导入jar包或maven依赖,再配置一下 spring的配置文件(xml或@Configuration标注的类) ,之后在web.xml配置启动时加载spring容器,光是个启动就要做那么多事

springboot源码分析-SpringApplication

北战南征 提交于 2020-12-13 14:41:30
SpringApplication SpringApplication类提供了一种方便的方法来引导从main()方法启动的Spring应用程序 SpringBoot 包扫描注解源码分析 @SpringBootApplication public class Springbootv2Application { public static void main(String[] args) { // 创建ApplicationContext并启动 new SpringApplication(Springbootv2Application. class ).run(args); } } /** * Run the Spring application, creating and refreshing a new * { @link ApplicationContext}. * @param args the application arguments (usually passed from a Java main method) * @return a running { @link ApplicationContext} */ public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch