20240409在全志H3平台的Nano Pi NEO CORE开发板运行的Ubuntu Core更新boot.img(eMMC启动)

news2024/11/25 4:30:26

20240409在全志H3平台的Nano Pi NEO CORE开发板运行的Ubuntu Core更新zImage内核
2024/4/9 9:21


一、生成zImage:
参考资料:
http://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO_Core/zh#.E7.83.A7.E5.86.99.E5.88.B0eMMC
NanoPi NEO Core/zh

6 FriendlyCore的使用

11 开发者指南
定制开发相关
Building U-boot and Linux for H5/H3/H2+


http://wiki.friendlyelec.com/wiki/index.php/Building_U-boot_and_Linux_for_H5/H3/H2%2B/zh#.E7.BC.96.E8.AF.91Linux.E5.86.85.E6.A0.B8
Building U-boot and Linux for H5/H3/H2+/zh

3 为H3/H2+编译Linux-4.14 BSP
3.1 安装交叉编译器
访问此处下载地址的toolchain目录,下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,然后解压编译器:

https://pan.baidu.com/s/1P0j1crgmyN2tANK1936NYA#list/path=%2F
NanoPi-NEO - free download
百度网盘    Google Drive
Mainland Chinese users please click on:    International users please click on:
BaiduPan     Google Drive
提取码:vssl


04_SDK与编译器  -2023-11-09 00:21
\\192.168.3.124\rootroot\home\rootroot\neo
arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz


$ mkdir -p /opt/FriendlyARM/toolchain
$ tar xf arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz -C /opt/FriendlyARM/toolchain/
$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
$ export GCC_COLORS=auto
$ . ~/.bashrc
$ arm-linux-gcc -v


rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ sudo mkdir -p /opt/FriendlyARM/toolchain
[sudo] password for rootroot: 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ tar xf arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ ll
total 400248
drwxrwxr-x  4 rootroot rootroot      4096 4月   9 09:48 ./
drwxr-xr-x 32 rootroot rootroot      4096 4月   9 09:26 ../
dr-xr-xr-x  8 rootroot rootroot      4096 11月 14  2015 4.9.3/
-rwx------  1 rootroot rootroot  60177488 4月   9 09:46 arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz*
drwxrwxr-x 27 rootroot rootroot      4096 4月   9 09:40 linux/
-rw-rw-r--  1 rootroot rootroot 349653581 4月   9 09:30 linux_20240409_0929.tar.gz
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ du -sh 4.9.3/
373M    4.9.3/
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ sudo mv 4.9.3/ /opt/FriendlyARM/toolchain/
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ ll
total 400244
drwxrwxr-x  3 rootroot rootroot      4096 4月   9 09:49 ./
drwxr-xr-x 32 rootroot rootroot      4096 4月   9 09:26 ../
-rwx------  1 rootroot rootroot  60177488 4月   9 09:46 arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz*
drwxrwxr-x 27 rootroot rootroot      4096 4月   9 09:40 linux/
-rw-rw-r--  1 rootroot rootroot 349653581 4月   9 09:30 linux_20240409_0929.tar.gz
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ echo $PATH 
/home/rootroot/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ echo $PATH 
/opt/FriendlyARM/toolchain/4.9.3/bin:/home/rootroot/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ export GCC_COLORS=auto
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ arm-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/opt/FriendlyARM/toolchain/4.9.3/libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper
Target: arm-cortexa9-linux-gnueabihf
Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3 --with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++ --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard --with-pkgversion=ctng-1.21.0-229g-FA --with-bugurl=http://www.friendlyarm.com/ --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --with-gmp=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpfr=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpc=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-isl=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-cloog=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-libelf=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-long-long
Thread model: posix
gcc version 4.9.3 (ctng-1.21.0-229g-FA) 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo$ 


3.3 编译Linux内核
下载Linux内核源码,并切换分支:

$ git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1
编译和更新Linux内核:

修正步骤:
sudo apt install u-boot-tools
cd linux
touch .scmversion
make sunxi_defconfig ARCH=arm CROSS_COMPILE=arm-linux-
make zImage dtbs ARCH=arm CROSS_COMPILE=arm-linux- -j8
【多线程大概2-3分钟,看您的电脑配置。不加-j8的单线程可能要10分钟+】


参考资料:
http://wiki.friendlyelec.com/wiki/index.php/How_to_Build_FriendlyWrt/zh#H3.E5.B9.B3.E5.8F.B0
How to Build FriendlyWrt/zh


二、打包生成boot.img
【请严格按照这个步骤执行,否则可能出现启动异常的情况】

http://wiki.friendlyelec.com/wiki/index.php/NanoPi_NEO_Core/zh#.E7.83.A7.E5.86.99.E5.88.B0eMMC
NanoPi NEO Core/zh

11 开发者指南
定制开发相关
Building U-boot and Linux for H5/H3/H2+
How to Build FriendlyWrt
Qt dev: How to Build, Install and Setting Qt Application

系统映像相关
How to make your own SD-bootable ROM
How to use overlayfs on Linux
EFlasher


http://wiki.friendlyelec.com/wiki/index.php/How_to_make_your_own_SD-bootable_ROM
http://wiki.friendlyelec.com/wiki/index.php/How_to_make_your_own_SD-bootable_ROM/zh
How to make your own SD-bootable ROM/zh


5 制作H3 平台的系统映像
请参考这个git仓库: https://github.com/friendlyarm/sd-fuse_h3

sd-fuse_h3
Introduction
This repository is a bunch of scripts to build bootable SD card images for FriendlyElec H3 boards, the main features are as follows:

Create root ?lesystem image from a directory
Build bootable SD card image
Easy way to compile kernel、uboot and third-party driver
Read this in other languages: 简体中文


https://github.com/friendlyarm/sd-fuse_h3/blob/master/README_cn.md
sd-fuse_h3
简介
sd-fuse 提供一些工具和脚本, 用于制作SD卡固件, 具体用途如下:

制作分区镜像文件, 例如将rootfs目录打包成rootfs.img
将多个分区镜像文件打包成可直接写SD卡的单一镜像文件
简化内核和uboot的编译, 一键编译内核、第三方驱动, 并更新rootfs.img中的内核模块
其他语言版本: English


重新打包 SD-to-eMMC 卡刷固件
注: 这里以friendlycore-jammy系统为例进行说明
下载本仓库到本地, 然后下载并解压分区镜像文件压缩包, 这里需要下载friendlycore-jammy和eflasher系统的文件:

git clone https://github.com/friendlyarm/sd-fuse_h3 -b master --single-branch sd-fuse_h3
cd sd-fuse_h3
wget http://112.124.9.243/dvdfiles/h3/images-for-eflasher/friendlycore-jammy-images.tgz
tar xvzf friendlycore-jammy-images.tgz
wget http://112.124.9.243/dvdfiles/h3/images-for-eflasher/emmc-flasher-images.tgz
tar xvzf emmc-flasher-images.tgz
再使用以下命令, 打包卡刷固件, autostart=yes参数表示使用此固件开机时,会自动进入烧写流程:

./mk-emmc-image.sh friendlycore-jammy autostart=yes
命令执行成功后, 将生成以下文件, 此文件可烧写到SD卡运行:

将TF上面的boot分区整个拷贝到,Z:\neo\sd-fuse_h3
然后替换掉TF卡上的启动文件:boot.cmd、boot.scr

Z:\neo\sd-fuse_h3\boot\boot.cmd
TF卡启动的:
# Recompile with: mkimage -C none -A arm -T script -d boot.cmd boot.scr
# CPU=H3
# OS=eflasher

echo "running eflasher boot.scr"
setenv fsck.repair yes
setenv ramdisk rootfs.cpio.gz
setenv kernel zImage

setenv env_addr 0x45000000
setenv kernel_addr 0x46000000
setenv ramdisk_addr 0x47000000
setenv dtb_addr 0x48000000

fatload mmc ${boot_part} ${kernel_addr} ${kernel}
fatload mmc ${boot_part} ${ramdisk_addr} ${ramdisk}
setenv ramdisk_size ${filesize}

fatload mmc ${boot_part} ${dtb_addr} sun8i-${cpu}-${board}.dtb
fdt addr ${dtb_addr}

# setup XR819 MAC address
if test $board = nanopi-duo; then fdt set xr819 local-mac-address ${wifi_mac_node}; fi

# setup boot_device
fdt set mmc${boot_mmc} boot_device <1>

setenv fbcon map:0
#setenv hdmi_res drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60
setenv pmdown snd-soc-core.pmdown_time=3600000

setenv bootargs "console=ttyS0,115200 earlyprintk
root=${rootfs_part} rootfstype=ext4 rw rootwait fsck.repair=${fsck.repair}
panic=10 fbcon=${fbcon} ${hdmi_res} ${overlayfs} ${pmdown}"

bootz ${kernel_addr} ${ramdisk_addr}:${ramdisk_size} ${dtb_addr}

eMMC启动的:
# Recompile with: mkimage -C none -A arm -T script -d boot.cmd boot.scr
# CPU=H3
# OS=friendlycore/ubuntu-oled/ubuntu-wifiap/openwrt/debian/debian-nas...

echo "running boot.scr"
setenv load_addr 0x44000000
setenv fix_addr 0x44500000
fatload mmc 0 ${load_addr} uEnv.txt
env import -t ${load_addr} ${filesize}

fatload mmc 0 ${kernel_addr} ${kernel}
fatload mmc 0 ${ramdisk_addr} ${ramdisk}
setenv ramdisk_size ${filesize}

fatload mmc 0 ${dtb_addr} sun8i-${cpu}-${board}.dtb
fdt addr ${dtb_addr}

# merge overlay
fdt resize 65536
overlay search
for i in ${overlays}; do
    if fatload mmc 0 ${load_addr} overlays/sun8i-h3-${i}.dtbo; then
        echo "applying overlay ${i}..."
        fdt apply ${load_addr}
    fi
done
fatload mmc 0 ${fix_addr} overlays/sun8i-h3-fixup.scr
source ${fix_addr}

# setup XR819 MAC address
if test $board = nanopi-duo; then fdt set xr819 local-mac-address ${wifi_mac_node}; fi

# setup boot_device
fdt set mmc${boot_mmc} boot_device <1>

setenv overlayfs data=/dev/mmcblk0p3
#setenv hdmi_res drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60
setenv pmdown snd-soc-core.pmdown_time=3600000

setenv bootargs "console=${debug_port} earlyprintk
root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=${fsck.repair}
panic=10 fbcon=${fbcon} ${hdmi_res} ${overlayfs} ${pmdown}"

bootz ${kernel_addr} ${ramdisk_addr}:${ramdisk_size} ${dtb_addr}


boot.img的生成过程:
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ ./build-boot-img.sh boot/ boot.img
Re-running script under sudo...
[sudo] password for rootroot: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  swig4.0
Suggested packages:
  swig-doc swig-examples swig4.0-examples swig4.0-doc
The following NEW packages will be installed:
  exfat-fuse exfat-utils swig swig4.0
0 upgraded, 4 newly installed, 0 to remove and 102 not upgraded.
Need to get 1,151 kB of archives.
After this operation, 5,715 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 exfat-fuse amd64 1.3.0-1 [24.6 kB]
Get:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 exfat-utils amd64 1.3.0-1 [40.7 kB]
Get:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 swig4.0 amd64 4.0.1-5build1 [1,081 kB]
Get:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 swig all 4.0.1-5build1 [5,528 B]                                                                                                          
Fetched 1,151 kB in 25s (45.7 kB/s)                                                                                                                                                                             
Selecting previously unselected package exfat-fuse.
(Reading database ... 213509 files and directories currently installed.)
Preparing to unpack .../exfat-fuse_1.3.0-1_amd64.deb ...
Unpacking exfat-fuse (1.3.0-1) ...
Selecting previously unselected package exfat-utils.
Preparing to unpack .../exfat-utils_1.3.0-1_amd64.deb ...
Unpacking exfat-utils (1.3.0-1) ...
Selecting previously unselected package swig4.0.
Preparing to unpack .../swig4.0_4.0.1-5build1_amd64.deb ...
Unpacking swig4.0 (4.0.1-5build1) ...
Selecting previously unselected package swig.
Preparing to unpack .../swig_4.0.1-5build1_all.deb ...
Unpacking swig (4.0.1-5build1) ...
Setting up exfat-utils (1.3.0-1) ...
Setting up exfat-fuse (1.3.0-1) ...
Setting up swig4.0 (4.0.1-5build1) ...
Setting up swig (4.0.1-5build1) ...
Processing triggers for man-db (2.9.1-1) ...

0+0 records in
0+0 records out
0 bytes copied, 0.000158339 s, 0.0 kB/s
generating boot.img done.
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ 


rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ 
rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ ./build-boot-img.sh boot/ boot.img
Re-running script under sudo...

0+0 records in
0+0 records out
0 bytes copied, 0.000143679 s, 0.0 kB/s
generating boot.img done.

rootroot@rootroot-HP-ZHAN-66-Pro-A-14-G3:~/neo/sd-fuse_h3$ 


刷机之后确认内核编译时间:【已zImage的生成时间为准,而不是boot.img的打包时间!】
         Starting Update UTMP about System Runlevel Changes...
[  OK  ] Started Update UTMP about System Runlevel Changes.

Ubuntu 16.04.2 LTS NanoPi-NEO-Core ttyS0

Default Login:
Username = pi
Password = pi

NanoPi-NEO-Core login: pi (automatic login)

 _____     _                _ _       _____ _     _____ ____ 
|  ___| __(_) ___ _ __   __| | |_   _| ____| |   | ____/ ___|
| |_ | '__| |/ _ \ '_ \ / _` | | | | |  _| | |   |  _|| |    
|  _|| |  | |  __/ | | | (_| | | |_| | |___| |___| |__| |___ 
|_|  |_|  |_|\___|_| |_|\__,_|_|\__, |_____|_____|_____\____|
                                |___/                        

Welcome to Ubuntu 16.04.2 LTS 4.14.111
System load:   0.14                Up time:       44 sec        
Memory usage:  8 % of 491Mb      IP:            
CPU temp:      42°C               
Usage of /:    9% of 6.0G       

 * Documentation: http://wiki.friendlyarm.com/Ubuntu
 * Forum: http://www.friendlyarm.com/Forum/

pi@NanoPi-NEO-Core:~$ 
pi@NanoPi-NEO-Core:~$ cat /etc/issue
Ubuntu 16.04.2 LTS \n \l

pi@NanoPi-NEO-Core:~$ 
pi@NanoPi-NEO-Core:~$ uname -a
Linux NanoPi-NEO-Core 4.14.111 #1 SMP Tue Apr 9 09:53:51 CST 2024 armv7l armv7l armv7l GNU/Linux
pi@NanoPi-NEO-Core:~$ 

pi@NanoPi-NEO-Core:~$ 
pi@NanoPi-NEO-Core:~$ [   57.136444] cdc_ether 3-1:1.0 usb0: kevent 12 may have been dropped

pi@NanoPi-NEO-Core:~$ poweroff
Failed to set wall message, ignoring: Interactive authentication required.
Failed to power off system via logind: Interactive authentication required.
Failed to start poweroff.target: Interactive authentication required.
See system logs and 'systemctl status poweroff.target' for details.
Failed to open /dev/initctl: Permission denied
Failed to talk to init daemon.
pi@NanoPi-NEO-Core:~$ su
Password: 
root@NanoPi-NEO-Core:/home/pi# poweroff


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【leetcode面试经典150题】37. 矩阵置零(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

大数据相关组件安装及使用

自学大数据相关组件 持续更新中。。。 一、linux安装docker 1、更新yum sudo yum update2、卸载docker旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine3、…

菜鸟IPO折戟背后:估值大幅下降,阿里巴巴为“分拆之痛”买单

撰稿|行星 来源|贝多财经 近日&#xff0c;阿里巴巴集团&#xff08;下称“阿里巴巴”或“阿里”&#xff09;发布公告&#xff0c;称其物流子公司菜鸟&#xff08;同菜鸟物流、菜鸟网络&#xff09;撤回在港交所的首次公开发行及上市申请&#xff0c;并计划收购菜鸟少数股东…

LeetCode31. 下一个排列(Java)

题目&#xff1a; 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列…

鸿蒙实战开发-如何实现查看系统相册、最近删除、收藏夹操作功能

介绍 本示例主要展示了相册相关的功能&#xff0c;使用ohos.file.photoAccessHelper 接口&#xff0c;实现了查看系统相册、创建用户相册、查看相册照片、用户相册文件添加和删除、以及预览图片、最近删除、收藏夹操作等功能; 效果预览 使用说明 主界面&#xff1a;查询显示…

一本想教会你滤波算法书

一本想教会你滤波算法书 从今天开始&#xff0c;这个博客系列会翻译一本 500 页左右的滤波算法的书&#xff0c;该书的原文连接我会放到后面的文中。翻译这本书不仅能继续我的英语学习&#xff08;水平有限&#xff0c;有问题我留言我马上改&#xff01;&#xff09;而且可以跟…

如何合理利用Vue 3中的ref和reactive

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

大话设计模式——24.迭代器模式(Iterator Pattern)

简介 提供一种方法顺序访问一个聚合对象中各个元素&#xff0c;而又不暴露该对象的内部实现。&#xff08;Java中使用最多的设计模式之一&#xff09; UML图 应用场景 Java的集合对象&#xff1a;Collection、List、Map、Set等都有迭代器Java ArrayList的迭代器源码 示例 简…

堆 和 优先级队列

目录 一、堆 二、优先级队列 1、初识优先级队列 2、实现一个优先级队列 3、PriorityQueue &#xff08;1&#xff09;实现了Comparable接口&#xff0c;重写了compareTo方法 &#xff08;2&#xff09;实现了Comparator接口&#xff0c;重写了compare方法 4、 Prio…

WordPress 图片压缩插件:Compress JPEG PNG images 使用方法

插件介绍 Compress JPEG & PNG images是一款非常好用的图片压缩插件:&#xff0c;非常值得大家安装使用&#xff1b;特别是图片类型网站。其实我们很多服务器磁盘空间是不在乎多那么几十 MB 大小的&#xff0c;但是压缩了图片能提升网站速度&#xff0c;节省宽带&#xff…

Linux网络名称空间之独立网络资源管理

Linux网络名称空间是一种强大的虚拟化技术&#x1f6e0;️&#xff0c;它允许用户创建隔离的网络环境&#x1f310;&#xff0c;每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用&#x1f4e6;和网络安全&#x1f512;等领域至关重要。本文将详细介绍在L…

python如何写入csv

在使用python对文件操作的过程中&#xff0c;你肯定碰到过对csv文件的操作&#xff0c;下面就python对csv文件的操作进行详述。 CSV&#xff08;Comma-Separated Values&#xff09;逗号分隔符&#xff0c;也就是每条记录中的值与值之间是用分号分隔的。 打开CSV文件并写入一…

第36篇:分频器<三>

Q&#xff1a;这一期我们介绍以计数器方式实现四分频的概念原理。 A&#xff1a;计数器分频有分频系数和占空比这两个参数。待分频时钟的频率为f1&#xff0c;分频后时钟的频率为f2&#xff0c;分频系数为Nf1/f2。 计数器分频电路通过对时钟信号计数来实现分频。根据分频系数可…

医院管理系统!(免费领取源码)

今天给大家分享一套基于SpringbootVue的医院管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文中自取) 系统运行图&#xff08;设计报告和接口文档&#xff09; 1、后台管理页面 2、排班管理页面 3、设计报告包含接口文档 源码免费领取方式 后台私信…

基于 SMM 汽车交易系统(源码+配套文档)

摘要 电子商务的兴起不仅仅是带来了更多的就业行业。同样也给我们的生活带来了丰富多彩的变化。多姿多彩的世界带来了美好的生活&#xff0c;行业的发展也是形形色色的离不开技术的发展。作为时代进步的发展方面&#xff0c;信息技术至始至终都是成就行业发展的重要秘密。不论…

如何彻底删除node和npm

如何彻底删除node和npm 前言&#xff1a; 最近做个项目把本地的node更新了&#xff0c;之前是v10.14.2更新至v16.14.0 &#xff0c;想着把之前的项目起来下&#xff0c;执行npm install 结果启动不了&#xff0c;一直报npm版本不匹配需要更新本地库异常… 找了几天发现是npm 和…

【优选算法专栏】专题十三:队列+宽搜(一)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

java常用API_正则表达式_在一段文本中查找满足要求的内容(爬虫)——练习及代码演示

练习一&#xff1a; 根据下面这段文本&#xff0c;爬取所有的JavaXX Java自从95年问世以来&#xff0c;经历了很多版本&#xff0c;目前企业中用的最多的是Java8和Java11&#xff0c;因为这两个是长期支持版本&#xff0c;下一个长期支持版本是Java17&#xff0c;相信在未来不久…

基于微信小程序的苏州博物馆文创产品售卖系统

前言 基于小程序的苏州博物馆文创产品售卖系统的设计与实现能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的用户了解和熟知基于小程序的苏州博物馆文创产品售卖系统的设计与实现的便捷高效&#xff0c;不仅为群众提供了服务&#xff0c;而且也推广了自己&#…

【C++11】initializer_list | 右值引用 | 完美转发

一切皆可列表{ }初始化 在C98,允许花括号{ } 对数组、结构体类型初始化。 class Data { public:Data(int y, int m, int d):_y(y), _m(m), _d(d){} private:int _y;int _m;int _d; };int arr[4]{0,1,2,3};//列表初始化 Data d1{2024,03,21};//列表初始化 C11允许通过{ } 初始化…