文章目录

  • 一、构建一些Networking相关的工具
  • 二、STA模式--连接WiFi
    • 2.1 加载模块
    • 2.2 打开wlan0
    • 2.3 连接WiFi(wpa_supplicant)
      • 第一步:编辑`vi /etc/network/interfaces`文件
      • 第二步:编辑配置文件:`vi /etc/wpa_supplicant.conf`
      • 第三步:创建一个socket通信的目录
      • 第四步:运行命令连接WiFi
      • 第五步:配置DHCP,获取IP地址
      • 第六步:检查网络状况
      • 第七步:ping功能测试
  • 三、设置开机启动连接WiFi

总结:主线Linux目前没有可用的解决方法,就算加载成功并连接成功后,过一段时间也会奔溃,目前无解,需要避开这个大坑!!!

一、构建一些Networking相关的工具

  • wpa_supplicant:
  • hostapd:
  • dhcpc:
    buildroot构建文件系统:

wpa_supplicant 需要 Openssl 支持

> Target packages ----> Libraries ----> Crypto----> [*] openssl----> [*] openssl binary----> [*] openssl additional engines

二、STA模式–连接WiFi

如上:WiFi模块的复位引脚是PB4,GPIO就是43

2.1 加载模块

insmod /lib/modules/esp8089.ko config=crystal_26M_en=1 esp_reset_gpio=43
# insmod /lib/modules/esp8089.ko config=crystal_26M_en=1 esp_reset_gpio=43
[   47.055824] esp8089: unknown parameter 'config' ignored
[   47.061635]
[   47.061635] ***** EAGLE DRIVER VER:bdf5087c3deb*****
[   47.061635]
[   47.069704] ESP8089 reset via GPIO 43
[   47.289314] esp_sdio_dummy_probe enter
[   47.509006] esp_sdio_init power up OK
[   47.976313] esp_host:bdf5087c3deb
[   47.976313] esp_target: e826c2b3c9fd 57 18202
[   47.976313]
[   47.985659] esp_readwrite_file: file /system/lib/modules/test_results filp_open error
[   47.994634] first normal exit
[   47.997870] esp_sdio_remove enter
[   48.002734] sif_disable_irq release irq failed
[   48.119286] eagle_sdio: probe of mmc1:0001:1 failed with error -110
# [   48.169593] mmc1: card 0001 removed
[   48.223706] mmc1: queuing unknown CIS tuple 0x01 (3 bytes)
[   48.236381] mmc1: queuing unknown CIS tuple 0x1a (5 bytes)
[   48.245281] mmc1: queuing unknown CIS tuple 0x1b (8 bytes)
[   48.252668] mmc1: queuing unknown CIS tuple 0x80 (1 bytes)
[   48.258200] mmc1: queuing unknown CIS tuple 0x81 (1 bytes)
[   48.264257] mmc1: queuing unknown CIS tuple 0x82 (1 bytes)
[   48.269900] mmc1: new high speed SDIO card at address 0001
[   48.633821] esp_host:bdf5087c3deb
[   48.633821] esp_target: e826c2b3c9fd 57 18202
[   48.633821]
[   48.723697] esp_op_add_interface STA

2.2 打开wlan0

# ifconfig wlan0 up
# ifconfig
lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:64 errors:0 dropped:0 overruns:0 frame:0TX packets:64 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:4736 (4.6 KiB)  TX bytes:4736 (4.6 KiB)wlan0     Link encap:Ethernet  HWaddr AC:D0:74:C1:26:99UP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

2.3 连接WiFi(wpa_supplicant)

第一步:编辑vi /etc/network/interfaces文件

# Configure Loopback
auto lo
iface lo inet loopback
# wlan0
auto wlan0
iface wlan0 inet dhcp

 wpa_supplicant连接WIFI的时候会从配置文件中读取账号和密码,以及加密方式等, 所以我们再运行wpa_supplicant工具的时候要提前写好配置文件。

第二步:编辑配置文件:vi /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={ssid="liefyuan"scan_ssid=1key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONEpairwise=TKIP CCMPgroup=CCMP TKIP WEP104 WEP40psk="1234567890"priority=5
}

第三步:创建一个socket通信的目录

mkdir -p /var/run/wpa_supplicant

第四步:运行命令连接WiFi

# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device

第五步:配置DHCP,获取IP地址

# udhcpc -i wlan0
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending select for 192.168.1.109
udhcpc: lease of 192.168.1.109 obtained, lease time 7200
deleting routers
adding dns 202.96.134.33
adding dns 202.96.128.68

第六步:检查网络状况

# wpa_cli -iwlan0 status
bssid=c8:e7:d8:34:27:84
freq=2437
ssid=MERCURY_2784
id=0
mode=station
wifi_generation=4
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
ip_address=192.168.1.109
p2p_device_address=ac:d0:74:c1:26:99
address=ac:d0:74:c1:26:99
uuid=29899bfe-dde5-5afd-9f9f-0797878b0d93

第七步:ping功能测试

# ping www.baidu.com
PING www.baidu.com (14.215.177.39): 56 data bytes
64 bytes from 14.215.177.39: seq=0 ttl=56 time=28.294 ms
64 bytes from 14.215.177.39: seq=1 ttl=56 time=19.842 ms
64 bytes from 14.215.177.39: seq=2 ttl=56 time=16.529 ms
64 bytes from 14.215.177.39: seq=3 ttl=56 time=19.067 ms
64 bytes from 14.215.177.39: seq=4 ttl=56 time=31.391 ms
64 bytes from 14.215.177.39: seq=5 ttl=56 time=15.985 ms
64 bytes from 14.215.177.39: seq=6 ttl=56 time=15.033 ms
64 bytes from 14.215.177.39: seq=7 ttl=56 time=16.011 ms
64 bytes from 14.215.177.39: seq=8 ttl=56 time=14.188 ms
64 bytes from 14.215.177.39: seq=9 ttl=56 time=15.148 ms
64 bytes from 14.215.177.39: seq=10 ttl=56 time=15.779 ms
64 bytes from 14.215.177.39: seq=11 ttl=56 time=13.834 ms
64 bytes from 14.215.177.39: seq=12 ttl=56 time=12.730 ms
64 bytes from 14.215.177.39: seq=13 ttl=56 time=16.115 ms
64 bytes from 14.215.177.39: seq=14 ttl=56 time=9.792 ms
64 bytes from 14.215.177.39: seq=15 ttl=56 time=12.465 ms
^C
--- www.baidu.com ping statistics ---
16 packets transmitted, 16 packets received, 0% packet loss
round-trip min/avg/max = 9.792/17.012/31.391 ms

如果复位了:https://whycan.com/t_4326.html

十多分钟后还是崩溃了!无语了!

[  412.649394] esp_sdio_remove enter
[  412.653926] sif_disable_irq release irq failed
[  412.658381] ------------[ cut here ]------------
[  412.663119] WARNING: CPU: 0 PID: 72 at kernel/workqueue.c:3031 __flush_work+0x184/0x1ac
[  412.671150] Modules linked in: esp8089
[  412.674910] CPU: 0 PID: 72 Comm: kworker/0:2 Not tainted 5.2.0-licheepi-zero #3
[  412.682206] Hardware name: Allwinner sun8i Family
[  412.686917] Workqueue: events_freezable mmc_rescan
[  412.691728] [<c010ec34>] (unwind_backtrace) from [<c010b6cc>] (show_stack+0x10/0x14)
[  412.699473] [<c010b6cc>] (show_stack) from [<c0715720>] (dump_stack+0x94/0xa8)
[  412.706693] [<c0715720>] (dump_stack) from [<c011d984>] (__warn+0xfc/0x114)
[  412.713649] [<c011d984>] (__warn) from [<c011dab0>] (warn_slowpath_null+0x40/0x48)
[  412.721212] [<c011dab0>] (warn_slowpath_null) from [<c0133eec>] (__flush_work+0x184/0x1ac)
[  412.729472] [<c0133eec>] (__flush_work) from [<c0136fc8>] (__cancel_work_timer+0x110/0x1ec)
[  412.737850] [<c0136fc8>] (__cancel_work_timer) from [<bf004168>] (sip_detach+0xe8/0x1bc [esp8089])
[  412.746827] [<bf004168>] (sip_detach [esp8089]) from [<bf000fe0>] (esp_sdio_remove+0x60/0x1ac [esp8089])
[  412.756316] [<bf000fe0>] (esp_sdio_remove [esp8089]) from [<c0539780>] (sdio_bus_remove+0x30/0xf8)
[  412.765274] [<c0539780>] (sdio_bus_remove) from [<c04330b4>] (device_release_driver_internal+0xdc/0x1a0)
[  412.774748] [<c04330b4>] (device_release_driver_internal) from [<c0431bec>] (bus_remove_device+0xcc/0xf8)
[  412.784308] [<c0431bec>] (bus_remove_device) from [<c042e2a0>] (device_del+0x13c/0x324)
[  412.792308] [<c042e2a0>] (device_del) from [<c0539c08>] (sdio_remove_func+0x1c/0x28)
[  412.800045] [<c0539c08>] (sdio_remove_func) from [<c0537a34>] (mmc_sdio_remove+0x40/0x70)
[  412.808216] [<c0537a34>] (mmc_sdio_remove) from [<c0537c44>] (mmc_sdio_detect+0x6c/0xf8)
[  412.816299] [<c0537c44>] (mmc_sdio_detect) from [<c052fe30>] (mmc_rescan+0x1bc/0x38c)
[  412.824124] [<c052fe30>] (mmc_rescan) from [<c0135e64>] (process_one_work+0x150/0x358)
[  412.832034] [<c0135e64>] (process_one_work) from [<c0136098>] (worker_thread+0x2c/0x518)
[  412.840121] [<c0136098>] (worker_thread) from [<c013b854>] (kthread+0x120/0x150)
[  412.847513] [<c013b854>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
[  412.854723] Exception stack(0xc3ba5fb0 to 0xc3ba5ff8)
[  412.859770] 5fa0:                                     00000000 00000000 00000000 00000000
[  412.867937] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  412.876103] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[  412.882795] ---[ end trace 3facca9bc593b142 ]---
[  412.887457] wlan0: deauthenticating from c8:e7:d8:34:27:84 by local choice (Reason: 3=DEAUTH_LEAVING)
[  412.990409] mmc1: card 0001 removed
[  413.047521] sdio_read_cis: 2 callbacks suppressed
[  413.047534] mmc1: queuing unknown CIS tuple 0x01 (3 bytes)
[  413.071318] mmc1: queuing unknown CIS tuple 0x1a (5 bytes)
[  413.084716] mmc1: queuing unknown CIS tuple 0x1b (8 bytes)
[  413.095915] mmc1: queuing unknown CIS tuple 0x80 (1 bytes)
[  413.110722] mmc1: queuing unknown CIS tuple 0x81 (1 bytes)
[  413.119887] mmc1: queuing unknown CIS tuple 0x82 (1 bytes)
[  413.132454] mmc1: new high speed SDIO card at address 0001
[  413.152429] 8<--- cut here ---
[  413.155554] Unable to handle kernel NULL pointer dereference at virtual address 00000004
[  413.163791] pgd = 7a215147
[  413.166501] [00000004] *pgd=00000000
[  413.170112] Internal error: Oops: 17 [#1] SMP ARM
[  413.174810] Modules linked in: esp8089
[  413.178565] CPU: 0 PID: 72 Comm: kworker/0:2 Tainted: G        W         5.2.0-licheepi-zero #3
[  413.187247] Hardware name: Allwinner sun8i Family
[  413.191961] Workqueue: events_freezable mmc_rescan
[  413.196783] PC is at esp_sdio_probe+0x48/0x3e4 [esp8089]
[  413.202094] LR is at sdio_bus_probe+0xfc/0x114
[  413.206531] pc : [<bf001174>]    lr : [<c0539944>]    psr: 20070013
[  413.212787] sp : c3ba5d98  ip : 29aaaaab  fp : c0b04c48
[  413.218003] r10: 0000000e  r9 : bf00a188  r8 : bf00a188
[  413.223220] r7 : c3356200  r6 : bf00d080  r5 : bf039784  r4 : 00000000
[  413.229736] r3 : c3356208  r2 : 00000003  r1 : 00000000  r0 : c3356200
[  413.236255] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
[  413.243379] Control: 10c5387d  Table: 4335c06a  DAC: 00000051
[  413.249118] Process kworker/0:2 (pid: 72, stack limit = 0x2bb573d3)
[  413.255377] Stack: (0xc3ba5d98 to 0xc3ba6000)
[  413.259731] 5d80:                                                       bf00d0e8 0000000e
[  413.267899] 5da0: c0b04c48 c3356208 00000000 c3356200 bf00d0e8 bf00a188 bf00d0e8 c0539944
[  413.276067] 5dc0: c0b838c8 c3356208 00000000 c0b838cc 00000001 c04329b4 c3356208 bf00d0e8
[  413.284235] 5de0: c0432e1c c0b04c48 00000001 00000000 00000001 c0432c34 c0b41240 00000000
[  413.292402] 5e00: 00000000 c0b87250 bf00d0e8 c3ba5e64 c3356208 00000000 c3ba5e64 c0432e1c
[  413.300570] 5e20: c0b04c48 00000001 00000000 00000001 c0b04c48 c0430cc8 00000001 c39a0c6c
[  413.308738] 5e40: c31dd9b8 3e4fcf47 c3356208 c3356208 c0b04c48 c335624c c3299008 c0432764
[  413.316906] 5e60: 00000cc0 c3356208 00000001 3e4fcf47 c3356208 c3356208 c0b3b860 c3299008
[  413.325074] 5e80: 00000000 c0431b18 c3356208 00000000 c0b04c48 c042f5cc c3356200 c3b91000
[  413.333242] 5ea0: 00000001 c052f164 c3299004 3e4fcf47 c3ba5ec8 c3356200 c3356208 c3299004
[  413.341410] 5ec0: c3b91000 c3299398 c3299000 c0539bd8 00000000 00000001 c3299004 c0538f40
[  413.349577] 5ee0: 00000000 c3ba5ef7 00000000 00000000 00000000 00000000 10ffff00 3e4fcf47
[  413.357745] 5f00: ffffff92 c3b9128c 00061a80 c3b91000 c086bfc0 c086bfcc c3b91290 00000000
[  413.365913] 5f20: c3dee880 c052ff78 c3b9b580 c3b9128c c3dee880 c3df1c00 00000000 c0135e64
[  413.374081] 5f40: c3dee898 c0b03d00 c3b9b580 c3dee880 c3b9b594 c3dee898 c0b03d00 c3ba4000
[  413.382249] 5f60: 00000008 c0136098 00000000 c3b9c180 c3b9c100 00000000 c3b9b580 c013606c
[  413.390417] 5f80: c3b9c19c c3845ebc 00000000 c013b854 c3b9c100 c013b734 00000000 00000000
[  413.398584] 5fa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
[  413.406751] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  413.414918] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[  413.423114] [<bf001174>] (esp_sdio_probe [esp8089]) from [<c0539944>] (sdio_bus_probe+0xfc/0x114)
[  413.431988] [<c0539944>] (sdio_bus_probe) from [<c04329b4>] (really_probe+0x1dc/0x2e0)
[  413.439904] [<c04329b4>] (really_probe) from [<c0432c34>] (driver_probe_device+0x60/0x1a0)
[  413.448162] [<c0432c34>] (driver_probe_device) from [<c0430cc8>] (bus_for_each_drv+0x74/0xb8)
[  413.456681] [<c0430cc8>] (bus_for_each_drv) from [<c0432764>] (__device_attach+0xd0/0x13c)
[  413.464939] [<c0432764>] (__device_attach) from [<c0431b18>] (bus_probe_device+0x84/0x8c)
[  413.473111] [<c0431b18>] (bus_probe_device) from [<c042f5cc>] (device_add+0x444/0x5e4)
[  413.481023] [<c042f5cc>] (device_add) from [<c0539bd8>] (sdio_add_func+0x5c/0x70)
[  413.488500] [<c0539bd8>] (sdio_add_func) from [<c0538f40>] (mmc_attach_sdio+0x270/0x370)
[  413.496584] [<c0538f40>] (mmc_attach_sdio) from [<c052ff78>] (mmc_rescan+0x304/0x38c)
[  413.504412] [<c052ff78>] (mmc_rescan) from [<c0135e64>] (process_one_work+0x150/0x358)
[  413.512326] [<c0135e64>] (process_one_work) from [<c0136098>] (worker_thread+0x2c/0x518)
[  413.520413] [<c0136098>] (worker_thread) from [<c013b854>] (kthread+0x120/0x150)
[  413.527804] [<c013b854>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
[  413.535014] Exception stack(0xc3ba5fb0 to 0xc3ba5ff8)
[  413.540059] 5fa0:                                     00000000 00000000 00000000 00000000
[  413.548226] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[  413.556392] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[  413.563003] Code: e5954018 e3a01000 e5851018 e2873008 (e5948004)
[  413.569168] ---[ end trace 3facca9bc593b143 ]---

三、设置开机启动连接WiFi

新建一个rc.local文件到/etv/init.d目录下

# vi /etc/init.d/rc.local

内容:

!/bin/shsh /etc/init.d/auto_wifi_link.sh
echo "wifi finish!!"

创建脚本auto_wifi_link.sh放到/etc/init.d/目录下

vi /etc/init.d/auto_wifi_link.sh

内容:

#!/bin/sh
insmod /lib/modules/esp8089.ko config=crystal_26M_en=1 esp_reset_gpio=43
ifconfig wlan0 up
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
sleep 3s
udhcpc -i wlan0

修改开机启动项 vi /etc/inittab
# now run any rc scripts 后加入如下

::sysinit:/etc/init.d/rc.local

如下:

# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels.  The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id        == tty to run on, or empty for /dev/console
# runlevels == ignored
# action    == one of sysinit, respawn, askfirst, wait, and once
# process   == program to run# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
::sysinit:/etc/init.d/rc.local #看这里!!!!# Put a getty on the serial port
#console::respawn:/sbin/getty -L  console 0 vt100 # GENERIC_SERIAL
::respawn:-/bin/sh# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r

修改rc.local 权限

# chmod 755 /etc/init.d/rc.local

rc.local就能够正常工作了。
reboot重启看到自动导入驱动然后连接wifi得到ip地址

全志V3s学习记录--ESP8089的使用相关推荐

  1. 【目录】全志V3S学习记录

    全志V3s从一次接触到现在已经有两年了!现在复盘一下! 使用的硬件开发板有: Lichee zero Lichee zero dock CherryPi PC V3s Mangopi v3s SINV ...

  2. 全志V3s学习记录(5)uboot:传参(boot.scr)参数配置(script.bin)

    文章目录 一.boot.scr的简介与制作 1.1 BSP内核配置 1.2 主线内核配置 1.3 使用mkimage工具 使用mkimage生成boot.scr 拷贝boot.scr到启动卡的第一分区 ...

  3. 全志V3s学习记录(4)uboot:开机logo

    文章目录 一.制作JPG图片并处理成BMP格式 二.修改开机LOGO 增加logo显示配置 三.logo居中 参考: 全志v3s学习笔记(3)--u-boot开机logo替换 参考: 开机logo替换 ...

  4. 全志V3s学习记录(1)资料汇总

    文章目录 一.相关网站论坛 二.开发环境分类 2.1 Camdriod官方SDK 2.2 主线Uboot + Bsp内核 2.3 主线Uboot + 主线Linux 三.芯片资源介绍 3.1 Lich ...

  5. 全志V3s学习记录(13)OV2640的使用

    文章目录 硬件分析 一.修改设备树 二.增加Linux驱动配置 三.构建Buildroot文件系统 使用I2c工具调试 意外收获 RAW看图软件 7yuv 测试 参考:https://blog.51c ...

  6. 全志v3s学习笔记(1)——基础简介及资料

    资料: 荔枝派资料下载站 荔枝派Zero 用户指南 荔枝派github 荔枝派中文论坛 荔枝派Zero指南-看云 坑网 开发环境分类: (参考:Zero的开发环境分类) 1.Camdriod 官方SD ...

  7. 全志v3s学习笔记(8)——TF卡分区及烧录

    一.TF卡分区: sudo fdisk -l # 首先查看电脑上已插入的TF卡的设备号(一般为 /dev/sdb1,下面以/dev/sdb1为例) sudo umount /dev/sdb1 # 若自 ...

  8. 全志v3s学习笔记(5)——主线Linux编译与烧录

    一.安装交叉编译环境 交叉编译环境跟uboot使用的一样. 参考:arm-linux-gnueabihf 交叉编译工具链安装 二.下载linux源码 # 默认是zero-4.10.y分支: git c ...

  9. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

最新文章

  1. Java 摄氏和华氏之间的转换
  2. linux彻底卸载multipath,深度分析LINUX环境下如何配置multipath
  3. Microsoft将在UWP上支持React Native,同时为VS Code添加工具软件
  4. 见过的最详强的讲ESP定律脱壳(推荐)
  5. 小团队管理与大团队管理
  6. 应用程序无法正常启动0xc0150002解决方案
  7. 国开大学c语言程序设计形考任务1,国开电大《数控编程技术》形考任务1-4答案...
  8. IKBC poker 2更换WIN键与ALT键(option键与command键)
  9. 武田呈报Mobocertinib治疗先前接受过含铂化疗的EGFR外显子20插入+ mNSCLC患者的阳性结果
  10. 【第三方互联】微博1、注册成为新浪微博(sina)开发者
  11. 2023华南农业大学计算机考研信息汇总
  12. 用Gradle打包出jar文件 前面我们说过,在Android Studio里面使用Gradle来打包应用程序,一般都是build出来一个apk文件。但是有的同学是做实现层的开发,不直接做View层
  13. [机房练习赛4.7] 深意 KMP
  14. excel计算二元线性回归_谁说菜鸟不会数据分析(高级篇)及竞争力 excel②
  15. D. Unusual Sequences
  16. 微信小程序入门5--查询湖畔云GPS定位信息
  17. qr-code 生成二维码
  18. Java项目:SSM酒吧后台管理系统
  19. 智能相机与工业相机的区别
  20. 第一个项目: 票务管理系统

热门文章

  1. Peter Kafka报道DailyMotion网站资深管理者加入DFJ Gotham
  2. 一文详解Elasticsearch中的Node角色以及使用方法
  3. 基于区块链的去中心化交易系统
  4. Linux学习:简单基础的Linux系统命令
  5. 英语学习单词篇(11)
  6. pycharm安装库出现问题解决方法(狗头)
  7. 【SpringBoot】引入mybatis及连接Mysql数据库
  8. 41、labelme数据集转dota、rolabelimg以及rolabelimg转dota、labelme和labelimg数据集旋转水平镜像 垂直镜像 和水平垂直镜像
  9. 如何查看电脑是否开启了超线程技术
  10. 数据与广告系列十五:商业兴趣标签建模XGboost调优实战