oneplus3t-lineage-14编译-android7
lineageOS-14.1-oneplus3t-build.md
lineageOS-14(android7)的开发者模式/usb调试(adb)有root功能, 而lineageOS-16(android9)无
oneplus3t-lineage-14编译-android7
1
清华linageos镜像
x
lineage-14.1-20180223-nightly-oneplus3-signed.zip
ntfs分区挂载为普通用户目录 , ext4分区挂载为普通用户目录
bfsu/lineageOS镜像
ts/lingeageOS镜像
oneplus3/lineage-build-simple-manual.md, manifest-parser/git-repo#6_build, LineageOS16_oneplus3t_gitRepoLs_clone_desc.pdf
LineageOS/android.git/cm-14.1 : 改为bfsu镜像
高通私有驱动 TheMuppets/proprietary_vendor_oneplus.git/cm-14.1/oneplus3 == TheMuppets/proprietary_vendor_oneplus/.git/8b8001
1. 仓库群下载工具准备
D=/OP3TLos14Build
cd $Dgit clone -b v2.50.1 https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
#file /OP3TLos14Build/git-repo/.git/config
#file /OP3TLos14Build/git-repo/repoexport GitRepoD=/OP3TLos14Build/git-repo
export PATH_BASE=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH_BASE:$GitRepoDwhich repo # == /OP3TLos14Build/git-repo/repo
2. 仓库群下载
LosVer=cm-14.1#repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b cm-14.1 --git-lfsexport REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
#manifest_repo=https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git
#manifest_repo=https://mirrors.bfsu.edu.cn/git/lineageOS/LineageOS/android.git
manifest_repo=https://gitlab.com/cm-14/android.git #已修改AOSP为国内镜像
repo init --manifest-url $manifest_repo --manifest-branch $LosVer --git-lfsrepo sync
循环显示所有仓库 : repo forall -c 'echo $PWD; echo $(git remote get-url $(git remote)) ; git reset --hard'
2b 我修改的代码
修改/OP3Los14Build/frameworks/base/.git/config
origin url为: https://gitlab.com/lineage14_1_oneplus3t/android_frameworks_base.git
3. 下载oneplus3相关仓库
packages/resources/devicesettings
git clone -b $LosVer https://github.com/LineageOS/android_packages_resources_devicesettings.git $D/packages/resources/devicesettings#若路径写错为 $D/packages/resources , mak bacon收到如下报错(在日志中距离很远):
# ERROR: resource directory 'device/oppo/common/configpanel/../../../../packages/resources/devicesettings/res' does not exist
# 其中 device/oppo/common/configpanel/../../../../packages/resources/devicesettings/res == packages/resources/devicesettings/res
# 提示 了 android_packages_resources_devicesettings.git 的正确路径是 packages/resources/devicesettings
oneplus3高通私有驱动(vendor)下载 方法1: 不用此法
下载 git仓库,但仓库有将近10个GB,因此不用此方法
注意: 目录TheMuppets-proprietary_vendor_oneplus
不要放在 /OP3TLos14Build
下, 否则 会被 mka showcommands bacon
认为和 软链接/OP3TLos14Build/vendor/oneplus/oneplus3
重复了。 这可能是cm-14.1的问题, 貌似 LinageOS-16无此问题.
#命令目标: 构造软链接: $D/vendor/oneplus/oneplus3 --> /app/TheMuppets-proprietary_vendor_oneplus/oneplus3#D=/OP3TLos14Build
#LosVer=cm-14.1
proprD=/app
proprietary_vendor_oneplus=$proprD/TheMuppets-proprietary_vendor_oneplus
git clone https://githubfast.com/TheMuppets/proprietary_vendor_oneplus.git -b $LosVer $proprietary_vendor_oneplus
#命令展开: git clone https://githubfast.com/TheMuppets/proprietary_vendor_oneplus.git -b cm-14.1 /app/TheMuppets-proprietary_vendor_oneplus
ln -s $proprietary_vendor_oneplus/oneplus3 $D/vendor/oneplus/oneplus3
#命令展开:ln -s /app/TheMuppets-proprietary_vendor_oneplus/oneplus3 /OP3TLos14Build/vendor/oneplus/oneplus3
oneplus3高通私有驱动(vendor)下载: 方法2: git仓库给定版本包
注意: 目录proprietary_vendor_oneplus-cm-14.1
不要放在 /OP3TLos14Build
下, 否则 会被 mka showcommands bacon
认为和 软链接/OP3TLos14Build/vendor/oneplus/oneplus3
重复了。 这可能是cm-14.1的问题, 貌似 LinageOS-16无此问题.
#命令目标: 构造软链接: $D/vendor/oneplus/oneplus3 --> /app/proprietary_vendor_oneplus-cm-14.1/oneplus3#D=/OP3TLos14Build
#LosVer=cm-14.1
proprD=/app
wget --output-document=$D/cm-14.1.zip https://github.com/TheMuppets/proprietary_vendor_oneplus/archive/refs/heads/$LosVer.zip
#命令展开: wget https://github.com/TheMuppets/proprietary_vendor_oneplus/archive/refs/heads/cm-14.1.zip
sha256sum $D/cm-14.1.zip #==f008b553dceac26b0feb26fdbda15c7c620ec4e3103c67b749a32900c83a55ec
unzip $D/$LosVer.zip -d $proprD
#命令展开: unzip /OP3TLos14Build/cm-14.1.zip -d /app/
#解压产物目录为 /app/proprietary_vendor_oneplus-cm-14.1
file /app/proprietary_vendor_oneplus-cm-14.1/oneplus3/Android.mk #解压产物列举
mkdir -p $D/vendor/oneplus
ln -s $proprD/proprietary_vendor_oneplus-cm-14.1/oneplus3 $D/vendor/oneplus/oneplus3
#命令展开: ln -s /app/proprietary_vendor_oneplus-cm-14.1/oneplus3 /OP3TLos14Build/vendor/oneplus/oneplus3
device/oneplus/oneplus3, device/oppo/common, kernel/oneplus/msm8996, packages/resources
#D=/OP3TLos14Build
#LosVer=cm-14.1git clone -b $LosVer https://github.com/LineageOS/android_device_oneplus_oneplus3.git $D/device/oneplus/oneplus3
git clone -b $LosVer https://github.com/LineageOS/android_device_oppo_common.git $D/device/oppo/common
git clone -b $LosVer https://github.com/LineageOS/android_kernel_oneplus_msm8996.git $D/kernel/oneplus/msm8996
4. 编译错误解决
0. 为方便排查错误 , 将编译进程数改为1 : 失败
sudo pstree -caplT
查看进程树
find /OP3TLos14Build/build/ -type f | xargs -I@ grep -Hn -i "\-j " @
/OP3TLos14Build/build/kati/flags.cc:104: ERROR("Invalid -j flag: %s", num_jobs_str);
/OP3TLos14Build/build/kati/flags.cc:110: ERROR("Invalid -j flag: %s", num_jobs_str);
/OP3TLos14Build/build/core/ninja.mk:128:# limited by the -j flag passed to GNU make.
/OP3TLos14Build/build/tools/makeparallel/Makefile:76: @EXPECTED="" $(MAKEPARALLEL_NINJA_TEST) -j -l
find /OP3TLos14Build/build/ -type f -name "*.mk" | xargs -I@ grep -Hn -i "job" @
/OP3TLos14Build/build/core/ninja.mk:129:NINJA_REMOTE_NUM_JOBS ?= 500
/OP3TLos14Build/build/core/ninja.mk:130:NINJA_ARGS += -j$(NINJA_REMOTE_NUM_JOBS)
将/OP3TLos14Build/build/core/ninja.mk
中的NINJA_REMOTE_NUM_JOBS ?= 500
改为NINJA_REMOTE_NUM_JOBS = 1
编译命令中的mka改为mk, -j8 改为 -j1
source build/envsetup.sh && export LC_ALL=C && export ALLOW_MISSING_DEPENDENCIES=true && lunch lineage_oneplus3-userdebug && export MAKE_OPTS="-j1" && export TARGET_ARCH=arm && mk bacon
则 确为单进程编译? 不确定,未验证
1.multiple definition of ‘yylloc’
解决编译错误, /usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x50): multiple definition of 'yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
#D=/OP3TLos14Build
grep url $D/kernel/oneplus/msm8996/.git/config
# url = https://github.com/LineageOS/android_kernel_oneplus_msm8996.git
echo 'HOSTCFLAGS += -fcommon' >> $D/kernel/oneplus/msm8996/Makefile
2. Jack server
解决报错 Communication error with Jack server (56). Try 'jack-diagnose'
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx6G"
5A. 编译依赖工具安装
#所用linux发行版
cat /etc/issue #Ubuntu 22.04.4 LTS \n \l#查找deb包
sudo apt install -y apt-file
sudo apt-file update
lunch lineage_oneplus3-userdebug
需要的
sudo apt install -y build-essential
sudo apt install -y python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python
mka bacon
需要的
1
apt-file search "/schedtool"
#schedtool: /usr/bin/schedtool
sudo apt install -y schedtool
2
apt-file search "/libncurses.so.5"
#libncurses5: /lib/x86_64-linux-gnu/libncurses.so.5
sudo apt install -y libncurses5
3
下载 https://static.azul.com/zulu/bin?C=S/zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz
#查找jdk8的最新版本为 zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz
pageUrl_azul_jdkLs="https://static.azul.com/zulu/bin?C=S"
alias alias_grep_jdk8_linux_x64_tar_gz_sort_head_n='grep jdk8 | grep linux_x64.tar.gz | sort --reverse | head -n'
w3m -T text/html $pageUrl_azul_jdkLs -dump | alias_grep_jdk8_linux_x64_tar_gz_sort_head_n 2
#[ ] zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz 2024-10-10 102M
#[ ] zulu8.82.0.21-ca-fx-jdk8.0.432-linux_x64.tar.gz 2024-10-23 173M#下载zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz
( cd /app/pack/ && wget https://static.azul.com/zulu/bin/zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz )#解压
tar -xf zulu8.82.0.21-ca-jdk8.0.432-linux_x64.tar.gz -C /app/#测试
/app/zulu8.82.0.21-ca-jdk8.0.432-linux_x64/bin/javac -version
#javac 1.8.0_432
4
apt-file search "/ImageMagick"
sudo apt install -y imagemagick
#不是 libmagickcore-dev libmagick++-dev
5
prebuilts/misc/linux-x86/bison/bison
是32位ELF,
而ubuntu22 默认只支持64位ELF, 因此 要安装32位兼容库
prebuilts/misc/linux-x86/bison/bison --help #报错 说`No such file or directory` , 实际是因为没有32位ELF加载器ldsudo dpkg --add-architecture i386
sudo apt updatesudo apt install -y libc6:i386 libstdc++6:i386
prebuilts/misc/linux-x86/bison/bison --help #正常运行
6.
报错命令:
prebuilts/misc/linux-x86/bison/bison -d --defines=/OP3TLos14Build/out/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_y.h -o /OP3TLos14Build/out/host/linux-x86/obj/STATIC_LIBRARIES/libaidl-common_intermediates/aidl_language_y.cpp system/tools/aidl/aidl_language_y.yy
#prebuilts/misc/linux-x86/bison/bison: m4 subprocess failed: No such file or directory
解决
sudo apt install -y m4
7. javadoc报错不影响编译 : error: package android.support.v14.preference does not exist
source build/envsetup.sh && export LC_ALL=C && export ALLOW_MISSING_DEPENDENCIES=true && lunch lineage_oneplus3-userdebug && export MAKE_OPTS="-j8" && export TARGET_ARCH=arm && mka showcommands bacon
报错:
cat -n OP3-cm14_1-screen-2025-01-18-17-58-22.log | grep -i "error:"
注意 此报错是javadoc命令报错, 不影响继续编译, 因此可以忽略此错误
8868 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingSwitchPreference.java:19: error: package android.support.v14.preference does not exist8871 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingSwitchPreference.java:20: error: package android.support.v7.preference does not exist8874 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingSwitchPreference.java:27: error: cannot find symbol8878 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:27: error: package android.support.v7.preference does not exist8881 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:28: error: package android.support.v7.preference does not exist8884 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:29: error: package android.support.v7.preference does not exist8887 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:30: error: package android.support.v7.preference does not exist8890 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingSwitchPreference.java:47: error: cannot find symbol8895 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:61: error: cannot find symbol8900 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:71: error: cannot find symbol8905 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:100: error: cannot find symbol8910 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:100: error: cannot find symbol8915 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:104: error: cannot find symbol8920 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:104: error: cannot find symbol8925 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:104: error: cannot find symbol8930 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:299: error: cannot find symbol8935 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingListPreference.java:19: error: package android.support.v7.preference does not exist8938 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingListPreference.java:20: error: package android.support.v7.preference does not exist8941 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingListPreference.java:27: error: cannot find symbol8945 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingListPreference.java:47: error: cannot find symbol8950 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingDropDownPreference.java:19: error: package android.support.v7.preference does not exist8953 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingDropDownPreference.java:20: error: package android.support.v7.preference does not exist8956 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingDropDownPreference.java:27: error: cannot find symbol8960 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingDropDownPreference.java:47: error: cannot find symbol8965 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:351: error: cannot find symbol8970 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:351: error: cannot find symbol8975 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:351: error: cannot find symbol8980 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:355: error: cannot find symbol8985 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:355: error: cannot find symbol8990 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:355: error: cannot find symbol8995 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:369: error: cannot find symbol9000 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:369: error: cannot find symbol9005 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/ConstraintsHelper.java:377: error: cannot find symbol9010 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/RemotePreference.java:26: error: package android.support.v7.preference does not exist9013 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingPreference.java:19: error: package android.support.v7.preference does not exist9016 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingPreference.java:20: error: package android.support.v7.preference does not exist9019 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingPreference.java:21: error: package android.support.v7.preference does not exist9022 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingPreference.java:28: error: cannot find symbol9026 vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingPreference.java:52: error: cannot find symbol
简要确认此报错是javadoc命令产生的
cat -n OP3-cm14_1-screen-2025-01-18-17-58-22.log | grep -B 1 -i "vendor/cmsdk/sdk/src/java/cyanogenmod/preference/SelfRemovingSwitchPreference.java:19: error: package android.support.v14.preference does not exist" | grep javadoc
匹配到javadoc命令
8. ninja: build stopped: subcommand failed.
需要具体排查
wc -l OP3-cm14_1-screen-2025-01-18-17-58-22.log
== 85313
cat -n OP3-cm14_1-screen-2025-01-18-17-58-22.log | tail -n 8
有报错
85306 ninja: build stopped: subcommand failed.85307 make: *** [build/core/ninja.mk:152: ninja_wrapper] Error 185308 make: Leaving directory '/OP3TLos14Build'85309 85310 #### make failed to build some targets (02:06:05 (hh:mm:ss)) ####
如果能将ninja的并发数改为1, 报错行将会大大靠近结果, 排查难道会降低
8.1 查找 error:
(排除)
grep -Hn -i "error:" OP3-cm14_1-screen-2025-01-18-17-58-22.log
: 获得的是 7 中的javadoc报错(不影响继续编译)
8.2 查找command not found
(疑似)
grep -Hn "command not found" OP3-cm14_1-screen-2025-01-18-17-58-22.log
85296: /bin/bash: line 1: xmllint: command not found
距离 85306 ninja: build stopped: subcommand failed.
只有10行, 因此 可能是此报错
解决
apt-file search --regexp "/xmllint$"
#libxml2-utils: /usr/bin/xmllint
sudo apt install -y libxml2-utils
5B. github加速
加速githubusercontent(可选)
githubusercontent
后加s
#D=/OP3TLos14Build
sed -i 's/raw.githubusercontent.com/raw.githubusercontents.com/g' $D/vendor/cm/vendorsetup.sh
提高 source build/envsetup.sh
速度
已修改在: lineage14_1_oneplus3t/android_vendor_cm.git/3a218
5. 编译
screen -L -Logfile ~/OP3-cm14_1-screen-$(date +%Y-%m-%d-%H-%M-%S).log -S OP3#编译步骤正文 开始
D=/OP3TLos14Build
cd $Djdk8_d=/app/zulu8.82.0.21-ca-jdk8.0.432-linux_x64
export PATH_BASE=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH_BASE:$jdk8_d/binexport ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx6G"#单行编译命令 开始
source build/envsetup.sh#export V=1
export LC_ALL=C
export ALLOW_MISSING_DEPENDENCIES=true
#export DEBUG_MODULE_android_runtime=true
#export TARGET_CUSTOM_DEBUG_CFLAGS="-O0 -g"
#export MAKE_OPTS="-j8"
#export TARGET_ARCH=arm
lunch lineage_oneplus3-userdebug && mka showcommands bacon # lineage_oneplus3-eng
#单行编译命令 结束#编译步骤正文 结束#离开screen但不退出快捷键: ctrl+ad#进入screen : screen -r OP3#编译完成后 关闭 jack服务
$D/prebuilts/sdk/tools/jack-admin stop-server
编译步骤 中 不同用途 的 单行编译命令
完整编译
source build/envsetup.sh && export LC_ALL=C && export ALLOW_MISSING_DEPENDENCIES=true && lunch lineage_oneplus3-userdebug && export MAKE_OPTS="-j8" && export TARGET_ARCH=arm && mka showcommands bacon
6 编译产物(ota rom卡刷包)
ls -lh /OP3TLos14Build/out/target/product/oneplus3/lineage-14.1-20250117-UNOFFICIAL-oneplus3.zip
# -rw-rw-r-- 506M source /app/bash-simplify/android_aid/env/android9.0-platform-tools-env.sh && android9_0_platformTools_envfastboot boot /oneplus3t/twrp-3.2.1-0-oneplus3.img
#twrp界面: Wipe所有, Advance --> adb sideload (勾选清理所有)adb sideload /OP3TLos14Build/out/target/product/oneplus3/lineage-14.1-20250117-UNOFFICIAL-oneplus3.zipadb reboot
#重启手机, linageOS图标 大约转了30圈 才进入 android首次安装界面
7. lineageOS-14/ adb root
lineageOS-14(android7)的开发者模式/usb调试(adb)启用root功能
adb root shell
adb shell
进入root shell, 比如可以挂载system分区为可读可写
lineageOS-17的adb 进不到root shell, 只能重启到twrp 才能进到root shell
mount -o remount,rw /system
echo zzz > /system/test_file_1
rm -v /system/test_file_1mount -o remount,ro /system
备注
一般备注
grep url $D/.repo/manifests/.git/config
# url = https://gitlab.com/cm-14/android.git#查看screen日志
tail -f ~/OP3-screen-*.log#关机命令
sleep 60 ; cd /tmp; echo z |sudo -S umount /OP3TLos14Build ; echo z |sudo -S umount /mnt/OP3TLos14Build ; echo z |sudo -S poweroff
确认版本号 为 cm-14.1
cd /tmp/
git clone https://mirrors.bfsu.edu.cn/git/lineageOS/LineageOS/android.git
cd /tmp/android/git --no-pager branch --all | grep cm-14.1 # == remotes/origin/cm-14.1
git --no-pager tag --list | grep cm-14.1 #无
相关文章:
oneplus3t-lineage-14编译-android7
lineageOS-14.1-oneplus3t-build.md lineageOS-14(android7)的开发者模式/usb调试(adb)有root功能, 而lineageOS-16(android9)无 oneplus3t-lineage-14编译-android7 1 清华linageos镜像 x lineage-14.1-20180223-nightly-oneplus3-signed.zip ntfs分区挂载为普通用户目录…...
Spring Boot与Spring的区别
在当今的Java开发领域,Spring框架无疑是最为重要且广泛应用的框架之一。而随着技术的不断发展和开发者对效率与便捷性的追求,基于Spring框架的Spring Boot应运而生。接下来,将详细阐述Spring Boot与Spring的主要区别,并通过实际的…...
阿九的python 爬虫进阶课18.3 学习笔记
文章目录 前言1. 爬取大标题2. 爬取小标题3. 证券栏下的标题4. 某篇文章里的具体内容 前言 网课链接:https://www.bilibili.com/video/BV1kV4y1576b/新浪财经网址:https://finance.sina.com.cn/需先下载库: conda install lxml布置爬取的一…...
对人型机器人的研究和展望
目录 概述 1 核心软硬件部件 1.1 运动控制部分 1.1.1 减速机 1.1.2 编码器 1.1.3 直流无刷电机 1.2 智能仿生手 1.3 控制板卡 2 人型机器人的应用 3 未来展望 概述 如果现在有人问:当前那个行业最火?毫无疑问答案肯定是人型机器人了。当前各类机…...
docker 使用远程镜像启动一个容器
使用前提: 首先你得安装docker,其次你得拥有一个远程镜像 docker run --name io_11281009 --rm -it -p 2233:22 -v .:/root/py -e ed25519_rootAAAAC3NzaC1lZDI1********Oy7zR7l7aUniR2rul ghcr.lizzie.fun/fj0r/io srv对上述命令解释: 1.docker run:…...
VTK知识学习(37)-频域处理
1、前言 在图像处理和分析中,经常会将图像从图像空间转换到其他空间中,并利用这些空间的性质对转换后的数据进行分析处理。图像频域处理借助空间变换将图像从图像空间转换到频域空间,根据频域空间的性质对数据进行处理(如滤波),最…...
什么是软件架构
什么是软件架构 程序员说,软件架构是要决定编写哪些C程序或OO类、使用哪些库和框架 程序经理说,软件架构就是模块的划分和接口的定义 系统分析员说,软件架构就是为业务领域对象的关系建模 配置管理员说,软件架构就是开发出来的…...
RoCE网络及其协议栈详解(没有中间商赚差价的网络)
引言 随着数据中心对高性能、低延迟通信需求的不断增长,传统的TCP/IP以太网连接已经难以满足现代应用的要求。为了解决这些问题,RDMA(Remote Direct Memory Access)技术应运而生。RDMA是一种允许网络中的不同计算机直接访问对方内…...
el-dialog弹窗的@open方法中,第一次引用ref发现undefined问题,第二次后面又正常了
解决方法 直接不用这个open方法,转而用opened,代码例子: <el-dialog title"单个新增" :visible.sync"PlacardShowSingle" opened"openpbSingle()" width"1100px" top"1%" :close-on-c…...
基于阿里云视觉智能平台实现换脸程序
简介 阿里云视觉智能平台提供了一种强大的换脸功能,能够将视频中的人脸替换成其他图片中的脸。这种功能广泛应用于视频编辑、特效制作等领域。本文将介绍如何使用阿里云视觉智能平台进行视频换脸。 核心工作流程 整个换脸程序的实现可分为以下几个主要步骤&#…...
【2024年华为OD机试】(A卷,100分)- 完美走位 (Java JS PythonC/C++)
一、问题描述 题目解析 题目描述 在第一人称射击游戏中,玩家通过键盘的 A、S、D、W 四个按键控制游戏人物分别向左、向后、向右、向前进行移动。假设玩家每按动一次键盘,游戏人物会向某个方向移动一步。如果玩家在操作一定次数的键盘并且各个方向的步数相同时,此时游戏人…...
一文夯实垃圾收集的理论基础
如何判断一个引用是否存活 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。 优点:可即刻回收垃圾&a…...
jenkins-api操作
一. 简述: 在一个比较复杂的环境中, 往往会有自己开发的运维管理平台。在代码发布这块,尽管jenkins有一个比较方便的UI, 但很多团队还是喜欢集中式管理, 将发布功能(仅仅把jenkins作为一个发布组件使用)嵌入运维管理平…...
SpringBoot3+Vue3学习
什么是Spring Boot? Spring Boot 是Spring 提供的一个子项目,用于快速构建Spring应用程序 传统方式弊端:之前的项目都用Spring FrameWork构建,需要手动引入依赖,依赖之间有可能存在冲突,较为麻烦;在配置…...
SQL刷题快速入门(三)
其他章节: SQL刷题快速入门(一) SQL刷题快速入门(二) 承接前两个章节,本系列第三章节主要讲SQL中where和having的作用和区别、 GROUP BY和ORDER BY作用和区别、表与表之间的连接操作(重点&…...
Flutter鸿蒙化中的Plugin
Flutter鸿蒙化中的Plugin 前言鸿蒙项目内PluginFlutter端实现鸿蒙端实现创建Plugin的插件类注册Plugin 开发纯Dart的package为现有插件项目添加ohos平台支持创建插件配置插件编写插件内容 参考资料 前言 大家知道Flutter和鸿蒙通信方式和Flutter和其他平台通信方式都是一样的&…...
Ubuntu 22.04.5 修改IP
Ubuntu22.04.5使用的是netplan管理网络,因此需要在文件夹/etc/netplan下的01-network-manager-all.yaml中修改,需要权限,使用sudo vim或者其他编辑器,修改后的内容如下: # Let NetworkManager manage all devices on …...
后端:MyBatis
文章目录 1. MyBatis1-1. Mybatis 工具类的封装1-2. Mybatis 通过集合或实体类传递参数-实现插入数据(增)1-3. MyBatis 实现删除数据(删)1-4. MyBatis 实现修改数据(改)1-5. MyBatis 实现查询数据(查) 2. MyBatis 配置文件中的一些标签和属性2-1.environments标签2-2. dataSour…...
CBAM-2018学习笔记
名称: Convolutional Block Attention Module (CBAM) 来源: CBAM: Convolutional Block Attention Module 相关工作: #ResNet #GoogleNet #ResNeXt #Network-engineering #Attention-mechanism 创新点: 贡献: 提…...
HTML根元素<html>的语言属性lang:<html lang=“en“>
诸神缄默不语-个人CSDN博文目录 在编写HTML页面时,通常会看到<html lang"en">这行代码,特别是在网页的开头部分,就在<!DOCTYPE html>后面。许多开发者可能对这个属性的含义不太了解,它到底有什么作用&…...
解决github无法clone的问题
问题背景 (base) ~$ git clone https://github.com/isaac-sim/IsaacLab.git 正克隆到 IsaacLab... fatal: 无法访问 https://github.com/isaac-sim/IsaacLab.git/:gnutls_handshake() failed: Error in the pull function.解决办法 我使用了代理,需要配…...
第1章:Python TDD基础与乘法功能测试
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
【华为路由/交换机的ftp文件操作】
华为路由/交换机的ftp文件操作 PC:10.0.1.1 R1:10.0.1.254 / 10.0.2.254 FTP:10.0.2.1 S1:无配置 在桌面创建FTP-Huawei文件夹,里面创建config/test.txt。 点击上图中的“启动”按钮。 然后ftp到server,…...
【HBuilderX 中 Git 的使用】
目录: 一:安装必要的版本控制工具二:把Github上的项目克隆到本地三:将本地的项目上传到Github上 一:安装必要的版本控制工具 1️⃣ 安装 TortoiseGit 工具,下载地址:https://tortoisegit.org/do…...
语言模型的价值定位与技术突破:从信息处理到创新认知
标题:语言模型的价值定位与技术突破:从信息处理到创新认知 文章信息摘要: 当前语言模型的核心价值主要体现在信息综合与处理能力上,用户友好的交互界面是其成功关键。在模型计算机制方面,推理能力的实现包括chain-of-…...
使用Websocket进行前后端实时通信
1、引入jar,spring-websocket-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2、配置websocket config import org.springframe…...
【Leetcode 热题 100】70. 爬楼梯
问题背景 假设你正在爬楼梯。需要 n n n 阶你才能到达楼顶。 每次你可以爬 1 1 1 或 2 2 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 数据约束 1 ≤ n ≤ 45 1 \le n \le 45 1≤n≤45 解题过程 昨天刚刚当成扩展题做过,今天遇到了再写一次。…...
STM32更新程序OTA
STM32的OTA(Over-The-Air)更新程序是一种通过无线通信方式,为设备分发新软件、配置甚至更新加密密钥的技术。以下是关于STM32 OTA更新程序的详细介绍: 一、OTA升级流程 STM32的OTA升级流程通常包括以下几个关键步骤:…...
【海贼王航海日志:前端技术探索】一篇文章带你走进JavaScript(三)
目录 1 -> WebAPI背景知识 1.1 -> 什么是WebAPI 1.2 -> 什么是API 1.3 -> 什么是DOM 1.3.1 -> DOM树 2 -> 获取元素 2.1 -> querySelector 2.2 -> querySelectorAll 3 -> 事件初识 3.1 -> 基本概念 3.2 -> 事件三要素 4 -> 操…...
计算机创造的奇迹——C语言
一.简介 C语言是一种较早的程序设计语言,诞生于1972年的贝尔实验室。1972 年,Dennis Ritchie 设计了C语言,它继承了B语言的许多思想,并加入了数据类型的概念及其他特性。 尽管C 语言是与 UNIX 操作系统一起被开发出来的ÿ…...
TypeScript - 利用GPT辅助学习
TypeScript 一、基础1. 安装 TypeScript2. 创建你的第一个 TypeScript 文件3. 编译 TypeScript 代码4. 变量声明与类型注解5. 函数与类型注解6. 总结 二、进阶常用类型1. 类型别名2. 对象类型3. 类型断言4.typeof 操作符 高级类型1. 类2. 交叉类型3. 泛型与 keyof4. 索引签名类…...
Node.js 与 JavaScript 是什么关系
JavaScript 是一种编程语言,而 Node.js 是 JavaScript 的一个运行环境,它们在不同的环境中使用,具有一些共同的语言基础,但也有各自独特的 API 和模块,共同推动着 JavaScript 在前后端开发中的广泛应用。 一、基础语言…...
Spring MVC:设置响应
目录 引言 1. 返回静态页面 1.1 Spring 默认扫描路径 1.2 RestController 1.2.1 Controller > 返回页面 1.2.2 ResponseBody 2. 返回 HTML 2.1 RequestMapping 2.1.1 produces(修改响应的 Content-Type) 2.1.2 其他属性 3. 返回 JSON 4. 设置状态码 4.1 HttpSer…...
c#实现当捕获异常时自动重启程序
首先,需要说明这并不是一个推荐的做法,只有在你确实有这样的需求时才考虑这么做。 以下是AI的回答,为什么不推荐这么做,供参考。 在C#中,如果你在catch语句中尝试重启程序自身,可能会遇到以下几个问题&…...
游戏引擎学习第84天
仓库:https://gitee.com/mrxiao_com/2d_game_2 我们正在试图弄清楚如何完成我们的世界构建 上周做了一些偏离计划的工作,开发了一个小型的背景位图合成工具,这个工具做得还不错,虽然是临时拼凑的,但验证了背景构建的思路。这个过…...
Python----Python高级(文件操作open,os模块对于文件操作,shutil模块 )
一、文件处理 1.1、文件操作的重要性和应用场景 1.1.1、重要性 数据持久化: 文件是存储数据的一种非常基本且重要的方式。通过文件,我们可 以将程序运行时产生的数据永久保存下来,以便将来使用。 跨平台兼容性: 文件是一种通用…...
“AI 大模型内容安全审核软件系统:守护网络世界的卫士
在如今这个信息爆炸的互联网时代,网络上的内容那是五花八门、层出不穷。这时候,咱就得靠 AI 大模型内容安全审核软件系统来给咱把把关了。 咱就说社交媒体平台吧,每天都有海量的用户在上面发布文字、图片、视频啥的。要是没有一个靠谱的审核系…...
快速入门Python的异步库:asyncio
目录 异步 Python asyncio 1. async 关键字 2. await 关键字 3. asyncio.run() 4. asyncio.sleep() 5. 协程 程序执行流程 可以被等待的异步 协程 任务 Futures 任务 asyncio.create_task() await 和任务结果 Reference 异步 我们首先先来谈谈异步,…...
大美祖国-使用Java盘点那些在地名中出现最多的汉字
目录 前言 一、地名数据准备 1、全国地名数据 二、使用Java进行汉字统计 1、汉字数据统计 2、汉字分割统计 三、浅谈地名汉字名次及其意义 1、山、城、江、河 2、安、平、宁 3、地名中的方位 四、总结 前言 在中国这片古老而又年轻的土地上,地名不仅仅是地…...
华为OD机试E卷 --羊、狼、农夫过河--24年OD统一考试(Java JS Python C C++)
文章目录 题目描述输入描述输出描述用例题目解析JS算法源码Java算法源码python算法源码c算法源码c++算法源码题目描述 羊、狼、农夫都在岸边,当羊的数量小于狼的数量时,狼会攻击羊,农夫则会损失羊。农夫有一艘容量固定的船,能够承载固定数量的动物。 要求求出不损失羊情况…...
Java - WebSocket
一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接,这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发,并于2…...
JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码
1. 生鲜后台管理系统-注册功能 1.1. 注册功能 (1)创建注册RegisterServlet,接收form表单中的参数。 (2)service创建一个userService处理业务逻辑。 (3)RegisterServlet将参数传递给ser…...
【深度学习】利用Java DL4J 训练金融投资组合模型
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…...
【MySQL篇】事务的认识以及四大特性
何为事务? 事务(Transaction)是指一组操作的集合,这些操作要么全部执行成功,要么全部不执行。事务通常用于保证数据库的一致性、完整性和可靠性,确保数据的完整性与正确性。 有效避免部分执行࿰…...
CSS 网络安全字体
适用于 HTML 和 CSS 的最佳 Web 安全字体 下面列出了适用于 HTM L和 CSS 的最佳 Web 安全字体: Arial (sans-serif)Verdana (sans-serif)Helvetica (sans-serif)Tahoma (sans-serif)Trebuchet MS (sans-serif)Times New Roman (serif)Georgia (serif)Garamond (se…...
实战演示:利用ChatGPT高效撰写论文
在当今学术界,撰写论文是一项必不可少的技能。然而,许多研究人员和学生在写作过程中常常感到困惑和压力。幸运的是,人工智能的快速发展为我们提供了新的工具,其中ChatGPT便是一个优秀的选择。本文将通过易创AI创作平台,…...
显卡(Graphics Processing Unit,GPU)架构详细解读
显卡架构主要分为两大类:GPU 核心架构(也称为图形处理单元架构)和显卡的其他组件(如内存、控制器、输出接口等)。本篇文章将对显卡架构进行详细分析,重点介绍 GPU 核心架构、显卡计算单元、显存结构、显卡管…...
OpenCV相机标定与3D重建(63)校正图像的畸变函数undistort()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 转换图像以补偿镜头畸变。 该函数通过变换图像来补偿径向和切向镜头畸变。 此函数仅仅是 initUndistortRectifyMap(使用单位矩阵 R…...
人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)
Softmax回归听名字,依然好像是做回归任务的算法,但其实它是去做多分类任务的算法。 篮球比赛胜负是二分类,足球比赛胜平负就是多分类 识别手写数字0和1是二分类,识别手写数字0-9就是多分类 Softmax回归算法是一种用于多分类问题…...
【JDBC】数据库连接的艺术:深入解析数据库连接池、Apache-DBUtils与BasicDAO
文章目录 前言🌍 一.连接池❄️1. 传统获取Conntion问题分析❄️2. 数据库连接池❄️3.连接池之C3P0技术🍁3.1关键特性🍁3.2配置选项🍁3.3使用示例 ❄️4. 连接池之Druid技术🍁 4.1主要特性🍁 4.2 配置选项…...