- 博客(237)
- 资源 (31)
- 收藏
- 关注

原创 面向对象的思考
1. 封装(package) 1.1 概念 与 意义 到底是为了安全 还是为了对用户友好? 1.2 封装是指打包功能 把实现的细节隐藏在接口之后并不代表必须有强制的私有性 先保护好自己再让别人利用 ,让能看到的看到,不能看到的就隐藏 private protected,package,public 1.3 封装的层次和粒度: 平级封装 mvc , 层次封装(应该严格划分每层的责任和义务,不能违背这个原则) ......
2021-09-10 08:50:45
184
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
1069
原创 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
1389
2
原创 Postgres 如何使事务原子化?
原子性(“ACID”意义上的)要求 对于对数据库执行的一系列操作,要么一起提交,要么全部回滚;不允许中间状态。对于现实世界的混乱的代码来说,这是天赐之物。这些更改将被恢复,而不是导致生产环境中的错误更改数据,然后使其永久损坏。在处理数百万个请求时,由于间歇性问题和其他意外状态而中途断开的长尾连接可能会造成不便,但不会扰乱您的数据。Postgres 的实现尤其以很少的开销提供强大的事务语义而闻名。虽然我已经使用它很多年了,但我从来没有理解过它。
2024-12-03 16:56:14
1092
原创 Postgres VACUUM 和 Xmin Horizon
在工作中需要了解 Postgres 中称为“xmin Horizon”的概念,所以留下了一份学习记录。xmin 地平线 也称为 最旧的 xmin,它告诉我们 “vacuum 进程时间点(就事务而言)”。换句话说,VACUUM 无法清除此 xmin 范围之后( 即大于xmin)的死元组。当您看到类似“1165 are dead but not still moving”的日志时,这意味着,因为它们位于 xmin 范围之后。
2024-11-26 11:22:21
961
原创 The Internals of PostgreSQL 翻译版 持续更新...
PostgreSQL 是一个设计良好的开源多用途关系数据库系统,在全球范围内得到广泛使用。
2024-11-13 17:15:35
695
转载 ImageJ: stretchHistogram与均衡化
这意味着,在直方图中有峰值的地方–在某个范围内的数值集中–这些峰值被扩展到更宽的范围,以使峰值变平,而在直方图中有凹槽的地方,这些峰值被映射到更窄的范围,从而使槽被平平。柱状图的映射曲线是由累积分布导出的(假设每个直方图条都是以前所有值的总和),理论上可以得到一个完全平坦的直方图。然而,由于我们(通常)处理的是像素强度的离散值,直方图均衡化给出了像上面所示的平面直方图的近似值。的图像,因此所有像素强度集中在一个比8位灰度图像的0到255范围更小的范围内。因此,图像中最暗的像素可以是84,最亮的是153。
2024-10-12 08:42:31
179
原创 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
1452
原创 UUID 的 8 个版本以及何时使用它们
通常,当我们有多个编号版本时,数字越大越新,并且被认为越好。相比之下,有 8 个 UUID 版本(v1 到 v8),它们各不相同,并且全部在中定义。在这里,我将提供一些关于它们的高层次解释,并链接到 RFC ,以防您需要更多详细信息。
2024-08-26 09:05:20
1266
原创 为什么要区分堆和栈?为什么要装箱?
堆上内存则是从低位地址向上增长,堆内存通常只受物理内存限制,而且通常是不连续的,一般由程序员手动申请和释放的,如果想申请一块连续内存,则操作系统需要在堆中查找一块未使用的满足大小的连续内存空间,故其效率比栈要低很多,尤其是堆上如果有大量不连续内存时。栈内存从高位地址向下增长,且栈内存分配是连续的,一般操作系统对栈内存大小是有限制的,编译器自动分配和回收 无需程序员手动干预,因而栈内存申请和释放是非常高效的。Rust 默认使用栈来存储变量,而。程序中为什么要区分堆和栈?为什么还要这么做呢?
2024-08-20 11:27:37
348
原创 如何创建包含全部模块的jre?
今天在发布springboot 3.2.3 程序的时候 使用了之前导出的jre。找了好几个小时也没弄清楚少哪个模块,然后。结果程序莫名其妙的报反射错误,生成后jre 大小不到 90M。
2024-07-31 15:50:28
300
转载 转载:C#与C/C++的交互
我们知道在大多数的静态语言中定义变量的时候都要先指定其数据类型,所谓数据类型,都是人们强加的一个便于记忆的名称,究其本质就是指明了这个数据在内存里到底是占用了几个字节,程序在运行的时候,首先找到这个数据的地址,然后再按着该类型的长度,读取相对应的内存,然后再处理。前面说明的都是简单数据类型的及其指针的传递,利用PInvoke我们也可以实现函数指针的传递,C#中并没有函数指针的概念,但是可以使用委托(delegate)来代替函数指针,关于C#中委托的说明,可以参考笔者前面的一个文章:《C#委托及事件》
2024-07-17 09:10:28
116
原创 如何在PostgreSQL正确的 使用UUID 作为主键
UUID 经常用作数据库表主键。它们易于生成,易于在分布式系统之间共享并保证唯一性。考虑到 UUID 的大小,这是否是一个正确的选择值得怀疑,但通常这不是由我们决定的。本文的重点不是“UUID 是否是主键的正确格式”,而是如何有效地使用 UUID 作为 PostgreSQL 的主键。
2024-07-12 09:29:22
1930
原创 “魔数“是怎样工作的?
合同里有成章成章的技术细节,包括场地的承重要求,各类出入口的宽度,电源要求,以至于插座的数量和插座之间的间隔。这一条款长期被媒体用来作为摇滚乐队耍大牌的典型例子,有传言指某次由于主唱在后台发现了棕色M&M豆,大发其飙地砸了后台,造成损失高达八万五千美元(当时是八十年代,八万五千还是不少钱)。在一个较早的版本,UNIX的可执行文件格式最开头包含一条PDP-11平台上的跳转指令,使得在PDP-11硬件平台上能够正常运行,而在其他平台上,这条指令就是“魔数”(magic number),只能用作文件类型的标识。
2024-04-30 17:13:20
465
原创 *为什么Rust Async/await 设计成这样 ?
Rust 中的 Async/await 语法最初发布时引起了热烈的关注和兴奋。引用当时的这将打开防洪闸门。我相信很多人都在等待 Rust 采用的这一刻。我肯定是在这艘船上的。此外,它还具有所有优点:开源、高质量工程、开放设计、复杂软件的大量贡献者。真正鼓舞人心!最近,人们的反应有点复杂。再次引用上的评论,讨论最近关于该主题的博客文章:我真的无法理解为什么有人会看到 Rust 的异步混乱,并认为对于一种已经以编写起来非常复杂而闻名的语言来说,这是一个很好的设计。
2024-04-30 16:03:21
1239
原创 关于句子嵌入Sentence Embeddings 你想知道的一切(也许更多)
多么美妙的旅程啊!我们只是将句子嵌入从 0 变为 1。我们了解了它们是什么、如何计算它们、如何比较它们以及如何缩放它们。我们还看到了嵌入的一些很酷的应用,例如语义搜索和释义挖掘。我希望这篇博文能让您很好地理解什么是句子嵌入以及如何使用它们。这是该系列的第一部分。还需要学习什么?向量数据库的作用如何将嵌入用于更复杂的排名系统主题建模Multimodality 多模态如何训练自己的嵌入模型关于 RAG 的所有信息每个人都会有一个时间!现在,我建议休息一下,检查一下你的知识。
2024-04-26 08:52:59
4901
2
原创 异步 IO 基础原理:select, poll, epoll
当谈论 IO(以及大多数情况下一般的异步编程)时,异步意味着我们不会阻塞等待 IO 完成的线程。因此,如果用户从操作系统请求一些 IO,并且操作系统执行 IO 而不返回,然后在完成后返回结果,即同步(也称为阻塞)IO。使用异步 IO,用户请求 IO,然后可以继续处理其他事情,当 IO 完成时,获取结果。// Synchronous 同步// Async 异步注意,我们仅讨论单个用户线程。我们总是可以通过使用多个线程来使事情异步,但这并不是大多数人在谈论异步 IO 或异步编程时的意思。
2024-04-25 13:42:26
1344
原创 Traits: Rust 中的统一概念
抽象类是不能直接实例化的,你必须扩展它来填充缺少的方法。在 Rust 中,这看起来像是具有默认实现的trait。println!("{}", s);Logger现在提供err的默认实现,因此不必这样做。仍然可以提供它自己的实现,这将覆盖trait默认值。
2024-04-24 14:46:54
803
1
原创 epoll简介
您使用来获取这篇博文。对于您在 Internet 上执行的几乎所有操作,服务器都将运行 Linux,并且它将使用epoll及时且经济实惠地接收和回复您的请求。以上所有内容都适用于许多操作系统,并且支持除epoll以外的 API,这是 Linux 特有的。互联网主要由 Linux 组成,因此 epoll 是重要的 API。
2024-04-19 11:14:13
690
原创 写一个编译器非常简单(第 2 部分)
我认为这源于这样一个事实,即互联网上流传的许多常见建议都是为了编写优化编译器,所以我会听到诸如“static single-assignment”、“control flow graphs”、“phi-nodes”之类的东西’之类的,然后迷失在试图接受这一切的过程中。另外,我们已经看到,即使是非常幼稚的编译器,也比“快速”解释器快得多(尽管我认识到这里使用的“快速”是松散的)。(就像 C 语言一样!其次,我们依赖计算表达式的代码来更新标志寄存器,但它可能不会这样做(例如,读取变量,我们将其编译为单个。
2024-04-18 13:36:25
959
原创 转:Learn Rust the Dangerous Way-系列文章翻译-总述
最近发现了一个学习Rust的优秀系列文章,本人准备对该系列文章进行翻译。本文是《Learn Rust the Dangerous Way》系列文章翻译的第一篇。
2024-04-18 11:15:08
623
原创 写一个编译器非常简单(第 1 部分)
是的,不是使用与变量名称相对应的字符串,而是使用表示该变量在内存中的位置的索引。在这篇博客中,我打算向十几岁的自己展示如何编写一个代码生成器,事实上,一点也不复杂,它可以在几个周末内完全完成。不幸的是,当正确的项在中间步骤中也在’ %rcx '中存储一些东西时,这将不起作用。然后,为了能够运行它,我们只需添加一些程序集,该程序集将接受两个参数并将它们存储在堆栈槽 0 和 1 中,并在执行代码后返回。在更完整的编译器中,前面的步骤将负责为每个声明的变量分配栈槽,并将变量名称转换为栈槽。
2024-04-15 13:31:54
1220
原创 用程序表示程序非常简单
让我们从一个简单的例子开始:一种带有变量、数字和加法的语言。请注意,该语言没有语句,只有计算结果为简单值的表达式。这意味着我们将能够表示01+1x+y甚至a+(b+1)等表达式。我们将为每种类型的表达式使用不同的数据类型。这些数据类型需要存储足够的信息来编码表达式的行为,而不是完整的文本表示。也就是说,我们将仅存储执行此代码所需的信息,但不足以重建相应的字符串。这是一个设计决定。如果您正在编写代码格式化程序,您还需要存储此类信息!让我们从整数 字面值 开始。我们需要什么样的信息?yes。
2024-04-12 11:05:02
709
原创 前后端通信技术比较:WebSockets、Server-Sent-Events、长轮询、WebRTC、WebTransport
长轮询是第一个启用服务器-客户端消息传递方法的“hack”,该方法可以通过 HTTP 在浏览器中使用。该技术通过正常的 XHR 请求模拟服务器推送通信。与传统轮询(客户端定期从服务器重复请求数据)不同,长轮询会建立与服务器的连接,该连接在新数据可用之前保持打开状态。一旦服务器有新的信息,它就会向客户端发送响应,并关闭连接。客户端收到服务器的响应后立即发起新的请求,如此循环往复。此方法允许更即时的数据更新并减少不必要的网络流量和服务器负载。
2024-04-11 13:48:44
1385
原创 起飞了 ! 使用 DuckDB 的处理11 亿出租车出行数据
如果您想知道为什么我不运行基于 Linux 的桌面作为我的主要工作环境,我仍在使用 Nvidia GTX 1080 GPU,它在 Windows 上有更好的驱动程序支持,并且我时不时地使用 ArcGIS Pro仅原生支持 Windows。SSD 的写入速度为 50-150 MB/s,读取速度通常为 5-10 MB/s,而 CPU 几乎处于空闲状态,为 5-10%。因此,我将在更快的驱动器上运行基准测试,但我将在更便宜的驱动器上构建 Parquet 文件。它不依赖于自己的服务器,而是用作客户端。
2024-04-03 11:21:16
5408
原创 升级到 Java 21 是值得的
又到了一年中的这个时候——New Relic 的年度“”调查结果出来了,我一如既往地深入研究了它。虽然我认为该报告做得很好并且提出了很好的问题,但我对有多少 Java 开发人员正在使用低版本感到沮丧。
2024-04-02 11:36:05
1085
原创 Rust 编写 WASM 入门
Rust 与 WASM 具有很好的互操作性,没有理由不利用这一点来帮助我们使用其他语言。原文地址:Writing & Compiling WASM in Rust。
2024-04-01 10:37:00
2571
2
原创 深度学习中的优化问题
我在 2019 年底左右开始撰写有关数学和机器学习的文章;从那时起,我写了数百篇教育文章,揭示了我们日常使用的算法背后的细节。让写文章的人 感到尴尬的一个方法是:让他们阅读他们早期的作品。我也不例外。距离 2019 年已经过去了很长一段时间。(尽管我的写作速度仍然缓慢。尽管如此,还是有几篇早期的文章让我感到自豪。我捕捉到直觉和精确度之间最佳平衡点的帖子。最近,我一直致力于重新制作其中最好的部分。这是第一个,我们从零开始优化百万变量的函数。让我们开始吧!这是一个复杂的问题,因为性能取决于多个因素。
2024-03-28 11:32:18
944
1
原创 大数定律中的大数是多大?
大数!=大的数字。100 算大吗?这取决于我们是否将其与 0.001 或 100000 进行比较?就像生活中的很多事情一样,“大”这个词是相对的。在这篇文章中,我们解释了“大”有多大,并证明了为什么您对 LLN 的理解(可能)是错误的。
2024-03-27 11:10:38
1599
原创 如何在PostgreSQL 跟踪数据变更?
PostgreSQL 是最受欢迎的数据库之一,被 DB-Engines Ranking 评为 2023 年度 DBMS,并且根据 HN Hiring Trends 的数据,PostgreSQL 在初创公司中的使用率超过任何其他数据库。PostgreSQL 是初创公司中最流行的数据库。自 2011 年以来,SQL 标准就包含了与相关的功能,这些功能允许存储随时间变化的数据,而不仅仅是当前的数据状态。然而,关系数据库并不完全遵循标准。
2024-03-26 10:44:23
1244
原创 Java 变得越来越像 Rust
随着编程的增强和复杂性越来越流行,许多编程语言也相互效仿。Java 也不例外。尽管社区内部存在问题,Rust 仍逐年赢得了开发人员的喜爱。并且有充分的理由:由于编译器,Rust 使开发人员能够避免整个类别的问题。编译器要求正确性,以至于一些开发人员开始遇到一些不安全感。我想展示 Rust 的两个特性,这些特性是 Rust 优秀的一部分,然后将它们与 Java 的最新创新进行比较。免责声明:我绝不声称这些 Rust 功能导致其对应功能出现在 Java 中。
2024-03-25 10:58:41
369
原创 Rust web开发 ActixWeb 入门
目前,Actix Web 仍然是 Rust Web 后端生态系统中极其强大的竞争对手。尽管之前的事件可能对其产生影响,但它仍然很强大,并且是 Rust 中最受推荐的 Web 框架之一。最初基于同名的 actor 框架 (actix),后来它已经消失,并且actix现在仅用于 websocket 端点。本文将主要讨论 v4.4。
2024-03-22 09:49:50
2871
1
原创 Rust 中使用原生 SQL 与 SQLx
当谈到使用 SQL 时,Rust 生态系统让我们有太多的选择。SQLx 是一个纯粹的异步、与运行时无关的 Rust SQL 包,它允许您在没有 DSL 的情况下使用编译时类型检查的查询。让我们看看 SQLx 的实际应用!
2024-03-21 13:42:02
2731
1
原创 如何用 Rust Reqwest 写一个Web 爬虫?
您是否曾考虑过建立自己的 潜在业务数据库,用于潜在客户开发或产品价格数据,以便您可以毫不费力地以最便宜的价格获得产品?网络爬虫可以让您无需亲自执行任何手动工作即可做到这一点。Rust通过允许显式地处理错误和并发地运行任务,让您可以做一些事情,比如将web服务 路由 到爬虫 或输出数据的Discord bot。
2024-03-20 09:43:09
928
1
Hands-On Machine Learning with Scikit-Learn and TensorFlow 影印版pdf
2017-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人