Jenkins--从入门到入土

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 blueoceandocker 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: alwaysimage: redis:6.2command:- --loglevel warningvolumes:- redis-data:/data:Zpostgresql:restart: alwaysimage: sameersbn/postgresql:14-20230628volumes:- postgresql-data:/var/lib/postgresql:Zenvironment:- DB_USER=gitlab- DB_PASS=password- DB_NAME=gitlabhq_production- DB_EXTENSION=pg_trgm,btree_gistgitlab:restart: alwaysimage: sameersbn/gitlab:17.0.0depends_on:- redis- postgresqlports:- "10080:80"- "10022:22"volumes:- gitlab-data:/home/git/data:Zhealthcheck:test: ["CMD", "/usr/local/sbin/healthcheck"]interval: 5mtimeout: 10sretries: 3start_period: 5menvironment:- 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.mzph.cn/bicheng/16258.shtml

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

相关文章

iOS 开发系列:基于VNRecognizeTextRequest识别图片文字

1.添加Vision Kit依赖 在项目设置中点击"General"选项卡,然后在"Frameworks, Libraries, and Embedded Content"(框架、库和嵌入内容)部分,点击""按钮。搜索并选择"Vision.framework"。…

[AIGC] flink sql 消费kafka消息,然后写到mysql中的demo

这是一个使用 Flink SQL 从 Kafka 中消费数据并写入 MySQL 的示例。在这个示例中,我们将假设有一个 Kafka 主题 “input_topic”,它产生格式为 (user_id: int, item_id: int, behavior: string, timestamp: long) 的数据,我们需要把这些数据写…

world machine学习笔记(4)

选择设备: select acpect: heading:太阳的方向 elevation:太阳的高度 select colour:选择颜色 select convexity:选择突起(曲率) select height:选择高度 falloff&a…

用常识滚雪球:拼多多的内生价值,九年的变与不变

2024年5月22日,拼多多公布了今年一季度财报,该季度拼多多集团营收868.1亿元,同比增长131%,利润306.0亿,同比增长了202%,数据亮眼。 市场对拼多多经历了“看不见”、“看不懂”、“跟不上”三个阶段。拼多多…

Vue.js条件渲染与列表渲染指南

title: Vue.js条件渲染与列表渲染指南 date: 2024/5/26 20:11:49 updated: 2024/5/26 20:11:49 categories: 前端开发 tags: VueJS前端开发数据绑定列表渲染状态管理路由配置性能优化 第1章:Vue.js基础与环境设置 1.1 Vue.js简介 Vue.js (读音:/vju…

SwiftUI中的Slider的基本使用

在SwiftUI中,可以使用Slider视图创建一个滑动条,允许用户从范围中选择一个值。通过系统提供的Slider,用起来也很方便。 Slider 先看一个最简单的初始化方法: State private var sliderValue: Float 100var body: some View {V…

[AIGC] mac os 中 .DS_Store 是什么

.DS_Store 是在 MacOS 系统中由 Finder 应用程序创建和维护的一种隐藏文件,用于保存有关其所在目录的自定义属性,例如图标位置或背景颜色。 “.DS_Store” 是 “Desktop Services Store” 的缩写。 .DS_Store 的作用 .DS_Store 文件在每个 Mac OS X 文…

ollama 使用,以及指定模型下载地址

ollama windows 使用 官网: https://ollama.com/ windows 指定 models 下载地址 默认会下载在C盘 ,占用空间 在Windows系统中,可以通过设置环境变量OLLAMA_MODELS来指定模型文件的下载和存储路径。具体操作步骤如下: 1.打开系统…

【python006】miniconda3环境搭建(非root目录,最近更新中)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 文章目录 1.背景介绍2. 1.背景介绍 环境移植,可能影响部署本机环境信息,探索、总结移植有效…

轻量化微调相关学习

轻量化微调(Lightweight Fine-Tuning)是指在大型预训练模型基础上,通过修改或添加少量参数来进行模型适应性调整的一种方法,旨在减少计算资源消耗和避免过拟合问题,同时保持模型的性能。这种方法特别适用于资源有限或需…

一个程序员的牢狱生涯(36)夹带

星期一 夹 带 郑所和小X州在小院子里说着话,尽管我竖起耳朵想要听到他们的说话内容。但因为他们的说话声音很低,我努力半天后,什么都听不清。只能看到小X州恭恭敬敬的站在郑所面前,不时地点头答应着的样子。 没过多长时间,小X州从院子里返回了号子。我注意到他的脸上带着一…

15、设计模式之责任链模式

责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通…

搜索引擎--ES基础概念

ES是一款开源的搜索引擎&#xff0c;相比于mysql&#xff0c;它提供了非常强大的搜索功能 下面我们需要简单的了解一下ES相比于mysql中的一些基本概念的区别&#xff1a; 首先我们要知道es在存储数据的时候都是以json格式来存储的 mysql <------> ES&#xff1a; table…

【九十四】【算法分析与设计】练习四蛮力法练习,排列问题和组合问题,求解最大连续子序列和问题,求解幂集问题,求解0/1背包问题,求解任务分配问题

求解最大连续子序列和问题 给定一个有n&#xff08;n≥1&#xff09;个整数的序列&#xff0c;要求求出其中最大连续子序列的和。 例如&#xff1a; 序列&#xff08;-2&#xff0c;11&#xff0c;-4&#xff0c;13&#xff0c;-5&#xff0c;-2&#xff09;的最大子序列和为20…

pymysql.err.OperationalError: (1030, ‘Got error 168 from storage engine‘)

错误 pymysql.err.OperationalError: (1030, Got error 168 from storage engine) 通常与MySQL的InnoDB存储引擎相关&#xff0c;它指示你试图进行的操作超出了存储引擎的能力或资源限制。具体来说&#xff0c;MySQL错误代码168&#xff08;或“ER_TABLE_NEEDS_UPGRADE”&#…

[处理器芯片]-6 超标量CPU实现之浮点运算

1 浮点运算单元FPU 超标量CPU中的浮点运算单元是专门处理浮点数运算的关键组件。浮点运算单元的设计涉及多个复杂的子模块和技术&#xff0c;以保证高效、准确地执行浮点数的加减法、乘法、除法、平方根等操作。 1&#xff09;浮点数术语 浮点数通常采用IEEE 754标准表示&…

显示IPS技术

显示器的IPS&#xff08;In-Plane Switching&#xff0c;平面转换&#xff09;技术是一种先进的液晶面板技术&#xff0c;由日立公司在2001年推出。该技术优化了液晶分子的排列方式&#xff0c;采取水平排列&#xff0c;使得分子结构在遇到外界压力时仍能保持稳定&#xff0c;不…

第 33 次CCF认证

1. 词频统计 题目描述 样例输入 代码 #include <bits/stdc.h>using namespace std;int main() {int n,m;cin>>n>>m;vector<int> ans1(m,0),ans2(m,0);while (n --) {int t;cin>>t;vector<int> vis(m1,0);for (int i 1;i < t;i ) {i…

python去除html中<div>等

用beautifulsoup并不能将全部的去除得到剩余的txt&#xff0c;特别在兴趣段找关键字的时候。 使用re模块可以实现这个功能。 for a in a_d:em_name str(a.find(em))pattern re.compile(r<[^>]>, re.S)result pattern.sub(, em_name)result result.strip(\n)name_…

Spring Boot 中的HTTP请求方式详解:优缺点与代码示例

在Spring Boot中&#xff0c;有多种方式可以发起HTTP请求。主要的工具包括RestTemplate、WebClient和增强的AsyncRestTemplate。本文将详细介绍每种请求方式及其优缺点&#xff0c;并给出代码示例。 1. RestTemplate RestTemplate 是 Spring 提供的一个用于同步 HTTP 请求的客…