springboot项目基本结构

2023-10-27

项目结构

在这里插入图片描述
在这里插入图片描述

SpringbootApplication

与springboot包同级,主程序类

这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

@MapperScan("com.ly.springboot.mapper")
@SpringBootApplication
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

配置文件

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.ly</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot</name>
    <description>Demo project for Spring Boot</description>


    <repositories>
        <repository>
            <!-- 创建私服地址 -->
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

    <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>
        <!--freemarker的依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!--jdbc的依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--thymeleaf的依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <!--mysql的依赖包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--测试单元的依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>
        <!--阿里Druid数据源引入项目即可-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.21</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
        </dependency>
        <!--配置文件执行器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

application.yml

jdbc:
  username: root
  password: 123456
  url: jdbc:mysql://localhost:3306/test
  driverClassName: com.mysql.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.ly.springboot.domain

spring:
  freemarker:
    allow-request-override: false
    allow-session-override: false
    cache: false
    charset: UTF-8
    check-template-location: true
    content-type: text/html
    enabled: true
    expose-request-attributes: false
    expose-session-attributes: false
    expose-spring-macro-helpers: true
    prefer-file-system-access: true
    suffix: .ftl
    template-loader-path: classpath:/templates/
    settings:
      classic_compatible: true
      default_encoding: UTF-8
      template_update_delay: 0

config包

配置信息类(config)

JdbcConfig

@Configuration
public class JdbcConfig {

    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource(){
//        DruidDataSource dataSource = new DruidDataSource();
//        return dataSource;
        return new DruidDataSource();
    }
}

mapper包

数据接口访问层(Dao)

IUserMapper接口

@Mapper
public interface IUserMapper {

    public List<Map<String,Object>> selectUserList();

   // public int insertUser(User user);

    public int insertUser(Map<String,Object> map);

    public int updateUser(Map<String,Object> map);

    //根据用户ID查找这个对象
    public Map<String,Object> selectUserById(int userId);

    public int deleteUser(List<String> list);
}

service包

IUserService接口

数据服务层(Service)

public interface IUserService {

    public List<Map<String,Object>> selectUserList();

  //  public int insertUser(User user);

//    public int insertUser(Map<String,Object> map);
//
//    public int updateUser(Map<String,Object> map);

    //根据用户ID查找这个对象
    public Map<String,Object> selectUserById(int userId);

    public int insertOrUpdateUser(Map<String,Object> map);

    public int deleteUser(List<String> list);


}

UserServiceImpl实现类

数据服务的实现接口(serviceImpl)

service.impl目录下实现IUserService接口

@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private IUserMapper userMapper;

    @Override
    public List<Map<String,Object>> selectUserList() {
        return userMapper.selectUserList();
    }

//    @Override
//    public int insertUser(Map<String, Object> map) {
//        return userMapper.insertUser(map);
//    }
//
//    @Override
//    public int updateUser(Map<String, Object> map) {
//        return userMapper.updateUser(map);
//    }

    @Override
    public Map<String, Object> selectUserById(int userId) {
        return userMapper.selectUserById(userId);
    }

//    @Override
//    public int insertUser(User user) {
//        return userMapper.insertUser(user);
//    }

    @Override
    public int insertOrUpdateUser(Map<String, Object> map) {
        //这里做逻辑判断
        //System.out.println("map"+map);
        int count=0;
        if(map.get("userId")==null||map.get("userId").toString().equals("")){
            count=userMapper.insertUser(map);
        }else{
            count=userMapper.updateUser(map);
        }
        return count;
    }

    @Override
    public int deleteUser(List<String> list) {
        return userMapper.deleteUser(list);
    }


}

controller包

前端控制器(Controller)

UserController

@Controller
@Slf4j
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;

//    @RequestMapping("/index")
//    public String index(HttpServletRequest request){
        System.out.println(userService.selectUserList());
//        request.setAttribute("list",userService.selectUserList());
//        return "index";
//    }

    //modeandview方式
    @RequestMapping("/index")
    public ModelAndView index(){
//        System.out.println(userService.selectUserList());
        Map<String,Object> map =new HashMap<String, Object>();
        map.put("list",userService.selectUserList());
        return new ModelAndView("index", map);
    }

        //实体类的插入or更新操作
    @GetMapping("/insertOrupdateUser")
    public String insertOrupdateUser(){
        return "insertOrupdateUser";
    }

//    @PostMapping("/insertOrupdateUser")
//    //老版
//    //@RequestMapping(value = "/insertOrupdateUser",method = RequestMethod.POST)
//    public String insertOrupdateUser1(User user){
//        //真正意义的插入
//        log.info(user.getUserName());
//        return "redirect:/index";
//    }

    @PostMapping("/insertOrupdateUser")
    //老版
    //@RequestMapping(value = "/insertOrupdateUser",method = RequestMethod.POST)
    public String insertOrupdateUser1(@RequestParam Map<String,Object> map){
        //真正意义的插入
        int count=userService.insertOrUpdateUser(map);
        log.info("count" + count);
        log.info("map" + map);
        return "redirect:/index";
    }

    @GetMapping("/selectUserById")
    //@RequestMapping(value = "/insertOrUpdateUser",method = RequestMethod.POST)
    public ModelAndView selectUserById(@RequestParam int userId){

        return new ModelAndView("insertOrUpdateUser",userService.selectUserById(userId));
    }

    @GetMapping("/deleteUser")
    //@RequestMapping(value = "/insertOrUpdateUser",method = RequestMethod.POST)
    public String deleteUser(@RequestParam String ids){
//        List<String> list = new ArrayList<String>();
//        list.add("1");
//        list.add("2");
//        int count = userService.deleteUser(list);
//        log.info(ids);
        int count = userService.deleteUser(getParamData(ids));
        return "redirect:/index";
    }
}

resources.mapper

mybatis映射文件

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.ly.springboot.mapper.IUserMapper">

<select id="selectUserList" resultType="map">
        select user_id as userId,user_name as userName,user_password as userPassword from tb_user
        order by  user_id desc;
    </select>

    <select id="selectUserById" resultType="map" parameterType="int">
        select user_id as userId,user_name as userName,user_password as userPassword from tb_user
   where user_id=#{userId}  order by  user_id desc;
	</select>

    <insert id="insertUser" parameterType="map" keyProperty="user_id" useGeneratedKeys="true">
        insert into tb_user (user_name,user_password) values(#{userName},#{userPassword});
    </insert>

    <update id="updateUser" parameterType="map">
        update tb_user
        <trim prefix="set" suffixOverrides=",">
            <if test="userPassword   != null and userPassword!= ''">user_password  = #{userPassword},</if>
        </trim>
        where user_id = #{userId};
    </update>

    <delete id="deleteUser" parameterType="java.util.List">
        delete from  tb_user where user_id in
        <foreach collection="list"  open="(" close=")" separator=","  item="item" >
            #{item}
        </foreach>
    </delete>
</mapper>

resources.templates

存放Web页面的模板文件

index.ftl

主页

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
    <title>Index</title>
    <script>
        //全选和非全选
        function chooseAll(){
            //取checkbox的第一个元素节点的状态
            var box = document.getElementsByName("ids");
            if(box[0].checked){
                for (var i = 0; i < box.length; i++) {
                    box[i].checked = true;
                }
                //开启删除按钮
                document.getElementById("btn").disabled = "";
            }else {
                for (var i = 0; i < box.length; i++) {
                    box[i].checked = false;
                }
                //关闭删除按钮
                document.getElementById("btn").disabled = "disabled";
            }
        }
        function chooseOne() {

            var box = document.getElementsByName("ids");
            var result = false;
            for (var i = 1; i < box.length; i++) {
                if(box[i].checked == false){
                    result = true;
                    break;
                }
            }
            if(result){
                box[0].checked = false;
                //关闭删除按钮
                //document.getElementById("btn").disabled = "disabled";
            }else{
                box[0].checked = true;
                //开启删除按钮
                //document.getElementById("btn").disabled = "";
            }

            //判断是否开始删除按钮
            var temp = false;
            for(var i = 1; i < box.length; i++){
                if(box[i].checked){
                    temp = true;
                    break;
                }
            }
            if(temp){
                document.getElementById("btn").disabled="";
            }else{
                document.getElementById("btn").disabled="disabled";
            }
        }

        //执行删除的方法,通过confirm询问框
        function del(){
            var box=document.getElementsByName("ids");
            var ids="";
            for(var i=1;i<box.length;i++){
                if(box[i].checked){
                    ids+=box[i].value+",";
                }

            }
            if(confirm('你确定要删除id是'+ids+'的数据吗?')){
                alert('执行删除');
                location.href='deleteUser?ids='+ids;
            }else{
                alert('您取消了删除的操作!');
            }

        }
    </script>
</head>
<body>

<#if list?? && (list?size > 0) >
    <table>
        <tr>
            <td><input type="checkbox" name="ids" onclick="chooseAll();"></td>
            <td>序列号</td>
            <td>userId</td>
            <td>userName</td>
            <td>userPassword</td>
            <td>操作</td>
        </tr>
        <#list list as item>
            <tr>
                <td><input type="checkbox" name="ids" value="${item.userId}" onclick="chooseOne();"></td>
                <td>${item_index+1}</td>
                <td>${item.userId}</td>
                <td>${item.userName}</td>
                <td>${item.userPassword}</td>
                <td><a href="selectUserById?userId=${item.userId}">修改</a></td>
            </tr>
        </#list>
        <tr>
            <td><a href="insertOrUpdateUser">点击我新增数据</a></td>
            <td><input type="button" value="删除" id="btn" disabled="disabled" onclick="del();"></td>
        </tr>
    </table>
<#else>
    暂无数据
</#if>
</body>
</html>

insertOrupdateUser.ftl

增加或修改页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>insertOrupdate</title>
    <script>
      //  console.log('#{userId}');
      //  console.log('<%=userId%>');
        window.onload = function(){
            var userId = document.getElementById("userId").value.trim();
            if(userId == '' || userId ==null){
                document.getElementById("userName").disabled = "";
            }else{
                document.getElementById("userName").disabled = "disabled";
            }

        }
    </script>
</head>
<body>
增加数据
<!--readonly = "readonly" && disabled ="disabled"-->
<form action="insertOrupdateUser" method="post">
    <input type="hidden" name="userId" id="userId" value="${userId}">
    <p>userName<input type="text" id="userName" name="userName" value="${userName}"></p>
    <p>userPassword<input type="text" id="userPassword" name="userPassword" value="${userPassword}"></p>
    <p><input type="submit"></p>
</form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot项目基本结构 的相关文章

  • 点击 Java Web 服务:curl 或 URLConnection

    我使用的 Java 服务器在以下 URL 上公开 RESTful API http localhost 8080 my server 文档建议使用curl用于提交简单的PUT请求 文件上传 并强烈建议用户使用与示例中提供的完全相同的参数 所
  • 我们可以实例化一个抽象类吗?

    在一次采访中 有人问我 我们是否可以实例化一个抽象类 我的回答是 不 我们不能 但是 面试官告诉我 错了 我们可以 我对此争论了一下 然后他告诉我自己在家尝试一下 abstract class my public void mymethod
  • 为什么签名的 Android apk 无法在模拟器上运行

    我已经制作了一个android项目的签名apk 每当我的客户尝试在模拟器上运行它时 他都会遇到以下错误消息 D Android android sdk windows tools gt adb install r abc apk 500 K
  • Chrome 崩溃:尝试在空对象引用上调用虚拟方法“long android.view.accessibility.AccessibilityNodeInfo.getSourceNodeId()”

    在处理网页的搜索表单 JavaScript CSS HTML 时 每次单击网络搜索图标并且输入字段获得焦点时 Chrome 浏览器 Android 10 都会崩溃 崩溃报告中的调试堆栈跟踪显示 Attempt to invoke virtu
  • Spring Security 中 Web 忽略和 Http 允许之间的区别?

    这两种方法有什么区别 Override protected void configure HttpSecurity http throws Exception http authorizeRequests antMatchers api p
  • 在循环中使用 if 语句? - 加工

    假设我必须在 for 循环中使用 if 语句 并且 for 循环在特定条件下触发 而 if 语句仅在 for 循环达到特定阶段时触发 例如 条件是一个计数器 当发生特定事件 例如球从屏幕上掉下来 时 该计数器会进行计数 每次球穿过屏幕时 都
  • Java如何从字符串实例化一个类[重复]

    这个问题在这里已经有答案了 可能的重复 在 Java 中从变量创建新类 https stackoverflow com questions 1268817 create new class from a variable in java 我
  • 使用 iText 在内存上生成在磁盘上生成的 PDF

    我正在从 Java 应用程序生成 PDF 并且效果很好 问题是 PDF 在磁盘上生成为 Document documento new Document PageSize A4 25 25 25 25 PdfWriter writer Pdf
  • 如何仅使用命令行运行 Maven 创建的 jar 文件

    我需要一些帮助来尝试使用命令行运行以下 Maven 项目 https github com sarxos webcam capture https github com sarxos webcam capture webcam captur
  • 返回 Consumer 表达式内的 Method 值

    我试图在方法中返回一个布尔值 并且我正在使用消费者函数 有什么方法可以直接在 Consumer 表达式中返回该值吗 这是代码 private static boolean uuidExists UUID uuid MySQL getResu
  • 使用pdfbox从pdf中提取图像

    我正在尝试使用 pdfbox 从 pdf 中提取图像 示例 pdfhere http www ignou ac in upload questionpaper CS 74 PDF 但我只得到空白图像 我正在尝试的代码 public stat
  • Android-如何在指定时间后台下载数据

    我提前很抱歉没有发布任何代码 主要是因为我一生都无法弄清楚我需要如何做我需要做的事情 基本上 在一天中的指定时间间隔 例如下午 5 点 我希望我的应用程序从我的服务器下载一些数据并将其存储在设备上 这是为了减少每次运行应用程序时下载数据对我
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • Spring Boot 中的外部化配置,多个应用程序在同一容器中运行

    我正在构建多个 Spring Boot 应用程序 这些应用程序将部署在同一个 servlet 容器上 但我很难让 Spring Boot 按照我想要的方式使用外部化配置文件 而不是像框架想要的那样 情况 多个 Spring Boot 应用程
  • 在java中的super调用之前创建一个对象

    考虑到简单的java代码是行不通的 public class Bar extends AbstractBar private final Foo foo new Foo bar public Bar super foo 我需要在之前创建一个
  • JavaFX:在 WebView img 标签中未加载本地图像

    以下是我的代码 一切安好 我可以加载远程页面 我可以放置 HTML 内容 但我的img标签显示一个X标志表示无法加载图像 Note 我的图像与类位于同一个包中JavaFX在 Smiley 文件夹中 我可以列出所有图像 这意味着路径没有问题
  • 在Android中创建自定义按钮类

    我正在尝试为我的 Android 应用程序创建自定义按钮类 public class TicTacButton extends Button 我已经在里面设置了所有构造函数TicTacButton并创建了自定义方法和属性 在我的主要活动中
  • Jsplitpane 自动调整大小

    我有一个 JSPlitPane 它们之间有 50 的分隔线 这工作正常 但是 当我在右侧添加一些 JLabels 时 jsplitpane 会忽略我的 50 分隔符 左侧窗格会增加其大小 并会挤压右侧窗格 为什么会发生这种情况以及如何解决
  • Struts2 中有多种结果类型?

    我有一个使用 Tiles 的 Struts2 应用程序 如何在操作映射中获取多种结果类型 因为我需要将de输出设置为JSON数据 并且同时Tiles 我努力了

随机推荐

  • Java输入char类型的方法

    C 中可以用输入流cin轻松的完成对int char String double等等基本数据类型的输入 而JAVA中则必须使用Scanner类 头文件java util Scanner 对于其他的数据类型Scanner类提供了直接的函数使用
  • 充电器 蓝桥杯十四届模拟 python

    问题描述 小蓝有一个充电器 可以使用不同的电压和电流充电 给定充电器工作的记录 请计算在这个记录期间总共通过充电传输了多少电能 输入格式 输入第一行包含一个整数 n 表示记录的条数 接下来 n 行 每行包含一个时刻 T 和两个非负整数 U
  • 方格运动问题

    常见的一个经典问题 给定一个方格子 另左上角坐标为 0 0 右下角坐标为 M N 从左上角开始每次只能向右走或者向下走 最后达到右下角的位置 求一共有多少种不同的路径 数学的想法 对于计算这个问题的时候 可以去思考 不管怎样 从上往下从左往
  • openwrt学习指南

    路由器的硬件构成 路由器的软件构成 路由器固件开发的一般流程 Openwrt常用命令 1 文件 目录类命令 cd cat rm touch mkdir Is mv grep 2 文本编辑器命令 3 权限类命令 chmod 4 模块命令 rm
  • 项目的目的,目标和范围的区别

    目的 goal 目标 objectives 范围 scope http www projectmanagementquestions com 3979 what is the difference between objective goa
  • Python编程进阶,常用8大技巧

    介绍 Python 炫酷功能 例如 变量解包 偏函数 枚举可迭代对象等 的文章层出不穷 但是还有很多 Python 的编程小技巧鲜被提及 因此 本文会试着介绍一些其它文章没有提到的小技巧 这些小技巧也是我平时会用到的的 让我们一探究竟吧 整
  • Matlab常见错误及解决办法归纳

    Matlab常见错误及解决办法归纳 1 Subscript indices must either be real positive integers or logicals 中文解释 下标索引必须是正整数类型或者逻辑类型 出错原因 在访问
  • TypeError: Converting circular structure to JSON

    TypeError Converting circular structure to JSON 报错原因 一般报错TypeError Converting circular structure to JSON是因为存在循环引用 并且使用JS
  • Postgre 12 备份数据库

    打开pgAdmin 4 在Schemas的pulice库新建address person表 选中数据库右键 点击Backup https www pgadmin org docs pgadmin4 development backup di
  • 2019最新某响应式开发一招致胜

    资深全栈工程师 姜维 姜老师是一位真正的全栈工程师 有10余年互联网行业从业经验 有丰富的前后端开发 敏捷过程 项目管理经验 负责过多个产品和技术团队 在慕课网先后出品了 基于bootstrap的网页开发 Ajax全接触 等十余门课程 帮助
  • 泛读论文:Person-reID 行人重识别合集

    基于融合特征的行人再识别方法 模式识别与人工智能 2017 3 问题 目前常用的行人再识别方法主要集中在行人外形特征的描述和同一行人对应的 2 幅图像之间距离的学习度量 由于行人图像的亮度和相机角度的变化等 提取行人的外形特征的不变性较难
  • Python彩色图像卷积特征提取——边缘提取

    一 边缘提取 图像提取边缘是基于像素梯度方法实现的 原理是把图像的灰度看成二维曲面 边缘是曲面的突出部分 利用梯度找到变化最的突变点 要想得到一幅图像的梯度 则要在图像的每个像素点位置进行计算偏导数 公式如下 对应的差分公式 当已知离散数据
  • 基于RS的沈阳土地利用情况

    基于RS的沈阳土地利用情况 摘要 众所周知 土地对于社会经济稳定和可持续发展以及全球环境的变化都有着一定的影响 有关土地利用演变的相关研究已受到全世界的关注 本文对沈阳市土地利用的时空演变进行研究和规划 从遥感的原理出发 介绍了土地利用分析
  • android实现下拉框搜索功能,如何在Android中的搜索输入字段旁边添加下拉列表?...

    Enabling suggestions on a device When your application is configured to provide suggestions in Quick Search Box it is no
  • 入门电机系列之5编码器

    入门电机系列 基于STM32硬件 本文章学习借鉴于野火团队资料 以表感谢 官网http products embedfire com 编码器的原理与应用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 入门电机系
  • Spring Boot教程

    一 简介 Spring Boot完整教程 主页及目录 swagger 在前后端分离的项目中 接口文档是前后端沟通联调的重要工具 一般我们后端人员会使用接口文档工具 如小幺鸡甚至Excel等 编写接口文档 对于后端开发来说 编写这个json格
  • 关于stm32f103的adc时钟配置

    关于stm32f103的adc时钟配置 PS 由于作者水平有限欢迎各位大佬批评与指正
  • 迪杰斯特拉算法详解+模版+例题

    迪杰斯特拉算法 Dijkstra 是由荷兰计算机科学家狄克斯特拉于1959 年提出的 因此又叫狄克斯特拉算法 是从一个顶点到其余各顶点的最短路径算法 解决的是有权图中最短路径问题 迪杰斯特拉算法主要特点是从起始点开始 采用贪心算法的策略 每
  • Hbase 的复制

    HBase默认采用异步复制的方式同步数据 即客户端执行完put之后 RegionServer的后台线程不断地推送HLog的Entry到Peer集群 这种方式一般能满足大多数场景的需求 例如跨集群数据备份 HBase集群间数据迁移等 但是HB
  • springboot项目基本结构

    项目结构 SpringbootApplication 与springboot包同级 主程序类 这个类是SpringBoot的主配置类 SpringBoot就应该运行这个类的main方法来启动SpringBoot应用 MapperScan c