springboot(三)

如何在10亿数中找出前1000大的数(经典topN)

    排序算法然后去除前1000个数
    部分排序
    堆
    分治
    

三方登录某系统,使用其他系统的用户,实现本系统登录的方式

Ticket    Cookie

fiddler下载
https://sm.myapp.com/original/Development/FiddlerSetup-5.0.20173.50948.exe

Springboot入门

    @SpringBootApplication      启动类(Auto自动启动一些、导入@Import一些)    
    @ConfigurationProperties 和    @Value    区别    (Auto自动)
    @configuration    配置类
    @Bean            给spring容器添加组件
    @EnableWebMvc    SpringMVC全面支持    (@WebMvcCon?gurationSupport基础支持)
    @Conditional    条件  派生注解
    @Component
    
    @Autowired
    @RestController ----》@Controller + @RequestBody
    @ReqeustMapping---》GetMaping、PostMaping、PutMaping、DeleteMaping
    
    @Mapper或者mapperScan
    @Select()
    @Delect()    
    @Options(useGeneratedKeys = true,keyProperty = "id")
    @Insert()    
    @Update()
    
一、Spring Boot简介

    1、什么是SpringBoot

        简化Spirng应用的一个框架
        真个Spring技术栈的整合
        J2EE开发的一站式解决方案

    2、微服务

        架构风格、小型服务、可以通过HTTP的方式进行互通

        单体应用(一个war)all in one---》

        每个功能元素最终都是一个可独立替换和独立升级的软件单元

    3、配置文件
            
        【application.yml】(key    :空格value)
        【application.properties】(默认格式和设置的格式有个能不同)(key=value)

        可以使用${random.uuid}随机数
        占位符获取之前的配置值,如果没有可以使用 :后跟上指定的默认值

    4、【@ConfigurationProperties】和【@Value】区别

        都是把配置文件中的配置和对象的属性进行绑定
        @ConfigurationProperties    批量注入配置文件中的属性、支持松散绑定,支持JSR3030数据校验、支持复杂类型封装    
        @Value            一个一个指定、支持SpEL

    5、@PropertySource&@ImportResource&@Bean

        @PropertySource:指定属性文件,让自定义属性文件被spring加载进来和bean对象的属性进行一一映射。
        
        @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效。
        @ImportResource(locations = {"classpath:beans.xml"})

        
        【@configuration】
        【@Bean】给spring容器添加组件
        
        SpringBoot推荐给容器中添加组件的方式:使用全注解的方式
        1)配置类@Configurtion---->Spring配置文件
        2) 使用@Bean给容器中添加组件
    
    6、Profile

        多Profile文件配置
        1)在配置文件中指定 spring.pro?les.active=dev
        2)命令行:java -jar spring-boot-02-con?g-0.0.1-SNAPSHOT.jar --spring.proiles.active=dev; 可以直接在测试的时候,配置传入命令行参数
        3)虚拟机参数;-Dspring.proiles.active=dev

    7、测试
        @RunWith(SpringRunner.class)
        @SpringBootTest
        public class HelloWorldTest{}
        @Test
        public void helloTest{}

    8、配置文件优先级    
        
        file./config   ----> file --->  classpath./config  --->classpath  高优先级会覆盖地优先级的,
        四个位置全部查看,互补

        还可以通过spring.config.location来改变默认的配置文件位置,和默认的配置共同加载起作用,形成互补配置

    9、外部配的加载顺序
        1)命令行参数 --servers.port=8087

            所有的配置都可以在命令行上进行指定 
            java -jar spring-boot-02-con?g-02-0.0.1-SNAPSHOT.jar –server.port=8087 –server.context-path=/abc 
            多个配置用空格分开; –配置项=值
        
        2)来 自 java:comp/env 的 JNDI 属 性
        3)Java系统属性(System.getProperties())

    10、自动配置原理

        1)SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration
            
            利用EnableAutoConfigurationImportSelector给容器中倒入一些组件
            可以查看selectImports()方法的内容    
            List con?gurations = getCandidateCon?gurations(annotationMetadata, attributes);获取候选的配置

        类路径下 META-INF/spring.factories 里面配置的所有EnableAutoCon?guration的值加入到了容器中;
        
        @Conditional派生注解(Spring注解版原生的@Conditional作用)

        作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置里面的所有内容才生效;
        
        1)、SpringBoot启动会加载大量的自动配置类

        2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;

        3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了)

        4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这 些属性的值;

        xxxxAutoConfgurartion:自动配置类; 给容器中添加组件

        xxxxProperties:封装配置文件中相关属性;
        
        //Aspect
        
        debut=true  开启
        AUTO‐CONFIGURATION REPORT        Positive matches:(自动配置类启用的)
                                        Negative matches:(没有启动,没有匹配成功的自动配置类)
        
    三、日志

        1、日志框架
        
        市面上的日志框架;JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j….
        
        SLF4j 不知接调用日志的实现了,而是调用日志抽象(Aba)层里面的方法
        
        https://www.slf4j.org
        
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
        public class HelloWorld {
            public static void main(String[] args) {
                Logger logger = LoggerFactory.getLogger(HelloWorld.class);
                logger.info("Hello World"); 
            }
        }
        
        配置文件还是做成日志实现框架自己本身的配置文件
        
        (slf4j+logback): Spring(commons-logging)、Hibernate(jboss-logging)、MyBatis、xxxx
        
        总结
        1)springboot底层也是使用【slf4j+logback】的方式进行日志记录
        2)Springboot也把其他的日志都替换成了slf4j
        3)中间替换包
        4)如果我们引用了其他框架?一定要把这个默认的日志框架溢出掉
        
        logback.xml:直接就被日志框架识别了;

        logback-spring.xml:日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot
        的高级Pro?le功能
        
    templates模板
    
        三种引入公共片段的th属性:

            th:insert:将公共片段整个插入到声明引入的元素中

            th:replace:将声明引入的元素替换为公共片段

            th:include:将被引入的片段的内容包含进这个标签中
    
    springmvc auto -configuration
    
        springboot自动配置好了springmvc
        
        自己添加的格式化器转换器,我们只需要放在容器中即可
        HttpMessageConverter:SpringMVC用来转换Http请求和响应的;User—Json
        
    如何修改SpringBoot的默认配置
    
        1)SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean、@Component)如果有就用
            用户配置的,如果没有,才会自动配置;如果有些组件可以由多个(ViewResolver)将用户配置的自己默认的组合起来
            
        2)、在SpringBoot中会有非常多的xxxCon?gurer帮助我们进行扩展配置

        3)、在SpringBoot中会有很多的xxxCustomizer帮助我们进行定制配置
        
    国际化
    
        LocaleResolver获取区域信息对象
        Locale区域信息对象
        
        RequestMapping
        PostMapping
        GetMapping
        PutMapping
        DeleteMapping
        
    登录
    
        1、禁用缓存    2、页面修改完成后ctrl+f9重新编译        
        
        【Restful】CRUD        emp---GET    emp---POST        emp/{id}---PUT        emp/{id}---DELETE
        普通CRUD            getEmp        addEmp?xxx        updateEmp>id=xxx    deleteEmp?id=xxx
        
    
    整合Mybaits
    
    整合SpringJPA
    
        SpringData
        
            1)【统一标准】统一的API来对数据访问层进行操作,主要是Commons项目来实现
            2)统一的【Respostory接口】
            3)统一xxxTemplate:模板 MongoTemplate、RedisTemplate
            
        JPA(规范)@Entity
        
        JPA(ORM Object Relational Mapping)
        
            1)编写一个实体类与数据库
            
            2)public interface UserRepository extends JpaRepository<User, Integer>{}
            
            3)基本配置
            jpa:
                hibernate:
                #更新或者创建数据结构表
                ddl-auto: updata
                #控制台显示sql
                show-sql: true
                
    启动流程
    
        几个重要的时间回调机制

        配置在META-INF/spring.factories

        ApplicationContextlnitializer
    
        SpringApplicationRunListener

        只需要放在ioc容器中

        ApplicationRunner

        CommandLineRunner
    
        1)、创建SpringApplication对象
        
            initialize(source);
            从类路径下    META-INF/spring.factories 找 
            
        2)、run()

    自定义starter
    
        1)、这个场景需要使用到的依赖是什么
        2)、如何编写自动配置
        

        @Configuration    //指定这个类是一个配置类
        @ConditionalOnxxx    //指定条件成立的情况下自动配置类生效
        @AutoConfigureAfter        //指定自动配置类的顺序
        @Bean    //给容器中添加组件
        
        @ConfigurationProperties  //结合相关的xxxProperties类来绑定相关的配置
        @EnableConfigurationProperties    //让xxxProperties生效加入到容器中
        
        配置在META-INF/spring.factories
    
Docker

    1、什么是Docker
    
        是一个开源的应用容器引擎,基于Go语言,遵循apache2.0协议开源
        
        Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像;

        运行中的这个镜像称为容器,容器启动是非常快速的。
        
    2、核心概念

        docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
        docker客户端(Client):连接docker主机进行操作;
        docker仓库(Registry):用来保存各种打包好的软件镜像;
        docker镜像(Images):软件打包好的镜像;放在docker仓库中;
        docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

操作系统环境变量
RandomValuePropertySource配置的random.*属性值
由jar包外向jar包内进行寻找;优先加载带pro?le

jar包外部的application-{pro?le}.properties或application.yml(带spring.pro?le)配置文件
jar包内部的application-{pro?le}.properties或application.yml(带spring.pro?le)配置文件
再来加载不带pro?le

jar包外部的application.properties或application.yml(不带spring.pro?le)配置文件
jar包内部的application.properties或application.yml(不带spring.pro?le)配置文件

10.@Con?guration注解类上的@PropertySource

11.通过SpringApplication.setDefaultProperties指定的默认属性所有支持的配置加载来源;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值