Jenkins三种构建类型

news2025/1/13 20:01:38

目录

  • 传送门
  • 前言
  • 一、概念
  • 二、前置处理(必做)
    • 1、赋予777权限
    • 2、让jenkins用户拥有root用户的kill权限
    • 3、要运行jar包端口号需要大于1024
  • 三、自由风格软件项目(FreeStyle Project)(推荐)
  • 三、Maven项目(Maven Project)
  • 四、流水线项目(Pipeline Project)
    • 1、概念
    • 2、拉取代码
    • 3、编译打包
    • 4、项目部署
    • 5、Jenkinsfile文件
  • 五、常见报错分析
    • 1、路径错误
    • 2、kill没有权限
    • 3、项目启动报错
  • 六、jenkins清除构建历史防止磁盘爆满(非常重要)
  • 七、jenkins的另一种日志磁盘爆满(非常重要)
  • 八、jenkins重启项目全部丢失

传送门

SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口

前言

承接 Jenkins的jdk和maven配置一文,
以CentOS7上面的支持JDK8的Jenkins2.346-1的LTS版本和支持JDK17的Jenkins 2.440.1的LTS版本综合介绍Jenkins三种构建类型,默认按照高版本Jenkins2.440.1讲解,有不一样的地方会特别指出低版本Jenkins。

下面文章不定期更新中。。。

Linux安装JDK17
Linux安装MySQL
Linux安装Nginx
Linux安装Maven
运行一个jar包

Jenkins安装启动(JDK8/11/17)
Jenkins配置(插件/角色/凭证)
Jenkins的jdk和maven配置
Jenkins三种构建类型

一、概念

Jenkins中自动构建项目说白了,就是让java项目自动更新代码,自动打包,自动kill之前的java项目,自动发版新打包的java项目。可以配置纯Linux操作,也可以配置Docker方式的。

Jenkins中自动构建项目的类型有很多,常用的有以下三种:

自由风格软件项目(FreeStyle Project)
Maven项目(Maven Project)
流水线项目(Pipeline Project)

默认只有第一个自由风格软件项目,我们主要用的也是这个,其他的需要Maven等插件支持。
在这里插入图片描述
点击New Items
在这里插入图片描述
默认就是第一个自由风格软件项目(FreeStyle Project)。笔者接下来主要讲解常用的三种。

二、前置处理(必做)

1、赋予777权限

在依赖脚本处理的时候,需要放权。

# 不可以偷懒直接给var文件夹赋权,会导致很多错误。有些文件夹不能有太高的权限。
chmod 777 -R /var/lib/jenkins
chmod 777 -R /var/cache/jenkins
chmod 777 -R /var/log/jenkins

2、让jenkins用户拥有root用户的kill权限

# gpasswd -a  jenkins  root  # jenkins用户加入到root组,这个命令可以先不管,如果一直报错,可尝试
sudo visudo  # 修改sudoers文件,在最后一行加入下面内容
jenkins ALL=(ALL) NOPASSWD: /bin/kill  #  让jenkins拥有root的kill权限
sudo -k   #  该命令来清除sudo缓存

注意:重启jenkins!!!

3、要运行jar包端口号需要大于1024

比如笔者的feBackEnd-1.jar,里面的端口号是81,实际操作,由于jenkins用户操作的,java -jar权限不够,会导致启动报错,所以读者jar包的端口号最好是改成大于1024的。另一种就是不用jenkins用户操作,将jenkins配置文件里面的jenkins用户和jenkins组都改成root。见下面文章的五、常见报错分析-kill没有权限,有相关操作教程。

三、自由风格软件项目(FreeStyle Project)(推荐)

输入我们的软件项目名称,这个可以随便自定义名称,但是多个微服务的时候,建议还是用微服务名称,这样很多个的时候,很好区分。

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

例如笔者后端项目叫feBackEnd,打包为feBackEnd-1.jar,在Jenkins这边就写入feBackEnd。
在这里插入图片描述

输入项目名称后点击FreeStyle Project,然后再点击ok。

注意:长时间不操作Jenkins,会超时的,会导致一些报错。这个时候重新登录一下Jenkins就好了。

在这里插入图片描述
笔者这边默认都设置为3个,强烈建议设置好。后面文章会单独提到这块为什么要设置这些。
在这里插入图片描述

Source Code Management这块,如果没有看到Git和Subversion,则是需要重新去装插件(就是Git和Subversion两个单词,不扩展不省略),然后重启。插件安装可以参考笔者之前的文章,Jenkins配置(插件/角色/凭证)
在这里插入图片描述
在这里插入图片描述
输入地址提示错误,是笔者Jenkins所在的Linux服务器没有安装Git导致的,SVN报错同理。
在这里插入图片描述
在这里插入图片描述

笔者服务器为CentOS,用下面指令安装git,如果是svn则把git单词换成subversion即可。用svn --version检查。

sudo yum install git  # 一路y就可以了
git --version  #  检查git

git ls-remote -h https://gitee.com/zangtie/feproject.git  # 显示远程仓库https://gitee.com/zangtie/feproject.git中的引用列表,通常我们说的Head,也就是最新提交的版本。如果显示了像我下面截图9f5b.....a91ac之类的字符串,那说明Jenkins所在服务器的git配置OK了。

在这里插入图片描述

如果是下图这种提示,那么配置的账户和密码肯定是不对的。查看zangtie的git账户密码。
在这里插入图片描述
下面这个指令,马上就可以验证密码。

git ls-remote -h https://gitee.com/zangtie/feproject.git  # 显示远程仓库https://gitee.com/zangtie/feproject.git中的引用列表,通常我们说的Head,也就是最新提交的版本。如果显示了像我下面截图9f5b.....a91ac之类的字符串,那说明Jenkins所在服务器的git配置OK了。

然后我们重新登录Jenkins看下配置,注意,还是不行的话,可以重启jenkins查看。
在这里插入图片描述
点击刚刚没有配置完成的feBackEnd
在这里插入图片描述

点击左侧的Configure,后面反复配置一个项目,都是从这里点进来。
在这里插入图片描述

这下红字提示没有了。

接下来是最重要的一步

在这里插入图片描述

Build Steps这步选择Execute shell,我们通过执行脚本来更新jar包,打包jar包,kill 旧的jar进程id,发版新的jar包。

先看一个纯净版shell

fileName=feBackEnd-1.jar
pathName=feBackEnd
logFile=fe.txt
cd ./$pathName
echo "开始编译和打包"
mvn clean package -Dmaven.test.skip=true
echo "编译和打包结束"
PID=$(ps -ef | grep $fileName | grep -v grep | awk '{ print $2 }')
if [ ${PID} ]; 
then
 echo 'Application is stoping...'
 echo kill $PID DONE
 sudo kill -9 $PID
else
 echo 'Application is already stopped...'
fi
mv /var/lib/jenkins/workspace/$pathName/$pathName/target/$fileName     /java/$fileName
cd /java
BUILD_ID=dontKillMe nohup java -Xms512m -Xmx512m -jar  $fileName > $logFile  2>&1 &
echo "启动项目"
if [[ ! -f $logFile ]]; then
  sleep 2
fi
sleep 20
tail -n 20 $logFile
aaa=`grep "Started" $logFile | awk '{print $10}'`
if [[ -n "${aaa}" ]];then
    echo "启动成功"
    exit 0
else
    echo "启动失败"
    exit 1
fi

下面解释一下这个sheel的大概意思(强烈建议认真看一下,脚本是重中之重,后面报错的排错也基本在脚本这边)

fileName=feBackEnd-1.jar  #  定义一个变量fileName
pathName=feBackEnd # 定义一个变量pathName
logFile=fe.txt  # 定义一个变量logFile
cd ./$pathName # Jenkins执行脚本的默认工作目录会在控制台打印输出,笔者这儿测试的时候是/var/lib/jenkins/workspace/feBackEnd,注意这里面有大坑。后面文章会具体说明。
echo "开始编译和打包"  # 这个是在jenkins控制台打印输出的,给我们自己看的,看进行到哪一步了
mvn clean package -Dmaven.test.skip=true # 我们打包发版,基本是先clean旧的calss文件,然后重新打包jar包或者war包。如果是聚合模块,mvn clean package -Dmaven.test.skip=true -pl economic-auth-server/auth-server -am;其中economic-auth-serve是总模块,auth-server 是子模块,这样就可以只clean package 子模块。笔者后面文章Maven项目的案例就是聚合模块的。
echo "编译和打包结束" # 控制台输出
PID=$(ps -ef | grep $fileName | grep -v grep | awk '{ print $2 }') # 找到feBackEnd.jar对应的进程id
if [ ${PID} ]; # 如果存在进程id。
then
 echo 'Application is stoping...'# 控制台输出,应用程序正在被停止
 echo kill $PID DONE   # 控制台输出kill 进程id  字样
 sudo kill -9 $PID  # kill杀掉进程,结束之前运行的jar或者war包进程
else # 不存在进程id,说明之前jar包已经被结束了
 echo 'Application is already stopped...'# 控制台输出,应用程序已经停止
fi
mv /var/lib/jenkins/workspace/$pathName/$pathName/target/$fileName     /java/$fileName #这个是将新打的包移动到自己Linux服务器的一个工作目录下。前面路径是jenkins帮你打包的工作目录,后面目录是我自己在Linux新建的一个目录,就是想看到jenkins工作没有。熟悉打包的读者,可以忽略这步,直接就在jenkins的工作目录搞。
# 特别注意1:很多读者没有成功,就是这边的路径配置错误了,因为Jenkins版本不同,所以jenkins帮你打包的工作目录也不同。一定要到自己服务器的工作目录看看,真实路径是怎么样的。比如笔者这个高版本Jenkins的工作目录是这样的:/var/lib/jenkins/workspace/feBackEnd/feBackEnd  ,所以上面指令就对应的配置即可。
# 特别注意2:之前的前置处理一定要做好。否则会有很多访问权限问题。
cd /java # 进入我在Linux新建的那个目录里面,如果是Jenkins工作目录直接搞,这里就是 cd  /var/lib/jenkins/workspace/feBackEnd/feBackEnd
BUILD_ID=dontKillMe nohup java -Xms512m -Xmx512m -jar  $fileName > $logFile  2>&1 & #  发版指令,堆内存大小读者根据自己需要调整大小
echo "启动项目" # 控制台输出
if [[ ! -f $logFile ]]; then # 这步其实可以忽略。就是没有日志文件的时候,给了一个创建日志文件的时间
  sleep 2 # 2秒
fi
sleep 20 # 这个时间可以根据项目启动的时间灵活调整,我jar包启动很快,所以20秒足够了,如果Linux的respository仓库还没有任何jar包,那么这个时间根据读者jar包的体量,第一次还是弄特别大些,等Linux的respository仓库该有的jar包都有了以后,再把时间改小。笔者建议还是拷贝本地win电脑的respository仓库到Linux上最好。
tail -n 20 $logFile # 这个是为了查看启动的时候打印日志,查看是否启动成功,启动报错的信息显示出来
aaa=`grep "Started" $logFile | awk '{print $10}'` # 指令的解释:|前面为 在整个日志文件里面去找 Started这个单词,如果找到了,就print这个单词出来,print $10就是打印10个字符长度。aaa=就是给赋值了。实际就是 aaa=Started了。如果没有找到,aaa=“”了。这个是抓捕了jar包启动成功的一个标志,比如springboot启动成功后,里面日志里面包含了  Started这个单词,读者也可以根据自己的转有单词抓捕。
if [[ -n "${aaa}" ]];then # aaa不为空串的时候
    echo "启动成功" # 输出启动成功
    exit 0 # 退出并返回0
else
    echo "启动失败" # 输出失败
    exit 1 # 退出并返回1
fi

配置脚本后点击保存,整个配置完成。

在这里插入图片描述

接下来就是激动人心的时刻了,点击Build Now
在这里插入图片描述
然后点击左下角的进度条
在这里插入图片描述
在这边的Console Output可以看到打印出的一些东西。像我们idea本地开发一样,一览无余。顺利的话,启动完成。自动化发版就构建完成了。
在这里插入图片描述

三、Maven项目(Maven Project)

这边以聚合项目,并且是笔者汉化包的对应jdk8的低版本Jenkins讲解。如果自由风格软件项目很熟悉了,这边操作起来就很简单了。

首先 安装Maven Integration插件,安装失败就看下插件那边教程。
在这里插入图片描述
安装插件重启Jenkins以后,可以看到多了maven项目的选择。我们选择maven项目。
在这里插入图片描述

在这里插入图片描述

这个是笔者的一个聚合项目,根pom.xml下面有很多子模块
在这里插入图片描述

clean install -Dmaven.test.skip=true -pl economic-auth-server/auth-server -am

这条指令就是解决聚合模块最关键的指令。其他类似自由风格软件项目,增加脚本就可以了。

纯净版脚本,读者可以根据自己真实情况,修改下面的变量,以及注意工作目录这些基本信息的脚本修改。

fileName=auth-server-0.0.1-SNAPSHOT.jar
pathName=economic-auth-server/economic-auth-server/auth-server
logFile=auth-server.txt
PID=$(ps -ef | grep $fileName | grep -v grep | awk '{ print $2 }')
if [ ${PID} ]; 
then
 echo 'Application is stoping...'
 echo kill $PID DONE
 kill -9 $PID
else
 echo 'Application is already stopped...'
fi
mv /var/lib/jenkins/workspace/$pathName/target/$fileName     /java/$fileName
cd /java
BUILD_ID=dontKillMe nohup java -Xms512m -Xmx512m -jar  $fileName > $logFile  2>&1 &
echo "启动项目"
if [[ ! -f $logFile ]]; then
  sleep 2
fi
sleep 20
tail -n 20 $logFile
aaa=`grep "Started" $logFile | awk '{print $10}'`
if [[ -n "${aaa}" ]];then
    echo "启动成功"
    exit 0
else
    echo "启动失败"
    exit 1
fi

四、流水线项目(Pipeline Project)

流水线项目,笔者这边参考了黑马程序员的一些方案

1、概念

在这里插入图片描述
比其他的类型多了一个流水线,点击流水线语法
在这里插入图片描述

2、拉取代码

在这里插入图片描述
拉取代码
在这里插入图片描述
点击这个按钮,就生成了代码,把这个代码拷贝到前面截图中的流水线中。

在这里插入图片描述
拷贝
在这里插入图片描述
这个才是正确截图,其他截图少个 agent any。

3、编译打包

在这里插入图片描述
编译打包,用的脚本命令
在这里插入图片描述
将生成的代码拷贝过来

4、项目部署

在这里插入图片描述
项目部署
在这里插入图片描述
将生成的代码拷贝过去
在这里插入图片描述
拷贝

5、Jenkinsfile文件

在这里插入图片描述
项目跟目录下穿件Jenkinsfile文件,在流水线定义这边选择截图的,可以直接读取到这个文件的配置。这个文件配置就是把上面的3步代码放进去,这样做是为了让git等工具管理起Jenkins代码的迭代。

五、常见报错分析

1、路径错误

错误如下:
在这里插入图片描述

下面截图是默认工作目录
在这里插入图片描述
下面截图是可以看到pom.xml也就是src文件夹所在目录
在这里插入图片描述

可以看到笔者这边默认工作路径是/var/lib/jenkins/workspace/feBackEnd,而实际上,还得加一层目录才能看到pom.xml,因为我们打包都是依赖Maven,而Maven则主要靠项目中的pom.xml去工作,所以真正的干活儿目录应该 /var/lib/jenkins/workspace/feBackEnd/feBackEnd
在这里插入图片描述
在这里插入图片描述
如果读者在/var/lib/jenkins/workspace/feBackEnd下面就可以看到pom.xml了,那么就不能像笔者那样再进入一层,反正就是以pom.xml所在的目录去clean package才对。

2、kill没有权限

在这里插入图片描述
脚本里面执行kill操作的时候,提示没有权限。

ps -ef |grep java 

在这里插入图片描述
可以发现jenkins启动的时候并不是root用户,而是jenkins用户。笔者尝试脚本里面的kill -9 前面加个sudo ,变成 sudo kill -9 ,这种也不行的,会有新的错误,不过sudo一定要加上。
在这里插入图片描述
这种时候有三个思路。

思路一:脚本里面增加su 去切换到root用户,但是需要输入root密码,这样脚本里面有暴露root用户密码的风险,不太推荐。

思路二(推荐):修改jenkins权限,让jenkins用户执行kill命令时候有root权限

sudo visudo  # 修改sudoers文件,在最后一行加入下面内容
jenkins ALL=(ALL) NOPASSWD: /bin/kill  #  让jenkins拥有root的kill权限
# jenkins ALL=(ALL:ALL) ALL  # 让jenkins拥有root的所有权限(推荐,可以一劳永逸解决很多问题)

在这里插入图片描述

sudo -k   #  该命令来清除sudo缓存

然后建议重启jenkins,重新Build Now。注意sheel脚本是 sudo kill -9 $PID,是包含sudo单词的。不然也会报错。

思路三:直接将Jenkins的配置文件中的用户和组对应的值jenkins修改为root。这种是最简单的办法,直接用root启动Jenkins,所有权限问题都不存在了。但是企业级开发中,很多时候是禁用root账户的。所以笔者才推荐思路二。其实思路三可以一劳永逸的解决很多潜在问题。

# 直接换成root
vim /etc/sysconfig/jenkins # 如果有就修改,比如低版本Jenkins会有

vim /etc/init.d/jenkins  # 如果有就修改

vim /usr/lib/systemd/system/jenkins.service   # 将User和Group都修改为root

systemctl daemon-reload 

chown -R root:root  /var/lib/jenkins  # 原来是jenkins用户启动的,这些文件权限属于jenkins组jenkins用户,现在修改为root组root用户。
chown -R root:root /var/cache/jenkins # 同上
chown -R root:root /var/log/jenkins # 同上

在这里插入图片描述

在这里插入图片描述
注意:重启jenkins!!!重新Build Now,可以发现问题解决了。

3、项目启动报错

在编译报错、kill报错都解决以后,发现好好的项目,启动居然报错了。这个时候,最简单的方式就是,先不用Jenkins,直接java -jar feBackEnd.jar,先看下直接启动,能否启动成功。有些时候,一些中间件没有启动起来,会导致jar包启动失败,比如redis、MySQL等等。笔者这边遇到个很坑的东西,就是笔者的Linux服务器运行了太多东西,导致笔者内存不够用了,也会导致jar包启动不了,这种时候就得kill些其他程序了。

在直接java -jar feBackEnd.jar启动不报错以后,内存够用以后,我们再来细看Jenkins报错的问题。

首先还是权限问题,比如如果是阿里云服务器,开启了,阿里云很多的权限规则或者防病毒监控的一些功能,会导致jenkins用户的权限不够,出一些莫名其妙的问题。
在这里插入图片描述

sudo chmod 777 -R /java

在这里插入图片描述

会发现,修改/java的指令不被容许了。我们来看下ChatGPT的回答,接下来跟着ChatGPT给的思路来解决。笔者这边将81端口改成了8081,一下子就好了,读者可以根据实际情况,最好一个一个都过一下。最后第5条,就是笔者指出的阿里云的防病毒之类的一些东西,可以关闭试一下。如果是华为云、青云、腾讯云等,也是类似的操作。如果是企业级的则慎重关闭。
在这里插入图片描述

六、jenkins清除构建历史防止磁盘爆满(非常重要)

笔者的自由风格软件项目高版本案例已经处理了。但是这边还是单独提一下,这边案例是低版本Jenkins案例。
在这里插入图片描述
/var/log/jenkins/jenkins.log 这个jenkins的日志,一般不会太大,删除需要先关闭jenkins的进程,然后再物理删除。这个不是本篇重点。
/var/lib/jenkins/jobs 在这个jobs下面会发现我们大量的构建项目,占用大量空间,在我们给项目配置的地方,勾选上 丢弃旧的构建,把高级也设置上,本次设置3。
在这里插入图片描述
设置丢弃旧的构建前,这边文件非常多,构建一次一个文件夹,非常占用硬盘
在这里插入图片描述
设置以后,发版一次,会自动删除多余的构建,very nice

七、jenkins的另一种日志磁盘爆满(非常重要)

/var/lib/jenkins/logs 文件夹下面的一种日志,主要是csp里面的日志,我直接手动删除了这个文件夹,没什么问题。硬盘直接释放出70%的硬盘空间。

后面是网上找到的一种功能,是否有效待验证。在/etc/logrotate.d/jenkins或/etc/logrotate.d/jenkins-oc中找到
设置为每天轮换并仅保留一周(轮换为7),或者根据maxsize或组合设置特定的限制.
在这里插入图片描述

/var/log/jenkins/jenkins.log /var/log/jenkins/access_log {
    weekly
    copytruncate
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
}

八、jenkins重启项目全部丢失

笔者之前搞前端项目放进jenkins 的时候,发生了一次事故,这里记录一下
在这里插入图片描述
原因:更新前端node.js插件后重启导致所有项目丢失,但是前端项目还在。网上查找发现
vim /etc/profile
export JENKINS_HOME=/var/lib/jenkins
这些都是配置好的,根本不是这个问题。由于提前在百度网盘备份了插件,将更新后的两个插件还原,重启以后解决了。后面就把全部jenkins插件都备份了,太吓人了。

总结:大家最好是把jenkins插件都备份,尤其是低版本的对应JDK8的Jenkins,有时候操作设置的时候,真的很容易出问题。到此Jenkins的讲解完成了,祝大家用Jenkins用的愉快。

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

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

相关文章

最全面又最浅显易懂的Langchain快速上手教程(下)

最全面又最浅显易懂的Langchain快速上手教程(下) 三. 深入Langchain 1. 架构设计 从上文知道Langchain在架构上使用了从抽象、到具体、再到整合适配的三层架构,这种一层一层逐渐具体的设计最大可能性的保证了架构的可扩展性和维护性。同时…

【Python】 探索 Python 中的 Ellipsis 对象:一个神奇的省略号

基本原理 在 Python 中,Ellipsis 对象是一个特殊的内置对象,它通常用三个连续的点 ... 来表示。这个对象在 Python 中有几个特定的用途,尤其是在切片操作和迭代器表达式中。虽然它看起来像是一个普通的省略号,但它实际上是 Pytho…

DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状

DeepSORT(目标跟踪算法)中自由度决定卡方分布的形状 flyfish 重要的两个点 自由度决定卡方分布的形状(本文) 马氏距离的平方在多维正态分布下服从自由度为 k 的卡方分布 独立的信息 在统计学中,独立的信息是指数据…

MySQL的group by与count(), *字段使用问题

文章目录 问题group by到底做了什么举个例子简单来说为什么select字段,count()不能和*共同使用总结 问题 这是一段摘抄自MySQL官网的文字。其大致意思是MySQL拓展了group by的使用,MySQL允许选择没有出现在group by中的字段。换句话说,标准SQ…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 论文及代码详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世,解决了很多计算机和机器人领域的覆盖路径问题,今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

【Qt】TreeWidget中Item的UserCheckable注意事项,没有出现多选框

1. 异常 开启 ItemIsUserCheckable以后,界面上没有出现多选框。 QTreeWidgetItem *item new QTreeWidgetItem();item->setText(0, "hello");item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsSelectable |Qt::ItemIsEnabled | Qt::ItemIsAuto…

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营)

最新thinkphp5内核全开源女神赢口红H5公众号版第五版(100%可经营) 搭建教程 1、程序为thinkPHP5开发 php版本要求5.6!不支持虚拟主机! 2、上传程序到您的根目录!导入m213.sql文件!修改数据库配置文件app…

Github 2024-06-10 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目2Go项目2PHP项目1Blade项目1TypeScript项目1Lua项目1Dart项目1Swift项目1Cuda项目1Python项目1MDX项目1Ventoy: 100%开源的可启动USB解决方…

考虑双碳分时价格的综合能源系统低碳优化调度

目录 一、主要内容介绍: 二、仿真结果: 三、研究内容: 四、代码下载: 一、主要内容介绍: 在含电热气多种能源的综合能源系统中,复杂的能量转换关系以及可再生能源和负荷的波动性,给综合能源…

必备:产品经理工作文档大全

产品经理(英文:Product manager,缩写:PM)也称产品企划,是指在公司中针对某项或某类的产品进行规划和管理的人员,主要负责产品的研发、制造、营销、渠道等工作。 产品经理是很难定义的一个角色&a…

群体优化算法---水波优化算法介绍以及应用于聚类数据挖掘代码示例

介绍 水波优化算法(Water Wave Optimization, WWO)是一种新兴的群智能优化算法,灵感来自水波在自然环境中的传播和衰减现象。该算法模拟了水波在水面上传播和碰撞的行为,通过这些行为来寻找问题的最优解。WWO算法由三种主要的操作…

如何发挥物联网电能表的优势

发挥物联网电能表的优势,对于提升电力系统的智能化水平、优化电力资源配置、提高用电效率以及促进环保发展等方面都具有重要意义。 一、实时监测与数据分析 物联网电能表的核心优势在于其能够实时监测电力使用情况,并通过无线网络将数据传输到云平台。…

【数据结构】图论——AOV和AOE(拓扑排序、存放表达式、关键活动、关键路径)

目录 AOV和AOEAOV 有向无环图及其应用(拓扑结构)有向无环图的应用——存放表达式二叉树存放表达式图存放表达式 AOE 有向无环图及其应用——关键路径1. 事件的最早发生时间事件(顶点)最早发生时间的计算方法: 2. 事件允许的最晚发生时间事件(…

CV每日论文--2024.6.7

1、Convolutional Neural Networks and Vision Transformers for Fashion MNIST Classification: A Literature Review 中文标题:卷积神经网络和视觉变换器在Fashion MNIST分类任务中的应用:文献综述 简介:本文综述了在Fashion MNIST数据集上使用卷积神…

idea鼠标滚轮滚动放大缩小字体

在idea中的【file】->【settings】菜单,弹出settings窗口,点击窗口中的【Editor】->【General】,在右侧窗口中,选中【Change font size with CtrlMouse Wheel in All editors】即可。

mmyolo

cal_map2测试有问题, /home/lsw/miniconda3/envs/mmyolo/lib/python3.8/site-packages/torch/functional.py:445: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/s…

力扣第十题 10.正则表达式匹配

目录 题目 解题思路 正则表达式代码 动态规划代码 官方解题 题目 解题思路 这次也给我捡到狗运了,反正只要一直上传,内存总会遥遥领先的,只要在你速度领先了的情况下。 这次题目还是想当的困难的。我们有两种思路,一种就是使…

Android AOSP定制去掉Google搜索栏

Android AOSP定制去掉Google搜索栏 1.前言: ​ 最近接触了Android系统定制的需求,感觉非常有意思,之前做过Launcher和串口,也自己安装过虚拟机,不过几年没用Linux系统了有点不习惯,Linux命令也不熟悉&…

[Elasticsearch] ES更新问题踩坑记录

drop table if exists tmp.test_create_table; create table if not exists tmp.test_create_table( id int, name string ) stored as parquet; 问题排查 查看ES数据 发现ES创建表的状态没有正常更新 yn 还是0 查看日志 查看日志, 截取部分关键信息: ReceiverControl…

kaggle竞赛实战9——模型融合

有三种方法, 第一种:均值融合,代码如下 data pd.read_csv(\ result/submission_randomforest.csv\ ) data[randomforest] data[target].values temp pd.read_csv(\ result/submission_lightgbm.csv\ ) …