自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xuejianxinokok的专栏

用程序模拟现实,用现实来表现程序

  • 博客(250)
  • 资源 (31)
  • 收藏
  • 关注

原创 一些可以参考的文档集合18

一些经典文章摘要和记录

2025-01-06 09:03:14 889

原创 JAVA 新特性

持续跟踪java的新特性和新特性使用场景

2022-06-22 09:32:49 989

原创 面向对象的思考

1. 封装(package) 1.1 概念 与 意义 到底是为了安全 还是为了对用户友好? 1.2 封装是指打包功能 把实现的细节隐藏在接口之后并不代表必须有强制的私有性 先保护好自己再让别人利用 ,让能看到的看到,不能看到的就隐藏 private protected,package,public 1.3 封装的层次和粒度: 平级封装 mvc , 层次封装(应该严格划分每层的责任和义务,不能违背这个原则) ......

2021-09-10 08:50:45 297 1

原创 mysql8 sql优化相关(持续更新...)

能明确知道哪里会慢,为什么会慢优化的本质是减少IO,减少随机IO,减少比较和排序(费cpu)1. 关于主键mysql8 innodb 表必定有主键,第一种方法是自己显示定义如果没有显示定义,mysql 自动在表中添加DB_ROW_ID (全局共享递增)可以用 以下sql 查看隐藏列show extended columns from `表名`第一种观点 不能用UUID 做主键 https://www.percona.com/blog/2...

2021-06-30 10:53:55 1287

原创 深入了解RUST迭代器 - 惰性、可组合的处理

本文深入探讨了Rust中的迭代器机制,重点介绍了其惰性求值和可组合性的特点。文章详细讲解了Iterator trait的核心原理、三种创建迭代器的方法(iter()、into_iter()、iter_mut())以及转换(map/filter)、消费(collect/fold)和重塑(step_by/rev/enumerate/zip)迭代器的多种操作方式。通过具体示例展示了如何实现自定义迭代器,并解释了迭代器作为零成本抽象如何提供高效的数据处理能力。文章强调理解迭代器对于编写地道Rust代码的重要性,它们

2025-11-14 09:48:18 988

原创 可能被忽略的 pgvector 各种坑

pgvector在生产环境中的实践困境:理想与现实差距显著。现有技术文档普遍只展示本地小规模测试,却忽略了关键生产问题:索引选择上,IVFFlat存在聚类失衡问题,HNSW则面临高内存消耗和构建耗时;实时搜索场景中,新数据插入与索引维护存在根本性冲突,导致必须采用离线构建、双索引等复杂方案;查询过滤面临预过滤与后过滤的两难选择,既要保证结果质量又要兼顾性能。这些未充分讨论的痛点表明,pgvector要实现"一站式向量数据库"的承诺,仍需克服诸多工程挑战。

2025-11-05 10:22:25 701

原创 io_uring 快吗? Postgres 17 与 18 的基准测试

Postgres 18在I/O处理上引入重大改进,包括新的io_method选项(worker和io_uring)。基准测试显示:在网络存储上,worker模式性能最佳;本地NVMe存储上所有模式表现接近,io_uring在高并发大扫描时略有优势。EBS性能受IOPS限制明显,而本地NVMe存储表现最优。Postgres 18整体性能优于17,特别是在CPU密集型场景。测试使用sysbench的只读负载,覆盖不同连接数和扫描范围。结果表明I/O优化对性能提升显著,但实际收益取决于存储类型和工作负载特征。

2025-10-24 16:11:50 943

原创 什么是代数类型 ? java为什么要添加record,Sealed class 和增强switch ?

代数类型是编程中一种简单而强大的概念,它将类型视为值的集合,并通过加法和乘法运算来组合类型。积类型(如元组和结构体)通过组合多个类型的值创建新类型,而和类型(如Option和Result)允许一个值属于多个类型之一。这种类型系统能更精确地建模现实问题,减少运行时错误,并简化API设计。尽管在一些主流语言中缺乏对代数类型的原生支持导致开发者需要绕道实现类似功能,但在支持代数类型的语言(如OCaml和Rust)中,类型系统能更自然地表达程序逻辑,降低认知负担并提高代码安全性。

2025-10-16 10:43:26 795

原创 Postgres 18 的新功能

PostgreSQL 18 带来多项重要改进: 异步 I/O:支持更高并行度,特别适合网络存储,部分场景性能提升 2-3 倍 OAuth 2.0:提供更安全的身份验证方式,替代静态密码 开发增强: 原生支持 UUIDv7,改善索引局部性 RETURNING 子句可显式返回新旧值 虚拟生成列(VIRTUAL)成为默认选项 逻辑复制:支持生成列的复制 性能优化:B树索引、查询规划器等改进 可观察性:增强进程监控和 EXPLAIN 功能 该版本包含 3000+ 次提交,虽然升级简单,但建议评估异步 I/O 等新特

2025-10-13 16:56:37 864

原创 新版本 python 3.14 性能到底如何?

Python 3.14性能测试报告:新版本带来显著提速 本文对Python 3.14进行了性能基准测试,重点比较了不同版本Python在斐波那契数列计算和冒泡排序上的表现。测试结果显示,Python 3.14相比3.13版本提速约27%,比早期版本提升更为明显(3.11是性能转折点)。Pypy 3.11表现优异,比Python 3.14快5倍,而Rust则以近70倍的优势遥遥领先。 测试还考察了Python 3.13+的三种解释器变体(标准、JIT即时编译和自由线程)。结果显示,JIT在当前测试中未带来明显

2025-10-10 14:17:47 1054

原创 透明的多级并发(行) 方式

本文探讨了多级并发方式的演进,从多机分布式到硬件指令级并发。重点分析了单机多进程、多线程互斥锁、通道通信、协程等并发模型的优缺点:进程隔离但通信开销大;线程共享内存易导致竞争;通道通信隔离性好且易于调试;协程等轻量级方案更高效。最后指出并发粒度越来越小,并向透明化方向发展。文章引用自Async Rust相关讨论,展现了并发编程范式的发展趋势。

2025-09-26 15:05:17 344 1

原创 PostgreSQL 18 新功能:虚拟生成列

PostgreSQL 18将引入虚拟生成列功能,这是继存储生成列后的又一重要特性。虚拟生成列在查询时动态计算,不占用存储空间,适用于轻量级表达式;而存储生成列则持久化在磁盘上,可被索引。该功能借鉴了Excel的反应式编程思想,通过定义源列和派生列的关系,简化数据库维护工作。实际应用中,虚拟生成列可用于多语言全文搜索等场景,通过不同文本配置生成多个tsvector列并分别建立索引,提升查询效率。这一特性将SQL从命令式编程转向更具声明性的风格,减少重复代码,使数据库设计更加简洁高效。

2025-09-12 10:01:16 802

原创 图解 OAuth,为什么这样设计?

图解 OAuth,为什么这样设计?

2025-08-29 10:29:15 495

原创 LayerNorm和BatchNorm区别

摘要:本文对比了NLP中BatchNorm与LayerNorm的核心差异。BatchNorm按特征维度分组,跨样本计算统计量(如D=0特征对6个值求均值),适用于CV任务但依赖批量大小;LayerNorm按样本分组,计算单个样本内所有特征的统计量(如样本1的6个值求均值),适用于NLP任务且不依赖批量大小。关键区别在于统计量计算范围:BatchNorm跨样本单特征,LayerNorm跨特征单样本。

2025-08-26 09:34:49 337

原创 大模型微调 Prompt Tuning与P-Tuning 的区别?

Prompt Tuning与P-Tuning方法对比 Prompt Tuning和P-Tuning是两种参数高效微调方法,通过小规模可训练提示向量适配下游任务。Prompt Tuning(Google提出)仅在输入层添加可学习的虚拟token嵌入,训练参数量少但性能依赖预训练模型能力。P-Tuning(清华团队)最初采用连续嵌入替代离散提示(v1),改进版P-Tuning v2在Transformer各层插入提示向量,显著提升表达能力,接近全参数微调效果。 核心区别: 参数位置:Prompt Tuning仅

2025-08-25 10:40:30 1204

原创 解惑rust中的 Send/Sync(译)

Send Sync 它们是 Rust **将特定线程安全问题 编码到 类型系统**中的方式。

2025-08-13 11:31:18 1152 5

翻译 理解LLMs:大型语言模型的简单指南

理解LLMs:大型语言模型的简单指南嗨,来自世界各地的热情学习者✌️。Source:从那时起,等许多智能模型应运而生,许多初创公司也纷纷进入该领域。现在是投资学习这些技能的好时机。等平台(AI 的 GitHub)充当开放中心,整个生态系统的研究人员和开发人员在此协作,共享、微调和部署从自然语言处理到计算机视觉等各个领域的 AI 模型。目前已部署的模型规模达到 140 万个,每周都有新的突破出现。

2025-03-07 11:44:38 342

原创 Nodejs架构

Node.js 是一个开源的 JavaScript 运行时环境,旨在运行可扩展的应用程序。Node.js 允许开发人员使用 JavaScript 编写服务器端脚本代码。此外,Node.js 具有能够异步 I/O 的事件驱动架构。它基于 Google Chrome 的 V8 引擎构建,用于开发Web 应用程序,例如视频流、单页应用程序、在线聊天应用程序和其他网页。在本文中,我将讨论 Node.js 架构,并深入探讨 Node.js 内部更小的组件。

2024-12-13 10:03:53 1788 2

原创 Postgres 如何使事务原子化?

原子性(“ACID”意义上的)要求 对于对数据库执行的一系列操作,要么一起提交,要么全部回滚;不允许中间状态。对于现实世界的混乱的代码来说,这是天赐之物。这些更改将被恢复,而不是导致生产环境中的错误更改数据,然后使其永久损坏。在处理数百万个请求时,由于间歇性问题和其他意外状态而中途断开的长尾连接可能会造成不便,但不会扰乱您的数据。Postgres 的实现尤其以很少的开销提供强大的事务语义而闻名。虽然我已经使用它很多年了,但我从来没有理解过它。

2024-12-03 16:56:14 1226

原创 Postgres VACUUM 和 Xmin Horizo​​n

在工作中需要了解 Postgres 中称为“xmin Horizo​​n”的概念,所以留下了一份学习记录。xmin 地平线 也称为 最旧的 xmin,它告诉我们 “vacuum 进程时间点(就事务而言)”。换句话说,VACUUM 无法清除此 xmin 范围之后( 即大于xmin)的死元组。当您看到类似“1165 are dead but not still moving”的日志时,这意味着,因为它们位于 xmin 范围之后。

2024-11-26 11:22:21 1039

原创 The Internals of PostgreSQL 翻译版 持续更新...

PostgreSQL 是一个设计良好的开源多用途关系数据库系统,在全球范围内得到广泛使用。

2024-11-13 17:15:35 922

转载 ImageJ: stretchHistogram与均衡化

这意味着,在直方图中有峰值的地方–在某个范围内的数值集中–这些峰值被扩展到更宽的范围,以使峰值变平,而在直方图中有凹槽的地方,这些峰值被映射到更窄的范围,从而使槽被平平。柱状图的映射曲线是由累积分布导出的(假设每个直方图条都是以前所有值的总和),理论上可以得到一个完全平坦的直方图。然而,由于我们(通常)处理的是像素强度的离散值,直方图均衡化给出了像上面所示的平面直方图的近似值。的图像,因此所有像素强度集中在一个比8位灰度图像的0到255范围更小的范围内。因此,图像中最暗的像素可以是84,最亮的是153。

2024-10-12 08:42:31 483

原创 duckdb 连接postgres 和 jdbc 的使用

DuckDB Foreign Data Wrapper for PostgreSQL是一个外数据包装器(FDW),旨在将PostgreSQL与DuckDB数据库文件连接起来。通过这一FDW,用户可以在PostgreSQL中直接操作DuckDB的数据,实现数据的无缝集成和高效处理。postgres扩展允许 DuckDB 直接从正在运行的 PostgreSQL 数据库实例读取和写入数据。DuckDB FDW的核心在于其外数据包装器的实现,它允许PostgreSQL通过标准的SQL接口访问DuckDB的数据。

2024-09-13 11:34:03 2200 1

原创 UUID 的 8 个版本以及何时使用它们

通常,当我们有多个编号版本时,数字越大越新,并且被认为越好。相比之下,有 8 个 UUID 版本(v1 到 v8),它们各不相同,并且全部在中定义。在这里,我将提供一些关于它们的高层次解释,并链接到 RFC ,以防您需要更多详细信息。

2024-08-26 09:05:20 3314

原创 一些可以参考的文档集合17

平时看到的比较好的文章集合

2024-08-23 10:01:10 708

原创 为什么要区分堆和栈?为什么要装箱?

堆上内存则是从低位地址向上增长,堆内存通常只受物理内存限制,而且通常是不连续的,一般由程序员手动申请和释放的,如果想申请一块连续内存,则操作系统需要在堆中查找一块未使用的满足大小的连续内存空间,故其效率比栈要低很多,尤其是堆上如果有大量不连续内存时。栈内存从高位地址向下增长,且栈内存分配是连续的,一般操作系统对栈内存大小是有限制的,编译器自动分配和回收 无需程序员手动干预,因而栈内存申请和释放是非常高效的。Rust 默认使用栈来存储变量,而。程序中为什么要区分堆和栈?为什么还要这么做呢?

2024-08-20 11:27:37 432

原创 如何创建包含全部模块的jre?

今天在发布springboot 3.2.3 程序的时候 使用了之前导出的jre。找了好几个小时也没弄清楚少哪个模块,然后。结果程序莫名其妙的报反射错误,生成后jre 大小不到 90M。

2024-07-31 15:50:28 420

转载 转载:C#与C/C++的交互

我们知道在大多数的静态语言中定义变量的时候都要先指定其数据类型,所谓数据类型,都是人们强加的一个便于记忆的名称,究其本质就是指明了这个数据在内存里到底是占用了几个字节,程序在运行的时候,首先找到这个数据的地址,然后再按着该类型的长度,读取相对应的内存,然后再处理。前面说明的都是简单数据类型的及其指针的传递,利用PInvoke我们也可以实现函数指针的传递,C#中并没有函数指针的概念,但是可以使用委托(delegate)来代替函数指针,关于C#中委托的说明,可以参考笔者前面的一个文章:《C#委托及事件》

2024-07-17 09:10:28 196

原创 如何在PostgreSQL正确的 使用UUID 作为主键

UUID 经常用作数据库表主键。它们易于生成,易于在分布式系统之间共享并保证唯一性。考虑到 UUID 的大小,这是否是一个正确的选择值得怀疑,但通常这不是由我们决定的。本文的重点不是“UUID 是否是主键的正确格式”,而是如何有效地使用 UUID 作为 PostgreSQL 的主键。

2024-07-12 09:29:22 2795

原创 “魔数“是怎样工作的?

合同里有成章成章的技术细节,包括场地的承重要求,各类出入口的宽度,电源要求,以至于插座的数量和插座之间的间隔。这一条款长期被媒体用来作为摇滚乐队耍大牌的典型例子,有传言指某次由于主唱在后台发现了棕色M&M豆,大发其飙地砸了后台,造成损失高达八万五千美元(当时是八十年代,八万五千还是不少钱)。在一个较早的版本,UNIX的可执行文件格式最开头包含一条PDP-11平台上的跳转指令,使得在PDP-11硬件平台上能够正常运行,而在其他平台上,这条指令就是“魔数”(magic number),只能用作文件类型的标识。

2024-04-30 17:13:20 563

原创 *为什么Rust Async/await 设计成这样 ?

Rust 中的 Async/await 语法最初发布时引起了热烈的关注和兴奋。引用当时的这将打开防洪闸门。我相信很多人都在等待 Rust 采用的这一刻。我肯定是在这艘船上的。此外,它还具有所有优点:开源、高质量工程、开放设计、复杂软件的大量贡献者。真正鼓舞人心!最近,人们的反应有点复杂。再次引用上的评论,讨论最近关于该主题的博客文章:我真的无法理解为什么有人会看到 Rust 的异步混乱,并认为对于一种已经以编写起来非常复杂而闻名的语言来说,这是一个很好的设计。

2024-04-30 16:03:21 1511

原创 关于句子嵌入Sentence Embeddings 你想知道的一切(也许更多)

多么美妙的旅程啊!我们只是将句子嵌入从 0 变为 1。我们了解了它们是什么、如何计算它们、如何比较它们以及如何缩放它们。我们还看到了嵌入的一些很酷的应用,例如语义搜索和释义挖掘。我希望这篇博文能让您很好地理解什么是句子嵌入以及如何使用它们。这是该系列的第一部分。还需要学习什么?向量数据库的作用如何将嵌入用于更复杂的排名系统主题建模Multimodality 多模态如何训练自己的嵌入模型关于 RAG 的所有信息每个人都会有一个时间!现在,我建议休息一下,检查一下你的知识。

2024-04-26 08:52:59 6968 2

原创 异步 IO 基础原理:select, poll, epoll

当谈论 IO(以及大多数情况下一般的异步编程)时,异步意味着我们不会阻塞等待 IO 完成的线程。因此,如果用户从操作系统请求一些 IO,并且操作系统执行 IO 而不返回,然后在完成后返回结果,即同步(也称为阻塞)IO。使用异步 IO,用户请求 IO,然后可以继续处理其他事情,当 IO 完成时,获取结果。// Synchronous 同步// Async 异步注意,我们仅讨论单个用户线程。我们总是可以通过使用多个线程来使事情异步,但这并不是大多数人在谈论异步 IO 或异步编程时的意思。

2024-04-25 13:42:26 1497

原创 Traits: Rust 中的统一概念

抽象类是不能直接实例化的,你必须扩展它来填充缺少的方法。在 Rust 中,这看起来像是具有默认实现的trait。println!("{}", s);Logger现在提供err的默认实现,因此不必这样做。仍然可以提供它自己的实现,这将覆盖trait默认值。

2024-04-24 14:46:54 897 1

原创 我希望学习 Rust 时知道的三件事

当您导入trait时,方法将出现在您的对象上。如果您有。

2024-04-23 14:43:38 557

原创 Rust异步编程简介

下面的问题是,我们作为开发人员希望使用漂亮的。

2024-04-22 13:36:21 1389

原创 epoll简介

您使用来获取这篇博文。对于您在 Internet 上执行的几乎所有操作,服务器都将运行 Linux,并且它将使用epoll及时且经济实惠地接收和回复您的请求。以上所有内容都适用于许多操作系统,并且支持除epoll以外的 API,这是 Linux 特有的。互联网主要由 Linux 组成,因此 epoll 是重要的 API。

2024-04-19 11:14:13 732

原创 写一个编译器非常简单(第 2 部分)

我认为这源于这样一个事实,即互联网上流传的许多常见建议都是为了编写优化编译器,所以我会听到诸如“static single-assignment”、“control flow graphs”、“phi-nodes”之类的东西’之类的,然后迷失在试图接受这一切的过程中。另外,我们已经看到,即使是非常幼稚的编译器,也比“快速”解释器快得多(尽管我认识到这里使用的“快速”是松散的)。(就像 C 语言一样!其次,我们依赖计算表达式的代码来更新标志寄存器,但它可能不会这样做(例如,读取变量,我们将其编译为单个。

2024-04-18 13:36:25 1007

原创 转:Learn Rust the Dangerous Way-系列文章翻译-总述

最近发现了一个学习Rust的优秀系列文章,本人准备对该系列文章进行翻译。本文是《Learn Rust the Dangerous Way》系列文章翻译的第一篇。

2024-04-18 11:15:08 674

原创 写一个编译器非常简单(第 1 部分)

是的,不是使用与变量名称相对应的字符串,而是使用表示该变量在内存中的位置的索引。在这篇博客中,我打算向十几岁的自己展示如何编写一个代码生成器,事实上,一点也不复杂,它可以在几个周末内完全完成。不幸的是,当正确的项在中间步骤中也在’ %rcx '中存储一些东西时,这将不起作用。然后,为了能够运行它,我们只需添加一些程序集,该程序集将接受两个参数并将它们存储在堆栈槽 0 和 1 中,并在执行代码后返回。在更完整的编译器中,前面的步骤将负责为每个声明的变量分配栈槽,并将变量名称转换为栈槽。

2024-04-15 13:31:54 1634

计算机组成原理计算机组成原理

计算机组成原理计算机组成原理计算机组成原理计算机组成原理计算机组成原理

2008-11-19

freebsd安装图解

freebsd安装图解freebsd安装图解freebsd安装图解

2009-07-02

c sharp 数据结构的实现

c#数据结构c#数据结构c#数据结构 c#数据结构

2009-07-02

centos8.3安装rlwrap解决方向键乱码

centos8.3安装rlwrap解决方向键乱码

2023-11-23

Eclipse调试Bug的七种常用技巧

Eclipse调试Bug的七种常用技巧 Eclipse调试Bug的七种常用技巧

2011-02-23

windows 下 redis7 可运行文件

windows 下 redis7 可运行文件

2022-06-23

Hands-On Machine Learning with Scikit-Learn and TensorFlow 影印版pdf

Machine Learning TensorFlow 影印版 pdf Machine Learning TensorFlow 影印版 pdf Machine Learning TensorFlow 影印版 pdf

2017-12-28

编程语言实现模式 源码

编程语言实现模式 源码

2015-04-19

tomcat中文版

tomcat中文版提供中文文档

2007-04-14

带checkbox的下拉列表 很好看

带checkbox的下拉列表 很好看带checkbox的下拉列表 很好看

2010-05-08

tomcat6编译后源码2 共4个

tomcat6编译后源码2 共4个tomcat6编译后源码2 共4个

2010-04-29

tomcat6编译后源码1 共4个

tomcat6编译后源码 解压后直接导入工程可运行

2010-04-29

tomcat6编译后源码4 共4个

tomcat6编译后源码4 共4个tomcat6编译后源码4 共4个tomcat6编译后源码4 共4个

2010-04-29

PostgreSQL 9从零开始学

PostgreSQL 9从零开始学

2015-02-04

IK Analyzer 2012FF_hf1.zip

IK Analyzer 2012FF_hf1.zip lucene4.0 / solr 4.0

2016-03-03

水晶报表 教程

水晶报表 教程 水晶报表 教程 水晶报表 教程 水晶报表 教程 水晶报表 教程

2008-08-21

水晶报表教程水晶报表教程

水晶报表教程水晶报表教程水晶报表教程水晶报表教程水晶报表教程

2008-11-19

Linux编程.pdf

Linux编程.pdfLinux编程.pdfLinux编程.pdf

2008-11-27

makefile中文文档

makefile中文文档,翻译的挺好的 makefile中文文档,翻译的挺好的 makefile中文文档,翻译的挺好的

2009-07-02

javascript动态树

挺好用的挺好用的挺好用的挺好用的挺好用的

2007-12-04

Microsoft SQL Server 2005 JDBC Driver

Microsoft SQL Server 2005 JDBC Driver

2007-04-14

tomcat6编译后源码3 共4个

tomcat6编译后源码3 共4个tomcat6编译后源码3 共4个

2010-04-29

wintc191_c语言简易开发工具

wintc191_c语言简易开发工具wintc191_c语言简易开发工具

2008-11-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除