当前位置: 首页 > 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;毕竟大型团队人中 …...

7大维度测评:2023年开源付费墙绕过工具终极选择指南

7大维度测评&#xff1a;2023年开源付费墙绕过工具终极选择指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字内容访问需求日益增长的今天&#xff0c;选择一款高效可靠的开源…...

LeetCode 200. 岛屿数量(C++):深度优先与广度优先的实战对比

1. 岛屿数量问题解析 第一次看到LeetCode 200题岛屿数量时&#xff0c;很多人会感到困惑&#xff1a;这个看似简单的矩阵遍历问题&#xff0c;为什么会被标记为中等难度&#xff1f;让我用一个生活中的例子来解释&#xff1a;想象你面前有一张卫星地图&#xff0c;上面蓝色代表…...

胡桃工具箱:免费开源的原神桌面助手如何提升你的游戏体验

胡桃工具箱&#xff1a;免费开源的原神桌面助手如何提升你的游戏体验 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.…...

WindowsCleaner:告别C盘爆红,让Windows系统重获新生

WindowsCleaner&#xff1a;告别C盘爆红&#xff0c;让Windows系统重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经历过Windows系统越用越慢&…...

LangChain 与 LangGraph 介绍

一&#xff64;AI 时代下的编程范式 1. Vibe Coding 氛围编程 1.1 Vibe Coding 的起源 在过去十年间&#xff0c;低代码 / 无代码平台和 AI 代码助手持续冲击着软件开发行业。如今&#xff0c;一种被称为 Vibe Coding 的新兴实践突然走红&#xff0c;甚至颠覆了人们对 "…...

Go语言中的文件操作:从os到ioutil

Go语言中的文件操作&#xff1a;从os到ioutil 1. 文件操作的基本概念 文件操作是编程中常见的任务&#xff0c;包括创建、读取、写入、删除文件&#xff0c;以及操作目录等。在Go语言中&#xff0c;文件操作主要通过 os、io、ioutil 和 io/fs 等包来实现。 Go语言的文件操作设计…...

AXOrderBook:解密A股订单簿重建与FPGA硬件加速的深度技术方案

AXOrderBook&#xff1a;解密A股订单簿重建与FPGA硬件加速的深度技术方案 【免费下载链接】AXOrderBook A股订单簿工具&#xff0c;使用逐笔行情进行订单簿重建、千档快照发布、各档委托队列展示等&#xff0c;包括python模型和FPGA HLS实现。 项目地址: https://gitcode.com…...

基于AkShare构建A股基础数据自动化采集方案

1. 为什么需要自动化采集A股基础数据 做量化研究的朋友都知道&#xff0c;获取准确、完整的股票基础数据是策略开发的基石。我刚开始做量化时&#xff0c;最头疼的就是每次跑策略前都要手动更新股票列表&#xff0c;经常因为数据不全导致回测结果失真。后来发现AkShare这个宝藏…...

无需安装jupyter notebook,在快马平台5分钟搭建你的第一个数据分析原型

今天想和大家分享一个快速搭建数据分析原型的经验。作为一个经常需要验证想法的数据分析师&#xff0c;最头疼的就是每次换电脑或重装系统后配置Jupyter Notebook环境的过程。最近发现了一个超省心的解决方案&#xff0c;不用本地安装就能直接开搞数据分析。 为什么选择云端Ju…...

ROS2实战:用hdl_localization+Velodyne激光雷达实现室内机器人实时3D定位(环境配置与调参心得)

ROS2实战&#xff1a;hdl_localization与Velodyne激光雷达的室内3D定位调优指南 在机器人自主导航领域&#xff0c;实时精准定位始终是核心挑战之一。当你的移动机器人搭载着Velodyne激光雷达在复杂室内环境中穿行时&#xff0c;hdl_localization提供的3D点云匹配方案能带来令…...