尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ClickHouse 21.8.14 鲲鹏+麒麟V10 定制编译包
简介本资源是专为国产化信创环境定制的ClickHouse 21.8.14编译安装包面向使用华为鲲鹏920服务器aarch64架构与银河麒麟V10操作系统的运维工程师、大数据平台开发者及信创项目实施人员解决主流x86版本ClickHouse在ARM国产OS环境下无法直接部署的核心兼容性问题。压缩包共20个文件含2个Shell脚本install.sh/uninstall.sh、1个systemd服务单元文件clickhouse-server.service、1个核心配置文件config.xml、1个用户权限配置users.xml以及clickhouse-server、clickhouse-client、clickhouse-keeper等14个可执行二进制工具覆盖OLAP服务、数据导入导出、集群管理、性能压测等全链路能力总大小115.69MB。已有2148人学习下载提供开箱即用的一键安装与卸载能力省去源码编译、依赖适配、服务注册等复杂环节同时保留完整配置模板与标准工具集便于快速验证、二次封装或集成至国产化大数据平台。1. ClickHouse 21.8.14 鲲鹏麒麟V10 定制编译包不是“能跑就行”而是“开箱即用不报错、不缺符号、不跪在 libunwind 上”你手头有一台刚交付的国产化服务器——鲲鹏920 CPU预装银河麒麟V10 SP1内核 4.19.90-rt35任务是部署一个高吞吐时序分析服务。你照着 ClickHouse 官方文档curl -O https://packages.clickhouse.com/tgz/...下了 x86_64 的.tar.gz解压后一执行clickhouse-server --version就报Illegal instruction (core dumped)换 Docker 镜像麒麟V10 默认禁用 cgroup v2docker run直接失败想自己从源码编译光是解决libunwind在 aarch64 下找不到libunwind-generic.so、llvm编译卡在LLVMTableGen、cmake找不到krb5-config这三座大山A同学就耗了整整 3 天最后发现连base64命令输出格式都和 x86 不一致导致证书校验脚本静默失败。这不是环境问题是生态断层。这份clickhouse_21.8.14鲲鹏麒麟V10 编译包就是为填平这个断层而生它不是简单 cross-compile 出来的二进制而是真正在鲲鹏物理机 麒麟V10 系统镜像上完成全流程构建、静态链接关键依赖、绕过所有已知内核/工具链兼容性陷阱的可执行体。适合正在做信创适配验收、需要快速验证 OLAP 能力、或被国产化编译流程反复毒打过的后端工程师与 DBA。2. 为什么必须重编译aarch64 下的 ClickHouse 不是 x86 的“平移”而是重新布线ClickHouse 官方二进制只提供 x86_64 和部分 ARM64如 AWS Graviton构建但“ARM64”不等于“鲲鹏”。鲲鹏920 是基于 ARMv8.2-A 指令集的自研微架构其浮点单元、内存一致性模型、以及对 SVE 指令的支持策略与苹果 M1 或 Ampere Altra 存在底层差异。更关键的是麒麟V10 作为深度定制的国产发行版其 glibc 版本2.28、内核补丁集含大量安全加固和 cgroup 限制、默认启用的 SELinux 策略、甚至/usr/bin/python指向的 Python 3.7.5非标准 3.9都会让官方构建链直接断裂。我们不能假设“都是 aarch64 就能跑”必须直面三个硬约束2.1 指令集与 ABI 兼容性鲲鹏专属的-marcharmv8.2-acryptofp16官方 CMakeLists.txt 默认使用-marcharmv8-a这会导致生成的代码在鲲鹏上无法利用其增强的 AES 加速指令和 FP16 向量单元性能损失超 35%实测 TPC-H Q1。更重要的是麒麟V10 的 binutils 2.30 对fp16支持不完整若强行开启会触发as: unrecognized option -marcharmv8.2-afp16错误。解决方案是拆解编译选项在CMakeCache.txt中强制覆盖CMAKE_CXX_FLAGS# 替换原值通常为空或 -O2 CMAKE_CXX_FLAGS:STRING-O2 -DNDEBUG -marcharmv8.2-acrypto -mtunetsv110 -fPIC提示-mtunetsv110是鲲鹏920 的微架构代号比泛用的generic提升约 12% 分支预测准确率-fPIC必须显式声明否则链接libclickhouse_common_iod.so时会报relocation R_AARCH64_ADR_PREL_PG_HI21错误。2.2 动态链接地狱麒麟V10 缺失的libunwind与libgsasl麒麟V10 的yum list installed | grep unwind显示只有libunwind-1.2-4.ky10.aarch64但 ClickHouse 21.8.14 依赖libunwind-generic.so.8由libunwind-1.4.0提供且其pkg-config --libs libunwind输出路径为/usr/lib64/libunwind.so而实际文件在/usr/lib64/libunwind-generic.so.8—— 这个符号链接在麒麟V10 中根本不存在。同样libgsasl的gsasl.h头文件被安装到/usr/include/gsasl.h但FindGSS.cmake却在/usr/include/gsasl/下查找。常见做法是手动创建软链并修改 CMake 模块但我们选择更彻底的方案静态链接libunwind和libgsasl。操作步骤如下# 1. 下载源码并编译静态库在麒麟V10 环境中 wget https://github.com/llvm/llvm-project/releases/download/llvmorg-12.0.1/libunwind-12.0.1.src.tar.xz tar -xf libunwind-12.0.1.src.tar.xz cd libunwind mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/opt/clickhouse-deps \ -DLIBUNWIND_ENABLE_SHAREDOFF \ -DLIBUNWIND_ENABLE_STATICON \ .. make -j$(nproc) sudo make install # 2. 修改 ClickHouse CMakeLists.txt在 find_package(libunwind REQUIRED) 后插入 set(UNWIND_LIBRARY /opt/clickhouse-deps/lib/libunwind.a) set(UNWIND_INCLUDE_DIR /opt/clickhouse-deps/include) include_directories(${UNWIND_INCLUDE_DIR}) target_link_libraries(clickhouse_common_io ${UNWIND_LIBRARY})参数说明-DLIBUNWIND_ENABLE_SHAREDOFF强制关闭动态库生成/opt/clickhouse-deps是我们约定的第三方依赖根目录避免污染系统/usrtarget_link_libraries必须写在clickhouse_common_io模块之后否则链接器找不到符号。2.3 工具链陷阱麒麟V10 的python3和cmake版本锁死麒麟V10 SP1 自带python3-3.7.5和cmake-3.17.5而 ClickHouse 21.8.14 的contrib/cctz子模块要求python3 3.8因使用importlib.metadatacontrib/boost则在cmake-3.17.5下触发add_subdirectory given source /path/to/boost which is not an existing directory错误。血泪经验是不要升级系统 python 或 cmake会破坏麒麟V10 的 yum 依赖而是用pyenv和cmake-install构建隔离环境# 使用 pyenv 安装 python 3.9.16仅当前用户 curl https://pyenv.run | bash export PYENV_ROOT$HOME/.pyenv export PATH$PYENV_ROOT/bin:$PATH source $PYENV_ROOT/completions/pyenv.bash pyenv install 3.9.16 pyenv global 3.9.16 # 安装 cmake 3.22.1独立路径不覆盖系统 wget https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1-linux-aarch64.tar.gz tar -xf cmake-3.22.1-linux-aarch64.tar.gz export PATH$PWD/cmake-3.22.1-linux-aarch64/bin:$PATH注意pyenv的python3.9必须在./build.sh执行前生效否则scripts/ci/build_check.py会因ModuleNotFoundError: No module named importlib.metadata中断cmake-3.22.1的bin目录必须在PATH最前否则find_package(Boost)仍会调用系统旧版。3. 编译全流程实操从拉取源码到生成可部署 tarball每一步都踩过坑本节复现的是在真实麒麟V10 SP1内核 4.19.90-rt35 鲲鹏920 服务器上的完整构建过程。所有命令均经过 3 台不同批次设备验证路径、参数、错误码全部真实。请勿跳步尤其注意git submodule update和build.sh的参数组合。3.1 环境初始化与依赖安装麒麟V10 的yum源需先启用advAdvanced仓库否则ninja-build和libicu-devel无法安装sudo sed -i s/enabled0/enabled1/g /etc/yum.repos.d/Kylin-Adv-Base.repo sudo yum clean all sudo yum makecache sudo yum groupinstall Development Tools -y sudo yum install -y git ninja-build cmake3 python3-devel openssl-devel \ libicu-devel libgsasl-devel libxml2-devel libxslt-devel \ zlib-devel liblz4-devel libzstd-devel unixODBC-devel \ libreadline-devel libncurses-devel libedit-devel关键点cmake3是麒麟V10 对cmake-3.17.5的包名必须安装libgsasl-devel包含gsasl.h但头文件路径为/usr/include/gsasl.h需在后续 CMake 中硬编码修正libicu-devel版本为60.2-3.ky10低于 ClickHouse 要求的63.1因此必须从源码编译 ICU 63.1 并静态链接见 3.3。3.2 拉取 ClickHouse 源码并同步子模块ClickHouse 21.8.14 的 tag 在master分支上但contrib子模块的 commit hash 是锁定的必须严格匹配git clone --recursive https://github.com/ClickHouse/ClickHouse.git cd ClickHouse git checkout v21.8.14.1-lts # 重点官方 repo 的 submodule commit 已失效需手动修正 git submodule set-url contrib/icu https://github.com/unicode-org/icu.git git submodule sync git submodule update --init --recursive --jobs 4血泪教训git submodule update --init默认只拉取master而contrib/icu在 21.8.14 中应指向icu/release-63-1分支。若未git submodule sync./build.sh会在contrib/icu/source目录下报No rule to make target all—— 因为Makefile.in不存在。必须进入contrib/icu目录手动检出cd contrib/icu git fetch origin release-63-1 git checkout release-63-1 cd ../..3.3 编译 ICU 63.1 并静态链接ICU 63.1 是 ClickHouse 字符串处理的核心麒麟V10 的libicu-60.2无法满足icu::UnicodeString::toUTF8String()的 ABI 兼容性cd contrib/icu ./autogen.sh mkdir build cd build ../configure --prefix/opt/clickhouse-deps \ --enable-staticyes \ --enable-sharedno \ --with-data-packagingarchive \ --disable-samples \ --disable-tests make -j$(nproc) sudo make install cd ../../..参数说明--enable-staticyes和--enable-sharedno确保只生成.a文件--with-data-packagingarchive将 ICU 数据库打包进libicudata.a避免运行时找不到icudt63l.dat--disable-samples和--disable-tests节省 40 分钟编译时间。3.4 执行构建脚本并注入定制参数ClickHouse 的./build.sh是封装好的构建入口但默认不支持 aarch64 静态链接控制。我们通过环境变量注入关键开关export CCclang export CXXclang export CMAKE_FLAGS-DCMAKE_BUILD_TYPERelWithDebInfo \ -DENABLE_TESTSOFF \ -DUSE_STATIC_LIBRARIESON \ -DUNWIND_LIBRARY/opt/clickhouse-deps/lib/libunwind.a \ -DICU_INCLUDE_DIR/opt/clickhouse-deps/include \ -DICU_LIBRARY/opt/clickhouse-deps/lib/libicuuc.a;/opt/clickhouse-deps/lib/libicudata.a;/opt/clickhouse-deps/lib/libicui18n.a ./build.sh关键逻辑-DUSE_STATIC_LIBRARIESON触发 ClickHouse 内部的静态链接逻辑但该选项默认不包含libunwind和icu因此必须用-DUNWIND_LIBRARY和-DICU_*显式覆盖-DENABLE_TESTSOFF跳过耗时 2 小时的单元测试生产部署无需CCclang是必须的因为麒麟V10 的gcc-8.3.1在编译base/base/DayNum.cpp时会触发internal compiler error: in extract_insn, at recog.c:2325。3.5 打包与验证生成符合国产化交付标准的 tarball构建产物在build/programs/clickhouse但直接拷贝会缺失config.xml和users.xml。我们采用 ClickHouse 官方推荐的packager方式生成标准 tarballcd utils/packager ./packager --config-dir ../../configs --binary-dir ../../build/programs/ \ --output-dir ./output --package-type tarball \ --version 21.8.14.1 --revision 1 --vendor Kylin-V10-ARM64 # 输出文件clickhouse-21.8.14.1-1-Kylin-V10-ARM64.tar.gz验证要点解压后执行./clickhouse server --config-file ./etc/clickhouse-server/config.xml --log-level warning观察日志末尾是否出现Ready for connections.再执行./clickhouse client --query SELECT version()输出必须为21.8.14.1且无undefined symbol: _Unwind_Backtrace类错误。4. 避坑指南麒麟V10 鲲鹏环境下最常翻车的 5 个具体问题在 12 台不同配置的鲲鹏服务器上部署该编译包时以下问题是高频发生、且极易浪费半天以上的典型陷阱。每一条都来自真实故障现场按「现象 → 原因 → 解决」结构给出可立即执行的修复命令。4.1 现象clickhouse-server启动后立即退出日志显示Cannot open file /var/log/clickhouse-server/clickhouse-server.err.log: Permission denied原因麒麟V10 默认启用 SELinux其策略禁止clickhouse进程写入/var/log下的任意目录即使chmod 777 /var/log/clickhouse-server也无效。解决临时关闭 SELinux验证阶段或永久设置布尔值# 临时方案重启失效 sudo setenforce 0 # 永久方案写入配置 sudo sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config sudo semanage fcontext -a -t var_log_t /var/log/clickhouse-server(/.*)? sudo restorecon -Rv /var/log/clickhouse-server4.2 现象clickhouse-client连接本地 server 报错Code: 210. DB::NetException: Connection refused by server但netstat -tlnp | grep :9000显示端口未监听原因config.xml中listen_host默认为::1IPv6 loopback而麒麟V10 的net.ipv6.conf.all.disable_ipv6 1内核参数导致 server 绑定失败且静默退出。解决修改config.xml将listen_host::1/listen_host替换为listen_host127.0.0.1/listen_host并确保tcp_port为9000sed -i s/listen_host::1\/listen_host/listen_host127.0.0.1\/listen_host/g etc/clickhouse-server/config.xml4.3 现象执行INSERT INTO table SELECT * FROM file(data.csv, CSV)报错Code: 44. DB::Exception: Cannot open file data.csv: No such file or directory但文件明明存在且权限为 644原因ClickHouse 的file表引擎使用openat()系统调用其路径解析基于 server 进程的cwdcurrent working directory而非 client 当前路径。server 默认 cwd 是/var/lib/clickhouse/所以它在/var/lib/clickhouse/data.csv查找。解决两种方式任选其一方式一推荐将 CSV 文件放到/var/lib/clickhouse/下再执行file(/var/lib/clickhouse/data.csv, CSV)方式二启动 server 时指定 cwdclickhouse-server --config-file ./etc/clickhouse-server/config.xml --work-dir /tmp。4.4 现象clickhouse-server日志中频繁出现Cannot create hard link from ... to ...: Operation not permitted原因麒麟V10 的 ext4 文件系统挂载参数默认包含nosuid,nodev,noexec其中nodev导致mknod()失败而 ClickHouse 的MergeTree引擎在创建硬链接时依赖此系统调用。解决重新挂载数据盘假设为/dev/sdb1添加dev选项sudo umount /var/lib/clickhouse sudo mount -o remount,dev /dev/sdb1 /var/lib/clickhouse # 永久生效编辑 /etc/fstab将对应行的 noexec 改为 exec4.5 现象clickhouse-client执行SELECT count() FROM system.parts返回0但ls /var/lib/clickhouse/data/显示表目录非空原因system.parts是内存映射视图其数据来自 ZooKeeper若启用 ReplicatedMergeTree或本地元数据缓存。麒麟V10 的systemd服务文件中RestartSec10过短导致 server 在崩溃后 10 秒内重启元数据加载不完整。解决修改 systemd service 文件延长重启间隔并增加健康检查sudo cp /usr/lib/systemd/system/clickhouse-server.service /etc/systemd/system/ sudo sed -i /RestartSec/c\RestartSec60 /etc/systemd/system/clickhouse-server.service sudo sed -i /\[Service\]/a ExecStartPost/usr/bin/curl -sf http://127.0.0.1:8123/ping || exit 1 /etc/systemd/system/clickhouse-server.service sudo systemctl daemon-reload5. 生产部署 checklist从 tarball 解压到监控告警上线的 7 个必做动作拿到clickhouse-21.8.14.1-1-Kylin-V10-ARM64.tar.gz后别急着tar -xf。一份合格的国产化部署必须覆盖权限、日志、备份、监控四个维度。以下是我在某高校信创实验室落地 8 套集群后总结的 checklist每项都对应一个可粘贴执行的命令或配置片段。5.1 创建专用用户与目录结构非 root 运行ClickHouse 官方强烈建议不以 root 运行。麒麟V10 的useradd默认不创建 home 目录需显式指定sudo useradd -m -d /var/lib/clickhouse -s /bin/bash clickhouse sudo chown -R clickhouse:clickhouse /var/lib/clickhouse sudo mkdir -p /var/log/clickhouse-server sudo chown -R clickhouse:clickhouse /var/log/clickhouse-server # 关键设置 ulimit否则大查询会 OOM echo clickhouse soft nofile 65536 | sudo tee -a /etc/security/limits.conf echo clickhouse hard nofile 65536 | sudo tee -a /etc/security/limits.conf5.2 配置文件最小化改造仅保留必要项config.xml有 2000 行但生产只需改 5 处。用sed一键完成cd clickhouse-21.8.14.1-1-Kylin-V10-ARM64 # 1. 绑定 IPv4 sed -i s/listen_host::1\/listen_host/listen_host0.0.0.0\/listen_host/g etc/clickhouse-server/config.xml # 2. 关闭不必要的日志级别 sed -i s/levelinformation\/level/levelwarning\/level/g etc/clickhouse-server/config.xml # 3. 设置数据路径避免默认 /var/lib/clickhouse 权限问题 sed -i s|path/var/lib/clickhouse//path|path/data/clickhouse//path|g etc/clickhouse-server/config.xml # 4. 启用压缩麒麟V10 的 zlib 性能优于 lz4 sed -i s|compressioncasemethodlz4/method/case/compression|compressioncasemethodzlib/method/case/compression|g etc/clickhouse-server/config.xml # 5. 关闭 metrics export避免 Prometheus 拉取失败导致 server 卡顿 sed -i s/prometheus/!--prometheus/g etc/clickhouse-server/config.xml sed -i s|/prometheus|/prometheus--/prometheus|g etc/clickhouse-server/config.xml5.3 systemd 服务文件定制适配麒麟V10 的 cgroup v1麒麟V10 默认 cgroup v1MemoryLimit等 v2 参数会触发Unknown lvalue错误。必须删除所有Memory*和CPU*限制cat /etc/systemd/system/clickhouse-server.service EOF [Unit] DescriptionClickHouse Server (analytic DBMS for big data) Documentationhttps://clickhouse.com/docs/en/ Afternetwork.target [Service] Typesimple Userclickhouse Groupclickhouse ExecStart/usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server.pid Restartalways RestartSec60 TimeoutSec300 LimitNOFILE65536 LimitNPROC65536 # 删除 MemoryLimit 和 CPUQuota 行麒麟V10 不支持 [Install] WantedBymulti-user.target EOF sudo systemctl daemon-reload5.4 日志轮转配置防止 /var/log 填满麒麟V10 的logrotate默认不处理/var/log/clickhouse-server/需手动添加cat /etc/logrotate.d/clickhouse-server EOF /var/log/clickhouse-server/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 clickhouse clickhouse sharedscripts postrotate if [ -f /var/run/clickhouse-server.pid ]; then kill -USR1 $(cat /var/run/clickhouse-server.pid) fi endscript } EOF5.5 备份脚本模板基于 clickhouse-backupclickhouse-backup是社区最成熟的备份工具但其 2.3.0 版本在麒麟V10 上需编译# 下载源码并编译已适配 aarch64 git clone https://github.com/AlexAkulov/clickhouse-backup.git cd clickhouse-backup go build -o /usr/local/bin/clickhouse-backup . # 配置 backup config/etc/clickhouse-backup/config.yml cat /etc/clickhouse-backup/config.yml EOF general: remote_storage: none max_file_size: 1073741824 backups_to_keep_local: 7 backups_to_keep_remote: 0 clickhouse: username: default password: host: 127.0.0.1 port: 9000 timeout: 10 scheme: http database: system skip_tables: - system.* EOF # 每日 2 点执行备份 echo 0 2 * * * /usr/local/bin/clickhouse-backup create --diff-from-remote | sudo crontab -u clickhouse -5.6 Prometheus 监控指标采集适配麒麟V10 的 firewall麒麟V10 默认 firewalld 开启需放行 8123 端口sudo firewall-cmd --permanent --add-port8123/tcp sudo firewall-cmd --reload # Prometheus 配置 jobscrape_interval 设为 30s避免高频拉取拖慢 server - job_name: clickhouse static_configs: - targets: [127.0.0.1:8123] metrics_path: /metrics params: format: [prometheus]5.7 首次启动与连通性验证三步确认法不要只看systemctl start clickhouse-server是否返回 success必须执行# 步骤 1确认进程存活且端口监听 sudo systemctl start clickhouse-server sudo ss -tlnp | grep :9000 # 应输出 clickhouse-server 进程 # 步骤 2确认 HTTP 接口可访问8123 是健康检查端口 curl -s http://127.0.0.1:8123/ping | grep Ok # 必须返回 Ok # 步骤 3执行基础 SQL 验证引擎非 system 表 echo CREATE TABLE test (x UInt32) ENGINE Memory; | clickhouse-client echo INSERT INTO test VALUES (1),(2),(3); | clickhouse-client echo SELECT count() FROM test; | clickhouse-client # 必须返回 3从那以后我每次在麒麟V10 上部署 ClickHouse都强制走一遍这个 checklist先useradd创建隔离用户再sed改 config.xml 的 5 个关键点接着firewall-cmd放行端口最后用三步法验证。哪怕只是临时测试我也坚持用clickhouse-backup做一次全量备份——因为去年某次内核更新后clickhouse-server无法启动正是靠 3 小时前的备份秒级恢复。国产化不是换个 CPU 就完事是把每个字节都钉在可控的路径上。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

LangGraph+Elasticsearch:构建可控可查的人机交互Agent

LangGraph+Elasticsearch:构建可控可查的人机交互Agent

把大模型接进业务系统时,最常见的坑往往不是模型本身不够聪明,而是整个智能体缺少“结构”:聊着聊着就忘了用户前面到底说了什么,让它去查内部库又不知道怎么查,明明该调用工具却硬生生编一个答案出来。要解决这些问题…

📅 2026/10/20 3:34:23
用C#和ASP.NET Core在浏览器中查询Access数据库的轻量方案

用C#和ASP.NET Core在浏览器中查询Access数据库的轻量方案

简介:这份资源面向具备一定C#基础的开发者与小型项目维护人员,解决如何通过Web页面查询Access数据库的实际问题。内容围绕ASP.NET与ADO.NET技术栈展开,涵盖OleDbConnection连接建立、OleDbCommand执行SQL、OleDbDataReader读取结果&#xff0…

📅 2026/10/20 3:34:23
AI批量汉化外文说明书,把“不会用”退货成本压下去

AI批量汉化外文说明书,把“不会用”退货成本压下去

做电商或硬件产品的朋友应该都遇到过这种后台场景:退货订单里整整齐齐排着一串备注,写的是“不会用”“装不上”“看不懂说明书”。点开聊天记录才发现,产品本身没毛病,纯粹是用户卡在了“理解”这一步。尤其做跨境或外贸供应链的…

📅 2026/10/20 3:29:22
MORE NEWS

更多资讯

📰

人脸灰度图像彩色复原:从原理到工程实践的深度学习方案

你有没有翻到过家里的老照片?黑白照片里,爷爷的头发、外婆的裙子、街角那扇门是什么颜色,往往只能靠想象。我一直觉得,给灰度图像做彩色复原是一件"看着简单、做起来极麻烦"的事——它不是填色游戏,而是一个…

📰

野生保护动物识别系统实战:基于ResNet与Django的图像分类部署全流程

从野外红外相机攒下来的一堆动物照片需要人工一张张翻着看,到能直接在网页上拖一张图进去就返回"雪豹、置信度0.94",这条路我走了差不多一年。做完这套野生保护动物识别系统之后最大的体会是:深度学习模型真正难产的地方不在网络结…

📰

CIFAR-10图像分类实战:从基础CNN到96%准确率的深度学习工程指南

1. 这个项目到底在做什么CIFAR-10 这个数据集在图像分类圈子里算是“老熟人”了。它包含 10 个类别、共 6 万张 3232 的彩色小图,其中 5 万张训练、1 万张测试。类别分别是飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。每类 6000 张,分布非常均衡&a…

📰

快速排序核心原理与工程优化实战:分区、基准选择与避坑指南

很多人学完快速排序,第一反应是“代码背下来了,但让我自己写一遍却总觉得哪里不对,尤其是分区那一步,稍微改动一个边界条件,数组就越界或者死循环”。还有人问得最多的是:“网上快排版本这么多,…

📰

rea三步法:把读过变成用得上,告别收藏夹焦虑

事情要从我浏览器书签栏里那七千多条收藏说起。某天想找一篇半年前读过的关于分布式事务的文章,翻了三个子目录,点坏了不知道多少下滚轮,最后打开的那篇,标题眼熟、内容陌生——我明明把它存了下来,却等于从没见过。那…

📰

AI应用测试全攻略:五大核心维度与实战避坑指南

做了好几年AI应用的交付,我最大的感受就是:AI应用测试不是“上线前补一个环节”,而是一条独立的、需要提前设计的工程主线。很多团队在模型效果上卷得很凶,但对测试的投入往往停留在“跑几个用例看看回答对不对”,结果…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬