SpringBoot使用手册

SpringBoot使用手册

1、自动装配

1.1、创建spring Boot项目

在之前的文章中已经专门写过,这里不做赘述。

1.2、pom.xml

1.2.1、版本管理

在学习完maven项目后,我们学习框架时首先阅读的就是pom.xml文件,这里是管理自己该项目中所用到的jar包。

学习SpringBoot时也是一样,在创建好一个项目后,我们首先先浏览一下pom.xml。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from repository --></parent>

打开这个文件后,我们首先就能看到上面这串代码,这个和我们之前学习的不太一样,仔细阅读后可以发现,这时导入Springboot父依赖的代码。

什么是父依赖?

当我们按住ctrl,鼠标点击这个依赖,可以发现我们又进入了一个pom文件,在这里,我们又能看到一个父依赖。

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.7.3</version></parent>

再次点击进入,便能发现这里管理着大量的版本信息:

<properties><activemq.version>5.16.5</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.98</appengine-sdk.version><artemis.version>2.19.1</artemis.version><aspectj.version>1.9.7</aspectj.version><assertj.version>3.22.0</assertj.version><atomikos.version>4.0.6</atomikos.version><awaitility.version>4.2.0</awaitility.version><build-helper-maven-plugin.version>3.3.0</build-helper-maven-plugin.version><byte-buddy.version>1.12.13</byte-buddy.version><cache2k.version>2.6.1.Final</cache2k.version><caffeine.version>2.9.3</caffeine.version><cassandra-driver.version>4.14.1</cassandra-driver.version><classmate.version>1.5.1</classmate.version><commons-codec.version>1.15</commons-codec.version><commons-dbcp2.version>2.9.0</commons-dbcp2.version><commons-lang3.version>3.12.0</commons-lang3.version><commons-pool.version>1.6</commons-pool.version><commons-pool2.version>2.11.1</commons-pool2.version><couchbase-client.version>3.3.3</couchbase-client.version><db2-jdbc.version>11.5.7.0</db2-jdbc.version><dependency-management-plugin.version>1.0.13.RELEASE</dependency-management-plugin.version><derby.version>10.14.2.0</derby.version><dropwizard-metrics.version>4.2.11</dropwizard-metrics.version><ehcache.version>2.10.9.2</ehcache.version><ehcache3.version>3.10.0</ehcache3.version><elasticsearch.version>7.17.4</elasticsearch.version><embedded-mongo.version>3.4.8</embedded-mongo.version><flyway.version>8.5.13</flyway.version><freemarker.version>2.3.31</freemarker.version><git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version><glassfish-el.version>3.0.4</glassfish-el.version><glassfish-jaxb.version>2.3.6</glassfish-jaxb.version><glassfish-jstl.version>1.2.6</glassfish-jstl.version><graphql-java.version>18.3</graphql-java.version><groovy.version>3.0.12</groovy.version><gson.version>2.9.1</gson.version><h2.version>2.1.214</h2.version><hamcrest.version>2.2</hamcrest.version><hazelcast.version>5.1.3</hazelcast.version><hazelcast-hibernate5.version>2.2.1</hazelcast-hibernate5.version><hibernate.version>5.6.10.Final</hibernate.version><hibernate-validator.version>6.2.4.Final</hibernate-validator.version><hikaricp.version>4.0.3</hikaricp.version><hsqldb.version>2.5.2</hsqldb.version><htmlunit.version>2.60.0</htmlunit.version><httpasyncclient.version>4.1.5</httpasyncclient.version><httpclient.version>4.5.13</httpclient.version><httpclient5.version>5.1.3</httpclient5.version><httpcore.version>4.4.15</httpcore.version><httpcore5.version>5.1.4</httpcore5.version><infinispan.version>13.0.10.Final</infinispan.version><influxdb-java.version>2.22</influxdb-java.version><jackson-bom.version>2.13.3</jackson-bom.version><jakarta-activation.version>1.2.2</jakarta-activation.version><jakarta-annotation.version>1.3.5</jakarta-annotation.version><jakarta-jms.version>2.0.3</jakarta-jms.version><jakarta-json.version>1.1.6</jakarta-json.version><jakarta-json-bind.version>1.0.2</jakarta-json-bind.version><jakarta-mail.version>1.6.7</jakarta-mail.version><jakarta-management.version>1.1.4</jakarta-management.version><jakarta-persistence.version>2.2.3</jakarta-persistence.version><jakarta-servlet.version>4.0.4</jakarta-servlet.version><jakarta-servlet-jsp-jstl.version>1.2.7</jakarta-servlet-jsp-jstl.version><jakarta-transaction.version>1.3.3</jakarta-transaction.version><jakarta-validation.version>2.0.2</jakarta-validation.version><jakarta-websocket.version>1.1.2</jakarta-websocket.version><jakarta-ws-rs.version>2.1.6</jakarta-ws-rs.version><jakarta-xml-bind.version>2.3.3</jakarta-xml-bind.version><jakarta-xml-soap.version>1.4.2</jakarta-xml-soap.version><jakarta-xml-ws.version>2.3.3</jakarta-xml-ws.version><janino.version>3.1.7</janino.version><javax-activation.version>1.2.0</javax-activation.version><javax-annotation.version>1.3.2</javax-annotation.version><javax-cache.version>1.1.1</javax-cache.version><javax-jaxb.version>2.3.1</javax-jaxb.version><javax-jaxws.version>2.3.1</javax-jaxws.version><javax-jms.version>2.0.1</javax-jms.version><javax-json.version>1.1.4</javax-json.version><javax-jsonb.version>1.0</javax-jsonb.version><javax-mail.version>1.6.2</javax-mail.version><javax-money.version>1.1</javax-money.version><javax-persistence.version>2.2</javax-persistence.version><javax-transaction.version>1.3</javax-transaction.version><javax-validation.version>2.0.1.Final</javax-validation.version><javax-websocket.version>1.1</javax-websocket.version><jaxen.version>1.2.0</jaxen.version><jaybird.version>4.0.6.java8</jaybird.version><jboss-logging.version>3.4.3.Final</jboss-logging.version><jdom2.version>2.0.6.1</jdom2.version><jedis.version>3.8.0</jedis.version><jersey.version>2.35</jersey.version><jetty-el.version>9.0.52</jetty-el.version><jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version><jetty-reactive-httpclient.version>1.1.12</jetty-reactive-httpclient.version><jetty.version>9.4.48.v20220622</jetty.version><jmustache.version>1.15</jmustache.version><johnzon.version>1.2.18</johnzon.version><jolokia.version>1.7.1</jolokia.version><jooq.version>3.14.16</jooq.version><json-path.version>2.7.0</json-path.version><json-smart.version>2.4.8</json-smart.version><jsonassert.version>1.5.1</jsonassert.version><jstl.version>1.2</jstl.version><jtds.version>1.3.1</jtds.version><junit.version>4.13.2</junit.version><junit-jupiter.version>5.8.2</junit-jupiter.version><kafka.version>3.1.1</kafka.version><kotlin.version>1.6.21</kotlin.version><kotlin-coroutines.version>1.6.4</kotlin-coroutines.version><lettuce.version>6.1.9.RELEASE</lettuce.version><liquibase.version>4.9.1</liquibase.version><log4j2.version>2.17.2</log4j2.version><logback.version>1.2.11</logback.version><lombok.version>1.18.24</lombok.version><mariadb.version>3.0.7</mariadb.version><maven-antrun-plugin.version>3.0.0</maven-antrun-plugin.version><maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version><maven-clean-plugin.version>3.2.0</maven-clean-plugin.version><maven-compiler-plugin.version>3.10.1</maven-compiler-plugin.version><maven-dependency-plugin.version>3.3.0</maven-dependency-plugin.version><maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version><maven-enforcer-plugin.version>3.0.0</maven-enforcer-plugin.version><maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version><maven-help-plugin.version>3.2.0</maven-help-plugin.version><maven-install-plugin.version>2.5.2</maven-install-plugin.version><maven-invoker-plugin.version>3.2.2</maven-invoker-plugin.version><maven-jar-plugin.version>3.2.2</maven-jar-plugin.version><maven-javadoc-plugin.version>3.4.1</maven-javadoc-plugin.version><maven-resources-plugin.version>3.2.0</maven-resources-plugin.version><maven-shade-plugin.version>3.3.0</maven-shade-plugin.version><maven-source-plugin.version>3.2.1</maven-source-plugin.version><maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version><maven-war-plugin.version>3.3.2</maven-war-plugin.version><micrometer.version>1.9.3</micrometer.version><mockito.version>4.5.1</mockito.version><mongodb.version>4.6.1</mongodb.version><mssql-jdbc.version>10.2.1.jre8</mssql-jdbc.version><mysql.version>8.0.30</mysql.version><nekohtml.version>1.9.22</nekohtml.version><neo4j-java-driver.version>4.4.9</neo4j-java-driver.version><netty.version>4.1.79.Final</netty.version><okhttp.version>4.9.3</okhttp.version><oracle-database.version>21.5.0.0</oracle-database.version><pooled-jms.version>1.2.4</pooled-jms.version><postgresql.version>42.3.6</postgresql.version><prometheus-client.version>0.15.0</prometheus-client.version><quartz.version>2.3.2</quartz.version><querydsl.version>5.0.0</querydsl.version><r2dbc-bom.version>Borca-SR1</r2dbc-bom.version><rabbit-amqp-client.version>5.14.2</rabbit-amqp-client.version><rabbit-stream-client.version>0.5.0</rabbit-stream-client.version><reactive-streams.version>1.0.4</reactive-streams.version><reactor-bom.version>2020.0.22</reactor-bom.version><rest-assured.version>4.5.1</rest-assured.version><rsocket.version>1.1.2</rsocket.version><rxjava.version>1.3.8</rxjava.version><rxjava-adapter.version>1.2.1</rxjava-adapter.version><rxjava2.version>2.2.21</rxjava2.version><saaj-impl.version>1.5.3</saaj-impl.version><selenium.version>4.1.4</selenium.version><selenium-htmlunit.version>3.61.0</selenium-htmlunit.version><sendgrid.version>4.9.3</sendgrid.version><servlet-api.version>4.0.1</servlet-api.version><slf4j.version>1.7.36</slf4j.version><snakeyaml.version>1.30</snakeyaml.version><solr.version>8.11.2</solr.version><spring-amqp.version>2.4.6</spring-amqp.version><spring-batch.version>4.3.6</spring-batch.version><spring-data-bom.version>2021.2.2</spring-data-bom.version><spring-framework.version>5.3.22</spring-framework.version><spring-graphql.version>1.0.1</spring-graphql.version><spring-hateoas.version>1.5.1</spring-hateoas.version><spring-integration.version>5.5.14</spring-integration.version><spring-kafka.version>2.8.8</spring-kafka.version><spring-ldap.version>2.4.1</spring-ldap.version><spring-restdocs.version>2.0.6.RELEASE</spring-restdocs.version><spring-retry.version>1.3.3</spring-retry.version><spring-security.version>5.7.3</spring-security.version><spring-session-bom.version>2021.2.0</spring-session-bom.version><spring-ws.version>3.1.3</spring-ws.version><sqlite-jdbc.version>3.36.0.3</sqlite-jdbc.version><sun-mail.version>1.6.7</sun-mail.version><thymeleaf.version>3.0.15.RELEASE</thymeleaf.version><thymeleaf-extras-data-attribute.version>2.0.1</thymeleaf-extras-data-attribute.version><thymeleaf-extras-java8time.version>3.0.4.RELEASE</thymeleaf-extras-java8time.version><thymeleaf-extras-springsecurity.version>3.0.4.RELEASE</thymeleaf-extras-springsecurity.version><thymeleaf-layout-dialect.version>3.0.0</thymeleaf-layout-dialect.version><tomcat.version>9.0.65</tomcat.version><unboundid-ldapsdk.version>6.0.5</unboundid-ldapsdk.version><undertow.version>2.2.19.Final</undertow.version><versions-maven-plugin.version>2.10.0</versions-maven-plugin.version><webjars-locator-core.version>0.50</webjars-locator-core.version><wsdl4j.version>1.6.3</wsdl4j.version><xml-maven-plugin.version>1.0.2</xml-maven-plugin.version><xmlunit2.version>2.9.0</xmlunit2.version></properties>

这便是SpringBoot不需要书写版本的原因!

配置依赖
<resource><directory>${basedir}/src/main/resources</directory><filtering>true</filtering><includes><include>**/application*.yml</include><include>**/application*.yaml</include><include>**/application*.properties</include></includes></resource><resource><directory>${basedir}/src/main/resources</directory><excludes><exclude>**/application*.yml</exclude><exclude>**/application*.yaml</exclude><exclude>**/application*.properties</exclude></excludes></resource>
1.2.2、启动器

springBoot的启动器:spring Boot的启动场景。

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

比如:spring-boot-starter-web,它会自动导入web项目所需要的所有依赖。

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

spring boot会将所有的功能场景,都编程一个个的启动器,如果我们要使用什么功能,就只需要找到对应的启动器就行了。

spring官方文档:
https://docs.spring.io
1.2.3、主程序
@SpringBootApplication
public class BlogFztApplication {public static void main(String[] args) {SpringApplication.run(BlogFztApplication.class, args);}}

@SpringBootApplication:标注这个类是一个Springboot启动类,启动类下的所有资源被导入

点进去,就能看到核心注解:

注解:

@SpringBootConfiguration//springboot的配置@Configuration//spring配置类@Component//说明这也是一个spring的组件
@EnableAutoConfiguration//自动配置
//点进去@AutoConfigurationPackage//自动配置包@Import(AutoConfigurationPackages.Registrar.class)//自动配置‘包注册’@Import(AutoConfigurationImportSelector.class)//自动配置导入选择
//获取所有配置
List<String> configurations = getCandidateConfigurations(annotationMetadata,attributes);

核心方法:

获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {List<String> configurations = new ArrayList<>(SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()));ImportCandidates.load(AutoConfiguration.class, getBeanClassLoader()).forEach(configurations::add);Assert.notEmpty(configurations,//断言非空,如果配置文件不为空,则去找spring.factories文件"No auto configuration classes found in META-INF/spring.factories nor in META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports. If you "+ "are using a custom packaging, make sure that file is correct.");return configurations;}
protected Class<?> getSpringFactoriesLoaderFactoryClass() {return EnableAutoConfiguration.class;}
META-INF/spring.factories:org.springframework.boot.autoconfigure
# Initializers
org.springframework.context.ApplicationContextInitializer=\
org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.autoconfigure.BackgroundPreinitializer# Environment Post Processors
org.springframework.boot.env.EnvironmentPostProcessor=\
org.springframework.boot.autoconfigure.integration.IntegrationPropertiesEnvironmentPostProcessor# Auto Configuration Import Listeners
org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\
org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener# Auto Configuration Import Filters
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
org.springframework.boot.autoconfigure.condition.OnBeanCondition,\
org.springframework.boot.autoconfigure.condition.OnClassCondition,\
org.springframework.boot.autoconfigure.condition.OnWebApplicationCondition# Failure analyzers
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.autoconfigure.data.redis.RedisUrlSyntaxFailureAnalyzer,\
org.springframework.boot.autoconfigure.diagnostics.analyzer.NoSuchBeanDefinitionFailureAnalyzer,\
org.springframework.boot.autoconfigure.flyway.FlywayMigrationScriptMissingFailureAnalyzer,\
org.springframework.boot.autoconfigure.jdbc.DataSourceBeanCreationFailureAnalyzer,\
org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer,\
org.springframework.boot.autoconfigure.jooq.NoDslContextBeanFailureAnalyzer,\
org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryBeanCreationFailureAnalyzer,\
org.springframework.boot.autoconfigure.r2dbc.MissingR2dbcPoolDependencyFailureAnalyzer,\
org.springframework.boot.autoconfigure.r2dbc.MultipleConnectionPoolConfigurationsFailureAnalzyer,\
org.springframework.boot.autoconfigure.r2dbc.NoConnectionFactoryBeanFailureAnalyzer,\
org.springframework.boot.autoconfigure.session.NonUniqueSessionRepositoryFailureAnalyzer# Template availability providers
org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider=\
org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider,\
org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider,\
org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider,\
org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\
org.springframework.boot.autoconfigure.web.servlet.JspTemplateAvailabilityProvider# DataSource initializer detectors
org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector=\
org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializerDatabaseInitializerDetector# Depends on database initialization detectors
org.springframework.boot.sql.init.dependency.DependsOnDatabaseInitializationDetector=\
org.springframework.boot.autoconfigure.batch.JobRepositoryDependsOnDatabaseInitializationDetector,\
org.springframework.boot.autoconfigure.quartz.SchedulerDependsOnDatabaseInitializationDetector,\
org.springframework.boot.autoconfigure.session.JdbcIndexedSessionRepositoryDependsOnDatabaseInitializationDetector
Properties properties = PropertiesLoaderUtils.loadProperties(resource);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/42327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉】基于OpenCV的直线检测

直线检测原理 霍夫变换是图像处理必然接触到的一个算法&#xff0c;它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果&#xff0c;该方法可以进行圆&#xff0c;直线&#xff0c;椭…

一致性哈希避免数据倾斜的方法--虚拟节点

一致性哈希的实现方法网上有很多&#xff0c;这篇文章的图画的很好。 但一直以来有个困惑没有解决&#xff0c;如果一致性哈希环上有一个机器下线&#xff0c;那么相邻的节点会承接其数据和流量&#xff0c;应该会出现数据倾斜的情况才对&#xff0c;上面的文章只说了虚拟节点…

Java入门-异常机制

java异常机制 异常概念 在Java中&#xff0c;异常处理(exception handling) : java语言或者程序员开发提供的一种机制&#xff0c;当有不正常的情况发生时&#xff0c;可以发出信号。这种发出信号的过程被称为抛出异常(throwing an exception)。 java异常体系 Error Error类对…

Android OpenGL ES 离屏幕渲染1——EGL环境的创建,以及基础概念的理解

创建EGL上下文、配置EGL环境、创建EGL DISPLAY 什么是EGL&#xff1a; 由于OpenGL ES并不负责窗口管理以及上下文管理&#xff0c;该职责由各个平台自行完成&#xff1b;在Android平台下OpenGL ES的上下文环境是依赖EGL的API进行搭建的。 对于EGL这个框架&#xff0c;谷歌已经提…

Java中 普通for循环, 增强for循环( foreach) List中增删改查的注意事项

文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环&#xff0c; 增强for循环( foreach) 俩种List的遍历方式有何异同&#xff0c;性能差异&#xff1f; 普通for循环&#xff08;使用索引遍历&#xff09;&#xff1a; for (int…

测试环境:使用OpenSSL生成证书并配置Https

文章目录 需求1、安装OpenSSL1.1、安装包下载1.2、安装&#xff08;以window 64位为例&#xff09;1.3、配置环境变量&#xff08;非必须&#xff09; 2、生成证书2.1、新建文件夹2.2、生成根证书2.2.1、生成私钥2.2.2、生成根证书&#xff0c;并且自签名 2.3、服务端证书生成2…

pyqt5导出数据到excel并设置单元格格式然后点击打开

pyqt5导出数据到excel并设置单元格格式然后点击打开 1、流程 1、从sqlite3获取数据 2、创建Workbook、sheet 3、设置列宽,单元格填充颜色 4、写数据进单元格 5、设置文件名并保存 6、设置pyqt5输出框可直接点击打开文件2、代码 from openpyxl import Workbook from openpyx…

【双一流高校主办,Springer-LNICST出版,EI稳定检索】2024年应用计算智能、信息学与大数据国际会议(ACIIBD 2024,7月26-28)

2024年应用计算智能、信息学与大数据国际学术会议&#xff08;ACIIBD 2024&#xff09;将于2024年7月26-28日在中国广州举办。会议将聚焦于计算智能及其应用、信息、大数据等相关的研究领域&#xff0c; 广泛邀请国内外知名专家学者&#xff0c;共同探讨相关学科领域的最新发展…

rsyslog日志转发

前言 Rsyslog可用于接受来自各种来源(本地和网络)的输入&#xff0c;转换它们&#xff0c;并将结果输出到不同&#xff08;通过模板和filter过滤&#xff09;的目的地&#xff08;目录文件中&#xff09; rsyslog是一个开源工具&#xff0c;被广泛用于Linux系统以通过TCP/UDP…

2025届秋招提前批信息汇总(计算机类)

私企篇 深信服 链接&#xff1a;https://app.mokahr.com/campus_apply/sangfor/27944#/home内推码&#xff1a;NTAHRFS截止时间&#xff1a;6月21日 TP-LINK 链接&#xff1a;https://hr.tp-link.com.cn/jobList?jobId107&jobDirection0&workPlace0&currentPa…

[spring] Spring MVC - security(上)

[spring] Spring MVC - security&#xff08;上&#xff09; 这部分的内容基本上和 [spring] rest api security 是重合的&#xff0c;主要就是添加 验证&#xff08;authentication&#xff09;和授权&#xff08;authorization&#xff09;这两个功能 即&#xff1a; 用户…

HTTPS 发送请求出现TLS握手失败

最近在工作中&#xff0c;调外部接口&#xff0c;发现在clientHello步骤报错&#xff0c;服务端没有返回serverHello。 从网上找了写方法&#xff0c;都没有解决&#xff1b; 在idea的vm options加上参数&#xff1a; -Djavax.net.debugSSL,handshake 把SSL和handshake的日…

构建基于Spring Cloud的微服务监控系统

构建基于Spring Cloud的微服务监控系统 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 随着微服务架构的流行&#xff0c;应用程序变得更加复杂和分布式&…

python自动化办公之cryptography加密解密

目录 用到的库 实现效果 代码部分 1、加密2024.txt文件 2、解密2024.txt文件 用到的库 cryptography 实现效果 加密文件和解密文件 代码部分 1、加密2024.txt文件 # 加密 from cryptography.fernet import Fernet # 生成加密密钥 keyFernet.generate_key() cipher_s…

go语言中使用WaitGroup和channel实现处理多线程问题

WaitGroup 背景 如果将一个任务分为任意个小任务&#xff0c;并且不关心小任务的执行顺序&#xff0c;并且希望等待全部的小任务执行完成后再去操作后面的逻辑&#xff0c;那我推荐你用sync.WaitGRoup 使用方法 比如&#xff0c;有一个任务需要执行 3 个子任务&#xff0c;…

Raw Socket(一)实现TCP三次握手

实验环境&#xff1a; Windows物理机&#xff1a;192.168.1.4 WSL Ubuntu 20.04.6 LTS&#xff1a;172.19.32.196 Windows下的一个http服务器&#xff1a;HFS&#xff0c;大概长这个样子&#xff1a; 客户端就是Ubuntu&#xff0c;服务端就是这个…

收银系统源码-线上商城预售功能

1.功能描述 预售&#xff1a;智慧新零售收银系统&#xff0c;线上商城营销插件之一&#xff0c;商品出售时可设置以支付定金或全款的方式提前预售&#xff0c;门店按订单量备货&#xff0c;降低压货成本&#xff1b; 2.适用场景 易损商品提前下单备货&#xff0c;如水果生鲜…

【算法笔记自学】第 5 章 入门篇(3)——数学问题

5.1简单数学 #include <cstdio> #include <algorithm> using namespace std; bool cmp(int a,int b){return a>b; } void to_array(int n,int num[]){for(int i0;i<4;i){num[i]n%10;n /10;} } int to_number(int num[]){int sum0;for(int i0;i<4;i){sumsu…

C++ Lambda表达式第二篇, Lambda表达式

C Lambda表达式 Lambda 捕获含有模板参数的Lambda表达式无模板参数的Lambda表达式 Lambda 捕获 captures是零个或多个捕获的逗号分隔列表&#xff0c;可以选择以capture-default开头。捕获列表定义可从 lambda 函数体内访问的外部变量。唯一的捕获默认值是 &&#xff0c;…

Kylin系列(二)架构解析:深入理解 Kylin 的架构设计

目录 1. 引言 2. Kylin 的基本概念 2.1 预计算 2.2 多维数据集&#xff08;Cube&#xff09; 2.3 维度和度量 3. Kylin 的架构设计 3.1 数据源 3.2 数据建模 3.2.1 星型模型 3.2.2 雪花模型 3.3 多维数据集构建 3.3.1 数据导入 3.3.2 维度和度量计算 3.3.3 存储优…