国产OS上完整编译Qt5.15、搭建基本开发环境需要的库
近期有师弟问我国产OS安装Qt5.15编译老是不完整,不是没声音,就是没视频,或者没有xcb。通过QEMU模拟Arm64,闲来20几天摸索,完整编译了Qt5.15,并编译成功了我的SDR玩具taskBus。

1.主要结论:
- 该OS内核太老,5.4,gcc 9, Qt6.2以上的基本很难。还是退回 Qt 5.15 好一些。
- 想编译 5.15,先安装 5.12,这样可以凑齐很多包。
在编译过程中,还有一些做法,值得记录。
1.1 使用 recheck 不断凑齐缺失的包
首先 configure 的时候,会缺少很多包。安装相应的包后,要使用 -recheck 选项(Qt5有,Qt6没有)触发重新检查,才能生效。
./configure -xcb -prefix /usr/local/qt/5.15 -sql-psql -sql-mysql -sql-sqlite -gstreamer 1.0 -sql-tds -recheck
直到确保包check通过后,再运行1次不带 recheck的版本。否则,在随后 make install时会再次触发configure,导致重新编译。
1.2 解决时戳冲突导致的重新编译
在qemu虚拟化下,可能出现configure时的时间和make时的时间错位,导致重新编译。每次完整编译,意味着1天的开销。
如果确定其实所有的包已经编译好了,则完全可以通过touch重置所有时戳,同时解决 make 、sudo make install 导致的文件权属问题。
首先准备bash脚本 lstouch.sh 并赋予x属性。
#!/bin/bash
echo $1
chown user:user $1
touch -t 202502010102.03 $1
而后运行:
sudo find . | xargs -I {} -P 6 ./lstouch.sh {}
即可重置所有文件为1个时刻。由于make检查是否要重新编译,并不检查等于符号,Makefile的日期和obj的日期完全相同,则不会编译。
2. 附件:安装的包
我把history里曾经安装的包列举如下。感谢deepSeek,后两列是采用deepSeek生成的。
要注意的是,还有cups的不少dev包是用 dkpg 单独安装的,因为国产OS的默认mirror的dev版本和实际的工具版本不匹配,导致无法apt安装(也是醉了)。
| 包名 | 用途 | 官网 |
|---|---|---|
| bison | 语法分析器生成器 | https://www.gnu.org/software/bison/ |
| build-essential | 编译工具集合 | https://packages.debian.org/build-essential |
| clang-format | C++代码格式化工具 | https://clang.llvm.org/docs/ClangFormat.html |
| clang-tidy | C++代码静态分析工具 | https://clang.llvm.org/extra/clang-tidy/ |
| clang-tools | Clang工具集合 | https://clang.llvm.org/ |
| clazy | Qt/C++代码静态分析工具 | https://github.com/KDE/clazy |
| cmake | 跨平台构建工具 | https://cmake.org/ |
| filezilla | FTP客户端 | https://filezilla-project.org/ |
| firebird3.0-server | Firebird数据库服务器 | https://firebirdsql.org/ |
| firebird-dev | Firebird开发库 | https://firebirdsql.org/ |
| flex | 词法分析器生成器 | https://github.com/westes/flex |
| flite1-dev | 语音合成开发库 | https://github.com/festvox/flite |
| freetds-dev | FreeTDS开发库 | https://www.freetds.org/ |
| g++ | GNU C++编译器 | https://gcc.gnu.org/ |
| gcc | GNU C编译器 | https://gcc.gnu.org/ |
| gdb | GNU调试器 | https://www.gnu.org/software/gdb/ |
| geany | 轻量级IDE | https://www.geany.org/ |
| git | 分布式版本控制系统 | https://git-scm.com/ |
| git-gui | Git图形界面 | https://git-scm.com/ |
| gitk | Git提交历史查看器 | https://git-scm.com/ |
| Gperf | 哈希函数生成器 | https://www.gnu.org/software/gperf/ |
| gqrx-sdr | SDR接收器软件 | https://gqrx.dk/ |
| grass | 地理信息系统 | https://grass.osgeo.org/ |
| grass-dev | GRASS GIS开发库 | https://grass.osgeo.org/ |
| grass-gui | GRASS GIS图形界面 | https://grass.osgeo.org/ |
| gstreamer1.0-qt5 | GStreamer Qt5集成 | https://gstreamer.freedesktop.org/ |
| htop | 交互式系统监视器 | https://htop.dev/ |
| isag | 系统活动报告工具 | https://packages.debian.org/isag |
| lib3ds-dev | 3DS文件格式开发库 | https://github.com/lib3ds/lib3ds |
| libalsaplayer-dev | ALSA音频播放开发库 | https://packages.debian.org/libalsaplayer-dev |
| libarchive-dev | 压缩文件开发库 | https://www.libarchive.org/ |
| libasound2-dev | ALSA声音开发库 | https://www.alsa-project.org/ |
| libatspi2.0-dev | 辅助技术开发库 | https://developer.gnome.org/atspi/ |
| libavcodec-dev | FFmpeg编解码开发库 | https://ffmpeg.org/ |
| libavformat-dev | FFmpeg格式开发库 | https://ffmpeg.org/ |
| libav-tools | FFmpeg多媒体工具 | https://ffmpeg.org/ |
| libbluetooth-dev | 蓝牙开发库 | https://www.bluez.org/ |
| libclang-10-dev | Clang 10开发库 | https://clang.llvm.org/ |
| libdbus-1-dev | D-Bus开发库 | https://www.freedesktop.org/wiki/Software/dbus/ |
| libdbus-cpp-dev | D-Bus C++开发库 | https://github.com/dbus-cxx/dbus-cxx |
| libdrm-dev | DRM开发库 | https://dri.freedesktop.org/ |
| libevent-dev | 事件通知开发库 | https://libevent.org/ |
| libfftw3-dev | 快速傅里叶变换开发库 | https://www.fftw.org/ |
| libfontconfig1-dev | 字体配置开发库 | https://www.freedesktop.org/wiki/Software/fontconfig/ |
| libfreetype6-dev | 字体渲染开发库 | https://www.freetype.org/ |
| libgdal-grass | GDAL GRASS插件 | https://gdal.org/ |
| libghc-double-conversion-dev | Haskell双精度转换开发库 | https://hackage.haskell.org/package/double-conversion |
| libgl1-mesa-dev | Mesa OpenGL开发库 | https://www.mesa3d.org/ |
| libglu1-mesa-dev | Mesa GLU开发库 | https://www.mesa3d.org/ |
| libgstreamer1.0-dev | GStreamer开发库 | https://gstreamer.freedesktop.org/ |
| libgstreamermm-1.0-dev | GStreamer C++开发库 | https://gstreamer.freedesktop.org/ |
| libharfbuzz-bin | HarfBuzz文本 shaping工具 | https://harfbuzz.github.io/ |
| libharfbuzz-dev | HarfBuzz文本 shaping开发库 | https://harfbuzz.github.io/ |
| libiconv-hook-dev | 字符编码转换开发库 | https://www.gnu.org/software/libiconv/ |
| libicu-dev | Unicode开发库 | https://icu.unicode.org/ |
| libicu-le-hb-dev | ICU HarfBuzz开发库 | https://icu.unicode.org/ |
| libiio-dev | 工业I/O开发库 | https://analogdevicesinc.github.io/libiio/ |
| libinput-dev | 输入设备开发库 | https://www.freedesktop.org/wiki/Software/libinput/ |
| libjson-perl | JSON Perl模块 | https://metacpan.org/pod/JSON |
| libmd4c-dev | Markdown解析开发库 | https://github.com/mity/md4c |
| libmysqlclient-dev | MySQL客户端开发库 | https://dev.mysql.com/ |
| libnss3-dev | NSS开发库 | https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS |
| libopenal-dev | OpenAL音频开发库 | https://openal.org/ |
| libopusfile-dev | Opus音频文件开发库 | https://opus-codec.org/ |
| libpcap-dev | 网络数据包捕获开发库 | https://www.tcpdump.org/ |
| libpq-dev | PostgreSQL开发库 | https://www.postgresql.org/ |
| libqt5bluetooth5 | Qt5蓝牙模块 | https://www.qt.io/ |
| libqt5charts5-dev | Qt5图表开发库 | https://www.qt.io/ |
| libqt5datavisualization5-dev | Qt5数据可视化开发库 | https://www.qt.io/ |
| libqt5gamepad5-dev | Qt5游戏手柄开发库 | https://www.qt.io/ |
| libqt5gstreamer-dev | Qt5 GStreamer开发库 | https://www.qt.io/ |
| libqt5location5-plugins | Qt5定位插件 | https://www.qt.io/ |
| libqt5multimedia5-plugins | Qt5多媒体插件 | https://www.qt.io/ |
| libqt5networkauth5-dev | Qt5网络认证开发库 | https://www.qt.io/ |
| libqt5positioning5-plugins | Qt5定位插件 | https://www.qt.io/ |
| libqt5remoteobjects5-dev | Qt5远程对象开发库 | https://www.qt.io/ |
| libqt5sensors5-dev | Qt5传感器开发库 | https://www.qt.io/ |
| libqt5serialbus5-dev | Qt5串行总线开发库 | https://www.qt.io/ |
| libqt5serialbus5-plugins | Qt5串行总线插件 | https://www.qt.io/ |
| libqt5serialport5-dev | Qt5串口开发库 | https://www.qt.io/ |
| libqt5sql5-ibase | Qt5 InterBase数据库驱动 | https://www.qt.io/ |
| libqt5sql5-mysql | Qt5 MySQL数据库驱动 | https://www.qt.io/ |
| libqt5sql5-odbc | Qt5 ODBC数据库驱动 | https://www.qt.io/ |
| libqt5sql5-psql | Qt5 PostgreSQL数据库驱动 | https://www.qt.io/ |
| libqt5sql5-tds | Qt5 TDS数据库驱动 | https://www.qt.io/ |
| libqt5svg5-dev | Qt5 SVG开发库 | https://www.qt.io/ |
| libqt5texttospeech5-dev | Qt5文本转语音开发库 | https://www.qt.io/ |
| libqt5-ukui-style-dev | Qt5 UKUI风格开发库 | https://www.qt.io/ |
| libqt5virtualkeyboard5-dev | Qt5虚拟键盘开发库 | https://www.qt.io/ |
| libqt5webchannel5-dev | Qt5 WebChannel开发库 | https://www.qt.io/ |
| libqt5webengine5 | Qt5 WebEngine模块 | https://www.qt.io/ |
| libqt5websockets5-dev | Qt5 WebSockets开发库 | https://www.qt.io/ |
| libqt5webview5-dev | Qt5 WebView开发库 | https://www.qt.io/ |
| libqt5x11extras5-dev | Qt5 X11扩展开发库 | https://www.qt.io/ |
| libqtspell-qt5-dev | Qt5拼写检查开发库 | https://github.com/manisandro/qtspell |
| libqwt-qt5-dev | Qt5图表开发库 | https://qwt.sourceforge.io/ |
| libre2-dev | RE2正则表达式开发库 | https://github.com/google/re2 |
| libsdl2-dev | SDL2开发库 | https://www.libsdl.org/ |
| libsnappy-dev | Snappy压缩开发库 | https://github.com/google/snappy |
| libspeechd-dev | 语音合成开发库 | https://freebsoft.org/speechd |
| libssl-dev | SSL安全套接字开发库 | https://www.openssl.org/ |
| libuhd-dev | UHD开发库 | https://files.ettus.com/manual/ |
| libvpx-dev | VP8/VP9视频编解码开发库 | https://www.webmproject.org/ |
| libx11-dev | X11开发库 | https://www.x.org/ |
| libx11-xcb-dev | X11-XCB开发库 | https://www.x.org/ |
| libxcb1-dev | XCB开发库 | https://xcb.freedesktop.org/ |
| libxcb-composite0-dev | XCB复合扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-cursor-dev | XCB光标开发库 | https://xcb.freedesktop.org/ |
| libxcb-damage0-dev | XCB损坏扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-dpms0-dev | XCB DPMS扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-dri2-0-dev | XCB DRI2扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-dri3-dev | XCB DRI3扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-ewmh-dev | XCB EWMH扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-glx0-dev | XCB GLX扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-icccm4-dev | XCB ICCCM扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-image0-dev | XCB图像扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-imdkit-dev | XCB输入法开发库 | https://github.com/fcitx/xcb-imdkit |
| libxcb-keysyms1-dev | XCB键符号开发库 | https://xcb.freedesktop.org/ |
| libxcb-present-dev | XCB Present扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-randr0-dev | XCB RandR扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-record0-dev | XCB Record扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-render-util0-dev | XCB渲染工具开发库 | https://xcb.freedesktop.org/ |
| libxcb-res0-dev | XCB资源扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-screensaver0-dev | XCB屏幕保护扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-shape0-dev | XCB形状扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-shm0-dev | XCB共享内存扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-sync-dev | XCB同步扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-util-dev | XCB工具开发库 | https://xcb.freedesktop.org/ |
| libxcb-xf86dri0-dev | XCB XF86DRI扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xfixes0-dev | XCB XFixes扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xinerama0-dev | XCB Xinerama扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xinput-dev | XCB XInput扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xkb-dev | XCB XKB扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xrm-dev | XCB X资源管理开发库 | https://github.com/Airblader/xcb-util-xrm |
| libxcb-xtest0-dev | XCB XTest扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xv0-dev | XCB XVideo扩展开发库 | https://xcb.freedesktop.org/ |
| libxcb-xvmc0-dev | XCB XVideo MC扩展开发库 | https://xcb.freedesktop.org/ |
| libxcomposite-dev | X Composite扩展开发库 | https://www.x.org/ |
| libxcursor-dev | X光标开发库 | https://www.x.org/ |
| libxdamage-dev | X损坏扩展开发库 | https://www.x.org/ |
| libxext-dev | X扩展开发库 | https://www.x.org/ |
| libxfixes-dev | X Fixes扩展开发库 | https://www.x.org/ |
| libxi-dev | X输入扩展开发库 | https://www.x.org/ |
| libxkbcommon-dev | XKB通用开发库 | https://xkbcommon.org/ |
| libxkbcommon-x11-dev | XKB X11开发库 | https://xkbcommon.org/ |
| libxkbfile-dev | XKB文件开发库 | https://www.x.org/ |
| libxrandr-dev | X RandR扩展开发库 | https://www.x.org/ |
| libxrender-dev | X渲染扩展开发库 | https://www.x.org/ |
| libxshmfence-dev | X共享内存栅栏开发库 | https://www.x.org/ |
| libxtst-dev | X测试扩展开发库 | https://www.x.org/ |
| libzstd-dev | Zstandard压缩开发库 | https://facebook.github.io/zstd/ |
| lzip | Lzip压缩工具 | https://www.nongnu.org/lzip/ |
| lzma-dev | LZMA压缩开发库 | https://tukaani.org/xz/ |
| mc | Midnight Commander文件管理器 | https://midnight-commander.org/ |
| nano | 文本编辑器 | https://www.nano-editor.org/ |
| ncompress | 压缩工具 | https://packages.debian.org/ncompress |
| ninja-build | Ninja构建系统 | https://ninja-build.org/ |
| nodejs | Node.js JavaScript运行时 | https://nodejs.org/ |
| npm | Node.js包管理器 | https://www.npmjs.com/ |
| Openssh | SSH客户端和服务器 | https://www.openssh.com/ |
| Partitionmanager | 分区管理工具 | https://www.kde.org/applications/system/partitionmanager/ |
| perl | Perl编程语言 | https://www.perl.org/ |
| pgadmin3 | PostgreSQL管理工具 | https://www.pgadmin.org/ |
| postgis | PostGIS地理信息系统 | https://postgis.net/ |
| postgis-gui | PostGIS图形界面 | https://postgis.net/ |
| postgresql | PostgreSQL数据库 | https://www.postgresql.org/ |
| python3-html5lib | Python HTML5解析库 | https://github.com/html5lib/html5lib-python |
| python3-pip | Python包管理工具 | https://pip.pypa.io/ |
| python3-rpy2 | Python R语言接口 | https://rpy2.github.io/ |
| python3-termcolor | Python终端颜色库 | https://pypi.org/project/termcolor/ |
| qgis | QGIS地理信息系统 | https://qgis.org/ |
| qt5-default | Qt5默认开发包 | https://www.qt.io/ |
| qt5keychain-dev | Qt5密钥管理开发库 | https://github.com/frankosterfeld/qtkeychain |
| qt5-style-plugins | Qt5风格插件 | https://www.qt.io/ |
| qtbase5-examples | Qt5基础示例 | https://www.qt.io/ |
| qtcharts5-examples | Qt5图表示例 | https://www.qt.io/ |
| qtcreator | Qt集成开发环境 | https://www.qt.io/ |
| qtdatavisualization5-examples | Qt5数据可视化示例 | https://www.qt.io/ |
| qtdeclarative5-dev | Qt5声明式开发库 | https://www.qt.io/ |
| qtlocation5-dev | Qt5定位开发库 | https://www.qt.io/ |
| qtmultimedia5-dev | Qt5多媒体开发库 | https://www.qt.io/ |
| qtmultimedia5-examples | Qt5多媒体示例 | https://www.qt.io/ |
| qtpositioning5-dev | Qt5定位开发库 | https://www.qt.io/ |
| qtquickcontrols2-5-dev | Qt5 Quick Controls 2开发库 | https://www.qt.io/ |
| qttools5-dev | Qt5工具开发库 | https://www.qt.io/ |
| qtwebengine5-dev | Qt5 WebEngine开发库 | https://www.qt.io/ |
| qtwebengine5-examples | Qt5 WebEngine示例 | https://www.qt.io/ |
| ruby | Ruby编程语言 | https://www.ruby-lang.org/ |
| saga | SAGA地理信息系统 | https://saga-gis.org/ |
| screen | 终端多路复用器 | https://www.gnu.org/software/screen/ |
| speech-dispatcher | 语音合成服务 | https://freebsoft.org/speechd |
| speech-dispatcher-flite | Flite语音合成插件 | https://freebsoft.org/speechd |
| sqlite | SQLite数据库 | https://www.sqlite.org/ |
| uhd-soapysdr | UHD SoapySDR支持 | https://github.com/pothosware/SoapyUHD |
| unrar | RAR解压工具 | https://www.rarlab.com/ |
| valgrind | 内存调试工具 | https://valgrind.org/ |
| wireshark | 网络协议分析工具 | https://www.wireshark.org/ |
| xarchiver | 压缩文件管理器 | https://github.com/ib/xarchiver |
| zstd | Zstandard压缩工具 | https://facebook.github.io/zstd/ |
3. 遗留问题
之所以花了20多天,就是因为默认的仓库缺乏维护,导致了不一致的版本(lib和lib-dev的版本冲突)。而基于x86的qemu模拟arm64如蜗牛一样,每个试错都会花费很久。
而我在OS的论坛提问,有朋友提醒我,卸载cups,安装开源的版本,会失去对国产打印机的支持。所以,相当于问题还没有完全解决。Webengine以及一些模块依赖cups,这是一个大问题。
相关文章:
国产OS上完整编译Qt5.15、搭建基本开发环境需要的库
近期有师弟问我国产OS安装Qt5.15编译老是不完整,不是没声音,就是没视频,或者没有xcb。通过QEMU模拟Arm64,闲来20几天摸索,完整编译了Qt5.15,并编译成功了我的SDR玩具taskBus。 1.主要结论: 该O…...
Python 编程题第一节:判断素数、求阶乘、求圆的周长和面积、求三角形斜边长、比较三个数的大小、找出区间内的素数
判断素数 挺简单的,设一个flag来判断是否是素数,从2开始到前一个数,可以整除便不是素数,1不是素数 aint(input()) flagFalse for i in range(2,a):if a%i0:flagTruebreak if flagTrue or a1:print("不是素数") else:p…...
Python批量压缩并上载CSV数据文件到Box企业云盘
Python在Windows下批量压缩CSV文件为ZIP并异步上传到Box企业云,需整合文件处理、异步任务、配置管理和日志记录功能。 该方案通过线程池实现异步上传,每个文件独立压缩处理,异常发生时继续后续任务。日志系统记录完整操作流水,配置…...
MyBatis简明教程
MyBatis 是一个用于简化数据库操作的持久层框架,它的核心思想是 将 SQL 与 Java 代码解耦,让开发者专注于 SQL 的编写,同时自动处理重复的数据库操作步骤。 一、核心思想:SQL 与 Java 解耦 传统 JDBC 需要开发者手动管理数据库连…...
有什么区别?Elastic 和 Splunk 数据层
作者:来自 Elastic Ugo Sangiorgi, Matt Wehle 了解 Elastic 和 Splunk 数据管理方法之间的主要区别,以便做出明智的决策,实现高效的数据处理 在数据管理领域,在讨论如何根据不同的性能要求提供和/或保留数据时,经常会…...
Tips :仿真竞争条件 指的是什么?
文章目录 **为什么会出现仿真竞争条件?****典型场景举例****System Verilog 如何解决竞争条件?****1. 使用 `program` 块隔离测试平台****2. 使用 `clocking` 块明确时序关系****3. 非阻塞赋值(`<=`)的合理使用****竞争条件的根本原因****总结****代码结构****1. 设计模…...
BGP状态和机制
BGP邻居优化 为了增加稳定性,通常建议实验回环口来建立邻居。更新源:建立邻居和邻居所学习到的路由的下一跳。多跳:EBGP邻居建立默认选哟直连,因为TTL=1,如果非直连,必须修改TTL。命令备注peer 2.2.2.2 connect-interface lo1配置更新源peer 2.2.2.2 ebgp-max-hop 2配置T…...
【电机控制器】PY32F00BF15U6TR-从KEIL5中计算资源消耗资源
【电机控制器】PY32F00BF15U6TR-从KEIL5中计算资源消耗资源 文章目录 [TOC](文章目录) 前言一、MCU芯片手册二、实验三、实验结论四、参考资料总结 前言 使用工具: 1.KEIL5编译器 提示:以下是本篇文章正文内容,下面案例可供参考 一、MCU芯片…...
CaffeineCache自定义缓存时间
文章目录 1、POM文件依赖2、声明缓存3、缓存使用4、测试缓存5、自定义缓存过期时间6、测试自定义超时时间 1、POM文件依赖 <dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1…...
python实战项目58:采集蜻蜓FM热门音频top排行榜
python实战项目58:采集蜻蜓FM热门音频top排行榜 一、采集流程介绍二、数据接口采集三、使用xpath提取页面数据1、抓包,找到数据接口2、发送请求,获取数据3、提取数据4、保存数据一、采集流程介绍 蜻蜓FM热门音频top排行榜的链接为: https://m.qingting.fm/rank/,首页如下图…...
STM32【3】芯片的底层组成概论
关于单片机的组成 单片机的意思是,小小计算电脑,麻雀虽小,五脏俱全,里面包含了CPU,ROM,RAM,各种外设。 CPU地位最高,可以访问ROM和RAM,Flash,GPIO等外设&…...
基于django图书信息管理系统的搭建(增删改查)
✍django项目搭建教程 ☞ ----------------- 教程 本文主要讲解django如何连接数据库MySQL并且可视化展示,实现增删改查功能 目录 一. 创建django应用 二. 数据库配置 三. 查看数据库 四. 编写代码 4.1视图函数 4.2 配置URL 4.3创建模板文件 4.…...
Kotlin 知识点二 延迟初始化和密封类
对变量延迟初始化 Kotlin 语言的许多特性,包括变量不可变,变量不可为空,等等。这些特性 都是为了尽可能地保证程序安全而设计的,但是有些时候这些特性也会在编码时给我们带来不 少的麻烦。 比如,如果你的类中存在很多…...
基于SpringBoot的“古城景区管理系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“古城景区管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 系统首页界面 系统注册界面 景…...
QT C++ QtConcurrent::run 异步任务 简单例子
QtConcurrent命名空间提供了高级API,使得无需使用低级线程原语即可编写多线程程序。 QtConcurrent::run是Qt框架中用于简化并发编程的一个功能,主要用于在后台线程中异步执行函数或成员函数。其主要用途包括: 异步执行函数…...
力扣hot100 —— 电话号码字母组合; 子集 (非回溯做法)简单易懂
由于博主对回溯也不是很熟悉,这里提出一种简单易懂的解法(有点暴力) 解题思路: 每个数字对应有自己的字母串; 首先遍历将每个字母存入也就是 res{{a},{b},{c}} 然后遍历后续数子对应的字母,让每个字母与…...
企业业务安全进阶之路:AI技术与数据分析的应用
在数字化时代,企业业务安全面临着前所未有的挑战。从网络安全到数据保护,每一个环节都至关重要。本文将探讨如何通过AI技术和数据分析来提升企业业务安全防护能力,确保企业在不断变化的安全威胁面前保持领先地位。 企业业务安全的重要性 企…...
windows本地升级npm
## 在管理员身份的cmd中: 运行以下命令来安装npm-windows-upgrade工具: npm install --global --production npm-windows-upgrade运行以下命令来升级到最新版本的npm: npm-windows-upgrade --npm-version latest如果你想升级到特定版本的n…...
【Redis】在Java中以及Spring环境下操作Redis
Java环境下: 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…...
Sqlserver安全篇之_隐藏实例功能和禁用SQL Server Browser服务
总结: 1、隐藏实例功能和禁用SQL Server Browser服务的功能一样,对应非默认实例(且这个默认实例是1433端口)的情况下,都是需要在连接字符串中提供端口号才能连接到实例 2、隐藏实例功能后,就算开启了SQL Server Browser服务&#…...
Directx上传堆和默认堆注意事项
前景 之前我用directx写上传堆上传给默认堆Index,但是我发现数据无法被GPU读取 void HelloTriangle::createDefaultBuffer(const void* data, const UINT byteSize, ComPtr<ID3D12Resource>& defaultBuffer) {ThrowIfFiled(m_Device->CreateCommitte…...
Java封装弱密码校验工具类
弱密码校验工具类 通过检查密码是否符合某些安全策略来判断其强度 ● 密码长度 ● 字符类型 ● 常见密码组合 import java.util.Arrays; import java.util.HashSet; import java.util.Set;public class WeakPasswordCheckUtil {// 常见弱密码列表(可根据需求扩展&…...
Figure自研模型Helix发布,人形机器人迈向新纪元?
Figure 公司自 2022 年成立以来,便在人形机器人领域崭露头角,成为行业内备受瞩目的新星。公司由连续创业者 Brett Adcock 创立,总部位于美国加利福尼亚州桑尼维尔,汇聚了来自波士顿动力公司、特斯拉、谷歌 DeepMind 等知名企业的顶…...
vue3.0将后端返回的word文件流转换为pdf并导出+html2pdf.js将页面导出为pdf
实现思路 1.将Word文档转换为HTML:mammoth.js,它可以将.docx文件转换为HTML 2.将HTML转换为PDF:使用html2pdf.js将HTML转换为PDF 如果想要相同的效果,也可以把前端页面直接导出转换为pdf: 运用的插件:html2pdf.js 后端…...
(Arrow)试时间处理变得更简单
前言 Arrow库并不是简单的二次开发,而是在datetime的基础上进行了扩展和增强。它通过提供更简洁的API、强大的时区支持、丰富的格式化和解析功能以及人性化的显示,填补了datetime在某些功能上的空白。如果你需要更高效、更人性化的日期时间处理方式,Arrow库是一个不错的选择…...
SV基础(一):System Verilog与Verilog核心区别详解
文章目录 **1. 设计增强功能****数据类型扩展****接口(Interface)****2. 验证功能增强****断言(Assertions)****约束随机测试****功能覆盖率****3. 面向对象编程(OOP)****4. 测试平台(Testbench)改进****5. 语法简化****6. 其他关键区别****学习建议**System Verilog 是…...
锂电池使用和存储电压
表格补充说明: 每列数据中,2S和3S电池的数值都是单电芯数值的2倍和3倍;对于其他电压的电池,将单电芯数值乘以相应S数即可;理论上单个电芯过放电压为3.0V,实际中为了保险,电压降到3.6V即需充电。…...
【docker】namespace底层机制
Linux 的 Namespace 机制是实现容器化(如 Docker、LXC 等)的核心技术之一,它通过隔离系统资源(如进程、网络、文件系统等)为进程提供独立的运行环境。其底层机制涉及内核数据结构、系统调用和进程管理。以下是其核心实…...
欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)
图论中的回路是指一个路径, 它从某个顶点开始, 经过所有边恰好一次, 并回到起始顶点. 定义 欧拉回路: 从一个顶点出发, 经过每条边恰好一次, 并且最终回到起始顶点. 哈密尔顿回路: 从一个顶点出发, 经过每个顶点恰好一次, 并且最终回到起始顶点. 欧拉路径: 从一个顶点出发, …...
20250221 NLP
1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…...
