【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 基本数据类型
- 整数类型:
byte
,short
,int
,long
- 浮点类型:
float
,double
- 字符类型:
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 Framework | Apache 2.0 | 企业级应用开发 | 多数金融和电商应用 | Netflix, Amazon, Alibaba | 清晰简洁 | 中 | 高 |
Apache Hadoop | Apache 2.0 | 大数据处理 | 数据分析与存储 | Yahoo, LinkedIn, Facebook | 模块化 | 高 | 高 |
Apache Kafka | Apache 2.0 | 实时数据流处理 | 消息队列服务 | LinkedIn, Uber, Spotify | 简洁明了 | 中 | 高 |
Apache Flink | Apache 2.0 | 流处理和批处理 | 实时数据分析 | Alibaba, Netflix | 清晰简洁 | 中 | 高 |
Hibernate | GNU Lesser GPL | ORM框架 | 数据库管理 | JBoss, Red Hat | 清晰简洁 | 中 | 中 |
Apache Tomcat | Apache 2.0 | Web服务器 | 各类Web应用 | eBay, LinkedIn | 模块化 | 低 | 高 |
Spring Boot | Apache 2.0 | 微服务架构 | 快速开发RESTful API | Netflix, Airbnb | 清晰简洁 | 低 | 高 |
JUnit | Eclipse Public License | 单元测试框架 | 测试驱动开发 | Google, IBM | 清晰简洁 | 低 | 中 |
Elasticsearch | Apache 2.0 | 搜索引擎及分析 | 日志分析、搜索服务 | Netflix, GitHub | 清晰简洁 | 中 | 高 |
Apache Maven | Apache 2.0 | 项目管理与构建 | Java项目构建管理 | Google, LinkedIn | 模块化 | 中 | 中 |
JHipster | Apache 2.0 | Web应用快速生成 | 企业级应用 | Decathlon, Carrefour | 清晰简洁 | 中 | 中 |
Mockito | MIT | 单元测试模拟 | 测试驱动开发 | Google, Netflix | 简洁明了 | 低 | 中 |
Netty | Apache 2.0 | 网络通信框架 | 高性能网络应用 | Twitter, Apple | 清晰简洁 | 中 | 高 |
Apache Solr | Apache 2.0 | 企业搜索平台 | 搜索引擎 | CNET, AOL | 模块化 | 中 | 中 |
Gradle | Apache 2.0 | 项目构建工具 | 自动化构建 | LinkedIn, Netflix | 清晰简洁 | 中 | 高 |
Log4j | Apache 2.0 | 日志记录 | 应用日志管理 | IBM, Yahoo | 简洁明了 | 低 | 中 |
Vaadin | Apache 2.0 | Web UI框架 | 企业管理系统 | SAP, Vaadin Ltd | 清晰简洁 | 中 | 中 |
Quartz | Apache 2.0 | 任务调度 | 定时任务管理 | eBay, LinkedIn | 清晰简洁 | 中 | 中 |
Jersey | Apache 2.0 | RESTful Web服务 | Web API开发 | eBay, PayPal | 清晰简洁 | 中 | 中 |
Apache Camel | Apache 2.0 | 企业集成框架 | 系统整合 | Red Hat, Cisco | 模块化 | 高 | 中 |
Grails | Apache 2.0 | Web应用开发 | 企业级Web应用 | Netflix, LinkedIn | 清晰简洁 | 中 | 中 |
Thymeleaf | Apache 2.0 | 服务器端模板引擎 | Web应用视图层 | eBay, Amazon | 模块化 | 低 | 中 |
Apache POI | Apache 2.0 | 操作Microsoft文档 | 文档处理 | IBM, Oracle | 清晰简洁 | 低 | 中 |
Flyway | Apache 2.0 | 数据库版本控制 | 数据库迁移管理 | LinkedIn, Box | 清晰简洁 | 中 | 中 |
OpenFeign | Apache 2.0 | 声明式REST客户端 | 服务调用 | Netflix, Alibaba | 清晰简洁 | 低 | 中 |
Lombok | MIT | 减少样板代码 | 提升开发效率 | Google, Atlassian | 清晰简洁 | 低 | 中 |
Micronaut | Apache 2.0 | 微服务框架 | 快速构建微服务 | Object Computing Inc. | 清晰简洁 | 中 | 中 |
Apache Pulsar | Apache 2.0 | 分布式消息系统 | 实时数据处理 | Yahoo, Verizon | 模块化 | 高 | 中 |
Apache Cassandra | Apache 2.0 | 分布式数据库 | 大规模数据存储 | Netflix, Instagram | 模块化 | 高 | 高 |
Redis | BSD License | 内存数据结构存储 | 高性能缓存 | GitHub, Twitter | 简洁明了 | 中 | 高 |
Prometheus | Apache 2.0 | 监控与告警系统 | 系统监控 | SoundCloud, DigitalOcean | 清晰简洁 | 中 | 高 |
Grafana | AGPLv3 | 数据可视化 | 监控面板 | eBay, PayPal | 清晰简洁 | 中 | 高 |
TensorFlow | Apache 2.0 | 机器学习框架 | 深度学习模型训练 | Google, Airbnb | 模块化 | 高 | 高 |
PyTorch | BSD License | 深度学习框架 | AI模型开发 | Facebook, Tesla | 清晰简洁 | 高 | 高 |
Apache Airflow | Apache 2.0 | 工作流调度 | 数据管道管理 | Airbnb, Spotify | 模块化 | 中 | 高 |
Kubernetes | Apache 2.0 | 容器编排 | 微服务部署管理 | Google, Red Hat | 模块化 | 高 | 高 |
Docker | Apache 2.0 | 容器化应用 | 应用虚拟化 | Spotify, PayPal | 模块化 | 中 | 高 |
Apache NiFi | Apache 2.0 | 数据流管理 | 数据集成与传输 | Hortonworks, Cloudera | 模块化 | 中 | 中 |
Apache Zeppelin | Apache 2.0 | 数据分析笔记本 | 数据可视化与分析 | Intel, IBM | 清晰简洁 | 中 | 中 |
Apache Zeppelin | Apache 2.0 | 数据分析笔记本 | 数据可视化与分析 | Intel, IBM | 清晰简洁 | 中 | 中 |
HashiCorp Terraform | Mozilla Public License 2.0 | 基础设施即代码 | 云资源管理 | Shopify, Slack | 清晰简洁 | 高 | 高 |
OpenShift | Apache 2.0 | Kubernetes平台 | 企业级Kubernetes解决方案 | Red Hat, IBM | 模块化 | 高 | 高 |
Jupyter | BSD License | 数据科学笔记本 | 科学计算与数据分析 | NASA, Bloomberg | 清晰简洁 | 中 | 高 |
Spring Cloud | Apache 2.0 | 微服务架构支持 | 微服务相关功能 | Netflix, Alibaba | 清晰简洁 | 中 | 高 |
Apache Superset | Apache 2.0 | 数据可视化与探索 | BI工具 | Airbnb, Lyft | 清晰简洁 | 中 | 高 |
Checkstyle | GNU Lesser GPL | Java代码风格检查 | 代码质量管理 | Google, LinkedIn | 简洁明了 | 低 | 中 |
SonarQube | GNU Lesser GPL | 代码质量检测 | 代码审查与管理 | eBay, LinkedIn | 清晰简洁 | 中 | 高 |
相关文章:

【Java】JAVA知识总结浅析
Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景&…...
23-云原生监控系统
├──23-云原生监控系统 | ├──1-Prometheus监控 | | ├──1-二进制方式部署Prometheus监控系统 | | ├──2-二进制方式部署Prometheus监控系统告警 | | ├──3-容器化构建Prometheus监控系统 | | ├──4-容器监控方案CAdvisor | | └──5-k8s监…...

信息安全工程师(40)防火墙技术应用
一、防火墙的基本概念 防火墙是一种网络安全设备,用于监控和控制网络流量,以保护网络免受未经授权的访问和攻击。它可以是装配多张网卡的通用计算机,也可能是通用的物理设备。防火墙通过在网络之间设置访问控制策略,对进出的通信流…...

Liquid AI与液态神经网络:超越Transformer的大模型架构探索
1. 引言 自2017年谷歌发表了开创性的论文《Attention Is All You Need》以来,基于Transformer架构的模型迅速成为深度学习领域的主流选择。然而,随着技术的发展,挑战Transformer主导地位的呼声也逐渐高涨。最近,由麻省理工学院(M…...

Spring Boot 进阶-详解Spring Boot中使用Swagger3.0
在上篇文章中我们介绍了Spring Boot 整合Swagger3.0的一些基础用法,这篇文章中我们来深入学习一下Swagger3.0 还有其他高级用法。 在日常的开发中,为了减少工作量,我们会遇到一种情况,就是将前端的接口与后端的接口编写到同一个代码中,这样也提高了代码的复用率,减少了重…...

Linux平台Kafka高可用集群部署全攻略
🐇明明跟你说过:个人主页 🏅个人专栏:《大数据前沿:技术与应用并进》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Kafka简介 2、Kafka核心优势 二、环境准备 1…...
Android中有哪些布局方式?
Android中的布局方式是实现用户界面设计的基础,通过合理的布局,可以创建出美观且易用的应用程序界面。Android提供了多种布局方式,每种布局方式都有其特定的应用场景和特点。以下是对Android中主要布局方式的详细介绍: 一、线性布…...
Apache Ranger 70道面试题及参考答案
什么是Apache Ranger? Apache Ranger Apache Ranger 是一个用于 Hadoop 生态系统的集中式安全管理框架,旨在为 Hadoop 及相关大数据技术提供全面的安全解决方案。 它具有以下主要特点和功能: 一、访问控制管理 细粒度的权限控制:可以对 Hadoop 生态系统中的各种组件(如 H…...
2024年9月30日--10月6日(ue5肉鸽结束,20小时,共2851小时)
按照月计划,本周把ue肉鸽游戏完成,然后进行ue5太阳系 , 剩余14节,218分钟,如果按照10分钟的视频教程1小时进行完的话,则需要22小时,分布在10月2日-10月6日之间,每天44分钟的视频教程…...

什么是静态加载-前端
什么是前端静态加载 在前端开发中,静态加载是一种常见且重要的技术。简单来说,前端静态加载指的是在页面加载时将所需的资源(如HTML、CSS、JavaScript、图片等)一并加载到用户的浏览器中。这种方式有助于提高页面的加载速度和用户…...

(01)python-opencv基础知识入门(图片的读取与视频打开)
前言 一、图像入门 1.1 读取图像cv.imread() 1.2 数组数据转换cv.cvtColor() 1.3数据窗口展示 1.4图像保存 1.5图像的截取 1.6 图像的比例缩放 二、视频入门 参考文献 前言 OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立,第一个版本于 2000 年问世。Vad…...

quic-go实现屏幕广播程序
最近在折腾quic-go, 突然想起屏广适合用udp实现,而http3基于quic-go,后者又基于udp, 所以玩一下。 先贴出本机运行效果图: 功能(实现)说明: 1.服务器先启动作为共享屏幕方,等待客户端连接上来 2.客户端连接 3.客户…...
C#操作SqlServer数据库语句
操作数据库语句 操作数据库语句需要搭配数据库的连接Connection类 和下达SQL命令Command类 1. ExecuteNonQuery ExecuteNonQuery 方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句,最后执行sql语句的时候可以用一个整形变量来接收,返…...

Linux之实战命令33:mount应用实例(六十七)
简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…...

论文精读:基于概率教师学习的跨域自适应目标检测(ICML2022)
原文标题:Learning Domain Adaptive Object Detection with Probabilistic Teacher 中文标题:基于概率教师学习的域自适应目标检测 代码地址: GitHub - hikvision-research/ProbabilisticTeacher: An official implementation of ICML 2022 p…...

thinkphp 学习记录
1、PHP配置 (点开链接后,往下拉,找到PHP8.2.2版本,下载的是ZIP格式,解压即用) PHP For Windows: Binaries and sources Releases (这里是下载地址) 我解压的地址是:D:\…...
Leetcode 24 Swap Nodes in Pairs
题意:给定一个list of nodes,要求交换相邻的两个节点 https://leetcode.com/problems/swap-nodes-in-pairs/description/ Input: head [1,2,3,4] Output: [2,1,4,3] 首先你需要思考,我要交换两个节点,对于每个节点,向…...

选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器
选择 PDF 编辑器时要考虑什么? 随着技术的出现,您在网上浏览时肯定会遇到一些 PDF 软件。但是,选择PDF 编辑器时需要考虑什么?如果您是重度用户并将在您的工作场所使用它,建议您找到专业、使用方便且能够帮助您完成任…...
33-Golang开发入门精讲
├──33-Golang开发入门精讲 | └──1-Golang语法精讲 | | ├──1-介绍-go语言 | | ├──2-介绍-go语言中的面向对象 | | ├──3-第1阶段:走进Golang | | ├──4-第1阶段:走进Golang | | ├──5-第2阶段:变量与…...

研发中台拆分之路:深度剖析、心得总结与经验分享
背景在 21 年,中台拆分在 21 年,以下为中台拆分的过程心得,带有一定的主观,偏向于中小团队中台建设参考(这里的中小团队指 3-100 人的团队),对于大型团队不太适用,毕竟大型团队人中 …...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...