【北京迅为】《iTOP龙芯2K1000开发指南》-第四部分 ubuntu开发环境搭建

龙芯2K1000处理器集成2个64位GS264处理器核,主频1GHz,以及各种系统IO接口,集高性能与高配置于一身。支持4G模块、GPS模块、千兆以太网、16GB固态硬盘、双路UART、四路USB、WIFI蓝牙二合一模块、MiniPCIE等接口、双路CAN总线、RS485总线,扩展能力更强。龙芯2K1000已经广泛应用于工控、轨道交通、电力、能源等领域,经过大量项目验证,是嵌入式领域一颗新星。拥有完全自主知识产权,供货稳定,也是龙芯中科面向嵌入式开发的主推产品。

【实验平台】:迅为龙芯2K1000开发板
【视频介绍】:成体系 | 龙芯教学视频

【内容来源】《iTOP龙芯2K1000开发指南》
【全套资料及网盘获取方式】联系淘宝客服加入售后技术支持群内下载


第四部分 ubuntu开发环境搭建

开发龙芯,我们需要在Linux环境下进行开发,所以这就要求我们给PC机安装Linux操作系统,在4.2章节我们曾经提到过。我们使用的是Windows10系统+虚拟机ubuntu的方案。

为什么我们要选择ubuntu系统进行开发而不是其他系统呢,因为ubuntu系统桌面非常友好并且工具十分强大,比如apt-get。而且ubuntu可以免费使用并有专业的社团提供相应的支持。

所以这一部分针对ubuntu开发环境搭建,ubuntu系统使用和入门,ubuntu终端操作进行一个详细的讲解,帮助大家快速认识ubuntu系统已经构建起ubuntu开发环境。如果您已经对这些操作非常熟悉,可以直接使用我们搭建好的环境并跳这一部分。

4.1 安装虚拟机VMware软件

虚拟机VMware软件是做什么的呢?我们为什么要安装他呢?刚才我们提供了我们采用的是Windows10系统+虚拟机ubuntu的方案。要想实现这个方案,我们就需要先在Windows电脑上安装虚拟机软件,顾名思义,虚拟机就是虚拟出来的一个机器。然后我们在虚拟出来的这个机器上安装ubuntu系统,这样我们就实现了Windows10系统+虚拟机ubuntu的方案。

能实现虚拟机的软件有很多,这里我们选择的是VMware软件,接下来我们就一起来看一下这个软件的安装。VMware软件可以在VMware官网下载,官网地址:https://www.vmware.com/cn.html

VMware软件安装包位置:LS2K1000开发板资料\03_开发所需软件及驱动\3_VMware15.5

VM软件的安装十分简单,我们双击打开VMware-workstation-full-15.5.0-14665864.exe进入安装界面,

然后点击上图中的“下一步” 按钮, 进入下图所示界面:

然后选中上图中的“我接受许可协议中的条款” , 继续选择“下一步” 按钮, 进入如下图所示界面:

根据实际需要可以在上图红色箭头所示的地方更改安装路径,注意:安装路径不要有中文,选择好按住哪个路径, 点击上图中的“下一步” 按钮, 进入如下图界面:

在上图界面中, 取消红色方框内的两个复选框, 然后点击“下一步” 按钮, 进入如下图所示界面: 

然后选中上图中红色方框内的两个复选框, 确保安装完成后, 在桌面和开始菜单里面有 VMware 图标,然后点击上图中的“下一步” 按钮, 进入下图所示界面: 

经过前面几步的操作, 我们已经设置好安装参数了, 我们点击上图中的“安装” 按钮开始安装 VMware安装过程如下图所示: 

安装完成会显示下图所示的界面: 

然后点击上图中的“完成” 按钮, 完成 VMware 虚拟机的安装, 将会在桌面生成 VMware Workstation Pro的图标, 如下图所示: 

接下来我们双击上图中的图标, 打开 VMware 软件。 第一次打开软件会提示输入许可证密钥, 如下图所示

VMware 是付费软件, 如果您购买了 VMware 会有一串许可证密钥, 如果没有购买, 我们可以选择“我希望试用 VMware Workstation 15 30 天” 选项, 然后我们点击“继续” 按钮, 进入下图所示界面: 

然后点击上图中的“完成” 按钮, 打开 VMware 的界面如下图所示: 


至此, 虚拟机 VMware 的安装我们就完成了。 

4.2 虚拟机安装ubuntu系统

4.2.1 下载ubuntu系统镜像

在Windows电脑上安装好了VMware软件以后,我能就可以在VMware软件上安装ubuntu系统了,要安装ubuntu系统,首先我们就要有ubuntu系统的镜像,我们可以去ubuntu系统的官网获取系统镜像。Ubuntu系统官网:Enterprise Open Source and Linux | Ubuntu

Ubuntu20.04安装包在:LS2K1000开发板资料\03_开发所需软件及驱动\4_Ubuntu20.04系统

打开官网以后,我们选择Download,如下图所示:

 选择20.04LTS,并开始下载ubuntu20.04系统镜像,如下图所示:

4.2.2 虚拟机安装ubuntu系统

首先我们打开 VMware 虚拟机软件, 然后点击图中的“创建新的虚拟机” 选项 如下图所示: 

在弹出的界面我们选择默认设置, 然后点击下图中的“下一步” 按钮,如下图所示:

接着我们在安装程序光盘映像文件里选择我们ubuntu20.04系统安装包的位置,注意,不要有中文路径。然后点击下一步

然后我们设置ubuntu系统的相关信息,ubuntu系统名称我们设置为ubuntu20.04,ubuntu系统登录账号设置成topeet,密码也设置成topeet。设置完成后大家一定要记住自己设置的账号密码,安装完系统以后我们需要使用这个密码进行登录

接着我们设置虚拟机名称为ubuntu20.04,安装位置大家自行选择即可,但是切记不要有中文路径,以及要选择一个空间比较大位置进行安装,作者这里G盘的剩余存储空间为1T。

最大磁盘大小这里作者设置成了1000G,大家依据自己的剩余空间来设置即可,建议存储空间至少要预留500G以上。设置完成后,点击下一步。

接着在弹出的界面,我们选择自定义硬件,如下图所示:

自定义硬件这里我们要根据自己PC的硬件配置修改一下虚拟机的硬件参数,由于我的机器是16G 内存,所以这里我给虚拟机分配了8G内存(大家可以根据自己 PC 的实际配置来修改)

然后点击“处理器” 选项, 修改处理器的配置, 这里我把处理器个数设置成 4, 然后每个处理器的内核数量我分了1个(大家可以根据自己 PC 的实际配置来修改) 进入下图界面:

点击“网络适配器” 选项, 进入修改虚拟机的网络配置的界面, 这里我们配置成“桥接模式”, 如下图所示:

然后选择显示器选择,取消勾选掉3D图形加速,如下图所示:

最后点击“关闭” 按钮, 如下图所示:

 返回到“自定义硬件”界面, 然后点击“自定义硬件界面” 中的“完成” 按钮, 开始安装 Ubuntu20.04系统,然后点击完成。

开始安装ubuntu20.04系统。如下图所示

大约经过10分钟左右(根据 PC 的配置, 时间会有所不同) , Ubuntu 会自动完成安装,并重新启动, 进入登录界面, 如下图所示:

最后,我们输入在安装ubuntu20.04的时候设置的账号密码,登录到ubuntu系统界面,如下图所示:

至此, Ubunt20.04虚拟机的安装我们就完成了 

4.3 虚拟机ubuntu基础操作及设置

4.3.1 虚拟机ubuntu系统开关机

在安装完虚拟机ubuntu系统以后,我们要正确的进行开关机操作,如果开关机操作不当,可能会造成虚拟机ubuntu系统崩溃,所以当我们结束在ubuntu系统上的工作以后,我们要正确进行关机,开机操作。

首先是关闭虚拟机:在 VMware 的菜单栏上有一个启动、停止、关闭的快捷按钮, 我们首先使用鼠标点击下拉箭头,会展开该按钮的所有功能,如下图所示:

此时我们的 Ubuntu 处于运行状态, 我们只需要点击下拉菜单里面的“关机(O)”按钮,即可关闭 Ubuntu虚拟机,如下图所示:

点击“关机”选项后, 会提示关机对话框,我们点击“关机” 按钮,如下图所示:


等到关机完成, 如下图所示: 

然后是虚拟机ubuntu开机,直接点击开机俺就即可,如下图所示:

此时会弹出对话框, 我们点击“否” 按钮, 如下图所示:

 稍等片刻Ubuntu 系统正常启动起来了, 如下图所示

至此关于 Ubuntu 系统的开机, 关机我们就讲解完成了。

4.3.2 虚拟机ubuntu终端操作

我们在用 Ubuntu 系统开发的过程中绝大部分情况下都是通过命令来使用 Ubuntu 的, 所以掌握 Ubuntu 的使用命令对于我们的后续 linux 学习至关重要。 Ubuntu 下的终端操

作类似Windows系统下的cmd命令行操作。首先我们需要打开终端,打开终端的方法有好几种:

  1. 快捷键Ctrl+Alt+t组合按键;
  2. 在 Ubuntu 系统桌面, 鼠标右键然后选择“Open in Terminal”;

Ubuntu终端界面如下图所示:

关闭终端,我们直接点击右上角的叉号即可,如下图所示:

4.3.3 虚拟机ubuntu更换背景

点击 桌面右上角的倒三角,选择Settings,如下图所示:

接着我们选择Background选项,然后选择一个自己喜欢的图片,如下图所示:

比如这个作者选择这个桥的图片,选择好以后,直接点击右上角的叉号,背景就会自动帮我们设置成功。

设置成功如下图所示:

4.3.4 虚拟机ubuntu启动root用户

作为嵌入式开发人员,系统的所有权限都要为我们打开,所以我们不必像运维那样,对root用户非常敏感,所以安装完ubuntu系统以后,我们要启用root用户。

首先我们打开ubuntu控制终端,然后在终端里面输入命令 sudo passwd root,如下图所示:

然后敲回车,按照提示输入当前用户密码,作者这里当前用户密码为toppet,即我们的登录密码,然后输入设置root密码,root密码作者也设置为topeet,如下图所示:

4.3.5 虚拟机ubuntu更换下载源

Ubuntu 系统软件的下载安装我们通常使用命令“apt-get” , 该命令可以实现软件自动下载, 安装, 配

置。 该命令采用客户端/服务器的模式, 我们的Ubuntu系统作为客户端, 当需要下载软件的时候就向服务器发起请求, 因此我们需要配置下服务器的地址,也就是更换ubuntu系统的下载源,首先打开“系统设置” 界面, 然后找到“about”设置,然后点击Software Updates,如下图所示

点击Download from,选择Other,如下图所示:

在下载源设置这里,地区选择中国,服务器选择阿里,如下图所示“” 

设置好以后,点击choose Server,如下图所示:

接着会让我们输入密码,即当前的用户的登录密码,作者这里的密码为topeet。设置完成以后如下图所示:

接着我们会回到下载源设置界面,我们点击close关闭即,如下图所示:

点击close,如下图所示:

点击叉号,回到ubuntu桌面,如下图所示:

回到ubuntu桌面以后,我们打开控制终端,然后输入命令sudo apt-get update更新下载源(此操作需要保证ubuntu系统可以联网),如下图所示:

更新成功如下图所示:

4.4 虚拟机ubuntu安装软件

Ubuntu之所以如此出名,不仅是非常有好的交互界面,还有一个非常强大的apt-get工具,我们可以通过这个工具很轻易的在ubuntu系统上安装,卸载,更新软件,在做这一小节之前我们需要先按照8.5章设置好下载源。

4.4.1更新软件列表

sudo apt-get update

这个命令会访问源列表里面的每个网址, 并读取软件列表, 然后保存在本地电脑。 我们在软件包管理器看到的软件列表, 都是通过 update 命令更新的。 我们在终端输入该命令, 运行结果如下图所示:

4.4.2检查依赖是否有损坏

sudo apt-get check

检查依赖是否有损坏就是指 A 软件的运行可能需要依赖 B 软件, 只有安装了 B 软件, A 软件才能正常运行。 我们可以通过该命令检查系统里面软件的依赖关系是否有损坏, 运行结果如下图所示:

4.4.3软件安装

sudo apt-get install package-name

此命令为安装软件命令,package-name 就是我们要安装的具体软件的名称, 比如我们开发过程中会用到vim,这时我们可以使用该命令手动安装vim ,我们在终端输入命令“sudo apt-get install vim” ,安装过程中会提示我们是否确认安装, 如果我们继续安装, 输入“y” 继续安装,输入“n”,则取消安装,  运行结果如下图所示:

安装成功如下图所示:

4.4.4软件更新

sudo apt-get upgrade

此命令会把本地安装的软件, 与最新的软件列表里面对应的软件进行对比, 如果发现安装的软件版本低, 就会提示更新, 如果软件已经是最新版本, 不会更新。 我们在终端输入“ sudo apt-get upgrade” , 运行结果如下图所示:

输入 y 确认更新(如果取消更新可以输入 n),我这里更新这些软件,所以就输入y,如下图所示:

更新完成如下图所示:

4.4.5软件卸载

sudo apt-get remove package-name

如果我们需要卸载已经安装的 package-name 软件, 我们可以会用该命令, 比如卸载前面我们安装的vim软件, 我们在终端输入“sudo apt-get remove vim”。

至此,关于apt-get命令的几个常用功能,我们就介绍完了,大家可以自己亲手练习,亲身体会下。

4.5虚拟机ubuntu安装必要工具

4.5.1安装VMtools工具

VMware Tools是VMware软件中自带的一个工具,我们只有在VMware虚拟机中安装好这个工具,才可以实现文件在虚拟机ubuntu和Windows之间的复制,粘贴等操作,并且可以实现根据实际情况来自动切换屏幕的显示尺寸。所以我们非常有必要安装这个工具。

首先我们打开VMware软件,点击编译虚拟机设置,如下图所示:

然后选择CD/DVD选项,选择使用ISO映像文件,这里选择VMware软件安装位置下的linux.so设置完成后点击确定,如下图所示:

接着我们打开终端,输入df命令,可以看到VMware Tools的安装包所在的路径为/media/topeet/VMware Tools,如下图所示:

接着输入命令cd /media/topeet/VMware Tools进到安装包所在路径下,注意,这里大家以自己的实际路径为准。如下图所示:

输入命令sudo cp VMwareTools-10.3.10-13959562.tar.gz /opt把安装包拷贝到ubuntu系统的opt目录下,注意,VMwareTools-10.3.10-13959562.tar.gz为安装包的名称,大家以自己实际下载的安装包名称为准,如下图所示:

使用命令 sudo cd /opt 进到ubuntu系统的opt目录下,因为刚才我们把安装包拷贝到了这个路径下,为什么我们要拷贝到这个目录下呢,因为ubuntu的opt目录是用来存放主机额外软件安装包的目录,我们要遵守这个规范,所以我们拷贝并进到这个目录下。如下图所示:

输入命令sudo tar -xf VMwareTools-10.3.10-13959562.tar.gz解压安装包(命令后面安装包的名字大家以自己实际的名字为准 ),如下图所示:

接着输入命令cd vmware-tools-distrib进到我们解压生成的目录,如下图所示:

然后输入命令sudo ./vmware-install.pl进行安装,如下图所示:

安装过程中会提示if you want to do this,otherwise type 。我们输入yes,并敲回车,如下图所示:

解压来的安装过程会询问我们yes或者no,我们全部按回车即可,也就是默认安装,安装完成如下图 所示:

最后我们重新ubuntu系统,即可实现Windows和ubuntu之间的复制粘贴等操作。

4.5.2安装SSH服务

搭建开发环境的时候, 提到了不要给电脑安装双系统, 因为我们经常要在 ubuntu windows 上互传文件, 所以我们要使用虚拟机,然后在虚拟机里面安装我们 ubuntu 操作系统。 那么我的 windows 要怎么和 ubuntu 互传文件呢, 我们可以使用 ssh 软件。 接下来我们安装下这个软件。

在终端输入 sudo apt-get install openssh-server , 输入登录 Ubuntu 用户的密码, 这里我们输入 y 确认安装。 如下图所示。

着继续改 ssh 配置文件, 因为 ssh 默认不允许用户登录, 所以我们还需要打开配置文件输入命令sudo vim /etc/ssh/sshd_config”,找到“PermitRootLogin prohibit-password”修改成“PermitRootLogin yes”。如下图所示。 

保存退出后在终端输入“ /etc/init.d/ssh restart”命令, 重新启动 ssh服务然后输入密码如下图所示:

启动成功如下图所示:

打开MobaXterm软件,在菜单栏中选择回话并选择SFTP服务,如下图所示:

 在ubuntu终端输入命令ifconfig,查询ubuntu系统的ip,如下图所示:

在MobaXterm软件弹出来的对话框中,远程主机IP我们填入ubuntu系统ip,也就是192.168.1.25,这里大家根据自身情况填写。用户名我们填写root,设置完成后点击确定,如下图所示:

在弹出来的对话框里面我们填入ubuntu系统的登录密码,然后点击确定,作者这里是topeet,如下图所示:

下一个窗口我们选择否,如下图所示:

成功连接ubuntu系统如下图所示:

我们只需要把Windows电脑上的文件直接拖到上图的对话框即可把文件传到ubuntu,从ubuntu传文件到Windows电脑,只需要在上图的对话框里面把文件拖到Windows电脑即可。

4.5.3安装vscode

Vscode是一款免费开源的代码编辑器,而且功能十分强大,基本支持所有主流的编程语言的语法高亮,自动补全,匹配括号等。软件跨平台支持win,mac和linux。

首先我们需要获得vscode的安装包,我们可以打开vscode的官网,官网地址:https://code.visualstudio.com/Download,因为我们需要在Ubuntu系统上安装,所以我们需要下载Ubuntu系统版本的安装包,如下图所示:

也可以使用迅为下载好的安装包,安装包位置:LS2K1000开发板资料\03_开发所需软件及驱动\6_vscode

有了安装包以后,我们将vscode的安装包拷贝到Ubuntu的任意目录下,如下图所示:

接着我们输入安装命令sudo  dpkg  -i code_1.59.0-1628120042_amd64.deb进行安装,注意:sudo  dpkg  -i 后面的是文件的名称,请以实际情况为准,安装完成如下图所示。

安装完成后我们就可以在Ubuntu的软件中心看到vscode的图标了,如下图所示:

接着点击vscode图标打开vscode软件,打开完成后点击externsions图标,在搜索框里面输入ch搜索和中文有关的语言包,然后选择Code Spell Checker进行安装,如下图所示:

接着按ctrl+shift+p快捷键打开搜索框,手动搜索configure display language,并修改成"zh-CN",即中文模式,之后重启vscode软件。如下图所示:

软件重启成功后,可以看到vscod就汉化成功了,如下图所示:

4.5.4安装tftp服务

tftp 是一个简单的基于 udp 的文本文件传输协议, 我们可以用它来实现开发板和虚拟机Ubuntu之间的互传文件,只在 Ubuntu 上配置好 tftp 服务器即可。

首先使用命令mkdir tftpboot 在家目录下创建文件夹tftpboot,然后使用命令chmod 777 tftpboot修改文件夹的权限为777,,如下图所示:

使用命令sudo apt-get install tftp-hpa tftpd-hpa下载安装tftp服务,安装完成后使用命令sudo vim /etc/default/tftpd-hpa打开tftp的配置文件,并修改成如下图所示:

输入命令sudo service tftpd-hpa restart启动tftp服务,如下图所示:

从上图可以看出,已经启动成功,至此,Ubuntu上tftp服务已经搭建完成。

4.5.5安装nfs服务器

4.5.5.1什么是nfs?

NFS 是 Network File System 的缩写, 它可以通过网络, 让不同的机器、 不同的操作系统可以共享彼此的文件。

NFS 服务器可以让 PC 将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中, 而在本地端的系统中来看, 那个远程主机的目录就好像是自己的一个磁盘分区一样, 在使用上相当便利;

NFS 服务器我们一般是在 ubuntu 上搭建的。 这里的客户端我们使用的是开发板, 如下图所示。

4.5.5.2同一网段概念

使用 nfs 之前, 开发板、 虚拟机 ubuntu、 windows 电脑三者要互相 ping 通, 这就涉及到了同一个网段的概念。

概念: 同一个网段是指 IP 地址和子网掩码相与得到的相同的网络地址。

快速判断同一个网段:

(1) 开发板、 虚拟机 ubuntu、 windows 子网掩码是不是相同。

(2) 开发板、 虚拟机 ubuntu、 windows IP 地址的前三段是不是相同。

举例:

Ubuntu:

由上图可知, ubuntu 的 IP 为 192.168.1.11, 子网掩码是 255.255.255.0

Windows:

由上图可知, windows 电脑的 IP 为 192.168.1.5 ,子网掩码是 255.255.255.0所以, ubuntu 和 windows 在同一个网段, 因为子网掩码相同, 都是 255.255.255.0, IP 地址前三段相同,都是 192.168.1。 同理, 判断开发板的网段是不是和 ubuntu 和 windows 在同一个网段下, 我们也可以使用这个方法。

4.5.5.3连接方式

在我们做技术支持的时候,经常遇到很多小伙伴,开发板,Ubuntu,电脑主机不能互相ping通的问题,如果不能互相ping通,就不能使用nfs,所以这里作者总结了一个最稳定的连接方式,推荐大家使用,以免出现不能ping通的问题。

(1) 虚拟机 ubuntu 要使用桥接模式, 不能使用其他模式

(2) 开发板使用无线或者有线连接到路由器上, 不要直接连接到电脑,不要连手机热点。

(3) windows 关闭防火墙, 使用有线连接到和开发板连接的同一个路由器上。

(4) 保证虚拟机 ubuntu,Windows, 开发板在同一个网段。

4.5.5.4 nfs服务器的搭建

在 ubuntu 安装 nfs 服务: 使用命令sudo apt-get install nfs-kernel-server,如下图所示:

接着使用命令sudo mkdir -p /home/nfs在/home/路径下创建nfs文件,用来共享使用,如下图所示:

配置文件中添加以下代码:

/home/nfs/ *(rw,sync,no_root_squash)

其中: /home/nfs/ 是 nfs 服务器要共享的目录

rw:是可读写权限

sync:是资料同步写入内存和硬盘

no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时, 其权限将被转换成为一名使用者,通常它的 UID 与 GID 都会变成 nobody 身份。

如下图所示:

配置完成后保存退出。使用命令/etc/init.d/nfs-kernel-server restart重启nfs服务,如下图所示:

从上图我们看出,nfs已经重启成功,说明Ubuntu上的nfs服务器已经搭建成功。

4.5.5.5 nfs服务器使用

我们按照4.4.5.3和4.4.5.2章节连接好开发板并设置好同一网段以后,使用命令mount -t nfs -o nolock 192.168.1.38:/home/nfs /mnt/将Ubuntu系统的/home/nfs文件夹挂载到开发板的/mnt目录下,如下图所示:

这句话代码的意思是使用 nfs 挂载/home/nfs 到 mnt 文件夹下, 192.168.1.38的 IP 为 ubuntu 的 IP.把这个 ip 改成自己 ubuntu 的 ip 就可以了。

4.5.5.6 nfs服务器测试

挂载好nfs以后,接着我们在Ubuntu的/home/nfs文件夹下使用命令sudo touch test.c创建一个c文件,如下图所示:

然后在查看开发板的/mnt目录,如果/mnt目录下也可以看到我们在Ubuntu虚拟机上创建的这个test.c文件,说明nfs挂载成功,如下图所示:

从上图可以看到,nfs已经可以正常使用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我是如何用扣子AI工作流筛选并分析自媒体情报信息的

从开始做自媒体以来,一直有个困惑许久的问题没有解决,那就是搜集我关注的相关领域的对标自媒体一手信息,包括文章、评论、点赞、转发等。一方面,是为了了解我关注的内容,另一方面,也是为了逼迫自己学习更多…

mysql中join内外连接查询例子

文章目录 join关键字概要举例using 与 on 区别 join关键字 在MySQL中,JOIN 是一种用于将两个或多个表中的行联合起来的操作。 连接(join)就是将一张表中的行按照某个条件(连接条件)与另一张表中的行连接起来形成一个新…

一个排查了一天的BUG,你在摸鱼吧!

站会 在一次日常站会上,组员们轮流分享昨天的工作进展。一个组员提到:“昨天我整天都在排查一个BUG,今天还得继续。” 出于好奇,我问:“是什么BUG让你排查了这么久还没解决呢?” 他解释说:“…

Compose和Android View相互使用

文章目录 Compose和Android View相互使用在Compose中使用View概述简单控件复杂控件嵌入XML布局 在View中使用Compose概述在Activity中使用Compose在Fragment中使用Compose布局使用多个ComposeView 在布局中使用Compose 组合使用 Compose和Android View相互使用 在Compose中使用…

智慧旅游引领旅游行业创新发展:借助智能科技的力量,推动旅游服务的个性化、精准化,提升游客的满意度和忠诚度

随着信息技术的迅猛发展和广泛应用,智慧旅游已成为旅游行业创新发展的重要引擎。智慧旅游借助智能科技的力量,推动旅游服务的个性化、精准化,不仅提升了游客的满意度和忠诚度,也为旅游行业的可持续发展注入了新的活力。本文将从智…

4月25日 C++day4

#include <iostream> using namespace std;class Person {const string name;int age;char sex; public:Person():name("lisi"){cout << "Person无参构造" << endl;}Person(string name,int age,char sex):name(name),age(age),sex(sex)…

【RAG 论文】Chain-of-Note:为 RAG 引入 CoT 让模型生成阅读笔记来提高面对噪音文档和未知场景的鲁棒性

论文&#xff1a;Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models ⭐⭐⭐ Tencent AI Lab, arXiv:2311.09210 文章目录 一、论文速读二、实现的细节2.1 Note Design2.2 Data Collection2.3 Model Training 三、实验结果3.1 QA Performance3.2 对 …

使用新版ESLint,搭配Prettier使用的配置方式

概述 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。 注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1…

014、Python+fastapi,第一个后台管理项目走向第14步:建立python+fastapi项目,创建common通用模块

一、说明 通用模块主要是完成文件的上传下载&#xff0c;抄吧&#xff0c;要不然怎么叫通用模块呢&#xff1f; 我把RuoYi-Vue3-FastAPI中的验证码模块放在这里了&#xff0c;我觉得验证也比较通用吧&#xff0c; 二、添加common通用模块 1、通用模块没有数据表&#xff0c…

涨跌失据了?现货白银市场的波动如何捕捉

现货白银市场近期出现了强劲的上涨&#xff0c;但近两个交易日&#xff0c;却出现了令人感觉诧异的大跌。很多刚入场打算买入做多的朋友&#xff0c;面对这两天这么强的跌势都感觉无所适从。到底现货白银市场的波动如何才能捕捉呢&#xff1f;下面我们就来讨论一下这个问题。 用…

阿里云物联网平台 | 透传与ICA标准数据格式(Alink JSON)| 定值SDK非动态注册与动态注册 | SOC+4G模组移植方案

文章目录 一、透传与ICA标准数据格式&#xff08;Alink JSON&#xff09;二、定值SDK选非动态注册还是动态注册三、SOC4G模组移植方案 一、透传与ICA标准数据格式&#xff08;Alink JSON&#xff09; 透传和ICA标准数据格式&#xff08;Alink JSON&#xff09;是物联网设备与阿…

DevOps(十二)Jenkins实战之Web发布到远程服务器

前面两篇博文介绍了怎么将django开发的web应用推送到gitlab源码仓库&#xff0c;然后jenkins服务器从gitlab仓库拉下来&#xff0c;布署到jenkins服务器上&#xff0c;并用supervisor进行进程管理&#xff0c;保证web应用一直能正常运行&#xff0c;今天我们继续优化&#xff0…

数据结构:初识集合框架

目录 1. 什么是集合框架2. 集合框架的重要性3. 背后所涉及的数据结构以及算法3.1 什么是数据结构3.2 容器背后对应的数据结构3.3 相关java知识3.4 什么是算法 1. 什么是集合框架 官方教程 Java 集合框架Java Collection Framework &#xff0c;又被称为容器和其实现类classes …

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性 异常详情 有一个类&#xff0c;里面有两个属性和一个类似工具的getRealName()方法如下&#xff1a; getRealName()方法就是获取这个人的真实名字&#xff0c;如果获取不到就以name返回…

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议&#xff0c;端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块&#xff0c;则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…

Python与数据库连接

新建表boss create table 创建表 Code import pymysqlcon pymysql.connect(hostlocalhost,\userroot,\password,\port3306,\dbbusiness) cursorcon.cursor() cursor.execute(create table if not exists boss(id int auto_increment primary key,name varchar(20)not null…

打包的意义 作用等前端概念集合 webpack基础配置等

基础网页是什么&#xff1f; 在学校最基础的三剑客 原生JS CSS H5就可以开发静态网页了 对于浏览器而言也能识别这些基础的文件和语法&#xff0c;真正的所见即所得&#xff0c;非常直接。 为什么要使用框架库&#xff1f; 对于常用的前端框架而言&#xff0c;无论是Vue Rea…

什么样的内外网文档摆渡,可以实现安全高效传输?

内外网文档摆渡通常指的是在内网&#xff08;公司或组织的内部网络&#xff09;和外网&#xff08;如互联网&#xff09;之间安全地传输文件的过程。这个过程需要特别注意安全性&#xff0c;因为内网往往包含敏感数据&#xff0c;直接连接内网和外网可能会带来安全风险。因此会…

为什么深度学习模型在 GPU 上运行得更快:CUDA 编程简介

如今,当我们谈论深度学习时,通常会将其实现与利用 GPU 来提高性能联系起来。 GPU(图形处理单元)最初设计用于加速图像、2D 和 3D 图形的渲染。然而,由于它们能够执行许多并行操作,因此它们的实用性超出了深度学习等应用程序。 GPU 在深度学习模型中的使用始于 2000 年代…

保姆级银河麒麟V10高级服务器离线安装mysql5.7数据库

离线在银河麒麟高级操作系统v10安装mysql5.7 下载mysql5.7 MySQL :: Download MySQL Community Server (Archived Versions) 2、把下载好的包上传到服务器 3、解压 [root1-0001 ~]# cd /data/mysql[root1-0001 mysql]# tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz…