• 更多精彩文件点击访问:https://blog.csdn.net/weixin_45692705?spm=1011.2124.3001.5343

教程目录

  • 后台技术栈
  • 准备工作
  • 一. 创建父工程
  • 二. 修改父工程pom文件添加相关依赖
  • 三. 创建子工程
    • 1. 创建子工程common
    • 2. 创建子工程base
    • 3. 创建子工程core
    • 3. 创建子工程gatway
  • 四. 总结

后台技术栈

  • 可以根据自身的项目需求,替换依赖。
技术名称 用途
SpringBoot 简化Spring
SpringCloud Hoxton.SR8 微服务
Mybatis Plus 持久层框架和代码生成器
Lombok 简化实体类
Swagger2 API接口文档生成工具
Logback 日志系统
Alibaba-easyexcel Excel读写
Redis 缓存
HttpClient 基于http协议的客户端用来实现远程的调用
Spring Task 定时任务
MySQL 数据库
RabbitMQ 消息中间件

准备工作

  • 一个ide开发工具,这里使用的是 2020.2.4,掌握后台技术栈中的所有技术。

注意:开始之前要先设置jdk,maven,自动导包,编码格式,等相关信息。遵循 约定 > 编码的规定,不会的可以点击访问: 首次安装必备!idea最常用设置(配置),让开发更顺手,进行设置。


一. 创建父工程

  1. 使用Maven骨架,选择org.apache.maven.archetypes:maven-archetype-site创建一个空的父工程,别忘了还要选择jdk哦!

  1. 添加工程名,GAV坐标。


3. 指定自已的Maven

  1. 创建完成是这个样子


二. 修改父工程pom文件添加相关依赖

  1. 因为目前创建的是一个父工程所以要删除一些无用的文件,这里删除整个src就可以了。

  1. 删除无用的信息,并指定packaging为pom,正题效果如下图。

  1. 添加父工程依赖,这里的cloud版本号特别重要容易冲突下面的依赖已经指定好相关版本了,直接复制即可。
  <!--  统一管理版本--><properties><java.version>1.8</java.version><spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version><spring-cloud.version>Hoxton.SR8</spring-cloud.version><mybatis-plus.version>3.4.1</mybatis-plus.version><velocity.version>2.0</velocity.version><swagger.version>2.9.2</swagger.version><swagger-bootstrap-ui.version>1.9.2</swagger-bootstrap-ui.version><commons-lang3.version>3.9</commons-lang3.version><commons-fileupload.version>1.3.1</commons-fileupload.version><commons-io.version>2.6</commons-io.version><alibaba.easyexcel.version>2.1.1</alibaba.easyexcel.version><apache.xmlbeans.version>3.1.0</apache.xmlbeans.version><fastjson.version>1.2.28</fastjson.version><gson.version>2.8.2</gson.version><json.version>20170516</json.version><aliyun-java-sdk-core.version>4.3.3</aliyun-java-sdk-core.version><aliyun-sdk-oss.version>3.10.2</aliyun-sdk-oss.version><jodatime.version>2.10.1</jodatime.version><jwt.version>0.7.0</jwt.version><httpclient.version>4.5.1</httpclient.version></properties><dependencyManagement><dependencies><!--spring boot 2.3.4.RELEASE--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.4.RELEASE</version><type>pom</type><scope>import</scope></dependency><!--Spring Cloud--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--Spring Cloud Alibaba--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--mybatis-plus 代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version></dependency><!-- Mybatis Plus 代码生成器模板引擎,  --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>${velocity.version}</version></dependency><!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><!--swagger ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency><!--swagger-bootstrap-ui--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>${swagger-bootstrap-ui.version}</version></dependency><!--commons-lang3--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency><!--文件上传--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>${commons-fileupload.version}</version></dependency><!--commons-io--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency><!--excel解析--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${alibaba.easyexcel.version}</version></dependency><!--excel解析依赖--><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>${apache.xmlbeans.version}</version></dependency><!--json--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>${json.version}</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>${gson.version}</version></dependency><!--阿里云SDK远程调用--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>${aliyun-java-sdk-core.version}</version></dependency><!--阿里云文件管理--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${aliyun-sdk-oss.version}</version></dependency><!--日期时间工具--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>${jodatime.version}</version></dependency><!--jwt工具--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jwt.version}</version></dependency><!--httpclient--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build>
  1. 添加完了千万别忘记刷新maven,让他进行下载哦。


三. 创建子工程

  • 这里分模块的方式有很多种,可以按照数据库的表分成对应的模块,也可以按照功能进行分,没有硬性的要求。

1. 创建子工程common

作用:每一个微服务公共的依赖,存放bean,工具类等。

  1. 创建子工程common,这里New的时候需要选择Module。


2. 指定jdk不用选择任何骨架

  1. 填写模块名称,GAV坐标,注意检查Parent指向的是不是父工程

4.给common子工程添加对应的maven依赖。

 <description>每一个微服务公共的依赖,bean,工具类等</description><dependencies><!--  web起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok用来简化实体类:需要安装lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency></dependencies>

  1. 创建包,添加通用的工具类


最终效果

2. 创建子工程base

作用:bese是微服务的一个通用配置

  1. 创建子工程base,创建步骤和上面的common相同,创建成功后注意检查父工程pom中的标签


2. 添加子工程base的相关依赖

    <description>微服务通用配置</description><dependencies><!--引用 common 依赖--><dependency><groupId>com.wz.common</groupId><artifactId>wz-test-project-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId></dependency><!--swagger ui--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId></dependency><!-- spring boot redis缓存引入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- 缓存连接池--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!--JWT依赖--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId></dependency><!--服务发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--服务熔断--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- json解析 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency></dependencies>

3. 创建包,添加通用配置类


3. 创建子工程core

作用:core是整个项目的核心模块,用于存放项目整个项目的核心业务

  1. 创建步骤,还是一样的。

2.修改pom文件加入相关依赖

    <description>核心微服务模块</description><dependencies><!--引用 common 依赖--><dependency><groupId>com.wz.common</groupId><artifactId>wz-test-project-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!--mybatis-plus 代码生成器--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId></dependency><!-- Mybatis Plus 代码生成器模板引擎,  --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId></dependency><!--Alibaba读写Excel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId></dependency><!-- spring boot redis缓存引入 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- 缓存连接池--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!-- redis 存储 json序列化 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId></dependency></dependencies><!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 --><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>

  1. 因为是核心微服务,所以我们需要配置日志,和数据库等链接信息。
  • 这里我们在resources目录下创建,application.ymllogback-spring.xml配置文件,并编写相关的配置。

  • application.yml,相关配置
server:port: 8110 #服务端口spring:profiles:active: dev #环境设置application:name: 微服务名称 #服务名datasource: #mysql数据库连接type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: 链接数据库的url?serverTimezone=GMT%2B8&characterEncoding=utf-8username: 用户名password: 密码#spring:redis:host: redes的ip地址  port: 端口号database: 0#password: 默认为空timeout: 3000ms #过期时间lettuce:pool:max-active: 20  #最大连接数,负值表示没有限制,默认8max-wait: -1    #最大阻塞等待时间,负值表示没限制,默认-1max-idle: 8     #最大空闲连接,默认8min-idle: 0     #最小空闲连接,默认0cloud:nacos:discovery:server-addr: nacos的ip+端口 # nacos服务地址mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #配置控制台日志mapper-locations: classpath:com/mzc/iou/core/mapper/xml/*.xml #防止xml文件丢失##设置日志级别
#logging:
#  level:
#    root: ERROR
  • logback-spring.xml,相关配置
<?xml version="1.0" encoding="UTF-8"?>
<!--springboot内部使用Logback作为日志实现的框架   logback-spring.xml(默认日志文件的名字)--><!--日志配置的根节点-->
<configuration><!--上下文名称默认default--><contextName>wz</contextName><!-- 日志的输出目录 --><property name="log.path" value="日志的打印位置/core" /><!--控制台日志格式:彩色日志--><!-- magenta:洋红 --><!-- boldMagenta:粗红--><!-- cyan:青色 --><!-- white:白色 --><!-- magenta:洋红 --><property name="CONSOLE_LOG_PATTERN"value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/><!--文件日志格式--><property name="FILE_LOG_PATTERN"value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /><!--编码--><property name="ENCODING"value="UTF-8" /><!-- 控制台日志 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>${ENCODING}</charset></encoder></appender><!-- 文件日志 --><appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--  要区别于其他的appender中的文件名字  --><file>${log.path}/log-rolling.log</file><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>${ENCODING}</charset></encoder><!-- 设置滚动日志记录的滚动策略 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志归档路径以及格式 --><fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!--归档日志文件保留的最大数量--><maxHistory>3</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy></appender><!-- 开发环境和测试环境 --><springProfile name="dev,test"><logger name="com.mzc" level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ROLLING_FILE" /></logger></springProfile><!-- 生产环境 --><springProfile name="prod"><logger name="com.mzc" level="ERROR"><appender-ref ref="CONSOLE" /><appender-ref ref="ROLLING_FILE" /></logger></springProfile></configuration>
  1. 创建核心模块需要用到的包

3. 创建子工程gatway

作用:微服务网关,每个请求过来都需要通过网关分发到不同的模块。

  1. 创建方式相同

  1. 添加相关依赖
    <description>核心微服务网关</description><dependencies><!-- 网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>

  1. 编写配置文件,实现动态路由和日志打印。
  • 和上面的步骤一致

  • application.yml
server:port: 80 # 服务端口spring:profiles:active: dev # 环境设置application:name: 服务名称 # 服务名cloud:nacos:discovery:server-addr: nacos的ip地址+端口号 # nacos服务地址gateway:discovery:locator:enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由routes:- id: 核心微服务名称  #路由的ID,没有固定规则但要求唯一,建议配合服务名uri: lb://核心微服务名称  #匹配后提供服务的路由地址predicates:- Path=/*/core/**  #断言,路径相匹配的进行路由
  • logback-spring.xml,相关配置
<?xml version="1.0" encoding="UTF-8"?>
<!--springboot内部使用Logback作为日志实现的框架   logback-spring.xml(默认日志文件的名字)--><!--日志配置的根节点-->
<configuration><!--上下文名称默认default--><contextName>wz</contextName><!-- 日志的输出目录 --><property name="log.path" value="日志打印位置/gateway" /><!--控制台日志格式:彩色日志--><!-- magenta:洋红 --><!-- boldMagenta:粗红--><!-- cyan:青色 --><!-- white:白色 --><!-- magenta:洋红 --><property name="CONSOLE_LOG_PATTERN"value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) %highlight([%-5level]) %green(%logger) %msg%n"/><!--文件日志格式--><property name="FILE_LOG_PATTERN"value="%date{yyyy-MM-dd HH:mm:ss} [%-5level] %thread %file:%line %logger %msg%n" /><!--编码--><property name="ENCODING"value="UTF-8" /><!-- 控制台日志 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>${ENCODING}</charset></encoder></appender><!-- 文件日志 --><appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--  要区别于其他的appender中的文件名字  --><file>${log.path}/log-rolling.log</file><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>${ENCODING}</charset></encoder><!-- 设置滚动日志记录的滚动策略 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志归档路径以及格式 --><fileNamePattern>${log.path}/info/log-rolling-%d{yyyy-MM-dd}.%i.log</fileNamePattern><!--归档日志文件保留的最大数量--><maxHistory>3</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy></appender><!-- 开发环境和测试环境 --><springProfile name="dev,test"><logger name="com.mzc" level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="ROLLING_FILE" /></logger></springProfile><!-- 生产环境 --><springProfile name="prod"><logger name="com.mzc" level="ERROR"><appender-ref ref="CONSOLE" /><appender-ref ref="ROLLING_FILE" /></logger></springProfile></configuration>
  1. 创建包编写启动类,与跨域相关配置。


四. 总结

  • 到这里整个项目架构的搭建已经基本完成,可以使用代码生成器生成后进行编码了,后续如果需要使用SMS,OSS等相功能,可以新建模块进行对应的配置。这里的配置类并没有演示大家如果有需要的话可以去我主页的资源中进行下载整个完整的架构,并且附带使用教程和博主一对一指导。

好了,一键三连加关注!感谢大家观看。

毕业设计无从下手?四个步骤手把手带你搭建一个后台微服务架构相关推荐

  1. 手把手带大家搭建一个java个人网站(腾讯云为例)

    大家好,我是鸟哥.一个半路出家的程序员. 这次真是学妹要的!前几天鸟哥以腾讯云为例给大家分享了一篇如何搭建服务器的文章--手把手带大家搭建一台服务器(腾讯云为例),文章结尾表示过几天带大家搭建一个网站 ...

  2. 手把手带你搭建一个自己的云服务器并部署Web程序

    一. 服务器的购买 我选择的是阿里云的服务器,学生价9.5元一个月,百度直接搜索阿里云,然后点击右上角登录,推荐大家用支付宝扫码登录,方便快捷.阿里云官网的东西比较多,登录后我找了很久也没有找到学生服 ...

  3. 基于微服务架构的餐饮系统的设计与实现计算机毕业设计源码86393

    摘    要 近年来,我国经济和社会发展迅速,人们物质生活水平日渐提高,餐饮行业更是发展迅速,人们对于餐饮行业的认识和要求也越来越高.传统形式的餐饮行业都是以人为本,管理起来需要很多人力.物力.财力, ...

  4. 手把手带你撸一个校园APP(五):新闻中心模块

    这个项目是很早之前在学校做的,如今再回首.很多代码很是粗糙,逻辑也不尽完善.还望各位看官海涵. 前言 通过上一篇文章的功能设计,我们可以发现新闻通知公告等是APP的最主要功能点.主要是聚合展示学校官网 ...

  5. 【NLP】Pyhon+讯飞开放平台:​手把手带你写一个智能语音播报系统

    手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...

  6. 手把手带你撸一个校园APP(六):失物招领二手交易模块

    代码经过简单的整理,已经放到Github上了.https://github.com/zhengweichao/Hevttc 回首来看,代码质量一般,里面也有各种逻辑问题,还望各位看官海涵.接下来有时间 ...

  7. 手把手带你写一个JavaScript类型判断小工具

    业务写了很多,依然不是前端大神,我相信这是很多'入坑'前端开发同学的迷茫之处,个人觉得前端职业发展是有路径可寻的,前期写业务是一个积累过程,后期提炼总结,比如编程思想,父子类的原型继承,还是对象之间的 ...

  8. 手把手带你搭建个人博客系统(一)

    ⭐️前言⭐️ 该web开发系统涉及到的知识: Java基础 MySQL数据库 JDBC技术 前端三件套(HTML+CSS+JavaScript) Servlet 使用到的开发工具: idea vsco ...

  9. Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|Openresty丨C/C++Linux服务器开发丨中间件

    Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx 视频讲解如下,点击观看: Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|O ...

最新文章

  1. 2017最新整理传智播客JavaEE第49期 基础就业班
  2. ppwjs之bootstrap表格:String.到表头单元格元素 和 String.到表格单元格元素
  3. Scala数据类型按精度(容量)大小排序
  4. 2017元旦,你被闰秒吓到了吗? - 闰秒背景与数据库处理
  5. cocos2dx 3.0 windows平台 中文乱码解决
  6. 特斯拉第二季度生产20.6万辆电动汽车 交付20.1万辆
  7. 当程序员没了互联网,该如何继续学习写代码?
  8. SEO关键词优化:如何理解被百度快速索引?
  9. html table 充满div,HTML,使用div+css实现自适应table布局
  10. linux设备数内核选项,linux内核设备树修改指南 / linux kernel device tree modify guide
  11. findwindow\sendmessage向第三方软件发送消息演示
  12. 【Android】OKHTTP使用
  13. 虚拟偶像出道,技术「造星」推动下的粉丝经济
  14. 打印文件出现xps_什么是XPS文件?Windows为什么要我将其打印到一个文件?
  15. python求和函数详解_python求和函数sum()详解
  16. [转]XPO 条件相关类
  17. 打印机种类与对应的耗材
  18. 【kindle技巧】用Calibre给txt文件生成目录,epub格式制作,电子书格式生成
  19. sequoia负载均衡
  20. 10行代码DIY一个类USB Rubber Ducky来遥控自己电脑

热门文章

  1. SAP中SD模块的销售价格确定逻辑简析
  2. 计算机给文字填充颜色,word2010画图板给部分区域添加颜色 word怎么填充区域颜色...
  3. 环境加密真的适合源代码防泄露嘛?一些个人分析
  4. Project 字体设置
  5. 洛阳九县八取名字_洛阳市下辖9县综合实力排名,快看看你家乡排名第几?
  6. 抖音web端私信websocket-protobuf 学习。
  7. 容联云被启动退市:因无法发出年报 曾市值达77亿美元
  8. ios全景图片浏览App
  9. Java实现QQ授权登录网站
  10. Trustlines Network:以太坊上实现 Ripple 瑞波协议