DevOps工程技术价值流:Jenkins驱动的持续集成与交付实践

一、Jenkins系统概述

Jenkins:开源CI/CD引擎的佼佼者

Jenkins,作为一款基于Java的开源持续集成(CI)与持续交付(CD)系统,凭借其强大的插件生态系统,成为DevOps实践中不可或缺的核心引擎。这些插件覆盖了从构建、部署到自动化的全方位需求,使得Jenkins能够灵活适应从小型团队到大型企业级的各类项目。特别是Pipeline插件,为项目流水线的建立提供了无限可能,无论项目使用何种语言或源代码仓库,Jenkins都能轻松实现自动化构建、测试和部署。

二、Jenkins应用场景详解

2.1 持续集成:提升开发效率与质量

  • 背景:在缺乏自动化工具的时代,开发人员需要手动运行验证任务,随着代码提交频率的增加,集成错误频发且难以及时发现。

  • Jenkins解决方案:通过自动化构建触发器和与版本控制系统的紧密集成,Jenkins能够在代码提交后自动运行验证任务,迅速发现集成错误并反馈,从而显著提高开发效率和代码质量。

2.2 持续部署:实现高效、稳定的发布

  • 背景:传统的手动或通过Shell脚本进行的应用部署过程容易出错,且发布时间不稳定。

  • Jenkins解决方案:Jenkins将部署脚本集成到Pipeline中,实现了部署过程的可视化和参数化。通过复用发布步骤并传递环境参数,Jenkins能够自动化地将应用程序部署到不同环境中,大大降低了人工错误和发布时间的不确定性。

2.3 持续测试:增强测试的透明度和可追溯性

背景:测试人员在本地通过命令行运行测试用例,缺乏统一管理和可视化展示。

Jenkins解决方案:Jenkins允许将测试用例和相关脚本存储到版本控制系统中,并通过自动化运行测试用例和测试插件将测试结果展示到页面上。这不仅提高了测试的透明度和可追溯性,还有助于及时发现和修复问题。

三、Jenkins系统安装与架构解析

3.1 基础必备

3.1.1 Jenkins架构深度剖析

  • 分布式架构:Jenkins采用灵活且可扩展的分布式架构,由服务端(Master)节点和代理端(Agent/Slave)节点构成。

    • 服务端(Master)节点:负责流水线作业的调度与管理,是Jenkins的中枢神经,需保持高度稳定和可靠。

    • 代理端(Agent/Slave)节点:实际执行流水线作业中的任务,可根据需求动态添加或移除,以应对不同的工作负载。

  • 部署建议:代理端节点通常部署于靠近代码仓库或目标部署环境的位置,以减少网络延迟并提高执行效率。

3.1.2 版本选择策略

  • Jenkins LTS版本:建议选择Jenkins的LTS版本,因这些版本经过更严格的测试和验证,具有更高的稳定性和可靠性。

  • JDK版本:自Jenkins LTS 2.346.x版本起,安装部署时最低版本要求为JDK 11。为确保兼容性和稳定性,建议使用JDK 11或更高版本。

  • 避免JDK 8:尽管Jenkins在某些早期版本中支持JDK 8,但随着Jenkins和插件的不断更新,JDK 8可能会引发兼容性问题或性能下降,因此建议避免使用。

3.2 安装Jenkins

Jenkins的安装方式多样,但Docker以其轻量级、可移植性和易于管理的特性,成为现代DevOps实践中安装Jenkins的首选。本文重点介绍通过Docker安装Jenkins的优化步骤,确保安装过程既高效又稳定。

3.2.1 Docker环境准备

  1. Docker安装:

    1. 确保系统已安装Docker,并按照官方文档正确配置启动选项和网络设置。

    2. Docker安装链接:Docker官方文档

  2. Docker Compose(可选):

    1. 如需管理多个Docker容器或服务,建议使用Docker Compose。

    2. Docker Compose安装链接:Docker Compose官方文档

也可以参考: https://blog.csdn.net/heijunwei/article/details/128706198

3.2.2 Docker安装Jenkins步骤

1、拉取Jenkins镜像

docker pull jenkins/jenkins:{version}

2、编写docker-compose.yml(可选)

version: "3.1" // 指定 Docker Compose 文件的版本。这里使用的是版本 3.1
services: //是一个顶级键,用于定义多个服务。每个服务都是一个独立的容器。
  jenkins: //是服务的名称,表示我们将创建一个名为 jenkins 的服务。
    image: jenkins/jenkins:{version} // 指定了要使用的 Docker 镜像。
    container_name: jenkins //  指定了容器的名称。这里将容器命名为 jenkins。
    ports:
      - 8080:8080 // 表示将主机的 8080 端口映射到容器的 8080 端口。Jenkins 的 Web 界面通常运行在这个端口上。
      - 50000:50000 // 表示将主机的 50000 端口映射到容器的 50000 端口。这个端口用于 Jenkins 的代理通信。
    volumes:
      - ./data/:/var/jenkins_home/  //定义数据卷,将主机的目录挂载到容器的目录,Jenkins 的所有配置和构建历史都会存储在这个目录中。

3、设置data目录写权限

chmod -R a+w data/

4、下载地址设置为国内镜像站

# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://updates.jenkins.io/update-center.json</url>
  </site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
  </site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

5、启动jenkins容器

docker-compose up -d

如果不用docker compose 用下面的命令

docker run -d --name jenkins \ -p 8080:8080 -p 50000:50000 \ --restart=always \ -v /var/jenkins_home:/var/jenkins_home \ -e JENKINS_OPTS="--prefix=/jenkins" \ jenkins/jenkins:lts

6、查看密码登录Jenkins,并登录下载插件

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

注:此处安装插件失败概率比较大,没关系直接进入首页创建账户

3.3 Jenkins插件安装

3.3.1 常用插件简介

  • Git Plugin:与Git版本控制系统集成,允许Jenkins自动拉取代码库中的最新代码。

  • Pipeline Plugin:支持用户定义复杂的构建流程,包括分阶段构建、测试和部署等。

  • Docker Plugin:用于管理Docker容器,使应用能够在隔离的环境中运行,提高构建和部署的灵活性和安全性。

  • Blue Ocean:提供一个现代化的用户界面,简化了Jenkins的使用,改善了用户体验。

  • Parameterized Trigger:允许在不同构建任务之间传递参数,实现更灵活的构建触发和参数共享。

  • Git Parameter:基于Git的参数化构建插件,允许用户在构建时选择Git的分支、版本号、标签等参数。

  • Publish Over SSH:通过SSH连接到远程服务器,进行文件传输、执行shell脚本等操作,实现构建结果的远程部署。

  • Gitlab Plugin:基于Gitlab的WebHooks操作,可以触发Jenkins构建任务,实现Gitlab与Jenkins的自动化集成。

  • Chinese:将Jenkins界面汉化为中文,方便中文用户使用。

  • Role-based Authorization Strategy:通过基于角色的权限管理机制,支持创建全局角色、项目角色等,方便成员间的权限控制。

  • Maven Integration Plugin:支持Maven编译,方便Java项目的构建和依赖管理。

3.3.2 插件安装方法

1、设置更新站点

进入Jenkins管理界面(Manage Jenkins),选择“Manage Plugins”->“Advanced”,在最下面的“Update Site”中设置为国内镜像站点,如清华大学的镜像站点https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,以提高插件更新的速度和稳定性。

2、修改服务器配置(可选)

如果需要进一步优化Jenkins的更新和访问速度,可以通过修改Jenkins配置文件中的默认更新站点和搜索引擎设置。这通常涉及到对Jenkins安装目录下的default.json文件的编辑,也可以用命令操作。

​
sed -i 's/updates.jenkins-ci.org/download/mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json sed -i 's/www.google.com/www.baidu.com/g' default.json

​
3、通过Web界面安装插件
  • 安装最新版本:在Jenkins首页左侧选择“Manage Jenkins”->“Manage Plugins”->“Available”,通过右上角的Filter过滤相关插件后选择进行安装。

  • 安装指定版本:如果需要安装特定版本的插件,可以访问插件的wiki页面或Jenkins官方插件库,下载所需的插件版本,并通过“Manage Plugins”->“Advanced”->“Upload Plugin”进行上传安装。

4、手动安装插件

将下载好的.hpi.jpi插件文件保存到Jenkins插件目录(如/var/lib/jenkins/plugins),然后重启Jenkins服务。这种方法通常用于解决插件无法通过Web界面安装或更新的问题。

3.4 jenkins配置

由于Jenkins需要从Git拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。

3.4.1 Agent节点配置(如果是小型项目,建议用Publish over SSH 方式)

jenkins的代理端主要用于运行Jenkins服务端所调度的流水线作业。它的部署方式与服务端一样是跨平台的。

1 配置节点

配置节点单击左侧“系统管理”进入“管理Jenkins”页面,在页面中可以看到“节点管理”选项

进入节点管理页面,可以看到已经在线的服务端master节点。单击左侧菜单中的“新建节点“

进入新建节点页面后,填写要创建的节点名称和Type(节点类型)。

单击Create按钮创建节点并进入节点的详细配置页

各个配置项的说明如下。

  • 名字:填写节点的名称。

  • 描述:填写节点的描述信息。

  • Number of executors:执行器的数量,默认每一个Jenkins作业会分配一个执行器。

  • 远程工作目录:Agent节点的工作目录。

  • 标签:可以对节点进行分组,便于流水线调度。

  • 用法:哪些作业可以使用这些节点,选择“只允许运行绑定到这台机器的Job”或者“经常使用该节点”即可运行任意作业。

在Jenkins的生产环境中,常用的启动方式为SSH和JNLP。JNLP对应中文为“通过Java Web启动代理”。

提示:如果遇到“Either WebSocket mode is selected, or the TCP port for inbound agents must be enabled”错误提示,是因为在Jenkins新版本中,默认禁用了TCP端口。我们需要导航到“系统管理>管理Jenkins >安全>全局安全”配置开启TCP端口。

此端口作为后续Agent节点启动时与Server节点通信使用。

2 从节点上启动代理

以“Java Web”方式设置的代理节点,需要下载启动程序。参考下图单击节点进入节点信息页面,获取agent.jar的下载链接。启动节点的步骤如下。

# 创建工作目录(与页面新建节点时填写的一致)
mkdir -p /data/jenkins-agent
cd /data/jenkins-agent/
# 下载 openjdk-11 并解压,解压后的目录名为 jdk-11
wget https://d6.injdk.cn/openjdk/openjdk/11/openjdk-11+28_linux-x64_bin.tar.gz
tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
rm -rf openjdk-11+28_linux-x64_bin.tar.gz
# 通过 Jenkins 页面提供的命令下载 agent.jar
curl -sO http://192.168.1.125:8080/jnlpJars/agent.jar
# 启动 Java Web 代理
# 注意:jdk11没有配置环境变量,所以写全路径
/data/jenkins-agent/jdk-11/bin/java -jar agent.jar -jnlpUrl http://192.168.1.125:8080/manage/computer/worker2/jenkins-agent.jnlp -secret 2007cfd52553e6927c4a41966bd85ecf3acda559beda2a3d5e4ffd106fe01db1 -workDir "/data/jenkins-agent/"

注意:curl -sO http://192.168.1.125:8080/jnlpJars/agent.jar出现问题的概率很高。大部分情况都是网络问题导致的,例如检查Agent节点与Jenkins Server节点的50000端口和8080端口的连通性是否正常。当出现“Connected”关键字时查看节点管理页面,可以看到该Agent已经连接成功。刷新节点页面,如图所示。

3 将 Java Web 代理安装为系统服务

上一步中,我们通过 java -jar的方式成功启动了agent.jar,但是这种方式在SSH连接断开后,应用也会停止,所以我们还需要将java -jar agent.jar ……安装为系统服务。

一键安装脚本install-jenkins-agent.sh,只需要修改CMD=''Jenkins页面给出的启动命令后上传到服务器并执行即可

#!/bin/bash
CMD='将启动命令写到这里'
JNLPURL=$(echo $CMD | sed 's/.*jnlpUrl \(.*\)/\1/'|  cut -d ' ' -f1 )
WORKDIR=$(echo $CMD | sed 's/.*workDir \(.*\)/\1/'|  cut -d ' ' -f1 |  sed 's/"//g')
if [[ "$CMD" =~ java &&  "$CMD" =~ jnlpUrl &&  "$CMD" =~ secret && "$CMD" =~ workDir ]];then
    echo "开始配置jenkins-agent服务"
else
    echo "ERROR:请将节点连接jenkins的java启动命令填入脚本CMD=''的引号中"
    exit 1
fi
mkdir -p $WORKDIR
wget ${JNLPURL%%manage*}jnlpJars/agent.jar -P ${WORKDIR}
chmod 755 ${WORKDIR}/agent.jar

cat>/usr/lib/systemd/system/jenkins-agent.service<<EOF
[Unit]
Description=The Jenkins Agent Server

[Service]
User=root
ExecStart=/usr/local/bin/jenkins-agent start
ExecReload=/usr/local/bin/jenkins-agent restart
ExecStop=/usr/local/bin/jenkins-agent stop
Restart=always

[Install]
WantedBy=multi-user.target

EOF

cat>/usr/local/bin/jenkins-agent<<EOF
#!/bin/bash

start()
{
    ${CMD/agent.jar/$WORKDIR/agent.jar}
}

case "\$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    stop
    start
    ;;
*)
    echo "usage: \$0 start|stop|restart"
    exit 0;
esac
exit
EOF

chmod 755 /usr/local/bin/jenkins-agent
systemctl daemon-reload
systemctl start jenkins-agent
systemctl enable jenkins-agent
result=$(systemctl is-active jenkins-agent)
if [[ $result == 'active' ]];then
        echo "success"
else
        nohup ${CMD/agent.jar/$WORKDIR/agent.jar} > /dev/null 2>&1 &
fi

查看jenkins-agent系统服务状态并查看日志

# 查看服务状态 systemctl status jenkins-agent # 查看服务日志 journalctl -u jenkins-agent -f
3.4.2 从GitLab拉取、编译并通过SSH推送代码
1 构建任务

准备好GitLab仓库中的项目,并且通过Jenkins配置项目的实现当前项目的DevOps基本流程。

  • 构建Maven工程发布到GitLab(Gitee、Github均可)

  • Jenkins点击左侧导航新建任务

  • 选择自由风格构建任务

2 配置源码拉取地址

Jenkins需要将Git上存放的源码存储到Jenkins服务所在磁盘的本地

  • 配置任务源码拉取的地址

  • Jenkins立即构建

3 配置Maven构建代码

代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和Maven,并且配置到Jenkins服务。

  • 准备JDK、Maven压缩包通过数据卷映射到Jenkins容器内部

  • 解压压缩包,并配置Maven的settings.xml

<!-- 阿里云镜像地址 -->
<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>
<!-- JDK11编译插件 -->
<profile>
    <id>jdk-11</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>11</jdk>
    </activation>
    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
    </properties>        
</profile>
  • Jenkins配置JDK&Maven并保存

  • 配置Jenkins任务构建代码

  • 立即构建测试,查看target下的jar包

4 配置Publish发布&远程操作

jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH。

  • 配置Publish Over SSH连接测试、生产环境

  • 配置任务的构建后操作,发布jar包到目标服务

  • 立即构建任务,并去目标服务查看

5 基于Docker服务运行

为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。

  • 添加Dockerfile文件

  • 添加docker-compose.yml文件

  • 追加Jenkins构建后操作脚本命令

6 选取指定的发行版本
  • 下载Git Parameter插件

  • 设置项目参数化构建

  • 任务构建时,采用Shell方式构建,拉取指定tag版本代码

  • 基于Parameter构建任务,任务发布到目标服务器

四、 jenkins系统设置

4.1用户管理

Jenkins提供了多种用户管理方式,以适应不同规模和复杂度的企业团队需求。在小规模团队中,使用Jenkins本地用户管理是一个简单直接的选择。然而,当团队规模扩大时,本地用户管理可能会带来诸多不便,如维护成本增加、账号密码跨平台同步困难等。因此,对于大规模用户场景,推荐使用LDAP(轻量级目录访问协议)进行用户认证。

4.1.1 Jenkins本地用户管理

  • 在Jenkins初始化时,会创建第一个管理员用户。

  • 导航至全局安全配置,默认使用“Jenkins专有用户数据库”管理用户。

  • 在管理用户页面,可新建用户,需填写用户名、密码、全名等信息。

4.1.2 LDAP认证集成

对于拥有大量用户的企业团队,LDAP认证集成是一个更加高效和安全的解决方案。以下是配置LDAP认证的步骤:

  1. 获取LDAP组织信息

  • 与您的LDAP管理员或IT部门联系,获取LDAP集成所需的参数信息。

  • 这些参数通常包括LDAP服务器的地址、用户组织信息(如域名、组织单元等)以及一个具有查询权限的用户账号。

  1. 插件配置

  • 安装LDAP插件

  • 启用LDAP认证

在“全局安全配置”页面中,将“Security Realm”设置为“LDAP”。然后,根据之前获取的LDAP参数信息,填写相关的配置字段,如LDAP服务器地址、用户搜索基础DN(Distinguished Name)、用户搜索过滤器等。

  • 配置用户组

如果希望根据LDAP用户组来分配Jenkins角色,还需要配置LDAP用户组映射。这通常涉及到在Jenkins中定义一个或多个角色,并将这些角色与LDAP用户组相关联。

4.2权限管理

Jenkins的权限管理是一项至关重要的安全实践,旨在精确控制平台上不同租户对Jenkins项目的访问范围。当企业中有多个项目组共享同一个Jenkins实例进行CI/CD流程时,为每个项目组配置独立的权限显得尤为重要,以减少误操作和风险。

4.2.1安装Role-based插件

安装Role-based Authorization Strategy插件,并重启Jenkins。

4.2.2全局安全配置

在全局安全配置中,启用Role-based策略

4.2.3 创建角色

  1. 在“Manage Jenkins”页面中点击“Manage Roles”(管理角色)链接。

  2. 将看到三种角色类型:Global roles(全局角色)、Item roles(项目角色)和Node roles(节点角色)。

  • 创建Global roles:

    • 点击“Global roles”下的“Add role”(添加角色)按钮。

    • 输入角色名,如“devopsdev”。

    • 在“Permissions”部分选择开发人员常用的权限,如“Build”(构建)、“Configure”(配置)等。

    • 保存角色。

  • 创建Item roles:

    • 点击“Item roles”下的“Add role”(添加角色)按钮。

    • 输入角色名,如“devops”。

    • 在“Pattern”字段中使用正则表达式设置权限作用范围,如^devops-.*以匹配所有以“devops-”开头的项目。

    • 在“Permissions”部分选择所需的权限,如“Build”、“Cancel”、“Configure”、“Read”等。

    • 保存角色。

4.2.4授权角色

完成角色创建后,需要将角色分配给相应的用户或用户组。

  1. 在“Manage Jenkins”页面中点击“Assign Roles”(分配角色)链接。

  2. 根据需要选择“Grant roles to users”(将角色授予用户)或“Grant roles to groups”(将角色授予用户组)。

  3. 在“Roles to assign”(要分配的角色)部分选择之前创建的角色。

  4. 在“Users/groups”(用户/用户组)部分选择要将角色分配给的用户或用户组。

  5. 保存分配。

4.2.5测试权限

最后,通过测试账号登录Jenkins来验证权限配置是否成功。

  1. 使用测试账号(已分配特定角色的用户)登录Jenkins。

  2. 检查该用户只能看到与其角色相关的项目。

  3. 尝试进行构建、配置等操作,确保权限正确分配且有效。

4.3凭据管理

在实施DevOps流程中,Jenkins作为核心自动化引擎,经常需要与其他系统(如代码仓库、构建工具、部署环境等)进行集成和交互。这些交互通常要求Jenkins提供目标系统的认证信息,例如用户名和密码、API密钥等。为了确保这些敏感信息的安全存储和便捷使用,Jenkins提供了凭据管理功能。

4.3.1安装凭据插件

4.3.2创建凭据

  • 在凭据存储中,点击“添加凭据”。

  • 选择凭据类型(如用户名和密码)。

  • 填写凭据信息(如GitLab仓库的用户名和密码),并添加描述。

  • 创建后,将生成凭据ID,供Pipeline引用。

五、Jenkins Pipeline实战

Jenkins Pipeline使用Groovy脚本语言来定义流水线,这些脚本可以访问Jenkins管理员配置的插件,并与外部系统(如版本控制系统、云平台等工具系统)集成。通过Jenkins Pipeline,用户可以在Jenkins环境中实现CI/CD工作流,并可以通过定义多个阶段和任务来实现自动化流程。具体可以参考https://jenkins.xfoss.com/pipeline.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道&#xff0c;电子商务巨头亚马逊&#xff08;AMZN&#xff09;已开发出一种新的生成式人工智能&#xff08;AI&#xff09;&#xff0c;不仅能处理文本&#xff0c;还能处理图片和视频&#xff0c;从而减少对人工智能初创公司Anthropic的依赖…

mac下安装Ollama + Open WebUI + Llama3.1

本文介绍mac下安装Ollama Open WebUI Llama3.1 8b具体步骤。 目录 推荐配置Ollama Open WebUI Llama3.1简介安装Ollama安装Open WebUI 推荐配置 m1以上芯片&#xff0c;16g内存&#xff0c;20g以上硬盘空间 Ollama Open WebUI Llama3.1简介 Ollama: 下载&#xff0c;管理…

Swift实现高效链表排序:一步步解读

文章目录 前言摘要问题描述题解解题思路Swift 实现代码代码分析示例测试与结果 时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 148. 排序链表 不积跬步&#xff0c;无以至千里&#xff1b;不积小流…

小程序-基于java+SpringBoot+Vue的校园快递平台系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

网页开发的http基础知识

请求方式-GET&#xff1a;请求参数在请求行中&#xff0c;没有请求体&#xff0c;如&#xff1a;/brand/findAll?nameoPPo&status1。GET请求大小在浏览器中是有限制的请求方式-POST&#xff1a;请求参数在请求体中&#xff0c;POST请求大小是没有限制的 HTTP请求&#xf…

Qt自定义 Qt Designer 插件

创建 Qt Designer 插件项目 Qt 提供两种设计插件的 API&#xff0c;可以用于扩展 Qt 的功能。高级 API 用于设计插件以扩展 Qt 的功能&#xff0c;例如定制数据库驱动、图像格式、文本编码、定制样式等。Qt Designer 里大量采用了插件&#xff0c;点击 Qt Creator 的“Help”-…

周鸿祎再次“创业”,盯上百度

周鸿祎特地拍了部短剧来推广的新产品&#xff0c;终于上线了。 11月27日晚间&#xff0c;360正式发布多模态内容创作引擎“纳米搜索”。 作为当前AI应用最红的赛道之一&#xff0c;AI搜索已经有腾讯、秘塔、商汤、抖音等公司入局。传统搜索老大百度也在发力。竞争不妨碍有搜索…

003 MATLAB基础计算

01 方程组的求解 多项式及其运算 多项式在MATLAB中以向量形式存储。 即n次多项式用一个长度为n1的系数向量来表示&#xff0c;且按降幂&#xff0c;缺少的幂次对应的向量元素为0。 多项式的运算主要包括多项式的四则运算、求导、求值和求根运算 多项式的四则运算&#xff1a…

金蝶云苍穹:个人上传授权文件

金蝶云苍穹开发者门户--下载文件地址。

解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题

本文已首发于&#xff1a;秋码记录 若你也想搭建一个个人博客&#xff0c;可参考&#xff1a;国内 gitee.com Pages 下线了&#xff0c;致使众多站长纷纷改用 github、gitlab Pages 托管平台 在日新月异的信息化下&#xff0c;软件也在跟随着互联网的脚步&#xff0c;逐步推进…

数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)

数据库管理267期 2024-11-286 数据库管理-第267期 23ai&#xff1a;Oracle Data Redaction演示&#xff08;20241128&#xff09;1 示例表及数据2 创建编校策略2.1 名字全编校2.2 电话部分编校 3 DML演示3.1 场景13.2 场景2 总结 数据库管理-第267期 23ai&#xff1a;Oracle Da…

根据电池容量及功耗估算充电及放电时间

根据电池容量和功耗估算充电和放电时间的方法可以通过以下简单的公式进行&#xff1a; 1. 估算放电时间 放电时间是指电池在一定功耗下&#xff0c;能够持续供应电力的时间。可以使用以下公式&#xff1a; 解释&#xff1a; 电池容量&#xff1a;电池的容量一般以毫安时&…

【Maven】继承和聚合

5. Maven的继承和聚合 5.1 什么是继承 Maven 的依赖传递机制可以一定程度上简化 POM 的配置&#xff0c;但这仅限于存在依赖关系的项目或模块中。当一个项目的多个模块都依赖于相同 jar 包的相同版本&#xff0c;且这些模块之间不存在依赖关系&#xff0c;这就导致同一个依赖…

对抗攻击算法:FGSM和PGD

FGSM 传送门 FGSM 利用了梯度上升的思想&#xff0c;通过损失函数相对于输入图像的梯度来找到 最容易 迷惑网络的方向&#xff0c;并沿着这个方向对图像进行微小的扰动。 FGSM 的基本想法是&#xff0c;沿着这个梯度的符号方向对图像进行微调&#xff0c;以最大化损失函数。具…

Matlab mex- setup报错—错误使用 mex,未检测到支持的编译器...

错误日志&#xff1a; 在使用mex编译时报错提示&#xff1a;错误使用 mex&#xff0c;未检测到支持的编译器。您可以安装免费提供的 MinGW-w64 C/C 编译器&#xff1b;请参阅安装 MinGW-w64 编译器。有关更多选项&#xff0c;请访问https://www.mathworks.com/support/compile…

内网穿透步骤

步骤 第一次需要验证token window和linux的方法不同。 然后 启动 cpolar 服务&#xff1a; 在命令窗口中输入 cpolar.exe htttp 8080&#xff0c;启动内网穿透服务。确保命令窗口保持开启状态&#xff0c;以维持穿透效果。 cpolar.exe hhttp 8080 成功后 注意事项 命令窗口…

系统架构:MVVM

引言 MVVM 全称 Model-View-ViewModel&#xff0c;是在 MVP&#xff08;Model-View-Presenter&#xff09;架构模式基础上的进一步演进与优化。MVVM 与 MVP 的基本架构相似&#xff0c;但 MVVM 独特地引入了数据双向绑定机制。这一创新机制有效解决了 MVP 模式中 Model 与 Vie…

网络协议(TCP/IP模型)

目录 网络初识 网络协议 协议分层 协议拆分 分层 协议分层的优势 1.封装效果 2.解耦合 TCP/IP五层模型 协议之间配合工作&#xff08;详解&#xff09; 网络初识 网络核心概念&#xff1a; 局域网&#xff1a;若干电脑连接在一起&#xff0c;通过路由器进行组网。 …

网络安全之IP伪造

眼下非常多站点的涉及存在一些安全漏洞&#xff0c;黑客easy使用ip伪造、session劫持、xss攻击、session注入等手段危害站点安全。在纪录片《互联网之子》&#xff08;建议搞IT的都要看下&#xff09;中。亚伦斯沃茨&#xff08;真实人物&#xff0c;神一般的存在&#xff09;涉…

软件工程之静态建模

静态模型&#xff1a;有助于设计包、类名、属性和方法特征标记&#xff08;但不是方法体&#xff09;的定义&#xff0c;例如UML类图。 用例的关系&#xff1a; 扩展关系&#xff1a; 扩展关系允许一个用例&#xff08;可选&#xff09;扩展另一个用例&#xff08;基用例&…