HCIA项目实践---ACL访问控制列表相关知识和配置过程
十 ACL访问控制列表
1 策略的概念
在网络连通之后, 把所有为了追求控制而实现的技术都叫策略
2 访问控制
在路由器流量流入或者流出的接口上,匹配流量,执行相应的动作。(流量流入或者流出的接口并不是一个固定的概念而是一个相对的概念)
用permit允许,deny表示拒绝。
3 匹配感兴趣流
ACL可以和其他的技术或协议结合使用,ACL只负责匹配流量,而其他技术来完成执行的动作。
4 ACL的匹配规则
自上而下,逐一匹配,如果没有匹配上,则继续向下匹配;如果匹配上了,就执行对应的动作,不再向下匹配。
5 不同厂商的匹配规则不同
思科设备:在ACL列表末尾隐含一条拒绝所有的规则。(写允许命令方便)
华为设备:在ACL列表末尾没有隐含规则。(写拒绝命令方便)
6 ACL的分类
基础ACL:仅关注数据包的源IP地址
基础ACL的位置原则:因为它只关心源IP,所以,应该放在越靠近目标的位置,避免对其他网段造成误伤。
高级ACL:不仅关注数据包中的源IP地址,还关注目标IP地址、协议以及端口号。
高级ACL列表的位置原则:因为高级ACL是精准匹配,所以不会出现“误伤”的情况,越靠近源越好,因为可以节约链路资源。
7 ACL的配置
(1)实验环境如下图所示:
用于实现需求一和需求二的拓扑图
A:配置路由器的IP地址
# 配置R1接口的IP地址<Huawei>sys[Huawei]sysname r1[r1]int g 0/0/0[r1-GigabitEthernet0/0/0]ip add 192.168.1.1 24[r1-GigabitEthernet0/0/0]int g 0/0/1[r1-GigabitEthernet0/0/1]ip add 192.168.2.1 24[r1-GigabitEthernet0/0/1]#配置R2接口的IP地址<Huawei>sys [Huawei]sysname r2[r2]int g 0/0/0[r2-GigabitEthernet0/0/0]ip add 192.168.2.2 24[r2-GigabitEthernet0/0/0][r2-GigabitEthernet0/0/0]int g 0/0/1[r2-GigabitEthernet0/0/1]ip add 192.168.3.1 24 [r2-GigabitEthernet0/0/1]
B:配置电脑的IP地址
PC1: 192.168.1.2 掩码:255.255.255.0 网关:192.168.1.1PC2: 192.168.1.3 掩码:255.255.255.0 网关:192.168.1.1PC3: 192.168.3.2 掩码:255.255.255.0 网关:192.168.3.1PC4: 192.168.3.3 掩码:255.255.255.0 网关:192.168.3.1
C:现在需要网络能通(可以写静态,RIP或者OSPF)
# 用静态路由让网络可达[r1]ip route-static 192.168.3.0 24 192.168.2.2[r2]ip route-static 192.168.1.0 24 192.168.2.1
检测网络是否可达:
PC>ping 192.168.3.3Ping 192.168.3.3: 32 data bytes, Press Ctrl_C to breakFrom 192.168.3.3: bytes=32 seq=1 ttl=126 time=63 msFrom 192.168.3.3: bytes=32 seq=2 ttl=126 time=78 msFrom 192.168.3.3: bytes=32 seq=3 ttl=126 time=78 msFrom 192.168.3.3: bytes=32 seq=4 ttl=126 time=78 msFrom 192.168.3.3: bytes=32 seq=5 ttl=126 time=78 ms
D:在网络可达的基础上,做一些控制
需求一: PC1可以访问192.168.3.0/24网段,但是PC2不行
经过分析可知: (1)我们用基础ACL就可以搞定,因为基础ACL只关心“你”是谁,也就是只关心源IP,PC1发送的让通过,PC2发送的不让通过,不需要刚关注PC1或PC2访问的是谁。
(2)如果在R1的0/0/1接口做,需求一虽然能实现,但是如果拓扑图连的后面的更多路由器的话,会造成PC2不能访问后面的所有网段,这就是所谓的”误伤“。
(3)所以,做基础ACL的话,越靠近目标网段越好。
# 完成需求一的配置命令:#一:创建ACL列表[r2]acl 2000[r2-acl-basic-2000]#二:创建规则[r2-acl-basic-2000]rule deny source 192.168.1.3 0.0.0.0(0.0.0.0是通配符,由0和1组成,0对应的位置不可变,1对应的位置可变)(0.0.0.255的意思:只要是192.168.1.几来的信息都会被抓)(通配符不是由连续的1,0组成)#补充:#查看acl列表里规则的命令:[r2-acl-basic-2000]rule permit source any ---允许所有[r2]disp [r2]display acl 2000Basic ACL 2000, 2 rulesAcl's step is 5rule 5 deny source 192.168.1.3 0 rule 10 permit #为什么ACL列表里面是5,10而不是连续数字?注意:华为设备的ACL规则默认以5为步调自动添加序号,目的是为了方便插入或者删除规则[r2]acl 2000[r2-acl-basic-2000]rule 7 deny source 192.168.1.2 0.0.0.0[r2-acl-basic-2000]disp [r2-acl-basic-2000]display acl 2000Basic ACL 2000, 3 rulesAcl's step is 5rule 5 deny source 192.168.1.3 0 rule 7 deny source 192.168.1.2 0 rule 10 permit 如果想删除那个规则,可以用:[r2-acl-basic-2000]undo rule 7[r2-acl-basic-2000]display acl 2000Basic ACL 2000, 2 rulesAcl's step is 5rule 5 deny source 192.168.1.3 0 rule 10 permit # 三:调用 [r2]int g 0/0/1[r2-GigabitEthernet0/0/1]traffic-fil [r2-GigabitEthernet0/0/1]traffic-filter outbound acl 2000
四:测试
PC1可以通:
PC2不可以通:
需求二:PC1可以正常访问PC3,但是不能访问PC4
经过分析可知:这个实验需要用高级ACL做,因为不仅关心你是“谁”(源IP),而且关心目标IP(你要去哪)、协议以及端口号。
高级ACL不会产生“误伤”的情况下,越靠近源IP越好,可节省链路资源。
# 配置需求二的命令#一、创建高级ACL列表[r1]acl name xuqiuer 3000[r1-acl-adv-xuqiuer]#二:创建规则选协议的时候:目的是想让PC1和PC4彻底断开联系,因为很多协议都是基于IP之上的,所以控制IP就可以。[r1-acl-adv-xuqiuer]rule deny ip source 192.168.1.2 0.0.0.0 destination 192.168.3.3 0.0.0.0[r1-acl-adv-xuqiuer]#三、调用[r1]int g 0/0/0[r1-GigabitEthernet0/0/0]traffic-filter inbound acl name xuqiuer[r1-GigabitEthernet0/0/0]
四、测试
需求三 :PC1可以ping通R2,但是不能telnetR2
此时用一台路由器代替PC
# 实现需求三的配置# 一、开启PC2的Telnet服务功能[r2]aaa[r2-aaa]local-user zhenzhen privilege level 15 password cipher 202419 ---创建用户名和密码Info: Add a new user.[r2-aaa]local-user zhenzhen service-type telnet ---添加telnet服务类型[r2-aaa][r2-aaa]q[r2]user-interface vty 0 4 ---开启0到4五个vty虚拟登录端口[r2-ui-vty0-4]authentication-mode aaa ---按照aaa的方式进行认证[r2-ui-vty0-4]# 二、为了显示效果,用路由器模拟一台电脑[zhenzhen]int g 0/0/0[zhenzhen-GigabitEthernet0/0/0]ip add 192.168.1.10 24 ---配置IP地址[zhenzhen-GigabitEthernet0/0/0]# 三、由于没有路由,所以需要写一条缺省路由,不限制目标,把数据包给R1,让它帮忙转发。(跨网段通信)[zhenzhen]ip route-static 0.0.0.0 0 192.168.1.1(做完缺省,此时就可以通了)# 四、开始远程登录操作<zhenzhen>telnet 192.168.2.2Press CTRL_] to quit telnet modeTrying 192.168.2.2 ...Connected to 192.168.2.2 ...Login authenticationUsername:zhenzhenPassword:# 五、拒绝PC1的telnet服务注意:telnet协议是基于tcp的,实现需求三不能telnet服务,策略上也是利用高级ACLr1-acl-adv-3001]rule deny tcp source 192.168.1.10 0.0.0.0 destination 192.168.2.2 0.0.0.0 destination-port eq 23不是1.10给2.2发送的所有tcp流量都取消,而是取消tcp里面的telnet流量,所以后面的目标端口号要写,并且eq表示等于目标端口号。# 六、调用(一个接口的一个方向只能调用一张ACL列表,为了做这个实验先牺牲一下上面的ACL列表)[r1]int g 0/0/0[r1-GigabitEthernet0/0/0]undo traffic-filter inbound[r1-GigabitEthernet0/0/0]traffic-filter inbound acl 3001# 七、不能进行telnet服务,但是能ping通<zhenzhen>telnet 192.168.2.2Press CTRL_] to quit telnet modeTrying 192.168.2.2 ...Error: Can't connect to the remote host<zhenzhen>ping 192.168.2.2PING 192.168.2.2: 56 data bytes, press CTRL_C to breakReply from 192.168.2.2: bytes=56 Sequence=1 ttl=254 time=70 msReply from 192.168.2.2: bytes=56 Sequence=2 ttl=254 time=50 msReply from 192.168.2.2: bytes=56 Sequence=3 ttl=254 time=50 msReply from 192.168.2.2: bytes=56 Sequence=4 ttl=254 time=70 msReply from 192.168.2.2: bytes=56 Sequence=5 ttl=254 time=50 ms
相关文章:
HCIA项目实践---ACL访问控制列表相关知识和配置过程
十 ACL访问控制列表 1 策略的概念 在网络连通之后, 把所有为了追求控制而实现的技术都叫策略 2 访问控制 在路由器流量流入或者流出的接口上,匹配流量,执行相应的动作。(流量流入或者流出的接口并不是一个固定的概念而是一个相对的…...
机器学习核心算法解析
机器学习核心算法解析 机器学习是人工智能的核心技术之一,它通过从数据中学习模式并做出预测或决策。本文将深入解析机器学习的核心算法,包括监督学习、无监督学习和强化学习,并通过具体案例和代码示例帮助读者理解这些算法的实际应用。 1. …...
Oracle 12c 并发统计信息收集功能:技术解析与实践指南
一、功能背景与核心价值 在Oracle数据库的早期版本中,统计信息收集(如通过DBMS_STATS包)是串行执行的,即一次仅处理一个表或分区。对于大规模数据库或数据仓库环境,这种串行模式可能导致统计信息收集耗时过长…...
Android Studio:EditText常见4种监听方式
1. 文本变化监听(TextWatcher) TextWatcher 主要用于监听 EditText 里的文本变化,它有三个方法: beforeTextChanged(文本变化前)onTextChanged(文本正在变化时)afterTextChanged&a…...
【第2章:神经网络基础与实现——2.3 多层感知机(MLP)的构建与调优技巧】
在当今科技飞速发展的时代,人工智能早已不是一个陌生的词汇,它已经渗透到我们生活的方方面面,从智能语音助手到自动驾驶汽车,从图像识别到自然语言处理。而支撑这一切的核心技术之一,就是神经网络。作为机器学习领域的璀璨明星,神经网络已经在众多任务中取得了令人瞩目的…...
C++ 网络编程
1. socket Socket 是一种用于网络通信的编程接口,它提供了一种类似于文件描述符的接口,允许不同计算机之间的进程进行通信。Socket 可以工作在多种协议上,最常用的是 TCP/IP 和 UDP/IP 协议 1.1 UDP 1.1.1 概念 UDP(用户数据报协…...
SQL-leetcode—1683. 无效的推文
1683. 无效的推文 表:Tweets ----------------------- | Column Name | Type | ----------------------- | tweet_id | int | | content | varchar | ----------------------- 在 SQL 中,tweet_id 是这个表的主键。 content 只包含美式键盘上的字符&am…...
vue前端可视化大屏页面适配方案
参考了其他博主的代码,但发现会有滚动条,并且居中的位置不太对,所以改了一下css,修复了这些问题,直接上代码 <template> <div class"ScaleBoxA"><divclass"ScaleBox"ref"Sca…...
mars3d接入到uniapp的时候ios上所有地图的瓦片都无法加载解决方案
用的是【Mars3d】官网的uniapp的仓库,安卓没有问题,但是ios的不行 相关链接 mars3d-uni-app: uni-app技术栈下的Mars3D项目模板 解决方案:感觉所有图片请求全被拦截了 uniapp的ios内核不允许跨域,需要先把瓦片下载后转base64&…...
Dockfile语法
目录 dockerfile的作用 1. 构建 Docker 映像 2. 提高开发和运维效率 3. 版本控制 4. 提供可移植性和灵活性 使用示例 总结 dockerfile应该放的位置 为什么放在根目录? 例外情况 调用构建 dockerfile的基本结构和常用指令 基本结构和常用指令 示例 Dock…...
Nginx负载均衡
一。Nginx负载均衡的算法以及过程 二。nginx四层负载均衡的配置(四层) 1.vi /etc/nginx/conf.d/lb.conf 比较常见:weight:设置权重,backup:当其他主机全部用不了,这个作为备份 2.systemctl r…...
【C】初阶数据结构5 -- 栈
前面学习了两种最基本的数据结构 -- 顺序表和链表,接下来就可以基于这两种数据结构来实现其他数据结构了。其实,其他的数据结构的物理结构要么是数组,要么就是链表,所以学好顺序表和链表是学好其他数据结构的基础。接下里…...
Linux查找占用的端口,并杀死进程的简单方法
在Linux系统管理中,识别并管理占用特定端口的进程是一项常见且重要的任务。以下是优化过的步骤指南,帮助您高效地完成这一操作,同时提供了一个简洁的命令参考表。 Linux下识别并终止占用端口的进程 1. 探寻端口占用者 使用 lsof命令 lsof…...
为什么Pytorch中实例化模型会直接调用forward方法?
在 PyTorch 中,为何定义一个继承自 nn.Module 的自定义类并实现 forward 方法后,直接调用模型实例时,便会自动调用其 forward 方法?例如使用 output model(x) 这种形式。 因为自定义的神经网络类所继承的 nn.Module 类对 __call_…...
easyexcel快速使用
1.easyexcel EasyExcel是一个基于ava的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel 即通过java完成对excel的读写操作, 上传下载 2.easyexcel写操作 把java类中的对象写入到excel表格中 步骤 1.引入依赖 <depen…...
DeepSeek的出现会对百度有多大影响?
当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 01 传统搜索已死?AI助手正在重写游戏规则! 当DeepSeek与ChatGPT等大模型接管搜索入口,我们正见证百年一遇的信息革命。 就像汽车淘汰马车、触屏终结按键…...
生成格雷码
以下是Verilog实现格雷码的两种常见方法: 1. 二进制转格雷码(组合逻辑实现) module binary_to_gray #(parameter N 4 // 默认4位位宽 )(input [N-1:0] binary, // 二进制输入output [N-1:0] gray // 格雷码输出 );assign gray binary…...
【STM32】BootLoader和IAP详解
文章目录 0 前言1 基本概念2 BootLoader3 主程序相关配置4 相关理论:芯片启动与中断响应5 特殊情况:Cortex-M0内核的芯片 0 前言 最近在研究一个RT-Thread的项目,遇到很多之前没咋遇见过的STM32相关的知识,想着顺带也整体过一遍。…...
Threadlocal的实现原理
文章目录 ThreadLocal与Thread关系分析Threadlocal 不支持继承性lnheritableThreadLocal 类 ThreadLocal与Thread关系分析 由该图可知, Thread 类中有一个 threadLocals 和一个 inheritableThreadLocals , 它们 都是 ThreadLocalMap 类型 的变量 &#x…...
【Elasticsearch】多字段查询方式汇总
在 Elasticsearch 中,实现多字段查询的常见方式有以下几种,每种方式适用于不同的场景: --- ### 1. **multi_match 查询** - **用途**:在多个字段中执行同一查询,支持多种匹配策略。 - **关键参数**:…...
Unity使用反射进行Protobuf(CS/SC)协议,json格式
protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…...
MySQL和SQL server的区别
在当今数据驱动的世界里,数据库技术的选择对于企业和个人开发者来说至关重要。MySQL 和 SQL Server 是两个广泛使用的数据库管理系统(DBMS),它们各自拥有独特的优势和适用场景。本文将深入探讨这两个数据库系统之间的区别…...
SpringMVC请求执行流程源码解析
文章目录 0.SpringMVC九大内置组件1.processRequest方法1.请求先到service方法2.然后不管是get还是post都会跳转到processRequest方法统一处理 2.doService方法3.doDispatch方法1.代码2.checkMultipart 4.核心流程 0.SpringMVC九大内置组件 1.processRequest方法 1.请求先到se…...
LabVIEW与小众设备集成
在LabVIEW开发中,当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求,而厂家虽然提供了配套软件,但由于系统中还需要控制其他设备且不能使用厂商的软件时,必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中࿰…...
docker-compose暴露端口,但其他主机无法访问问题。
问题描述:docker-compose暴露端口,但其他主机无法访问问题。 排障思路: 执行命令:ss -antlp | grep 80,发现端口正常监听0.0.0.0:80(ps:如果是127.0.0.1:80则只能本机访问同区域网段服务器执行…...
【MySQL】 基本查询(上)
欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】 基本查询(上) 发布时间:2025.2.14 隶属专栏:MySQL CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 目录 Create基…...
python 爬虫教程 0 基础入门 一份较为全面的爬虫python学习方向
文章目录 前言一、Python 爬虫简介二、环境搭建1. 下载 Python2. 安装 Python3. 安装必要的库 三、一个简单的爬虫示例四、应对网站反爬机制五、深入学习方向 前言 以下是一份较为全面的 Python 爬虫教程,涵盖基础知识、环境搭建、简单示例、反爬应对及深入学习方向…...
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证 一HttpsUtil工具类二SSLUtil工具类 一HttpsUtil工具类 package com.example.util;import javax.net.ssl.HttpsURLConnection; impo…...
你认为如何理解“约定大于配置”?
SpringBoot的“约定大于配置”(Convention Over Configuration)是一种核心理念,旨在简化开发过程,减少开发人员在配置上的繁琐工作。以下是对其含义的详细介绍: 一、定义与目的 定义:约定优于配置&#x…...
Linux 基础IO——重定向和缓冲区
目录 一、重定向 1、重定向的本质 2、使用 dup2 系统调用 (1)输出重定向 (2)追加重定向 (3) 输入重定向 二、缓冲区 1.理解缓冲区 2.缓冲区刷新问题 3.为什么要有缓冲区? 4.这个缓冲区在哪里ÿ…...
基于若依开发的工程项目管系统开源免费,用于工程项目投标、进度及成本管理的OA 办公开源系统,非常出色!
一、简介 今天给大家推荐一个基于 RuoYi-Flowable-Plus 框架二次开发的开源工程项目管理系统,专为工程项目的投标管理、项目进度控制、成本管理以及 OA 办公需求设计。 该项目结合了 Spring Boot、Mybatis、Vue 和 ElementUI 等技术栈,提供了丰富的功能…...
华为云之CodeArts IDE的使用体验
一、CodeArts IDE介绍 1.1 CodeArts IDE简介 CodeArts IDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开发者提供的智能化可扩展桌面集成开发环境(IDE),结合华为云行业和产业开发套件,实现…...
DeepSeek-VL2 环境配置与使用指南
DeepSeek-VL2 环境配置与使用指南 DeepSeek-VL2 是由 DeepSeek 公司开发的一种高性能视觉-语言模型(VLM)。它是 DeepSeek 系列多模态模型中的一个版本,专注于提升图像和文本之间的交互能力。 本文将详细介绍如何配置 DeepSeek-VL2 的运行环…...
超纯水设备的智能化控制系统为用户带来安全简便的操作体验
随着信息技术的发展,智能化已经成为工业装备的重要发展方向之一。超纯水设备在这方面也走在了前列,配备了高性能的PLC控制系统及人机交互界面,实现了全方位的智能监控和自动化操作。本文将重点介绍该设备的智能化控制系统,探讨它如…...
若依系统环境搭建记录
开源若依系统网上资料也很全的,本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了,直接用vscode作为编辑器,后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可࿱…...
基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南
基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南 禅道镜像版本:easysoft/zentao:21.4 Redis版本:redis:6.2.0 Mysql版本:mysql:8.0.35 文章目录 **基于Docker-compose的禅道部署实践:自建MySQL与…...
为AI聊天工具添加一个知识系统 之102 详细设计之43 自性三藏 之3 祖传代码
本文要点 法宝和三藏 总括如下: 三藏[经/律/论] 法宝:法阵/法轮/法力(三“件” 证件 / 表件 / 物件 ,分别对应三藏:论藏/律藏/经藏 --反序)。“法宝”演示了 发轮轮转的法阵中物件具有的法力。 这里的“…...
fork: retry: No child processes-linux18
根据错误信息 fork: retry: Resource temporarily unavailable 和 sh: fork: retry: No child processes,这通常是因为系统资源不足(例如可用的进程数、内存或 CPU 限制)导致的。为了解决这个问题,您可以尝试以下几种方法…...
渗透测试--文件包含漏洞
文件包含漏洞 前言 《Web安全实战》系列集合了WEB类常见的各种漏洞,笔者根据自己在Web安全领域中学习和工作的经验,对漏洞原理和漏洞利用面进行了总结分析,致力于漏洞准确性、丰富性,希望对WEB安全工作者、WEB安全学习者能有所帮助…...
【物联网】电子电路基础知识
文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…...
vue学习10
1.GPT和Copilot Copilot Tab接受 删除键,不接受 ctrlenter更多方案 更适合的是修改方向 const submitForm async () > {//等待校验结果await formRef.value.validate()//提交修改await userUpdateInfoService(form.value)//通知user模块,进行数据更…...
【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…...
LeetCodehot100 力扣热题100 二叉树展开为链表
代码思路 目标: 将二叉树展平(flatten)为一个单链表。展平后的链表应该按照前序遍历的顺序排列节点,即: • 节点的左子树指针设置为 nullptr。 • 节点的右子树指针指向下一个节点。 代码注释及思路 class Solution…...
备战蓝桥杯 Day1 回顾语言基础
开启蓝桥杯刷题之路 Day1 回顾语言基础 1.配置dev 工具->编译选项->勾选编译时加入以下命令->设定编译器配置(release和debug)都要-> -stdc11 ->代码生成/优化->代码生成/优化->语言标准(-std)->ISO C11 ->代码警告->显示最多警告信息(-Wall)…...
基于Ceedling的嵌入式软件单元测试
Ceedling 如果你使用 Ceedling(一个针对 C 代码单元测试的构建管理器),可以更方便地管理测试。Ceedling 会自动处理 Unity 和 CMock 的集成,无需手动编写 Makefile。 1.环境搭建 1.1 Ruby环境 sudo apt-get install ruby1.2 安…...
聊一聊FutureTask源码中体现的“自旋锁”思想
前言 这篇文章记录了笔者自己对FutureTask的部分源码设计的思考与心得,属于笔者自己的观点,若有哪位热爱源码研究的同仁觉得我说的不对,欢迎批评指正。 提示:在阅读之前必须对FutureTask的源码和实现原理有一定的了解。本文要聊…...
自有证书的rancher集群使用rke部署k8s集群异常
rancher使用自签域名,或者商业证书容易踩到的坑。 最开始的报错: docker logs kubelet‘s id E0214 13:04:14.590268 9614 pod_workers.go:1300] "Error syncing pod, skipping" err"failed to \"StartContainer\" for …...
LabVIEW外腔二极管激光器稳频实验
本项目利用LabVIEW软件开发了一个用于外腔二极管激光器稳频实验的系统。系统能够实现激光器频率的稳定控制和实时监测,为激光实验提供了重要支持。 项目背景: 系统解决了外腔二极管激光器频率不稳定的问题,以满足对激光器频率稳定性要求较高…...
使用docker compose启动postgres并设置时区
设置PostGres时区 方法 1: 使用 POSTGRES_INITDB_ARGS 设置时区方法 2: 使用初始化脚本设置时区创建 init-user-db.sql更新 docker-compose.yml 启动服务 要在启动 PostgreSQL 数据库时设置时区,可以通过在 docker-compose.yml 文件中添加环境变量或通过配置文件来实…...
杜绝遛狗不牵绳,AI技术助力智慧城市宠物管理
在我们的生活中,宠物扮演着越来越重要的角色。然而,随着养宠人数的增加,一系列问题也随之而来,如烈性犬伤人、遛狗不牵绳、流浪犬泛滥等。这些问题不仅影响了社会秩序,也给宠物本身带来了安全隐患。幸运的是࿰…...