IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Jetson开发实战记录(三):Jetson Xavier NX具体开发(Ubuntu18.04系统) -> 正文阅读

[开发工具]Jetson开发实战记录(三):Jetson Xavier NX具体开发(Ubuntu18.04系统)

同系列链接:

Jetson开发实战记录(一):Jetson家族的基本介绍
Jetson开发实战记录(二):Jetson Xavier NX版本区别以及烧录系统
Jetson开发实战记录(三):Jetson Xavier NX具体开发(Ubuntu18.04系统)

一、设置ssd固态硬盘作为启动盘

来自SSD的读取速度是SD卡的7倍。因此,从SSD启动肯定会提高jetson NX的性能。在这里插入图片描述

  • 格式化ssd
    安装您的和SSD并启动,然后打开菜单并进行搜索。disk
    在这里插入图片描述
    启动磁盘应用程序,您将看到此。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击左下角的+号,添加16G的交换区
    在这里插入图片描述
    选择主分区的大小。建议16 GB交换文件。
    在这里插入图片描述
    给卷起个名字。然后单击Create
    在这里插入图片描述
    现在,您已成功创建卷。但它还没有安装。让我们使用外壳命令安装它。幸运的是,杰森哈克已经将这些命令集成到外壳脚本中。让我们运行它,
  • 将根源从SD卡复制到SSD
    首先,复制该项目。
 git clone https://github.com/jetsonhacks/rootOnNVMe.git
 cd rootOnNVMe

然后将根源文件复制到您的SSD

  ./copy-rootfs-ssd.sh
  • 启用从 SSD 启动
    运行并重新启动以使服务生效。
 ./setup-service.sh
  • 重启
sudo reboot

二、 安装cuda(售后另外发的)

由于国产套件的核心模组是自带16G emmc闪存,刷机时只能刷入最基础系统,
需要扩展固态硬盘设置SSD启动后再执行命令安装CUDA等环境的包。
请参考第5个视频(观看到第5分钟后开始执行的是CUDA组件安装指导)操作指令如下:

  • 第一步:把文件夹内附带的脚本文件解压并复制到jetson nx系统内根目录下。
  • 第二步:终端执行更新sudo apt-get update
  • 第三步:给权限运行脚本sudo chmod -R 777 bootFromExternalStorage
  • 第四步:进入目录cd bootFromExternalStorage
  • 第五步:运行脚本 ./install_jetson_default_packages.sh

三、更新程序数据库(一定要先更新,不然很多报错)

  • 更新系统软件源的命令。
 apt-get update
  • 更新升级所有软件的命令。
 apt-get upgrade

四、 设置为中文

  • 在应用程序里找到settings并打开
  • 找到按钮Region&Language
  • 点击Manage Install Languages
  • 选择Install/Remove Languages
  • 在语言列表中找到Chinese(simplified),并打上勾,点击Apply.
    在弹出对话框中,然后输入管理员密码即可。
  • 安装过程,略过。
  • 这里注意,安装完成后,还要把”简体中文“拉到”英文“上面
  • 在语言和格式中,分别选择汉语和中国。
  • 重新启动ubuntu

五、安装防火墙管理插件(便于管理端口)(可以不用)

  • 指令:sudo apt-get install ufw
  • 使用ufw管理防火墙
  • 启用指令:sudo ufw enable
  • 关闭指令:sudo ufw disable
  • 状态指令:sudo ufw status
  • 允许外部访问3306端口:sudo ufw allow 3306
  • 禁止外部访问8010端口:sudo ufw delete allow 8010
  • 允许此IP访问所有的本机端口: sudo ufw allow from 192.168.1.1
  • 禁止外部访问smtp服务:sudo ufw deny smtp

六、安装远程桌面

1.vnc是什么

在这里插入图片描述

所谓的 VNC(Virtual Network Computing )是一种图形化的桌面共享系统,它使用远程帧缓冲协议 (RFB) 来远程控制另一台计算机。它将键盘和鼠标事件从一台计算机传输到另一台计算机,通过网络向另一个方向转发图形屏幕更新。

VNC 的优点很多,很多场景下都能看到VNC。例如,访问树莓派的桌面,对 headless 服务器的管理等等。但是,对于云上实例的远程图形化的访问VNC却不是好的选择。考虑到我们的使用场景是通过互联网来访问云上的主机,这就引出了否定 VNC 最主要的原因– 安全性。

默认情况下,RFB并不是一个安全的协议。虽然这个协议下密码不以明文方式发送,但如果能从网络中嗅出加密密钥和已编码的密码,还是有可能破解成功的。因此,建议密码至少有8个字符。另一方面,VNC的一些版本也有8个字符的限制; 如果发送的密码超过8个字符,则删除多余的字符,并将截断的字符串与密码进行比较。

在VNC生态系统中,”Big Four” 指的是LibVNC、UltraVNC、Tight VNC和TurboVNC 这四家提供VNC 产品的厂商。2019年,Kaspersky Lab 的研究人员对这四家公司进行了审计,以了解它们的安全性。他们的发现是令人失望的。总的来说,研究人员发现这四个程序的客户端和服务器部分共有37个严重缺陷。其中22个在 UltraVNC,另外10个在 LibVNC, 4个在 TightVNC,还有一个在 TurboVNC,但这是一个严重的漏洞,它会让攻击者在服务器端远程执行代码。

2.rdp是什么

在这里插入图片描述

有过 Windows 使用经验的人对于远程桌面(Remote Desktop Protocol ,RDP)一定不会陌生。RDP 是由微软公司开发的一种专有协议,它为用户提供了通过网络连接到另一台计算机的图形界面。在使用上,用户需要使用 RDP 客户端软件,而在远程另一台计算机则需要运行 RDP 服务器软件。

微软的Windows、Linux、macOS、iOS、Android等操作系统都有客户端。Windows操作系统内置RDP服务器;Linux与 macOS 可以安装一个 RDP 服务器。缺省配置下,服务器监听 TCP 端口 3389 和 UDP 端口 3389。

微软目前把他们的官方RDP客户端软件称为Remote Desktop Connection,以前叫做 “Terminal Services client”

与VNC 相比,RDP的安全性有很大的提升。主要的安全特性包括了:

  • 128位加密,使用RC4加密算法(版本6加入)
  • 提供了对TLS的支持(版本2加入)

此外,正如前面提到的VNC协议是基于像素的。尽管这带来了极大的灵活性,可以显示任何类型的桌面,但它的效率往往不如那些更好地理解底层图形布局(例 如: X11)或桌面(例如:RDP )的解决方案。这些协议以更简单的形式(例如:打开窗口)发送图形原语或高级命令,而 VNC 的 RFB 协议尽管支持压缩但只能是发送原始像素数据。

如何使用RDP?
在 Windows 环境下使用RDP是再简单不过的事情。虽然微软公司没有为 Linux 提供 RDP 的软件,但是我们可以使用开源的xRDP,这是RDP协议在Linux平台 的实现。

xRDP是一个开源的远程桌面协议服务器,它用来实现Linux接受来自 Windows、Mac 或者 Linux 远程桌面客户端或的连接。这意味着你不需要在我们所使用的 Windows 或 macOS 机器上安装额外的第三方应用程序。

Linux 安装 xRDP的方法如下。这里我以 Ubuntu 20.04 为例 –

  • 安装Gnome
    GNOME是一个Linux 操作系统下的桌面环境,完全由免费和开源软件组成。缺省情况下在EC2上安装的Linux 操作系统都不包含Gnome,需要额外安装。Ubuntu 缺省的桌面窗口管理器就是Gnome,用以下命令安装。
  $ sudo apt update 
  $ sudo apt install ubuntu-desktop

除了Gnome 以外,我们还可以选择 LXDE、Xface 等等。相比之下,LXDE 是轻量级的窗口管理器,Xface 则具备类似 Windows 界面的风格。如果不在乎额外增加的大约 5GB 的磁盘存储的开销,我还是推荐使用Gnome。原因在于这与我们本地使用的 Ubuntu 具有一致性的体验。

  • 安装 xRDP
 $ sudo apt install -y xrdp

安装完成后,xRDP服务将自动启动。可以通过这个命令来检查其状态:

  $ sudo systemctl status xrdp

输出结果如下:
在这里插入图片描述

  • 接下来,要为Linux的用户(ubuntu)设置登录密码
 $ sudo passwd ubuntu 
 $ sudo adduser ubuntu ssl-cert

出于安全的理由务必使其符合密码安全的策略。第二条命令是将 用户ubuntu 加入到 ssl-cert 用户组中。这是因为默认情况下,xRDP 使用的是自签发的证书,这个证书保存在 /etc/ssl/private/ssl-cert-snakeoil目录下。证书的密钥文件只能由 “ssl-cert” 用户组的成员读取。

  • 登录
    在这里插入图片描述
    在这里,username 输入ubuntu,password 输入刚刚修改过的用户密码。成功登录之后熟悉的Ubuntu 桌面就会立刻出现在眼前。
    在这里插入图片描述
    按照我的体验,网络延迟在35ms以内xRDP 的与本地Linux 桌面的操作体验几乎没有差别。实测之下,通过我所使用的100M联通宽带访问AWS 中国(北京)区域的EC2 实例,网络延迟大约在5ms左右。
    在这里插入图片描述
    单以鼠标、键盘的使用体验而论,本地桌面与远程桌面的差别已经微乎其微了,我终于可以放心的将许多工作移到云端。无论是通过我的笔记本电脑、iPad 甚至是一台树莓派都能够让我接入顺利的接入远程桌面。如此一来,开发在云端岂不是再简单不过的事情了。

3.nomachine远程桌面

NoMachine是一款不错的远程桌面控制软件,该工具简单,易用,尤其是在低带宽、慢速率的网络环境下工作性能良好,允许用户从另一台计算机访问和控制远程的Windows,Linux PC或Mac电脑,实现工作或娱乐等操作。
在这里插入图片描述
软件下载地址:下载官网

进入之后,会自动检测当前主机的版本,选择download下载最新版。注意NX开发板要选择对应的NoMachine for ARM版

由于某些原因,可能会下载很慢,还会出现中断,特贴出我辛苦下载下来版本
win10版链接
NX开发板对应的版本
在这里插入图片描述
在这里插入图片描述

七、安装jtop

相关组件安装

  1. 一般的架构(x86、amd64)下都是使用
nvidia-smi
  1. arm架构下
    使用Jetson Xavier NX的时候需要查看cpu 电源,gpu的使用 频率和调度等情况,简单的top 命令已经不能满足需求了,有一款软件 jetson-stats ,它相当于主机端使用nvidia-smi来查看显卡使用情况一样,可以完成NX板卡上述资源消耗的使用情况。
    在pip配置好的情况下,直接在终端pip3安装
pip3 install jetson-stats
#第一种报错,就第二种安装方式
sudo -H pip3 install jetson-stats

安装好后输入

jtop

查看NX开发套件的各项资源使用情况,按 q 结束退出
在这里插入图片描述

八、安装拼音输入法

1.安装前的准备

在Ubuntu18.04下,谷歌拼音输入法是基于Fcitx输入法的。因此,我们需要首先安装Fcitx。一般来说,Ubuntu最新版中都默认安装了Fcitx,但是为了确保一下,我们可以在系统终端中运行如下命令:

sudo apt install fcitx

2.配置Fcitx

系统终端中输入命令:

im-config

注:im-config是Input Method Configuration的缩写。
运行如下命令之后,就会开启 Input Method Configuration 窗口。
在这里插入图片描述
在出现的窗口中,选择Yes,如下图所示:
在这里插入图片描述
在出来的这个窗口中,必须选中Fcitx,然后选择Yes,如下图所示:
在这里插入图片描述

选中Fcitx后出来这个窗口就选择OK,如下图所示:
在这里插入图片描述

点击OK后就关闭窗口,重新启动电脑让所做的配置生效,当然你也可以在系统终端中运行:sudo reboot 命令重启电脑。

3.安装谷歌拼音输入法(Google Pinyin)

在Ubuntu18.04系统中安装谷歌拼音输入法(Google Pinyin)非常简单,只需要下面这个命令:

sudo apt install fcitx-googlepinyin
   reboot

在出来的选项中输入y即可安装。
安装后运行如下命令配置谷歌拼音输入法:

fcitx-config-gtk3

然后依次进行如下操作: 在这里插入图片描述
配置fcitx
在这里插入图片描述
如果又拼音直接保存就行,如果没有,则选择左下角的+号搜索添加。
如果想重新设置切换快捷键,直接点击“全局配置” 在这里插入图片描述

如果出现输入法没有候选框,则输入以下两个命令

killall fcitx-qimpanel 
sudo apt-get remove fcitx-ui-qimpanel 

到这里,在Ubuntu18.04系统中安装谷歌拼音输入法(Google Pinyin)全部完成了。
在这里插入图片描述

九、安装archiconda

为什么还需要 Anaconda?有以下3个原因:

  1. Anaconda 附带了一大批常用数据科学包,它附带了 conda、Python 和 150 多个科学包及其依赖项。因此你可以立即开始处理数据。
  2. 管理包
    Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的。
    在数据分析中,你会用到很多第三方的包,而conda(包管理器)可以很好的帮助你在计算机上安装和管理这些包,包括安装、卸载和更新包。
  3. 管理环境
    为什么需要管理环境呢?
    比如你在A项目中用了 Python 2,而新的项目B老大要求使用Python 3,而同时安装两个Python版本可能会造成许多混乱和错误。这时候 conda就可以帮助你为不同的项目建立不同的运行环境。

还有很多项目使用的包版本不同,比如不同的pandas版本,不可能同时安装两个 Numpy 版本,你要做的应该是,为每个 Numpy 版本创建一个环境,然后项目的对应环境中工作。这时候conda就可以帮你做到。

但是Anacona目前不支持aarch64架构,因而无法直接安装。好在github上有Archiconda这个项目,可以看作是arm版的Anaconda
下载地址
链接
在这里插入图片描述
启动脚本
(xxx为版本号)

   chmod a+x Archiconda-xxx.sh
   ./Archiconda-xxx.sh

然后一路回车
在这里插入图片描述
安装成功

reboot

在这里插入图片描述

conda添加清华源

将以上配置文件写在~/.condarc中
   vim ~/.condarc
   
   channels:
     - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
     - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
     - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
     - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
   ssl_verify: true

十、安装vscode编译器

进入进入官网点击直接下载
在这里插入图片描述
下载成功后,双击.deb文件
在这里插入图片描述

十一、 typora下载

官方地址
在这里插入图片描述
点击下载.deb文件包,双击安装
在这里插入图片描述
设置md文件默认打开方式为typora
在这里插入图片描述
在这里插入图片描述
双击打开,成功
在这里插入图片描述

十二、模型迁移(以行人重识别为例)

1. 导入项目(xshell等工具)

在这里插入图片描述

2. 打开vscode,打开文件夹,选择项目后,点击确定

在这里插入图片描述

3. 新创建终端,使用conda创建新环境(注意如果是jetson上的话,python只能安装3.6版本的)

在这里插入图片描述
在这里插入图片描述

4. vscoda切换python编译器

在这里插入图片描述
在这里插入图片描述
通常在以下路径(刚刚安装的ReID环境),找到python后,双击确定
在这里插入图片描述
切换成功
在这里插入图片描述

5. 安装项目需求环境,通常在requirements.txt文件

在这里插入图片描述
在终端输入

conda activate ReID
pip install -r requirements.txt#这里torch和torchvision可以先不装

在这里插入图片描述
python包安装中
在这里插入图片描述
在这里插入图片描述

安装成功,关闭重启

特别注意torch的版本一定要和cuda版本对应,如果出错,建议直接去官网下载,找到适合自己的版本(找到适合自己的版本(英伟达torch官网)
在这里插入图片描述

先安装依赖:

sudo apt-get install libopenblas-base libopenmpi-dev

安装Pythorch (需要在安装文件当前目录运行命令)

pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl

安装完成导包测试

python
import torch
#如果上面的依赖没有安装这里会报错
#OSError: libmpi_cxx.so.20: cannot open shared object file: No such file or directory

可以在包目录这个网站右上角搜索libmpi_cxx.so.20手动下载需要的依赖包
需要的依赖包有:

 libhwloc5_1.11.9-1_arm64.deb   (先安装)
       
libopenmpi2_2.1.1-8_arm64.deb
       
libopenblas-base_0.2.20+ds-4_arm64.deb

安装依赖参考链接

依赖安装完成后有可能还会遇到一个错误

 import torch 
#Illegal instruction (core dumped)(非法指令(核心转移))

在环境变量最后面加入

sudo vim ~./bashrc
export OPENBLAS_CORETYPE=ARMV8
source ~/.bashrc

最后测试一下

python
import torch
print(torch.cuda.is_available())  #测试cuda是否能用
True  #返回Ture说明cuda能用

6. 安装torchvision

torchvision库简介(翻译)
torchvision是独立于pytorch的关于图像操作的一些方便工具库。
torchvision的详细介绍在:https://pypi.org/project/torchvision/
torchvision主要包括一下几个包:

  • vision.datasets : 几个常用视觉数据集,可以下载和加载,这里主要的高级用法就是可以看源码如何自己写自己的Dataset的子类
  • vision.models : 流行的模型,例如 AlexNet, VGG, ResNet 和 Densenet 以及 与训练好的参数。
  • vision.transforms : 常用的图像操作,例如:随机切割,旋转,数据类型转换,图像到tensor ,numpy 数组到tensor , tensor 到 图像等。
  • vision.utils : 用于把形似 (3 x H x W) 的张量保存到硬盘中,给一个mini-batch的图像可以产生一个图像格网。

本人在torch官网上找不到arms适配的vision包,直接进行pip安装的话直接报错,所以选择whl安装torchvision

sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install torchvision==0.8.1  #我用这条没有安装成功

手动去这个地址下载代码包:https://github.com/pytorch/vision/archive/v0.8.1.zip(也可以直接进入https://github.com/pytorch/vision中找到其他的版本)
在这里插入图片描述
在这里插入图片描述

找到合适的版本下载
在这里插入图片描述

下载解压后,进入文件夹

 export BUILD_VERSION=0.8.1 #这里可以将地址写入~/.bashrc中
 sudo python3 setup.py install #这里如果是conda的下的虚拟环境,sudo可能会提示错误,所以可以去掉sudo
 #测试是否安装成功
 import torchvision
 print(torchvision.__version__)

7. nvcc not fount(添加cuda进环境里面改)原文链接

原因是虽然已经安装了cuda但是没有将cuda添加到Linux环境下。

首先声明:通过修改.bashrc文件的方法来修改环境是永久有效但是仅针对当前用户,对于没有root权限的用户,这种方式是很有好的,

  1. 如果有root权限的可以直接输入命令,修改环境。
  sudo vim ~/.bashrc
  1. 对于没有root权限的人来说就只能选择以下的方式:通过修改./bashrc文件
    打开Linux终端,输入命令:
echo 'export PATH=/usr/local/cuda-10.0/bin/:$PATH'>>~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH'>>/.bashrc
source ~/.bashrc

注意以上的第一行和第二行命令中的 cuda-10.0 这里根据安装的cuda版本不同所对应的文件夹名称也不同。如果安装是cuda9.0请到usr文件下找到local文件夹看看你所安装cuda文件夹名是什么,那么上面的 cuda-10.0 内容就相应改成什么。

需要注意的是:上述的方式只针对当前用户,因此最后一个命令是用于跳转到当前用户的命令窗口执行。在对应的用户终端命令栏中输入vncc -V则可以看到NVIDIA版本信息。

十三、Jetson安装mysql

1.系统

Jetson nano 官方系统是ubuntu,是在ubuntu上修改的NVIDIA系统 ubuntu18.04 LTS,好像是是aarch架构,系统界面如下

2.安装配置mysql

安装

和直接在ubuntu上安装没有什么区别,直接使用apt-get install mysql-server 得到的是5.x版本,不是最新的8.x版本 使用 apt-get 安装完后 会生成一些默认的账户在 /etc/mysql/debian.cnf中 可以通过sudo cat /etc/mysql/debian.cnf查看

配置用户

登录应该是需要安装mysqsl-client,也是使用apt-get install mysql-client安装

然后登录

mysql -u username -p 

然后输入密码
新建用户,赋予权限

create user 'username'@'localhost' identified by 'password';
#username是你想创建的用户名
#localhost是表示它可以通过那个ip来访问,localhost表示本地 其余ip表示其他地址 %表示所有
#password是密码
grant all privileges on 数据库.* to username@ip地址 ;
#好像mysql的用户是通过 username+ip来区别,可以有连个username相同的用户,只要ip不一样。

修改配置文件,实现远程访问

cd /etc/mysql

//然后ls一下 我的有下面这些东西,配置文件在mysql.conf.d中
//conf.d      debian-start  my.cnf.fallback  mysql.conf.d
//debian.cnf  my.cnf        mysql.cnf

cd mysql.conf.d
vim mysqld.cnf
     //将地址127.0.0.1 改成0.0.0.0
service mysql restart

mysql其他常用命令:

sudo service mysql restart
sudo netstat -tap | grep mysql        #查看是否允许

配置内网穿透

我选择使用花生壳进行内网穿透,花生壳还是比较方便的。
应该是可以直接参考树莓派的官方教程https://service.oray.com/question/11639.html

dpkg -i phtunnel_5_0_rapi_aarch64.deb      #安装

可以通过以下命令来操作:

phddns           	#查看命令
phddns 	start		#打开
phddns status		#可以查看SN码

打开http://b.oray.com ,在登录页面中输入SN码与默认密码(admin)登录。
剩下的就看官方教程就好了https://service.oray.com/question/11639.html
建立的映射应该是tcp类型,绑定到3306端口
注意,需要先给你的Nano 配置IP与MAC绑定,因为你的路由器应该是使用动态分配IP,打开192.168.1.1即可进行绑定,不然每次都要重新 在管理界面绑定一次。

测试

可以先在内网测试一下能否脸上nano的mysql,使用ifconfig获得内网地址类似与192.168.1.101,然后在自己电脑上用workbench测试一下。
测试成功后绑定外网然后在外网试一下。

十四、总结

这里之后,基本的盒子部署已经完成了,后面就是一些项目的具体实施,比如我目前在学习的ReID模块,我也会将其写成博客进行学习。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:55:14  更:2022-04-07 22:56:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 14:54:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码