- 博客(332)
- 资源 (17)
- 收藏
- 关注

原创 10-leveldb repair流程及优化方法
leveldb做为一个单机存储引擎,难免遇到数据损坏的情况:比如意外断电、磁盘坏块等。轻者文件损坏无法读取,严重者则导致数据库无法启动。这个时候就需要进行数据修复了。leveldb提供的修复流程如下:(1) wal日志文件转化为sstable文件(2) 扫描所有的sstable文件(3) 生成MANIFEST文件:由上述流程可知,leveldb修复后会将所有的文件添加到level 0,根据level 0层的规则,由于文件之间key有重叠,读取时会在每个文件都读取一次,速度是很慢的;同时,我们知道Lev
2022-06-13 11:45:00
1296
2

原创 09-leveldb性能优化(三)
本文主要讲述如何设置WriteOptions参数、ReadOptions参数以及compact参数,来提升读写性能。
2022-06-01 22:13:18
915

原创 08-leveldb性能优化(二)
本文主要介绍leveldb写缓冲区大小、块缓存大小、块大小、文件大小等参数的原理,以及如何合理地设置这些参数以达到性能优化的目的。
2022-05-30 12:30:00
2053

原创 07-leveldb性能优化(一)
1-Compaction:清除冗余数据,减少磁盘IOCompaction为什么能提升查询性能,我们从leveldb的原理说起。如图所示,数据写入leveldb的过程如下:数据写入MemtableMemtable达到一定大小后变为Immutable MemtableImmutable Memtable通过Minor Compaction写入0层SSTable数据读取流程如下:从Memtable中查询;从Immutable Memtable中查询;遍历level 0所有文件,若未查找到
2022-05-18 22:01:43
1483

原创 06-Leveldb实现-sstable
本文主要介绍leveldb中sstable文件的组成及格式,数据块、元数据块、元数据索引块、索引块、footer的结构,并结合源码进行分析。
2022-05-14 20:53:26
336

原创 05-Leveldb实现-Memtable
Memtableleveldb数据写入时并非直接落盘,而是先保存在内存中,在内存中的数据按key进行排序。当内存中的数据达到一定大小时,再将这批数据批量写入磁盘。在内存中的数据结构我们称之为Memtable,本节将介绍Memtable的实现。先看代码:class MemTable { public: // MemTables are reference counted. The initial reference count // is zero and the caller must c
2022-05-08 22:13:10
815

原创 04-Leveldb实现-Log
日志文件包含了一系列的32K大小的块。每个块包含了一系列的记录(record):block := record* trailer?record := checksum: uint32 // crc32c of type and data[] ; little-endian length: uint16 // little-endian type: uint8 // One of FULL, FIRST, MIDDLE, LAST data: uint
2022-04-24 12:00:00
585

原创 03-Leveldb原理
01-简介谷歌曾经发布过三篇大名鼎鼎的论文,《GFS-Google FileSystem》、《BigTable》、《MapReduce》,其中BigTable中描述了分布式数据库的实现,而leveldb正是该论文中所描述的tablet的具体实现。同时,leveldb的作者就是《BigTable》论文的作者。leveldb是一个非常简洁且具有代表意义的基于LSM TREE的存储引擎,堪称经典。掌握了LEVELDB,也就掌握了LSM TREE思想的精髓。leveldb存储引擎的原理框架如下图所示:上图简
2022-04-17 08:38:13
727

原创 02-leveldb入门
01-leveldb编译和使用在github下载开源代码:git clone --recurse-submodules https://github.com/google/leveldb.git进入项目根目录,执行以下命令:mkdir -p build && cd buildcmake -DCMAKE_BUILD_TYPE=Release … && cmake --build .以上命令运行之后会编译全部代码包括测试程序,windows下编译生成文件在leveldb
2022-03-20 19:27:48
1645

原创 01-leveldb概述
01-存储背景数据存储是信息时代的一项基础技术,是各种互联网应用背后的重要基石。例如我们每天用到的各种APP,看头条,刷抖音,以及个人的各种电子数据的保存等等,都离不开存储技术。在开发者的角度,数据存储大多是使用数据库,而大家广泛使用的又是比较成熟的关系型数据库,例如mysql、oracle、db2、sqlserver等。一直以来,关系型数据库得到大家的青睐。但随着互联网和信息技术的发展,以及各种新的应用场景的需求,各种数据库不断涌现,也出现了新的数据库类型,比如kv数据库、文档数据库、图数据库、时序数
2022-03-13 19:07:24
1947

原创 椭圆曲线密码原理
椭圆曲线密码概述⾃从公钥加密被发明之后,⼀些合适的数学函数被提出,譬如:素数幂和椭圆曲线乘法。这些数学函数都是不可逆的,就是说很容易向⼀个⽅向计算,但不可以向相反⽅向倒推。基于这些数学函数的密码学,使得⽣成数字密钥和不可伪造的数字签名成为可能。⽐特币正是使⽤椭圆曲线乘法作为其公钥加密的基础算法。 在⽐特币系统中,我们⽤公钥加密创建⼀个密钥对,⽤于控制⽐特币的获取。密钥对包括⼀个私钥,和由...
2018-04-03 11:25:14
4940

原创 公钥密码体制RSA算法原理
RSA概述假如你已经了解了对称密码体制,你肯定知道对称密码中存在着密钥分发和管理的难题。为了解决这一问题,Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm)。这个机制的巧妙在于需要安全通信的双方可以用这个方...
2018-04-03 10:22:47
9926
1

转载 用Python从零开始创建区块链
原文地址:https://learnblockchain.cn/2017/10/27/build_blockchain_by_python/ 本文通过python编程实现了区块链的一个原型,通过代码可以形象地理解区块链的工作原理,具体细节请看原文。代码地址:https://github.com/anda0109/pyblockchain 下面是完整代码:import hashlibi...
2018-03-14 17:10:49
723

原创 Ubuntu搭建以太坊开发环境—使用truffle框架
环境ubuntu-14.04 ubuntu-14.04-desktop-amd64.iso ,不多解释。 nodejs用来安装truffle等工具truffle ,目前最好用的以太坊开发框架 ganache ,可以跑开发环境下的私有区块链步骤1、前提是ubuntu已经可以正常使用,包括上网。 2、下载nodejs,按经验apt-get安装的nodejs不可用,估计apt...
2018-03-09 10:33:09
2231

转载 Windows下编译bitcoin
编译windows版的比特币程序,基本上有两种方法,一种是在linux平台(推荐ubuntu 13.10)通过交叉编译的方法来编译,另外一种就是直接在windows平台编译。第一步:安装变编译环境QT和MINGW,msys1、msys是一个在windows平台模拟shell的程序。访问http://sourceforge.net/projects/mingw/files/Install...
2018-03-06 14:55:46
1644

原创 Ubuntu下编译windows版本bitcoin
要编译windows版的比特币程序,基本上有两种方法,一种是在linux平台(推荐ubuntu 13.10)通过交叉编译的方法来编译,另外一种就是直接在windows平台编译。下面就详细介绍一下如何在Ubuntu平台编译比特币程序。官方参考:https://github.com/bitcoin/bitcoin/blob/master/doc/build-windows.mdUbun...
2018-03-06 14:54:53
1529

原创 centos7环境下编译bitcoin
centos7虚拟机安装虚拟机安装完成后需要配置好网络,能连接上互联网后再进行后面操作。vi /etc/sysconfig/network-scripts/ifcfg-ens33 (ens33为网卡名称)TYPE=EthernetBOOTPROTO=static #启用静态IP地址DEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_F...
2018-03-06 09:51:36
1868
原创 一个例子看LLM的工具调用流程
前面在我们使用langchain等框架做多工具调用的时候,我们不清楚具体的交互流程。LLM的推理过程是怎么样的,是一次做完规划还是逐个调用工具。我们今天直接使用openai的接口,用原始的写法来看它具体执行的过程是怎样的。
2025-05-12 14:29:37
190
原创 10-小米开源的MINO模型,到底什么水平。
总的来说,MiMo-7B如果是6个月前发,可能算得上推理模型的顶流。今天发,应该不会引起太多关注。对于我们普通的推理模型使用者,也不用关注这个模型。Deepseek-R1、Qwen3系列4b以上模型,任一个性能都比它要好。他的价值在于将探索过程公开,使用推理数据做预训练,使基础模型天然具备推理潜力,同时在强化学习奖励机制和性能方面做了一系列优化。为开源社区提供见解和思路,也是一种贡献。深度探索AI应用。
2025-05-01 09:49:52
653
原创 09-Qwen3开源,性能全面碾压deepseek,本地部署实测来了
对于阿里新开源的模型Qwen3,用相对少的参数获得了更高的性能,将会进一步降低模型的使用成本。这将进一步促进大模型应用的发展。同时,思考和非思考模式合二为一,不管对于使用体验还是部署成本也是一个重大的进步。还有,工具调用支持能力,对于Agent极其重要。虽然在我的测试中存在瑕疵,相信官方版本中会解决这个问题。好了,Qwen3的分享就到这里。今天的Qwen3力压deepseek,同样期待明天deepseek-R2的再次超越。深度探索AI应用。
2025-04-30 09:04:36
1084
原创 08-5分钟用langchain实现一个能查天气的Agent
Agent可以经过反复调研为我们出股票分析报告,可以根据我们的需求和预算帮我们制定旅游计划,甚至可以根据我们的需求帮我们写一个网站。它不再是简单的只能对话的“玩具”,而是可以规划和执行的帮手。也就是具有了Resoning + Action的能力。能根据模型的推理和规划,来调用工具,完成复杂任务,这就是对Agent最基本的理解。重点是根据模型的推理和规划来调用工具,而不是人为硬编码固定流程来调用工具,后者我们一般称为workflow。
2025-04-28 14:46:51
973
原创 07-轻松实现文字转语音 - Coqui TTS部署实践
Coqui TTS是一个开源的文本转语音(TTS)工具包,旨在提供高质量、灵活且易于使用的语音合成解决方案。它由 Mozilla 的 TTS 项目发展而来,并在社区的支持下不断改进和扩展。Coqui TTS 支持多种语言、模型架构和声码器,适用于从研究到生产的各种场景。
2025-04-18 11:10:29
948
原创 06-A2A协议:解锁多Agent协作的无限可能
功能发现:Agent可以使用 JSON 格式的“Agent card”公布其功能,从而允许客户端Agent确定可以执行任务的最佳Agent,并利用 A2A 与远程Agent进行通信。简单来说,A2A协议是由谷歌发起的,用于Agent之间协作的一个协议标准,旨在构建Agent之间协作的生态,推动Agent协作标准,以帮助人类完成复杂的任务。这种协作努力标志着一个共同的未来愿景,即 AI Agent,无论其底层技术如何,都可以无缝协作以自动化复杂的企业工作流程,并推动前所未有的效率和创新水平。
2025-04-17 21:42:32
744
原创 05-一文读懂MCP:连接AI模型与外部世界的桥梁
MCP由Anthropic于2024年11月底推出,目的是解决大语言模型与外部环境交互时的连接问题。它通过建立一种安全、双向的链接,使得大模型能够以一致的方式访问外部资源,同时确保数据的安全性和可控性。MCP(Model Context Protocol,模型上下文协议)是一种开放标准协议,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信方式。它可以被看作是AI应用程序的“USB-C接口”,为大模型提供了一种标准化的方法来连接不同的数据源、工具和服务。
2025-04-14 14:22:47
1061
原创 13-Leveldb快照原理及其实现
LevelDB 的快照(Snapshot)机制在实现一致性读取的同时,对 Compaction 的行为也有一定的影响。为了更好地理解这种影响,我们需要从 LevelDB 的快照机制、Compaction 的原理以及两者之间的交互关系入手。例如,如果某个键在版本 100 被删除,但有一个快照的版本号是 99,那么这个键的旧版本数据必须保留,直到该快照被释放。通过合理的快照管理和参数调优,可以缓解快照对 Compaction 的负面影响,从而在一致性和性能之间取得平衡。:无效数据的存在增加了读取路径上的负担。
2025-04-07 17:55:06
712
原创 12-leveldb优化读性能的方法
LevelDB 是一个高性能的键值存储引擎,其设计目标之一就是优化读性能。为了实现这一目标,LevelDB 在多个方面采用了特定的技术和方法来提高读操作的效率。一、内存中的快速读取:MemTable 和 Immutable MemTable。:Table Cache 和 Block Cache 提高热点数据的访问速度。:利用 MemTable 和 Immutable MemTable。:无锁设计和快照机制提升并发读取能力。:利用操作系统缓存和预读取技术。:减少文件数量和读取范围。:快速排除不存在的键。
2025-04-02 16:10:27
664
原创 11-leveldb compact原理和性能优化
LevelDB 的 Compaction 和垃圾回收机制在保证数据一致性和读写性能的同时,也面临写放大、空间放大等问题。通过调整策略(如分级 Compaction)、并行化、冷热分离等优化手段,可以显著提升性能。实际应用中,需根据工作负载(读/写密集型)和硬件环境(SSD/HDD)选择合适的配置。
2025-04-01 17:38:28
802
原创 04-参数量差20倍!QwQ 32B性能竟超越DeepSeek 671B?性能对比实测
QwQ 是 Qwen 系列的推理模型。与传统的指令调优模型相比,具备思考和推理能力的 QwQ 在下游任务中,尤其是在处理难题时,能够显著提高性能。QwQ-32B 是一个中等规模的推理模型,能够在与最先进的推理模型(例如 DeepSeek-R1、o1-mini)的竞争中取得优异的表现。
2025-03-12 21:48:33
557
原创 03-超简单,小白也能使用deepseek构建本地知识库!
想必大家都听说过用大模型构建知识库,目前大模型对于我们个人来说,最容易落地的就是构建自己的知识库了。虽然有很多的在线应用,如腾讯的ima等,但是有些内容我们并不想公开。而且我们与大模型聊天对话的内容也容易泄露个人隐私。因此,本节我就教大家一个最简单的方法使用deepseek部署本地知识库。
2025-03-09 22:06:00
241
原创 02-简单几步!在Windows上用GPU运行DeepSeek-R1模型
我们在《文章中介绍了如何编译llama.cpp在本地运行deepseek大模型,但是我们编译的版本是不支持GPU的,如果你的电脑有GPU,可以跟随我们今天的文章,一起把GPU利用起来!
2025-03-09 10:22:40
438
原创 GPU编程实战指南03:CUDA开发快速上手示例,GPU性能碾压实测
上一节《GPU编程指南02:CUDA开发快速上手示例》中我们完成了一个使用GPU进行加减乘除四则运算的例子。没有学习的可以先跳转学习这一节,因为它有详细的代码注释,学习完这一篇,你就基本入门了GPU编程。在这个例子中,我们使用GPU进行运算,同时也会用CPU进行运算,然后将两者的结果进行对比,以确保我们代码运行的结果是正确的。既然CPU可以计算,为什么要用GPU呢?因为GPU可以进行并行计算,计算效率高。为了验证这一点,我们将上上节的代码进行完善,分别加入CPU和GPU运算的耗时统计。
2025-03-09 09:29:49
808
原创 GPU编程实战指南02:CUDA开发快速上手示例
这是一个使用CUDA进行GPU并行四则运算的示例程序。程序展示了如何利用GPU的并行计算能力执行大规模的加法、减法、乘法和除法运算,并与CPU计算结果进行对比验证。
2025-03-08 22:06:44
520
原创 GPU编程实战指南01:CUDA编程极简手册
CUDA编程是一个强大的工具,能够显著提升计算密集型应用的性能。理解CUDA的基本原理编写高效的GPU程序解决常见的CUDA编程问题优化CUDA应用性能持续学习和实践是提高CUDA编程技能的关键。建议从简单的示例开始,逐步尝试更复杂的应用场景。
2025-03-08 21:56:27
967
原创 01-简单几步!在Windows上用llama.cpp运行DeepSeek-R1模型
Llama.cpp 是一个开源的、轻量级的项目,旨在实现 Meta 推出的开源大语言模型 Llama 的推理(inference)。Llama 是 Meta 在 2023 年开源的一个 70B 参数的高质量大语言模型,而 llama.cpp 是一个用 C++ 实现的轻量化推理端解决方案,适用于运行和测试 Llama 模型。1.轻量化:llama.cpp 是一个非常轻量级的项目,代码简洁且易于编译,适合快速上手和测试。2.开源:完全开源,代码和模型权重都可以自由获取和使用。
2025-03-08 18:59:47
1059
原创 Haproxy负载均衡部署
Haproxy安装:useradd haproxy#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.25.tar.gz# tar zxvf haproxy-1.4.25.tar.gz# cd haproxy-1.4.25# make TARGET=linux26 PREFIX=/usr/local/haproxy ARCH=...
2018-10-27 16:10:00
596
原创 ZeroMq的编译及使用
ZeroMq是一个开源的消息队列网络框架,支持进程内和进程间的通信。 源码地址:https://github.com/zeromq/libzmqwindows下的编译: 打开build/msvc,打开工程,编译报错,解决方案如下: 1、添加宏 ZMQ_IOTHREAD_POLLER_USE_SELECT ZMQ_POLL_BASED_ON_SELECT 2、编译成功,链接出错 将...
2018-07-31 17:57:34
3645
原创 ubuntu安装C++ oracle开发环境(oci)
1、oracle官网下载rpm包 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 2、安装rpm包 Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。 sudo apt-get install alien #alien默认没有安装,所以首先要...
2018-07-04 10:07:45
1799
转载 设计模式(十一)——模板方法模式(Template Method Pattern,行为型)
https://blog.youkuaiyun.com/k346k346/article/details/60468153
2018-04-12 23:18:39
529
转载 设计模式 (十)——适配器模式(Adapter Pattern,结构型)
https://blog.youkuaiyun.com/k346k346/article/details/60465994
2018-04-12 23:08:52
453
xulrunner-1.9.0.17.en-US.win32.sdk.zip
2015-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人