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

使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋

目录

1.工具以及概念介绍

(1)Clion软件简介

(2)交叉编译

(3)远程编译

2.操作原理

3.详细操作步骤

(1)配置Clion与虚拟机ubuntu的ssh连接

CLion远程开发Ubuntu,并显示helloworld文字框

(2)宿主机环境搭建

(3)编译出现 File in wrong format问题

(4)开发板环境配置搭建

(5)挂载出现错误

出错原因:

1.电脑与开发板之间以太网没有连接

2..电脑PC端的WiFi没有禁止,电脑PC端的以太网没有设定为192.168......IPv4的形式

3.虚拟机与PC端的ip地址没有同步

4.虚拟机没有设置为桥接模式

5.虚拟机、宿主机、PC端以太网没有处于同一网段上。

192.168.12.1与192.168.12.2与192.168.12.200都是同一网段

6.在宿主机环境搭建的第四步 

  编辑 NFS导出配置文件/etc/exports ,  添加希望共享的目录中,GEC6818 的 IP地址仍然为 192 . 168 . 1 . 100,要进行改变 

问题解决

1.配置windows11 以太网默认ip为192.168.......

2.设定开发板、虚拟机ip地址与桥接模式

3.NFS权限不够

总结:

     使用Clion通过ssh在ubuntu上进行交叉编译还有远程编译对于一名嵌入式工程师来说,是我们学习Linux不可多得的神兵利器。利用Clion强大的自动补齐,我们可以节省非常多的查找函数的时间,此外Clion还支持多项目打开的功能,可以在一个文件夹下创建多个项目,这无疑是非常哇塞的(只有玩过Qt才知道这有多么强大~~)。而且,Clion还可以通过SSH进行连接,还有Cmake进行交叉编译,交叉编译的教程我以前发布过。

      综上所述,我们才要掌握这一能力,学会使用Clion进行交叉和远程编译!

1.工具以及概念介绍

(1)Clion软件简介

        CLion 是 JetBrains 开发的一款跨平台集成开发环境(IDE),主要用于 C 和 C++ 编程。它在开发中提供了许多强大的功能,以帮助程序员更加高效地编写和管理代码。他不仅能提供提供代码补全、快速导航和实时错误检测,帮助开发者提高编程效率;还能使用 CMake 作为项目构建系统,可以轻松管理项目依赖,支持多种构建配置。

       特别是对Cmake的支持,使Clion能进行多项目编译,而且可以进行跨平台编译,比如用Clion在ubuntu上进行QT的交叉编译,就是CMake发挥了作用。

       综上:CLion 适用于个人项目、商业开发和大型团队合作,特别适合需要进行 C/C++ 开发的开发者和工程师。如果你对嵌入式系统或系统软件开发感兴趣,CLion 也是一个非常好的选择。

(2)交叉编译

        交叉编译是一种编程技术,它允许在一种平台上(通常是性能更强的开发环境)编译生成适用于另一种平台(通常是硬件资源有限的目标设备)的程序。简单来说,就是在一个系统上为另一个系统创建可执行文件。

       我们这里使用交叉编译,是在ubuntu虚拟机上编译出可以在开发板上跑的程序,它所使用的编译器是Qt,他是跨平台的,使用的工具是Clion中的CMake。

      通过交叉编译,开发者能够在开发环境中完成大部分工作,而无需直接在目标设备上进行编译,这样大大提高了开发效率。

(3)远程编译

      远程编译是一种编程技术,允许开发者在本地机器上编写和构建代码,但实际的编译过程在远程服务器或其他计算机上进行。这种方法通常用于需要大量计算资源或特定环境的应用开发,尤其在大型项目或跨平台开发中非常有用。

     对于开发板来说,远程编译可以有效的延长开发板的使用寿命(可能不准~听老师说的),由于对于部分Linux而言,其性能有限,不能直接运行编译器,所以远程编译也就孕育而生,而会不会远程编译对于嵌入式程序员而言也是核心竞争力的一种象征!

2.操作原理

    我们利用Clion搭建好于虚拟机的ssh连接,在Clion的终端里登录虚拟机,再将虚拟机当做宿主机(我使用的虚拟机仅仅安装了必要的开发工具,比如arm-linux-gcc),通过交叉编译,使用Clion自带的CMake配置arm开发板所要用的gcc,完成在ubuntu虚拟机中arm-gcc项目的编译,通过nfs共享宿主机上的共享文件夹,远程运行程序,即可在开发板上远程编译,运行项目。

   特别指出:要能支持qt(arm版本的)。因此最重要的两件事:要启动nfs服务,安装cmake(因为ubuntu上预装的linux版本的Ot creator共享版并不是使用的cmake工具,而是使用的qmake,qt公司自己的)。

3.详细操作步骤

(1)配置Clion与虚拟机ubuntu的ssh连接

过程如下:

CLion远程开发Ubuntu,并显示helloworld文字框

(2)宿主机环境搭建

1.打开终端

2.使用文本编辑器  (如 nano vim)  打开 sources. list 文件。  这里以 nano 为例 :

sudo nano /etc/apt/sources.list     

3.在文件的末尾添加您提供的源。 您可以直接复制并粘贴以下内容:

deb Index of /ubuntu/ trusty main restricted universe multiverse

deb Index of /ubuntu/ trusty-updates main restricted universe multiverse

deb Index of /ubuntu/ trusty-security main restricted universe multiverse

这里是使用了中科大的镜像源。

 4.保存并退出编辑器。  在 nano  ,   您可以按ctrl + O 保存文件 ,  然后按 ctrl + X退出。

5.更新软件包列表以使更改生效:

sudo apt-get update

 要在 ubuntu 14. 04上为 GEC6818 嵌入式开发板(本次使用的开发板)建立 NFS  (网络文件系统)  服务 ,   可以按照以下步骤进行操作: 

      1 . 安装 NFS服务器首先需要安装 NFS 服务器软件包。  打开终端并运行以下命令:

 sudo apt-get update

sudo apt-get install nfs-kernel-server

     2. 创建共享目录选择一个目录作为 NFS共享目录。  例如 ,   可以在"," 目录下创建一个名为 /nfs 的目录:

sudo mkdir /nfs

    3. 设置目录权限根据需要设置共享目录的权限。  例如 ,   可以将权限设置为所有用户可读写:

 sudo chmod 777 /nfs

   4. 配置 NFS 导出 

       编辑 NFS导出配置文件/etc/exports ,  添加希望共享的目录。  使用文本编辑器打开文件:

sudo nano /etc/exports

      在文件末尾添加以下行  (假设 GEC6818  IP地址为 192 . 168 . 1 . 100 ,   请根据实际情况修        改)   : 

/nfs 192.168.1.100(rw,sync,no_subtree_check)

rw:  允许读写。

sync:  同步写入。

no  subtree check:  不检查子目录。

注意:  保存并退出操作:  在 nano  ,  ctrl + O保存文件 ,  然后按 ctrl + X退出。 

  5 .导出共享目录

      运行以下命令以使更改生效:

sudo exportfs -a

6 .启动 NFS 服务确保 NFS服务正在运行:

sudo service nfs-kernel-server restart

sudo service nfs-kernel-server status

7 . 配置防火墙  (如果适用)   如果您使用防火墙 ,  请确保允许 NFS流量。 可以使用以下命令允许 NFS 端口 :

sudo ufw allow from 192.168.1.100 to any port nfs

8 .GEC6818 开发板上挂载 NFS共享

mount -t nfs -o nolock 192.168.20.108:/nfs /mnt

通过以上步骤 ,  能够成功启动 NFS 服务并共享目录 ,  这是我们搭建远程运行环境的第一步。 

接下来我们要安装cmake ,  这个比较简单: 

 sudo apt-get update

sudo apt-get install cmake

 这个两条命令能成功安装cmake2 . 12的版本

接下来我们要启动ssh服务 ,  首先还是要安装openssH服务器

1 、安装 openssH 服务器如果尚未安装 openssH 服务器 ,  您可以使用以下命令进行安装:

 sudo apt-get update

sudo apt-get install openssh-server

2 启动 SSH 服务安装完成后 ,  您可以使用以下命令启动 SSH 务:

 sudo service ssh start

3 检查 SSH 服务状态您可以使用以下命令检查SSH 服务的状态:

sudo service ssh status

4、配置防火墙  (如果适用)   如果您使用防火墙 ,  请确保允许SSH 流量。可以使用以下命令允许SSH 端口   (默认是22)  :

sudo ufw allow ssh

5 验证 SSH 连接

       我之前第一步的操作完成以后,ssh连接时已经连接好了的。

6、 确认Cmake与gcc还有Debuggen的配置

    一定要是已连接宿主机中有,且它与编译的文件的格式息息相关,若gcc为minigui,则只能在虚拟机上运行,不能在开发板上运行,如果是arm-gcc,则只能在开发板上运行,不能在虚拟机上运行,它与运行环境中的库息息相关。

7、 在Clion中编译项目

 特别注意 ,  你的cmakeLists.txt应该参考下面的形式。

cmake_minimum_required(VERSION 2.8)
project(FIve)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)set(CMAKE_PREFIX_PATH "/opt/qtlib560_base")  # 或者使用 /opt/qtlib560_base
# Qt
find_package(Qt5 COMPONENTSCoreGuiWidgetsREQUIRED)
#
include_directories(/opt/qtlib560_base/include)# 或者使用 /opt/qtlib560_base/include
link_directories(/opt/qtlib560_base/qtarm560/lib)# 或者使用 /opt/qtlib560_base/includeqt5_add_resources(QT_RESOURCES FiveChess/resources.qrc)
add_executable(FiveChessMain ${QT_RESOURCES} FiveChess/main.cppFiveChess/fivechesswidget.cpp FiveChess/fivechesswidget.h )
target_link_libraries(FiveChessMainQt5::CoreQt5::GuiQt5::Widgets
)

进入Clion与虚拟机中映射的文件夹,将文件部署后,进行ls,即可看到Clion中的文件已经全部部署到虚拟机中的映射地址里。

在cmake ./与make之后,正常不会出现error,之后ls,即可看到绿色可执行文件。

(部署,进入映射地址,cmake ./与make都在第一步的连接里有所讲述这里不多赘述)

(3)编译出现 File in wrong format问题

该英文的翻译是文件格式错误,是由于所链接的库的格式与要编译的文件格式不匹配所导致的。

下面是错误原因:

1、CMakeList.txt文件中没有按照我给的标准来,有函数错误或路径错误。比如

link_directories(/opt/qtlib560_base/qtarm560/lib)代码出现错误

2、在Toolchains中C++ Compiler等gcc没有按照我给出的环境配置,或配置错误。

下面是解决方法:

1、检测CmakeList.txt,寻找相应的库,查看相应资料,以防止连接的库与可执行文件不匹配。

2、检测gcc配置

3、更换项目文件地址(比如将放在F盘的项目换到D盘,在重复操作编译,神奇的是,我周围很多同学都是这样解决的)

(4)开发板环境配置搭建

连接开发板串口:

下面用SecureCRT软件通过serial串口与开发板连接

SecureCRT软件连接如下,下载后直接打开

通过网盘分享的文件:05_CRT
链接: https://pan.baidu.com/s/1Vt18AY5OSykrUPvDtxXA6A 提取码: ma56

特别注意,使用SecureCRT时,如果连接不上,

1.检查串口线是否连接成功

2.将波特率调到9600连接成功后断开,再将波特率调制115200后建立连接

3.如果显示连接,但没有出现 [root@GEC6818 /]# 按 Ctrl+c

步骤如下:

执行程序以后,即可看到程序在开发板上执行。

(5)挂载出现错误

出错原因:

1.电脑与开发板之间以太网没有连接

2..电脑PC端的WiFi没有禁止,电脑PC端的以太网没有设定为192.168......IPv4的形式

3.虚拟机与PC端的ip地址没有同步

4.虚拟机没有设置为桥接模式

5.虚拟机、宿主机、PC端以太网没有处于同一网段上。

192.168.12.1与192.168.12.2与192.168.12.200都是同一网段

6.在宿主机环境搭建的第四步 

  编辑 NFS导出配置文件/etc/exports ,  添加希望共享的目录中,GEC6818  IP地址仍然为 192 . 168 . 1 . 100,要进行改变 

问题解决

1.配置windows11 以太网默认ip为192.168.......

(1)搜索控制面板

(2)点击查看网络状态和任务

(3)右键以太网,进入状态

(4)点击属性后,双击下面蓝色选项

即可设定制定ip地址

2.设定开发板、虚拟机ip地址与桥接模式

(1)桥接模式在虚拟机设置中可以更改

(2)更改虚拟机IP地址

打开虚拟机终端,敲入下列命令并执行

sudo ifconfig eth0 192.168.xxx.xxx

输入root密码(开机密码)即可更改IP地址

备注eth0是有线网络的意思

(3)更改开发板IP地址

在SecureCRT连接后,敲入下列命令并执行

ifconfig eth0 192.168.xxx.xxx

注意他们的ip地址网段要一样

(4)验证虚拟机与开发板是否连接

在开发板ping 宿主机的IP地址

或在宿主机ping开发板的ip地址

指令如:ping 192.168.54.152

3.NFS权限不够

重复宿主机配置中步骤4的操作,再重行进行mount挂载

总结:

     嵌入式这一行,如我老师所说,重要的是胆大心细,要编程习惯好,单单将过程做一遍是没有用的,更何况把答案给人抄都有可能抄不来,上面的项目光光是配置我就配置了几天,总是出现这样或那样的问题,更何况这仅仅是配置。但难也有难的好处,没有门槛我还不来呢,嘿嘿。

    希望我的文章可以帮助到大家,也希望大家能越学越好!

相关文章:

使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋

目录 1.工具以及概念介绍 (1)Clion软件简介 (2)交叉编译 (3)远程编译 2.操作原理 3.详细操作步骤 (1)配置Clion与虚拟机ubuntu的ssh连接 CLion远程开发Ubuntu,并显…...

高并发写利器-组提交,我的Spring组件实战

高并发写优化理论 对于高并发的读QPS优化手段较多,最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升?业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大,涉及迁移数据的麻烦工作,不会作为…...

Stable Diffusion的简单介绍

Stable Diffusion 是一款免费、开源的 AI 图像生成器,由 Stability AI 公司于 2022 年 8 月推出1。以下是关于它的详细介绍: 目录 工作原理 特点 应用场景 主要版本 工作原理 Stable Diffusion 属于潜在扩散模型,主要由三部分组成&…...

R语言的数据结构

R语言的数据结构 R语言是专门为统计计算和数据分析而设计的一种编程语言,因其强大的数据处理能力而受到广泛欢迎。在R中,数据结构是理解和有效使用R语言的基础。本文将详细介绍R语言中的主要数据结构,包括向量、矩阵、数据框、列表、因子等&…...

go项目zero框架中用gentool解决指定MYSQL表生成结构体被覆盖的解决方案

在使用 GoZero 框架进行项目开发时,gentool 是一个非常方便的工具,它可以根据数据库表结构自动生成 Go 语言结构体和其他相关文件。然而,在使用 gentool 生成结构体时,可能会遇到一个问题:如果多次运行 gentool&#x…...

限时特惠,香港服务器,低至53元/年

家人们谁懂啊!香港服务器这价格简直逆天了,居然比内地的还便宜!就拿阿里云来说,人家最低配置的服务器,价格都很难做到这么亲民。 最低配的就不说了,2 核 4G 的配置,应对日常业务稳稳当当&#x…...

【GUI-pyqt5】QObject类

1. QObject模块详解 1.1 描述 所有Qt对象的父类 1.2 功能和作用 1.2.1 对象名称和属性 1.2.1.1 API API功能备注 setObjectName("唯一名称") 给一个Qt对象设置一个名称 一般这个名称是唯一的,当做对象ID来使用 objectName() 获取一个对象名称 - set…...

第2章:SQL基础

第2章:SQL基础 2.1 SQL语言介绍 2.1.1 SQL发展历史 SQL的起源SQL标准的演变不同数据库的SQL实现 2.1.2 SQL语言分类 数据定义语言 (DDL):用于定义和修改数据库的结构,包括数据库、表、索引、视图等对象的创建、修改和删除。数据操作语言 (DML):用于…...

Azkaban其一,介绍、体系架构和安装

目录 一、简介 二、Azkaban的体系结构 三、Azkaban的安装步骤 1、上传,解压 2、生成mysql的元数据 3、配置web-server 4、配置exec-server 5、修改所有的.sh 的执行权限 一、简介 遇到了什么问题才会使用Azkaban ?比如: 想启动hadoop集群先启动…...

Seata 使用教程:全面解锁分布式事务管理

Seata 使用教程:全面解锁分布式事务管理 在当今分布式系统蓬勃发展的时代,微服务架构被广泛应用,随之而来的是分布式事务管理的难题。Seata 作为一款开源的分布式事务解决方案,为保障分布式系统的数据一致性提供了强有力的支持。本文将详细讲解 Seata 的使用方法,深入剖析…...

《learn_the_architecture_-_aarch64_exception_model》学习笔记

1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比…...

密码学原理技术-第十一章-Hash Functions

文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…...

Golang 入门基础知识

快速入门 go 语言笔记,参考了各种大佬的 blog 。 一、下载安装 国内站点 :https://golang.google.cn IDE : Goland (2020.12月以后破解有些困难 见 zhile.io, 无法试用的话可以搜一个注册码,失效的也可以&…...

SQL把字符串按逗号分割成记录

在 SQL 中,可以通过以下方法将字符串按逗号分割,并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法: 1. 使用 STRING_SPLIT(SQL Server 2016) STRING_SPLIT 是 SQL Server 提供的内置…...

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…...

TIM的输出比较(PWM)

OC&#xff08;Output Compare&#xff09;输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系&#xff0c;来对输出电平进行置1、置0或翻转的操作&#xff0c;用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 初始化 1.开启RCC RCC_…...

李宏毅机器学习笔记-Transformer

目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列&#xff0c;输出也是一个序列&#xff0c;输出的长度是由机器自己…...

【机器学习:三、常见的代价函数】

代价函数的选择与任务类型&#xff08;回归、分类等&#xff09;以及模型的具体目标密切相关。 回归任务中的代价函数 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 公式: J ( θ ) 1 m ∑ i 1 m ( y i − y ^ i ) 2 J(\theta)\frac{1}{m}\sum_{i1}^m(y_i-\…...

React 数据是怎样传递的

写在前面 在 React 应用程序中&#xff0c;数据传递是非常重要的。它允许我们在组件之间共享信息和状态&#xff0c;从而构建出复杂的用户界面。本文将深入探讨 React 中的数据传递机制&#xff0c;包括 props、state 和 context API。我们还将通过实际例子来演示如何在项目中…...

Python入门教程 —— 高阶函数和装饰器

1.递归函数 什么是递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n 解决办法1:使用循环来完成 def cal(num):result,i = 1,1while i <= num:result *= ii…...

RSA密码的安全性分析(简化版本)

RSA的安全性是基于分解大整数的困难性假定&#xff0c;之所以认为是假定是因为至今还未能证明大整数就是NP问题&#xff0c;也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高&#xff0c;原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...

解决Vue中设置el-select的高度不生效问题

el-select是Element UI框架中的一个选择器组件&#xff0c;它允许用户从多个选项中选择一个或多个项目。但这里确存在一个小坑&#xff0c;我们可以看到直接修改el-select的高度是无法生效的 <template><div id"login"><el-select v-model"role…...

解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题

1 功能特点 openpyxl&#xff1a; 这是一个专门用于操作Excel文件&#xff08;.xlsx/.xlsm&#xff09;的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素&#xff0c;如单元格、行、列、工作表等。例如&#xff0c;可以通过openpyxl轻松地创建一个新的Excel工作…...

高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换

1. 无穷小比较 1. 本质&#xff1a;就是函数的极限趋于0时的速度&#xff0c;谁快谁慢的问题。 2. 定义&#xff1a;若是在同一自变量的变化过程中的无穷小&#xff0c;且&#xff0c;则&#xff1a; ①&#xff1a;若&#xff0c;则称是比的高阶无穷小&#xff0c;记作&…...

计算队列中的‘捣乱分子’对数:一种量化无序程度的方法

计算队列中的‘捣乱分子’对数:一种量化无序程度的方法 前言解题思路关键点实现代码时间复杂度分析前言 在日常生活中,我们经常会遇到需要排队的场景,比如买票、候车、就餐等。在理想的排队情况下,人们会按照某种顺序(如先到先服务)整齐地排成一列。然而,总有一些人不遵…...

如何在不丢失数据的情况下从 IOS 14 回滚到 IOS 13

您是否后悔在 iPhone、iPad 或 iPod touch 上安装 iOS 14&#xff1f;如果你这样做&#xff0c;你并不孤单。许多升级到 iOS 14 beta 的 iPhone、iPad 和 iPod touch 用户不再适应它。 如果您在正式发布日期之前升级到 iOS 14 以享受其功能&#xff0c;但您不再适应 iOS 14&am…...

提升汽车金融租赁系统的效率与风险管理策略探讨

内容概要 在汽车金融租赁系统这个复杂的生态中&#xff0c;提升整体效率是每个企业都渴望达成的目标。首先&#xff0c;优化业务流程是实现高效运行的基础。通过分析目前的流程&#xff0c;找出冗余环节并进行简化&#xff0c;能够帮助企业缩短审批时间&#xff0c;提高客户满…...

Git 入门(一)

git 工作流如下&#xff1a; 命令如下&#xff1a; clone&#xff08;克隆&#xff09;: 从远程仓库中克隆代码到本地仓库checkout &#xff08;检出&#xff09;:从本地仓库中检出一个仓库分支然后进行修订add&#xff08;添加&#xff09;: 在提交前先将代码提交到暂存区com…...

pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃

前面写过两篇相关的文章&#xff1a; PyQt应用程序打包Python自动按键 这两篇文章都没有提到下面的这个重要问题&#xff1a; 采用Pyinstaller冻结打包多进程程序时&#xff0c;必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创…...

OSI模型的网络层中产生拥塞的主要原因?

&#xff08; 1 &#xff09;缓冲区容量有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 2 &#xff09;传输线路的带宽有限&#xff1b;&#xff08; 1.5 分&#xff09; &#xff08; 3 &#xff09;网络结点的处理能力有限&#xff1b;&#xff08; 1 分…...

服务器开发 的设计模式(Design Patterns)核心知识

服务器开发的设计模式&#xff08;Design Patterns&#xff09;核心知识 在现代软件开发中&#xff0c;设计模式是一组为解决特定问题而重用的解决方案。它们是经过时间考验的最佳实践&#xff0c;为开发人员提供了一种有效的解决方案来应对常见的软件设计问题。特别是在服务器…...

智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述

本文要点 ]本项目的项目文件中的三个Part终于“拼”出来的&#xff08;个别用词可能还需斟酌&#xff0c;但样子、格式和意思 差不多): Part1【凡间-AI众生】 人性化&去中心化-个体人生观 语言有关&#xff08;语言交流-经验常识实践 信条 行为主义 随机数-本质偶然的 想…...

Lucas-Kanade光流法详解

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 光流&#xff08;Optical Flow&#xff09;描述的是图像序列中各像素点随时间的运动情况&#xff0c;是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...

基于YOLO5的机械臂视觉抓取实现

前言&#xff1a; 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析&#xff0c;可以精确计算出机器人末端执行器的位姿信息&#xff0c;从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤&#xff0c;标…...

Git 仓库与文件管理笔记

Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…...

Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)

文章目录 1、信号与槽的参数2、为什么要有信号槽机制&#xff1f;3、断开并重新连接4、槽函数lambda写法 1、信号与槽的参数 信号和槽可以带参数&#xff0c;当信号带有参数时&#xff0c;槽的参数必须和信号的一致&#xff0c;此时发送信号就可以给信号函数传递实参&#xff…...

043_小驰私房菜_MTK Camera,Hal层将camera型号写到property属性中

【问题背景】 app层需要知道当前设备的摄像头型号,然后做一些差异化处理。底下如何上报这个摄像头型号? 【分析】 在kernel和hal层,都是有地方能获取到当前摄像头的型号,就看在哪里添加方便。获取到摄像头硬件型号后,将其写入到property属性, 然后app就可以通过读取该…...

Java线程

目录 一、线程入门 二、线程同步 三、死锁 四、线程的方法 五、线程的流程图 六、线程池 一、线程入门 1.进程&#xff1a;每一个软件都是一个进程。 2.线程&#xff1a;进程是由多个线程组成的。 3.进程和线程的关系&#xff1a;一个进程是对应一个或者是多个线程的。…...

JMeter 的 If Controller:开启性能测试的智能大门

嘿&#xff0c;宝子们&#xff01;今天咱们就来聊聊 JMeter 里超级厉害的 If Controller&#xff0c;它就像是一把神奇的钥匙&#xff0c;能帮我们打开灵活测试的大门&#xff0c;让你的测试计划变得更加智能和高效。 一、If Controller 初印象 想象一下&#xff0c;你正在指…...

node内置模块之---os 模块

os 模块的作用 os 模块是 Node.js 的一个核心模块&#xff0c;提供了与操作系统交互的一些功能。它使得 Node.js 应用可以访问操作系统的底层信息&#xff0c;并执行一些系统级的操作&#xff0c;比如文件系统操作、环境变量、进程管理等。 os 模块的相关api 文件系统路径操…...

PgSQL如何用cmd命令行备份和还原数据库

一、备份 备份为压缩的二进制格式&#xff08;通常更快且占用空间更少&#xff09; pg_dump -U username -Fc -h hostname -p port -d dbname -F p -f backup.sql-U username&#xff1a;指定连接数据库的用户名&#xff08;默认是 postgres&#xff09;。-Fc&#xff1a;备…...

neo4j学习笔记

图数据库 图数据库是基于图论实现的一种NoSQL数据库&#xff0c;其数据存储结构和数据查询方式都是图论为基础的&#xff0c;图数据库主要用于存储更多的连接数据。 图论&#xff08;GraphTheory&#xff09;是数学的一个分支。图论以图为研究对象&#xff0c;图论的图是由若干…...

Halcon 显示异常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …...

2021年3月多省联考《申论》B卷真题解析

2021年福建公务员考试申论试题&#xff08;乡镇卷&#xff09; 材料一 在传统乡镇布局中&#xff0c;部分乡镇面积小、人口少&#xff0c;但管理机构、干部职数、机构编制、财政投入均不少&#xff0c;行政运行成本较高。合理调整乡镇行政区划&#xff0c;有助于统筹设置乡镇服…...

Mac iTerm2集成DeepSeek AI

1. 去deepseek官网申请api key&#xff0c;DeepSeek 2. 安装iTerm2 AI Plugin插件&#xff0c;https://iterm2.com/ai-plugin.html&#xff0c;插件解压后直接放到和iTerms相同的位置&#xff0c;默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…...

主机A与主机B建立TCP连接的三次握手过程

&#xff08; 1 &#xff09;主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段&#xff08;第一次握手&#xff09;。&#xff08; 1 分&#xff09; &#xff08; 2 &#xff09;一旦包含 SYN 报文段的 IP 数据报到达主机 B &#xff0c; SYN 报文段被从数据报…...

vue3 vite 动态加载路由遇到的问题

记录一下动态加载路由遇到的问题 正常使用import引入静态路由是没问题的 component: () > import(/components/ExampleComponent.vue)动态引入的时候写成import就不行了 由于后端给的路由格式比较反人类…我这边先递归把获取到的数据格式做了一个整合. const processedDa…...

仿生的群体智能算法总结之一(十种)

群体智能算法是一类通过模拟自然界中的群体行为来解决复杂优化问题的方法。以下是10种常见的群体智能算法: 编号 算法名称(英文) 算法名称(中文) 年份 作者 1 Ant Colony Optimization (ACO) 蚁群优化算法 1991 Marco Dorigo 2 Particle Swarm Optimization (PSO) 粒子群优…...

02pandas读取和保存数据的方法

pandas读取和保存数据的方法 一、pandas支持的数据格式二、pandas常用数据读取方法1. 准备工作2. 代码示例1.pandas数据读取常用的方法2. read_excel 方法&#xff08;1&#xff09;read_excel()方法&#xff1a;读取excel文件&#xff08;2&#xff09;head()方法&#xff1a;…...

【STM32项目】智能物联网驱动的生物样本培育与管理辅助系统(完整工程资料源码)

视频功能演示: 智能物联网驱动的生物样本培育与管理辅助系统 目录: 目录 视频功能演示: 目录:...