java 搭建企业应用框架_揭秘Java帝国的全能家族——Spring的成王之路

2023-11-18

很久很久以前,古老的 Java 编程帝国里降生了一个孩子,名为 Spring,它是 Java 帝国最小的王子,同时也是 Java 帝国期待已久的孩子。

它还有三个哥哥,分别是大哥 JSF、二哥 Struts 和三哥 Hibernate,它们一起为 Java 帝国的编程事业添砖加瓦。

相比三个哥哥的术有术攻,促使 Spring 降生有两个重要原因:

1、使 Java EE 开发更加容易;
2、解决企业应用开发的复杂性而创建,但又不仅限于服务器端的开发,而是所有让 Java 应用都可以从 Spring 中受益。

粉雕玉琢的 Spring 小王子备受 Java 帝国人民的喜爱,以往需要几个大王子一并合作的项目,Spring 小王子一个人便可完成,它让开发变得更加简单高效。

他是一个基于 POJO(简单 Java 对象)的轻量级框架,最大的特点是其依赖注入方式,在 Spring 中创建 bean 和对象的职责交给了 Spring 框架来统一管理、完成和维护。

Spring 小王子的成长轨迹

2004年, Spring 1.0,彻底改变了开发企业级 Java 应用程序的方式。
2006年, Spring 2.0,在配置里使用自定义的 XML 命名空间,更小、更简单易懂的配置文件让 Spring 本身更便于使用。
2007年, Spring 2.5,面向注解的依赖注入模型(即@Component和@Autowired注解),以及面向注解的 Spring MVC 编程模型,不用再去显式地声明应用程序组件了,也不再需要去继承某个基础的控制器类了。
2009年, Spring 3.0,一套基于Java的全新配置,它能够取代 XML,一系列以@Enable开头的注解进一步完善了这一特性,可以写出一个没有任何 XML 配置的 Spring 应用程序。
2013年, Spring 4.0,对条件化配置提供了支持,根据应用程序的 Classpath、环境和其他因素,运行时决策将决定使用哪些配置,忽略哪些配置。那些决策再也不需要在构建时通过编写脚本确定了(以前会把选好的配置放在部署的包里)。
2017年, Spring 5.0,主要功能是对反应式编程的支持,包括 Spring WebFlux。这是一个全新的反应式 Web 框架, 借鉴了 Spring MVC 的编程模型,允许开发人员创建伸缩性更好且耗用更少线程的 Web 应用程序。

从带着使命感诞生到每个阶段的成长,Spring 小王子为 Java 帝国奉献了一切,从来没有让程序员们失望过。

Spring 小王子核心秘密武器

自诞生以来,Spring 小王子便鼓励 Java 帝国的人民使用模块化的方式进行编程,他使用一个核心容器和很多个其他的模块来搭配,继而满足 Java 帝国建设各种各样的需求。

  • 核心容器

这是 Spring 框架最基础的部分,它提供了依赖注入(DependencyInjection)特征来实现容器对 Bean 的管理。这里最基本的概念是 BeanFactory ,它是任何 Spring 应用的核心。

BeanFactory 是工厂模式的一个实现,它使用 IoC 将应用配置和依赖说明从实际的应用代码中分离出来。

Spring核心容器包含了以下模块:

  • 应用上下文(Context)模块

核心模块的 BeanFactory 使 Spring 成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了 BeanFactory 的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持。

另外,这个模块提供了许多企业服务,例如电子邮件、JNDI 访问、EJB 集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如 Velocity 和 FreeMarker 集成的支持。

  • Spring的AOP模块

Spring 在它的 AOP 模块中提供了对面向切面编程的丰富支持。这个模块是在 Spring 应用中实现切面编程的基础。为了确保 Spring 与其它 AOP 框架的互用性,Spring 的 AOP 支持基于 AOP 联盟定义的 API。

AOP 联盟是一个开源项目,它的目标是通过定义一组共同的接口和组件来促进 AOP 的使用以及不同的 AOP 实现之间的互用性。通过访问他们的站点,你可以找到关于 AOP 联盟的更多内容。

Spring 的 AOP 模块也将元数据编程引入了 Spring。使用 Spring 的元数据支持,你可以为你的源代码增加注释,指示 Spring 在何处以及如何应用切面函数。

  • JDBC抽象和DAO模块

使用 JDBC 经常导致大量的重复代码,取得连接、创建语句、处理结果集,然后关闭连接。Spring 的 JDBC 和 DAO 模块抽取了这些重复代码,因此你可以保持你的数据库访问代码干净简洁,并且可以防止因关闭数据库资源失败而引起的问题。

这个模块还在几种数据库服务器给出的错误消息之上建立了一个有意义的异常层。使你不用再试图破译神秘的私有的 SQL 错误消息!

另外,这个模块还使用了 Spring 的 AOP 模块为 Spring 应用中的对象提供了事务管理服务。

  • 对象/关系映射集成模块

对那些更喜欢使用对象/关系映射工具而不是直接使用 JDBC 的人,Spring 提供了 ORM 模块。Spring 并不试图实现它自己的 ORM 解决方案,而是为几种流行的 ORM 框架提供了集成方案,包括 Hibernate、JDO 和 iBATIS SQL 映射。

Spring 的事务管理支持这些 ORM 框架中的每一个也包括 JDBC。

  • Spring的Web模块

Web上下文模块建立于应用上下文模块之上,提供了一个适合于 Web 应用的上下文。另外,这个模块还提供了一些面向服务支持。

例如:实现文件上传的 multipart 请求,它也提供了 Spring 和其它 Web 框架的集成,比如Struts、WebWork。

  • Spring的MVC框架

Spring 为构建 Web 应用提供了一个功能全面的 MVC 框架。虽然 Spring 可以很容易地与其它 MVC 框架集成,例如 Struts,但 Spring 的 MVC 框架使用 IoC 对控制逻辑和业务对象提供了完全的分离。

它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring 的 MVC 框架还可以利用 Spring 的任何其它服务,例如国际化信息与验证。

如果作为一个整体,Spring 小王子的这些模块已经为 Java 帝国提供了开发企业应用所需的一切,但 Java 人民可以自由地挑选适合自己的应用的模块而忽略其余的模块,而不必将所有的模块完全应用。

基于上面的这些核心模块, Spring 小王子还提供了很多其他的有用的模块,用于构建健壮的基于 Java 帝国的应用程序:

数据库访问模块、事务管理模块、安全模块、Spring 集成模块、 批处理模块、消息模块、社交插件等。

Spring 小王子开枝散叶

经过多年发展, Spring 家族现在已枝繁叶茂,Spring 更是成为 Java 帝国生态系统中最主要的框架,其中Spring 5 的采用率约为 2/3。

家族的工作涵盖了 Java 帝国的J2EE开发、依赖维护、安全批处理、统一数据库访问、大数据、消息处理、移动开发以及微服务等众多领域。

在 Spring 小王子的孩子里面,最耀眼的莫过于 Spring Framework 、 Spring Boot 和 Spring Cloud 这三个小辈。

Spring Framework

◆ 强大的基于 JavaBeans 的采用控制反转(Inversion of Control,IoC)原则的配置管理,使得应用程序的组建更加快捷简易;

◆ 一个可用于从 applet 到 Java EE 等不同运行环境的核心 Bean 工厂;

◆ 数据库事务的一般化抽象层,允许插件式事务管理器,简化事务的划分使之与底层无关。

◆ 内建的针对 JTA 和 单个 JDBC 数据源的一般化策略,使 Spring 的事务支持不要求 Java EE 环境;

◆ JDBC 抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量;

◆ 以资源容器,DAO 实现和事务策略等形式与 Hibernate,JDO 和 iBATIS SQL Maps 集成;

◆ 灵活的基于核心 Spring 功能的 MVC 网页应用程序框架;

◆ 提供诸如事务管理等服务的面向方面编程框架。

Spring Framework 就像是 Spring 家族的树根,使 Spring 家族得以在Java开发领域屹立不倒的根本原因,它的目标就是帮助 Java 帝国的开发人员开发出好的系统;

Spring Boot

◆ 可以创建独立的 Spring 应用程序,并且基于其 Maven 或 Gradle 插件,可以创建可执行的 JARs和WARs;

◆ 内嵌 Tomcat 或 Jetty 等 Servlet 容器;

◆ 提供自动配置的“starter”项目对象模型(POMS)以简化 Maven 配置;

◆ 尽可能自动配置 Spring 容器;

◆ 提供准备好的特性,如指标、健康检查和外部化配置;

◆ 绝对没有代码生成,不需要 XML 配置。

Spring Boot 相当于 Spring 家族的树干,它的目标是简化新 Spring 应用的初始搭建以及开发过程,致力于在蓬勃发展的快速应用开发领域成为领导者;

Spring Cloud

◆ Spring Cloud Netflix:是对 Netflix 开发的一套分布式服务框架的封装;

◆ Spring Cloud Config:将配置信息中央化保存, 配置 Spring Cloud Bus 可以实现动态修改配置文件;

◆ Spring Cloud Bus:分布式消息队列,是对 Kafka,MQ 的封装;

◆ Spring Cloud Security:对 Spring Security 的封装,并能配合 Netflix 使用;

◆ Spring Cloud Zookeeper:对Zookeeper的封装,使之能配置其它 Spring Cloud 的子项目使用;

◆ Spring Cloud Eureka:Spring Cloud Netflix 微服务套件中的一部分,它基于 Netflix Eureka 做了二次封装。

在近几年中,Java 帝国多了一个流行的概念——微服务,帝国人民普遍认为它能解决传统的单体架构应用所带来的顽疾(如代码维护难、部署不灵活、稳定性不高、无法快速扩展等), 以至于涌现出了一大批帮助实现微服务的工具。

而在它们之中,Spring Cloud 无疑是最令人瞩目的,不仅是因为 Spring 家族在 Java 帝国开发中的重要地位,更是因为 Spring Cloud 提供了一整套微服务实施方案 ,其中包括服务发现、分布式配置、客户端负载均衡、服务容错保护、API 网关、安全、事件驱动、分布式服务跟踪等工具,全面地解决了 Java 帝国人民在微服务开发领域所遇到的难点问题。

Spring Cloud 就如同是 Spring 家族这棵参天大树在 Java 帝国的微服务开发领域所结出的硕果。

Spring 家族初心不变

Spring 家族之所以能够在技术不断更新换代的 IT 领域长盛不衰,并且引领技术发展的潮流,是因为它一直没有偏离最初的目标——根据技术的发展,不断优化和革新,让 Java 应用的开发更加便利和高效

从 XML 配置、注解配置,再到 Spring Boot 的自动化配置,Spring 在不断简化,开发人员需要做的额外工作越来越少。

Spring 的这种基因代代相传,在可以预见的未来,Spring 及其家族产品依然是值得花时间投资学习的技术。

Spring 小王子和它的孩子们,会一直陪伴在每个 Java 帝国人民的身边,共同进步、共同成长。


相关阅读:

《Spring实战 第5版》

作者: [美]克雷格·沃斯(Craig Walls)译者: 张卫滨

本书是一本经典而实用的畅销 Spring 学习指南。第 5 版涵盖了 Spring 5.0 和Spring Boot 2.0 里程碑式的更新。

全书分为 5 个部分,共 19 章。

  • 第 1 部分(第 1~5 章)涵盖了构建 Spring 应用的基础话题。
  • 第 2 部分(第 6~9章)讨论如何将Spring 应用与其他应用进行集成。
  • 第 3 部分(第 10~12 章)探讨Spring对反应式编程提供的全新支持。
  • 第 4 部分(第 13~15 章)拆分单体应用模型,介绍SpringCloud 和微服务开发。
  • 第 5 部分(第 16~19 章)讨论如何为应用投入生产环境做准备以及如何进行部署。

本书既适合刚开始学习 Spring Boot 和 Spring 框架的 Java 开发人员快速上手,也适合经验丰富的 Spring 开发人员学习 Spring 的新特性,尤其适用于企业级Java 开发人员。

《Spring Cloud微服务和分布式系统实践》

作者: 杨开振
作者: 杨开振

本书从企业的真实需求出发,理论结合实际,深入讲解 Spring Cloud 微服务和分布式系统的知识。

书中既包括 Spring Cloud 微服务的各类常用组件的讲解,又包括分布式系统的常用知识的介绍。Spring Cloud 组件方面主要讲解服务注册和服务发现(Eureka)、服务调用(Ribbon 和 OpenFeign)、断路器(Hystrix 和 Resilience4j)、网关(Zuul 和 Gateway)、配置(Config)、全链路追踪(Sleuth)、微服务的监控(Admin)等;分布式系统方面主要讲解分布式数据库、分布式缓存、会话和权限以及发号机制等。

本书的实践部分通过 Apache Thrift 讲解了远程过程调用(RPC)在分布式系统中的应用,并且分析了处理高并发的一些常用方法,最后还通过一个简单的实例讲解了微服务系统的搭建。

本书适合想要学习Spring Cloud微服务、分布式系统开发的各类Java开发人员阅读,包括初学者和开发工程师。本书对架构师也有一定的帮助。

《Spring学习指南 第4版》

作者: [印度]J. 夏尔马(J. Sharma),阿西施·萨林(Ashish Sarin) 译者: 周密

Spring 框架是以简化 J2EE 应用程序开发为特定目标而创建的,是当前最流行的 Java 开发框架。本书主要介绍 Beans 的配置、依赖注入、定制 bean、基于 Java 的容器、AOP、Spring Data、Spring MVC 等内容。

本书基于非常适合构建 JavaWeb 微服务框架的 Spring 5 编写,涵盖 Java 的函数式编程、RxJava 2 的反应式编程、用 Spring WebFlux、Spring Data 和 Spring Security 开发反应式RESTful Web 服务等内容。

本书适合 Web 开发者和想使用 Spring 的初学者参考,也可供对 Web 开发和 Spring 感兴趣的读者参考。

《深入浅出Spring Boot 2.x》

作者: 杨开振

Spring框架是 Java EE 开发的事实标准,而 Spring Boot 是业界最流行的微服务开发框架。

本书从一个最简单的工程开始讲解 Spring Boot 企业级开发,其内容包含全注解下的 Spring IoC 和 AOP、数据库编程、数据库事务、NoSQL 技术、Spring MVC、Spring 5 新一代响应式框架 WebFlux、REST 风格和 Spring Cloud 分布式开发等。

《Spring微服务实战》

作者: [美]约翰 · 卡内尔(John Carnell)译者: 陈文辉

本书以一个实际项目为主线,介绍云、微服务等概念以及 Spring Boot 和 Spring Cloud 等诸多 Spring 项目,并介绍如何将该项目一步一步地从单体架构重构成微服务架构,最终将这个项目拆分成众多微服务,让它们运行在各自的 Docker 容器中,实现持续集成/持续部署,并最终自动部署到云环境(亚马逊云)中。

《Spring源码深度解析 第2版》

作者: 郝佳

本书从核心实现和企业应用两个方面,由浅入深、由易到难地对 Spring 源码展开了系统的讲解,包括 Spring 的设计理念和整体架构、容器的基本实现、默认标签的解析、自定义标签的解析、bean 的加载、容器的功能扩展、AOP、数据库连接 JDBC、整合 MyBatis、事务、SpringMVC、远程服务、Spring 消息服务等内容。

文章来源:异步社区
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 搭建企业应用框架_揭秘Java帝国的全能家族——Spring的成王之路 的相关文章

  • STM32F4单片机ADC采样及ARM-DSP库的FFT

    模拟信号经过ADC采样后变成数字信号 数字信号可以进行FFT运算 在频域中更容易分析信号的特征 本文将介绍如何用STM32F4的进行ADC采样 并利用ARMDSP库里的FFT算法对ADC采样值进行快速傅里叶变换 我使用的是STM32F407
  • CUDA编程中内存管理机制

    GPU设备端存储器的主要分类和特点 大小 全局 Global 和纹理 Texture 内存 大小受RAM大小的限制 本地 local 内存 每个线程限制在16KB
  • windows平台中使用vscode远程连接linux进行c++开发配置教程(内容详细适合小白)-2021-3-30

    文章目录 一 简要介绍 二 软件安装步骤 1 linux系统安装 2 vscode安装 3 ssh安装 4 配置Remote SSH 5 安装远程插件 6 简单小测试 三 配置vscode开发环境 1 默认设置 用户设置 远程设置和工作区设
  • Qt 开发环境搭建

    Qt开发环境搭建 Qt下载 Qt安装 Windows平台 离线安装 在线安装 Qt安装目录 VS2019搭建Qt开发环境 安装扩展插件 Qt VS Tools Qt Versions配置 问题 VS2019双击编辑UI时闪退 qt显示中文乱
  • 区块链物品溯源系统

    文章目录 前言 一 区块链有哪些特点 二 区块链能给品牌或者行业带来什么 1 信任度 2 小程序展示 总结 前言 区块链是一个典型的分布式协同系统 多方共同维护一个不断增长的分布式数据记录 这些数据通过密码学技术保护内容和时序 使得任何一方
  • Qt multiple definition of (function)

    前景 做项目代码优化 将原来的代码按简单工厂模式进行重新组合编写 对整个模块的文件夹进行分类 归纳 中途 出现这一问题 问题详述 某一类中的全部函数都有error multiple definition of function name 解
  • Linux 下刷 TWRP

    安装 adb 和 fastboot apt install android tools adb android tools fastboot 下载需要的 TWRP https dl twrp me flo 开机状态下进入 bootloade
  • async_await用法

    async作为修饰关键字修饰在函数前 表示该函数是一个异步函数 await的使用必须有async关键字 await等待的必须是一个promise对象 async返回的是一个promise对象 asyn function A return 星
  • pthread_cond_destroy()函数的使用

    NAME pthread cond destroy pthread cond init destroy and initialize condition variables SYNOPSIS THR include
  • 像数组一样使用NodeList:一个对象组合的有效用法

    场景 我是用querySelectorAll 查询了一些标记 并收到了一个NodeList响应 问题 节点列表类似于数组 比如 他们都有一个长度属性 它们都在括号中的索引访问它们的属性或者子元素 NodeList 0 尝试使用 map fi
  • 最小二乘法–高斯牛顿迭代法

    最小二乘法 高斯牛顿迭代法 本文将详解最小二乘法的非线性拟合 高斯牛顿迭代法 1 原理 高斯 牛顿迭代法的基本思想是使用泰勒级数展开式去近似地代替非线性回归模型 然后通过多次迭代 多次修正回归系数 使回归系数不断逼近非线性回归模型的最佳回归
  • ELK收集docker日志

    转载来源 ELK收集docker日志 1 安装docker 安装依赖 yum install y yum utils device mapper persistent data lvm2 添加软件源 yum config manager a
  • 【简单】228. 汇总区间

    原题链接 https leetcode cn problems summary ranges description 228 汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围
  • CVPR 2021 Object Detection

    一 关于3D有26篇 3DIoUMatch Leveraging IoU Prediction for Semi Supervised 3D Object Detection ST3D Self Training for Unsupervi
  • 数据结构---红包分配算法

    红包分配算法 错误解法 二倍均值法 JAVA实现 线段切割法 确定每一条子线段的长度 JAVA实现 问题如下 所有人抢到的金额之和要等于红包金额 不能多也不能少 每个人至少抢到1分钱 要保证红包拆分的金额尽可能分布均衡 不要出现两极分化太严
  • Linux下软链接方法切换CUDA版本

    Linux下软链接方法切换CUDA版本 Linux下安装多版本的CUDA 直接切换版本 CUDA切换 sudo rm rf usr local cuda 删除之前的软链接 sudo ln s usr local cuda 10 0 usr
  • Allegro如何导出和导入设计规则操作指导

    Allegro如何导出和导入设计规则操作指导 当需要借用另外一款PCB的设计规则时候 Allegro支持把PCB设计规则导入到另外一块PCB中 如下图 具体操作如下 打开规则管理器 打开后如下图
  • 黑马程序员mysql笔记--索引基本操作部分

    视频链接 https www bilibili com video BV1iF411z7Pu 1 3 1 索引的基本操作 1 3 1 1 索引概述 索引是什么 索引是通过某种算法 构建出一个数据模型 用于快速找出在某个列中有一特定值的行 不
  • 《A Metric Learning Reality Check》笔记

    1 是 metric learning 的一篇学术打假文 回顾了 deep metric learning 领域两个经典工作 contrastive loss triplet loss 和近年来 2017 2019 见文中 Table 6

随机推荐

  • DC-DC电源管理

    BUCK电源芯片的使用与选择 BUCK电路降压原理 在开关S闭合时 对电感L与电容C进行充电同时也对负载R供电 在开关S断开时储能元器件L与C继续对R进行供电并通过D1形成回路 输出电压Vo Vi Ton Ton Toff Ton 开关S闭
  • 【C语言】实现一个通讯录:通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址

    先写一个只能录固定人数的通讯录 不能增容 不能保存 通讯录可以用来存储1000个人的信息 每个人的信息包括 姓名 性别 年龄 电话 住址 实现功能 1 添加联系人信息 2 删除指定联系人信息 3 查找指定联系人信息 4 修改指定联系人信息
  • Linux 压缩解包命令讲解

    tar命令使用讲解 压缩 tar命令 c 生成档案文件 v 列出归档解档的详细过程 f 指定档案文件名称 t 列出档案在包含的文件 x 解开档案文件 打包 tar cvf a tar txt tar cf a tar txt 解包 tar
  • mysql split函数用逗号分隔的实现方法

    本文主要介绍了mysql split函数用逗号分隔的实现 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友们下面随着小编来一起学习学习吧 1 定义存储过程 用于分隔字符串 1 2 3 4 5 6 7 8
  • 服务端推送SSE技术

    SSE Server Sent Events 是一种用于实现服务器主动向客户端推送数据的技术 也被称为 事件流 Event Stream 它基于 HTTP 协议 利用了其长连接特性 在客户端与服务器之间建立一条持久化连接 并通过这条连接实现
  • 杂学日记

    glob函数的使用 glob库函数用于Linux文件系统中路径名称的模式匹配 即查找文件系统中指定模式的路径 注意 这不是正则表达式匹配 虽然有些相似 但还是有点差别 glob函数原型 include
  • 快速提升代码能力(7)sort(a,a+n);

    从零起步看算法 第七天 4 12 q9 交叉排序 算是一道水题了 1 花点时间看一下样例 就可以理解题意了 2 本题唯一知识点 用sort 实现 数组的从大到小排序 很简单的操作 https blog csdn net jimmy lee1
  • python 字典中 get 和 [] 的区别

    在Python中 get和 是用来访问字典 dict 或字典样的对象 例如defaultdict 中的元素的两种常见方式 它们有一些区别 使用get方法时 如果指定的键不存在于字典中 它会返回一个默认值 默认为None 也可以自定义 而不会
  • ConceptFusion 论文翻译

    ConceptFusion 论文翻译 本文仅仅是本人在英语水平不够的情况下对原论文的翻译 如果有错烦请指正 原始论文地址参见 https arxiv org pdf 2302 07241 pdf 下面开始正式翻译 摘要 构建三维环境地图对于
  • Wireshark网络抓包工具下载和安装(2023)

    一 Wireshark的下载 下载网址 https www wireshark org download html 也可以阿里网盘自取 wiresharkhttps www aliyundrive com s c4qeGBQMfwj提取码
  • 实现 Java 平台的三种方式

    广泛地说 只要能执行 Java bytecode 者 就可以称为 Java 平台 Java platform 大致上 实现 Java 平台的方式有三种 分别是 Java 虚拟机器 Java Virtual Machine JVM Java
  • Java实现企业微信上传临时文件获取media_id

    目录 1 上传临时素材API 2 测试代码 3 测试完成 4 遇到的问题 4 1 文件类型无法解析 1 上传临时素材API 调试工具 素材上传得到media id 该media id仅三天内有效 media id在同一企业内应用之间可以共享
  • Qt之:QProcess使用总结

    1 主程序 初始化及设定信号槽 process new QProcess connect process SIGNAL started SLOT started connect process SIGNAL finished int QPr
  • 02-线性结构3 Reversing Linked List(25 point(s)) 【链表】

    02 线性结构3 Reversing Linked List 25 point s Given a constant K and a singly linked list L you are supposed to reverse the
  • Oracle 19c RAC安装时遇到 INS-06006 错误

    1 错误现象 通过执行 gridSetup sh 配置 19c grid infrastructure 的时候 在 SSH connectivity 步骤 发生如下错误 INS 06006 Passwordless SSH connecti
  • 银行利率bp是什么意思,基准利率bp是什么意思

    银行bp是什么意思 在银行业里bp是指基点 是衡量利率的度量单位 1个基点等于0 01 100基点就是1 比如存款利率从5 下降到4 就是下调了100个bp 在银行业里 通常用bp来表示某个金融工具的利率变动幅度 或者两种利率之间的差价 此
  • 快速学习Stm32舵机控制板控制多个舵机运动以及调速

    本次分享stm32对多个舵机的控制 之前讲解过单个舵机的控制 以及控制原理 定时器的使用和pwm的输出来控制一个舵机的角度转向 这次就和大家分享一下多个舵机的控制以及调速 利用单片机实现对 8 个舵机的同时控制 掌握多个舵机控制程序实现方法
  • jsp页面中 undefined attribute name (data-options). 怎样解决

    用 eclipse 写代码 使用 easyui 总出现 Undefined attribute name data options 虽然不影响代码功能 但是一大堆感叹号在旁边非常蛋疼 如下图所示 那么如何解决呢 Window gt Pref
  • Python必备基本技能——命令行参数args详解

    Python必备基本技能 命令行参数args详解 1 效果图 2 源码 2 1 简单命令行参数 2 1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员 工程师和计算机科学家必备的技能 命令行参数 原理及使用 依赖 pip install
  • java 搭建企业应用框架_揭秘Java帝国的全能家族——Spring的成王之路

    很久很久以前 古老的 Java 编程帝国里降生了一个孩子 名为 Spring 它是 Java 帝国最小的王子 同时也是 Java 帝国期待已久的孩子 它还有三个哥哥 分别是大哥 JSF 二哥 Struts 和三哥 Hibernate 它们一