手把手教你搭建鸿蒙hi3518开发和运行环境

2023-05-16

前言

学习C语言,C++语言,数据结构和算法,操作系统,网络,驱动,设计模式等知识

用鸿蒙来强化就太对了。本文教你一步一步搭建鸿蒙的开发和运行环境,有点啰嗦,适合小白。

本文所涉及的所有工具都可以在这里找到(提取码ue2a)

具体有下列步骤:

  • 组装开发板
  • 连接开发板
  • 安装串口驱动
  • 安装USB驱动
  • 安装烧录工具
  • 擦除引导程序
  • 烧录系统
  • 登录开发板
  • 修改OS启动地址
  • 运行可执行程序
  • 安装VMWARE
  • 安装编译服务器
  • 访问编译服务器
  • 编译鸿蒙产品
  • 编译鸿蒙组件
  • 打通开发板网络
  • 部署NFS
  • 新增自定义组件

组装开发板

我们选用HiSpark IPC DIY Camera产品。内部含hi3518ev300芯片。
请参考产品的安装说明书。

或者参考安装视频指导 

连接开发板

开发板和PC的连接关系如下图。2usb线(产品包装中的),其中一个三针插头,一个四针插头。

 

安装串口驱动
请双击USB-to-Serial Comm Port.exe。进行串口驱动安装,安装完成后。在设备管理器中应该能看到下面这样的COM接口,你的COM接口编号可能有所不同。表明串口驱动安装成功。

安装USB驱动

注意:有2USB驱动需要安装
双击zadig-2.5.exe安装通用USB驱动,点击中间的Install

 

安装第2USB驱动,这个驱动的名称是: HiUSBBurnDriver. 对应的安装文件已经放在网盘中,请自行安装。

上述2个驱动都安装成功以后,才能正常的进行USB烧录(往开发板烧录鸿蒙系统)。

安装烧录工具
直接解压HiTool-HM-5.4.9-win32-x86_64.zip文件。然后双击其中的HiTool.exe. 界面如下图。然后先将芯片切换到3518ev300

 

擦除引导程序
然后就是擦除uboot了,记得使用串口来擦除

有几点需要注意

  1. 由于编译服务器还没有创建,所以我把自己编译好的文件放网上了,你可以下载
  2. 文件路径根据你自己的实际路径,下载下来后存放的位置
  3. COM口根据你之前设备管理器看到的那个CH340口选择
  4. 确保顶部选中的芯片是3518ev300
  5. 传输方式选择串口
  6. 按分区烧写
  7. 器件类型spi nor
  8. 开始地址0,长度1M
  9. 点击擦除后10秒内拔插usb电源线接口(即接4个针脚的那个usb口,小的那个usb),让板子重启

很快就能看到擦除成功的提示

烧录系统

主要注意如下几点

  1. 使用usb口烧录(不是串口)
  2. 现在需要烧录4个文件(通过右侧绿色+可以添加文件)
  3. 每个文件的名称,器件类型,地址,长度要填写正确
  4. 最后点击烧写

然后等待烧写成功

 

如果你的烧写不成功,请检查之前的usb驱动是否已安装。

 

登录开发板
鸿蒙系统烧录好以后,就可以进去看一下鸿蒙系统的模样了。

双击MobaXterm_Personal_20.2.exe.  也可以用你自己喜欢的终端工具

然后点击Session, 在弹出的窗口中填好相关字段

点击OK以后,会进入下面这个界面

这里是uboot程序的界面,还没有进入鸿蒙OS,原因是uboot此时不知道鸿蒙OS的启动地址。

然后我们设置启动地址

设置OS启动地址

setenv bootcmd "sf probe 0;sf read 0x40000000 0x100000 0x600000;go 0x40000000";

setenv bootargs "console=ttyAMA0,115200n8 root=flash fstype=jffs2 rw rootaddr=7M rootsize=8M";

保存配置

saveenv

然后重启

然后,很快就可以看到鸿蒙OS起来了

如果你没有看到OHOS#字样,请按下几次enter键。接下来,我们手动运行一个鸿蒙的程序。

运行可执行程序

进入bin目录,运行writer程序(这个程序是我新增的,如果你的开发板上没有,你可以运行./camera_app程序)

创建编译服务器
为了省去搭建编译环境的繁琐,本次将一个已经搭建好的编译服务器制作成镜像。我们只需要使用这个镜像即可获得编译环境。

镜像文件比较大(超过8G),请直接找老师获取,也可以去前言提到的地方下载(建议晚上睡觉时下载)

本次使用的Ubuntu是不带桌面环境的。内部已经安装好HarmonyOS的编译环境,并且安装了samba文件共享工具。方便windows访问。

请先安装VMWARE WorkStation软件

然后打开它, 选择 文件-->打开

然后开始了服务器创建过程,这个过程比较漫长,请保持耐心。

访问服务器
服务器创建完成后。然后我们对它进行上电启动

等待服务器开机。1分钟内一般就能正常起来。这个过程中,注意保持网线插入,因为虚拟机和PC之间是通过有线网卡桥接的。启机过程有软件会探测网络是否在,否则会很慢。

当屏幕输出变慢后,我们就可以访问它了,当然也可以在黑窗口里面直接键入各种命令,不过不方便。

把鼠标放入黑窗口,点击以后,鼠标焦点就进入黑窗口了,让焦点退出来的方法是按CTRL+g

 

如果想在黑窗口操作linux相关命令,则键入用户名compile  密码compile

一般我们不在黑窗口操作。

我们需要如下2种方法来访问虚拟机:

  1. 通过ssh访问,即可以远程登录虚拟机的shell,并执行命令
  2. 通过文件共享访问,可以在windows上查看和修改虚拟机中的文件

注意:

  1. 当前创建的虚拟机采用的是桥接模式,它的IP地址为192.168.2.20。你需要确保虚拟机中的IP地址和自己PCIP地址在同一个网段。(最简单的方法是在自己的网卡上添加一个192.168.2.X网段的IP地址)Windows添加IP地址的方法请自行查阅。
  2. 如果多台编译服务器在同一个局域网络,那么IP地址会冲突,因为都是192.168.2.20。所以,需要对地址进行修改。

SSH访问

点击OK以后,就登录到了编译服务器的shell

文件共享访问

为了从Windows访问编译服务器上的源代码和编译出的目标文件,在编译服务器上已经安装好了samba文件共享服务,只需要在windows这边映射网络驱动器即可。按如下方法操作。

右键点击 计算机 ,选择映射网络驱动器。

然后就可以在windows看到编译服务器上的内容了。

现在开始,你就可以像操作windows的文件一样来操作编译服务器里面的文件了(比如通过Visual Studio来修改服务器上的C/C++代码文件)

编译产品

整个工程是存放在~/harmonyos/openharmony目录,

得先进入这个目录。

然后执行python脚本来编译产品。如下红色框即编译整个产品。

特别提醒:

python build.py ipcamera_hi3518ev300 -b debug

编译debug版本才会含有调试的shell,如果省略-b debug,无法通过shell命令行执行命令。

大约需要10多分钟完成产品编译,编译成功后,结果如下。

然后在windows文件夹下可以看到编译出来的结果

每次系统烧录时,将上述3个文件以及uboot文件(Z:\vendor\hisi\hi35xx\hi3518ev300\uboot\out\boot\u-boot-hi3518ev300.bin)

拷贝到windows某个目录下(比如我的例子中的D:\BIN),然后用HiTool.exe来烧录。

更新源码
鸿蒙系统目前更新比较频繁,如果需要获取最新版本,请执行下面的命令更新源码。

这里有一个问题:编译服务器预设的192.168.2.20无法上网。这个时候你可以再添加1IP地址(添加可以上网的IP地址)。然后再执行下面2条命令

cd ~/harmonyos/openharmony

repo sync -c

。。。待贴图。。。

 

编译组件
编译完整产品比较耗时,大多数时候我们修改的代码较少,只需要编译指定的组件就行了。

-T指定编译一个已经存在的组件,只编译一个小组件,速度飞快。

注意,编译组件的时候 -T 后面的路径需要使用全路径。如何确定-T后面的参数?请看下图

文本编辑器(notepad++)打开build/lite/product/ ipcamera_hi3518ev300.json文件

这个组件涉及的代码文件是哪些呢,继续看对应目录的BUILD.gn文件,对于此例子为//applications/sample/camera/app

生成的程序在下面这个目录

打通网络

设备本身没有以太口,只有wifi接口。但默认情况下wifi是无法工作的。

输入ifconfig你会看到wlan0接口IP地址为0

               

需要做如下工作才能让wifi正常运行起来。

  • 配置SSID和密码
  • 修改wpa_sample.c源码
  • 配置自启动
  • 编译系统

 

配置SSID和密码
修改applications\sample\camera\communication\wpa_supplicant\config\ wpa_supplicant.conf

修改后的内容如下。这个文件的目的是配置wifi用户名和密码

country=GB

ctrl_interface=udp

network={

        ssid="teacher"

        psk="12345678qwe"

    }

注意

  • =2端不要留空格
  • ssidpsk按你自己的实际进行配置,比如你手机热点的网络名和密码。

 

修改源码
修改applications\sample\camera\communication\wpa_supplicant\src\wpa_sample.c源代码

只修改main函数部分。这个程序的目的是读取wifi用户名和密码配置文件,并进行wifi连接。

int main(int argc, char *argv[])

{

    g_wpaArgc = argc;

    for (int i = 0; i < g_wpaArgc; i++) {

        g_wpaArg[i] = argv[i];

    }

    g_wpaArgc=5;

    g_wpaArg[1] = "-i";

    g_wpaArg[2]="wlan0";

    g_wpaArg[3]="-c";

    g_wpaArg[4]="/etc/wpa_supplicant.conf";

    int ret = pthread_create(&g_wpaThread, NULL, ThreadMain, NULL);

    if (ret != 0) {

        printf("[WpaSample]create thread failed error:%s.\n", strerror(ret));

        return 1;

    }

    pthread_join(g_wpaThread, NULL);

    return 0;

}

复制

配置自启动
刚才修改的main会生成一个可执行程序,这个程序我们需要把它配置在启动脚本中,这样每次板子重启都会运行这个程序

修改文件vendor\huawei\camera\init_configs\ init_liteos_a_3518ev300.cfg   红色部分为新增

{
    "jobs" : [{
            "name" : "pre-init",
            "cmds" : [
                "mkdir /storage/data/log",
                "chmod 0755 /storage/data/log",
                "chown 4 4 /storage/data/log",
                "mkdir /storage/data/softbus",
                "chmod 0700 /storage/data/softbus",
                "chown 7 7 /storage/data/softbus",
                "mkdir /sdcard",
                "chmod 0777 /sdcard",
                "mount vfat /dev/mmcblk0 /sdcard rw,umask=000",
                "mount vfat /dev/mmcblk1 /sdcard rw,umask=000"
            ]
        }, {
            "name" : "init",
            "cmds" : [
                "start shell",
                "start apphilogcat",
                "start foundation",
                "start bundle_daemon",
                "start media_server",
                "start appspawn",
  
"start wpa_supplicant"

            ]
        }, {
            "name" : "post-init",
            "cmds" : [
                "chown 0 99 /dev/dev_mgr",
                "chown 0 99 /dev/hdfwifi",
                "chown 0 99 /dev/gpio",
                "chown 0 99 /dev/i2c-0",
                "chown 0 99 /dev/i2c-1",
                "chown 0 99 /dev/i2c-2",
                "chown 0 99 /dev/uartdev-0",
                "chown 0 99 /dev/uartdev-1",
                "chown 0 99 /dev/uartdev-2",
                "chown 0 99 /dev/spidev0.0",
                "chown 0 99 /dev/spidev1.0",
                "chown 0 99 /dev/spidev1.1"
            ]
        }
    ],
    "services" : [{
            "name" : "foundation",
            "path" : "/bin/foundation",
            "uid" : 7,
            "gid" : 7,
            "once" : 0,
            "importance" : 1,
            "caps" : [10, 11, 12, 13]
        }, {
            "name" : "shell",
            "path" : "/bin/shell",
            "uid" : 2,
            "gid" : 2,
            "once" : 0,
            "importance" : 0,
            "caps" : [4294967295]
        }, {
            "name" : "appspawn",
            "path" : "/bin/appspawn",
            "uid" : 1,
            "gid" : 1,
            "once" : 0,
            "importance" : 0,
            "caps" : [2, 6, 7, 8, 23]
        }, {
            "name" : "apphilogcat",
            "path" : "/bin/apphilogcat",
            "uid" : 4,
            "gid" : 4,
            "once" : 1,
            "importance" : 0,
            "caps" : []
        }, {
            "name" : "media_server",
            "path" : "/bin/media_server",
            "uid" : 5,
            "gid" : 5,
            "once" : 1,
            "importance" : 0,
            "caps" : []
        }, {
            "name" : "wms_server",
            "path" : "/bin/wms_server",
            "uid" : 6,
            "gid" : 6,
            "once" : 1,
            "importance" : 0,
            "caps" : []
        }, {
            "name" : "bundle_daemon",
            "path" : "/bin/bundle_daemon",
            "uid" : 8,
            "gid" : 8,
            "once" : 0,
            "importance" : 0,
            "caps" : [0, 1]
        }
,{
     "name": "wpa_supplicant",
     "path": "/bin/wpa_supplicant",
     "uid" : 0,
     "gid" :  0,
     "once" : 1, 
     "importance" : 0,
     "caps": [] 
 }
    ]
}

wifi功能参与编译

编译wifi模块的时候,要修改build/lite/product/ ipcamera_hi3518ev300.json文件,才能让wpa_supplicant这个模块参与编译,修改如下:

 

编译系统

此时我们配置好了wifi用户名和密码,也修改了wifi启动程序并设置好了启动脚本。接下来我们把这些修改编译到系统中,然后再烧录到板子上

当完整编译系统,烧录好以后,新版本的系统起来以后,我们可以看到wlan0 的接口的IP地址正常获取到了。

部署NFS
当网络打通以后,我们就可以部署NFS(网络文件系统)了。部署NFS最大的好处是,可以将windows的某个文件夹当成开发板上的文件夹来使用,这样,不需要把编译的程序手动拷贝到开发板去,就可以执行编译出来的程序。

主要分为如下3个过程

  1. 安装NFS Server
  2. 配置和启动Server
  3. 挂载NFS

安装NFS
PC上安装NFS服务器。双击nfs1169.exe进行安装,同常规软件安装方法。

配置NFS
安装好以后,就是配置了,这一步稍微麻烦。首先需要以管理员身份运行NFS服务器

开始-->所有程序-->haneWIN软件-->NFS-->NFS服务器(右键点击)--选择(以管理员身份运行)

编辑输出表文件。如下。

然后保存

然后我们配置防火墙,使得NFS相关的网络通信畅通。先看需要放行哪些端口。

需要放行的端口有: 111, 1058, 2049. TCPUDP都需要。

然后我们配置放行这些端口(即允许这些端口的流量通过)

控制面板\系统和安全\Windows 防火墙

 

确保规则已配置好。然后重启防火墙(关闭防火墙,再打开防火墙)

重启NFS

开始---所有程序---haneWIN软件---NFS---重启所有服务(以管理员身份运行)

挂载NFS

在开发板shell界面,挂载NFS

先确保开发板和PC之间能互通(可以从PC ping开发板)。我的开发板和PC都通过wifi连接手机热点,所以在一个网段,能互相ping通。

然后开发板上面执行下面的命令。

除了IP地址调整成你PC的地址,其它信息照抄。挂载成功会显示finished如红框所示。

然后我们就可以执行windows上的程序了。

在我的机器上,上述文件存放在d:\BIN目录。因为这个目录我配置成了NFS Server的根目录

所以,能从开发板上看到并运行它们。

上述这些内容,是通过从编译服务器拷贝出来的。如何拷贝,请参阅访问虚拟机章节。

 

添加组件

如果我们要新增程序怎么处理。请仿照范例中的camer_app处理。具体如下,比如我新增了一个reader程序,一个writer程序。以下描述reader的添加逻辑。

 

applications\sample\camera目录下,将app目录复制一份,改名为reader

然后修改reader里面的文件。先修改BUILD.gn

然后源码根据自己的实际情况修改。

最后修改编译脚本build\lite\product\ ipcamera_hi3518ev300.json

添加红框中的一行,然后按组件编译方式编译就可以了。

编译好的程序在out\ipcamera_hi3518ev300\bin目录下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手教你搭建鸿蒙hi3518开发和运行环境 的相关文章

  • 嵌入式中利用ubuntu-base构建根文件系统

    在嵌入式环境中 xff0c 我们最常用busybox yocto或buildroot来构建根文件系统 xff0c 这种情况下 xff0c 当我们需要使用一些组件的时候 xff0c 往往需要我们使用源码编译 xff0c 移植到开发板中 那有没
  • 【无标题】

    前言 eventfd可以用于线程或者父子进程间通信 xff0c 内核通过eventfd也可以向用户空间进程发消息 其核心实现是在内核空间维护一个计数器 xff0c 向用户空间暴露一个与之关联的匿名fd 不同线程通过读写该fd通知或等待对方
  • Python url请求提示certificate verify failed unable to get local issuer certificate

    python当使用requests get获取https链接时 xff0c 提示如下错误 xff1a ssl SSLCertVerificationError SSL CERTIFICATE VERIFY FAILED certificat
  • mybatisplus @Select注解中拼写动态sql异常

    使用mybatisplus后 xff0c 手写SQL语句很少了 xff0c 偶尔使用 64 Select时 xff0c 之前一直用实体类传递参数 xff0c 完全能够正常使用 xff0c 今天换成了参数传递 xff0c 报下面的错误 spa
  • 使用mybatis plus批量插入数据

    之前用mybaits插入数据时 xff0c 需要在sql语句中作特殊的处理 xff0c 然后才能够批量插入数据 今天试验了一下mybatis plus的批量插入方式 xff0c 简直太简单了 xff0c 太爽了 xff0c 真真切切的体会到
  • 使用java的modbus4j的Rtu方式获取监测数据

    最近要从modbus总线上获取数据 xff0c 还要用java开发 xff0c 找了半天 xff0c 感觉modbus4j在github上评价比较高 xff0c 尝试了一下 xff0c 果然很好用 xff0c 比之前的方法方便很多 在使用过
  • JAVA使用RXTXcomm包操作串口数据流

    最近对接下位机 xff0c 对方没有使用modbus总线协议来对接 xff0c 直接使用的操作流对接 xff0c 找了一下java中使用RXTXcomm jar比较方便 xff0c 下面是包的使用方法 1 maven工程中引入依赖 可能这个
  • 搭建分布式存储服务minio详细过程

    最近项目的存储量比较大 xff0c 考虑项目后期存储需要拓展 xff0c 决定使用分布式存储 xff0c 综合考察后 xff0c 最终选定使用minio作为存储服务 以下是使用步骤 xff0c MARK一下 xff01 1 服务器 span
  • STM32单片机的学习方法(方法大体适用所有开发版入门)

    1 xff0c 一款实用的开发板 这个是实验的基础 xff0c 有时候软件仿真通过了 xff0c 在板上并不一定能跑起来 xff0c 而且有个开发板在手 xff0c 什么东西都可以直观的看到 xff0c 效果不是仿真能比的 但开发板不宜多
  • HTTP协议各字段信息

    HTTP协议 xff1a 超文本传输协议 xff0c 为一个应用层协议 xff1b 协议只是传输的一种约定 xff0c 我们也可以自定义一种协议 xff0c 只不过说有些大佬已经写好 xff0c 我们用就可以了 HTTP协议的内容 xff1
  • k8s和docker区别

    k8s和docker区别有以下几点 xff1a 1 k8s是一种开放源码的容器集群管理系统 xff0c 能够实现自动化部署 扩展容器集群 维护等功能 2 Docker是一种开放源码的应用容器引擎 xff0c 开发者可以将他们的应用和依赖打包
  • VMware虚拟机中不能解析域名

    VMware虚拟机中能够正常访问局域网IP xff0c 输入域名不能上网 xff0c 但是ping一下外网ip是可以通的 xff0c 不能解析域名 xff0c 解决方法 xff1a span class token number 1 spa
  • 在Ubuntu安装软件时,显示“E:无法定位软件包

    今天在安装can utils时 xff0c 使用了命令sudo apt install can utils xff0c 提示 E 无法定位软件包 34 xff0c 也不明白为啥报这个错 xff0c 命名我的是linux系统呀 xff0c 哪
  • linux下can调试工具libsocketcan、canutils安装与使用

    1 本次使用的组件版本 libsocketcan 0 0 11 tar bz2 下载地址 xff1a https public pengutronix de software libsocketcan libsocketcan 0 0 11
  • vue中methods、mounted等使用方法整理

    created html加载完成之前 xff0c 执行 执行顺序 父组件 子组件 mounted html加载完成后执行 执行顺序 子组件 父组件 methods 事件方法执行 watch 去监听一个值的变化 xff0c 然后执行相对应的函
  • 使用STM32G4 ----串口发送数据USART_TX的使用

    一 引脚的配置 串口对应的引脚 PA10 span class token operator span span class token operator span span class token operator span span c
  • 【MFC】CListCtrl控件的GetItem用法

    GetItem 方法 说明 检索列表视图项的部分属性或全部属性 BOOL GetItem LVITEM pItem const 参数 pItem 指向 LVITEM 结构的指针 xff0c 该结构接收项的属性 返回值 如果成功 xff0c
  • NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

    NVIDIA Jetson Xavier NX部署VINS fusion GPU 一 环境配置 xff08 Ubuntu 18 04 xff09 1 Cuda 10 2的安装 span class token function sudo s
  • OPi5 香橙派5 安卓12 隐藏大屏模式下任务栏

    记录一下 原版安卓系统在检测到副屏 xff0c 会进入大屏模式 xff0c 屏幕底下有个难看又占地方的任务栏 以下是隐藏的方法 xff0c 在所有界面都会隐藏 xff0c 包括三个虚拟按键 不过 xff0c 用其他APP仍然可以调用包括最近
  • 无人机飞行控制基础

    坐标系统 描述无人机的运动依赖于无人机的位置以及它的方向 常见的主要有两种坐标系统 xff1a 无人机坐标系和大地坐标系 无人机坐标系 无人机坐标系是相对于无人机自身的坐标系统 如下图 坐标原点位于无人机质心 xff0c 三个坐标轴互相垂直

随机推荐

  • socketcan_bridge 包 设置多路CAN口 小记

    参考链接 xff1a socketcan bridge ROS Wiki 基于ROS 43 CANopen的SocketCAN驱动在Ubuntu下的应用说明 SzZhangfq的博客 CSDN博客 ros socketcan socketc
  • 你知道几个中文编程语言,快来瞧瞧这些有趣的中文编程语言。

    提到编程语言 xff0c 我们所了解的也是比较广为人知的一些主流编程语言 xff0c 如Java C C 43 43 Python PHP等 那除了这些编程语言 xff0c 你有了解过中文编程语言吗 xff1f 如果没有 xff0c 那今天
  • Win10连接无线“需要执行操作”或无网络问题的解决方法。

    转载自品略图书馆 http www pinlue com article 2020 03 2800 3510060445349 html 最近这几天有用户反馈Win10系统连接网络出现异常的问题 xff0c 表现为连接到无线网络WIFI之后
  • Excel怎么比较两列文本是否相同?

    转载自品略图书馆 http www pinlue com article 2020 05 2215 1410586873210 html 这个问题很简单 xff0c 属于Excel基础操作技巧 xff0c 我就分享我最喜欢用的三招给你 xf
  • 为什么电脑唯独搜不到自己家wifi?

    转载自品略图书馆 http www pinlue com article 2020 05 2213 2410586244619 html 电脑唯独搜不到自己家wifi xff0c 别人家的都能搜到 xff0c 手机也可以搜到自己家的 xff
  • http://和www.前缀网站有什么具体区别?

    转载自品略图书馆 http www pinlue com article 2019 03 1813 598231572617 html 将http 和www 放一起比较 xff0c 是没有实际意义的 一 http协议二 域名一 http协议
  • 什么是三层交换机、网关、DNS、子网掩码、MAC地址?

    转载自品略图书馆 http www pinlue com article 2020 08 2313 2511146576256 html 一文讲懂什么是三层交换机 网关 DNS 子网掩码 MAC地址 很多朋友多次问到什么是网关 dns 子网
  • C++类对象共享数据的5种实现方法

    转自 xff1a http www pinlue com article 2020 09 2617 0611262487540 html
  • c语言free的用法

    转自 xff1a http www pinlue com article 2020 03 3100 4610073901713 html
  • Spring Boot 修改默认端口号

    修改配置文件 xff0c 加上参数 xff1a server port 61 8014 或者 xff1a server port 8014 启动后可发现tomcat运行在端口8014上了 实现原因可看以下链接 转载 SpringBoot修改
  • php调用类中的方法

    转自 xff1a http www pinlue com article 2020 06 1219 0410725563037 html
  • 人工智能 : 第三篇”脑机接口“

    本文作者Tim Urban xff1a Wait but Why的作者Tim Urban 是埃隆马斯克 xff08 特斯拉 SpaceX创始人 xff09 强烈推荐的科技博主 他写的AI文章是全世界转发量最高的 他的粉丝还包括 xff1a
  • 如何找回一台丢失的Win10电脑?

    今天说说如何找电脑 为什么小微想到了这个问题 还要从一次关于奇葩办公地点的讨论说起 看到大家的回答 xff0c 小微佩服得五体投地 办公经历还可以如此精jing彩xin绝dong伦po 作为结实靠谱的出行伙伴 ThinkPad陪伴大家出现在
  • 不必再狂按空格键了!Word 里文字对齐推荐这4种方法

    我们在用Word写论文 制作简历的时候 xff0c 通常会遇到把word中某些特定文字对齐的情况 那么问题来了 xff0c 你平时都是怎么对齐文字的 xff1f 傻傻的用空格来对齐吗 xff1f 在字符数不等的情况下 xff0c 加空格不仅
  • AMI主板BIOS菜单图文讲解设置!

    电脑硬件 xff0c 包括电脑中所有物理的零件 xff0c 以此来区分它所包括或执行的数据和为硬件提供指令以完成任务的软件 主要包含 机箱 xff0c 主板 xff0c 总线 xff0c 电源 xff0c 硬盘 xff0c 存储控制器 xf
  • luffy-02

    这里写目录标题 一 昨日回顾二 今日内容1 路飞前台配置 1 重构项目目录 2 文件修订 xff1a 目录中非配置文件的多余文件可以移除router的使用 3 前台配置 全局样式 配置文件 axios vue cookies element
  • luffy-03

    这里写目录标题 一 昨日回顾二 今日内容1 跨域问题1 1后端自己处理跨域简单请求非简单请求中间件处理 1 2前端处理跨域App vuevue config js 2 头部组件 尾部组件components Header vuecompon
  • luffy-04

    这里写目录标题 一 昨日回顾二 今日内容1 路飞项目使用xadmin2 首页轮播图接口 轮播图表 视图类 轮播图数量4 通过配置实现 前端对接 后续 接口缓存 3 git的使用3 1git的工作流程 4 git分支git提交代码出现冲突的2
  • luffy-05

    这里写目录标题 一 首页轮播图接口二 今日内容1 过滤文件2 从远端拉项目3 远程仓库3 1链接远程仓库的两种情况 4 冲突出现的原因及解决 一 首页轮播图接口 span class token number 1 span 首页轮播图接口
  • 手把手教你搭建鸿蒙hi3518开发和运行环境

    前言 学习 C 语言 xff0c C 43 43 语言 xff0c 数据结构和算法 xff0c 操作系统 xff0c 网络 xff0c 驱动 xff0c 设计模式等知识 用鸿蒙来强化就太对了 本文教你一步一步搭建鸿蒙的开发和运行环境 xff