总想对微服务架构做一个小小的总结,不知如何下手,最近觉得还是从搭建微服务的过程来入手,对于springboot的maven项目从构建多模块架构进而衍化为常用的微服务架构来做个记录吧。

  首先,创建多个springboot项目,项目结构如图:

      裁剪后如右侧

  创建完成后,先解释一下:sharp-pom是父类工程,其他所有工程都要继承该工程,sharp-pom主要用来管理版本和声明一些jar的引用,本博主没有做聚合工程,这里说明一下聚合和继承的关系:继承是父POM为了抽取统一的配置信息和依赖版本控制,方便子POM直接引用,简化子POM的配置。聚合(多模块)则是为了方便一组项目进行统一的操作而作为一个大的整体,所以要真正根据这两者不同的作用来使用,不必为了聚合而继承同一个父POM,也不比为了继承父POM而设计成多模块。

接下来对各个模块进行处理
sharp-pom 只需要保留pom.xml文件即可,注意打包方式一定选择pom,具体内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <groupId>com.sharp</groupId>
  7. <artifactId>sharp-pom</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <packaging>pom</packaging>
  10.  
  11. <name>sharp-pom</name>
  12. <description>Demo project for Spring Boot</description>
  13.  
  14. <parent>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-starter-parent</artifactId>
  17. <version>2.1.0.RELEASE</version>
  18. <relativePath/>
  19. </parent>
  20.  
  21. <properties>
  22. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  23. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  24. <project.version>0.0.1-SNAPSHOT</project.version>
  25. <java.version>1.8</java.version>
  26. <mysql.version>8.0.12</mysql.version>
  27. <mybatis.spring.version>1.3.2</mybatis.spring.version>
  28. <jdbc.version>5.1.1.RELEASE</jdbc.version>
  29. <druid.version>1.1.10</druid.version>
  30. <skipTests>true</skipTests>
  31. </properties>
  32. <!-- dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)dependencyManagement里只是声明依赖,并不实现引入,
  33. 因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会
  34. 从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。 -->
  35. <!-- 这里只是声明,子项目中用到时候应用不需要再次引入版本号,统一在此管理了版本 -->
  36. <dependencyManagement>
  37. <dependencies>
  38. <dependency>
  39. <groupId>com.alibaba</groupId>
  40. <artifactId>druid</artifactId>
  41. <version>${druid.version}</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework</groupId>
  45. <artifactId>spring-jdbc</artifactId>
  46. <version>${jdbc.version}</version>
  47. </dependency>
  48. <dependency>
  49. <groupId>mysql</groupId>
  50. <artifactId>mysql-connector-java</artifactId>
  51. <version>${mysql.version}</version>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.mybatis.spring.boot</groupId>
  55. <artifactId>mybatis-spring-boot-starter</artifactId>
  56. <version>${mybatis.spring.version}</version>
  57. </dependency>
  58. </dependencies>
  59. <!-- 私服配置,子项目继承后不需要在子项目中配置 -->
  60. </dependencyManagement>
  61. <distributionManagement>
  62. <repository>
  63. <id>my-release</id>
  64. <url>http://192.168.135.128:8081/repository/maven-releases/</url>
  65. </repository>
  66. <snapshotRepository>
  67. <id>my-snapshots</id>
  68. <url>http://192.168.135.128:8081/repository/maven-snapshots/</url>
  69. </snapshotRepository>
  70. </distributionManagement>
  71. </project>

接下来的common、entity、mapper三个项目主要作为后面的依赖包均不需要启动类和测试类,都可以直接干掉,其中mapper有配置文件故而也要保留src/main/resources目录,其他两项只需要保留src/main/java即可,这些项目打包后是一个很普通的jar包,所以pom中不需要引入maven的打包插件,如果引入的话启动会报错。。。java:[1,17] 找不到符号、程序包。。。不存在之类的,因为只是一个普通包,我们直接把它干掉就行

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>

  然后层层依赖,没有什么特别的,需要注意的是,非微服务的多模块,controller层直接依赖service层,所以service层不需要启动,service层也可以直接搞成如common、entity一样的结构,只是一个普通的依赖包即可,如果是作为微服务的一个服务,那么它要想注册中心注册,就需要在该项目进行相关数据库、mybatis及dubbo、zookeeper等的配置,现在这一步我们只是作为一个普通jar包依赖,故而相关数据库等的配置都在访问层进行即在sharp-user项目中进行配置。

common项目pom,除了pom暂时无其他内容

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <parent>
  7. <groupId>com.sharp</groupId>
  8. <artifactId>sharp-pom</artifactId>
  9. <version>0.0.1-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>sharp-common</artifactId>
  12. <packaging>jar</packaging>
  13.  
  14. <name>sharp-common</name>
  15. <description>公共模块</description>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter</artifactId>
  21. </dependency>
  22.  
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-test</artifactId>
  26. <scope>test</scope>
  27. </dependency>
  28. </dependencies>
  29. <!-- <build>
  30. <plugins>
  31. <plugin>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-maven-plugin</artifactId>
  34. </plugin>
  35. <plugin>
  36. <groupId>org.apache.maven.plugins</groupId>
  37. <artifactId>maven-surefire-plugin</artifactId>
  38. <version>2.6</version>
  39. <configuration>
  40. <skipTests>true</skipTests>
  41. </configuration>
  42. </plugin>
  43. </plugins>
  44. </build> -->
  45. </project>

entity pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <parent>
  7. <groupId>com.sharp</groupId>
  8. <artifactId>sharp-pom</artifactId>
  9. <version>0.0.1-SNAPSHOT</version>
  10. </parent>
  11. <artifactId>sharp-entity</artifactId>
  12. <packaging>jar</packaging>
  13.  
  14. <name>sharp-entity</name>
  15. <description>Demo project for Spring Boot</description>
  16.  
  17. <dependencies>
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter</artifactId>
  21. </dependency>
  22.  
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-starter-test</artifactId>
  26. <scope>test</scope>
  27. </dependency>
  28. <dependency>
  29. <groupId>com.sharp</groupId>
  30. <artifactId>sharp-common</artifactId>
  31. <version>${project.parent.version}</version>
  32. </dependency>
  33. </dependencies>
  34.  
  35. <!-- <build>
  36. <plugins>
  37. <plugin>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-maven-plugin</artifactId>
  40. <executions>
  41. <execution>
  42. <goals>
  43. <goal>repackage</goal>
  44. </goals>
  45. </execution>
  46. </executions>
  47. </plugin>
  48. <plugin>
  49. <groupId>org.apache.maven.plugins</groupId>
  50. <artifactId>maven-surefire-plugin</artifactId>
  51. <version>2.6</version>
  52. <configuration>
  53. <skipTests>true</skipTests>
  54. </configuration>
  55. </plugin>
  56. </plugins>
  57. </build>
  58. -->
  59.  
  60. </project>

mapper项目无特别之处

pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.sharp</groupId>
  7. <artifactId>sharp-pom</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <artifactId>sharp-mapper</artifactId>
  11. <packaging>jar</packaging>
  12.  
  13. <name>sharp-mapper</name>
  14. <description>Demo project for Spring Boot</description>
  15.  
  16. <dependencies>
  17. <dependency>
  18. <groupId>com.sharp</groupId>
  19. <artifactId>sharp-common</artifactId>
  20. <version>${project.parent.version}</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.sharp</groupId>
  24. <artifactId>sharp-entity</artifactId>
  25. <version>${project.parent.version}</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework.boot</groupId>
  29. <artifactId>spring-boot-starter</artifactId>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.mybatis.spring.boot</groupId>
  33. <artifactId>mybatis-spring-boot-starter</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-test</artifactId>
  38. <scope>test</scope>
  39. </dependency>
  40. </dependencies>
  41.  
  42. <!-- <build>
  43. <plugins>
  44. <plugin>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-maven-plugin</artifactId>
  47. </plugin>
  48. <plugin>
  49. <groupId>org.apache.maven.plugins</groupId>
  50. <artifactId>maven-surefire-plugin</artifactId>
  51. <version>2.6</version>
  52. <configuration>
  53. <skipTests>true</skipTests>
  54. </configuration>
  55. </plugin>
  56. </plugins>
  57. </build>
  58. -->
  59.  
  60. </project>

service-api  pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <artifactId>sharp-service-api</artifactId>
  7. <packaging>jar</packaging>
  8.  
  9. <name>sharp-service-api</name>
  10. <description>Demo project for Spring Boot</description>
  11.  
  12. <parent>
  13. <groupId>com.sharp</groupId>
  14. <artifactId>sharp-pom</artifactId>
  15. <version>0.0.1-SNAPSHOT</version>
  16. </parent>
  17.  
  18. <properties>
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  21. <java.version>1.8</java.version>
  22. </properties>
  23.  
  24. <dependencies>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.sharp</groupId>
  31. <artifactId>sharp-entity</artifactId>
  32. <version>${project.parent.version}</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <scope>test</scope>
  38. </dependency>
  39. </dependencies>
  40.  
  41. </project>

service pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.sharp</groupId>
  7. <artifactId>sharp-pom</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <artifactId>sharp-service</artifactId>
  11. <packaging>jar</packaging>
  12.  
  13. <name>sharp-sevice</name>
  14. <description>Demo project for Spring Boot</description>
  15. <dependencies>
  16. <!-- <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-amqp</artifactId>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.springframework.boot</groupId>
  22. <artifactId>spring-boot-starter-data-mongodb</artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-data-redis</artifactId>
  27. </dependency> -->
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-web</artifactId>
  31. </dependency>
  32. <dependency>
  33. <groupId>com.alibaba</groupId>
  34. <artifactId>druid</artifactId>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.springframework</groupId>
  38. <artifactId>spring-jdbc</artifactId>
  39. </dependency>
  40. <dependency>
  41. <groupId>com.sharp</groupId>
  42. <artifactId>sharp-entity</artifactId>
  43. <version>${project.parent.version}</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.sharp</groupId>
  47. <artifactId>sharp-common</artifactId>
  48. <version>${project.parent.version}</version>
  49. </dependency>
  50. <dependency>
  51. <groupId>com.sharp</groupId>
  52. <artifactId>sharp-mapper</artifactId>
  53. <version>${project.parent.version}</version>
  54. </dependency>
  55. <dependency>
  56. <groupId>com.sharp</groupId>
  57. <artifactId>sharp-service-api</artifactId>
  58. <version>${project.parent.version}</version>
  59. </dependency>
  60. <dependency>
  61. <groupId>org.mybatis.spring.boot</groupId>
  62. <artifactId>mybatis-spring-boot-starter</artifactId>
  63. </dependency>
  64. <dependency>
  65. <groupId>mysql</groupId>
  66. <artifactId>mysql-connector-java</artifactId>
  67. </dependency>
  68.  
  69. <dependency>
  70. <groupId>org.springframework.boot</groupId>
  71. <artifactId>spring-boot-starter-test</artifactId>
  72. <scope>test</scope>
  73. </dependency>
  74. </dependencies>
  75.  
  76. <!-- <build>
  77. <plugins>
  78. <plugin>
  79. <groupId>org.springframework.boot</groupId>
  80. <artifactId>spring-boot-maven-plugin</artifactId>
  81. </plugin>
  82. </plugins>
  83. </build> -->
  84.  
  85. </project>

web user pom

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5.  
  6. <artifactId>sharp-user</artifactId>
  7. <packaging>jar</packaging>
  8.  
  9. <name>sharp-user</name>
  10. <description>Demo project for Spring Boot</description>
  11.  
  12. <parent>
  13. <groupId>com.sharp</groupId>
  14. <artifactId>sharp-pom</artifactId>
  15. <version>0.0.1-SNAPSHOT</version>
  16. </parent>
  17.  
  18. <properties>
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  21. <java.version>1.8</java.version>
  22. </properties>
  23.  
  24. <dependencies>
  25. <dependency>
  26. <groupId>com.alibaba</groupId>
  27. <artifactId>druid</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-web</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>com.sharp</groupId>
  35. <artifactId>sharp-entity</artifactId>
  36. <version>0.0.1-SNAPSHOT</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>com.sharp</groupId>
  40. <artifactId>sharp-common</artifactId>
  41. <version>0.0.1-SNAPSHOT</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>com.sharp</groupId>
  45. <artifactId>sharp-service-api</artifactId>
  46. <version>0.0.1-SNAPSHOT</version>
  47. </dependency>
  48. <!-- 微服务项目使不需要以下实现类的配置,只需要配置好dubbo即可 -->
  49. <dependency>
  50. <groupId>com.sharp</groupId>
  51. <artifactId>sharp-service</artifactId>
  52. <version>0.0.1-SNAPSHOT</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>com.sharp</groupId>
  56. <artifactId>sharp-mapper</artifactId>
  57. <version>0.0.1-SNAPSHOT</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.springframework.boot</groupId>
  61. <artifactId>spring-boot-starter-test</artifactId>
  62. <scope>test</scope>
  63. </dependency>
  64. </dependencies>
  65.  
  66. <build>
  67. <plugins>
  68. <plugin>
  69. <groupId>org.springframework.boot</groupId>
  70. <artifactId>spring-boot-maven-plugin</artifactId>
  71. </plugin>
  72. </plugins>
  73. </build>
  74.  
  75. </project>

application.properties

  1. spring.profiles.active=local
  2.  
  3. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  5. spring.datasource.url=jdbc:mysql://192.168.xxx.xxx:3306/sharp
  6. spring.datasource.username=root
  7. spring.datasource.password=********
  8.  
  9. #mybatis配置
  10. #指定全局配置文件位置
  11. mybatis.config-location=classpath:mybatis/mybatis-config.xml
  12. #指定别名包
  13. mybatis.type-aliases-package=com.sharp.forward.entity
  14. #指定xml文件位置
  15. mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

注意启动项上一定要加注解@MapperScan("com.sharp.forward.mapper"),其他都是常规的东西,结构如下:

测试OK!

springboot的maven多模块项目架构微服务搭建——构建多模块项目(依赖方式)的更多相关文章

  1. springboot的maven多模块项目架构微服务搭建——依赖方式的多模块演化为微服务项目

    在上一篇依赖方式多模块的基础上对项目进行改造.主要改造user-service项目,service要配置mapper.mybatis及数据库相关的东西,后面的接口消费方user就不再需要了 注意:以下 ...

  2. spring cloud 专题二(spring cloud 入门搭建 之 微服务搭建和注册)

    一.前言 本文为spring cloud 微服务框架专题的第二篇,主要讲解如何快速搭建微服务以及如何注册. 本文理论不多,主要是傻瓜式的环境搭建,适合新手快速入门. 为了更好的懂得原理,大家可以下载& ...

  3. Spring核心项目及微服务架构方向

    spring 顶级项目:Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用maven dependency引入spring jar包时它就在工作 ...

  4. 应用Dubbo框架打造仿猫眼项目 理解微服务核心思想

    1:传统应用带来的问题 单一业务开发的迭代问题              扩容困难              部署回滚困难2:微服务概述 微服务是一种将业务系统进一步拆分的架构风格          ...

  5. .net项目架构改造之搭建基于java环境配置一览【上】

    最近公司做了一个项目,需要嵌套在千牛的客户端上,项目代码必须上阿里的聚石塔,全程采用基于docker的自动化部署,我们的项目是基于.net架构.很遗憾 的是基于windows的docker上部署在访问 ...

  6. thinkphp5杂谈--项目架构和模板搭建(view视角)

    nginx网站配置 项目架构 项目文件夹 视图模板 一种出幺蛾子的访问办法 访问相关特色模块并渲染视图

  7. maven的安装和eclipse的配置以及构建mahout基本项目

    maven介绍在此略过 下载地址: 点击打开链接 windows下载xxx-bin.zip文件 linux下载xxx-bin.tar.gz 这里以windows为例 下载完成直接解压到一个目录下 计算 ...

  8. SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

    实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每 ...

  9. 【转】SpringBoot+SpringCloud实现登录用户信息在微服务之间的传递

    实现思路: 1:准备一个ThreadLocal变量,供线程之间共享. 2:每个微服务对所有过来的Feign调用进行过滤,然后从请求头中获取User用户信息,并存在ThreadLocal变量中. 3:每 ...

随机推荐

  1. php 基础知识 post 和get 两种传输方式的区别

    1.post更安全(不会作为url的一部分,不会被缓存.保存在服务器日志.以及浏览器浏览记录中) 2.post发送的数据量更大(get有url长度限制) 3.post能发送更多的数据类型(get只能发 ...

  2. 20 个新的且值得关注的 Vue 开源项目

    译者:前端小智作者:Nastassia Ovchinnikova来源:flatlogic.com 个人专栏 ES6 深入浅出已上线,深入ES6 ,通过案例学习掌握 ES6 中新特性一些使用技巧及原理, ...

  3. nginx 缓存

    浏览器缓存与nginx缓存 浏览器缓存 优点:使用有效缓存时,没有网络消耗,速度快:即使有网络消耗,但对失效缓存使用304响应做到网络消耗最小化 缺点:仅提升一个用户的体验 nginx 缓存 优点:提 ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定大写文本

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  5. bootloader与启动地址偏移

    如果项目工程是IAP+APP,则在keil的APP中要么在修改IROM/IRAM的开始地址和大小,并在MAP中勾选设置. 在NVIC中修改system_stm32f10x.c修改 这个在void Sy ...

  6. redis 之redis-sentinel主从复制高可用

    一.redis主从复制背景问题 Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用: (1)一旦主节点宕机,从节点作为主节点的备份可以随时顶上来. (2)扩展主节点的读能力,分担主节点 ...

  7. Python 全国考级二级

    第1章  Python概述 [Python语言简介] Python是一种跨平台.开源.免费的解释型高级动态编程语言,是一种通用编程语言. Python支持命令式编程和函数式编程两种方式,并且完全支持面 ...

  8. 特约稿件 Java并发教程(Oracle官方资料)

      本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递. (关注ITeye官微,随时随地查看最新开发资讯.技术文章.) 计算机的使用者一直以为他们的计算机可以同时做很多事情.他 ...

  9. <每日一课学习笔记> "mysql为什么加了索引还是慢查询"

    long_query_time mysql判断慢查询的依据是,sql执行时间与系统参数 long_query_time 作比较,如果大于这个参数,就会将这条sql计入慢查询语句中.long_query ...

  10. 【快学springboot】4.接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...