【Java】JAVA知识总结浅析

        Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景,JDK与JDBC,Java Web技术,Spring Boot系列,以及MyBatis框架的基本实现,最后还将讨论Java在大数据、人工智能、嵌入式和Android等领域的应用。

1. 编程思想

1.1 面向过程编程(Procedural Programming)

        面向过程编程是一种以过程为中心的编程方法,强调将程序分解为一系列的函数或过程。每个过程负责完成特定的任务。虽然这种方法简单易懂,但在大型项目中,管理和维护代码变得困难。

特点:

  • 功能模块化,代码重用性低。
  • 数据与操作分离,容易导致数据不一致。

1.2 面向对象编程(Object-Oriented Programming, OOP)

        面向对象编程是一种基于“对象”的编程思想,对象是封装了数据和操作的实体。OOP通过类来定义对象,强调数据与行为的结合,具有更好的扩展性和可维护性。

基本原则:

  • 封装:隐藏对象的内部实现,提供公开的接口。
  • 继承:允许新类从现有类继承属性和方法。
  • 多态:同一操作可以作用于不同对象,表现出不同的行为。

2. Java的发展历史

Java由James Gosling及其团队于1995年首次发布,经过多个版本的迭代,逐步演变为一个强大的开发平台。

主要版本及特点

  • Java 1.0:首次发布,提供了基本的语法和API。
  • Java 2 (1.2):引入Swing GUI库和集合框架。
  • Java 5 (1.5):引入泛型、枚举、注解等新特性,增强代码灵活性。
  • Java 8:引入Lambda表达式和Stream API,支持函数式编程。
  • Java 11:长期支持版本(LTS),引入许多新特性,如本地化的HTTP客户端。

3. JVM原理

Java虚拟机(JVM)是Java程序运行的核心,负责将字节码转换为机器码。JVM具有以下功能:

  • 加载:从文件或网络加载字节码。
  • 验证:确保字节码的安全性和有效性。
  • 执行:通过解释或即时编译(JIT)执行字节码。
  • 内存管理:负责内存的分配和垃圾回收。

4. 数据类型

Java的数据类型分为两类:

4.1 基本数据类型

  • 整数类型:byteshortintlong
  • 浮点类型:floatdouble
  • 字符类型:char
  • 布尔类型:boolean

4.2 引用数据类型

包括类、接口、数组等。

5. Java SE与Java EE

5.1 Java SE(Standard Edition)

        Java SE是Java的标准版本,包含核心的Java库和API,适用于桌面应用和小型系统的开发。

5.2 Java EE(Enterprise Edition)

        Java EE是为大型企业应用设计的扩展版本,提供大量额外的API和工具,如Servlet、JSP、EJB等,适用于Web和企业级应用的开发。

6. 应用场景

Java被广泛应用于多个领域,包括:

  • 企业应用:使用Java EE构建复杂的企业级应用。
  • Web开发:使用Java Web技术(如Spring, JSP, Servlets)开发动态网站。
  • 移动应用:Android平台主要使用Java进行应用开发。
  • 大数据:许多大数据框架(如Hadoop)使用Java编写。
  • 人工智能:Java被用于机器学习和AI相关的应用。
  • 嵌入式系统:Java在一些嵌入式设备中也有所应用。

7. JDK

7.1 JDK(Java Development Kit)

        Java开发工具包,包含开发Java应用所需的工具和库,如编译器(javac)、JVM和调试工具。

8. Java Web技术

Java Web技术涵盖了多种框架和工具:

  • Servlet:用于处理请求和响应的服务器端组件。
  • JSP(JavaServer Pages):用于创建动态网页的技术。
  • Spring Boot:简化Spring应用的开发,提供快速配置和自动化设置。

9. Spring Boot系列全家桶

        Spring Boot是一个快速开发框架,提供了开箱即用的配置,适合快速构建微服务架构。它常与以下组件一起使用:

  • Spring MVC:处理请求的控制器框架。
  • Spring Data JPA:简化数据库操作。
  • Spring Security:提供安全性控制。
  • Spring Cloud:用于构建分布式系统。

10. MyBatis基本实现

下面是一个简单的MyBatis基本功能实现示例:

10.1 Maven依赖

<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> 
</dependency>

10.2 Mapper接口

public interface UserMapper { User selectUser(int id);
}

10.3 XML配置

<mapper namespace="com.example.UserMapper"><select id="selectUser" resultType="User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>

10.4 使用MyBatis

SqlSessionFactory sqlSessionFactory = ...; // 创建 SqlSessionFactory
try (SqlSession session = sqlSessionFactory.openSession()) {UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.selectUser(1);
}

11. Java网络编程

Java提供了丰富的网络编程API,支持TCP/IP通信、HTTP请求等。常用的类包括:

  • Socket:用于建立TCP连接。
  • ServerSocket:用于创建服务器端Socket。
  • URLConnection:用于发送HTTP请求和接收响应。

示例代码

// TCP 客户端示例
try (Socket socket = new Socket("localhost", 8080)) {PrintWriter out = new PrintWriter(socket.getOutputStream(), true);out.println("Hello Server");
}// TCP 服务器示例
try (ServerSocket serverSocket = new ServerSocket(8080)) {try (Socket clientSocket = serverSocket.accept()) {BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));String message = in.readLine();System.out.println("Received: " + message);}
}

12. Java在其他领域的应用

Java因其平台无关性和强大的库支持,在多个领域都有广泛应用:

  • 大数据:Hadoop和Spark等大数据框架主要使用Java进行开发。
  • 人工智能:Java可用于构建机器学习模型和处理大规模数据集。
  • 嵌入式系统:Java在一些嵌入式设备中得到应用,如智能家居和物联网设备。
  • Android开发:Java是Android应用开发的主要语言之一,提供了丰富的API支持。

13.开源项目汇总

项目名称开源协议使用场景商业化应用互联网公司应用情况代码风格学习成本社区活跃度
Spring FrameworkApache 2.0企业级应用开发多数金融和电商应用Netflix, Amazon, Alibaba清晰简洁
Apache HadoopApache 2.0大数据处理数据分析与存储Yahoo, LinkedIn, Facebook模块化
Apache KafkaApache 2.0实时数据流处理消息队列服务LinkedIn, Uber, Spotify简洁明了
Apache FlinkApache 2.0流处理和批处理实时数据分析Alibaba, Netflix清晰简洁
HibernateGNU Lesser GPLORM框架数据库管理JBoss, Red Hat清晰简洁
Apache TomcatApache 2.0Web服务器各类Web应用eBay, LinkedIn模块化
Spring BootApache 2.0微服务架构快速开发RESTful APINetflix, Airbnb清晰简洁
JUnitEclipse Public License单元测试框架测试驱动开发Google, IBM清晰简洁
ElasticsearchApache 2.0搜索引擎及分析日志分析、搜索服务Netflix, GitHub清晰简洁
Apache MavenApache 2.0项目管理与构建Java项目构建管理Google, LinkedIn模块化
JHipsterApache 2.0Web应用快速生成企业级应用Decathlon, Carrefour清晰简洁
MockitoMIT单元测试模拟测试驱动开发Google, Netflix简洁明了
NettyApache 2.0网络通信框架高性能网络应用Twitter, Apple清晰简洁
Apache SolrApache 2.0企业搜索平台搜索引擎CNET, AOL模块化
GradleApache 2.0项目构建工具自动化构建LinkedIn, Netflix清晰简洁
Log4jApache 2.0日志记录应用日志管理IBM, Yahoo简洁明了
VaadinApache 2.0Web UI框架企业管理系统SAP, Vaadin Ltd清晰简洁
QuartzApache 2.0任务调度定时任务管理eBay, LinkedIn清晰简洁
JerseyApache 2.0RESTful Web服务Web API开发eBay, PayPal清晰简洁
Apache CamelApache 2.0企业集成框架系统整合Red Hat, Cisco模块化
GrailsApache 2.0Web应用开发企业级Web应用Netflix, LinkedIn清晰简洁
ThymeleafApache 2.0服务器端模板引擎Web应用视图层eBay, Amazon模块化
Apache POIApache 2.0操作Microsoft文档文档处理IBM, Oracle清晰简洁
FlywayApache 2.0数据库版本控制数据库迁移管理LinkedIn, Box清晰简洁
OpenFeignApache 2.0声明式REST客户端服务调用Netflix, Alibaba清晰简洁
LombokMIT减少样板代码提升开发效率Google, Atlassian清晰简洁
MicronautApache 2.0微服务框架快速构建微服务Object Computing Inc.清晰简洁
Apache PulsarApache 2.0分布式消息系统实时数据处理Yahoo, Verizon模块化
Apache CassandraApache 2.0分布式数据库大规模数据存储Netflix, Instagram模块化
RedisBSD License内存数据结构存储高性能缓存GitHub, Twitter简洁明了
PrometheusApache 2.0监控与告警系统系统监控SoundCloud, DigitalOcean清晰简洁
GrafanaAGPLv3数据可视化监控面板eBay, PayPal清晰简洁
TensorFlowApache 2.0机器学习框架深度学习模型训练Google, Airbnb模块化
PyTorchBSD License深度学习框架AI模型开发Facebook, Tesla清晰简洁
Apache AirflowApache 2.0工作流调度数据管道管理Airbnb, Spotify模块化
KubernetesApache 2.0容器编排微服务部署管理Google, Red Hat模块化
DockerApache 2.0容器化应用应用虚拟化Spotify, PayPal模块化
Apache NiFiApache 2.0数据流管理数据集成与传输Hortonworks, Cloudera模块化
Apache ZeppelinApache 2.0数据分析笔记本数据可视化与分析Intel, IBM清晰简洁
Apache ZeppelinApache 2.0数据分析笔记本数据可视化与分析Intel, IBM清晰简洁
HashiCorp TerraformMozilla Public License 2.0基础设施即代码云资源管理Shopify, Slack清晰简洁
OpenShiftApache 2.0Kubernetes平台企业级Kubernetes解决方案Red Hat, IBM模块化
JupyterBSD License数据科学笔记本科学计算与数据分析NASA, Bloomberg清晰简洁
Spring CloudApache 2.0微服务架构支持微服务相关功能Netflix, Alibaba清晰简洁
Apache SupersetApache 2.0数据可视化与探索BI工具Airbnb, Lyft清晰简洁
CheckstyleGNU Lesser GPLJava代码风格检查代码质量管理Google, LinkedIn简洁明了
SonarQubeGNU Lesser GPL代码质量检测代码审查与管理eBay, LinkedIn清晰简洁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440951.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运用MinIO技术服务器实现文件上传——利用程序上传图片(二 )

在上一篇文章中&#xff0c;我们已经在云服务器中安装并开启了minio服务&#xff0c;本章我们将为大家讲解如何利用程序将文件上传到minio桶中 下面介绍MinIO中的几个核心概念&#xff0c;这些概念在所有的对象存储服务中也都是通用的。 - **对象&#xff08;Object&#xff0…

六、索引的数据结构

文章目录 1. 为什么使用索引2. 索引及其优缺点2.1 索引概述2.2 优点2.3 缺点3. InnoDB中索引的推演3.1 索引之前的查找3.1.1 在一个页中的查找3.1.2 在很多页中查找3.2 设计索引3.2.1 一个简单的索引设计方案3.2.2 InnoDB中的索引方案3.3 常见索引概念3.3.1 聚簇索引3.3.2 二级…

Linux相关概念和易错知识点(12)(命令行参数、环境变量、本地变量)

1.命令行参数 &#xff08;1&#xff09;main函数的参数int argc和char* argv[]是什么&#xff1f; main函数可以带参数&#xff0c;即int main(int argc, char* argv[])&#xff0c;(int argc, char* argv[])叫做命令行参数列表&#xff0c;int argc叫参数的个数&a…

RL_足球教练

文章目录 前言什么是 Agent?定义Agent的组成部分Agent的目标 什么是 End-to-End Approach?定义特点优势与挑战示例 Fuzzy Bayesian Reinforcement Learning (RB-RL)系统组成部分系统工作原理 贝叶斯方法基础_条件概率定义 贝叶斯定理示例敏感性 Q-learning强化学习算法Q-lear…

Pandas -----------------------基础知识(八)

Pandas内置Matplotlib 加载数据 import pandas as pdanscombe pd.read_csv(/root/pandas_code_ling/data/e_anscombe.csv) anscombe dataset_1 anscombe[anscombe[dataset]I] dataset_1dataset_1.describe() 提供数据 dataset_1 anscombe[anscombe[dataset]I] dataset_2 an…

【SQL】DDL语句

文章目录 1.SQL通用语法2.SQL的分类3.DDL3.1数据库操作3.2 表操作3.2.1 表操作--数据类型3.2.2 表操作--修改3.2.3 表操作--删除 SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。…

C++模板编程:深入理解分离编译的挑战与解决方案

文章目录 前言&#x1f34e;一、非类型模板参数1.1 基本概念1.2 非类型模板参数的语法1.3 非类型模板参数的限制1.4 非类型模板参数的应用1.5 typename关键字 &#x1f34e;二、类模板特化2.1 类模板特化的基本概念2.2 类模板特化的限制和规则2.3 类模板特化的应用 &#x1f34…

输电线路缺陷图像检测数据集,导线散股,塔材锈蚀两类,分别为581张和1407张,标注为xml和txt格式 1988张

输电线路缺陷图像检测数据集&#xff0c;分为导线散股&#xff0c;塔材锈蚀两类&#xff0c;分别为581张和1407张&#xff0c;标注为xml和txt格式 数据集名称 输电线路缺陷图像检测数据集 (Transmission Line Defect Detection Dataset) 数据集概述 该数据集是一个专门用于训…

查看 git log的过程中看到 :说明日志输出可能超出屏幕大小,系统进入了分页模式

在命令行提示符中&#xff0c;通常 : 表示系统等待进一步的输入。如果你在查看 git log 的过程中看到 :&#xff0c;说明日志输出可能超出屏幕大小&#xff0c;系统进入了分页模式&#xff0c;默认使用 less 命令查看内容。 此时你可以&#xff1a; 按 q 退出日志查看。按 En…

【图像处理】多幅不同焦距的同一个物体的平面图象,合成一幅具有立体效果的单幅图像原理(一)

合成一幅具有立体效果的单幅图像&#xff0c;通常是利用多个不同焦距的同一物体的平面图像&#xff0c;通过图像处理技术实现的。以下是该过程的基本原理&#xff1a; 1. 立体视觉原理 人眼的立体视觉是通过双眼观察物体的不同视角而获得的。两只眼睛的位置不同&#xff0c;使…

SSH -L 代理与反向代理转发详解

简介&#xff1a;SSH -L 选项用于设置本地端口转发&#xff0c;而反向代理转发则允许远程主机访问本地服务。本文将介绍如何使用 SSH -L 实现本地端口转发和反向代理转发&#xff0c;并提供示例以帮助您理解和应用这些技术。 历史攻略&#xff1a; Centos&#xff1a;设置代理…

百度文心智能体平台开发萌猫科研加油喵

百度文心智能体平台开发萌猫科研加油喵 在科研的道路上&#xff0c;研究生们常常面临着巨大的压力和挑战。为了给这个充满挑战的群体带来一些鼓励和温暖&#xff0c;我借助百度文心智能体平台开发了一个独特的智能体 《萌猫科研加油喵》。 一、百度文心智能体平台介绍 百度文…

设计模式之适配器模式(通俗易懂--代码辅助理解【Java版】)

文章目录 设计模式概述1、适配器模式2、适配器模式的使用场景3、优点4、缺点5、主要角色6、代码示例1&#xff09;UML图2&#xff09;源代码&#xff08;1&#xff09;定义一部手机&#xff0c;它有个typec口。&#xff08;2&#xff09;定义一个vga接口。&#xff08;3&#x…

如何用python抓取豆瓣电影TOP250

1.如何获取网站信息&#xff1f; &#xff08;1&#xff09;调用requests库、bs4库 #检查库是否下载好的方法&#xff1a;打开终端界面&#xff08;terminal&#xff09;输入pip install bs4, 如果返回的信息里有Successfully installed bs4 说明安装成功&#xff08;request…

操作系统 | 学习笔记 | 王道 | 3.1 内存管理概念

3 内存管理 3.1 内存管理概念 3.1.1 内存管理的基本原理和要求 内存可以存放数据&#xff0c;程序执行前需要先放到内存中才能被CPU处理—缓和cpu和磁盘之间的速度矛盾 内存管理的概念 虽然计算机技术飞速发展&#xff0c;内存容量也在不断扩大&#xff0c;但仍然不可能将所有…

Python面向对象基础

文章目录 1. 什么是面向对象1.1 常见的编程思想1.2 面向过程是什么1.3 什么是面向对象1.4 封装1.5 继承1.6 多态 2. 面向对象的概念2.1 两个重要概念&#xff1a;类和对象2.2 类2.3 对象2.4 self关键字 3. 对象属性3.1 什么是属性3.2 类外面访问属性3.3 类内部获取属性 1. 什么…

分治算法(4)_快速选择_库存管理III_面试题

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 分治算法(4)_快速选择_库存管理III_面试题 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f…

esp8266 at指令链接wifi时一直connect disconnest

那是你的连接wifi的名字密码有误或者热点有问题&#xff0c;看看热点是不是把设备拉入黑名单或者设置为5G或者连了校园网或者设置了最多链接设备

sqli-labs靶场第三关less-3

sqli-labs靶场第三关less-3 1、确定注入点 http://192.168.128.3/sq/Less-3/?id1 http://192.168.128.3/sq/Less-3/?id2 有不同回显&#xff0c;判断可能存在注入&#xff0c; 2、判断注入类型 输入 http://192.168.128.3/sq/Less-3/?id1 and 11 http://192.168.128.3/sq/L…

【js逆向学习】极志愿 javascript+python+rpc

JSRPC使用方式 逆向目标逆向过程逆向分析1、什么是 websocket2、websocket的原理3、总体过程3.1 环境说明3.2 python服务端代码3.3 python客户端代码 4、Sekiro-RPC4.1 执行方式4.2 客户端环境4.3 参数说明4.4 SK API4.5 python代码调试4.6 代码注入流程 逆向总结 逆向目标 网…