java术语概念

本文详细介绍了Java术语,包括JSE、J2EE、OOP等,以及相关的编程概念,如API、HTML、XML、JSP等。此外,文章讨论了数据交换格式XML和JSON的对比,以及强类型语言和弱类型语言的区别。还涵盖了Spring Framework、MyBatis等常用框架,并对Thymeleaf模板引擎、Maven项目管理工具以及Cookie和Session进行了阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSE

Java Standard Edition(Java标准版)

J2EE

abbr. Java2平台企业版(Java 2 Platform Enterprise Edition)

OOP

abbr. 面向对象编程(Object Oriented Programming)

满足面向对象编程的语言,一般会提供类、封装、继承、多态等语法和概念来辅助我们进行面向对象编程。所谓的面向对象就是将我们的程序模块化,对象化,把具有相同特性和行为的对象抽象为一个类,也就是把具体事物的属性和通过这些属性来实现一些动作的具体方法放到一个类里面。当我们需要调用类里面的属性和方法时,我们可以通过抽象出来的类实例化一个对象,利用具体的对象来调用属性和方法。

OOP语言提供了类与类之间纵向的关系(继承、接口),AOP语言提供了类与类之间横向的关系(切面,切点)。

POP

面向过程编程(Process oriented programming)。

面向过程编程,它是以功能为中心来进行思考和组织的一种编程方式,强调的是系统的数据被加工和处理的过程。面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 在早期计算机配置低、内存小为了节省内存空间,大都采用面向过程编程。

API

​ abbr. API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问原码,或理解内部工作机制的细节。说得更加通俗易懂一些,别人写好的代码,封装好的函数和类,或者编译好的程序,提供给你使用,就叫做API。你使用了别人代码(或者程序)中的某个函数、类、对象,就叫做使用了某个API。

HTML

​ abbr. 超文本标记语言(Hypertext Markup Language)

HTML 不是一种编程语言,而是一种标记语言 ,是网页制作所必备的。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分、和“主体”部分,其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

XML

​ abbr. 可扩展标记语言(Extensive Markup Language)

XML 是一种标记语言,很类似于 HTML;它的设计宗旨是传输数据,而非显示数据;XML 标签没有被预定义,我们需要自行定义标签;XML 被设计为具有自我描述性;它是 W3C,即 万维网联盟(World Wide Web Consortium)的推荐标准。

XML和HTML的比较:

XML 不是 HTML 的替代,XML是对HTML的补充。XML 和 HTML 为不同的目的而设计:XML 被设计为传输和存储数据,其焦点是数据的内容。HTML 被设计用来显示数据,其焦点是数据的外观。HTML 旨在显示信息,而 XML 旨在传输信息。

JSP

​ abbr. java服务器页面(Java Server Pages)

JSP全称Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet。JSP从用户角度看待 ,它就是一个网页 ; 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个简化的Servlet。

JSP是一种建立在Servlet规范功能上的动态网页技术,在网页文件中嵌入Java代码和JSP标记用于产生动态内容。

所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。

EL

expression languages(表达式语言)

以MVC模式设计程序,JSP只是视图view,视图的任务就是显示响应,而不是在JSP中做任何关于程序控制和业务逻辑的事情。所以在JSP页面中应该尽可能少的、或者是完全不出现Java代码。我们在开发JSP的时候,经常要内嵌很多java语句,这会使得页面看起来很乱,而且如果直接内嵌java语句的话,通常要写很多,为了简化java代码,就出现了el表达式。

el表达式语言是在JSP2.0版本中引入的新特性,它用于JSP文件中的数据访问,例如${username}。el表达式通常和jstl标签库一起使用。

JSTL

abbr. JSP标准标签库(JavaServer Pages Standard Tag Library)

​ JSTL是一个不断完善的开放源代码的JSP标签库。我们可以在JSP页面上编写各种标签来完成一些复杂的功能,它出现的目的是为了减少JSP页面上的Java代码量,让JSP页面更好维护。它的底层本质上运行的还是Java代码。

它的优点有:

1、在JSP页面里使用JSTL标签可以使美工像处理HTML标签一样对待java代码,增加了可读性。

2、将业务封装到JSTL里可以很方便的重用业务代码。

3、将数据与显示分离。

4、简化了JSP的Web应用系统的开发,并且使得JSP页面的编程风格统一、易于维护。

5、可以对其进行自定义扩展!

CSS

abbr. 层叠样式表(Cascading Style Sheets)。

是一种用来表现HTML或XML等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

JSON

abbr. (JavaScript Object Notation)

json是一种数据格式,不是一种编程语言。

json是基于JavaScript语言的轻量级的数据交换格式,可以简化表示复杂数据结构的工作量。json采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成。支持多种语言包括C, C++, C#, Java, JavaScript等)。

简单来说,JSON就是一串字符串 ,只不过元素会使用特定的符号来标注。{} 大括号表示对象 , [] 中括号表示数组。json中的数据以键值对的形式存在,

例如:{ “name”: “zhanglu”,“age”: 25}

AJAX

ajax(Asynchronous JavaScript and XML)异步 JavaScript 和 XML

是一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 Ajax)如果需要更新内容,必须重新加载整个网页页面。

SpringFramework

Spring是一个开源框架,它为简化企业级开发而生。在开发中,Spring框架从程序员手中接管了对象的创建,Spring根据配置文件或者扫描注解,得到类、组件之间的关系,并创建对象进行注入,这个过程不需要程序员手动创建并赋值,从而降低了耦合性,开发的时候也不需要理会这些与功能代码实现无关的部分,这就是IOC/DI(控制反转/依赖注入)。基于IOC/DI,Spring框架的不同模块提供了各种功能,为应用提供了AOP功能、持久层的支持,为Web层提供了SpringMVC以及与其他框架的整合使用等等。

MyBatis

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory再根据配置,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

springmvc

springmvc全称是spring web mvc,是spring框架的一部分,是一个mvc的框架。JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。SpringMVC是Web层的框架,Spring是业务层的框架,MyBatis是持久层的框架。MVC 是一种使用(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 分层有助于管理复杂的应用程序,因为我们可以在一个时间内专门关注某一个方面。例如,我们可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

IOC

inversion of control(控制反转)。

IOC不是一种技术,而是一种设计思想,一个重要的面向对象编程的法则,它能指导我们如何设计出低耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是低耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实际的应用程序代码分离。其中一个特点就是通过文本的配置文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。

其实IOC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IOC/DI思想中,应用程序就变成被动的了,被动的等待IOC容器来创建并注入它所需要的资源了。

DI

dependency injection(依赖注入)

IOC和DI是SpringFramework的两个重要组成部分。IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

AOP

abbr. 面向切面编程(Aspect-Oriented Programming)

AOP代表的是一个横向的关系,它利用一种称为“横切”的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即切面。所谓“切面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于程序未来的可操作性和可维护性。

一个面向切面编程的简单例子:比如在不改变目标类中源代码的情况下给某包下所有类中以insert开头的方法添加事务管理。

pom

project object model (项目对象模型,通过xml格式保存的pom.xml文件)

该文件的作用是:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。

Redis

REmote DIctionary Server(Redis)

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

为了保证效率,提高数据的读写速度,redis的数据都是缓存在内存中。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,实现数据的持久化(即使内存清空,数据也不会丢失)。并且在此基础上实现了master-slave(主从)同步。

什么是redis的主从同步?数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

lucene

n. lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。

solr

全称是:Searching On Lucene Replication

solr是基于lucene的搜索引擎。

提到solr,我们首先要了解的是lucene:

lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎,又或者说是一个独立的企业级搜索应用服务器。

它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。总之,Solr是一个可扩展的,可部署的,搜索/存储引擎。它优化搜索大量以文本为中心的数据。

搜索功能数据库本身就支持啊,干嘛还要搞个solr?这是有原因的:

1、 solr本身也可以看成数据库,(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜搜的部分交给solr,就像我们在京东首页所看到的商品信息,并不是来自数据库,而是来源于sorl的索引库。

2、 数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让更专业的solr来做搜索功能。

数据交换格式XML和JSON对比

1.简介:

XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。具体的可以问Google或百度。相比之JSON这种轻量级的数据交换格式,XML可以称为重量级的了。

JSON : JavaScript Object Notation 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

2.对比

1)数据交换格式中XML是重量级的,JSON是轻量级的。这个体现在解析上。

XML目前设计了三种解析方式:DOM、SAX和pull;

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。

所以,JSON和XML的轻/重量级的区别在于:JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

2)数据交换格式比较之关于数据格式编码及解析的难度:

在编码上,虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。

主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

在解析上,在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端解析XML,都常常导致复杂的代码,极低的开发效率。

同XML或HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。

JSON格式目前在Web Service中推广还属于初级阶段,没有XML那么通用性。在web serivice应用中,至少就目前来说XML仍有不可动摇的地位。

强类型语言和弱类型语言

强类型和弱类型主要是站在变量类型处理的角度进行分类的。

强类型是指不允许隐式变量类型转换,弱类型则允许隐式类型转换。

所以,关键在于变量数据类型的转换。

什么叫隐式类型转换?

隐式是指源码中没有明显的类型转换代码,也就是说,一个变量,你可以直接给他赋值字符串,也可以直接给他赋值数值,你还可以直接让字符串类型的变量和数值类型的变量相加,虽然得出的最终结果未必是你想象的那样,但一定不会报错。

这就是隐式类型转换,弱类型语言,如javascript、php。

Java是强类型语言,不允许隐式类型转换,也就是说,如果你需要拿一个字符串变量当做整型来用,你必须显式地将变量类型转换好。

换句话说:

强类型语言,当你定义一个变量是某个类型,如果不经过代码显式转换(强制转化)过,它就永远都是这个类型,如果把它当做其他类型来用,就会报错

弱类型语言,你想把这个变量当做什么类型来用,就当做什么类型来用,语言的解析器会自动(隐式)转换。

比较

弱类型显然让开发者更省力一些,一些数据类型不是很复杂的场景中基本可以不用关注数据类型的问题,这可以提高开发者的业务处理专注力,提升逻辑开发效率。

但同样,弱类型也因为它的特性,使开发者在开发过程中对变量类型的检测力度不够大,由此提高数据类型方面问题出现的可能性。

另外,弱类型语言的运行效率,内存利用率显然也比不上强类型语言。因为弱类型语言在运行过程中,存在变量类型的隐式转换,多了一些需要执行的操作,并且,分配内存时,会考虑通用而多分配一些,而强类型则专门为各种类型的变量量身定做地分配内存,内存利用率显然比弱类型会高。

Thymeleaf 模板引擎

Thymeleaf 是 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理HTML,XML,JavaScript,CSS 甚至纯文本。Spring Boot 中使用 Thymeleaf 模板引擎时非常简单,因为 Spring Boot 已经提供了默认的配置,比如解析的文件前缀,文件后缀,文件编码,缓存等等,程序员需要的只是写 html 中的内容即可。

市面上主流的 Java 模板引擎有:JSP、Velocity、Freemarker、Thymeleaf。

JSP本质也是模板引擎,Spring Boot 官方推荐使用 “Thymeleaf”模板引擎 而不是 JSP模板引擎。

在企业里如果用到Thymeleaf模板引擎,那么传统的jsp模板引擎可以忽略不再使用。传统的jsp模板引擎对后台开发人员很友好,但不利于前台调试人员的工作。前台人员无法直接看到JSP页面的全部内容(因为有一些EL表达式,JSTL标签库),需要一些处理才能让网页正常的显示,再对页面内容进行调试,甚至有时候需要后台人员自己调试页面。而使用Thymeleaf模板引擎则很好的规避了这一缺点,前台人员可以直接在本地打开html页面,在其中写需要展示的内容以及进行相应的调试,页面完成后直接交给后台开发人员,后台开发人员可以直接在html页面中添加需要的动态内容,最终以html文件作为展示给用户的前端页面。

Maven

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具**。**Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。

tomcat和apache的区别

\1. Tomcat是由Apache推出的一款免费开源的Servlet容器,可实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。

\2. Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,在处理静态Html上的能力略逊一筹。

\3. Apache是Web服务器(静态解析,如HTML),侧重于HTTP Server,但本身只支持Html静态网页,对ASP、PHP、JSP等动态网页就不行。

\4. Tomcat是java应用服务器,是一个servlet(jsp也翻译成servlet)容器,可以认为是Apache的扩展,但它可以独立于Apache运行,支持JSP和Servlet。

\5. Apache可以单向连接Tomcat,访问Tomcat资源,反之则不行,但它们可在一台服务器上进行集成。

打个比方:Apache是一辆卡车,上面可以装一些东西如html,但是不能装水,要装水必须要有容器(桶),Tomcat就是一个桶(装像Java这样的水),而这个桶也可以不放在卡车上。

Cookie&session

Cookie是把用户的数据写给用户的浏览器,是客户端技术,数据存放在浏览器,数据类型只能是String,而且有大小限制,数据存放不安全。

Session技术把用户的数据写到用户独占的session中,是服务器端技术,会话数据存放在服务器(服务器内存),数据类型任意,没有大小限制,相对安全。

Cookie:当客户端首次请求访问服务器时,服务器先在客户端存放包含该客户的相关信息的Cookie,以后客户端每次请求访问服务器时,都会在HTTP请求数据中包含Cookie,服务器解析HTTP请求中的Cookie,就能由此获得关于客户的相关信息。生命周期:默认是当浏览器关闭时,cookie销毁的。

session的工作原理就是依靠cookie来做支撑,第一次使用request.getSession()时session被创建,并且会为该session创建一个独一无二的sessionid存放到cookie中,然后发送会浏览器端,浏览器端每次请求时,都会带着这个sessionid,服务器就会认识该sessionid,知道了sessionid就找得到哪个session。以此来达到共享数据的目的。 这里需要注意的是,session不会随着浏览器的关闭而死亡,而是等待超时时间(默认30分钟)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值