Jenkins--从入门到入土

news2024/11/19 13:15:56

Jenkins–从入门到入土

文章目录

  • Jenkins--从入门到入土
    • 〇、概念提要--什么是CI/DI?
      • 1、CI(Continuous Integration,持续集成)
      • 2、DI(DevOps Integration,DevOps 集成)
      • 3、解决的问题
    • 一、Jenkins安装部署
      • 1、什么是Jenkins?
      • 2、Jenkins在开发过程中所属位置
      • 3、安装硬件环境和知识储备
      • 4、安装
        • 4.1、下载war启动
        • 4.2、Docker启动
        • 4.3、windows使用驱动安装
      • 5、使用插件自定义 Jenkins
      • 6、创建第一个管理员用户
    • 二、Jenkins配置
      • 1、环境配置
        • 1.1、更换站点镜像
        • 1.2、全局工具的配置
      • 2、用户权限配置
      • 3、插件介绍
    • 三、配置自动化任务--自由风格
      • 1、两种执行方法
      • 2、安装插件
      • 3、搭建GitLab
        • 3.1、从docker compose快速搭建GitLab
        • 3.2、上传到服务器
      • 4、github整合Jenkins
        • 4.1、关联github
        • 4.2、Jenkins中的github的配置
        • 4.3、新建任务
        • 4.4、立即构建
        • 4.5、Github代码更新之后触发构建
    • 四、配置自动化任务--Pipeline
      • 1、安装Blue Ocean插件
      • 2、新建Github测试项目
      • 3、编写Jenkinsfile文件
      • 4、推送到github项目中
      • 5、操作流水线Blue Ocean
      • 6、选择仓库创建流水线

温馨提示:由于本文档写的比较杂,基本讲了很多东西,所以自己根据目录筛选自己需要的部分。

〇、概念提要–什么是CI/DI?

1、CI(Continuous Integration,持续集成)

  • 定义:持续集成是一种软件开发实践,开发人员频繁地将代码更改集成到共享代码库中。每次集成都触发自动构建和测试,以尽早发现错误并提高软件质量。
  • 关键特点
    • 频繁集成:开发人员每天多次将代码提交到版本控制系统。
    • 自动化构建和测试:每次提交代码后,系统会自动构建项目并运行自动化测试。
    • 快速反馈:开发人员可以迅速知道他们的代码是否引入了错误。
    • 集成工具:常用工具包括Jenkins、Travis CI、CircleCI等。

2、DI(DevOps Integration,DevOps 集成)

  • 定义:DevOps集成是一种将开发和运维团队的工作流程、工具和文化相结合的实践,旨在提高软件开发和交付的速度和质量。
  • 关键特点
    • 自动化:通过自动化的构建、测试、部署和监控,减少手动干预,降低错误率。
    • 持续交付(CD):实现代码从开发到生产环境的自动化部署。
    • 协作:开发和运维团队紧密合作,共享责任,共同优化流程。
    • 常用工具:包括Docker、Kubernetes、Ansible、Puppet、Chef等。

3、解决的问题

CI和DI在计算机领域分别强调持续集成和DevOps实践中的集成部分,通过自动化和协作提高软件开发和交付的效率和质量。

持续的集成部署解决了很多问题,使得工作变成一种流程的形式,我们就负责编码(code)的内容,其他环节都是自动化的部署完成。

image-20240524153806030

“You build it , you run it !”

一、Jenkins安装部署

1、什么是Jenkins?

image-20240521144411533

Build great things at any scale,The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.

Jenkins官方 ,Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

Jenkins文档下载

2、Jenkins在开发过程中所属位置

主流软件开发流程:

Jenkins在Kubernetes中持续部署

3、安装硬件环境和知识储备

机器要求:

  • 256 MB 内存,建议大于 512 MB

  • 10 GB 的硬盘空间(用于 Jenkins 和 Docker 镜像)

环境要求:

  • Java8(由于Jenkins是由Java语言编写,所以需要 JRE 或者 JDK环境)
  • Docker (导航到网站顶部的Get Docker链接以访问适合您平台的Docker下载

4、安装

4.1、下载war启动
  1. 下载War包:http://mirrors.jenkins.io/war-stable/latest/jenkins.war

    mkdir -p /opt/jenkins
    wget -O /opt/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war
    
  2. 打开终端进入到下载目录.

     cd /opt/jenkins
    
  3. 运行命令 java -jar jenkins.war --httpPort=8080.

    java -jar jenkins.war --httpPort=8080
    
  4. 打开浏览器进入链接 http://localhost:8080.

    image-20240524105733698

  5. 按照说明完成安装.

参考链接https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

4.2、Docker启动

docker安装文档:在CentOS中安装Docker

  1. 搜索Docker镜像:

    版本选择:

    Jenkins: https://hub.docker.com/r/jenkins/jenkins/

    Jenkins with Blue Ocean: https://hub.docker.com/r/jenkinsci/blueocean

    image-20240522180452702

    使用命令:

    docker pull jenkins/jenkins
    
    #24版本的docker镜像,因为我发现存在问题,当安装依赖的时候,换个版本可以。
    docker pull  jenkins/jenkins:2.459-jdk17
    
  2. 在Docker中设置桥接网络

    docker network create jenkins
    
  3. 启动(三组命令,自行甄别)

    # 官方给出的命令
    docker run \
      --name jenkins-docker \
      --rm \
      --detach \
      --privileged \
      --network jenkins \
      --network-alias docker \
      --env DOCKER_TLS_CERTDIR=/certs \
      --volume jenkins-docker-certs:/certs/client \
      --volume jenkins-data:/var/jenkins_home \
      --publish 2376:2376 \
      docker:dind \
      --storage-driver overlay2
    
      
    # Jenkins
    docker run \
      -itd \
      -u root \
      -p 8080:8080 \
      -v jenkins-data:/var/jenkins_home \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v /usr/bin/docker:/usr/bin/docker \
      --name jenkins-master \
      jenkins/jenkins
      
      
    #Jenkins blueocean
     docker run  \
     -itd  \
     -u root   \
     -p 8080:8079   \
     -v jenkins-data:/var/jenkins_home \
     -v /var/run/docker.sock:/var/run/docker.sock  \
     -v /usr/bin/docker:/usr/bin/docker \
     --name jenkins-master \
     jenkinsci/blueocean
     
     # Jenkins 2.459 版本
      docker run  \
     -itd  \
     -u root   \
     -p 8080:8080   \
     -v jenkins-data:/var/jenkins_home \
     -v /var/run/docker.sock:/var/run/docker.sock  \
     -v /usr/bin/docker:/usr/bin/docker \
     --name jenkins-master \
     jenkins/jenkins:2.459-jdk17
    
    
  4. 查看启动状态:

    docker ps
    

    image-20240524162358779

  5. 查看日志

    docker logs jenkins-master  
    

    后面的参数是容器的参数,重点看下面这个:

    image-20240524162519031

  6. 访问:http://192.168.200.128:2376/

参考文档:https://www.jenkins.io/doc/book/installing/docker/

4.3、windows使用驱动安装
  1. 首先下载镜像:官网

    image-20240522185553500

  2. 确保安装了Java环境,并且安装环境变量,我这里使用JDK 21演示

    image-20240522185714105

  3. Jenkins启动

    image-20240522185926936

    image-20240522190957509

    image-20240522191052458

    image-20240522191140747

    image-20240522191216798

    image-20240522191230811

    image-20240522191245707

    image-20240522191257725

    安装完成!

  4. 打开安装目录,我的在E:\Software\Jenkins,安装中有涉及,请留意。

    image-20240522191642821

  5. 打开jenkins.xml配置文件,设置Jenkins环境变量和Java环境变量

    image-20240522192012862

    换成:

    image-20240522192342863

    但是我发现配置不修改应该也是可以运行的,只是官方这样操作的,我只换了JAVA_HOME

  6. 搜索service,打开Jenkins服务。

    image-20240522193156980

    在这里插入图片描述

  7. 浏览器访问预先设置好的端口http://localhost:8079/:

    image-20240522193448151

  8. 查看管理员密码image-20240522193720322

    image-20240522193800820

5、使用插件自定义 Jenkins

解锁 Jenkins后,会出现**“自定义 Jenkins”**页面。在这里,您可以安装任意数量的有用插件作为初始设置的一部分。

单击显示的两个选项之一:

  • 安装建议的插件- 安装推荐的插件集,这些插件基于最常见的用例。
  • 选择要安装的插件- 选择最初安装的插件集。当您第一次访问插件选择页面时,默认选择建议的插件。

设置向导显示 Jenkins 的配置进度以及您选择的 Jenkins 插件安装集。此过程可能需要几分钟。

如果不确定需要什么插件,请选择安装建议的插件。您可以稍后通过 Jenkins 中的管理 Jenkins > 插件页面安装(或删除)其他 Jenkins 插件。

6、创建第一个管理员用户

最后,在使用插件自定义 Jenkins后,Jenkins 会要求您创建第一个管理员用户。

  1. 当**“创建第一个管理员用户”**页面出现时,在相应字段中指定管理员用户的详细信息,然后单击“保存并完成”
  2. Jenkins 就绪页面出现时,单击Start using Jenkins
  3. 如果需要,请使用您刚刚创建的用户凭据登录 Jenkins,然后就可以开始使用 Jenkins 了!

二、Jenkins配置

1、环境配置

1.1、更换站点镜像

具体流程:

image-20240524170556997

将升级站点的URL更换成清华镜像:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json

这样插件下载就会从镜像进行下载,相对来说下载更快。

1.2、全局工具的配置

image-20240524180523227

  • JDK:

    image-20240524180548087

  • Git:

    image-20240524180612658

还有其他环境中的工具配置。

2、用户权限配置

  • 矩阵权限的配置

  • 添加管理员用户所有的权限

  • 添加Authorize Project | Jenkins plugin)插件,并且在系统管理中进行配置。配置逻辑,就给用户当前项目的矩阵权限!

    示例:

    image-20240524180316934

3、插件介绍

  • Publish over SSH

    这个是一个远程Shell工具,可以远程去执行一些shell命令

  • HTTP Request Plugin

    跨平台调用,在构建前后可以通过该插件以http形式调用各种api接口实现和内部系统的联动

  • Publish Over FTP

    用于远程使用FTP发布,比较合适于静态资源的发布。

  • Performance Plugin

​ 该插件可以读取和解析测试框架输出的报告,并且在 Jenkins 上绘制性能和稳定性相关的图表。Performance Plugin 支持的测试框架有 JUnit、JMeter, Twitter 的 Lago 和 Taurus。

​ https://plugins.jenkins.io/performance

  • Gitlab Merge Request Builder Plugin

​ Gitlab Merge Request Builder Plugin 可以方便的自动发起代码审查,它在创建 pull request 的时候,会自动带上关联任务的运行结果,以方便代码审查着确认改动的正确性。

​ 同时,这款插件还支持自动合并,既在代码审查通过后自动合并该 pull request 内容。

​ https://github.com/timols/jenkins-gitlab-merge-request-builder-plugin

  • JIRA Plugin

​ JIRA Plugin 可以让 Jenkins 任务和 JIRA 集成起来,这样项目管理者可以通过 JIRA 了解项目进度,开发者也可以通过该插件直接更改 JIRA 上的 issue 状态。

​ https://plugins.jenkins.io/jira

  • Kubernetes Plugin

​ 和最近大热的容器编排框架 Kubernetes 集成当然不能落下了。另外,Jenkins 对执行机的管理一直比较弱,无法做到快速的扩容和缩容。Kubernetes Plugin 通过引入 Kubernetes 的容器编排能力,让 Jenkins 执行机运行在 Kubernetes 环境中。

​ https://github.com/jenkinsci/kubernetes-plugin

  • Build Pipeline plugin

    https://github.com/jenkinsci/build-pipeline-plugin

​ 对一个系统的持续集成会包含很多个方面,如果将它们都杂糅在一个 Jenkins 任务中,会提高排查成本,也不利于整个持续集成的运作。Build Pipeline plugin 可以让项目管理员针对系统持续集成步骤设置一系列关联的任务,任务之间可以设置不同的触发条件,以确认何时需要人工介入。该插件可以让整个持续集成流程变得非常直观:

image-20240524181357541

上述内容部分参考于链接:https://www.jianshu.com/p/6bcb2853fae2

三、配置自动化任务–自由风格

1、两种执行方法

  • 配置自由风格的项目
  • 配置Pipeline使用Jenkinsfile

2、安装插件

  • 版本控制

    • github
    • gitlab

    image-20240524182419991

  • SSH

    • SSH
    • Publish Over SSH
    • SSH Agent
    • SSH Pipeline Steps

    image-20240524182126772

3、搭建GitLab

3.1、从docker compose快速搭建GitLab

这里我们使用GitLab来测试。

使用docker compose在docker环境下快速部署:

搭建docker compose环境参考文章:docker compose快速安装

学习docker compose参考文章(本篇博客不需要,只是推荐学习)DockerCompose(初识、安装、部署) Docker Compose 命令说明文档

docker-compose.yaml文件链接:https://github.com/sameersbn/docker-gitlab/blob/master/docker-compose.yml

image-20240524183353761

可以点击下载,也可以新建docker-compose.yaml文件,将内容复制粘贴。

也可以直接复制(但是建议从官网下载,可能版本会更新之类的):

version: '2.3'

services:
  redis:
    restart: always
    image: redis:6.2
    command:
    - --loglevel warning
    volumes:
    - redis-data:/data:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:14-20230628
    volumes:
    - postgresql-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm,btree_gist

  gitlab:
    restart: always
    image: sameersbn/gitlab:17.0.0
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=notifications@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=
    - OAUTH_BITBUCKET_URL=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

volumes:
  redis-data:
  postgresql-data:
  gitlab-data:

打开编辑文件内容:

image-20240524184143182

3.2、上传到服务器
  1. 新建文件夹:

    mkdir /home/gitlab
    
  2. 上传文件docker-compose.yaml,也可以新建文件,将内容粘贴过去。

    image-20240524184829197

  3. 启动docker compose

    docker-compose up -d
    
    • -d参数:后台启动。
  4. 使用docker ps命令可以看见新增的三个docker容器:

    image-20240524190730297

  5. 浏览器访问:192.168.200.128:80即可进入GitLab的页面。

    本来我想用GitLab来整合Jenkins,但是服务器资源受限,没有配置成功,我换成了github来演示。

4、github整合Jenkins

4.1、关联github
  1. 打开github,找到Settings,找到Developer Settings,打开Psonal access tokens中的Tokens (classic),点击Generate a personal access token生成新的token。

    image-20240526132053005

  2. 填写Note,勾选下面的两个选项。

    image-20240526132356069

  3. 点击生成

    image-20240526132451337

  4. 确保复制你的token,请确保立即复制您的个人访问令牌。你再也看不到了!

    image-20240526132524834

  5. 选择你的项目,创建webhook

    image-20240526143036767

4.2、Jenkins中的github的配置

打开设置:

image-20240526153927365

在设置中找到github的选项(往下划),按照如下操作,添加Github服务器:

image-20240526153403520

上述第4步添加凭据,注意:必须是具有操作权限的github的账户!!

image-20240526153618578

添加并保存退出即可!

4.3、新建任务
  1. 新建Item

    image-20240526154453857

  2. General

  • 添加描述:

image-20240526154548087

  • 添加Github项目地址:

image-20240526154812220

  1. 源码管理:

    • image-20240526155132270

    • 添加Credentials:本篇博客的4.2中的第四步讲到,操作相同,不再赘述。

    • 设置分支

      image-20240526155347509

  2. 构建触发器:

    image-20240526170308832

  3. 构建环境

    image-20240526155751453

    凭据没有的话直接添加就行:

    image-20240526160018806

  4. Build Steps:构建步骤:

    • Set build status to “pending” on GitHub commit

      image-20240526160247886

    • 执行 shell

      image-20240526160401586

  5. 构建后操作

    image-20240526160506678

  6. 最后设置完毕保存即可。

来自曼诺尔雷迪亚兹的提示:上述的配置项只是为了了解并熟悉Jenkins,并且进行快速入门,具体的配置详情可以根据业务需求和个人喜好来具体设置不同的参数。

4.4、立即构建

image-20240526162042927

image-20240526162214977

image-20240526162240293

查看控制台输出:

image-20240526162259337

image-20240526162415535

4.5、Github代码更新之后触发构建
  1. 对代码进行更新并推送

    image-20240526162935826

    Github代码:

    image-20240526163014754

  2. 自动构建:

    image-20240526170200399

  3. 构建成功

    image-20240526170342899

四、配置自动化任务–Pipeline

1、安装Blue Ocean插件

image-20240526172129605

image-20240526172511622

image-20240526172607753

返回控制台就可以看见:

image-20240526172621220

2、新建Github测试项目

image-20240526172747746

我克隆在本地了,因为我要添加一个文件,也可以在Github中添加文件:

本地:

image-20240526172911488

github:

image-20240526172932672

3、编写Jenkinsfile文件

Jenkins流水线官方中文文档 学习Jenkins流水线。

在项目中新建文件Jenkinsfile,文件内容如下:

pipeline {
    agent {
        docker{
            images 'node:10'
            args '-p 20000:8080'
        }
    } 
    stages {
        stage('Build') { 
            steps {
                sh 'node -v'
                sh 'echo "hello world !!"'
            }
        }
        // stage('Test') { 
        //     steps {
        //         // 
        //     }
        // }
        // stage('Deploy') { 
        //     steps {
        //         // 
        //     }
        // }
    }
}

这个 Jenkins Pipeline 使用 Docker 作为代理,在一个包含 Node.js 的 Docker 容器中执行构建步骤。

4、推送到github项目中

image-20240526174313173

5、操作流水线Blue Ocean

  1. 打开Blue Ocean

    image-20240526174406531

  2. 创建流水线

    image-20240526174901301

    需要注意的是,这里的token权限必须要有repo和user:emil才可以,没有的话重新创建token,参照本博客4.1.

    image-20240526174756762

6、选择仓库创建流水线

image-20240526175156571

创建中:

image-20240526175242020

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

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

相关文章

【深度学习】1.手动LogisticRegression模型的训练和预测

通过这个示例,可以了解逻辑回归模型的基本原理和训练过程,同时可以通过修改和优化代码来进一步探索机器学习模型的训练和调优方法。 步骤: 生成了一个模拟的二分类数据集:通过随机生成包含两个特征的数据data_x,并基于…

Android Compose 九:interactionSource 的使用

先上官方文档 InteractionSource InteractionSource represents a stream of Interactions corresponding to events emitted by a component. These Interactions can be used to change how components appear in different states, such as when a component is pressed or…

WordPress安装memcached提升网站速度

本教程使用环境为宝塔 第一步、服务器端安装memcached扩展 在网站使用的php上安装memcached扩展 第二步:在 WordPress 网站后台中,安装插件「Memcached Is Your Friend」 安装完成后启用该插件,在左侧工具-中点击Memcached 查看是否提示“U…

《拯救大学生课设不挂科第四期之蓝桥杯是什么?我是否要参加蓝桥杯?选择何种语言?如何科学备赛?方法思维教程》【官方笔记】

背景: 有些同学在大一或者大二可能会被老师建议参加蓝桥杯,本视频和文章主要是以一个过来人的身份来给与大家一些思路。 比如蓝桥杯是什么?我是否要参加蓝桥杯?参加蓝桥杯该选择何种语言?如何科学备赛?等…

webpack5生产模式

生产模式 生产模式准备 开发模式和生产模式有不同的 配置文件 2修改webpack.prod.js文件修改webpack.dev.js文件 修改webpack.dev.js文件 1》修改输出路径为undefined 2》将绝对路径进行修改,进行回退 此时文件的执行命令为 修改webpack.prod.js文件 1》修改绝…

跨平台之用VisualStudio开发APK嵌入OpenCV(三)

本篇将包含以下内容: 1.使用 Visual Studio 2019 开发一个 Android 的 App 2.导入前篇 C 编译好的 so 动态库 3.一些入门必须的其它设置 作为入门,我们直接使用真机进行调试,一方面运行速度远高于模拟器,另一方面模拟器使用的…

2024年【危险化学品经营单位安全管理人员】考试及危险化学品经营单位安全管理人员考试资料

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员考试资料题目及答案!多做几遍,其实通过危险化学品经营单位安全管理…

Zoho Campaigns邮件营销怎么发邮件?

Zoho Campaigns,作为业界领先的邮件营销平台,以其强大的功能、用户友好的界面以及深度的分析能力,为企业提供了一站式的邮件营销解决方案,助力企业高效地触达目标受众,构建并巩固庞大的客户基础。云衔科技为企业提供Zo…

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载

电量计量芯片HLW8110的前端电路设计与误差分析校正.pdf 下载地址: 链接:https://pan.baidu.com/s/1vlCtC3LGFMzYpSUUDY-tEg 提取码:8110

用Prometheus全面监控MySQL服务:一篇文章搞定

简介 在现代应用中,MySQL数据库的性能和稳定性对业务至关重要。有效的监控可以帮助预防问题并优化性能。Prometheus作为一款强大的开源监控系统,结合Grafana的可视化能力,可以提供全面的MySQL监控方案。 设置Prometheus 安装Prometheus 使…

深度学习面试问题总结(21)| 模型优化

本文给大家带来的百面算法工程师是深度学习模型优化面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习面试问题,并提供参考的回答及其理论基础&a…

ic基础|时钟篇05:芯片中buffer到底是干嘛的?一文带你了解buffer的作用

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是…

leecode 637 二叉树的层平均值

leetcode 二叉树相关-层序遍历专题 二叉树的层序遍历一般来说,我们是利用队列来实现的,先把根节点入队,然后在出队后将其对应的子节点入队,然后往复此种操作。相比于二叉树的遍历递归,层序遍历比较简单,有…

2024年5月26日 (周日) 叶子游戏新闻

资深开发者:3A游戏当前处于一种尴尬的中间地带游戏行业整体,尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出,广受好评,但居高不下的游戏开发成本(传闻《漫威蜘蛛侠2》的制作成本高达3亿美元)正严重…

WEB攻防【1】——ASP应用/HTTP.SYS/短文件/文件解析/Access注入/数据库泄漏

ASP:常见漏洞:本文所写这些 ASPX:未授权访问、报错爆路径、反编译 PHP:弱类型对比、mdb绕过、正则绕过(CTF考得多) JAVA:反序列化漏洞 Python:SSTI、字符串、序列化 Javascript&…

微服务下认证授权框架的探讨

前言 市面上关于认证授权的框架已经比较丰富了,大都是关于单体应用的认证授权,在分布式架构下,使用比较多的方案是--<应用网关>,网关里集中认证,将认证通过的请求再转发给代理的服务,这种中心化的方式并不适用于微服务,这里讨论另一种方案--<认证中心>,利用jwt去中…

elementui中 表格使用树形数据且固定一列时展开子集移入时背景色不全问题(父级和子级所展示的字段是不一样的时候)

原来的效果 修改后实现效果 解决- 需要修改elementui的依赖包中lib/element-ui.common.js中的源码 将js中此处代码改完下面的代码 watch: {// dont trigger getter of currentRow in getCellClass. see https://jsfiddle.net/oe2b4hqt/// update DOM manually. see https:/…

【单片机】STM32F070F6P6 开发指南(一)STM32建立HAL工程

文章目录 一、基础入门二、工程初步建立三、HSE 和 LSE 时钟源设置四、时钟系统&#xff08;时钟树&#xff09;配置五、GPIO 功能引脚配置六、配置 Debug 选项七、生成工程源码八、生成工程源码九、用户程序下载 一、基础入门 f0 pack下载&#xff1a; https://www.keil.arm…

关于XtremIO 全闪存储维护的一些坑(建议)

XtremIO 是EMC过去主推的一款全闪存储系统&#xff0c;号称性能小怪兽&#xff0c;对付那些对于性能要求极高的业务场景是比较合适的&#xff0c;先后推出了1代和2代产品&#xff0c;目前这个产品好像未来的演进到了PowerStor或者PowerMax全闪&#xff0c;应该不独立发展这个产…