当前位置: 首页 > news >正文

Ubantu docker学习笔记(八)私有仓库

文章目录

  • 一、建立HTTPS链接
    • 1.在仓库服务器上获取TLS证书
      • 1.1 生成证书颁发机构证书
      • 1.2 生成服务器证书
      • 1.3 利用证书运行仓库容器
    • 2.让私有仓库支持HTTPS
    • 3.客户端端配置
  • 二、基本身份验证
  • 三、对外隐藏仓库服务器
    • 3.1 在服务器端
    • 3.2 在客户端进行
  • 四、仓库可视化


在前面的学习中,我们可以知道,我们所使用上传的镜像全都是公共镜像,镜像如果是商业机密,只能供公司内部人员使用,怎么办,这个就涉及到我们私有仓库的搭建。
在这里插入图片描述
在这一章的学习中,我们就用两台主机,分别作为服务器端和客户端,现在我们开始吧!

名称IP地址
服务端192.168.2.109
客户端192.168.2.108

一、建立HTTPS链接

<registry.xinhua.com>可以替换
/opt/docker/registry/certs也地址可以进行修改

1.在仓库服务器上获取TLS证书

新建一个目录

sudo su
mkdir -p /opt/docker/registry/certs
cd /opt/docker/registry/certs
ls

1.1 生成证书颁发机构证书

生成 CA 证书私钥

openssl genrsa -out ca.key 4096

生成ca证书

openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=registry.xinhua.com" \-key ca.key \-out ca.crt

在这里插入图片描述

1.2 生成服务器证书

生成私钥

openssl genrsa -out registry.xinhua.com.key 4096

生成证书签名请求 (CSR)

openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=registry.xinhua.com" \-key registry.xinhua.com.key \-out registry.xinhua.com.csr

在这里插入图片描述
生成 x509 v3 扩展文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=registry.xinhua.com
DNS.2=registry.xinhua
DNS.3=hostname
EOF

使用该文件为 主机生成证书v3.ext

openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in registry.xinhua.com.csr \-out registry.xinhua.com.crt

在这里插入图片描述

1.3 利用证书运行仓库容器

docker run -it -d --name registry-TLS -p 5000:5000 -v /opt/docker/registry/certs/:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.xinhua.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.xinhua.com.key registry:2

在这里插入图片描述

2.让私有仓库支持HTTPS

ip addr

在这里插入图片描述
在仓库服务器和客户端配置域名解析

sudo gedit /etc/hosts192.168.2.109 registry.xinhua.com
192.168.2.109 nginx.xinhua.com

在这里插入图片描述
验证一下

ping registry.xinhua.com

在这里插入图片描述

3.客户端端配置

在仓库服务器和客户端配置域名解析

sudo gedit /etc/hosts<服务器ip>
192.168.2.109 registry.xinhua.com
192.168.2.109 nginx.xinhua.com

在这里插入图片描述
验证一下

ping registry.xinhua.com

在这里插入图片描述
客户端安装open-ssh server

apt-get install openssh-server

在客户端上创建存储证书的目录

mkdir -p /etc/docker/certs.d/registry.xinhua.com\:5000

将服务器上的所有证书/opt/docker/registry/certs(.cert .key .crt)通过scp拷贝到创建客户端存储证书的目录服务端执行

修改服务端权限:chmod 777 /opt/docker/registry/certs
修改客户机权限:chmod 777 /etc/docker/certs.d/registry.xinhua.com:5000scp -r -p /etc/docker/certs.d/registry.xinhua.com:5000/register.xinhua.com.crt username@serverip: /opt/docker/registry/certs/register.xinhua.com.crt username<登录用户名你服务器的名字【就是你直接打开控制台的名字】>
serverip<客户端ip(ip addr查看)> 192.168.2.108scp -r -p /opt/docker/registry/certs/registry.xinhua.com.crt root-u@192.168.2.108:/etc/docker/certs.d/registry.xinhua.com:5000/register.xinhua.com.crt

在这里插入图片描述
客户端
在这里插入图片描述
下面我们就来演示吧

名称IP地址
服务端192.168.2.109
客户端192.168.2.108

在客户端推送镜像
代码解释参考:Ubantu docker学习笔记(三)docker账号push及Dockerfile优化

docker tag busybox:latest registry.xinhua.com:5000/busybox:V1
docker push registry.xinhua.com:5000/busybox:V1

在这里插入图片描述

curl -X GET https://registry.xinhua.com:5000/v2/_catalog -k

在这里插入图片描述

二、基本身份验证

创建目录及用户密码文件

mkdir /opt/docker/registry/auth
docker run  --entrypoint htpasswd  httpd:2 -Bbn testuser testpassword > /opt/docker/registry/auth/htpasswd这里注意testuser testpassword 就是我们后面登录的账号密码了

停止之前镜像(直接把所有关了)

docker stop $(docker ps -q) & docker rm $(docker ps -aq)

再次运行我们的服务镜像

docker run -d  \
-p 5000:5000   \
--restart=always  \
--name registry  \
-v /opt/docker/registry/auth:/auth  \
-e "REGISTRY_AUTH=htpasswd"  \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"  \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  \
-v /opt/docker/registry/certs:/certs   \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.xinhua.com.crt   \
-e REGISTRY_HTTP_TLS_KEY=/certs/registry.xinhua.com.key   registry:2

在这里插入图片描述
去我们客户端进行镜像上传

docker push registry.xinhua.com:5000/busybox:V1

在这里插入图片描述
可以看到我们上传不了,接着我们登录

登录

docker login registry.xinhua.com:5000

账号:testuser
密码:testpassword
在这里插入图片描述
在这里插入图片描述
我们再去上传我们的镜像

docker push registry.xinhua.com:5000/busybox:V1

在这里插入图片描述

三、对外隐藏仓库服务器

3.1 在服务器端

安装nginx

apt install nginx

为nginx创建SSL秘钥和证书到/etc/nginx/certs/目录下

mkdir -p /etc/nginx/certs/
cd /etc/nginx/certs/
ls

开始参考https的方式啦,也就是相当于把registry.xinhua.com全都替换成nginx.xinhua.com

生成ca证书私钥

openssl genrsa -out ca.key 4096

生成ca证书

openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=nginx.xinhua.com" \-key ca.key \-out ca.crt

生成服务器证书,私钥

openssl genrsa -out nginx.xinhua.com.key 4096

生成证书签名请求 (CSR)

openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=nginx.xinhua.com" \-key nginx.xinhua.com.key \-out nginx.xinhua.com.csr

生成 x509 v3 扩展文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=nginx.xinhua.com
DNS.2=nginx.xinhua
DNS.3=hostname
EOF

使用该文件为 主机生成证书v3.ext

openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in nginx.xinhua.com.csr \-out nginx.xinhua.com.crt

在这里插入图片描述
客户端上创建存储证书的目录

mkdir -p /etc/docker/certs.d/nginx.xinhua.com\:443

将服务器上的所有证书/opt/docker/registry/certs(.cert .key .crt)通过scp拷贝到创建客户端存储证书的目录服务端执行

修改服务端权限:
chmod 777 /etc/nginx/certs/
修改客户机权限:
chmod 777 /etc/docker/certs.d/nginx.xinhua.com:443
chmod 777 /usr/local/share/ca-certificatesusername<登录用户名你服务器的名字【就是你直接打开控制台的名字】>
serverip<客户端ip(ip addr查看)> 192.168.2.108scp -r -p /etc/nginx/certs/nginx.xinhua.com.crt root-u@192.168.2.108:/etc/docker/certs.d/nginx.xinhua.com:443/nginx.xinhua.com.crt
scp -r -p /etc/nginx/certs/nginx.xinhua.com.crt root-u@192.168.2.108:/usr/local/share/ca-certificates/nginx.xinhua.com.crt

在这里插入图片描述

修改nginx配置/etc/nginx/nginx.conf让nginx的支持SSL的反向代理和身份验证

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on;
}http {upstream docker-register {server registry.xinhua.com:5000;}server {listen 443 ssl;server_name nginx.xinhua.com;#修改ssl_certificate /etc/nginx/certs/nginx.xinhua.com.crt;#修改ssl_certificate_key /etc/nginx/certs/nginx.xinhua.com.key;ssl_session_cache builtin:1000 shared:SSL:10m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;ssl_prefer_server_ciphers on;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;location / {auth_basic "Restricted";auth_basic_user_file /etc/nginx/auth/htpasswd.txt;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_pass https://docker-register;proxy_read_timeout 900;}location /v2 {auth_basic off;proxy_pass https://docker-register;}location /_ping {auth_basic off;proxy_pass https://docker-register;}location /v2/_ping {auth_basic off;proxy_pass https://docker-register;}location /v2/_catalog {auth_basic off;proxy_pass https://docker-register;}}### Basic Settings##sendfile on;tcp_nopush on;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;### SSL Settings##ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;### Logging Settings##access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;### Gzip Settings##gzip on;# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### Virtual Host Configs##include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
#
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

使用htpasswd去生成用户账号,设置密码

mkdir /etc/nginx/auth
cd /etc/nginx/auth
apt install apache2-utils
htpasswd -c htpasswd.txt user输入你的密码

在这里插入图片描述
重启Nginx服务

sudo /etc/init.d/nginx restart
注意!!!
一定要打全
https://192.168.2.109:443
直接输入域名可能出现以下错误

没有打端口号
在这里插入图片描述
没有用http连接
在这里插入图片描述
正确!!!
在这里插入图片描述

在这里插入图片描述

3.2 在客户端进行

配置

sudo vi /etc/docker/daemon.json{  "registry-mirrors": ["https://8f6a79wk.mirror.aliyuncs.com"],"insecure-registries":["私库地址(可以域名也可以ip)"]
}我的配置
{"registry-mirrors": ["https://8f6a79wk.mirror.aliyuncs.com"],"insecure-registries":["https://nginx.xinhua.com"]
}如果不配置就会出现
Error response from daemon: Get "https://nginx.xinhua.com/v2/": x509: certificate signed by unknown authority

登录

update-ca-certificates
systemctl daemon-reload
systemctl restart docker第一种:
docker login https://192.168.2.109:443 -u user -p "123456"第二种:
#设置环境变量
export PASSWORD=123456
#以环境变量的方式读入
echo "$PASSWORD" | docker login https://https://nginx.xinhua.com --username user --password-stdin

在这里插入图片描述

我们再去上传我们的镜像

docker tag busybox:latest 192.168.2.109:443/busybox:V1
docker push 192.168.2.109:443/busybox:V1

四、仓库可视化

http:

docker run --name registry -d  -p 5000:5000 --restart=always  -v /opt/data/registry:/var/lib/registry registrydocker run -it -d -p 8080:8080 --name registry-web --link registry   \
-e REGISTRY_URL=http://192.168.2.109:5000/v2            \
-e REGISTRY_TRUST_ANY_SSL=true            \
-e REGISTRY_BASIC_AUTH="cm9vdDoxMjM0NTY"            \
-e REGISTRY_NAME=192.168.2.109:5000 hyper/docker-registry-web

在这里插入图片描述

https:(未实现)

docker run -it -d --name registry-TLS -p 5000:5000 -v /opt/docker/registry/certs/:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.xinhua.com.crt -e REGISTRY_HTTP_TLS_KEY=/certs/registry.xinhua.com.key registry:2docker run -it -d -p 8080:8080 --name registry-web --link registry-TLS   \
-e REGISTRY_URL=https://192.168.2.109:5000/v2            \
-e REGISTRY_TRUST_ANY_SSL=true            \
-e REGISTRY_BASIC_AUTH="cm9vdDoxMjM0NTY"            \
-e REGISTRY_NAME=192.168.2.109:5000 hyper/docker-registry-web

在这里插入图片描述

相关文章:

Ubantu docker学习笔记(八)私有仓库

文章目录 一、建立HTTPS链接1.在仓库服务器上获取TLS证书1.1 生成证书颁发机构证书1.2 生成服务器证书1.3 利用证书运行仓库容器 2.让私有仓库支持HTTPS3.客户端端配置 二、基本身份验证三、对外隐藏仓库服务器3.1 在服务器端3.2 在客户端进行 四、仓库可视化 在前面的学习中&a…...

【五一创作】网络协议与攻击模拟-01-wireshark使用-捕获过滤器

协议 TCP/IP协议簇 网络接口层(没有特定的协议)PPPOE 物理层 数据链路层 网络层:IP (v4/v6) ARP (地址解析协议) RARP ICMP (Internet控制报文协议) IGMP 传输层:TCP(传输控制协议) UDP(用户数据报协议) 应用层:都是基于传输层协议的端口,总共端口0~65535 0~1023 HTTP—t…...

网络-IP地址(嵌入式学习)

IP地址 基本概念IPv4 五类&#xff1a;A B C D E特殊地址子网掩码子网号概念IPv6优势举个栗子 基本概念 IP地址是Internet中主机的标识 IP地址&#xff08;Internet Protocol Address 互联网国际地址&#xff09;是一种在Internet上的给主机编址的方式&#xff0c;它主要是为…...

一文介绍Linux EAS

能量感知调度&#xff08;Energy Aware Scheduling&#xff0c;简称EAS&#xff09;是目前Android手机中Linux线程调度器的基础功能&#xff0c;它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型&#xff08;Energy Model&#xff0c;简称EM&#xff09;&#xff0c;…...

【五一创作】【Midjourney】Midjourney 连续性人物创作 ① ( 通过垫图方式生成类似图像 )

文章目录 一、Midjourney 生成图像二、通过垫图方式生成类似图像 一、Midjourney 生成图像 Midjourney 可以生成高质量的图像 , 但是 生成过程有很大的随机性 , 输入同样的提示词指令 , 其输出结果也存在很大的不同 ; 如果要 生成稳定的人物角色 , 场景 , 描述连贯的内容 , 这…...

牛客刷题错题记录【03】

链接&#xff1a;https://www.nowcoder.com/questionTerminal/8242fbf4b3a241219989b3e1d0ee82db 来源&#xff1a;牛客网 下列关于Vue和React的描述错误的是&#xff08; Vue进行数据拦截/代理&#xff0c;对数据更敏感&#xff0c;数据驱动视图自更新&#xff0c;而React需…...

maven-gpg-plugin gpg禁用交互式输入密码 免密码输入 设置默认密码 关闭pinentry-qt输入 passphrase

一、问题描述 在使用maven-gpg-plugin打包jar时,默认情况下&#xff0c;每次都会弹出对话框要你输入密码&#xff1a; 这就有点烦&#xff0c;有啥办法可以设置默认方法没&#xff1f;网上找了一圈&#xff0c;通过搜索关键词“passphrase”&#xff0c;找到了一些教程&#x…...

急需国产化替代的重要的工程软件有哪些?

急需国产化替代的重要的工程软件有哪些&#xff1f; 软件一&#xff1a;AutoCAD等领域常用设计软件 AutoCAD由Autodesk公司开发的工程辅助设计软件&#xff0c;目前是设计领域 最重要的工程软件。在高端3D的CAD领域&#xff0c;国产软件几乎全军覆没&#xff0c;在中 低端还有…...

计算机组成原理 4.2.1存储芯片连接

连接原理 主存储器 通过数据总线、地址总线和控制总线和CPU相连数据总线的位数正比于数据传输率地址总线的位数决定可寻址的最大地址空间控制总线(读/写)指出总线周期的类型和本次输入/输出完成的时刻 但是实际中存储芯片往往很小难以满足地址和数据的位数需求&#xff0c;此…...

这份【互联网项目全流程表】,实在是泰裤辣!!!

互联网行业是一个快速变化的行业&#xff0c;作为半个互联网人。太明白用户和环境每天都在不停地变化是什么感受了。 ​从项目开始到项目结束&#xff0c;要经历立项、计划、执行、结项&#xff0c;项目一周一个&#xff0c;一周一个。&#xff08;**的&#xff09;为了省时间…...

JAVA医院管理云HIS统计报表子系统、系统管理字系统功能实现

一、统计报表子系统 统计报表子系统功能模块&#xff1a;包括门诊收入汇总、住院收入汇总、收费统计报表、收费明细报表、 缴款日报、门诊收费汇总、住院科室日志、住院结算汇总、医疗项目统计、检查项目统计、 检验项目统计、月末收支汇总、药品进销存统计。 &#xff08;1…...

5.Java中抽象类和接口

抽象类与接口 相同不同先从抽象类说起再从接口说起 相同 1.两者都不能实例化&#xff0c;因为他们都不全。&#xff08;例如可以实例化一个苹果&#xff0c;但是不能实例化水果&#xff09; 2.一个类可以实现多个接口&#xff0c;但是只能继承一个抽象类 3.如果这个类实现了接…...

中国平安将在2023年出现转机,复苏才刚刚开始

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在解封后股价出现短暂反弹之后&#xff0c;由于市场担忧中国平安&#xff08;02318&#xff09;人寿保险部门新业务NBV&#xff08;用于衡量寿险公司新业务价值的一个重要指标,当一家保险公司的NBV指标越高,那么说明每新增…...

CUDA编程(六):代码分析与调试

CUDA编程&#xff08;六&#xff09;&#xff1a;代码分析与调试 代码分析与调试方法使用printf打印变量信息使用CUDA的错误检查功能使用CUDA-GDB进行调试使用Nsight进行调试使用nvprof / nvvp工具 参考文献 代码分析与调试方法 CUDA代码的运行时可能会遇到内存溢出、内存非法…...

身份鉴别解读与技术实现分析(1)

6.1.4.1 身份鉴别 本项要求包括: a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施 在等级保护体系中,级别越高…...

为什么说7.38万的比亚迪海鸥比仰望更重要

出品 | 何玺 排版 | 叶媛 售价7.38万元起步、速度却能上130迈。注意看&#xff0c;这就是A0级轿车中的“新皇”—比亚迪海鸥。 出乎车圈事前的意料&#xff0c;海鸥这款A0级车型&#xff0c;在上海车展里获得的人气和追捧并不逊色于百万豪车仰望。 01 比亚迪海鸥&#xff0…...

【LLM】低成本部署大语言模型, 并且还能达到部署在GPU上差不多的效果

目录 前言 部署 效果 问题1&#xff1a;人类为什么需要睡觉&#xff1f; 问题2&#xff1a;世界上最高的山峰是什么&#xff1f; 前言 点进来看本文的应该都知道模型对硬件的要求很高, 那我也不废话了, 直接安排最近发现的一个开源项目, 它可以帮助我们降低部署模型的成…...

Doris(25):Doris的函数—Bitmap函数

1 BITMAP_AND(BITMAP lhs, BITMAP rhs) 计算两个输入bitmap的交集,返回新的bitmap. select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(2))) cnt; select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(1))) cnt; 2 BITMAP_CONTAINS(BITMAP bitmap, BIGINT input…...

简单分享微信小程序上的招聘链接怎么做

招聘小程序的主要用户就是企业招聘端和找工作人员的用户端,下面从这两个端来对招聘小程序开发的功能进行介绍。 企业端功能 1、岗位发布:企业根据自身岗位需求,在招聘app上发布招聘岗位及所需技能。 2.简历筛选:根据求职者提交的简历选择合适的简历,并对公开发布的简历进行筛…...

【英语】大学英语CET考试,翻译部分(修饰后置,定语从句,插入语,多动句,无主句)

文章目录 3大知识点与出题形式1、修饰后置&#xff08;使用介词&#xff09;2、修饰后置&#xff08;定语从句&#xff08;被逼无奈&#xff09;/which&#xff08;非限制性&#xff0c;加高级&#xff09;&#xff09;3、修饰后置&#xff08;插入语或同位语&#xff08;只有1…...

设计模式——代理模式

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1、代理模式的基本介绍 2、静态代理 3、JDK动态代理 4、Cglib 代理 5、代理模式 的变体&#xff08;应用场景&#xff09; 1、…...

Shiro-721---漏洞复现

漏洞原理 Shiro rememberMe 反序列化远程代码执行漏洞 由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题&#xff0c;用户可通过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段&#xff0c;并重新请求网站&#xff0c;进…...

Linux【模拟实现C语言文件流】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、FILE 结构设计2、函数使用及分析3、文件打开 fopen4、文件关闭 fclose5、缓…...

APK文件结构

文件结构 assets文件用来存放需要打包到Android 应用程序的静态资源文件&#xff0c;例如图片资源文件&#xff0c;JSON配置文件&#xff0c;渠道配置文件&#xff0c;二进制数据文件&#xff0c;HTML5离线资源文件等 与res/raw目录不同的数&#xff0c;assets目录支持任意深度…...

RabbitMQ死信队列延迟交换机

RabbitMQ死信队列&延迟交换机 1.什么是死信 死信&死信队列 死信队列的应用&#xff1a; 基于死信队列在队列消息已满的情况下&#xff0c;消息也不会丢失实现延迟消费的效果。比如&#xff1a;下订单时&#xff0c;有15分钟的付款时间 2. 实现死信队列 2.1 准备E…...

武忠祥老师每日一题||不定积分基础训练(六)

解法一&#xff1a; 求出 f ( x ) , 进而对 f ( x ) 进行积分。 求出f(x),进而对f(x)进行积分。 求出f(x),进而对f(x)进行积分。 令 ln ⁡ x t , 原式 f ( t ) ln ⁡ ( 1 e t ) e t 令\ln xt,原式f(t)\frac{\ln (1e^t)}{e^t} 令lnxt,原式f(t)etln(1et)​ 则 ∫ f ( x ) d…...

C语言结构体详解

结构体是C语言中的一种高级数据类型&#xff0c;它可以将不同的数据类型组合在一起&#xff0c;形成一个自定义的数据类型。结构体为程序员提供了一种组织数据的方式&#xff0c;它为程序开发带来了极大的灵活性和扩展性。 C语言中的结构体定义如下&#xff1a; struct 结构体…...

非盲去模糊简单介绍

文章目录 非盲去模糊简单介绍基于频域的方法1. Wiener滤波器2. 逆滤波器和半正定滤波器 基于空域的方法1. 均值滤波器2. 高斯滤波器3. 双边滤波器 基于偏微分的方法1. 非线性扩散滤波2. 全变分模型3. Laplacian正则化模型 振铃效应应用总结 非盲去模糊简单介绍 非盲去模糊是一…...

C语言动态内存管理与文件操作:打造高效通讯录

本篇博客会讲解如何使用C语言实现一个通讯录。实现通讯录的过程中&#xff0c;会大量用到C语言的知识点&#xff0c;包括但不限于&#xff1a;函数、自定义类型、指针、动态内存管理、文件操作&#xff0c;这些知识点在我的其他博客中都有讲解过&#xff0c;欢迎大家阅读&#…...

2001-2021年全国30省就业人数数据

2001-2021年全国30省就业人数数据/各省就业人数数据 1、时间&#xff1a;2001-2021年 2、范围&#xff1a;包括30个省市不含西藏 3、指标&#xff1a;就业人数 4、来源&#xff1a;各省NJ、社会统计NJ 5、缺失情况说明&#xff1a;无缺失 6、指标说明&#xff1a; 就业人…...

有app怎么做网站/微商怎么做推广加好友

概述&#xff1a; 有些日子没有正襟危坐写博客了&#xff0c;互联网飞速发展的时代&#xff0c;技术更新迭代的速度也在加快。看着Java、Js、Swift在各领域心花路放&#xff0c;也是煞是羡慕。寻了寻.net的消息&#xff0c;也是振奋人心&#xff0c;.net core 1&#xff0c;mon…...

三级分销网站建设报价方案/seo代做

这篇文章主要介绍了python批量提取图片信息并保存的实现&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧程序运行环境code# -*- coding:utf-8 -*-# ----------------…...

国内做网站公司哪家好/抚顺网站seo

● 把电脑的第一启动项设为USB设备启动以往用光盘装系统&#xff0c;必须调整启动项为光驱启动&#xff0c;而现在我们要用U盘装系统&#xff0c;所以要调整为U盘启动。关于这个&#xff0c;不同电脑不同版本的bios有不同的设置方法&#xff0c;不过都大同小异&#xff0c;目的…...

长武网站建设/亚马逊查关键词搜索量的工具

报错&#xff1a;&#xff08;CHTCollectionViewWaterfallLayout是通过pods添加进来的&#xff09;&#xff0c;然后pods中的其他库都可以编译通过&#xff0c;就是这个库一直找不到。最后得到同事的协助&#xff0c;找到了原因。 ld: library not found for -lCHTCollectionVi…...

自学建设网站/福州网站建设团队

中考语文3500常用汉字七年级上课文篇目 需掌握的字 正确读音 课文篇目 需掌握的字 正确读音为你打开一扇门 憧憬 chōng jǐng 十三岁的际遇 白驹过隙 jū x 裨益 b 蓦然 m 广袤 mo 积攒 zǎn 跌宕 dng 安恬 tin 诠释 qun 樯橹 qing 真谛 d 惆怅 chuchng 繁星 半明半昧 mi 伟人…...

做外贸比较好的网站有哪些/semester

数据结构和算法的关系 数据结构和算法的关系 数据结构是一门研究组织数据方式的学科&#xff0c;有了编程语言也就有了数据结构。学号数据结构可以编写出更漂亮更有效率的代码。程序数据结构算法数据结构是算法的基础&#xff0c;也就是要先学好算法就必须学号数据结构&#x…...