Spring源码5.2.9 编译踩坑
源码编译踩坑
拉取源码
我这块以5.2.9版本为例
spring-projects/spring-framework at v5.2.9.RELEASE (github.com)
版本分析
确定版本
这块将Gradle升级到了5.6.4 ,我们去官网下载即可
Gradle安装
Gradle | Releases
解压
将其解压到你想存放的文件夹
配置环境变量
- 右键“此电脑”–>“属性”–>“高级系统设置”–>“环境变量”–>“系统变量”
- 我们在系统变量中新增一个GRADLE_HOME值为解压后的路径
- 修改Path变量,将Gradle的bin目录添加进去,
- 在Path变量添加%GRADLE_HOME%\bin
在环境变量中配置默认的仓库地址
在系统变量中新增一个GRADLE_USER_HOME 值为仓库路径
验证
默认下载依赖会在当前目录下
注释掉
安全导入 不信任
等配置结束后在信任文件
这些配置都看一下
修改版本
plugins {id 'io.spring.dependency-management' version '1.0.9.RELEASE' apply false//id 'io.spring.gradle-enterprise-conventions' version '0.0.2'id 'io.spring.nohttp' version '0.0.5.RELEASE'id 'org.jetbrains.kotlin.jvm' version '1.3.72' apply falseid 'org.jetbrains.dokka' version '0.10.1' apply falseid 'org.asciidoctor.jvm.convert' version '2.4.0'id 'de.undercouch.download' version '4.1.1'id "io.freefair.aspectj" version '4.1.6' apply falseid 'com.gradle.build-scan' version '3.2'id "com.jfrog.artifactory" version '4.24.20' apply falseid "com.github.ben-manes.versions" version '0.24.0'
}
因为spring是使用gradle打包的,我们在编译前先配置下gradle的国内镜像,找到项目里面的build.gradle文件,在repositories中添加代码保存,如下图
repositories {mavenCentral()maven { url "https://maven.aliyun.com/repository/public" }maven { url "https://maven.aliyun.com/repository/spring-plugin" }maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }maven { url "https://maven.aliyun.com/nexus/content/repositories/spring-plugin" }maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }maven { url "https://repo.spring.io/libs-spring-framework-build" }}
gradle.properties
version=5.2.9.RELEASE
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xmx2048M
## 开启 Gradle 缓存
org.gradle.caching=true
## 开启并行编译
org.gradle.parallel=true
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true
等待构建
时间取决于网络
完成
测试
忒慢
说到最后
本项目只需要修改两个文件
gradle.properties和build.gradle
下面给出完整内容
gradle.properties完整文件内容
version=5.2.9.RELEASE
## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xmx2048M
## 开启 Gradle 缓存
org.gradle.caching=true
## 开启并行编译
org.gradle.parallel=true
## 启用新的孵化模式
org.gradle.configureondemand=true
## 开启守护进程 通过开启守护进程,下一次构建的时候,将会连接这个守护进程进行构建,而不是重新fork一个gradle构建进程
org.gradle.daemon=true
build.gradle完整文件内容
plugins {id 'io.spring.dependency-management' version '1.0.9.RELEASE' apply false//id 'io.spring.gradle-enterprise-conventions' version '0.0.2'id 'io.spring.nohttp' version '0.0.5.RELEASE'id 'org.jetbrains.kotlin.jvm' version '1.3.72' apply falseid 'org.jetbrains.dokka' version '0.10.1' apply falseid 'org.asciidoctor.jvm.convert' version '2.4.0'id 'de.undercouch.download' version '4.1.1'id "io.freefair.aspectj" version '4.1.6' apply falseid 'com.gradle.build-scan' version '3.2'id "com.jfrog.artifactory" version '4.24.20' apply falseid "com.github.ben-manes.versions" version '0.24.0'
}apply from: "$rootDir/gradle/build-scan-user-data.gradle"
ext {moduleProjects = subprojects.findAll { it.name.startsWith("spring-") }javaProjects = subprojects - project(":framework-bom")withoutJclOverSlf4j = {exclude group: "org.slf4j", name: "jcl-over-slf4j"}
}configure(allprojects) { project ->apply plugin: "io.spring.dependency-management"dependencyManagement {imports {mavenBom "com.fasterxml.jackson:jackson-bom:2.10.5"mavenBom "io.netty:netty-bom:4.1.51.Final"mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR12"mavenBom "io.rsocket:rsocket-bom:1.0.1"mavenBom "org.eclipse.jetty:jetty-bom:9.4.31.v20200723"mavenBom "org.jetbrains.kotlin:kotlin-bom:1.3.72"mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.5"mavenBom "org.junit:junit-bom:5.6.2"}dependencies {dependencySet(group: 'org.apache.logging.log4j', version: '2.13.3') {entry 'log4j-api'entry 'log4j-core'entry 'log4j-slf4j-impl'entry 'log4j-jul'}dependency "org.slf4j:slf4j-api:1.7.30"dependency "com.google.code.findbugs:jsr305:3.0.2"dependencySet(group: 'org.aspectj', version: '1.9.6') {entry 'aspectjrt'entry 'aspectjtools'entry 'aspectjweaver'}dependencySet(group: 'org.codehaus.groovy', version: '2.5.13') {entry 'groovy'entry 'groovy-jsr223'entry 'groovy-templates'entry 'groovy-test'entry 'groovy-xml'}dependency "io.reactivex:rxjava:1.3.8"dependency "io.reactivex:rxjava-reactive-streams:1.2.1"dependency "io.reactivex.rxjava2:rxjava:2.2.19"dependency "io.projectreactor.tools:blockhound:1.0.2.RELEASE"dependency "com.caucho:hessian:4.0.63"dependency "com.fasterxml:aalto-xml:1.2.2"dependency("com.fasterxml.woodstox:woodstox-core:6.2.1") {exclude group: "stax", name: "stax-api"}dependency "com.google.code.gson:gson:2.8.6"dependency "com.google.protobuf:protobuf-java-util:3.11.4"dependency "com.googlecode.protobuf-java-format:protobuf-java-format:1.4"dependency("com.thoughtworks.xstream:xstream:1.4.11.1") {exclude group: "xpp3", name: "xpp3_min"exclude group: "xmlpull", name: "xmlpull"}dependency "org.apache.johnzon:johnzon-jsonb:1.2.8"dependency("org.codehaus.jettison:jettison:1.3.8") {exclude group: "stax", name: "stax-api"}dependencySet(group: 'org.jibx', version: '1.3.3') {entry 'jibx-bind'entry 'jibx-run'}dependency "org.ogce:xpp3:1.1.6"dependency "org.yaml:snakeyaml:1.26"dependency "com.h2database:h2:1.4.200"dependency "com.github.ben-manes.caffeine:caffeine:2.8.5"dependency "com.github.librepdf:openpdf:1.3.20"dependency "com.rometools:rome:1.12.2"dependency "commons-io:commons-io:2.5"dependency "io.vavr:vavr:0.10.3"dependency "net.sf.jopt-simple:jopt-simple:5.0.4"dependencySet(group: 'org.apache.activemq', version: '5.8.0') {entry 'activemq-broker'entry('activemq-kahadb-store') {exclude group: "org.springframework", name: "spring-context"}entry 'activemq-stomp'}dependency "org.apache.bcel:bcel:6.0"dependency "org.apache.commons:commons-pool2:2.8.0"dependencySet(group: 'org.apache.derby', version: '10.14.2.0') {entry 'derby'entry 'derbyclient'}dependency "org.apache.poi:poi-ooxml:4.1.2"dependency "org.apache-extras.beanshell:bsh:2.0b6"dependency "org.freemarker:freemarker:2.3.30"dependency "org.hsqldb:hsqldb:2.5.1"dependency "org.quartz-scheduler:quartz:2.3.2"dependency "org.codehaus.fabric3.api:commonj:1.1.0"dependency "net.sf.ehcache:ehcache:2.10.6"dependency "org.ehcache:jcache:1.0.1"dependency "org.ehcache:ehcache:3.4.0"dependency "org.hibernate:hibernate-core:5.4.21.Final"dependency "org.hibernate:hibernate-validator:6.1.5.Final"dependency "org.webjars:webjars-locator-core:0.45"dependency "org.webjars:underscorejs:1.8.3"dependencySet(group: 'org.apache.tomcat', version: '9.0.37') {entry 'tomcat-util'entry('tomcat-websocket') {exclude group: "org.apache.tomcat", name: "tomcat-websocket-api"exclude group: "org.apache.tomcat", name: "tomcat-servlet-api"}}dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.37') {entry 'tomcat-embed-core'entry 'tomcat-embed-websocket'}dependencySet(group: 'io.undertow', version: '2.0.31.Final') {entry 'undertow-core'entry('undertow-websockets-jsr') {exclude group: "org.jboss.spec.javax.websocket", name: "jboss-websocket-api_1.1_spec"}entry('undertow-servlet') {exclude group: "org.jboss.spec.javax.servlet", name: "jboss-servlet-api_3.1_spec"exclude group: "org.jboss.spec.javax.annotation", name: "jboss-annotations-api_1.2_spec"}}dependencySet(group: 'com.squareup.okhttp3', version: '3.14.9') {entry 'okhttp'entry 'mockwebserver'}dependency("org.apache.httpcomponents:httpclient:4.5.12") {exclude group: "commons-logging", name: "commons-logging"}dependency("org.apache.httpcomponents:httpasyncclient:4.1.4") {exclude group: "commons-logging", name: "commons-logging"}dependency "org.eclipse.jetty:jetty-reactive-httpclient:1.1.4"dependency "org.jruby:jruby:9.2.11.1"dependency "org.python:jython-standalone:2.7.1"dependency "org.mozilla:rhino:1.7.11"dependency "commons-fileupload:commons-fileupload:1.4"dependency "org.synchronoss.cloud:nio-multipart-parser:1.1.0"dependency("dom4j:dom4j:1.6.1") {exclude group: "xml-apis", name: "xml-apis"}dependency("jaxen:jaxen:1.1.1") {exclude group: "xml-apis", name: "xml-apis"exclude group: "xom", name: "xom"exclude group: "xerces", name: "xercesImpl"}dependency("junit:junit:4.12") {exclude group: "org.hamcrest", name: "hamcrest-core"}dependency("de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1") {exclude group: "junit", name: "junit"}dependency "org.testng:testng:6.14.3"dependency "org.hamcrest:hamcrest:2.1"dependency "org.awaitility:awaitility:3.1.6"dependency "org.assertj:assertj-core:3.17.2"dependencySet(group: 'org.xmlunit', version: '2.6.2') {entry 'xmlunit-assertj'entry('xmlunit-matchers') {exclude group: "org.hamcrest", name: "hamcrest-core"}}dependencySet(group: 'org.mockito', version: '3.3.3') {entry('mockito-core') {exclude group: "org.hamcrest", name: "hamcrest-core"}entry 'mockito-junit-jupiter'}dependency "io.mockk:mockk:1.10.0"dependency("net.sourceforge.htmlunit:htmlunit:2.43.0") {exclude group: "commons-logging", name: "commons-logging"}dependency("org.seleniumhq.selenium:htmlunit-driver:2.43.1") {exclude group: "commons-logging", name: "commons-logging"}dependency("org.seleniumhq.selenium:selenium-java:3.141.59") {exclude group: "commons-logging", name: "commons-logging"exclude group: "io.netty", name: "netty"}dependency "org.skyscreamer:jsonassert:1.5.0"dependency "com.jayway.jsonpath:json-path:2.4.0"dependencySet(group: 'org.apache.tiles', version: '3.0.8') {entry 'tiles-api'entry('tiles-core', withoutJclOverSlf4j)entry('tiles-servlet', withoutJclOverSlf4j)entry('tiles-jsp', withoutJclOverSlf4j)entry('tiles-el', withoutJclOverSlf4j)entry('tiles-extras') {exclude group: "org.springframework", name: "spring-web"exclude group: "org.slf4j", name: "jcl-over-slf4j"}}dependency("org.apache.taglibs:taglibs-standard-jstlel:1.2.5") {exclude group: "org.apache.taglibs", name: "taglibs-standard-spec"}dependency "com.ibm.websphere:uow:6.0.2.17"dependency "com.jamonapi:jamon:2.82"dependency "joda-time:joda-time:2.10.6"dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:2.7.7"dependency "org.javamoney:moneta:1.3"dependency "com.sun.activation:javax.activation:1.2.0"dependency "com.sun.mail:javax.mail:1.6.2"dependencySet(group: 'com.sun.xml.bind', version: '2.3.0.1') {entry 'jaxb-core'entry 'jaxb-impl'entry 'jaxb-xjc'}dependency "javax.activation:javax.activation-api:1.2.0"dependency "javax.annotation:javax.annotation-api:1.3.2"dependency "javax.cache:cache-api:1.1.0"dependency "javax.ejb:javax.ejb-api:3.2"dependency "javax.el:javax.el-api:3.0.1-b04"dependency "javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0"dependency "javax.faces:javax.faces-api:2.2"dependency "javax.inject:javax.inject:1"dependency "javax.inject:javax.inject-tck:1"dependency "javax.interceptor:javax.interceptor-api:1.2.2"dependency "javax.jms:javax.jms-api:2.0.1"dependency "javax.json:javax.json-api:1.1.4"dependency "javax.json.bind:javax.json.bind-api:1.0"dependency "javax.mail:javax.mail-api:1.6.2"dependency "javax.money:money-api:1.0.3"dependency "javax.resource:javax.resource-api:1.7.1"dependency "javax.servlet:javax.servlet-api:4.0.1"dependency "javax.servlet.jsp:javax.servlet.jsp-api:2.3.2-b02"dependency "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"dependency "javax.transaction:javax.transaction-api:1.3"dependency "javax.validation:validation-api:2.0.1.Final"dependency "javax.websocket:javax.websocket-api:1.1"dependency "javax.xml.bind:jaxb-api:2.3.1"dependency "javax.xml.ws:jaxws-api:2.3.1"dependency "org.eclipse.persistence:javax.persistence:2.2.0"// Substitute for "javax.management:jmxremote_optional:1.0.1_04" which// is not available on Maven Centraldependency "org.glassfish.external:opendmk_jmxremote_optional_jar:1.0-b01-ea"dependency "org.glassfish:javax.el:3.0.1-b08"dependency "org.glassfish.main:javax.jws:4.0-b33"dependency "org.glassfish.tyrus:tyrus-container-servlet:1.13.1"}generatedPomCustomization {enabled = false}resolutionStrategy {cacheChangingModulesFor 0, "seconds"}repositories {mavenCentral()maven { url "https://maven.aliyun.com/repository/public" }maven { url "https://maven.aliyun.com/repository/spring-plugin" }maven { url "https://maven.aliyun.com/nexus/content/groups/public/" }maven { url "https://maven.aliyun.com/nexus/content/repositories/spring-plugin" }maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }maven { url "https://repo.spring.io/libs-spring-framework-build" }}}configurations.all {resolutionStrategy {cacheChangingModulesFor 0, "seconds"cacheDynamicVersionsFor 0, "seconds"}}
}configure([rootProject] + javaProjects) { project ->group = "org.springframework"apply plugin: "java"apply plugin: "java-test-fixtures"apply plugin: "checkstyle"apply plugin: 'org.springframework.build.compile'apply from: "${rootDir}/gradle/custom-java-home.gradle"apply from: "${rootDir}/gradle/ide.gradle"pluginManager.withPlugin("kotlin") {apply plugin: "org.jetbrains.dokka"compileKotlin {kotlinOptions {jvmTarget = "1.8"freeCompilerArgs = ["-Xjsr305=strict"]allWarningsAsErrors = true}}compileTestKotlin {kotlinOptions {jvmTarget = "1.8"freeCompilerArgs = ["-Xjsr305=strict"]}}}test {useJUnitPlatform()include(["**/*Tests.class", "**/*Test.class"])systemProperty("java.awt.headless", "true")systemProperty("testGroups", project.properties.get("testGroups"))systemProperty("io.netty.leakDetection.level", "paranoid")}checkstyle {toolVersion = "8.36.1"configDir = rootProject.file("src/checkstyle")}dependencies {testCompile("org.junit.jupiter:junit-jupiter-api")testCompile("org.junit.jupiter:junit-jupiter-params")testCompile("org.mockito:mockito-core")testCompile("org.mockito:mockito-junit-jupiter")testCompile("io.mockk:mockk")testCompile("org.assertj:assertj-core")// Pull in the latest JUnit 5 Launcher API to ensure proper support in IDEs.testRuntime("org.junit.platform:junit-platform-launcher")testRuntime("org.junit.jupiter:junit-jupiter-engine")testRuntime("org.apache.logging.log4j:log4j-core")testRuntime("org.apache.logging.log4j:log4j-slf4j-impl")testRuntime("org.apache.logging.log4j:log4j-jul")// JSR-305 only used for non-required meta-annotationscompileOnly("com.google.code.findbugs:jsr305")testCompileOnly("com.google.code.findbugs:jsr305")checkstyle("io.spring.javaformat:spring-javaformat-checkstyle:0.0.15")}ext.javadocLinks = ["https://docs.oracle.com/javase/8/docs/api/","https://docs.oracle.com/javaee/7/api/","https://docs.oracle.com/cd/E13222_01/wls/docs90/javadocs/", // CommonJ"https://www.ibm.com/support/knowledgecenter/SS7JFU_8.5.5/com.ibm.websphere.javadoc.doc/web/apidocs/","https://glassfish.java.net/nonav/docs/v3/api/","https://docs.jboss.org/jbossas/javadoc/4.0.5/connector/","https://docs.jboss.org/jbossas/javadoc/7.1.2.Final/","https://tiles.apache.org/tiles-request/apidocs/","https://tiles.apache.org/framework/apidocs/","https://www.eclipse.org/aspectj/doc/released/aspectj5rt-api/","https://www.ehcache.org/apidocs/2.10.4/","https://www.quartz-scheduler.org/api/2.3.0/","https://fasterxml.github.io/jackson-core/javadoc/2.10/","https://fasterxml.github.io/jackson-databind/javadoc/2.10/","https://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.10/","https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/","https://junit.org/junit4/javadoc/4.12/","https://junit.org/junit5/docs/5.6.2/api/"] as String[]
}configure(moduleProjects) { project ->apply from: "${rootDir}/gradle/spring-module.gradle"
}configure(rootProject) {description = "Spring Framework"apply plugin: "groovy"apply plugin: "kotlin"apply plugin: "io.spring.nohttp"apply plugin: 'org.springframework.build.api-diff'apply from: "${rootDir}/gradle/publications.gradle"apply from: "${rootDir}/gradle/docs.gradle"nohttp {source.exclude "**/test-output/**"allowlistFile = project.file("src/nohttp/allowlist.lines")def rootPath = file(rootDir).toPath()def projectDirs = allprojects.collect { it.projectDir } + "${rootDir}/buildSrc"projectDirs.forEach { dir ->[ 'bin', 'build', 'out', '.settings' ].collect { rootPath.relativize(new File(dir, it).toPath()) }.forEach { source.exclude "$it/**" }[ '.classpath', '.project' ].collect { rootPath.relativize(new File(dir, it).toPath()) }.forEach { source.exclude "$it" }}}publishing {publications {mavenJava(MavenPublication) {artifact docsZipartifact schemaZipartifact distZip}}}
}
相关文章:

Spring源码5.2.9 编译踩坑
源码编译踩坑 拉取源码 我这块以5.2.9版本为例 spring-projects/spring-framework at v5.2.9.RELEASE (github.com) 版本分析 确定版本 这块将Gradle升级到了5.6.4 ,我们去官网下载即可 Gradle安装 Gradle | Releases 解压 将其解压到你想存放的文件夹 配置环…...

【前端】如何制作一个自己的网页(5)
上节课我们学习了以下知识: 1、网页中常见的文本元素,如标题元素与段落元素; 2、两个通用属性id与class; 3、元素的两种类型——块级元素与行内元素。 其实除了文本内容外,网页还可以包含图片、超链接等各类信息&a…...

Unity实战案例全解析 类宝可梦回合制的初级案例 源码分析(加了注释和流程图)
这是一个老教程了,但是对于没有写过回合制的初级程序同学来讲是比较适合的,也可以直接看源码,半小时内可以解决战斗 当然,我也没写过回合制系统所以就到处找,思路明白了就能自己修改了 视频教程 - 油管链接 Turn-Bas…...
AI绘图大模型 Stable Diffusion 使用详解
近年来,生成式 AI 技术,特别是 AI 绘图模型的进展令人瞩目。Stable Diffusion 是其中一款开源的大规模图像生成模型,它能够根据文本描述生成高质量的图像,支持从写实风格到卡通、幻想等各种不同的视觉效果。本文将深入介绍如何使用…...

es索引库操作和使用RestHignLevelClient客户端操作es
目录 es索引库操作 mapping映射操作 索引库的CURD操作 1.创建索引库和映射 编辑 2.查询索引库 3.删除索引库 4.修改索引库 5.总结 文档的CURD操作 1.新增文档 2.查询文档 3.删除文档 4.修改文档 全量修改 增量修改 5.总结 RestAPI 使用API例子 需要的数…...
安卓数据共享
在 Android 中,数据共享是指不同应用之间共享数据或同一应用不同组件之间共享数据的机制。SQLite 数据库、内容提供者(Content Provider)、共享偏好(Shared Preferences)和文件存储等方式可以实现数据共享。下面将详细…...

Gin框架操作指南02:JSON渲染
官方文档地址(中文):https://gin-gonic.com/zh-cn/docs/ 注:本教程采用工作区机制,所以一个项目下载了Gin框架,其余项目就无需重复下载,想了解的读者可阅读第一节:Gin操作指南&#…...
【随手记】MySQL单表访问方法
在MySQL查询优化器中,单表访问方法(Access Method)指的是查询时数据库如何从一个表中访问所需的数据。不同的访问方法适用于不同的查询场景,主要包括 const、ref、ref_or_null、range、index 和 all。这些方法从效率上依次递减&am…...
机器学习:情感分析的原理、应用场景及优缺点介绍
一、情感分析算法概述 情感分析是自然语言处理中的一个重要任务,主要用于判断文本中所包含的情感倾向,如正面、负面或中性。 二、基于词典的情感分析算法 原理 词典构建:首先需要构建一个情感词典。这个词典包含了一系列带有情感倾向的词汇…...

基于SSM的医院药品管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

特征融合篇 | YOLOv10 引入动态上采样模块 | 超过了其他上采样器
本改进已集成到YOLOv8-Magic 框架 论文名称:《Learning to Upsample by Learning to Sample》 论文地址:https://arxiv.org/abs/2308.15085 代码地址:https://github.com/tiny-smart/dysample 我们提出了 DySample,一种超轻量级且有效的动态上采样器。尽管最近基于内核的…...

【Linux系列】写入文本到文件
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【踩坑随笔】Tensorflow-GPU训练踩坑
一个无语的坑,4060单卡训练,8G内存本来就不够,还没开始训练就已经爆内存了,但是居然正常跑完了训练,然后一推理发现结果就是一坨。。。往回翻日志才发现原来中间有异常。 首先解决第一个问题:Could not lo…...

【云岚到家】-day07-4-实战项目-优惠券活动-项目准备
【云岚到家-即刻体检】-day07-4-实战项目-优惠券活动-活动管理 1 模块需求分析1.1 业务流程1.2 界面原型1.3 业务模块 2 模块设计2.1 数据流2.2 表结构设计2.2.1 优惠券活动表设计2.2.2 优惠券表设计2.2.3 优惠券核销表2.2.4 优惠券退回表 2.3 创建数据库2.4 创建工程 1 模块需…...
axios的使用
在 Vue 项目中,封装 Axios 并实现加密、重复请求优化、请求取消、页面切换时取消未完成的请求、以及区分上传和下载操作是非常常见的需求。下面将逐一讲解这些需求的实现方式。 1. Axios 的基本封装 首先,我们可以将 Axios 封装到一个服务层中…...
Ubuntu 使用命令克隆和恢复SD卡
因为平常我需要做很多张开发板的出货卡,测试卡,那么我需要将备份下来文件,方便后续管理,这里时候需要用到Ubuntu上面的命令来克隆镜像和恢复镜像到SD卡上 先查询自己的SD卡是在sdx,以我的为例子,为sdb 备…...

Java 小游戏《超级马里奥》
文章目录 一、效果展示二、代码编写1. 素材准备2. 创建窗口类3. 创建常量类4. 创建动作类5. 创建关卡类6. 创建障碍物类7. 创建马里奥类8. 编写程序入口 一、效果展示 二、代码编写 1. 素材准备 首先创建一个基本的 java 项目,并将本游戏需要用到的图片素材 image…...
go语言defer详解
什么是defer?为什么需要defer?怎样合理使用defer?defer进阶 defer的底层原理是什么?利用defer原理defer命令的拆解defer语句的参数闭包是什么?defer配合recover后记参考资料 什么是defer? defer是Go语言提供的一种用…...

【C语言】循环中断break
在循环使用过程中,可能遇到某些情况需要终止循环。比如按座位查找一位学生,循环查找,找到时可以直接停止。后续的循环将不再执行。 break;只跳出一层循环 例子中的素数判断,查找到根号n停止:一个合数等于两个数的乘积…...

centos ping能通但是wget超时-解决
问题截图: 域名解析地址为IPV6地址,建议您调整IPV4优先级之后,再尝试访问,请参考Linux系统IPv4/IPv6双栈接入优先使用IPv4设置:移动云帮助中心 实操截图:...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...