Harbor镜像仓库(v2.10.3)附相关自定义配置

news2024/11/14 21:23:25

目录

 一. 环境准备 

二. 部署安装

三. 修改网段的方法

四. 配置开机与伴随docker启动

五. 基础使用

1. 创建一个用户

2. docker登录用户

3. 创建项目

4. 推送镜像

六. 自制证书配置HTTPS


 一. 环境准备 

Harbor 是一个开源的企业级 Docker 镜像仓库,提供了许多功能,包括用户管理、访问控制、镜像复制和安全扫描。

官方文档部署手册:Harbor docs | Harbor Installation Prerequisites

下载地址:Releases · goharbor/harbor (github.com) 

官方给出的最低配置和推荐配置如下图:

本文使用虚拟机配置:

主机名IP系统软件版本配置信息
harbor192.168.226.28Rocky_linux9.4

Docker version 27.1.1

Docker Compose version v2.29.1

2核4G,磁盘48G

Harbor:v2.10.3

可以从官方发布页面下载 Harbor 安装程序。下载在线安装程序或离线安装程序。

在线安装程序:在线安装程序从 Docker 中心下载 Harbor 镜像。因此,安装程序的尺寸非常小。
离线安装程序:如果要部署 Harbor 的主机没有连接到 Internet,请使用离线安装程序。离线安装程序包含预先构建的映像,因此它比在线安装程序大
在线和离线安装程序的安装过程几乎相同。

这里我主要使用离线安装,因为在线安装因为墙、内部网络等原因,很多时候会下载很慢,而离线安装包都包含了预先构建的镜像,所以直接现在离线安装包最好!

二. 部署安装

上传至虚拟机,这里我已经上传好了。

[root@harbor ~]# ll
total 637052
-rw-------. 1 root root       815 Jun  6 14:00 anaconda-ks.cfg
-rw-r--r--  1 root root 652334970 Aug  1 00:15 harbor-offline-installer-v2.10.3.tgz

解压

[root@harbor ~]# tar -xf harbor-offline-installer-v2.10.3.tgz

[root@harbor ~]# ll
total 637052
-rw-------. 1 root root       815 Jun  6 14:00 anaconda-ks.cfg
drwxr-xr-x  2 root root       123 Aug  1 00:45 harbor
-rw-r--r--  1 root root 652334970 Aug  1 00:15 harbor-offline-installer-v2.10.3.tgz
[root@harbor ~]# ll harbor
total 641820
-rw-r--r-- 1 root root     11347 Jul  2 15:42 LICENSE
-rw-r--r-- 1 root root      3643 Jul  2 15:42 common.sh
-rw-r--r-- 1 root root 657181693 Jul  2 15:42 harbor.v2.10.3.tar.gz
-rw-r--r-- 1 root root     13972 Jul  2 15:42 harbor.yml.tmpl
-rwxr-xr-x 1 root root      1975 Jul  2 15:42 install.sh
-rwxr-xr-x 1 root root      1882 Jul  2 15:42 prepare

这是离线安装包,其中在解压后的harbor目录中harbor.v2.10.3.tar.gz是打包好的所需镜像压缩包

最主要的是 harbor.yml.tmpl和 install.sh ,他们分别是配置文件和安装执行文件。 

以.tmpl结尾的文件多为模板文件,将harbor.yml.tmpl拷贝一份并命名为harbor.yml去掉.tmpl

[root@harbor ~]# cd harbor
[root@harbor harbor]# cp harbor.yml.tmpl harbor.yml
[root@harbor harbor]# ll
total 641836
-rw-r--r-- 1 root root     11347 Jul  2 15:42 LICENSE
-rw-r--r-- 1 root root      3643 Jul  2 15:42 common.sh
-rw-r--r-- 1 root root 657181693 Jul  2 15:42 harbor.v2.10.3.tar.gz
-rw-r--r-- 1 root root     13972 Aug  1 00:58 harbor.yml
-rw-r--r-- 1 root root     13972 Jul  2 15:42 harbor.yml.tmpl
-rwxr-xr-x 1 root root      1975 Jul  2 15:42 install.sh
-rwxr-xr-x 1 root root      1882 Jul  2 15:42 prepare

简化后的 harbor.yml 文件模板:

hostname: reg.mydomain.com
http:
  port: 80
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
  conn_max_lifetime: 5m
  conn_max_idle_time: 0
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  skip_java_db_update: false
  offline_scan: false
  security_check: vuln
  insecure: false
jobservice:
  max_job_workers: 10
  job_loggers:
    - STD_OUTPUT
    - FILE
  logger_sweeper_duration: 1 #days
notification:
  webhook_job_max_retry: 3
  webhook_job_http_client_timeout: 3 #seconds
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.10.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
upload_purging:
  enabled: true
  age: 168h
  interval: 24h
  dryrun: false
cache:
  enabled: false
  expire_hours: 24

现在我根据需要对该文件进行设定修改,hostname参数直接使用IP;这里因为https用不到,为避免学习麻烦先注释,有需要再加,修改见图:

然后继续用命令执行安装

[root@harbor harbor]# ./install.sh

 

看到图中箭头所指的successfully就部署成功了。 

浏览器访问IP即可,例如我这里就访问http://192.168.226.28/

如果配置文件中自己没有修改,默认用户名:admin   默认密码:Harbor12345  

三. 修改网段的方法

在使用中,如果需要自定义网段,可进行如下步骤。

在运行安装步骤时,会自动的新文件解释

  • docker-compose.yml:

    • 作用: 这个文件是 docker-compose 的配置文件,定义了 Harbor 各个服务的 Docker 容器配置。它包含了各个容器的镜像、环境变量、卷、网络设置等信息。
    • 内容: 包括了 Harbor 核心服务、数据库、Redis、Nginx 等服务的配置,用于启动和管理整个 Harbor 应用。
  • common 目录:

    • 作用: 这个目录包含一些公共的配置和脚本,供 Harbor 在启动和运行过程中使用。
    • 内容: 可能包含一些如证书、配置模板、脚本等文件,这些文件是 Harbor 运行所必需的。

其中docker-compose.yml它是一个关键的配置文件,它用于定义构成 Harbor 平台的服务及其容器配置。

[root@harbor harbor]# ll
total 641832
-rw-r--r-- 1 root root     11347 Jul  2 15:42 LICENSE
drwxr-xr-x 3 root root        20 Aug  1 03:02 common
-rw-r--r-- 1 root root      3643 Jul  2 15:42 common.sh
-rw-r--r-- 1 root root      5843 Aug  1 03:02 docker-compose.yml
-rw-r--r-- 1 root root 657181693 Jul  2 15:42 harbor.v2.10.3.tar.gz
-rw-r--r-- 1 root root      1003 Aug  1 03:01 harbor.yml
-rw-r--r-- 1 root root     13972 Jul  2 15:42 harbor.yml.tmpl
-rwxr-xr-x 1 root root      1975 Jul  2 15:42 install.sh
-rwxr-xr-x 1 root root      1882 Jul  2 15:42 prepare

关闭harbor

[root@harbor harbor]# docker compose down

 注:如果没有删除的话 需要使用 docker network rm harbor_harbor 的方式删除

然后查看下网络确保已经删除harbor

[root@harbor harbor]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
6cb7a2d44eb7   bridge    bridge    local
5ef4b87494b0   host      host      local
1855e2156e9b   none      null      local

 创建网络,并根据需要自定义网段

[root@harbor harbor]# docker network create --driver=bridge --subnet=10.110.0.0/16 harbor

检查

[root@harbor harbor]# docker network ls && docker network inspect harbor
NETWORK ID     NAME      DRIVER    SCOPE
6cb7a2d44eb7   bridge    bridge    local
d009323768e3   harbor    bridge    local
5ef4b87494b0   host      host      local
1855e2156e9b   none      null      local
[
    {
        "Name": "harbor",
        "Id": "d009323768e31e0565d46324d629e408793f1577f919588819eadf09f2ab3629",
        "Created": "2024-08-01T02:39:55.477662508+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.110.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

接下来修改 /root/harbor/docker-compose.yml 这个配置文件

[root@harbor harbor]# vim docker-compose.yml
#将最后面的 是否使用外部网络设置为true
networks:
  harbor:
    external: true

 重新运行docker-compose.yml文件

[root@harbor harbor]# docker compose up -d --force-recreate
#该命令若不在docker-compose.yml需指定位置docker compose -f /root/harbor/docker-compose.yml up -d --force-recreate

重新验证查看

[root@harbor harbor]# docker network ls && docker network inspect harbor

 

四. 配置开机与伴随docker启动

Docker compose 不会伴随docker的启动而启动,需要进行一下设置

执行下述代码即可,如果你的docker-compose.yml目录位置和我不一样,你需要对下面这段代码路径进行自主修改。

cat >/usr/lib/systemd/system/harbor.service <<EOF
[Unit]
Description=Harbor service with docker-compose
Requires=docker.service
After=docker.service

[Service]
Restart=always
RemainAfterExit=yes
StandardError=null
StandardOutput=null
WorkingDirectory=/root/harbor
ExecStartPre=/usr/bin/docker compose -f /root/harbor/docker-compose.yml down
ExecStart=/usr/bin/docker compose -f /root/harbor/docker-compose.yml up -d
ExecStop=/usr/bin/docker compose -f /root/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF

重新加载 systemd 的配置并设置自启动。

systemctl daemon-reload && systemctl enable harbor.service

现在可以重启docker测试harbor会不会正常运行了。

[root@harbor ~]# systemctl restart docker

需等待一会验证,下面这样就是ok了。

[root@harbor ~]# docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED             STATUS                             PORTS                                   NAMES
976d1adf7aba   goharbor/nginx-photon:v2.10.3         "nginx -g 'daemon of…"   About an hour ago   Up 25 seconds (health: starting)   0.0.0.0:80->8080/tcp, :::80->8080/tcp   nginx
666d1cbe5ec3   goharbor/harbor-jobservice:v2.10.3    "/harbor/entrypoint.…"   About an hour ago   Up 22 seconds (health: starting)                                           harbor-jobservice
41b46a091552   goharbor/harbor-core:v2.10.3          "/harbor/entrypoint.…"   About an hour ago   Up 25 seconds (health: starting)                                           harbor-core
04a9798038d4   goharbor/registry-photon:v2.10.3      "/home/harbor/entryp…"   About an hour ago   Up 25 seconds (health: starting)                                           registry
fc68ec53a081   goharbor/harbor-registryctl:v2.10.3   "/home/harbor/start.…"   About an hour ago   Up 24 seconds (health: starting)                                           registryctl
6b7cfd18ee75   goharbor/harbor-db:v2.10.3            "/docker-entrypoint.…"   About an hour ago   Up 24 seconds (health: starting)                                           harbor-db
dbde85a2eacc   goharbor/redis-photon:v2.10.3         "redis-server /etc/r…"   About an hour ago   Up 25 seconds (health: starting)                                           redis
0856838ace4d   goharbor/harbor-portal:v2.10.3        "nginx -g 'daemon of…"   About an hour ago   Up 25 seconds (health: starting)                                           harbor-portal
8bbb45f72629   goharbor/harbor-log:v2.10.3           "/bin/sh -c /usr/loc…"   About an hour ago   Up 25 seconds (health: starting)   127.0.0.1:1514->10514/tcp               harbor-log

五. 基础使用

1. 创建一个用户

2. docker登录用户

直接在docker登陆是必要用443端口的https,那么如果我们想用80端口的http,需要额外配置

[root@harbor ~]# vim /etc/docker/daemon.json
  "insecure-registries": ["http://192.168.226.28"]

重启docker

# 前面配置systemd 的管理harbor,配置了对docker启动而启动,因此重启docker,harbor也会重启。
[root@harbor ~]# systemctl restart docker

登录

[root@harbor ~]# docker login 192.168.226.28

查看登录信息

[root@harbor ~]# cat .docker/config.json 

3. 创建项目

给这个项目添加使用用户

4. 推送镜像

[root@harbor ~]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
goharbor/harbor-exporter        v2.10.3   7aa694114453   4 weeks ago   107MB
goharbor/redis-photon           v2.10.3   359683ebd59c   4 weeks ago   165MB
goharbor/trivy-adapter-photon   v2.10.3   6d51017555d9   4 weeks ago   516MB
goharbor/harbor-registryctl     v2.10.3   96efb27ac641   4 weeks ago   152MB
goharbor/registry-photon        v2.10.3   f73ad548d874   4 weeks ago   84.7MB
goharbor/nginx-photon           v2.10.3   0ae16f53f286   4 weeks ago   154MB
goharbor/harbor-log             v2.10.3   9ee81cca16ce   4 weeks ago   163MB
goharbor/harbor-jobservice      v2.10.3   053df0842d37   4 weeks ago   143MB
goharbor/harbor-core            v2.10.3   ed909856be82   4 weeks ago   171MB
goharbor/harbor-portal          v2.10.3   c8c29cea2ef3   4 weeks ago   162MB
goharbor/harbor-db              v2.10.3   c623b46fd89d   4 weeks ago   269MB
goharbor/prepare                v2.10.3   292e199c8873   4 weeks ago   210MB

[root@harbor ~]# docker tag goharbor/harbor-db:v2.10.3 192.168.226.28/namespace/ceshi:1.0

[root@harbor ~]# docker push 192.168.226.28/namespace/ceshi:1.0

六. 自制证书配置HTTPS

删除上面在docker配置的   "insecure-registries": ["http://192.168.226.28"]

[root@harbor harbor]# vim /etc/docker/daemon.json

#删除这行  "insecure-registries": ["http://192.168.226.28"]

 删除后见下图样式

创建脚本文件

[root@harbor ~]# cd harbor
[root@harbor harbor]# vim generate_cert.sh
#!/bin/bash
# **********************************************************
# * 文件名     : generate_cert.sh
# * 作者        : zzdict
# * 邮箱         : zzdict@gmail.com / elk_deer@foxmail.com
# * 创建时间   : 2024-08-23 01:14
# * 描述         : 制作证书脚本
# **********************************************************

# 使用该脚本生成自签名证书
# 使用方法: ./generate_cert.sh <域名> <证书有效天数> <输出目录>
# 示例: ./generate_cert.sh example.com 365 ./certs

# 检查是否提供了所有参数
if [ "$#" -ne 3 ]; then
    echo "用法: $0 <域名> <证书有效天数> <输出目录>"
    exit 1
fi

# 获取命令行参数
DOMAIN=$1
DAYS_VALID=$2
OUTPUT_DIR=$3

# 创建输出目录(如果不存在)
mkdir -p $OUTPUT_DIR

# 定义文件名
PRIVATE_KEY_FILE="$OUTPUT_DIR/$DOMAIN.key"
CERTIFICATE_FILE="$OUTPUT_DIR/$DOMAIN.crt"
CSR_FILE="$OUTPUT_DIR/$DOMAIN.csr"
CONFIG_FILE="$OUTPUT_DIR/openssl.cnf"

# 生成私钥
echo "生成私钥..."
openssl genrsa -out $PRIVATE_KEY_FILE 2048

# 生成 OpenSSL 配置文件,包含 SAN
echo "生成 OpenSSL 配置文件..."
cat > $CONFIG_FILE <<EOF
[ req ]
default_bits       = 2048
default_keyfile    = privkey.pem
distinguished_name = req_distinguished_name
req_extensions     = req_ext
x509_extensions    = v3_ca

[ req_distinguished_name ]
countryName                 = 国家代码 (2 个字母)
stateOrProvinceName         = 省份名称 (完整拼写)
localityName                = 城市名称 (如,城市)
organizationName            = 组织名称 (如,公司)
organizationalUnitName      = 组织单位名称 (如,部门)
commonName                  = 通用名称 (如,完全限定域名)
emailAddress                = 邮件地址

countryName_default         = CN
stateOrProvinceName_default = State
localityName_default        = City
organizationName_default    = Organization
organizationalUnitName_default = OrgUnit
commonName_default          = $DOMAIN
emailAddress_default        = email@example.com

[ req_ext ]
subjectAltName = @alt_names

[ v3_ca ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = $DOMAIN
EOF

# 生成证书签名请求(CSR)
echo "生成证书签名请求..."
openssl req -new -key $PRIVATE_KEY_FILE -out $CSR_FILE -config $CONFIG_FILE -subj "/C=CN/ST=State/L=City/O=Organization/OU=OrgUnit/CN=$DOMAIN/emailAddress=email@example.com"

# 生成自签名证书
echo "生成自签名证书..."
openssl x509 -req -days $DAYS_VALID -in $CSR_FILE -signkey $PRIVATE_KEY_FILE -out $CERTIFICATE_FILE -extensions v3_ca -extfile $CONFIG_FILE

# 输出结果
echo "证书生成完毕:"
echo "私钥: $PRIVATE_KEY_FILE"
echo "证书: $CERTIFICATE_FILE"
echo "证书签名请求: $CSR_FILE"

# 删除临时的 OpenSSL 配置文件
rm -f $CONFIG_FILE

执行脚本

[root@harbor harbor]# sh generate_cert.sh mataki4.org 365 ./certs

此命令将在 ./certs 目录中生成以下文件:

  • mataki4.org.key:私钥
  • mataki4.org.crt:自签名证书
  • mataki4.org.csr:证书签名请求

编辑Harbor配置https

[root@harbor harbor]# vim harbor.yml
https:
  port: 443
  certificate: /root/harbor/certs/mataki4.org.crt
  private_key: /root/harbor/certs/mataki4.org.key

初始化配置

[root@harbor harbor]# ./prepare

配置本地域名解析 

[root@harbor harbor]# vim /etc/hosts
# 加入下述配置ip 域名
192.168.226.28 mataki4.org

重启docker,因为前面配置了harbor启动方式,重启docker,harbor也会重启。

[root@harbor harbor]# systemctl daemon-reload
[root@harbor harbor]# systemctl restart docker

windows配置域名解析,在C:\Windows\System32\drivers\etc\hosts

需要使用记事本的管理员模式打开编辑或者Notepad++编辑也可

使用域名访问mataki4.org  

见图可以看到,新访问的链接上有了https协议

 

由于是自制的证书,会有这种不安全提示,如果不喜欢可进行下述配置解决。

[root@harbor harbor]# cd certs/
[root@harbor certs]# ll
total 12
-rw-r--r-- 1 root root  997 Aug  3 01:12 mataki4.org.crt
-rw-r--r-- 1 root root  895 Aug  3 01:12 mataki4.org.csr
-rw------- 1 root root 1704 Aug  3 01:12 mataki4.org.key

 需要将mataki4.org.crt自签名证书文件导入到浏览器中,先从服务器下载到桌面,然后打开浏览器设置证书导入。

到这就成功了。

重新刷新网页查看

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

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

相关文章

1.4亿中文知识图谱导入Nebula Graph快速体验

1. 史上最大规模的中文知识图谱 Yener 开源了史上最大规模的中文知识图谱—— OwnThink&#xff08;链接&#xff1a;​​https://github.com/ownthink/KnowledgeGraphData​​&#xff0c;数据量为 1.4 亿条。数据以 ​​(实体, 属性, 值)​​ 和 ​​(实体, 关系, 实体)​​…

AI大模型技术的四大核心架构分析

AI大模型技术的四大核心架构演进之路 随着人工智能技术的飞速发展&#xff0c;大模型技术已经成为AI领域的重要分支。 深度剖析四大大模型技术架构&#xff1a;纯粹的Prompt提示词法、Agent Function Calling机制&#xff0c;RAG&#xff08;检索增强生成&#xff09;及Fine-…

基于若依框架开发的Spring Boot+Vue的MES(生产制造执行系统)是一种专为中小型工厂设计的ERP(企业资源计划)系统

基于若依框架开发的Spring BootVue的MES&#xff08;生产制造执行系统&#xff09;是一种专为中小型工厂设计的ERP&#xff08;企业资源计划&#xff09;系统。这个系统旨在帮助这些工厂实现更有效的生产管理、数据收集与分析、设备监控以及质量管理等&#xff0c;从而提高生产…

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…

2024关于日本AI 领域TOP12 的大学介绍

1.东京大学 &#xff08;The University of Tokyo&#xff09; 位于&#xff1a;日本东京都文京区本郷七丁目3 番1 号 网址&#xff1a;東京大学 东京大学也被称为UTokyo 或东大&#xff0c;是日本第一所国立大学。作为领先的研究型 大学&#xff0c;东京大学提供基本所有…

JavaFX布局-SplitPane

JavaFX布局-SplitPane 常用属性orientationpaddingdividerPositionsdisable 实现方式Java实现fxml实现 一个拆分至少两个区域的容器支持水平、垂直布局可以拖动区域的大小初始化大小通过比例设置[0,1] 常用属性 orientation 排列方式&#xff0c;Orientation.VERTICAL、Orien…

k8s学习2

k8s 分成Master 负责整个k8s集群管理 node节点&#xff08;工作&#xff09;运行nginx 节点—服务器 kubernetes 组件 kubernetes集群主要由控制节点(Master)、工作节点(Node)组成 Master组件 集群的控制平面&#xff0c;集群的决策 负责管理k8s 集群管理 apiserver Kuber…

Cesium 相机控制器(1)-wheel 实现原理简析

Cesium 相机控制器(1)-wheel 实现原理简析 已经做大量简化, 不是代码最终的样子. Viewer┖ CesiumWidget┖ ScreenSpaceCameraController(_screenSpaceCameraController)┣ CameraEventAggregator(_aggregator) // 相机事件代理┃ ┖ ScreenSpaceEventHandler(_eventHandler…

3.创建了Vue项目,需要导入什么插件以及怎么导入

如果你不知道怎么创建Vue项目,建议可以看一看这篇文章 怎么安装Vue的环境和搭建Vue的项目-CSDN博客 1.在idea中打开目标文件 2.系在一个插件Vue.js 3.下载ELement UI 在Terminal中输入 # 切换到项目根目录 cd vueadmin-vue # 或者直接在idea中执行下面命令 # 安装element-u…

WordPress 轻量级产品官网类主题 CeoNova-Pro_v4.4绕授权开心版

CeoNova-Pro 主题是一款轻量级、且简洁大气、产品官网类主题&#xff0c;定位于高端产品官网、同时包含了知识付费、定制服务、问答社区、论坛交流、网址导航、以及付费产品购买下载等全方位覆盖。 源码下载&#xff1a;ceonova-pro4.4.zip 变更日志 新增虚拟资源隐藏信息增…

limit 以及分页 SQL 语句

目录 1. 作用 2. 演示 3. 分页 SQL 语句 1. 作用 获取结果集的一部分&#xff1b; 2. 演示 &#xff08;1&#xff09;如下&#xff0c;获取表的前三行&#xff1b; &#xff08;2&#xff09;只有一个数字&#xff0c;默认从 0 开始&#xff1b; &#xff08;3&#x…

Linux 项目自动化构建工具 —— make/makefile

Linux 项目自动化构建工具 —— make/makefile 入门使用原理自动化构建递归式自动推导 清理注意 特殊符号 会不会写 makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&a…

神奇海洋养鱼小程序游戏广告联盟流量主休闲小游戏源码

在海洋养鱼小程序中&#xff0c;饲料、任务系统、系统操作日志、签到、看广告、完成喂养、每日签到、系统公告、积分商城、界面设计、拼手气大转盘抽奖以及我的好友等功能共同构建了一个丰富而互动的游戏体验。以下是对这些功能的进一步扩展介绍&#xff1a; 饲料 任务奖励&a…

使用JWT的SpringSecurity实现前后端分离

1. SpringSecurity完成前后端完全分离 分析&#xff1a; 前后端分离&#xff1a;响应的数据必须为JSON数据&#xff0c;之前响应的是网页 需要修改的代码有&#xff1a; 登录成功需要返回json数据登录失败需要返回json数据权限不足时返回json数据未登录访问资源返回json数据 1.…

英国AI大学排名

计算机学科英国Top10 “计算机科学与信息系统”学科除了最受关注的“计算机科学”专业&#xff0c;还包括了“人工智能”“软件工程”“计算机金融”等众多分支专业。 1.帝国理工学院 Imperial College London 单以计算机专业本科来讲&#xff0c;仅Computing这个专业&#x…

双线性插值(Bilinear Interpolation)

文章目录 一.双线性插值3.双线性插值的优化 一.双线性插值 假设源图像大小为mxn&#xff0c;目标图像为axb。那么两幅图像的边长比分别为&#xff1a;m/a和n/b。注意&#xff0c;通常这个比例不是整数&#xff0c;编程存储的时候要用浮点型。目标图像的第&#xff08;i,j&…

正点原子imx6ull-mini-Linux驱动之Linux LCD 驱动实验(19)

LCD 是很常用的一个外设&#xff0c;在裸机篇中我们讲解了如何编写 LCD 裸机驱动&#xff0c;在 Linux 下 LCD 的使用更加广泛&#xff0c;在搭配 QT 这样的 GUI 库下可以制作出非常精美的 UI 界面。本章我们 就来学习一下如何在 Linux 下驱动 LCD 屏幕。 1&#xff1a;Linux …

奇安信高管合计套现7.7亿,总裁个人套现1.9亿

【文末送&#xff1a;技战法】 昨天网安一哥&#xff0c;奇安信发布《关于中电金投增持公司股份暨持股 5% 以上股东协议转让公司股份的权益变动的提示性公告》&#xff0c;公告显示中国电子将再次收购奇安信5%的股份。 公告显示&#xff0c;奇安壹号合伙人中&#xff1a;天津…

[Meachines] [Easy] OpenAdmin OpenNetAdmin-RCE+RSA私钥解密+Nano权限提升

信息收集 IP AddressOpening Ports10.10.10.171TCP:22,80 $ nmap -p- 10.10.10.171 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 4b:98:df:85:d1:7…

深入理解操作系统--进程(1)

文章目录 概述进程&#xff0c;轻量级进程和线程进程描述符linux进程四要素创建进程linux3个系统调用创建新的进程do_fork函数copy_process函数 撤销进程 小结 概述 这一章&#xff0c;主要讲的是进程的概念&#xff0c;即程序执行的一个实例。在linux源代码中&#xff0c;通常…