SpringBoot基本套路

本文介绍SpringBoot框架的优势及基本使用方法,包括内置Tomcat服务器、自动配置功能、常用starter依赖等,并通过一个简单的HelloWorld案例演示如何搭建SpringBoot项目。

<1> 学习SpringBoot,得了解它的优势所在,这也是为啥用它的原因;

        (1).SpringBoot对Spring框架做了封装

        (2).SpringBoot内置Tomcat服务器,启动时会自动将程序发布到Tomcat服务器

        (3).SpringBoot具有自动配置功能,去除了XML配置,完全采用Java配置(注解)

        (4).SpringBoot内置自动创建很多对象,例如连接池\JdbcTemplate\DispatcherServlet等,需要使用可以直接注入应用

        (5).SpringBoot提供了一系列的工具包集合,便于开发引入

  • 基础包:spring-boot-starter-parent
    IOC包:spring-boot-starter
    MVC:spring-boot-starter-web
    DAO:spring-boot-starter-jdbc
    AOP:spring-boot-starter-aop
    mybatis: mybatis-spring-boot-starter


<2>SpringBoot基本套路

      例:用SpringBoot实现hello案例

  1. 创建maven project,在pom.xml添加boot包

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.4.7.RELEASE</version>
    </parent>
    <!--添加mvc包--根据层级原因,其中包含IOC包 -->
    <dependencies>
        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
  2. 编写HelloController

    @RestController //等价于@Controller+@ResponseBody
    public class HelloController {
    
        @RequestMapping("/hello.do")
        public Map<String,Object> execute(){
            Map<String,Object> data = new HashMap<String, Object>();
            data.put("msg", "Hello Boot");
            return data;
        }
    }
    
  3. 编写启动Boot应用的类

    @SpringBootApplication
    public class BootApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(BootApplication.class, args);
        }
    }
    
  4. 修改tomcat端口号和请求项目名(application.properties)——<防止出现与tomcat的端口号一致而导致项目无法运行>

    server.port=8888
    server.context-path=/boot

  5.编写JSP页面

        

     <h1>#{msg}<h1>

        以上即为springboot的基本套路应用;






动态规划是用于解决最优化问题的算法技术,通过将复杂问题分解为简单子问题,利用子问题的解构建原始问题的解,适用于具有最优子结构和重叠子问题特性的问题。其基本套路如下: ### 明确问题特性 判断问题是否具备最优子结构和重叠子问题特性。最优子结构指问题的最优解可由子问题的最优解组合而成;重叠子问题意味着求解过程中会多次遇到相同子问题 [^1]。 ### 穷举求解 动态规划的核心是穷举,因为要找最值,需把所有可行答案穷举出来再找最值。但这类问题存在重叠子问题,暴力穷举效率低下,所以要用「备忘录」或者「DP table」来优化穷举过程。同时,问题要具备最优子结构,可通过子问题的最值得到原问题的最值 [^3]。 ### 列出状态转移方程 这是正确穷举的关键,只有列出正确的状态转移方程,才能准确找到解 [^3]。 ### 避免重复计算 动态规划算法对每个子问题只求解一次,将结果保存在一张表中,避免每次遇到子问题时重新计算答案。例如在解决不同路径问题时,使用二维数组 `dp` 存储中间结果 [^2]。 ### 空间优化 根据问题的状态转移方程,若当前状态只和之前的部分状态有关,可进一步优化空间复杂度。如斐波那契数列问题,当前状态只和之前的两个状态有关,可将空间复杂度降为 O(1) [^4]。 以下是不同路径问题使用动态规划求解的 Python 代码示例: ```python import xlwt def writedp(dp): excel = xlwt.Workbook(encoding='utf-8') sheet = excel.add_sheet("dp") for i in range(len(dp)): for j in range(len(dp[0])): sheet.write(i, j, dp[i][j]) excel.save("dp.xls") class Solution(object): def uniquePaths(self, m, n): """ :type m: int :type n: int :rtype: int """ dp = [[1 for _ in range(n)] for _ in range(m)] for i in range(1, m): for j in range(1, n): dp[i][j] = dp[i - 1][j] + dp[i][j - 1] writedp(dp) return dp[-1][-1] s = Solution() s.uniquePaths(3, 7) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值