CSDN软件工程师能力认证学习精选夯

CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准。C系列认证历经近一年的实际线下调研、考察、迭代、测试,并梳理出软件工程师开发过程中所需的各项技术技能,结合企业招聘需求和人才应聘痛点,基于公开、透明、公正的原则,甑别人才时确保真实业务场景、全部上机实操、所有过程留痕、存档不可篡改。

我们每天将都会精选CSDN站内技术文章供大家学习,帮助大家系统化学习IT技术。

JavaSE基础

1.对象实例化

(1)Class.forName(“类的全名称”);

(2)Personperson=newPerson();

2.类的重载:

类名相同,形参列表不同(类型,顺载序,个数),system.out.println();

3.不定长参数,本质是一个数组形式,int...a

定义方法时不确定有几个入参时使用

一个方法中只能有一个,位于形参末尾

4.方法中使用全局变量this

全局变量(成员变量/成员属性):编写在类中

局部变量:声明在方法或者代码块中

5.形参列表中的变量是局部变量

6.构造方法的作用:

使用构造方法创建对象并且可以为类中的属性赋值(实例化对象)

构造方法在创建的时候就给对象初始化;一个对象建立构造方法只能运行一次;

一般方法是对象调用才执行,给对象添加对象具备的功能;一般方法可以被对象多次调用;

注意:多态分类

运行时多态(重写时多态)

父类引用接收子类的对象

编译时多态

方法重载方法名相同形参列表不同

7.父类和子类中,静态代码块、代码块、构造方法、普通方法执行顺序

父类中的静态变量和静态代码块

子类中的静态变量和静态代码块

父类中的普通变量和代码块-构造方法

子类中的普通变量和代码块-构造方法

变量和代码块的执行与声明顺序有关,变量一般声明在代码块前

8.修饰符修饰范围

9.子类只能继承父类非private的方法

10.instanceof

instanceof是一个二元操作符,用法是:booleanresult=ainstanceofClassA,即判断对象a是否是类ClassA的实例,如果是的话,则返回true,否则返回false。向下转型,需要先向上转型,而且只能转化为本类对象

11.抽象方法不可以被private修饰

12.抽象类和接口的比较

13.匿名内部类常用于实现接口或抽象类

14.基本类型的包装类

int-Intergerchar-character

在-~之间的Integer值,用的是原生数据类型int,会在内存里供重用,也就是说这之间的Integer值进行==比较时只是进行int原生数据类型的数值比较,而超出-~的范围,进行==比较时是进行地址及数值比较。

15.Integer.parseInt()和Integer.valueOf()

Integer.parseInt()返回值为基本数据类型

Integer.valueOf()返回值为包装类型

JVM

JVM是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

Java内存区域与内存溢出异常

1、运行时数据区域

根据《Java虚拟机规范(JavaSE7版)》规定,Java虚拟机所管理的内存如下图所示。

1.1程序计数器

内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成

如果线程正在执行一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,这个计数器的值则为(Undefined)。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

1.2Java虚拟机栈

线程私有,生命周期和线程一致。描述的是Java方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(StackFrame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。

局部变量表:存放了编译期可知的各种基本类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型)和returnAddress类型(指向了一条字节码指令的地址)

StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度。OutOfMemoryError:如果虚拟机栈可以动态扩展,而扩展时无法申请到足够的内存。

1.3本地方法栈

区别于Java虚拟机栈的是,Java虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。也会有StackOverflowError和OutOfMemoryError异常。

1.4Java堆

对于绝大多数应用来说,这块区域是JVM所管理的内存中最大的一块。线程共享,主要是存放对象实例和数组。内部会划分出多个线程私有的分配缓冲区(ThreadLocalAllocationBuffer,TLAB)。可以位于物理上不连续的空间,但是逻辑上要连续。

OutOfMemoryError:如果堆中没有内存完成实例分配,并且堆也无法再扩展时,抛出该异常。

1.5方法区

属于共享内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

1.6运行时常量池

属于方法区一部分,用于存放编译期生成的各种字面量和符号引用。编译器和运行期(String的intern())都可以将常量放入池中。内存有限,无法申请时抛出OutOfMemoryError。

1.7直接内存

非虚拟机运行时数据区的部分

在JDK1.4中新加入NIO(NewInput/Output)类,引入了一种基于通道(Channel)和缓存(Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。可以避免在Java堆和Native堆中来回的数据耗时操作。OutOfMemoryError:会受到本机内存限制,如果内存区域总和大于物理内存限制从而导致动态扩展时出现该异常。

垃圾回收器与内存分配策略

Java内存模型与线程

线程安全与锁优化

......

JavaEE

JavaEE,Java平台企业版(JavaPlatformEnterpriseEdition),之前称为Java2Platform,EnterpriseEdition(J2EE),年3月更名为JakartaEE(这个名称应该还没有得到群众认可)。狭义的JavaEE是Sun公司为企业级应用推出的标准平台,用来开发B/S架构软件,可以说是一个框架,也可以说是一种规范。

广义的JavaEE包含各种框架,其中最重要的就是Spring全家桶。Spring诞生之初是为了改进JavaEE开发的体验,后来逐渐成为了JavaWeb开发的实际标准。后面的文章里,会对Spring进行进一步的说明。

JavaEE与JavaSE的区别与联系

JavaEE是在JavaSE的基础上构建的,是对JavaSE的扩展,增加了一些更加便捷的应用框架。

除了EE和SE,还有为移动端而生的JavaME,但目前应用不算广泛。三者的关系可以用下图概括:

JDBC

Java数据库连接,(JavaDatabaseConnectivity,JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

JNDI

Java命名和目录接口(JavaNamingandDirectoryInterface,JNDI),是Java的一个目录服务应用程序界面(API),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。

EJB

企业级JavaBean(EnterpriseJavaBean,EJB)是一个用来构筑企业级应用的服务器端可被管理组件。不过这个东西在Spring问世后基本凉凉了,知道是什么就行。

Servlet

Servlet(ServerApplet),是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

JSP

JSP(全称JavaServerPages)是由Sun公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。

常见的主流数据库(DBMS)

MySQL数据库

  MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQLAB开发、发布和支持。MySQLAB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQLAB的注册商标。   MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。

MicrosoftSQLServer数据库

????SQLServer是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。????目前最新版本是SQLServer,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。????SQLServer提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。

Oracle数据库

????OracleDatabase,又名OracleRDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。

Postgresql数据库

????PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL,版本4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发PostgreSQL,不管是私用、商用、还是学术研究使用。????PostgreSQL是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如MySQL和Firebird),和专有系统(比如Oracle、Sybase、IBM的DB2和MicrosoftSQLServer)之外的另一种选择。

JavaWeb框架之Spring

Spring是一个开源的轻量级开发框架,是为了解决企业应用程序的复杂性而创建的。

EJB时代,企业级应用开发困难。Spring设计初衷是使JavaEE更加容易,为JavaBean提供配置框架,使程序易于测试,设计目标是简单易用,与应用程序解耦,致力于集成其他解决方案,而不是竞争。Spring不仅仅限于服务器端的开发,从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中学习受益。

Spring包括Core+Context,Aop,Dao,ORM,Web(SpringMVC),JEE等模块。

两大核心模块——IoC

IoC(InversionofControl)控制反转,对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系。spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。

IOC,字面理解是控制反转,即对象的控制权被反转了(是什么)。之前一个对象中依赖另一个对象,需要自己new出来,当对象间的依赖关系非常复杂时,这个过程就变得很繁琐,并且代码间的耦合会很高。现在可以通过Ioc容器来管理控制对象的生成,可以把对象的实例化过程简单化,代码间解耦(为什么)。具体可以从DI(DependencyInjection)DL(DependencyLookup)两个角度理解Ioc。DI中注入的方式包括属性,构造器,setter注入,DL含义是通过容器的API来查找所依赖的资源和协作对象,从Ioc容器维护的beanmap中取出来(怎么做)

两大核心模块——Aop

Aop就是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

为什么?利用Aop可以对业务逻辑的各部分进行隔离,从而降低各部分耦合度,提高程序的可重用性,提高开发效率

怎么做?spring中面向切面变成的实现有两种方式,一种是动态代理,一种是CGLIB,动态代理必须要提供接口,而CGLIB实现是有继承,即,

接口+实现类,spring采用jdk的动态代理实现,

实现类,spring采用cglib字节码增强实现。

当然也可以通过集成AspectJ可以更方便的实现自定义切面。SpringAop支持前/后/环绕等多种类型的通知机制:

before(前置通知):在一个方法之前执行的通知。

after(最终通知):当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

after-returning(后置通知):在某连接点正常完成后执行的通知。

after-throwing(异常通知):在方法抛出异常退出时执行的通知。

around(环绕通知):在方法调用前后触发的通知。

优点

轻量级的容器框架没有侵入性

使用IoC容器更加容易组合对象直接间关系,面向接口编程,降低耦合

Aop可以更加容易的进行功能扩展,遵循ocp开发原则

创建对象默认是单例的,不需要再使用单例模式进行处理

基于IocAop,Spring提供了事务管理,SpringWeb,日志等一系列经典应用

缺点:

业务功能依赖spring特有的功能,依赖与spring环境

小C说:Java基础能力分为以上五个板块,各个板块下又细分为许多知识点,小C针对每个知识点精选了CSDN博文供猿粉学习,如果你感兴趣的话,请戳“阅读原文”收获更多学习内容~

一条预告:明天的学习主题是Python!




转载请注明:http://www.jiaju1314.com/xxzl/xxzl/14515.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了