【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 人的团队),对于大型团队不太适用,毕竟大型团队人中 …...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
