bootloader 订阅
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序 [1]  。 展开全文
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序 [1]  。
信息
应    用
嵌入式操作系统
外文名
BootLoader
说    明
系统启动前引导程序
别    名
引导加载程序
中文名
启动装载
学    科
信息科学
操作模式
启动模式、交互模式
BootLoader背景介绍
Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 [2]  。对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序 [2]  。反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口 [2]  。
收起全文
精华内容
参与话题
问答
  • 15 个优秀开源的 Spring Boot 学习项目,一网打尽!

    万次阅读 多人点赞 2019-12-12 11:44:43
    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 《Spring Boot + Vue 全栈开发实战》迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑。经常有人问松哥有没有推荐的 Spring Boot 学习...

    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 《Spring Boot + Vue 全栈开发实战》迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑。经常有人问松哥有没有推荐的 Spring Boot 学习资料?当然有!买松哥书就对了,哈哈。除了书呢?当然就是开源项目了,今天松哥整理了几个优质 Spring Boot 开源项目给大家参考,希望能够帮助到正在学习 Spring Boot 的小伙伴!小伙伴简历中不知道写什么项目的或者项目没有亮点的,我只能帮你们到这了!

    微人事

    微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot + Vue 开发。项目打通了前后端,并且提供了非常详尽的文档,从 Spring Boot 接口设计到前端 Vue 的开发思路,作者全部都记录在项目的 wiki 中,是不可多得的 Java 全栈学习资料。

    项目效果图:

    项目部分文档截图:

    Cloud-Platform

    • star 数 8k
    • 项目地址:https://gitee.com/geek_qi/cloud-platform

    Cloud-Platform 是国内首个基于 Spring Cloud 微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关 API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。 核心技术采用 Spring Boot 2.1.2 以及 Spring Cloud (Greenwich.RELEASE) 相关核心组件,采用 Nacos 注册和配置中心,集成流量卫兵 Sentinel,前端采用vue-element-admin 组件。

    项目演示:

    spring-boot-pay

    • star 数 2931
    • 项目地址:https://gitee.com/52itstyle/spring-boot-pay

    这是一个支付案例,提供了包括支付宝、微信、银联在内的详细支付代码案例,对于有支付需求的小伙伴来说,这个项目再合适不过了。

    项目效果图:

    V 部落

    V部落是一个多用户博客管理平台,采用 Vue + SpringBoot + ElementUI 开发。这个项目最大的优势是简单,属于功能完整但是又非常简单的那种,非常非常适合初学者。

    项目效果图:

    springboot-plus

    • star 数 2546
    • 项目地址:https://gitee.com/xiandafu/springboot-plus

    一个基于 SpringBoot 2 的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成等功能 相比其他开源的后台系统,SpringBoot-Plus 具有一定的复杂度。系统基于 Spring Boot2.1 技术,前端采用了Layui2.4。数据库以 MySQL/Oracle/Postgres/SQLServer 为实例,理论上是跨数据库平台。

    项目效果图:

    spring-boot-seckill

    • star 数 3.7k
    • 项目地址:https://gitee.com/52itstyle/spring-boot-seckill

    从 0 到 1 构建分布式秒杀系统,脱离案例讲架构都是耍流氓,SpringBoot 开发案例从 0 到 1 构建分布式秒杀系统,项目案例基本成型,逐步完善中。

    litemall

    • star 数 6436
    • 项目地址:https://github.com/linlinjava/litemall

    一个商城项目,包括 Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue用户移动端,功能包括、分类列表、分类详情、品牌列表、品牌详情、新品首发、人气推荐、优惠券列表、优惠券选择、团购(团购业务有待完善)、搜索、商品详情、商品评价、商品分享、购物车、下单、订单列表、订单详情、地址、收藏、足迹、意见反馈以及客服;管理平台功能包括会员管理、商城管理、商品管理、推广管理、系统管理、配置管理、统计报表等。

    项目效果图:

    jeeSpringCloud

    • star 数:3.9k
    • 项目地址:https://gitee.com/JeeHuangBingGui/jeeSpringCloud

    基于 SpringBoot2.0 的后台权限管理系统界面简洁美观敏捷开发系统架构。核心技术采用Spring、MyBatis、Shiro 没有任何其它重度依赖。 互联网云快速开发框架,微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。模块包括:定时任务调度、服务器监控、平台监控、平台设置、开发平台、单点登录、Redis 分布式高速缓存、会员、营销、在线用户、日志、在线人数、访问次数、调用次数、直接集群、接口文档、生成模块、代码实例、安装视频、教程文档 代码生成(单表、主附表、树表、列表和表单、redis 高速缓存对接代码、图表统计、地图统计、vue.js )、dubbo、springCloud、SpringBoot、mybatis、spring、springmvc。

    美人鱼

    听名字就知道这是个不错的项目,事实上确实不赖。NiceFish(美人鱼) 是一个系列项目,目标是示范前后端分离的开发模式:前端浏览器、移动端、Electron 环境中的各种开发模式;后端有两个版本:SpringBoot 版本和 SpringCloud 版本,前端有 Angular 、React 以及 Electron 等版本。

    项目效果图:

    bootshiro

    bootshiro 是基于 Spring Boot + Shiro + JWT 的真正 RESTful URL 资源无状态认证权限管理系统的后端,前端 usthe 。区别于一般项目,该项目提供页面可配置式的、动态的 RESTful api 安全管理支持,并且实现数据传输动态秘钥加密,jwt 过期刷新,用户操作监控等,加固应用安全。

    项目效果图:

    open-capacity-platform

    open-capacity-platform 微服务能力开放平台,简称 ocp ,是基于 layui + springcloud 的企业级微服务框架(用户权限管理,配置中心管理,应用管理,…),其核心的设计目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,其目标是帮助企业搭建一套类似百度能力开放平台的框架。

    项目效果图:

    悟空 CRM

    悟空 CRM 是基于 jfinal + vue + ElementUI 的前后端分离 CRM 系统。

    老实说,jfinal 了解下就行了,没必要认真研究,Vue + ElementUI 的组合可以认真学习下、前后端交互的方式可以认真学习下。

    paascloud-master

    paascloud-master 核心技术为 SpringCloud + Vue 两个全家桶实现,采取了取自开源用于开源的目标,所以能用开源绝不用收费框架,整体技术栈只有阿里云短信服务是收费的,都是目前 java 前瞻性的框架,可以为中小企业解决微服务架构难题,可以帮助企业快速建站。由于服务器成本较高,尽量降低开发成本的原则,本项目由 10 个后端项目和 3 个前端项目共同组成。真正实现了基于 RBAC、jwt 和 oauth2 的无状态统一权限认证的解决方案,实现了异常和日志的统一管理,实现了 MQ 落地保证 100% 到达的解决方案。

    项目效果图:

    总结

    他山之石,可以攻玉。当我们学会了很多知识点之后,需要一个项目来将这些知识点融会贯通,这些开源项目就是很好的资料。现在前后端分离开发方式日渐火热,松哥也强烈建议大家有空学习下这种开发方式。虽然我们身为 Java 工程师,可是也不能固步自封,看看前端单页面应用怎么构建,看看前端工程化是怎么回事,这些都有助于我们开发出更加合理好用的后端接口。好了,十五个开源项目,助力大家在全栈的路上更进一步!

    展开全文
  • 初识Spring Boot框架

    万次阅读 多人点赞 2016-12-19 20:42:04
    前面的铺垫文章已经连着写了六篇了,主要是介绍了Spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说过“约定大于配置”...

    关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!

    前面的铺垫文章已经连着写了六篇了,主要是介绍了Spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说过“约定大于配置”这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,可是使用Spring或者SpringMVC的话依然有许多这样的东西需要我们进行配置,这样不仅徒增工作量而且在跨平台部署时容易出问题。OK,由于这些已经存在的问题,Spring Boot应运而生,使用Spring Boot可以让我们快速创建一个基于Spring的项目,而让这个Spring项目跑起来我们只需要很少的配置就可以了。Spring Boot主要有如下核心功能:

    1.独立运行的Spring项目

    Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。非常方便。

    2.内嵌Servlet容器

    Spring Boot可以内嵌Tomcat,这样我们无需以war包的形式部署项目。

    3.提供starter简化Maven配置

    使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。

    4.自动配置Spring
    5.准生产的应用监控
    6.无代码生成和xml配置

    OK,关于SpringBoot更详细的优缺点小伙伴们也可以自行搜索,我这里不再罗列,我们还是来看看代码。
    #项目创建
    初次接触,我们先来看看如何创建一个Spring Boot项目,这里以IntelliJ IDEA为例,其他的IDE工具小伙伴们自行搜索创建方式:

    首先创建一个项目,创建时选择Spring Initializr,然后Next,如下图:

    这里写图片描述

    填写项目信息,如下图:

    这里写图片描述

    填写项目使用到的技术,上面的Spring Boot版本建议选择最新的稳定版,下面勾选上Web就可以了,如下图:

    这里写图片描述

    最后一步,填写工程名字点击finish:

    这里写图片描述
    OK,第一次创建时系统会去下载需要的依赖等,耗时稍长,以后每次都会很快创建好。
    OK,项目创建成功之后接下来我们来看看这个东西要怎么样去运行。首先我们看到在项目创建成功之后,在项目的根目录下会有一个artifactId+Application命名规则的入口类,如下图:
    这里写图片描述,就是这个Test19SpringBoot2Application类,这是我们整个项目的入口类,这个类有一个@SpringBootApplication注解,这是整个Spring Boot的核心注解,它的目的就是开启Spring Boot的自动配置。OK,那么我在这个类上再添加一个@RestController注解,使之变为一个Controller,然后里边提供一个地址转换方法,如下:

    @RestController
    @SpringBootApplication
    public class Test19SpringBoot2Application {
    
    	public static void main(String[] args) {
    		SpringApplication.run(Test19SpringBoot2Application.class, args);
    	}
    
    	@RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
    	String index(){
    		return "Hello Spring Boot!";
    	}
    }
    

    然后点击项目启动按钮运行,在IntelliJ中就是这个按钮:
    这里写图片描述
    启动成功之后我们就可以直接在浏览器中访问了,如下:
    这里写图片描述
    OK,至此,我们一个简单的Spring Boot工程已经创建出来了,并且成功的从浏览器中访问到了,但是为什么它最终会跑起来呢?想必小伙伴们还有许多疑问,我们来分析下。
    #入口类和@SpringBootApplication注解

    上文说过,我们新建一个Project系统都会帮我们创建一个名为artifactId+Application的入口类,这个类中有一个main方法,这个main方法就是一个标准的Java应用程序的入口方法。而这里的@SpringBootApplication则是一个组合注解,我们可以看看它的源码:

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Inherited
    @SpringBootConfiguration
    @EnableAutoConfiguration
    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    )}
    )
    public @interface SpringBootApplication {
    
    }
    

    我们可以看到它组合了@SpringBootConfiguration、@EnableAutoConfiguration以及@ComponentScan,我们在开发的过程中如果不使用@SpringBootApplication,则可以组合使用这三个注解。这三个注解中,@SpringBootConfiguration实际上就是我们前面几篇博客提到的@Configuration注解,表明这个类是一个配置类,@EnableAutoConfiguration则表示让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置,最后一个@ComponentScan的作用我也不赘述了,唯一要注意的是如果我们使用了@SpringBootApplication注解的话,系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。

    #关闭特定的自动配置
    在上面一小节中我们看到@ComponentScan注解是有一个过滤器的,如果我们只想要@SpringBootApplication去扫描特定的类而不是全部类,那么就可以关闭自动配置,如下:

    @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
    

    #定制Banner
    ##修改Banner
    我们在启动Spring Boot项目的时候,在控制台会默认输出一个启动图案,如下:
    这里写图片描述
    当然,这个图案如果你需要的话是可以自己修改的,修改方式很简单:

    1.在src/main/resources下新建一个banner.txt文档
    2.通过http://patorjk.com/software/taag网站生成需要的字符,将字符拷贝到步骤1所创建的txt文档中,比如我这里为Hello Sang!生成字符,如下:

    这里写图片描述
    点击左下角的选择和拷贝按钮,将这个字符拷贝到txt文档中,然后再启动项目,这个时候控制台输出的文本就会自动改变,如下:
    这里写图片描述
    ##关闭Banner
    可以修改当然也可以关闭,关闭Banner需要我们稍微修改一下main方法中的代码,如下:

    public static void main(String[] args) {
    		SpringApplicationBuilder builder = new SpringApplicationBuilder(Test19SpringBoot2Application.class);
    		//修改Banner的模式为OFF
    		builder.bannerMode(Banner.Mode.OFF).run(args);
    	}
    

    OK,如此修改之后当我们再次启动Project的时候就看不到Banner了。

    #Spring Boot的配置文件
    Spring Boot使用一个全局的配置文件application.properties或者application.yml,配置文件放在src/main/resources目录下。properties是我们常见的一种配置文件,Spring Boot不仅支持properties这种类型的配置文件,也支持yaml语言的配置文件,我这里以properties类型的配置文件为例来看几个案例。

    1.修改Tomcat默认端口和默认访问路径

    Tomcat默认端口是8080,我将之改为8081,默认访问路径是http://localhost:8080,我将之改为http://localhost:8081/helloboot,我们来看看这两个需求要怎么样通过简单的配置来实现。
    很简单,在application.properties文件中添加如下代码:

    server.context-path=/helloboot
    server.port=8081
    

    然后再启动Project,在浏览器中就得这样来访问了:
    这里写图片描述

    常规属性配置

    在前面的博客( Spring常用配置 )中我们介绍了如何在使用Spring容器框架下注入properties文件里的值。如果我们使用了Spring Boot,这项工作将会变得更加简单,我们只需要在application.properties中定义属性,然后在代码中直接使用@Value注入即可。
    如下:

    book.author=罗贯中
    book.name=三国演义
    book.pinyin=sanguoyanyi
    

    我这里专门设置了中文,因为中文不做特殊处理会乱码,处理方式为继续在application.properties中添加如下代码:

    server.tomcat.uri-encoding=UTF-8
    spring.http.encoding.charset=UTF-8
    spring.http.encoding.enabled=true
    spring.http.encoding.force=true
    spring.messages.encoding=UTF-8
    

    然后 在IntelliJ IDEA中依次点击File -> Settings -> Editor -> File Encodings
    将Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。(参考【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】【Springboot 之 解决IDEA读取properties配置文件的中文乱码问题】)。
    然后在变量中通过@Value直接注入就行了,如下:

    	@Value(value = "${book.author}")
    	private String bookAuthor;
    	@Value("${book.name}")
    	private String bookName;
    	@Value("${book.pinyin}")
    	private String bookPinYin;
    

    修改index方法,使之返回这些值:

    @RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
    	String index(){
    		return "Hello Spring Boot! The BookName is "+bookName+";and Book Author is "+bookAuthor+";and Book PinYin is "+bookPinYin;
    	}
    

    然后在浏览器中访问,结果如下:
    这里写图片描述

    很简单吧。

    类型安全的配置

    刚刚说的这种方式我们在实际项目中使用的时候工作量略大,因为每个项目要注入的变量的值太多了,这种时候我们可以使用基于类型安全的配置方式,就是将properties属性和一个Bean关联在一起,这样使用起来会更加方便。我么来看看这种方式怎么实现。

    1.在src/main/resources文件夹下创建文件book.properties

    文件内容如下:

    book.name=红楼梦
    book.author=曹雪芹
    book.price=28
    

    2.创建Book Bean,并注入properties文件中的值

    代码如下:

    @Component
    @ConfigurationProperties(prefix = "book",locations = "classpath:book.properties")
    public class BookBean {
        private String name;
        private String author;
        private String price;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public String getPrice() {
            return price;
        }
    
        public void setPrice(String price) {
            this.price = price;
        }
    }
    

    prefix是指前缀,location指定要注入文件的位置。

    3.添加路径映射

    在Controller中添加如下代码注入Bean:

    @Autowired
    	private BookBean bookBean;
    

    添加路径映射:

    @RequestMapping("/book")
    	public String book() {
    		return "Hello Spring Boot! The BookName is "+bookBean.getName()+";and Book Author is "+bookBean.getAuthor()+";and Book price is "+bookBean.getPrice();
    	}
    

    运行效果如下:

    #日志配置
    默认情况下Spring Boot使用Logback作为日志框架,也就是我们前面几篇博客中用到的打印日志方式,当然如果有需要我们可以手动配置日志级别以及日志输出位置,相比于我们在Spring容器中写的日志输出代码,这里的配置简直就是小儿科了,只需要在application.properties中添加如下代码:

    logging.file=/home/sang/workspace/log.log
    logging.level.org.springframework.web=debug
    

    上面表示配置日志输出位置,下面配置日志级别。

    #Profile配置问题
    Spring常用配置 这篇文章中,我们已经介绍了Profile的作用,已经如何在Spring框架下使用Profile,但是当时小伙伴们看到了还是稍微有点麻烦,在Spring Boot 中系统提供了更为简洁的方式。全局Profile配置我们使用application-{profile}.properties来定义,然后在application.properties中通过spring.profiles.active来指定使用哪个Profile。OK,那么接下来我们来看一个简单的案例。

    1.在src/main/resources文件夹下定义不同环境下的Profile配置文件,文件名分别为application-prod.properties和application-dev.properties,这两个前者表示生产环境下的配置,后者表示开发环境下的配置,如下:

    这里写图片描述

    application-prod.properties:

    server.port=8081
    

    application-dev.properties:

    server.port=8080
    

    然后在application.properties中进行简单配置,如下:

    spring.profiles.active=dev
    

    这个表示使用开发环境下的配置。然后运行项目,我们得通过8080端口才可以访问:
    这里写图片描述
    如果想换为生产环境,只需要把spring.profiles.active=dev改为spring.profiles.active=prod即可,当然访问端口这是也变为8081了,如下:
    这里写图片描述

    本案例下载地址:
    本项目GitHub地址

    以上。

    参考资料:
    《JavaEE开发的颠覆者 Spring Boot实战》第五章、第六章

    展开全文
  • Spring Boot -01- 快速入门篇(图文教程)

    万次阅读 多人点赞 2018-11-28 13:31:59
    Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心...

    Spring Boot -01- 快速入门篇(图文教程)

    今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费!

    什么是 Spring Boot?

    在这里插入图片描述

    Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。

    设计目的: 用来简化新 Spring 应用的初始搭建以及开发过程。

    从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯优于配置” (项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:

    (1)为所有 Spring 开发提供一个更快更广泛的入门体验。

    (2)零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。

    (3)集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。

    (4)提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。

    (5)Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖 Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备

    Spring Boot 在应用中的角色

    Spring Boot 是基于 Spring Framework 来构建的,Spring Framework 是一种 J2EE 的框架(什么是 J2EE?
    Spring Boot 是一种快速构建 Spring 应用
    Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用
    Spring Boot 中流砥柱,承上启下

    在这里插入图片描述

    环境准备

    Maven 安装与环境变量配置

    (1)Maven 安装:

    在这里插入图片描述

    (2)Maven 配置环境变量:

    解压到一个路径,然后配置环境变量:

    • 新建变量名:MAVEN_HOME 变量值:D:\server\apache-maven-3.6.0(这是我的 MAVEN 路径)
    • 编辑变量名:Path 在最前面加上:%MAVEN_HOME%\bin

    (3)检查是否配置成功:

    在命令行输入:

    mvn -V
    

    然后会一大堆东西:
    在这里插入图片描述

    (4)配置 maven 仓库:

    1.打开 maven 文件夹下的 config 文件夹下的 settings.xml;
    2.找到 localRepository 标签,此时是被注释掉的,我们解除注释,然后配置一个路径,例如:D:/space/MavenRepository/maven_jar,这样以后 MAVEN 管理下载的jar 包都会在这个路径下。
    【注意】:注意结点的位置,先找到注释掉的部分,贴在下面

    <localRepository>D:\space\MavenRepository\maven_jar</localRepository>
    

    在这里插入图片描述

    3.配置远程仓库,找到 mirrors 标签

    <!--远程仓库-->
    <mirror>
      <id>aliyun</id>
      <name>aliyun Maven</name>
      <mirrorOf>*</mirrorOf>
       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
    

    在这里插入图片描述

    4.当然我们需要先建这样一个目录结构,然后还要把settings.xml 复制一份到 D:/space/MavenRepository 下

    在这里插入图片描述

    (5)在 idea 配置 maven:
    点击【File】>【Settings】>搜索【Maven】,按截图配置安装目录和选择刚刚 settings 配置文件;
    在这里插入图片描述
    选择完settings之后,本地仓库自动改成settings文件中配置的;点击apply,再点击ok即配置完成。


    使用 idea 快速搭建 Spring Boot

    第一步:新建 Spring Initializr 项目:

    在这里插入图片描述

    (1)选择 Spring Initializr
    (2)选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:\Program Files\Java\jdk1.8.0_191 目录:
    在这里插入图片描述

    (3)然后选择默认的 url (不用管)点击【Next】:

    在这里插入图片描述

    (4)然后填写一下项目的信息:

    在这里插入图片描述

    (5)先勾选上 Web 依赖:
    在这里插入图片描述

    (6)勾选 SQl 下的 MySQL,MyBatis 依赖:
    (根据自己的项目选择,后面可加)
    在这里插入图片描述

    (7)选择好项目的位置,点击【Finish】:

    在这里插入图片描述

    (7)如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDEA 下载相应的 依赖包,默认创建好的项目结构如下:

    在这里插入图片描述

    项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

    • SpringbootApplication: 一个带有 main() 方法的类,用于启动应用程序
    • SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
    • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
    • pom.xml: Maven 构建说明文件

    第二步:HelloController

    在 【main/java/com.xpwi.springboot】包下新建一个【HelloController】:

    在这里插入图片描述

    package com.xpwi.springboot;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: @肖朋伟CSDN
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello() {
            return "Hello Spring Boot!";
        }
    }
    

    第三步:利用 IDEA 启动 Spring Boot

    (1)我们回到 SpringbootApplication 这个类中,然后右键点击运行:

    在这里插入图片描述

    (2)会提示 Maven 导包,点击 import
    在这里插入图片描述

    (3)注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat
    等待一会儿就会看到下方的成功运行的提示信息:

    在这里插入图片描述

    (4)此时,可以看到我们的 Tomcat 运行在 8080 端口,我们来访问下面地址试一下:

    http://localhost:8080/hello
    

    在这里插入图片描述

    Spring Boot 项目文件介绍

    一、解析 pom.xml 文件:

    (1)让我们来看看默认生成的 pom.xml 文件中到底有些什么:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.xpwi</groupId>
        <artifactId>springboot</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>springboot</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    
    </project>
    
    

    (2)我们可以看到一个比较陌生一些的标签 ,这个标签是在配置 Spring Boot 的父级依赖:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    

    有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

    关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven 仓库下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom 文件来查看,挺长的…

    二、应用入口类 SpringbootApplication.java

    Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Javay 应用的入口方法。

    @SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。

    • 其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。
    • Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.xpwi.springboot 包)

    三、Spring Boot 的配置文件:

    Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。

    Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

    Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

    修改 properties 配置文件实例:

    (1)打开 resources 下的 application.properties

    在这里插入图片描述

    (2)在这里我们可以设置访问的端口,将 Tomcat 默认端口设置为 8080 (默认的不修改) ,并将默认的访问路径从 “/” 修改为 “/cn” 时,再访问 http://localhost:8080/ 是什么都没有的,此时要访问 hello 是要使用 http://localhost:8080/cn/hello

    在这里插入图片描述

    注意:如果是 yml 需要在 “:” 后加一个空格,幸好 IDEA 很好地支持了 yml 文件的格式有良好的代码提示;
    我们可以自己配置多个属性

    (3)使用 yml 文件作为配置文件,我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置

    在这里插入图片描述

    (4)在然后使用在我们的 HelloController.java 类中使用 @Value 来获取配置属性,代码(请看注释):

    package com.xpwi.springboot;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: @肖朋伟CSDN
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        // 获取.yml 文件中值
        @Value("${name}")
        private String name;
    
        // 获取 age
        @Value("${csdnUrl}")
        private String csdnUrl;
    
        //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
        @RequestMapping("/hello")
        public String hello() {
            return name + " CSDN 博客:"+ csdnUrl;
        }
    }
    

    (5)重启 Spring Boot ,输入地址:http://localhost:8080/hello 能看到正确的结果:

    在这里插入图片描述

    【注意】:此时如果你第一次使用 idea 出现中文乱码,解决办法:

    在这里插入图片描述

    (6)【注意】: 我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。你也可以在配置文件中使用当前配置:

    在这里插入图片描述

    (7)任然可以得到正确结果:

    在这里插入图片描述

    (8)【问题】: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。

    可以,封装配置信息

    封装配置信息使用方法:

    (1)application.yml 文件内容如下:
    在这里插入图片描述

    (2)新建 author.java 和 HelloController.java 同级,内容如下:

    package com.xpwi.springboot;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "author")
    public class author {
        private  String name;
    
        private  String csdnUrl;
    
        public String getCsdnUrl() {
            return csdnUrl;
        }
    
        public void setCsdnUrl(String csdnUrl) {
            this.csdnUrl = csdnUrl;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    

    (3)此时可能会报错,如果报错,打开 pom.xml 文件,添加内容(注意位置):

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    

    在这里插入图片描述

    (4)重新编写 HelloController 类,内容如下:

    package com.xpwi.springboot;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 测试控制器
     *
     * @author: @肖朋伟CSDN
     * @create: 2018-11-18
     */
    @RestController
    public class HelloController {
    
        // 获取.yml 文件中值
        //@Value("${name}")
        //private String name;
    
        // 获取 age
        //@Value("${csdnUrl}")
        //private String csdnUrl;
    
        @Autowired
        private author author;
    
        //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
        @RequestMapping("/hello")
        public String hello() {
            return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
        }
    }
    

    (5)重启 Spring Boot,访问浏览器:

    http://localhost:8080/hello
    

    在这里插入图片描述

    【提示】:我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个 StudentProperties 的类用来封装这些信息,并用上两个注解:

    • @Component:表明当前类是一个 Java Bean
    • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息

    转载请注明出处:肖朋伟:https://blog.csdn.net/qq_40147863/article/details/84194493

    更多文章链接:

    展开全文
  • 首先介绍操作系统启动过程 加电启动的时候首先载入BIOS(Basic Input Output System),并通过BIOS程序去载入CMOSz中的...接下来再去读取MBR(Master Boot Record,主引导扇区,是计算机开机后访问硬盘时所必须要读取的

    ###首先介绍操作系统启动过程
    加电启动的时候首先载入BIOS(Basic Input Output System),并通过BIOS程序去载入CMOSz中的信息,然后借助CMOS内设定的值去获取主机的各项硬件的设置,然后BIOS进行自检(POST),再进行硬件的初始化,之后定义出可开机的设备,接下来再去读取MBR(Master Boot Record,主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区)中的程序。

    ###Bootloader在操作系统启动过程中的作用
    由于不同系统所在路径不同,因此我们必须要以一个开机管理程序来处理操作系统的载入,这个程序就叫Bootloader。 BootLoader安装在MBR中。

    ###为什么需要Bootloader?
    实际上要将bootloader与内核整合在一起是完全可以做到的,但是如果这样作的话,内核就会失去通用性和灵活性,并且将bootloader与内核分开会更有利于开发和管理,将启动过程中与平台硬件相关的代码集合成bootloader,内核就可以集中处理那些平台通用的部分了。

    ###Bootloader主要的功能:
    1、选择操作系统:一台设备同时安装多个操作系统时,使用者可以选择不同的开机选项来运行不同的操作系统。
    2、载入操作系统:直接指向可开机的程序区域来启动操作系统。
    3、转交其他loader:将开机管理功能转交给其他loader负责(MBR只有一个,但是开机管理程序除了安装在MBR外,还可以安装在每个分区的第一个扇区)。

    ###Windows Boot Manager (BOOTMGR)
    中文名称为Windows开机管理程序或Windows启动管理器。是从Windows Vista开始引进的新一代开机管理程式。当电脑执行完POST后,传统型BIOS会根据启动磁区寻找开机硬盘中标记"启动"分区下的BOOTMGR档案;接著BOOTMGR会读取启动配置信息数据库(BCD, Boot Configuration Database)中的启动配置参数,接著根据其中的配置加载预设或使用者所选择的操作系统。

    这里写图片描述

    展开全文
  • 嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统,交换机就是一种典型的嵌入式系统。与嵌入式系统相对应的是通用计算机系统,比如电脑。...
  • Bootloader U-boot启动

    2010-01-13 11:50:00
    BOOTLOADER再熟悉不过了;今天上网上看一个视频讲的一点bootloader自己之前不知道记下来,怕忘了:(还好家里能上网;还是wifi;嘿嘿;有个有钱的邻居就是好啊;白马村也是中国贫富差距的小缩影啊):bootloader的...
  • 携手STM32CubeMX玩转STM32

    千人学习 2019-04-19 09:30:00
    课程内容分为基础内容和扩展内容,例如:讲解串口时会扩展开讲Xmodem通信协议,讲解ADC/DAC时会扩展讲傅里叶计算,讲解完FLASH操作会扩展将bootloader的编写,讲解完M3的bootloader编写会扩展讲解M0的bootloader.......
  • Spring Boot面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 17:48:42
    文章目录概述什么是 Spring Boot?Spring Boot 有哪些优点?Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?配置什么是 JavaConfig?Spring Boot 自动配置原理是什么?你如何理解 Spring Boot 配置加载...
  • VxWorks 引导程序(BIOS/BootLoader/Bootrom)

    千次阅读 2010-06-26 01:01:00
    Bootrom 完成 vxworks 启动前的基本引导工作,如最简初始化硬件,下载映像文件并解压到RAM中等操作。值得一提的是某些型号处理器对 cache 等部件初始化有特殊要求,可能需在 bootrom 中进行特殊处理。 一、...
  • bootloader之u-boot

    2017-05-10 12:13:51
    u-boot 简介  在嵌入式开发中bootloader称为启动加载器,是必不可少的...常用的bootloader有u-boot,vivi等。  系统上电之后,需要一段程序来进行初始化:关闭看门狗,设置系统时钟,初始化存储控制器(让内存 工作起
  • STM8 bootloaderboot和app皆可使用中断)

    千次阅读 热门讨论 2019-03-29 15:38:52
    STM8 In Application Programming IAP编写的三个要点: ...要编写IAP程序首先需要解决的问题是程序在运行过程中,当发生异常时,如何保证程序正常的跳转到相应的异常服务函数(不论程序是运行在bootloader还是...
  • bootloader之U-boot

    千次阅读 2012-09-26 14:33:03
    bootloader简介: bootloader是引导os启动的一段小程序,它被放在地址为0x00000000的flash处,当硬件加电后启动时就会去执行这段程序,完成硬件的初始化工作,并建立内存空间的映射图,从而为os启动做准备工作。 ...
  • 接下来以Boot-XSBase27024(Blob)作为实例来举一反三地讲解嵌入式Linux开发中Bootloader部分的内容。 2)我们知道,测试嵌入式程序的时候需要通过网络配置进行文件传输,于是这部分的内容在utils文件
  • Bootloader及u-boot简介

    千次阅读 2010-11-07 10:05:00
    Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等。Bootloader 代码与CPU 芯片...
  • 1、了解BootLoader 的基本概念和框架结构 2、了解BootLoader 引导操作系统的过程 3、掌握bootloader 程序的编译方法 4、掌握BootLoader 程序的使用方法 (1)、Boot Loader 的阶段1 通常主要包括以下步骤:  硬件...
  • Bootrom  Bootrom (or Boot ROM) is a small piece of mask ROM or write-protected flash embedded inside the processor chip. It contains the very first code which is executed by the processor on powe.....
  • 通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,这就是所谓的引导加载程序(Boot Loader)。 在Flash存储中...
  • 一、U-boot的存储位置   U-boot 一般是放在硬件“本地”(电路板)的Flash内,也有可能放在SD卡上,但是肯定不会放在内存或网络上。 二、U-boot的意义   U-boot是嵌入式Linux操作系统中运行的第一个程序(可将U-...
  • BootLoader 之U-Boot学习.

    千次阅读 2012-09-27 20:09:30
    U-Boot是适合多种CPU的通用引导程序。可以引导多种操作系统支持多种架构的CPU。 U-boot 源码结构: 文件结构: Board: 开发板相关。对应不同配置的电路板 Cpu: 对应不同的CPU.比如arm920t下就有at91rm9200 ...
  • u-boot移植之前的准备,自己先实现一个极其简单的bootloader
  • Bootloader及u-boot简介 Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等。...
  • Bootloader/u-boot的启动模式 对于计算机系统来说,从计算机开机上电的到操作系统的启动需要一个引导过程。嵌入式Linux同样也需要一个引导的过程,及引导程序就叫做BootloaderBootloader是在操作系统...
  • 以MINI2440开发板开始学习嵌入式LINUX,看韦东山的书和视频,一步一个脚印学习!移植U-BOOT实践中。
  • WinCE Boot方式及 Bootloader架构概述

    千次阅读 2008-10-09 09:38:00
    作者:ARM-WinCE Bootloader的概念就是一个用于引导的loader,在系统上电的时候最先被运行,然后对硬件平台做最基本的初始化,最后把操作系统加载起来。不同的嵌入式操作系统都有自己的Bootloader,但是本质功能都...
  • 1.查阅硬件电路原理图 2.编写LED驱动代码 3.驱动代码详解
  • http://liucw.blog.51cto.com/6751239/1202976
  • Boot | 手把手教你写BootLoader

    千次阅读 2020-07-11 18:07:43
    在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间...熊猫大概去年这个时候写的BootLoader工程(以下简称boot),最近正好被朋友问起发现好多细节已经记不清,就赶快写
  • 为了以后项目升级方便的需要,在原始程序添加CanBoot下载功能;1、把Bootloader安排在高地址区间 (比如0xEE00~0xFFAF),然后固化NVC寄存器的值,将这块Flash区域保护起来;2、中断向量的搬移,将原来0xFFC0所对应的...

空空如也

1 2 3 4 5 ... 20
收藏数 314,127
精华内容 125,650
关键字:

bootloader