【DevOps】Jenkins部署
Jenkins部署
文章目录
- Jenkins部署
- 资源列表
- 基础环境
- 一、部署Gilab
- 1.1、安装Gitlab
- 1.2、修改配置文件
- 1.3、加载配置文件
- 1.4、访问Gitlab
- 1.5、修改root登录密码
- 1.6、创建demo测试项目
- 1.7、上传代码
- 1.8、验证上传的代码
- 二、部署Jenkins所需软件
- 2.1、部署JDK
- 2.2、部署Tomcat
- 2.3、部署Jenkins
- 2.4、设置Jenkins插件更新源
- 三、Jenkins初始化
- 3.1、登录Jenkins页面
- 3.2、选择插件安装方式
- 3.3、创建管理员用户
- 3.4、Jsenkins插件管理
- 3.5、安装插件
- 3.6、软件包安装插件
- 四、Jenkins角色与权限管理
- 4.1、全局安全配置
- 4.2、角色
- 4.2.1、角色种类
- 4.2.2、设置角色
- 4.2.3、添加角色
- 4.2.4、创建用户
- 4.2.4.1、添加用户
- 4.2.4.2、绑定角色
- 4.2.5、创建项目测试权限
- 4.2.5.1、创建项目
- 4.2.5.2、测试权限
- 五、凭证管理
- 5.1、凭据的种类
- 5.2、添加用户密码类型的凭据
- 5.2.1、添加凭据
- 5.2.2、添加凭据参数
- 5.2.3、使用凭据
- 5.2.3.1、创建test01项目
- 5.2.3.2、配置源码管理
- 5.2.3.3、发布项目
- 5.3、添加SSH类型的凭据
- 5.3.1、Jenkins主机生成密钥对
- 5.3.2、将公钥存放到gitlab
- 5.3.3、Jenkins添加SSH凭据
- 5.3.4、添加凭据参数
- 5.3.5、测试凭据
- 5.3.5.1、创建test02项目
- 5.3.5.2、配置源码管理
- 5.3.5.3、发布项目
资源列表
操作系统 | 主机名 | 配置 | IP |
---|---|---|---|
CentOS 7.9 | jenkins | 2C4G | 192.168.93.101 |
CentOS 7.9 | gitlab | 2C4G | 192.168.93.102 |
基础环境
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭内核安全机制
setenforce 0
sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
- 修改主机名
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
一、部署Gilab
1.1、安装Gitlab
- 注意:
- 本案例没有修改端口,直接使用了80端口,注意不要有冲突。
- 如果不修改,在克隆项目的时候,给出的仓库链接使用的是gitlab.example.com,在局域网中使用起来不方便,还要修改成gitlab的ip地址。修改后就直接是gitlab的ip地址了。
[root@gitlab ~]# yum -y install policycoreutils-python
[root@gitlab ~]# rpm -ivh gitlab-ce-15.5.1-ce.0.el7.x86_64.rpm
1.2、修改配置文件
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.93.102'
1.3、加载配置文件
- 前提是80端口没有被占用
- 备注:
- 重启:gitlab-ctl restart
- 关闭:gitlab-ctl stop
- 启动:gitlab-ctl start
- 状态:gitlab-ctl status
- 帮助:gitlab-ctl --help
# 加载配置文件时间会有点小漫长,请耐心等待
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# netstat -anpt | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9536/nginx: master
# 查看状态
[root@gitlab ~]# gitlab-ctl status
run: alertmanager: (pid 9869) 80s; run: log: (pid 9755) 102s
run: gitaly: (pid 9858) 81s; run: log: (pid 9121) 194s
run: gitlab-exporter: (pid 9835) 82s; run: log: (pid 9695) 120s
run: gitlab-kas: (pid 9811) 84s; run: log: (pid 9383) 180s
run: gitlab-workhorse: (pid 9820) 84s; run: log: (pid 9518) 137s
run: logrotate: (pid 9055) 207s; run: log: (pid 9063) 206s
run: nginx: (pid 9536) 134s; run: log: (pid 9549) 131s
run: node-exporter: (pid 9830) 83s; run: log: (pid 9619) 125s
run: postgres-exporter: (pid 9953) 79s; run: log: (pid 9775) 96s
run: postgresql: (pid 9240) 189s; run: log: (pid 9335) 186s
run: prometheus: (pid 9843) 81s; run: log: (pid 9731) 108s
run: puma: (pid 9443) 152s; run: log: (pid 9452) 148s
run: redis: (pid 9085) 201s; run: log: (pid 9093) 200s
run: redis-exporter: (pid 9837) 82s; run: log: (pid 9713) 114s
run: sidekiq: (pid 9462) 146s; run: log: (pid 9488) 143s
1.4、访问Gitlab
- 访问地址:
- http://192.168.93.102
- 默认账号:
root
- 默认密码:
cat /etc/gitlab/initial_root_password | grep Password:
- 默认账号:
1.5、修改root登录密码
- 点击右上角用户头像,在下拉菜单中点
Preferences
,在左侧列表中开打password
。本案例中使用的root密码为pwd12345,注意密码长度至少8位。
1.6、创建demo测试项目
- 创建一个项目名称叫
demo
1.7、上传代码
[root@jenkins ~]# yum -y install git
[root@jenkins ~]# tar -zxvf BlueLight.git.tar.gz
[root@jenkins ~]# git clone http://192.168.93.102/root/demo.git
[root@jenkins ~]# mv -f BlueLight/* demo/
[root@jenkins ~]# cd demo/
[root@jenkins demo]# git config --global user.email "wzh@admin.com"
[root@jenkins demo]# git config --global user.name "wzh@wzh.com"
[root@jenkins demo]# git add .
[root@jenkins demo]# git commit -m "web"
[root@jenkins demo]# git push -uf origin main
1.8、验证上传的代码
二、部署Jenkins所需软件
- Jenkins节点操作
2.1、部署JDK
[root@jenkins ~]# tar -zxvf jdk-11.0.16.1_linux-x64_bin.tar.gz
[root@jenkins ~]# mv jdk-11.0.16.1 /usr/local/java11[root@jenkins ~]# cat >> /etc/profile << 'EOF'
export JAVA_HOME=/usr/local/java11/
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
EOF[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "11.0.16.1" 2022-08-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16.1+1-LTS-1)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16.1+1-LTS-1, mixed mode)
2.2、部署Tomcat
[root@jenkins ~]# tar -zxvf apache-tomcat-8.5.56.tar.gz
[root@jenkins ~]# mv apache-tomcat-8.5.56 /usr/local/tomcat
2.3、部署Jenkins
[root@jenkins ~]# yum -y install fontconfig
[root@jenkins ~]# mv jenkins2.401.1.war jenkins.war# 不需要手动解包,把war包移动到tomcat的项目目录中webapps中开启tomcat将会自动解压
[root@jenkins ~]# mv jenkins.war /usr/local/tomcat/webapps/
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
2.4、设置Jenkins插件更新源
- 注意:default.json文件或updates目录需要jenkins初始化结束才能出来。此处需要稍等片刻。
[root@jenkins ~]# cd /root/.jenkins/updates/
[root@jenkins updates]# sed -i 's/https:\/\/www.jenkins.io/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
[root@jenkins updates]# sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
三、Jenkins初始化
- 访问地址:http://192.168.93.101:8080/jenkins
3.1、登录Jenkins页面
- 根据页面提示,复制Jenkins安装后初始的密钥
[root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
72a19165668b4b1daec409d9edce6c4e
3.2、选择插件安装方式
- 注意:如果有插件安装失败也没关系,因为安装插件需要网络,结束后可以点击重试。
3.3、创建管理员用户
- 本案例将初始的管理员账号和密码都设置为admin
3.4、Jsenkins插件管理
-
在安装Jenkins时,选择默认安装插件会很慢,甚至会失败,因此我们可以配置插件源为国内的地址。
-
进入Manage Jenkins——>Plugins——>Advancedsettings最下面有Update Site(升级站点),设置为如下链接,并点“提交”按钮
-
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
-
然后重启Jenkins
# 关闭
[root@jenkins ~]# /usr/local/tomcat/bin/shutdown.sh# 开启
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
3.5、安装插件
- 点击“Manage jenkins”——>“Plugins”——>“Avalableplugins”,输入要安装的插件,并勾选列出来的插件,然后点击安装。
- 可以都去搜索一下防止插件没有安装
# 本课程内,可能会用的插件如下所示
Git Parameter
Git Pipeline for Blue Ocean GitLab
Blue Ocean
Blue Ocean Pipeline Editor Blue OceanCore JS
Pipeline SCM API for Blue Ocean Dashboardfor Blue Ocean
Build With Parameters extended Choice ParameterKubernetes
Kubernetes CLI Kubernetes CredentialsImage Tag Parameter Active Choices
SSH
ansible
Maven Integration Publish Over SSH
Role-based Authorization Strategy NodeJS
############################################################
Git Credentials
Credentials Binding
Dynamic Extended ChoiceParameter Plug-In Dynamic Parameter Plug-In
Pipeline
Pipeline: DeclarativeLocalization: Chinese (Simplified)
############################################################# 注意:在初始化如果没有安装好,此处可以进行手动安装,为其他项目的实施提供功能
3.6、软件包安装插件
- 将本课程提供的软件包上传至jenkins服务器
# 第一个mv是备份的意思
[root@jenkins ~]# mv /root/.jenkins/plugins /root/.jenkins/plugins.old
[root@jenkins ~]# tar zxf jenkins-plugins.tar.gz
[root@jenkins ~]# mv plugins/ /root/.jenkins# 重启Tomcat
[root@jenkins ~]# /usr/local/tomcat/bin/shutdown.sh
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
四、Jenkins角色与权限管理
- 我们可以利用”Role-basedAuthorization Strategy“插件来管理Jenkins用户权限,在前面的插件安装中已经安装过次插件。
4.1、全局安全配置
- “Dashboard”——>“ManageJenkins”——>“Security”——>“Authentication”
- 将授权策略修改为“Role-Based Strategy”,并保存设置。
4.2、角色
- 为了更方便的为用户授权,jenkins中使用角色作为一类权限的容器。角色是一组相关权限的集合。可以为用户指定角色,而不是直接指定权限。
4.2.1、角色种类
- Global roles:Global roles(全局角色)管理员等高级用户可以创建基于全局的角色
- Item roles:针对某个或者某些项目的角色
- Agent roles:节点相关的权限
4.2.2、设置角色
-
”Dashboard“——>”Manage Jenkins“——>”Manage and AssingRoles“。点击”Manage Roles“
-
本案例中我们添加三个角色:
- baseRole:该角色为全局角色,这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错:用户名ismissing the Overall/Read permission
- role1:该角色为项目角色。使用正则表达式绑定”my-itme01.*“,意思是只能操作名称为”my-item01‘开头的项目。
- role2:该角色也为项目角色。绑定”my-item02“,意思是只能操作”my-item02“开头的项目。
- baseRole:该角色为全局角色,这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错:用户名ismissing the Overall/Read permission
4.2.3、添加角色
-
添加Global roles
-
添加item roles
4.2.4、创建用户
4.2.4.1、添加用户
- ”Dashboard“——>”Manage Jenkins“——>”Users“,在右上角点击”CreateUser“,创建用户。
- 添加两个用户
zhangsan
,lisi
4.2.4.2、绑定角色
- ”Dashboard“——“Manage Jenkins”——>”Manage and Assign Roles“,然后点击”Assign Roles“
- 为zhangsan用户绑定baseRole和role1角色
- 为lisi用户绑定baseRole和role2角色
4.2.5、创建项目测试权限
4.2.5.1、创建项目
-
用管理员的权限创建两个项目,名字分别是
my-item01-zhangsan
,my-item02-lisi
、 -
创建
zhangsan
项目 -
”Dashboard“——>”新建Item“——>”确定“按钮
-
创建
lisi
项目 -
”Dashboard“——>”新建Item“——>”确定“按钮
4.2.5.2、测试权限
- 分别用
zhangsan
和lisi
的身份登录到系统 - 可以发现,每个用户只能管理属于自己的角色范围内的项目
五、凭证管理
- 在许多第三方网站和应用程序可以与Jenkins进行交互,例如程序代码仓库,云存储系统和服务等。此类应用程序的系统管理员可以在应用程序中配置凭据以专供Jenkins使用。通常通过将访问控制应用于这些凭据来完成这项工作,以”锁定“Jenkins可用的应用程序功能区域。一旦Jenkins管理员(即管理Jenkins站点的Jenkins用户)在Jenkins中添加/配置这些凭据,Pipeline项目可以使用凭据与这些第三方应用程序进行交互。
- 用管理员身份登录到Jenkins。要在Jenkins使用凭据管理功能,需要安装”CreadentialsBinding“插件,前面已经安装过此插件,这里不再安装
- 凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。
5.1、凭据的种类
-
Jinkins提供了多种类型的凭据,使用与不同的业务需求,具体类型如下:
- Username with password:用户名和密码
- GitHub App:GitHub应用进行身份验证
- GitLab API token:存储GitLab的用户给API token
- OpenShift Username and password:存储OpenShift的用户名和密码
- SSH Username with private key:使用SSH用户和密钥
- Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
- Secret text:需要保存的一个加密的文本串,如顶顶机器人或GitHun的api token
- Certificate:通过上传证书文件的方式
-
其中,常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)。接下来以使用Git工具到GitLab拉取项目源代码为例,演示Jenkins的如果管理GitLab的凭证。
-
注意:为了让Jenkins支持从GitLab拉取源码,需要安装Git插件以及在CentOS 7系统上安装Git工具
-
凭据的作用范围
- 凭据具有与它们相关联的范围。这是一种表示它们如何才能被暴露的方式,Jenkins使用的主要范围有如下2种。
-
System(系统)
- 顾名思义,这个范围与跟上下文,也就是Jenkins系统相关联。此范围中的凭据只被暴露给系统和后台任务,并且一般被用于连接到构建节点或代理节点等。
-
全局
- 全局范围是默认选项,通过用来确保Jenkins中的任务可以使用凭证
5.2、添加用户密码类型的凭据
5.2.1、添加凭据
-
”Manage jenkins“——>”Credentials“,打开如下页面,并点击”全局“,进入全局凭据管理界面,如下图所示
-
在如下界面中,点击右上角的”Add Credentials“按钮,添加凭据
5.2.2、添加凭据参数
-
这里主要的内容有:
- 凭据类型:Username with password
- 范围:Global
- 用户名:root(该账号是gitlab中添加的账号)
- 密码:gitlab中为root用户设置的密码(本案例此处为wzh.2005,注意不是系统的root密码)
- ID:选填(设置平局的唯一标识,不设置会自动分配一个唯一标识)
- 描述:选填(凭据名称,此处最好添加一下,使用凭据的时候便于识别,不设置就是用用户名)
-
点击”Create“创建此凭据,添加结果如下:
5.2.3、使用凭据
5.2.3.1、创建test01项目
[root@jenkins ~]# yum -y install git
5.2.3.2、配置源码管理
5.2.3.3、发布项目
- 运行成功之后,如果没有报错,可以刷新页面,就可以看到绿色的标识了
5.3、添加SSH类型的凭据
- SSH类型的凭据可以使Jenkins在拉去gitlab中的代码时使用密钥对的方式,不仅实现了免密连接,同时也会对数据进行加密,是一种安全可靠的凭据方式。
5.3.1、Jenkins主机生成密钥对
- 在Jenkins主机上以root身份生成密钥对
# 一路回车即可
[root@jenkins ~]# ssh-keygen
5.3.2、将公钥存放到gitlab
# 查看公钥文件内容
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClBYGM15IosBfenQszhhjbet06ww1YeapOb0lv7M+o9npYYW5nZ9aKHNzYsHIydkJ/ihO+ohJJe+/3ZYHKHSfd2kyOGC2/wWn/lBvbZTinA0UlDZayM/41gEU0vlv2evlM4h3B1SKbWHTM6C/XjwUhBtyaa1rRaSiaCTUjPfKtZu9mviNMn8mxGPgeyjTghqE/CrM8iGGuFkYsowI2Z+bhai8mIKGri3eIGQvuLYgO5X7s9W/g94wJAgapf+8rNrOeU8r9Vl92O3rGO+0ry9eNg8fbY8zuzPN6qWe3GnNT9cHN8qmHBqb4mHDzTsCMDgfTss+8CzxEAxF7VOYpRb/t root@jenkins
- 用root用户登录gitlab,点击右上角的头像,在下拉菜单中点”perferneces“,然后在左侧点击”SSH Keys“
5.3.3、Jenkins添加SSH凭据
- ”Manage jenkins“——>”Credentials“,打开如下页面,并点击”全局”,进入全局凭据界面
5.3.4、添加凭据参数
- 这里主要的参数有:
- 类型:SSH
- 范围:Global
- ID:可选
- 描述:可选
- Username:root(这个密钥对是用root的身份生成的)
- Private Key:添加root生成的私钥
# 查看私钥文件内容
[root@jenkins ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEApQWBjNeSKLAX3p0LM4YY23rdOsMNWHmqTm9Jb+zPqPZ6WGFu
Z2fWihzc2LByMnZCf4oTvqISSXvv92WByh0n3dpMjhgtv8Fp/5Qb22U4pwNFJQ2W
sjP+NYBFNL5b9nr5TOIdwdUim1h0zOgv148FIQbcmmta0Wkomgk1Iz3yrWbvZr4j
TJ/JsRj4Hso04IahPwqzPIhhrhZGLKMCNmfm4WovJiChq4t3iBkL7i2IDuV+7PVv
4PeMCQIGqX/vKzaznlPK/VZfdjt6xjvtK8vXjYPH22PM7szzeqlntxpzU/XBzfKp
hwam+Jhw807AjA4H07LPvAs8RAMRe1TmKUW/7QIDAQABAoIBAFvqCDGBdLhS9Mia
oj2NiFTfR0/OiqVoBtLvK3E67qNGvfhyNENGU/nTf7L1/HVc50cQilTZAuSJMqyS
jkscGDN6vr86emje+wJO5YE7DOYBbUbpHbGeQg5cpq9tA93yut725uoqo77w8wWa
oeMnlwzBPKiJ+SjAsMuzKzS48W1hDgr+CfTxjCY0/1RdazuGn5J2Fx841ZJ/JFgK
MtkVIpzd8f4pHdWIaPfLpCE2595tbQcJsu6ZDbUzHS0MBG3RUrMLqghriYHJkZmi
6YW2Fc7LOW/brw293IdM43myQUEmao8Wl/MWF19BB4En/p2dpGZnTcFTxAdv+q4z
Ow3KYCECgYEA1FjgQw0A1wm3SNVQbX1c/jGZrRily9AcMkFC8EGYQCYhxs0vyOyz
/vGtXivEu5eyyBGy2rSklFSJL/GjG87wUmd4MEAGSO1OYregnY1AtyyeuUpLrGL1
YqA/2E7lSH2ZBewNlbRpg6cetYV7wbpKjcCbxrp+N9+shDc4mqBzHnUCgYEAxvIJ
vk/oqYI5m6QGHT/Yd2Nh9nTmp4t7x5SQI4zc3bxIJGAg5MLr7ov+rmtusGr1SHzb
vhQfNWeWooaCiQzxuIEId4MSZq+BOrxKQl39jIdY9EKNroRU43BF2At9NNs0H3qu
gETUSTNi648Kt1vAgNBZIft85DipChIAnMuc3JkCgYAjqfWobUOp2iDlY6ZJbVez
/aKg1tXpwD8sFZfngCzRAVaE7CtNZKvqcq66dUFqfFTzkz1lzBckLnqICd5qKjxk
qqod+HLVxr12iP6512J6IU1bM2Y4QrqR4PY4HzAVF7seqoGxlgZurR/UPuIFLIOf
AS1omCPgwHlaD2g7WB1djQKBgQC9Wx6e/5vpy0Nduq7/JAe7CuLxG692hTKZcfQH
gkmu20inJr/oPQcnFCSiiyrdy9AO4JiewLQ7to8Pvot8Os/P1zDh3+WhyyZra1Aa
/y8XlLO8OaR1GQtbNz+jNLxFlOZ1l+WDvP95dOmQX6PJhhEiCizsRVxINQ3fwebH
Vp3E8QKBgHx/PQAlldjgPrUFs6xq0A6OCLtn6PWASBoFjh3SV4jXKUlY60Wg45H8
x60Kr44dAgvONbVFlyaUCl7nY78GeeMlCx7NtHktmyQDC5AL+3g2Dmfzfq7Klcc7
cKm534YYtALBTEVXsDalL9SP5JRnBqKPPzF7Wu88d/rEL7r1UaQ2
-----END RSA PRIVATE KEY-----
5.3.5、测试凭据
5.3.5.1、创建test02项目
5.3.5.2、配置源码管理
- 如果报错以下错误可以使用Jenkins节点手动使用ssh登录一下
- 在使用密钥对时,要提前在jenkins主机上生成gitlab主机的fingerprint,否则,此处会提示报错。错误信息如下:
- 第一次连接的话可以看到提示:”Are yousure you want to continue connecting (yes/no)? yes“,输入yes并回车即可生成gitlab主机的fingerprint
[root@jenkins ~]# ssh root@192.168.93.102
The authenticity of host '192.168.93.102 (192.168.93.102)' can't be established.
ECDSA key fingerprint is SHA256:ulREvG0hrcgiCcK7+Tcbv+p0jxe7GDM8ZthK7bU3fMM.
ECDSA key fingerprint is MD5:4b:84:94:c0:62:22:76:ed:26:24:8e:46:c9:1e:03:85.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.93.102' (ECDSA) to the list of known hosts.
root@192.168.93.102's password:
5.3.5.3、发布项目
- 运行成功之后,如果没有报错,可以刷新页面,就可以看到绿色的标识了
相关文章:
【DevOps】Jenkins部署
Jenkins部署 文章目录 Jenkins部署资源列表基础环境一、部署Gilab1.1、安装Gitlab1.2、修改配置文件1.3、加载配置文件1.4、访问Gitlab1.5、修改root登录密码1.6、创建demo测试项目1.7、上传代码1.8、验证上传的代码 二、部署Jenkins所需软件2.1、部署JDK2.2、部署Tomcat2.3、部…...
HTML——38.Span标签和字符实体
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>span标签和字符实体</title><style type"text/css">h1{text-align: center;}p{text-indent: 2em;}span{color: red;}</style></head><…...
doris:基于 Arrow Flight SQL 的高速数据传输链路
Doris 基于 Arrow Flight SQL 协议实现了高速数据链路,支持多种语言使用 SQL 从 Doris 高速读取大批量数据。 用途 从 Doris 加载大批量数据到其他组件,如 Python/Java/Spark/Flink,可以使用基于 Arrow Flight SQL 的 ADBC/JDBC 替代过去…...
文献阅读 | B. S. Carmo 2010
目录 一、文献名称二、原文地址三、ABSTRACT主要发现详细观察分岔分析雷诺数依赖性比较见解意义结论 四、IINTRODUCTION历史研究回顾计算研究近期研究进展研究空白与目的论文结构 一、文献名称 二、原文地址 研究目的:研究串列排列双圆柱体周围流场中的次级不稳定性…...
GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)
前言 24年具身前沿模型大汇总 过去的这两年,工作之余,我狂写大模型与具身的文章,加之具身大火,每周都有各种朋友通过CSDN私我及我司「七月在线」寻求帮助/指导(当然,也欢迎各大开发团队与我司合作共同交付)…...
超越YOLO11!DEIM:先进的实时DETR目标检测
DEIM: DETR with Improved Matching for Fast Convergence arXiv: https://arxiv.org/abs/2412.04234 Project webpage:https://www.shihuahuang.cn/DEIM/ GitHub:https://github.com/ShihuaHuang95/DEIM 1 背景:DETR目标检测框架 目标检…...
django vue3实现大文件分段续传(断点续传)
前端环境准备及目录结构: npm create vue 并取名为big-file-upload-fontend 通过 npm i 安装以下内容"dependencies": {"axios": "^1.7.9","element-plus": "^2.9.1","js-sha256": "^0.11.0&quo…...
用户注册模块(芒果头条项目进度4)
1 创建⽤户模块⼦应⽤ 1.1 在项⽬包⽬录下 创建apps的python包。 1.2 在apps包下 创建应⽤userapp $ cd 项⽬包⽬录/apps $ python ../../manage.py startapp userapp 1.3 配置导包路径 默认情况下导包路径指向项⽬根⽬录 # 通过下⾯语句可以打印当前导包路径 print(sys.pa…...
Java Map集合、集合的嵌套
一. 概述 1. Map集合称为双列集合,格式:{key1value1, key2value2,.....},一次需要存一对数据作为一个元素。 2. Map集合的每个元素"keyvalue"称为一个键值对/键值对对象/一个Entry对象,Map集合也被称为"键值对集合"。 3.…...
C#中使用系统默认应用程序打开文件
有时您可能希望程序使用默认应用程序打开文件。 例如,您可能希望显示 PDF 文件、网页或互联网上的 URL。 System.Diagnostics.Process类的Start方法启动系统与文件关联的应用程序。 例如,如果文件扩展名为.txt,则系统会在 NotePad、WordPa…...
论文泛读《LPFHE: Low-Complexity Polynomial CNNs for Secure Inference over FHE》
文章目录 1、摘要2、介绍3、文章结构4、总结 1、摘要 Machine learning as a service (MLaaS) 在客户中越来越受欢迎。为了解决 MLaaS 中的隐私问题,引入了 FHE 来保护客户端的数据。 然而,FHE 不能直接评估 卷积神经网络 (CNNs) 中的非算数激活函数。…...
基于Spring Boot的IT技术交流和分享平台的设计与实现源码
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的IT技术交流和分享平台的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于S…...
力扣hot100——二分查找
35. 搜索插入位置 class Solution { public:int searchInsert(vector<int>& a, int x) {if (a[0] > x) return 0;int l 0, r a.size() - 1;while (l < r) {int mid (l r 1) / 2;if (a[mid] < x) l mid;else r mid - 1;}if (a[l] x) return l;else …...
1月第一讲:WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理
1、功能描述和界面 前端(wxPython GUI): 提供文件选择、显示文件列表的界面。支持上传、删除和下载附件。展示上传状态和附件信息(如文件名、大小、上传时间)。后端(REST API 服务):…...
uniapp:跳转第三方地图
1.跳转第三方高德地图 //跳转地图 toMap(item){uni.navigateTo({url: (window.location.href https://uri.amap.com/navigation?to${item.lng},${item.lat},${item.shopName}&modecar&policy1&srchttps://gawl.gazhcs.com/wap/index.html&callnative0)}) },…...
源码理解 UE4中的 FCookStatsManager::FAutoRegisterCallback RegisterCookStats
官方文档:https://dev.epicgames.com/documentation/zh-cn/unreal-engine/API/Runtime/Core/ProfilingDebugging/FCookStatsManager文档中的注释: When a cook a complete that is configured to use stats (ENABLE_COOK_STATS), it will broadcast this…...
QML Text详解
1. 概述 Text 是 QML 中用来显示文本的基本组件。它可以用于创建静态的标签、标题、说明文字等,支持多种文本格式、样式、颜色、对齐方式等配置。Text 组件也支持动态文本内容的显示,可以通过绑定数据源来实时更新文本内容。 Text 组件非常灵活&#x…...
详细讲一下Prettier对我们日常开发的作用,以及详细用法
1.什么是 Prettier? // Prettier 是代码格式化工具,它可以自动调整代码格式 // 比如把这样的代码: function foo ( a, b ){ return ab; }// 自动格式化成这样: function foo(a, b) {return a b; } 2.基础配置详解 {// 控制…...
多模态论文笔记——Coca
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型Coca,在DALLE 3中使用其作为captioner基准模型的原因和优势。 文章目录 ALBEF论文模型结构组成训练目标 CoCa论文模型结构CoCa…...
24年无人机行业资讯 | 12.23-12.29
24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司,助力低空经济规范发展2、商务部支持无人机民用国际贸易,强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…...
我们公司只有3个人,一个前端,一个后端
在当今这个数字化时代,各行各业都离不开互联网技术的支撑,而在这股技术浪潮中,小而美的创业公司如同雨后春笋般涌现,它们凭借着灵活高效、创新不断的特点,在市场中占有一席之地。 今天,就让我带你走进这样一…...
golang后台框架总结
gin [golang]gin框架接收websocket通信 - 花酒锄作田 - 博客园 golang Gin实现websocket_golang gin websocket-CSDN博客 ws测试: Websocket测试-Websocket在线测试-Websocket模拟请求工具 vmware下载: VMware16安装包详细安装教程_vmware16下载-CSDN博客...
Elasticsearch分片数量是什么意思?
Elasticsearch中的分片(Shard)数量是一个重要概念,以下为你详细介绍它的含义及相关要点: ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说,Elasticsearch会把一个索引的数据分割成多个较小的部分…...
BerOS 文件系统路径归一化问题及其 Python 实现
题目背景 本文将讨论一道与操作系统路径归一化有关的问题,该问题来自 BerOS 文件系统 的设计。BerOS 是一个新型操作系统,其文件路径系统允许路径中的分隔符 / 重复出现。例如,以下路径被视为等价的: /usr//local//nginx/sbin//…...
【微服务】1、引入;注册中心;OpenFeign
微服务技术学习引入 - 微服务自2016年起搜索指数持续增长,已成为企业开发大型项目的必备技术,中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念:微服务是一种软件架构风格,以专注于单一职责的多个响应项目为基…...
SQL Server 数据库 忘记密码
1、先用windows 身份验证 连接 2、安全性--登录名 3、设置 身份验证 4、重启电脑 5、登录 登陆成功!!! ------------------------------------------------------------------ --1、查询登录账号信息 ------------------------------------------------------------------ -- …...
Tableau数据可视化与仪表盘搭建-安装教程
下载 tableau.com/zh-cn/support/releases 滚动到最下方的下载 在下载的同时 我们点击登录,去注册一个tableau的账号 下面点击我们下载好的tableau安装程序 不要自定义安装,会有路径问题 点击试用14天 点击激活 激活学生 tableau.com/zh-cn/academic…...
UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
UGUI中相同材质相同Shader相同贴图的UI元素可以合并DrawCall。 1.使用图集 Unity性能优化---使用SpriteAtlas创建图集进行批次优化_unity2021.3.33 spriteatlas优化-CSDN博客 2.Canvas的子物体在场景树中的索引位置和不同图集不影响UI合批且UI网格没有重叠,如下图…...
DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
最近,DeepSeek v3(一个MoE模型,拥有671B参数,其中37B参数被激活)模型全球爆火。 作为一款能与Claude 3.5 Sonnet,GPT-4o等模型匹敌的开源模型DeepSeek v3不仅将其算法开源,还放出一份扎实的技术…...
网络编程原理:回显服务器与客户端通信交互功能
文章目录 路由器及网络概念网络通信基础TCP/IP 五层协议封装和分用封装分用 网络编程(网络协议)UDP类 API使用实现回显通信程序回显服务器(UDP代码)回显客户端(UDP代码) TCP API使用回显服务器(TCP代码)回显客户端(TCP代码) 路由器及网络概念 网络发展是…...
#渗透测试#漏洞挖掘#WAF分类及绕过思路
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
西安电子科技大学初/复试笔试、面试、机试成绩占比
西安电子科技大学初/复试笔试、面试、机试成绩占比 01通信工程学院 02电子工程学院 03计算机科学与技术学院 04机电工程学院 06经济与管理学院 07数学与统计学院 08人文学院 09外国语学院 12生命科学与技术学院 13空间科学与技术学院 14先进材料与纳米科技学院 15网络与信息安…...
【Python学习(六)——While、for、循环控制、指数爆炸】
Python学习(六)——While、for、循环控制、指数爆炸 本文介绍了While、for、循环控制、指数爆炸,仅作为本人学习时记录,感兴趣的初学者可以一起看看,欢迎评论区讨论,一起加油鸭~~~ 心中默念:Py…...
中间件自动化测试框架cmdlinker
背景 作为一个中间件的测试工程师,如何对于中间件提供的命令进行自动化的回归,这一直是一个难题,市面上好像缺乏了对于命令进行自动化回归的合理解决方案。 常见方式有下面两种: 直接写字符串的命令,然后使用各种编程…...
写一个类模板三个模板参数K,V,M,参数是函数(函数参数、lambda传参、函数指针)
cal是类的成员函数。cal的3个入参是func1(K),func2(K,V),func3(K,V,M),请写出cal,并在main函数中调用cal 在您给出的要求中,cal成员函数并不直接…...
STM32-笔记35-DMA(直接存储器访问)
一、什么叫DMA? DMA(Direct Memory Access,直接存储器访问)提供在外设与内存、存储器和存储器之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于…...
数势科技:解锁数据分析 Agent 的智能密码(14/30)
一、数势科技引领数据分析变革 在当今数字化浪潮中,数据已然成为企业的核心资产,而数据分析则是挖掘这一资产价值的关键钥匙。数势科技,作为数据智能领域的领军者,以其前沿的技术与创新的产品,为企业开启了高效数据分析…...
ES6中定义私有属性详解
在ES6中,定义私有属性的方式相对传统的JavaScript有所不同。ES6并没有提供直接的语法来定义私有属性,但可以通过几种方法间接实现私有属性。 1. 使用Symbol来模拟私有属性 Symbol是一种新的数据类型,可以作为对象的键,并且它的值…...
@Cacheable 注解爆红(不兼容的类型。实际为 java. lang. String‘,需要 ‘boolean‘)
文章目录 1、org.springframework.cache.annotation.Cacheable2、javax.persistence.Cacheable Cacheable(value "findPAUserById", key "#id")public Optional<PAUser> findById(Integer id) {return paUserRepository.findById(id);}我真的要笑死…...
离散数学 期末笔记
命题符号化 使用等值演算法证明 求公式范式 在自然推理体系中构造下列推理的证明 在一阶逻辑中将下列命题符号化 设A、B、C、D是 Z 的子集 证明下列集合恒等式 二元关系 性质 没有空的 没有漏的 没有重复 函数...
物联网控制期末复习
第3章 物联网控制系统的过程通道设计 3.1 模拟量输出通道 3.1.1单模拟量输出通道的构成 计算机控制系统的模拟量输出通道将计算机产生的数字控制信号转换为模拟信号(电压或电流)作用于执行机构,以实现对被控对象的控制。 多D/A结构&#…...
Hypium纯血鸿蒙系统 HarmonyOS NEXT自动化测试框架
1、什么是Hypium Hypium是华为官方为鸿蒙操作系统开发的一款以python为语言的自动化测试框架。 引用华为官网介绍如下: DevEco Testing Hypium(以下简称Hypium)是HarmonyOS平台的UI自动化测试框架,支持开发者使用python语言为应用编写UI自动化测试脚本…...
李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning
笔记是在语雀上面做的,粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型,可以将机器学习进行分类 regression 回归任务:函数输出时一个数值classification 分类任务:人类设定好选项…...
探索Docker Compose:轻松管理多容器应用
探索Docker Compose:轻松管理多容器应用 在现代软件开发中,容器化已经成为构建、部署和扩展应用的主流方式。而Docker Compose作为Docker生态系统的重要组成部分,可以简化多容器应用的管理。本文将深入探讨Docker Compose的核心功能及应用场…...
java中static和const和final的区别
static 关键字 static 关键字用于声明类的成员(方法或变量)为静态成员。静态成员属于类本身,而不是类的实例。换句话说,静态成员可以通过类名直接访问,而不需要实例化对象。 静态变量:属于类的所有对象共…...
[Win32/ATL]_[初级]_[处理WM_PAINT消息注意事项]
场景 在开发Win32/WTL程序时,遇到了使用CFolderDialog(atldlgs.h)打不开目录选择对话框的情况。具体表现是执行了窗口的DoModal,却没有窗口弹出来。 可以确定执行操作是在主线程,并不是工作线程。调试时暂停看堆栈,知道到DoModal方法里的SHB…...
【DevOps】Jenkins项目发布
Jenkins项目发布 文章目录 Jenkins项目发布前言资源列表基础环境一、Jenkins发布静态网站1.1、项目介绍1.2、部署Web1.3、准备gitlab1.4、配置gitlab1.5、创建项目1.6、推送代码 二、Jenkins中创建gitlab凭据2.1、创建凭据2.2、在Jenkins中添加远程主机2.3、获取gitlab项目的UR…...
Lua迭代器如何使用?
在Lua中,迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法,对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 12.1.1 迭代器介绍 迭代器是一种设计模式,它提供了一种访问集合元素的方法,而不需要…...
cesium小知识:3D tiles 概述、特点、示例
Cesium 的 3D Tiles 是一种高效的、流式传输的三维地理空间数据格式,专为在Web浏览器中快速渲染大规模三维场景而设计。3D Tiles 支持多种几何类型,包括点云、多边形、模型等,并且可以包含丰富的属性信息和层次细节(LOD, Level of Detail)结构,以确保不同设备和网络条件下…...
PTA DS 基础实验3-2.1 一元多项式求导
基础实验3-2.1 一元多项式求导 分数 20 全屏浏览 切换布局 作者 DS课程组 单位 浙江大学 设计函数求一元多项式的导数。 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。 注意:…...