- 博客(404)
- 资源 (2)
- 收藏
- 关注
原创 JuiceFS vs HDFS,最简单的 JuiceFS 入门
本文详细对比了 JuiceFS 和 HDFS 两种分布式文件系统。JuiceFS 是一种新型的云原生存储解决方案,具有 POSIX 兼容、HDFS 兼容、S3 网关支持、强一致性、高性能、数据安全等核心特性,适用于云原生环境、AI 训练和海量小文件管理等场景。其架构基于存算分离,元数据存储在独立数据库中,数据存储在对象存储中,支持弹性扩展和分布式事务。JuiceFS 在元数据操作、数据读写性能、缓存机制等方面均优于 HDFS,同时通过纠删码和加密技术降低了存储成本并提升了数据安全性。相比之下,HDFS 是传
2025-04-02 17:11:14
570
原创 一文搞懂Flink 的 Materialized Table:简化数据管道的利器
Flink 的 Materialized Table 为简化数据管道的开发和管理提供了一种强大的解决方案。它通过统一流批处理、降低开发成本、提高数据处理灵活性等方式,帮助用户更高效地应对复杂的数据处理需求。虽然目前还存在一些限制,但随着技术的不断进步和社区的努力,这些问题有望得到解决。对于需要构建高效、灵活数据管道的开发者来说,Materialized Table 是一个值得深入探索和应用的技术。
2025-03-25 13:48:44
964
原创 掌握 Apache Iceberg 的关键:Equality Delete 和 Position Delete 的原理与应用
Equality Delete 是一种基于字段值的删除方式。它通过指定某些字段的值来标记需要删除的行。简单来说,就是告诉系统:“所有满足这个条件的记录都要被删除。” 例如,如果你想删除所有id=3的数据,Equality Delete 就会在删除文件中记录id=3这个条件。Position Delete 是一种基于数据文件位置的删除方式。它通过指定数据文件的路径和行号来标记需要删除的行。简单来说,就是告诉系统:“在某个文件的第几行,这个记录要被删除。
2025-03-24 19:18:43
782
原创 JVM如何处理Java中的精度转换: 从源码到字节码
Java中的类型转换机制是其类型系统的重要组成部分。理解自动类型提升和显式类型转换的规则,以及JVM如何处理这些转换操作,对于编写高效、正确的Java代码至关重要。了解类型精度等级,避免不必要的精度损失在需要高精度值的地方使用高精度类型在进行显式类型转换时,注意可能的数据丢失和溢出问题避免在性能敏感代码中进行频繁的类型转换和装箱/拆箱操作理解不同上下文(赋值、运算、方法调用等)中的类型转换规则掌握这些知识将帮助你写出更加健壮和高效的Java代码。
2025-03-23 09:39:15
767
原创 Flink 水位线全解析:从原理到实战,彻底掌握事件时间处理!
本文深入探讨了 Apache Flink 中的水位线(Watermark)机制,特别是 WATERMARK FOR event_time AS event_time 的语法及其在实际应用中的重要性
2025-03-17 14:48:08
467
原创 只会写代码的程序员,注定没有出路!
只会写代码的程序员正在面临职业危机。随着 AI 技术的快速发展,重复性编码工作逐渐被自动化工具取代,程序员的竞争力不再局限于代码能力,而是转向解决问题的能力。此外,程序员群体普遍存在的沟通短板也限制了职业发展。未来,程序员需要跳出“技术至上”的思维,提升业务理解力、用户洞察力和跨领域沟通能力,才能适应行业变化,抓住更多机会(如专利创新等),实现职业突破。只会写代码的程序员没有出路,技术与业务、沟通并重的复合型人才才是未来的赢家。
2025-03-13 19:50:20
173
原创 Flink 中RocksDB 为什么将每个键和值的限制为 2^31 字节
RocksDB 的 JNI 桥接 API 对键值大小限制为 2³¹ 字节(约 2GB),其根本原因是 **JNI 接口设计中的 `jint` 类型限制**。JNI 在传递键值数据长度时使用 `jint`(32 位有符号整数),最大值为 2³¹−1,导致无法支持更大的数据。尽管 RocksDB 的 C++ 原生 API 支持更大的键值,但 JNI 桥接层出于稳定性和兼容性考虑,显式约束了键值大小。Java 数组的最大长度(`Integer.MAX_VALUE`)与此限制一致,但并非直接原因
2025-03-13 19:43:02
329
原创 数据湖出现的背景、现状与未来
本文介绍了数据湖(Data Lake)的概念、功能、架构、优势、挑战以及与数据湖仓(Data Lakehouse)的融合。数据湖是一种用于存储海量原始数据的架构,支持结构化、半结构化和非结构化数据的直接存储和访问,具有可扩展性强、灵活性高、成本效益好以及促进数据民主化的特点。其架构包括数据摄取层、存储层、处理层和访问层,能够支持大数据分析、机器学习等多种应用场景。然而,数据湖也面临数据治理、技能缺口和数据沼泽等挑战。文章还探讨了数据湖与数据湖仓的结合,指出数据湖仓融合了数据湖和数据仓库的优势,能够提供更好的
2025-03-12 11:19:04
709
原创 AI编程:吞噬者还是进化之翼?
AI编程工具的普及正在深刻重构程序员的认知生态。研究表明,过度依赖AI可能导致算法思维退化、代码记忆丧失及技术深度理解弱化,催生出依赖提示词却疏于底层原理的“工具化开发者”。然而,技术进化并非零和博弈——通过“原始编程”训练、人机协同工作法的创新及认知防火墙的建立,程序员可在保留核心思维能力的同时,将AI转化为增强创造力的“外接大脑”。未来的关键在于平衡效率与深度,既善用AI突破生产力边界,又通过持续的基础认知训练守护技术主权,最终实现人类开发者与智能工具的共生进化。
2025-03-03 19:34:09
702
原创 AI编程来了,程序员要失业了?
AI 编程被炒的火热,很多人都在鼓吹,甚至行业内的大厂,吹的最牛逼的就是某阿里 ,其他的公司就不一一列举了。在大模型领域,我不认为阿里会强过 Claude,所以我基于 Claude-3.5-Sonnet,完全沉浸式编码完成一个任务 我通过AI编程完成了第一个实用程序
2025-02-28 19:40:14
361
原创 我通过AI编程完成了第一个实用程序
我一直想要开发一些程序,来解决工作生活中的一些困点,但一直没有实施出来,主要是因为GUI不太熟悉,但也不想花费大量的时间来学习这个。其实之前也试图学过 pyQT但后来因为工作的原因,不了了之了。但最近 AI 编程被吹嘘的太厉害了,所以我也想借助AI 的力量来实现我想要的功能,于是乎一款对 word 和 pdf 内容搜索的工具就诞生了。
2025-02-28 19:25:14
402
原创 Spark Drive 端的 List 无法获取 Executor 中的数据吗?
文章探讨了在 Apache Spark 中,Driver 端 和 Executor 端 内存隔离的问题,特别是当在 Executor 端 修改 Driver 端 创建的 List 时,修改不会生效的原因。文章详细解释了 Spark 的分布式架构、数据传递机制,并提供了解决方案,如使用 collect、累加器、广播变量等方法来实现 Driver 端 和 Executor 端 之间的数据同步。
2025-02-14 19:19:26
671
原创 在Java中,equals()和contains()谁更快
在大多数情况下,equals()方法比contains()更快,主要得益于其快速失败机制(如长度差异或早期字符不匹配)。但需注意:场景适配:如果目标是判断子串存在性(而非完全相等),只能使用contains()。内容复杂度:若比较的字符串完全相等且较长,两者的耗时差异较小。综上,从性能角度优先选择equals()(当满足功能需求时),而contains()适用于子串匹配的特定场景。
2025-02-13 13:24:23
259
原创 公司绩效的本质跟大学申请社团是一致的
在经过N年的绩效生活之后,豁然开朗了,绩效的本质就是看你成绩被炫耀出来了多少加上可以决定你绩效的人对你的看法。这不由的让我进行了时间穿梭,回到了 X 年前的大三时刻。
2025-01-23 11:25:30
617
原创 从零开发操作系统-聊一聊C语言中的头文件
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:1. 了解大厂经验1. 拥有和大厂相匹配的技术等希望看什么,评论或者私信告诉我!@[TOC](文章目录)# 一、背景其实也没有啥背景。最主要的原因就像 《30天自制操作系统》一书作者说的那样,写一个操作系统,仅仅想想就是一件特别有趣的事情呢。一两年前曾经入手开始写过,但慢慢的就不了了之了。现在又有这个想法了,准备一直干下去,最终写一个操作系统出来,算是程序员生涯的一份
2024-11-28 14:38:19
793
原创 从零开发操作系统-聊一下GDT 和 IDT
文章重点解释了在操作系统开发中,GDT(全局描述符表)和IDT(中断描述符表)的作用,特别是它们如何支持鼠标移动等中断处理。作者通过具体实例,阐述了GDT和IDT在内存管理、中断处理及系统稳定性方面的
2024-11-25 17:21:19
591
原创 从零开发操作系统-CPU的实模式和保护模式以及长模式
x86 架构的 CPU 有实模式、保护模式和长模式。实模式主要用于系统启动和早期操作系统,保护模式提供了更复杂的内存管理和更大的寻址空间,而长模式则支持 64 位的地址空间和更大的内存寻址能力。现代操作系统通常在保护模式或长模式下运行。另外如果以16位模式启动的话,用AX和CX等16位寄存器会非常方便,但反过来,像EAX和ECX等32位的寄存器,使用起来就很麻烦。另外,16位模式和32位模式中,机器语言的命令代码不一样。
2024-11-14 16:22:43
646
原创 从零开发操作系统-关于 0x7c00 地址
文章深入探讨了计算机启动过程中CPU和BIOS的相互作用,以及引导扇区在启动过程中的关键作用。作者通过解释硬件复位、CPU初始化、BIOS执行、硬件检测、引导过程以及执行引导扇区代码等步骤,为读者提供了对操作系统启动过程以及 0x7c00 的全面理解。
2024-11-12 16:27:38
666
原创 从零开发操作系统-第二天汇编语言、BIOS以及Makefile介绍
详细介绍了汇编语言基础,包括操作系统引导程序Bootloader Code的编写和BIOS的作用。同时,文章还解释了Makefile的构成和重要性,以及BIOS的历史和发展。
2024-11-07 14:35:17
844
原创 从零开发操作系统-为什么磁盘的扇区为 512 byte
本文通过讲解机械硬盘中扇区、簇等底层概念,以及Windows和Linux系统中对扇区的不同管理方式,探讨了硬盘存储的原理和操作系统如何管理硬盘空间。通过了解这些知识,可以更好地理解电脑的存储机制,以及如何高效地管理和利用硬盘空间。同时,对于喜欢探究计算机底层原理的人来说,这些内容也有一定的启发和帮助。
2024-11-04 19:44:59
1440
原创 从零开发操作系统-相关术语解释( 不断更新中 )
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。欢迎关注!希望看什么,评论或者私信告诉我!
2024-10-30 11:32:17
369
原创 Python 如何执行字符串代码
本文介绍了在Python中如何使用exec()和eval()函数执行字符串形式的代码,并详细解释了这两种方法的用法、注意事项以及安全性问题。文章还探讨了exec()函数的原理和关键特性,包括命名空间控制和动态性,同时也提醒了使用这些方法时可能面临的安全风险和性能开销。
2024-10-24 15:50:38
958
原创 写给1024的你我他-100x developer
随着大模型的快速发展,能写代码的模型越来越厉害了,比如 阿里云1号AI员工“通义灵码”、GitHub Copilot、Codex 、以及如日中天的 Cursor 等等,现在都如雨后春笋般的冒出来了。也有越来越多的人,包括对代码一无所知的人,基于上面的工具构建出了一个有一个好玩的东西。也越来越多的人在吹嘘这些工具仅仅是增强而非取代。但我的看看恰恰相反。不要只专注于成为世界上最好的开发人员,而要关注更大的前景(记住产品重于项目!
2024-10-24 11:21:10
824
原创 如何成为团队的领导者
如果你想成为领导者,就开始喋喋不休。你说什么甚至都不一定重要。新的研究表明,如果有人开始大谈特谈,没有领导者的团体就能找到一个。
2024-08-20 19:09:17
892
原创 一种新颖的面试方式
能同时做到拥有工作基础和强大的学习能力以及充足的计算机基础能力这样的人,已经是一个相对优秀的候选人了。如果遇到了,不要放弃,即使他可能连 SQL的开窗函数都不会写!
2024-08-16 19:23:35
484
原创 写给非机器学习人员的 embedding 入门
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:1. 了解大厂经验1. 拥有和大厂相匹配的技术等希望看什么,评论或者私信告诉我!@[TOC](文章目录)# 一、背景目前在实现 NL2SQL 就是将人的自然语言通过 LLMs 的一系列处理,在这个过程中,会把文本向量化后存储到向量数据库中,然后通过向量搜索,这个过程中发现文本 embedding 后,通过向量化搜索效果很是惊人,就跟程序能读懂人的语言一样。于是对 emb
2024-08-08 20:13:11
869
2
原创 解决maven java.rmi.ConnectException: Connection refused to host: 127.0.0.1 错误
本篇文章主要讲述了在使用Idea打开项目时,可能会遇到Maven加载失败的问题,造成这个问题可能是因为DNS配置错误或者防病毒软件或防火墙会阻止与本地主机的连接等原因。文章提供了详细的解决方法,即关闭防火墙或添加白名单。
2024-08-08 15:34:37
728
原创 简单了解一下 CPU 和 GPU 的区别
本文介绍了CPU和GPU的历史产生背景,以及它们之间的区别和应用。此外,文章还介绍了如何利用大模型的优势,其中推荐了一个多模型可供选择的工具葫芦AI。
2024-08-06 19:49:45
1121
原创 解开基于大模型的Text2SQL的神秘面纱
本文介绍了NL2SQL的实现方式,包括目前比较火的开源项目Vanna、DAIL-SQL以及其他实现方式,同时总结了当前NL2SQL实现方式的优化点。此外,本文还介绍了Text-to-SQL测试集WikiSQL、Spider和BIRD,以及评估模型性能的指标Spider Exact Match和Spider Exact Execution。
2024-07-25 15:08:38
1400
3
原创 【java多线程】理解多线程必须要知道的 CPU 缓存
本文介绍了CPU Cache的基本原理和实现方式。CPU Cache利用时间局部性和空间局部性原理来优化数据访问性能,通过缓存命中和缓存未命中的方式来提高处理器的运行效率。CPU Cache是通过SRAM实现的,因为SRAM具有低延迟、高速度的特点,能够以接近CPU频率的速度来运行。相比之下,寄存器虽然速度更快,但容量有限且成本高昂,无法直接替代缓存。CPU Cache在处理器设计中起着重要作用,能够提供更大的数据集合供处理器访问,并支持多核处理器的设计。
2024-07-12 14:47:28
765
原创 【Java 多线程】12个原子操作类一次性搞定
本文介绍了Java中的原子类,包括原子更新基本类型、原子更新数组、原子更新字段和原子更新引用类型。针对每种类型,文章都给出了相应的类的介绍和常用方法,并提供了相应的例子进行演示
2024-07-09 10:12:52
440
原创 一文搞懂 java 线程池:ScheduledThreadPool 和 WorkStealingPool 原理
本文详细介绍了 ScheduledThreadPool 和 WorkStealingPool 两种 Java 线程池。ScheduledThreadPoolExecutor 用于定时任务,提供 scheduleAtFixedRate 和 scheduleWithFixedDelay 两种方法来执行任务。WorkStealingPool 是 ForkJoinPool 的一个特例,使用工作窃取算法和分治任务,适合并行计算和递归分解任务。ForkJoinPool 的核心是工作窃取算法,能够实现任务的动态负载均衡,
2024-07-04 11:35:28
1067
原创 一文搞懂 java 线程池:SingleThreadExecutor 和 CachedThreadPool 原理
本文详细介绍了 Java 中的 SingleThreadExecutor 和 CachedThreadPool 两种线程池。SingleThreadExecutor 是一个只有单一工作线程的线程池,适合顺序执行任务,能够有效处理需要顺序执行的一系列任务,并保持任务之间的顺序性。它提供了线程生命周期管理、顺序执行、线程鲁棒性、易于调试和任务队列管理等功能。而 CachedThreadPool 是一个会根据需要创建新线程的线程池,适合处理短生命周期的异步任务,能够动态调整线程数量以应对任务量的变化。它使用 Sy
2024-07-03 14:22:47
1175
原创 一文搞懂 java 线程池:ThreadPoolExecutor 和 FixedThreadPool 原理
本文详细介绍了线程池的原理,包括ThreadPoolExecutor的处理流程、execute方法原理,以及FixedThreadPool的原理、优缺点及应用场景。
2024-07-02 20:20:10
1246
原创 一文搞懂 java 线程池:基础知识
本文详细介绍了Java线程池的概念、优势、分类、使用方法、配置原则和监控手段。首先解释了线程池是管理和复用线程的容器,能够有效提高多线程程序的性能和稳定性。接着,文章列举了线程池的多种类型,如固定大小线程池、缓存线程池、单线程池等,并详细介绍了ThreadPoolExecutor的创建方法和参数含义。文章还讨论了如何合理配置线程池以适应不同的任务类型,如CPU密集型、IO密集型等。最后,文章提供了线程池监控的方法和扩展线程池的建议。
2024-07-02 19:17:43
872
原创 Java 中使用标签(label)来控制循环的执行流程
本文介绍了在Java编程中的标签(label)的使用方式及其优势。标签可以用于多层嵌套循环中直接控制外部循环的执行流程,提升代码的灵活性和可读性。尽管在大多数情况下可以通过其他方式避免使用标签,但在特定场景下它仍然是一种有用的工具。
2024-06-27 17:35:09
1023
1
原创 java线程间的通信 - join 和 ThreadLocal
本文探讨了Java中多线程通信的两个重要概念:join和ThreadLocal。join方法允许一个线程等待另一个线程的结束,适用于需要线程间协作和顺序执行的场景。ThreadLocal则提供了线程级别的数据隔离,每个线程都可以拥有自己独立的变量副本,适合保存线程相关的上下文信息和性能优化需求。
2024-06-24 20:16:57
999
原创 java线程间的通信- notify和 wait
在软件开发中,线程是实现并发执行的重要手段,然而,线程之间的协作与通信却是开发者必须重点考虑的挑战之一。Java作为一种广泛应用于多线程编程的语言,提供了一套强大而灵活的机制,让不同线程之间能够优雅地交替执行、传递信息,以实现协调合作。前面我们已经完成了多线程一些基础知识准备以及 volatile 和 synchronized,本文将深入探讨Java中通过notify和wait实现线程间通信的机制。通过源码我们可以知道 wait 是 object 对象方法,用于实现线程间的等待和通知机制。当一个线程调用。
2024-06-23 18:10:14
904
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人