当前位置: 首页 > news >正文

【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清晰简洁

相关文章:

【Java】JAVA知识总结浅析

Java是一门功能强大的编程语言&#xff0c;广泛应用于多个领域。Java的编程思想&#xff0c;包括面向过程和面向对象编程&#xff0c;Java的发展历史&#xff0c;各版本的特点&#xff0c;JVM原理&#xff0c;数据类型&#xff0c;Java SE与Java EE的区别&#xff0c;应用场景&…...

23-云原生监控系统

├──23-云原生监控系统 | ├──1-Prometheus监控 | | ├──1-二进制方式部署Prometheus监控系统 | | ├──2-二进制方式部署Prometheus监控系统告警 | | ├──3-容器化构建Prometheus监控系统 | | ├──4-容器监控方案CAdvisor | | └──5-k8s监…...

信息安全工程师(40)防火墙技术应用

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

Liquid AI与液态神经网络:超越Transformer的大模型架构探索

1. 引言 自2017年谷歌发表了开创性的论文《Attention Is All You Need》以来&#xff0c;基于Transformer架构的模型迅速成为深度学习领域的主流选择。然而&#xff0c;随着技术的发展&#xff0c;挑战Transformer主导地位的呼声也逐渐高涨。最近&#xff0c;由麻省理工学院(M…...

Spring Boot 进阶-详解Spring Boot中使用Swagger3.0

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

Linux平台Kafka高可用集群部署全攻略

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kafka简介 2、Kafka核心优势 二、环境准备 1…...

Android中有哪些布局方式?

Android中的布局方式是实现用户界面设计的基础&#xff0c;通过合理的布局&#xff0c;可以创建出美观且易用的应用程序界面。Android提供了多种布局方式&#xff0c;每种布局方式都有其特定的应用场景和特点。以下是对Android中主要布局方式的详细介绍&#xff1a; 一、线性布…...

Apache Ranger 70道面试题及参考答案

什么是Apache Ranger? Apache Ranger Apache Ranger 是一个用于 Hadoop 生态系统的集中式安全管理框架,旨在为 Hadoop 及相关大数据技术提供全面的安全解决方案。 它具有以下主要特点和功能: 一、访问控制管理 细粒度的权限控制:可以对 Hadoop 生态系统中的各种组件(如 H…...

2024年9月30日--10月6日(ue5肉鸽结束,20小时,共2851小时)

按照月计划&#xff0c;本周把ue肉鸽游戏完成&#xff0c;然后进行ue5太阳系 &#xff0c; 剩余14节&#xff0c;218分钟&#xff0c;如果按照10分钟的视频教程1小时进行完的话&#xff0c;则需要22小时&#xff0c;分布在10月2日-10月6日之间&#xff0c;每天44分钟的视频教程…...

什么是静态加载-前端

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

(01)python-opencv基础知识入门(图片的读取与视频打开)

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

quic-go实现屏幕广播程序

最近在折腾quic-go, 突然想起屏广适合用udp实现&#xff0c;而http3基于quic-go&#xff0c;后者又基于udp, 所以玩一下。 先贴出本机运行效果图&#xff1a; 功能(实现)说明&#xff1a; 1.服务器先启动作为共享屏幕方&#xff0c;等待客户端连接上来 2.客户端连接 3.客户…...

C#操作SqlServer数据库语句

操作数据库语句 操作数据库语句需要搭配数据库的连接Connection类 和下达SQL命令Command类 1. ExecuteNonQuery ExecuteNonQuery 方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句&#xff0c;最后执行sql语句的时候可以用一个整形变量来接收&#xff0c;返…...

Linux之实战命令33:mount应用实例(六十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…...

论文精读:基于概率教师学习的跨域自适应目标检测(ICML2022)

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

thinkphp 学习记录

1、PHP配置 &#xff08;点开链接后&#xff0c;往下拉&#xff0c;找到PHP8.2.2版本&#xff0c;下载的是ZIP格式&#xff0c;解压即用&#xff09; PHP For Windows: Binaries and sources Releases &#xff08;这里是下载地址&#xff09; 我解压的地址是&#xff1a;D:\…...

Leetcode 24 Swap Nodes in Pairs

题意&#xff1a;给定一个list of nodes&#xff0c;要求交换相邻的两个节点 https://leetcode.com/problems/swap-nodes-in-pairs/description/ Input: head [1,2,3,4] Output: [2,1,4,3] 首先你需要思考&#xff0c;我要交换两个节点&#xff0c;对于每个节点&#xff0c;向…...

选择 PDF 编辑器时要考虑什么?如何选择适用于 Windows 10 的 PDF 编辑器

选择 PDF 编辑器时要考虑什么&#xff1f; 随着技术的出现&#xff0c;您在网上浏览时肯定会遇到一些 PDF 软件。但是&#xff0c;选择PDF 编辑器时需要考虑什么&#xff1f;如果您是重度用户并将在您的工作场所使用它&#xff0c;建议您找到专业、使用方便且能够帮助您完成任…...

33-Golang开发入门精讲

├──33-Golang开发入门精讲 | └──1-Golang语法精讲 | | ├──1-介绍-go语言 | | ├──2-介绍-go语言中的面向对象 | | ├──3-第1阶段&#xff1a;走进Golang | | ├──4-第1阶段&#xff1a;走进Golang | | ├──5-第2阶段&#xff1a;变量与…...

研发中台拆分之路:深度剖析、心得总结与经验分享

背景在 21 年&#xff0c;中台拆分在 21 年&#xff0c;以下为中台拆分的过程心得&#xff0c;带有一定的主观&#xff0c;偏向于中小团队中台建设参考&#xff08;这里的中小团队指 3-100 人的团队&#xff09;&#xff0c;对于大型团队不太适用&#xff0c;毕竟大型团队人中 …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...