【Java】JAVA知识总结浅析

news2024/11/27 1:28:28

        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.coloradmin.cn/o/2190054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《业务三板斧:定目标、抓过程、拿结果》读书笔记2

为什么要看懂“目标全景图”&#xff1f; 很多管理者在定目标时缺乏全局思维&#xff0c;“只见树木&#xff0c;不见森林”&#xff0c;导 致定出来的目标短浅&#xff0c;管理者如井底之蛙。“目标全景图”是企业的 整个目标体系&#xff0c;如图1-1所示。管理者看懂“目标全…

Pikachu- Over Permission-垂直越权

以admin 账号登陆&#xff0c;添加一个用户&#xff1b; 把添加用户的这个请求发送到 repeater&#xff1b; 退出admin&#xff0c;使用普通用户pikachu登陆&#xff1b; 只有查看权限&#xff1b; 使用pikachu 用户的认证信息&#xff0c;替换repeater处管理员创建用户请求的…

【电力系统】配电网前推后带法求电力系统潮流

摘要 在配电网潮流计算中&#xff0c;前推后带法是一种常用的算法&#xff0c;适用于径向结构配电网。本文通过详细介绍前推后带法的基本原理和计算流程&#xff0c;并结合实际实验结果展示了该方法在电力系统中的应用。实验结果表明&#xff0c;该方法在潮流计算中具有较高的…

Android Framework AMS(02)AMS启动及相关初始化5-8

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多&#xff0c;因此拆成2个章节&#xff0c;本章节是第二章节&…

CSS元素显示类型

display 属性是 CSS 中最重要的属性之一&#xff0c;主要用来控制元素的布局&#xff0c;通过 display 属性您可以设置元素是否显示以及如何显示。 根据元素类型的不同&#xff0c;每个元素都有一个默认的 display 属性值&#xff0c;例如<div>默认的 display 属性值为 …

Pandas基础学习

导入 导入pandas一般是这样导入的 import pandas as pdSeries 创建 s1 pd.Series([5, 17, 3, 26, 31])注意Series的第一个字母要大写&#xff0c;表明这其实是Series类的构建函数, 返回的是Series类的实例 获得元素或者索引 单独获得元素 s1.values单独获得索引值 s…

基于springboot的校园物流管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的校园物流管理系统1拥有两种角色 管理员&#xff1a;物流管理&#xff08;揽件、寄出&#xff09;、用户管理等 用户&#xff1a;收件、寄件、个人物流信息管理等 1.1 …

proto3语法

文章目录 字段规则消息类型定义与使用序列化写入文件hexdump工具反序列化读取文件decode命令选项enum类型设置电话类型 Any类型设置地址信息 oneof类型设置其他联系人信息 map类型添加备注信息 默认值更新消息更新规则 未知字段输出未知字段消息 option选项常用选项 本章代码仓…

Leetcode 剑指 Offer II 097.不同的子序列

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列…

NVIDIA网卡系列之ConnectX-5规格信息(100G-PCIe 3.0x16-8PF512VF-2016年发布)

背景 NVIDIA ConnectX-5系列的网卡&#xff0c;早期还在Mellanox未被NVIDIA收购的时候就发布了&#xff0c;主流支持100G&#xff0c;主要用在PCIe3.0&#xff0c;最大支持200G的产品。虽然已经发布多年&#xff0c;但是目前还是在大量使用。100Gbps的速率对比普通网卡来讲&am…

基于SSM的电影院售票系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 前言 近些年的电影在人们文娱活动中占据重要地位&#xff0c;另外&#xff0c;由于人们的生活越来越富有&#xff0c;越来越多的人们不再选择在家里看电影&#xff0c;而是选择去电影院看电影。但是&#xff0c;以往的售票方式是…

在Visual Studio中使用CMakeLists.txt集成EasyX库的详细指南

EasyX库是一款专为Windows平台设计的轻量级C图形库&#xff0c;适合初学者和教育领域使用。结合Visual Studio和CMake工具链&#xff0c;用户可以轻松创建C项目&#xff0c;并集成EasyX库&#xff0c;实现丰富的图形编程效果。本文将详细介绍如何在Visual Studio中通过CMakeLis…

分布式事务(Seata-AT模式)

角色说明 TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM (Resource Manager) - 资源管理器 管理分…

macOS编译和运行prometheus2.54

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文详述了在macOS(M2芯片)上编译和运行prometheus2.54版本的过程&#xff0c;以及安装node_exporter和grafana并使用prometheus指标进行展示 本地…

【含文档】基于Springboot+Vue的活力健身馆管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

HTB:Preignition[WriteUP]

连接至HTB服务器并启动靶机 靶机IP&#xff1a;10.129.157.49 分配IP&#xff1a;10.10.16.12 1.Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (…

喜欢听音乐的朋友,怎么能少这个音乐插件?

喜欢听音乐的朋友有福利了&#xff0c;今天小编给大家带来一个非常酷的音乐插件&#xff0c;让你的音乐在桌面跳动起来~&#xff01;想象一下&#xff0c;随着旋律的起伏&#xff0c;你的桌面仿佛被赋予了生命&#xff0c;音符跳跃、光影交错&#xff0c;每一首歌都化作了眼前流…

电源入口防护电路

电源入口防护电路 原则:先防护&#xff0c;后防反&#xff0c;最后滤波基本防护器件防反措施 原则:先防护&#xff0c;后防反&#xff0c;最后滤波 在设计电路保护方案时&#xff0c;遵循“先防护&#xff0c;后防反&#xff0c;最后滤波”的原则是非常重要的。这种顺序确保了…

Python入门--函数

目录 1. 函数介绍 2. 函数的定义 3. 函数的参数 4. 函数的返回值 5. 函数说明文档 6. 函数的嵌套调用 7. 函数的作用域 (1). 局部变量 (2). 全局变量 (3). global关键字 1. 函数介绍 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能…

【无题】夜入伊人笑愉,泪湿心夜难眠。

在这句诗中&#xff0c;意境描绘了一种深沉的情感体验&#xff0c;充满了温柔与哀愁。诗人通过“夜入伊人笑愉”开启了一段梦境之旅&#xff0c;其中“夜入”象征着进入梦境的状态。在这个梦幻的世界里&#xff0c;诗人与心爱的人欢笑嬉戏&#xff0c;那份快乐和亲昵如同真实的…