Starrocks BE 在Mac编译以及遇到的问题解决

告别虚拟机:在Mac/Windows本地用Docker快速拉起StarRocks测试环境 本文详细介绍了如何在Mac/Windows本地使用Docker快速部署StarRocks测试环境,告别传统虚拟机的繁琐流程。通过Docker容器化技术,开发者可以轻松实现单机部署,享受环境隔离、快速启动和资源高效等优势,特别适合SQL功能验证、ETL测试和学习演示等场景。 阅读详情

背景

本文基于Starrocks 4.x
在机器 Apple M5 MacOS Tahoe 26 系统上进行编译,

对于Starrocks来说是不支持直接在 mac上进行编译的,如果你直接进行build的话,你就会遇到意想不到的问题。
所以我们转换一种思路,那就是本地下载starrocks源码,之后挂载源码到docker中,在容器中,用linux进行编译。也就是Compile StarRocks with Docker 这里所说的。
这里说到了两个linux系统,一种是Ubuntu 一种 是CentOS,分别用这两个系统来操作的话,也是会有区别的,这里我们来实操一下

基于centos

按照官网所说的,我们我们 checkout branch-4.1 分支,以及用挂载的方式去运行一个容器:

docker run -it -v /Users/ljh/github/starrocks/.m2:/root/.m2 \
    -v /Users/ljh/github/starrocks:/root/starrocks \
    --name branch-4.1 -d starrocks/dev-env-centos7:4.1-latest

之后用docker exec -it进入容器,运行如下命令

cd /root/starrocks
./build.sh 

运行一段时间后你会发现,你就会发现遇到类似这样的错误(由于branch和镜像的变动,问题细节可能不一样):

 root/starrocks/be/src/util/thrift_util.cpp: In function ‘void starrocks::init_thrift_logging()’:
/root/starrocks/be/src/util/thrift_util.cpp:105:30: error: ‘instance’ is not a member of ‘apache::thrift::TOutput’
  105 |     apache::thrift::TOutput::instance().setOutputFunction(thrift_output_function);
      |                              ^~~~~~~~
/root/starrocks/be/src/util/thrift_util.cpp: At global scope:
/root/starrocks/be/src/util/thrift_util.cpp:100:13: warning: ‘void starrocks::thrift_output_function(const char*)’ defined but not used [-Wunused-function]
  100 | static void thrift_output_function(const char* output) {
      |             ^~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/util/CMakeFiles/Util.dir/thrift_util.cpp.o] Error 1
make[1]: *** [src/util/CMakeFiles/Util.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

这种问题的根因就是项目中的thrift 版本和 docker容器中/var/local/thirdparty/installed/thrift的版本不一样,这就导致了版本不一致导致的类不存在的问题。
这个时候,如果你能够把这些版本弄一致了(通过cherry-pick或者revert),你可以继续往下编译。
编译一段时间你就会发现,另一个问题:

g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.

这种表示,编译的时候的内存不足,这个时候就要调整容器的内存,我这里调整到了16GB。继续编译,编译到99%的时候,就差临门一脚了,你发现又一个问题出现了:

[ 99%] Linking CXX executable /root/starrocks/be/output/lib/starrocks_be
collect2: fatal error: ld terminated with signal 9 [Killed]
compilation terminated.

这个问题,你再编译多少次,都会绕不过,所以我们这里选择参考使用lld,lld相比ld有速度和节约内存的优势。所以我们这里去下载lld,

[root@8f94d38faa24 installed]# yum install epel-release
[root@8f94d38faa24 installed]# yum install lld
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: ftp.iij.ad.jp
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No package lld available.
Error: Nothing to do

搜索以后发现centos已经已经全面停止维护(EOL),官方技术支持已于 2024年6月30日 结束。所以基于这点考虑,我们重新用Ubuntu 继续进行编译。

ubuntu编译

由于前面branch-4.1的分支和镜像的第三方包中thrift版本的不一致问题,这次我们checkout branch-4.0:

docker run -it -v /Users/ljh/github/starrocks/.m2:/root/.m2 \
    -v /Users/ljh/github/starrocks:/root/starrocks \
    --name branch-4.0 -d starrocks/dev-env-ubuntu:4.0-latest


之后用docker exec -it进入容器,这里的thrift的版本就是0.20.0(和项目的thrift的版本一致)
而且为了避免centos编译过程中的内存不足问题,所以这里我们采用了lld链接器.而且我们用了clang来做编译:

apt update
apt install clang

最终运行如下命令:

cd /root/starrocks
CC=clang CXX=clang++ STARROCKS_LINKER=lld ./build.sh --clean --be

这里运行一段时间后,又会出现如下问题:

/root/starrocks/be/src/exprs/arithmetic_expr.cpp:47:35: error: unused function 'eliminate_trivial_cast_for_decimal_mul' [-Werror,-Wunused-function]

之后我们使用export STARROCKS_CXX_COMMON_FLAGS="-Wno-unused-function"这种方式去规避,也还是不行。
这个问题出现的原因就是: Clang 把“未使用的 static 函数”当成错误(-Werror,-Wunused-function)导致的,根因是 条件编译不一致。
eliminate_trivial_cast_for_decimal_mul 只在 evaluate_decimal_fast_mul 里被调用,而后者又只在下面这段条件里被用到:

arithmetic_expr.cpp
Lines 106-113
#if defined(__x86_64__) && defined(__GNUC__)
        if constexpr (is_mul_op<OP> && lt_is_decimal<Type>) {
            ASSIGN_OR_RETURN(auto opt_result, evaluate_decimal_fast_mul(context, ptr));
            if (opt_result != nullptr) {
                return opt_result;
            }
        }
#endif

但 函数定义本身没有包在同样的 #if 里:

arithmetic_expr.cpp
Lines 47-64

static std::optional<LogicalType> eliminate_trivial_cast_for_decimal_mul(const Expr* e) {
    ...
}

因为我这边uname -m出来的是aarch64,因为这里的条件编译是x86_64, 所以会导致这个问题。
注意:aarch64,x86_64是两种完全不同底层的CPU架构。
最终我们修改源码去规避这个问题,修改如下:

iff --git a/be/src/exprs/arithmetic_expr.cpp b/be/src/exprs/arithmetic_expr.cpp
index 9de00c34e1..7caf5303d2 100644
--- a/be/src/exprs/arithmetic_expr.cpp
+++ b/be/src/exprs/arithmetic_expr.cpp
@@ -44,6 +44,7 @@ namespace starrocks {
                                                       \
     virtual Expr* clone(ObjectPool* pool) const override { return pool->add(new CLASS_NAME(*this)); }

+#if defined(__x86_64__) && defined(__GNUC__)
 static std::optional<LogicalType> eliminate_trivial_cast_for_decimal_mul(const Expr* e) {
     DIAGNOSTIC_PUSH
 #if defined(__GNUC__) && !defined(__clang__)
@@ -62,12 +63,14 @@ static std::optional<LogicalType> eliminate_trivial_cast_for_decimal_mul(const E
     }
     DIAGNOSTIC_POP
 }
+#endif

 template <LogicalType Type, typename OP>
 class VectorizedArithmeticExpr final : public Expr {
 public:
     DEFINE_CLASS_CONSTRUCTOR(VectorizedArithmeticExpr);

+#if defined(__x86_64__) && defined(__GNUC__)
     StatusOr<ColumnPtr> evaluate_decimal_fast_mul(ExprContext* context, Chunk* chunk) {
         auto lhs_lt_opt = eliminate_trivial_cast_for_decimal_mul(_children[0]);
         auto rhs_lt_opt = eliminate_trivial_cast_for_decimal_mul(_children[1]);
@@ -101,6 +104,7 @@ public:
         }
         return nullptr;
     }
+#endif

     StatusOr<ColumnPtr> evaluate_checked(ExprContext* context, Chunk* ptr) override {
 #if defined(__x86_64__) && defined(__GNUC__)
diff --git a/be/src/storage/rowset/binary_plain_page.cpp b/be/src/storage/rowset/binary_plain_page.cpp
index d54669167e..615a4e3b98 100644
--- a/be/src/storage/rowset/binary_plain_page.cpp
+++ b/be/src/storage/rowset/binary_plain_page.cpp
@@ -157,9 +157,9 @@ template <LogicalType Type>
 void BinaryPlainPageDecoder<Type>::batch_string_at_index(Slice* dst, const int32_t* idx, size_t size) const {
     if (_parsed_datas.has_value()) {
         const std::vector<Slice>& parsed_data = *_parsed_datas;
+#ifdef __SSE4_2__
         const Slice* parsed_data_ptr = parsed_data.data();
         static_assert(sizeof(Slice) == sizeof(__int128));
-#ifdef __SSE4_2__
 #pragma GCC unroll 2
         for (int i = 0; i < size; ++i) {
             DCHECK_LT(idx[i], parsed_data.size());

最终保险起见,我们还是使用默认的gcc编译器:

STARROCKS_LINKER=lld ./build.sh 

最终成功了。

总结

所以这一路下来还是挺波折的。因为BE的编译本来就消耗时间,而且中间还遇到很多的问题,前前后后花了2天时间才真正的编译成功。

Superset Docker容器安装MySQL驱动实战指南 Apache Superset作为主流开源BI工具,本身不内置数据库驱动,需手动集成MySQL连接支持。其底层依赖SQLAlchemy统一访问层,而MySQL驱动(mysqlclient/PyMySQL)的正确安装涉及Python版本兼容性、C编译环境、Docker镜像构建时序与包加载机制等多层技术原理。技术价值在于实现稳定、可复现、符合不可变基础设施原则的数据源接入能力;典型应用场景包括Docker/K8s环境下的BI平台部署、CI/CD自动化镜像构建及多数据源统一管理。本文聚焦Superset容器中My 阅读详情

相关推荐

Volga:基于Ray的统一实时特征计算引擎

实时特征计算是现代机器学习系统的核心基础设施,其本质是在事件时间语义下对多源数据进行低延迟、可复现的状态化聚合。传统方案因Spark批处理与Flink流处理的计算范式割裂,导致离线/在线特征语义不一致、开发运维成本高企。Volga通过Ray Actor模型构建统一计算层,以Python原生API实现一份逻辑覆盖批处理、流式计算和按需推理三种模式,天然支持状态管理、弹性扩缩与云原生部署。它不替代Flink或Spark,而是聚焦特征工程本质——让数据科学家专注‘算什么’,而非‘在哪算’。本文详解其设计原理、冷热

weixin_34252090的博客 428

如何在本地打包 StarRocks 发行版

FE 是 Java 开发的,本地构建还比较容易,而 BE 是基于 cpp 开发的,构建环境比较复杂,在统一的 docker 镜像里构建会省去不少环境搭建流程。而提交的 PR 是有发布流程的,通常需要间隔一段时间才会发布版本,但是我们线上又等着用这些修复,没办法就只有在本地打包了。也是通过同样的镜像打包出来的,所以运行起来不会出现兼容性问题(同样的 jdk 版本),而且也能保证原有的镜像没有修改。然后需要根据我使用的 tag 拉取一个我们自己的开发分支,在这个分支上将修复的代码手动合并进来。

crossoverJie专栏 801

ROS2_control 对机器人控制(不完整,有时间再更新)

会提示安装好其他相应的东西# 本来应该还要有ros-humble-gz-ros2-control,但是直接安装提示定位不到ros2 control --help # 输出 Commands:list_controller_types 输出可用的控制器类型及其基类list_controllers 输出已加载控制器的列表、类型和状态list_hardware_components 输出可用硬件组件列表list_hardware_interfaces 输出可用命令和状态接口列表。

m0_52113469的博客 2468

StarRocks开发环境:本地开发与调试指南

StarRocks作为一款高性能的分布式分析型数据库,其开发环境搭建和调试是每个开发者必须掌握的核心技能。本文将详细介绍如何在本地搭建完整的StarRocks开发环境,包括前端(FE)和后端(BE)的编译、调试技巧,以及常见问题的解决方案。 ## 环境准备 ### 系统要求 | 组件 | 最低要求 | 推荐配置 | |------|----------|----------| | 内存 | ...

gitblog_00421的博客 472

Protege新手必看:从安装到建模的完整指南(附推理功能详解)

本文为Protege新手提供从安装、配置到核心建模的完整实战指南。详细讲解了Java环境准备、本体项目创建、类与属性定义、个体填充等关键步骤,并重点解析了推理功能的配置与使用,帮助读者快速构建可逻辑推理的知识图谱,避开常见陷阱。

numpy6sculptor的博客 797

双层优化入门(1)—基本原理与求解方法(附matlab代码)

双层优化问题(Bilevel Programming Problems),也被称为双层规划,最早由Stackelberg与1934年在经济学相关研究中提出,因此也被称为Stackelberg问题。双层规划问题一般具有层次性、独立性、冲突性、优先性和自主性等特点。 本文介绍了双层优化的原理与求解方法,并提供了相应的matlab代码供参考学习。

配电网和matlab的博客 5万+

Quickstart StarRocks on Mac laptop

Contents Docker pull Centos Prepare StarRocks tar bales Initiate a docker container Fix Java JDK Deploy StarRocks-CE-2.0.1 TEST Docker pull Centos Install Docker on mac, refer to https://www.docker.com/get-started Pull Centos images as below: (Zs

u013836748的博客 3699

避坑指南:RK3588上编译EtherCAT 1.6时遇到的权限问题和模块安装错误

本文详细解析了在RK3588平台上编译EtherCAT 1.6时常见的权限问题和模块安装错误,提供了两种实战解决方案和嵌入式开发的通用权限管理策略。通过优化内核配置和编译参数,显著提升实时性能,帮助开发者高效完成EtherCAT主站部署。

weixin_33724046的博客 453

StarRocks docker 环境编译,测试最新留存retention和漏斗window_funnel函数

近期在做留存,漏斗等用户行为分析调研时,留存retention函数随着官网2.2 rc版本发布已经可以下载,然后漏斗函数window_funnel已经开发完成,合并到main版本,预计2.3版本会发布,现阶段通过编译,提前测试调研漏斗函数,一下为操作过程: 1.部署docker环境 mac环境下载docker.dmg,安装好,然后调整好docker资源: 可以编译好后,把docker资源再调整回来,之间就因为docker资源不够,编译不过,各种被kill,报错: be部分编译到一半,

gongxiucheng的专栏 2703

AB测试面试题

AB实验流程以一个实际的业务场景去描述AB实验流程,限定场景来减少和面试官的信息差,确保沟通高效可以以自己简历上某个相关项目的场景来举例,或者以面试的岗位对应的业务来举例子。不能光自己说,要让面试官参与进来,引导面试官往自己熟悉的内容提问,从被动转为主动。回答要有逻辑性,简洁、准确的表达。还是延用之前提到的项目案例,假设之前抖音拍摄页面中右下角相册功能的icon 由相册图标改为 用户相册的最新一张照片这个案例写在了我的简历中。

qq_45727498的博客 857

RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10

Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本文将详细介绍如何使用Buildroot编译并配置Qt5WebEngine-5.15.10。Qt5WebEngine是Qt框架中的一个模块,它提供了一个功能强大的Web浏览器引擎,允许开发者在Qt应用程序中嵌入和显示现代网页内容。

flypig has a dream! 1158

StarRocks array_agg 聚合函数完全指南:多行聚合为数组与 ORDER BY 排序实战

array_agg 是 StarRocks 中用于将一列多行的值(含 `NULL`)聚合为单个 ARRAY 的聚合函数,广泛应用于行转列、构建有序标签序列、物化分组明细等场景。本文以官方文档为主线,结合 StarRocks 开源仓库中的 BE 端源码实现([array_agg.h](https://link.gitcode.com/i/3b4cfc383adedbc3dc1fcca9b5c5810

gitblog_00135的博客 1063

/home 挂载点无法访问 怎么解决 指令可以进入Home目录 du: 无法访问“*“: 输入/输出错误

本文介绍了Linux系统中XFS文件系统损坏的故障排查与修复方法。当/home挂载点出现I/O错误时,通过dmesg发现XFS日志错误和磁盘I/O报错,判断可能是文件系统逻辑损坏或硬件故障。解决方案包括:1)尝试卸载分区;2)使用xfs_repair工具进行预检查和正式修复;3)在极端情况下使用-L参数强制清空日志;4)若存在硬件故障,建议优先进行数据抢救并更换硬盘。最后强调重要数据应先备份,再考虑系统重建。

专注于计算机研发知识和资讯分享 155

Doris vs StarRocks:AI数仓选型的关键不在参数而在数据呼吸节奏

AI数仓的核心挑战在于混合负载并发下的实时性、语义一致性与运维简洁性。传统OLAP引擎如StarRocks虽具备高性能SQL执行能力,但其存储-计算分离架构在向量检索、Schema动态演进和实时写入场景中易产生语义断层;而Apache Doris通过Segment V2存储引擎原生支持向量索引、Stream Load实现无感Schema变更、CBO深度集成向量谓词下推,使数据在写入、存储、查询阶段保持统一语义与节奏。这种‘数据呼吸节奏’对AI特征服务、实时推荐、向量相似搜索等典型场景尤为关键,显著降低ETL

weixin_34006468的博客 330

基于OpenClaw的AI数字员工协同团队架构设计

随着大型语言模型从被动的文本生成器向具备自主规划与执行能力的智能代理演进,企业级人工智能的应用范式正在发生根本性转变。在这一演进过程中,OpenClaw(前身为Clawdbot及Moltbot)作为一种开源的、本地优先的个人AI智能体网关基础设施,凭借其对持续内存、多通道接入以及沙盒化工具执行的原生支持,迅速成为构建“始终在线”数字劳动力的核心框架 1。然而,将单体个人助理扩展为能够处理复杂业务逻辑、支持跨组织协同并严格保障数据隔离的多智能体(Multi-Agent)团队,绝非简单的API拼接。系统架构必须

形上得其象,形下合于数;阴阳自济,玄理自明。 1048

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

12GB显卡上的125B参数:Strata本地大模型推理引擎凭什么跑出79 tokens/s

Strata 是一个开源的本地大模型推理引擎,它做的事听起来有点反直觉:让 Qwen3.8-Flash-Next 这个 **125B 参数**的 MoE 模型,完整跑在你自己的消费级电脑上——一张 **12 GB** 的显卡、一台普通 PC,短对话写下回答的速度能到 **53–94 tokens/s**(视量化档位),并对外提供一个 OpenAI / Anthropic 兼容的本地 API(`ht

gitblog_00962的博客 406

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

palera1n实战教程:用checkm8漏洞越狱A8到A11设备的iOS 15-18系统

palera1n是一款基于checkm8硬件漏洞的命令行iOS越狱工具,覆盖A8至A11芯片的iPhone、iPad、iPod Touch、Apple TV,以及搭载T2芯片的Mac,支持iOS/iPadOS/tvOS 15.0到18.x、bridgeOS 5.0及以上版本。它自动引导设备从恢复模式进入DFU(Deep Flash Update,比恢复模式更底层的刷写状态),再由内置的checkr

gitblog_00489的博客 790

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

img2img-turbo:单步完成草图转图、昼夜互换的图像翻译

img2img-turbo 是一个基于 Stable Diffusion Turbo 的单步(one-step)图像到图像转换模型,输入一张草图、线稿或街景照片,一次前向推理就能得到对应风格的图像。 ## 它是什么 它把 SD-Turbo 这类单步扩散模型改造成条件转换模型,分两套:pix2pix-turbo 处理有配对数据的任务(线稿转照片、草图转图),CycleGAN-Turbo 处理无配

gitblog_00902的博客 242

libmodbus 从站号读取 API 详解:modbus_get_slave 的用法、底层实现与实战场景

`modbus_get_slave()` 是 libmodbus 提供的用于读取上下文(`modbus_t`)中当前从站号(slave number)的轻量级 API。在需要动态切换通信目标(如 RTU 总线上的多从站轮询)、在服务器模式下校验报文来源,或调试“请求发给了哪个设备”等场景中,它是与 `modbus_set_slave()` 配对的常用辅助函数。读完本文,你将掌握该函数的签名、返回值

gitblog_00075的博客 257

Rust+Tauri轻量数据库工具dbx:20MB如何支撑80+数据库驱动?

数据库客户端工具是开发者日常高频使用的基础设施,其核心在于连接管理、SQL执行与结果渲染三大能力。传统Java或Electron架构虽功能丰富,却因运行时臃肿、启动缓慢、内存占用高而影响开发体验。Rust凭借零成本抽象、内存安全与原生异步支持,成为重构数据库工具底层的理想语言;Tauri则以系统级Webview替代嵌入式浏览器,在保障UI生态兼容性的同时大幅压缩体积。dbx正是这一技术路径的典型实践——通过feature-gated编译实现驱动按需集成,结合SQLx异步抽象与流式结果处理,使单二进制在20M

weixin_34235457的博客 201

3分钟快速清理磁盘空间:Czkawka与Krokiet终极文件管理指南

你是不是经常被"磁盘空间不足"的警告困扰?电脑里堆积的重复文件、相似照片和系统垃圾正在悄悄吞噬你的存储空间。Czkawka(波兰语意为"打嗝")和它的新一代界面Krokiet(波兰语意为"炸肉饼")组成了2024年最强大的免费磁盘清理解决方案。这款用Rust编写的跨平台工具能在几分钟内扫描整个硬盘,精准识别并清理无用文件,让你的电脑重获新生。 ## 🎯 为什么你需要专业的磁盘清理工具? 大多

gitblog_00556的博客 470

dbx:基于Rust+Tauri的轻量级多协议数据库工具

数据库客户端工具正从传统Java/Python桌面应用向系统级原生工具演进。Rust凭借零成本抽象与内存安全特性,成为高性能协议栈开发首选;Tauri则以进程精简、权限最小化和强安全模型重构UI层架构。这类工具的核心价值在于:协议兼容性不妥协、启动与响应低延迟、离线可用且无需中心化服务。典型应用场景包括DBA生产环境快速诊断、开发者多数据库协同调试、学生课程实验及Kubernetes轻量运维。dbx正是这一范式的代表作,深度融合Rust协议解析、Tauri安全沙箱与本地AI SQL推理能力。

weixin_33796177的博客 657

5分钟快速上手Chat2DB:AI智能数据库管理终极指南

Chat2DB是一款革命性的AI智能数据库管理工具,它将传统数据库客户端与人工智能完美结合,让数据库操作变得前所未有的简单高效。无论你是数据库新手还是经验丰富的开发者,这款开源工具都能显著提升你的数据管理效率。通过自然语言交互和智能SQL生成,Chat2DB重新定义了数据库管理的体验,让复杂的数据库操作变得像聊天一样轻松。 ## 🚀 快速启动:3步完成安装配置 ### 第一步:获取项目源码

gitblog_00281的博客 156

OpenCore 安装指南前置准备:动手前必须完成的硬件、系统与环境检查清单

本篇文章对应 OpenCore Install Guide 的**前置准备(Prerequisites)**章节,是整个 Hackintosh 安装流程的"第零步"。在真正动手下载 OpenCore、编辑 config.plist 之前,你需要先完成一套严格的自我检查:确认你的硬件属于 macOS 支持范围、整理出一份完整的硬件清单、准备可用的制作环境和网络条件。读完本文,你将掌握一份可直接照着执

gitblog_00678的博客 1066

Daily Paper Reader是什么:免费零服务器的arXiv论文推荐站,10分钟看懂

**Daily Paper Reader 是一个开源的 arXiv 论文推荐站与 AI 阅读平台**:它每天自动抓取 arXiv / OpenReview 上的新论文,按你设定的研究方向做个性化召回、重排和 AI 打分,最后生成一份可以直接阅读的"论文日报"。整个系统**免费、零服务器**——依托 GitHub Actions 定时跑流水线、GitHub Pages 自动部署站点,你只需要 For

gitblog_00048的博客 656

Rust数据库客户端dbx:20MB原生支持80+数据库的原理与实践

数据库客户端工具本质上是协议解析器与UI交互系统的结合体,其性能瓶颈常源于运行时依赖、内存拷贝和渲染架构。Rust凭借零成本抽象与内存安全特性,天然适配数据库协议层开发,可实现MySQL/PostgreSQL/Oracle等协议的零拷贝解析与异步调度;Tauri+WGPU+egui技术栈则绕过WebView,以原生GPU渲染替代DOM更新,显著压缩体积并提升响应速度。这种‘协议直连+终端思维UI’的设计范式,使轻量级、跨平台、国产数据库兼容成为可能,适用于DevOps自动化、信创环境部署及多源数据联邦分析等

weixin_34301132的博客 292
上一篇: Prompt Engineering 和 Context Engineering 和 Harness Engineering 区别和联系
下一篇: Spark中怎么做Spark canonicalize归一化
鸿乃江边鸟
博客等级 码龄6年 3746粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值