自定义博客皮肤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的专栏

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

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

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

一些不错的文档

2024-02-23 09:36:16 616

原创 JAVA 新特性

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

2022-06-22 09:32:49 506

原创 面向对象的思考

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

2021-09-10 08:50:45 104

原创 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 900

原创 Traits: Rust 中的统一概念

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

2024-04-24 14:46:54 415

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

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

2024-04-23 14:43:38 269

原创 Rust异步编程简介

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

2024-04-22 13:36:21 843

原创 epoll简介

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

2024-04-19 11:14:13 628

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

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

2024-04-18 13:36:25 870

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

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

2024-04-18 11:15:08 529

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

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

2024-04-15 13:31:54 715

原创 用程序表示程序非常简单

让我们从一个简单的例子开始:一种带有变量、数字和加法的语言。请注意,该语言没有语句,只有计算结果为简单值的表达式。这意味着我们将能够表示01+1x+y甚至a+(b+1)等表达式。我们将为每种类型的表达式使用不同的数据类型。这些数据类型需要存储足够的信息来编码表达式的行为,而不是完整的文本表示。也就是说,我们将仅存储执行此代码所需的信息,但不足以重建相应的字符串。这是一个设计决定。如果您正在编写代码格式化程序,您还需要存储此类信息!让我们从整数 字面值 开始。我们需要什么样的信息?yes。

2024-04-12 11:05:02 653

原创 前后端通信技术比较:WebSockets、Server-Sent-Events、长轮询、WebRTC、WebTransport

长轮询是第一个启用服务器-客户端消息传递方法的“hack”,该方法可以通过 HTTP 在浏览器中使用。该技术通过正常的 XHR 请求模拟服务器推送通信。与传统轮询(客户端定期从服务器重复请求数据)不同,长轮询会建立与服务器的连接,该连接在新数据可用之前保持打开状态。一旦服务器有新的信息,它就会向客户端发送响应,并关闭连接。客户端收到服务器的响应后立即发起新的请求,如此循环往复。此方法允许更即时的数据更新并减少不必要的网络流量和服务器负载。

2024-04-11 13:48:44 621

原创 从 PostgreSQL 15 升级到 16

注意:如果您需要版本14至15的升级步骤,可以在找到。

2024-04-09 08:40:18 317

原创 起飞了 ! 使用 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 698

原创 升级到 Java 21 是值得的

又到了一年中的这个时候——New Relic 的年度“”调查结果出来了,我一如既往地深入研究了它。虽然我认为该报告做得很好并且提出了很好的问题,但我对有多少 Java 开发人员正在使用低版本感到沮丧。

2024-04-02 11:36:05 959

原创 Rust 编写 WASM 入门

Rust 与 WASM 具有很好的互操作性,没有理由不利用这一点来帮助我们使用其他语言。原文地址:Writing & Compiling WASM in Rust。

2024-04-01 10:37:00 1092 1

原创 深度学习中的优化问题

我在 2019 年底左右开始撰写有关数学和机器学习的文章;从那时起,我写了数百篇教育文章,揭示了我们日常使用的算法背后的细节。让写文章的人 感到尴尬的一个方法是:让他们阅读他们早期的作品。我也不例外。距离 2019 年已经过去了很长一段时间。(尽管我的写作速度仍然缓慢。尽管如此,还是有几篇早期的文章让我感到自豪。我捕捉到直觉和精确度之间最佳平衡点的帖子。最近,我一直致力于重新制作其中最好的部分。这是第一个,我们从零开始优化百万变量的函数。让我们开始吧!这是一个复杂的问题,因为性能取决于多个因素。

2024-03-28 11:32:18 724 1

原创 大数定律中的大数是多大?

大数!=大的数字。100 算大吗?这取决于我们是否将其与 0.001 或 100000 进行比较?就像生活中的很多事情一样,“大”这个词是相对的。在这篇文章中,我们解释了“大”有多大,并证明了为什么您对 LLN 的理解(可能)是错误的。

2024-03-27 11:10:38 996

原创 如何在PostgreSQL 跟踪数据变更?

PostgreSQL 是最受欢迎的数据库之一,被 DB-Engines Ranking 评为 2023 年度 DBMS,并且根据 HN Hiring Trends 的数据,PostgreSQL 在初创公司中的使用率超过任何其他数据库。PostgreSQL 是初创公司中最流行的数据库。自 2011 年以来,SQL 标准就包含了与相关的功能,这些功能允许存储随时间变化的数据,而不仅仅是当前的数据状态。然而,关系数据库并不完全遵循标准。

2024-03-26 10:44:23 641

原创 Java 变得越来越像 Rust

随着编程的增强和复杂性越来越流行,许多编程语言也相互效仿。Java 也不例外。尽管社区内部存在问题,Rust 仍逐年赢得了开发人员的喜爱。并且有充分的理由:由于编译器,Rust 使开发人员能够避免整个类别的问题。编译器要求正确性,以至于一些开发人员开始遇到一些不安全感。我想展示 Rust 的两个特性,这些特性是 Rust 优秀的一部分,然后将它们与 Java 的最新创新进行比较。免责声明:我绝不声称这些 Rust 功能导致其对应功能出现在 Java 中。

2024-03-25 10:58:41 309

原创 Rust web开发 ActixWeb 入门

目前,Actix Web 仍然是 Rust Web 后端生态系统中极其强大的竞争对手。尽管之前的事件可能对其产生影响,但它仍然很强大,并且是 Rust 中最受推荐的 Web 框架之一。最初基于同名的 actor 框架 (actix),后来它已经消失,并且actix现在仅用于 websocket 端点。本文将主要讨论 v4.4。

2024-03-22 09:49:50 1234

原创 Rust 中使用原生 SQL 与 SQLx

当谈到使用 SQL 时,Rust 生态系统让我们有太多的选择。SQLx 是一个纯粹的异步、与运行时无关的 Rust SQL 包,它允许您在没有 DSL 的情况下使用编译时类型检查的查询。让我们看看 SQLx 的实际应用!

2024-03-21 13:42:02 1030 1

原创 如何用 Rust Reqwest 写一个Web 爬虫?

您是否曾考虑过建立自己的 潜在业务数据库,用于潜在客户开发或产品价格数据,以便您可以毫不费力地以最便宜的价格获得产品?网络爬虫可以让您无需亲自执行任何手动工作即可做到这一点。Rust通过允许显式地处理错误和并发地运行任务,让您可以做一些事情,比如将web服务 路由 到爬虫 或输出数据的Discord bot。

2024-03-20 09:43:09 629

原创 Rust 错误处理入门和进阶

Error Trait在标准库中定义。它基本上代表了错误值的期望 -中E类型的值。Error Trait针对许多错误实现,并为错误信息提供统一的 API。Error Trait有点需要,要求错误同时实现 Debug 和 Display。虽然实现起来可能很麻烦,但我们稍后会看到一些工具库来实现这一点。在标准库中,VarError(用于读取环境变量)和(用于将字符串切片解析为整数)是不同的错误。当我们与它们交互时,我们需要区分类型,因为它们具有不同的属性和不同的堆栈大小。

2024-03-19 13:37:16 780 2

原创 Rust Web 框架入门和对比

利用 Tokio、Tower 和 Hyper 建立强大的生态系统。很棒的开发者经验。仍处于 0.x 版本,因此可能会发生重大更改。强大、独立的生态系统。通过主要版本保证实现稳定的 API。很棒的文档。丰富的内置功能。不像以前那样积极发展。对于初学者来说仍然是一个不错的选择。Functional approach. 函数式方法。Very expressive. 非常富有表现力。靠近 Tokio、Tower 和 Hyper,拥有强大的生态系统。

2024-03-18 13:40:57 1033

原创 为什么 Rust 中的枚举(enum)很常见很好用? ? ?

将 Rust 作为第二语言学习的人的一个常见的反应往往是,相比于其他任何语言, 枚举(enums) 在Rust中 得到了更好的支持。粗略地浏览一下 Google 搜索“Rust 中的枚举”会在“人们也搜索过”中返回一个结果,询问“为什么 Rust 中的枚举如此好用”。乍一看,这似乎是一个好问题;孤立地讲,枚举是代表 有- 例如:方向(东,南,西,北)或季节(春夏秋冬)。然而,Rust 以此为基础并以其他语言中根本不存在的方式增强枚举。

2024-03-14 11:30:27 753

原创 Rust异步编程 Async Await 入门

要了解什么是异步代码,我们首先来谈谈同步代码。println!println!上述语句按照明确的顺序执行,从上到下一个接一个地执行。” 打印,然后读取并打印Cargo.toml的内容。这种模式在正常操作下非常好 - 但有时代码需要在当前上下文在等待其他内容时暂停 - 这通常称为阻塞。换句话说,当一段代码被阻塞时,它实际上处于暂停状态,等待特定操作完成才能继续。例如,当等待文件系统、网络通信、数据库事务甚至一段时间过去时,就会发生这种情况。在此阻塞状态期间,程序保持空闲状态,无法同时执行其他任务。

2024-03-13 11:34:42 914 1

原创 在 Rust 中使用 Serde 处理json

Rust中的serdecrate用于高效地序列化和反序列化多种格式的数据。它通过提供两个可以使用的traits来实现这一点,这两个traits为和Serialize。作为生态系统中最著名的 crate 之一,它目前支持 20 多种类型的序列化(反序列化)。为了更好地理解serde在底层是如何工作的,我们还可以自定义实现和Serialize。这相当复杂,但现在我们将实现一个简单的。下面是序列化i32where为了能够转换类型,serde内部要求我们使用实现Serializer的类型。

2024-03-12 10:58:25 1235

原创 DuckDB 为什么这么快?

在我们的第二个管道中,我们对sale表进行了两次部分扫描,第一次扫描表的前半部分,第二次扫描表的后半部分。读取一行输入,第一个值保持不变,将输入的第二个和第三个值相加的结果 作为 输出中的第二个值 ,然后写出输出。最后,我谈到了 DuckDB 的并行模型:Morsel-Driven 并行支持跨任意数量核心的高效并行化,同时保持对多核处理的感知,从而有助于 DuckDB 的整体性能和效率。如果没有找到具有特定名称的表,我们会搜索具有该名称的其他实体,例如 Parquet 文件,直接对其执行查询。

2024-03-11 14:27:24 1691

原创 矢量数据库简单介绍:在 Postgres使用 pg_vector

向量是表示文本或图像等非结构化数据的数字数组。例如,让我们将这些句子表示为向量:我们可以采用所有单词并创建具有四个维度(每个术语一个)的所谓“词袋”(BoW)模型:BoW 的问题在于,它们依赖于词频,并且假设每个单词独立于其他单词出现,这是不切实际的假设。这是一个显着的简化,因为在自然语言中,上下文和含义通常在很大程度上取决于词序和词之间的关系。例如,“not good”和“good”在 BoW 模型中被视为相同的两个单词,即使由于“not”的存在而导致它们的含义相反。

2024-03-08 09:47:07 1130

原创 管理 PostgreSQL 中配置参数的各种方法

在这篇博文中,我们探索了四种不同的方法来配置 PostgreSQL 服务器的参数。希望这可以帮助您更好地管理配置参数并排除运行时的故障。*** 参考***Setting parameters 设置参数在 PostgreSQL 中自定义 SQL 函数:探索各种方法Setting parameters 设置参数。

2024-03-07 11:25:15 986

原创 JDK 22 和 JDK 23:到目前为止我们所知道的

Oracle Java 平台组首席架构师Mark以来的第一个非 LTS 版本,现已进入第二个候选版本阶段。主线源代码存储库于 2023 年 12 月中旬(Rampdown 第一阶段)分叉到 JDK,定义了 JDK 22 的功能集。可以解决诸如回归或严重功能问题之类的关键错误,但必须解决这些问题。通过流程获得批准。根据,JDK 22将于2024年3月19日正式发布。最终的 12 个新功能集(以和。其中六 (6) 个新功能属于其中四 (4) 个新功能属于其中一 (1) 个新功能属于。

2024-03-07 08:50:55 1885 2

原创 在 Rust 中实现 TCP : 4. 完成握手

继续看on_packet方法,我们进入了 TCP 三次握手的关键时刻。发送 SYN-ACK 后,服务器在等待客户端的 ACK 时使用此方法。如果收到 确认信息 连接会从状态推进到状态,完成握手并正式打开通信通道。on_packet方法完成了完成三次握手的繁重工作,它检查来自客户端的 ACK 响应。如果正确接收到 ACK,该方法会将连接状态更改为,表示 TCP 连接已建立 并且可以开始数据传输。在接着实现之前,增加一个“write”方法,在on_accept和on_packet中使用。此方法 将。

2024-03-06 10:26:20 1115 1

原创 Rust 中如何解析 JSON?

在本文中,我们将讨论如何在 Rust 中使用 JSON 解析库,以及比较最流行的库及其性能。

2024-03-05 13:45:04 1171

原创 在 Rust 中实现 TCP : 3. TCP连接四元组

到目前为止,已经确保接收到正确的 IPv4 数据包,并且已经实现了一种机制,将传入数据包与其各自的状态相关联,并由唯一的连接四元组作为键。从最初的握手到数据传输和最终的断开,连接的状态都会被仔细跟踪,以保证可靠和有序的数据交换。脚本来启动程序,该脚本将构建并执行二进制文件并为其提供必要的提升网络访问权限,接下来,将使用 Netcat 尝试与应用程序建立 TCP 连接,最后为了可视化,将使用 tshark 通过运行 tshark -I tun0 来监视和捕获 tun0 接口上的数据包。这是我们下一个目标。

2024-03-05 11:48:16 1047

原创 在 Rust 中实现 TCP : 2.解析原始字节

前 2 个字节是 flags ,可以提供有关收到的数据包的更多信息,例如,内核设置的“TUN_PKT_STRIP”,用于向用户空间程序发出信号,表明数据包因缓冲区太小而被截断。现在已经解析了内核在以太网帧前添加的前 4 个字节,剩下的就是 TCP 数据,需要解析它。为了理解 proto 字段的含义,可以查看这张将 ether 类型 映射 到协议的表,可以查到我们解析的 proto 字段的值对应于互联网协议版本 6 (IPv6)。方法读取数据包的前 2 个字节,并获取人类可读的flags 值。

2024-03-04 11:39:28 991

原创 在 Rust 中实现 TCP : 1. 联通内核与用户空间的桥梁

构建自己的 TCP栈是一项极具挑战的任务。通常,当**用户空间**应用程序需要互联网连接时,它们会调用操作系统内核提供的高级 API。这些 API 帮助应用程序 连接网络创建、发送和接收数据,从而消除了直接处理原始数据包的复杂性。这是开发标准应用程序的绝佳选择。

2024-03-01 15:48:58 1127

原创 如何在rust中输出日志:在rust中打印日志的各种方式对比

有许多库可以在 Rust 中输出日志,有时很难选择该使用哪一个。当println!dbg!和eprintln!无法解决问题时,找到一种方便记录日志的方法就很重要,尤其是在生产级应用程序中。本文将帮助您深入了解在 Rust 日志记录方面最适合您的用例的日志 crate。

2024-02-23 13:50:44 1071

原创 Rust Vs Go:从头构建一个web服务

易于学习、快速、适合 Web 服务丰富的内置功能。我们仅使用标准库就做了很多事情。例如,我们不需要添加模板引擎或单独的身份验证库。我们唯一的外部依赖项是Gin和sqlx快速、安全、不断发展的网络服务生态系统内置功能较少。我们必须添加大量依赖项才能获得与 Go 中相同的功能并编写我们自己的小型中间件。最终的处理程序代码没有分散注意力的错误处理,因为我们使用了自己的错误类型和?运算符。这使得代码非常可读,但代价是必须编写额外的适配器逻辑。处理程序很简洁,并且存在自然的关注点分离。

2024-02-18 13:38:10 1622 2

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

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

2023-11-23

windows 下 redis7 可运行文件

windows 下 redis7 可运行文件

2022-06-23

第二版 数学之美

第二版 数学之美 吴军 pdf 清晰 第二版 数学之美 吴军 pdf 清晰

2018-01-30

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

DeepLearning4J.pdf

DeepLearning4J 书 英文版 DeepLearning4J 书 英文版DeepLearning4J 书 英文版 DeepLearning4J 书 英文版 DeepLearning4J 书 英文版

2017-09-15

Hadoop- The Definitive Guide, 4th Edition

Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition Hadoop 4th Edition

2017-09-15

IK Analyzer 2012FF_hf1.zip

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

2016-03-03

编程语言实现模式 源码

编程语言实现模式 源码

2015-04-19

MySQL Cookbook(第2版)中文版

MySQL Cookbook(第2版)中文版

2015-02-04

PostgreSQL 9从零开始学

PostgreSQL 9从零开始学

2015-02-04

Eclipse调试Bug的七种常用技巧

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

2011-02-23

编码:隐匿在计算机软硬件背后的语言 第一版

编码:隐匿在计算机软硬件背后的语言 第一版 编码:隐匿在计算机软硬件背后的语言 第一版

2011-02-23

DWR 教程 DWR 教程

DWR 教程DWR 教程DWR 教程DWR 教程DWR 教程

2010-06-22

带checkbox的下拉列表 很好看

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

2010-05-08

tomcat6编译后源码4 共4个

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

2010-04-29

tomcat6编译后源码3 共4个

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

2010-04-29

tomcat6编译后源码2 共4个

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

2010-04-29

tomcat6编译后源码1 共4个

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

2010-04-29

c sharp 数据结构的实现

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

2009-07-02

freebsd安装图解

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

2009-07-02

makefile中文文档

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

2009-07-02

Linux编程.pdf

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

2008-11-27

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

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

2008-11-19

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

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

2008-11-19

wintc191_c语言简易开发工具

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

2008-11-18

水晶报表 教程

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

2008-08-21

javascript动态树

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

2007-12-04

Microsoft SQL Server 2005 JDBC Driver

Microsoft SQL Server 2005 JDBC Driver

2007-04-14

tomcat中文版

tomcat中文版提供中文文档

2007-04-14

空空如也

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

TA关注的人

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