- 博客(148)
- 资源 (66)
- 收藏
- 关注
原创 centos6安装devtoolset-8
常规升级办法是下载gcc高版本,进行源码编译,但gcc编译起来非常容易报错,而且特别耗资源。在这提供一种方法可以快速的使用高版本gcc。很多场景我们编译C源码,都需要使用gcc4.8及以上版本,比如编译MySQL 8.0、GRPC等,原因是需要支持。其内置版本是gcc4.4。
2024-11-01 14:22:47
592
原创 postgresql14源码编译安装
启用OpenSSL的支持。:这个选项启用了Perl语言的支持。PostgreSQL可以使用Perl编写扩展或触发器等,因此如果需要在数据库中使用Perl,就应该启用这个选项。:这个选项启用了Python语言的支持。与Perl类似,启用这个选项后,PostgreSQL将能够使用Python编写扩展或触发器等。readline:如果想要方便地在psql中使用上下方向键把历史命令找出来,需要安装readline开发包。zlib:默认情况下一般要使用数据库中的压缩功能,需要第三方的zlib压缩开发包支持。
2024-11-01 12:03:38
1382
原创 pg的checkpoint相关参数
是一个关键的配置参数,它用于指定自上次checkpoint之后经过的时间间隔,当超过这个指定的时间后,系统会执行checkpoint操作。
2024-10-16 09:56:59
383
原创 pg_config的作用
最近在源码编译安装pg过程中发现一个问题,编译的插件怎么都不产生lib/postgresql目录。就不会产生lib/postgresql目录了。然后查看makefile源码找到了原因。可以看出如果路径里含有。
2024-10-16 09:56:09
464
原创 pg源码安装一个需要注意的点
最近在源码编译安装pg过程中发现一个问题,编译的插件怎么都不产生lib/postgresql目录。就不会产生lib/postgresql目录了。然后查看makefile源码找到了原因。可以看出如果路径里含有。
2024-10-14 11:01:51
262
原创 pg手工切换日志和检查点
在PostgreSQL中,checkpoint是一个重要的机制,用于确保数据库数据的一致性和快速恢复。它通过将缓冲池中的脏页(即已修改但尚未写入磁盘的数据页)写回到相应的数据文件中,来减少在数据库崩溃或异常关闭时丢失的数据量。执行这些命令后,PostgreSQL会创建一个新的WAL日志文件,并将之前的WAL日志文件进行归档(如果配置了归档的话)。此外,使用pg_ctl工具的-m fast选项也可以达到类似效果。在PostgreSQL 10之前的版本中,可以使用。命令来手动切换WAL日志。
2024-10-11 10:05:59
569
原创 当PG_WAL目录的文件被删除时的处理
当pg_wal目录的文件被删除导致checkpoint损坏时,可以使用postgres用户身份执行pg_resetwal命令,来修复问题并重新启动数据库。环境:pg14.13。
2024-10-10 15:56:17
456
原创 leetcode_015_三数之和解析
首先对数组进行排序,排序后固定一个数 nums[i],再使用左右指针指向 nums[i]后面的两端,数字分别为 nums[L] 和 nums[R],计算三个数的和 sum 判断是否满足为 0,满足则添加进结果集。当 sum == 0 时,nums[L] == nums[L+1] 则会导致结果重复,应该跳过,L++当 sum == 0 时,nums[R] == nums[R−1] 则会导致结果重复,应该跳过,R−−。跳过重复元素:对于i,在遍历过程中,如果当前元素与前一个元素相同,则跳过它。
2024-09-29 10:31:42
488
1
原创 postgresql gcc编译选项解释
sysbench 是一款基于 LuaJIT 的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试。CPU性能测试:通过质数计算或圆周率计算来评估CPU性能。内存性能测试:测试系统的内存分配及传输速度。磁盘IO性能测试:测试系统的磁盘读写速度。调度程序性能测试:评估操作系统的调度程序性能。POSIX线程性能测试:评估系统的线程处理能力。数据库性能测试(OLTP基准测试):通过模拟数据库操作来评估数据库性能,支持 MySQL、Oracle、PostgreSQL 等数据库。
2024-09-20 19:03:26
583
原创 sysbench进行pg测试
sysbench 是一款基于 LuaJIT 的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试。CPU性能测试:通过质数计算或圆周率计算来评估CPU性能。内存性能测试:测试系统的内存分配及传输速度。磁盘IO性能测试:测试系统的磁盘读写速度。调度程序性能测试:评估操作系统的调度程序性能。POSIX线程性能测试:评估系统的线程处理能力。数据库性能测试(OLTP基准测试):通过模拟数据库操作来评估数据库性能,支持 MySQL、Oracle、PostgreSQL 等数据库。
2024-09-20 11:08:43
693
原创 C语言中宏可变参数的使用
如果宏展开的代码块没有被这样的结构包围,那么在宏内部使用。是一个特殊的标识符,用于在宏展开时替换为实际传递的参数列表。这样,宏就可以像函数一样,接受并处理不定数量的参数。宏的可变参数是C语言和C++语言中的一个特性,允许宏定义时接受不定数量的参数,类似于函数中的可变参数列表。while(0)结构可以很好的封装代码,避免宏展开打乱原有代码的结构,比如if等语句。可能会导致编译错误或运行时错误,因为这些控制语句可能会意外地跳出宏外部的代码块。在宏定义中,可变参数通过三个连续的点号(结构中,可以安全地使用。
2024-09-13 16:36:48
651
原创 C语言宏参数的使用
我们定义一个简单的宏,用于计算两个整数的和,并将结果乘以一个给定的系数。在这个宏定义中,ab和coeff是宏参数,它们分别代表两个整数和一个系数。注意,我们在每个宏参数周围都添加了额外的括号,这是为了防止在宏展开时可能出现的运算符优先级问题。
2024-09-13 15:27:23
416
原创 C语言的条件编译
是一种特殊的编译过程,它允许根据编译时的条件(而非程序运行时的条件)来选择性地包含或排除代码段。这种机制通过预处理指令来实现,这些指令在编译程序之前由预处理器(preprocessor)处理。条件编译主要用于跨平台开发、调试、优化以及根据编译时的配置选项来定制代码。#if#elif#else和条件编译的工作原理是,在编译之前,预处理器会读取源代码文件,并根据预处理指令对代码进行条件性地包含或排除。这意味着,只有在编译时满足条件的代码才会被包含在最终的程序中,而不满足条件的代码则会被完全忽略。
2024-09-05 11:24:52
449
原创 CLION+gdbserver远程调试postgresql源码
如果要调试,需要开启debug选项。–enable-debug:向gcc传递-g参数CFLAGS=“-O0”:向gcc传递 -O0参数make world。
2024-09-05 09:29:19
632
原创 CLION+gdbserver远程调试C项目
CLION版本:2023.3.5gdb、gdbserver版本:13.2cmake版本:3.27.9操作系统版本:centos 7.9 x64gcc版本:4.8.5(系统自带)
2024-09-03 10:23:31
614
1
原创 leetcode_283_移动零解析
使用双指针技术(一个指针用于遍历数组,另一个指针用于记录非零元素应该放置的位置)非0,交换数据,左右指针都往右移。
2024-08-30 15:17:01
375
原创 leecode_049_字母异位词分组解析
在拼写检查工具中,识别字母异位词可以帮助用户纠正拼写错误。例如,如果用户输入了 “listen” 的一个字母异位词 “silnet”,拼写检查器可以建议正确的拼写。一个简单而有效的方法是将字符串中的字符进行排序,然后比较排序后的字符串是否相同。由于每个字母异位词都会生成相同的字符计数数组,因此它们会被分组到同一个列表中。主要思路是利用哈希表(HashMap)来存储和分组具有相同字符组成但顺序不同的字符串(即字母异位词)。这个函数的核心思想是对每个字符串进行字符计数,并将这个计数结果(即。
2024-08-29 14:11:17
617
原创 你是如何写分批处理数据的代码的
这个分批处理框架可以应用于多种需要处理大量数据,但每次只能处理一部分数据的场景。这种框架有助于管理内存使用、优化处理时间,并避免在单个操作中处理所有数据可能导致的性能问题或超时。当您需要将大量数据插入数据库中时,分批处理可以避免一次性加载所有数据到内存中,从而减少内存消耗,并可能提高数据库操作的性能。注意这里是已知总数计算出分批数。
2024-08-27 17:22:12
358
原创 leetcode_002_两数相加解析
Dummy节点在ListNode中表示一个虚拟节点,有时候也叫着哨兵节点,通常放在链表的最前面,指向头节点。Dummy节点的使用主要是为了消除头节点的特殊性,使得代码更加优雅和易于管理。通过引入一个虚拟节点作为新链表的头部,可以避免因头节点特殊性而产生的问题。这样做的好处在于,当我们处理完链表之后,只需要返回dummy.next,由于单向链表只能从头往后遍历的性质,就可以舍弃掉dummy,返回的就是我们需要的链表。
2024-08-27 16:39:05
355
3
原创 leetcode_001_两数之和解析
这个问题要求你设计一个高效的算法来找到数组中两个数,使得它们的和等于一个给定的目标值。这要求你能够分析问题的本质,并设计出合适的解决方案。这个问题的本质是搜索与匹配的问题,更具体地说,是在无序数组中查找满足特定条件(和为目标值)的两个数。
2024-08-26 17:37:25
855
原创 什么时候抛异常,什么时候记录错误日志
在Go语言中,是否应该让你的函数返回error,主要取决于该函数在执行过程中是否可能遇到错误情况,并且这些错误情况是否对调用者来说是重要的,需要被知晓和处理的。如果函数在执行过程中可能会因为某些原因失败,而这些失败情况对于调用者来说是有意义的(比如,它们会影响调用者后续的操作或决策),那么你应该让该函数返回error。这样做的好处是,调用者可以根据返回的错误值来决定如何处理失败情况,比如重试操作、记录日志、向用户显示错误信息,或者采取其他适当的恢复措施。
2024-08-26 16:08:40
500
原创 想写个延时执行功能,第一步我是打开baidu
是 Go 语言标准库time包中的一个函数,用于创建一个新的定时器(Timer)。我们首先通过一个简单的例子,来展示计时器的使用。在这个例子中,我们将创建一个定时器。我们再举一个稍微复杂一点的例子,假设有一个需求,要求在 5 秒钟内完成某个任务,否则就认为任务失败。这时我们就可以使用NewTimer来实现超时控制。从timer.C取出的是当时的系统时间。
2024-08-08 17:14:02
412
原创 还在苦恼接口被流量打爆吗,令牌桶限流器效果出奇的好,还能应对突发流量
本项目令牌桶的实现并没有单独起一个goroutine来添加令牌,是基于时间来实现的,这样令牌桶的更新是懒惰的(即只在需要时更新),不需要额外的goroutine或线程来定期检查并添加令牌,从而减少了系统的开销。
2024-08-08 16:19:00
898
原创 一个框架和处理逻辑解耦的例子,我们应该学习这种模式
通过回调函数将具体执行逻辑与遍历过程本身解耦,使得开发者可以在回调函数中实现自定义的逻辑,如过滤特定类型的文件、处理文件内容等。包提供的一个函数,用于遍历指定目录下的所有文件和子目录。WalkDir()里面使用到了递归调用。要实现框架和处理逻辑解耦,可以使用回调函数。是 Go 语言标准库中。
2024-08-06 16:04:14
262
原创 在你的代码中试试这种方式实现逻辑定制
回调函数(Callback Functions)是一种在编程中广泛使用的技术,特别是在处理异步操作、事件监听和模块化编程时。回调函数本质上是一个被传递给另一个函数作为参数的函数,它会在某个特定时刻被调用,比如异步操作完成、事件触发或某个条件满足时。在Go语言中,可以将函数直接作为参数传递给另一个函数,并在需要时被调用,这样大大的加强了代码的。
2024-08-06 15:24:45
557
原创 go的并发任务如何优雅的实现错误终止
在Go语言中,并发任务通常通过goroutine来实现,而错误处理和任务终止的优雅性则依赖于适当的同步机制和错误传播策略。分析:多个任务可以并发执行,可以使用WaitGroup管理,但是需要返回错误,可以使用errgroup。场景:计算一个目录下所有文件的 MD5 值,任何一个文件都需要正确计算,一旦一个任务出现错误立即返回。使用syc包(sync.WaitGroup)使用通道(Channel)实现这个功能使用到了。
2024-08-05 16:58:06
451
原创 如何实现若干子任务一损俱损--浅谈errgroup
errgroup是 Go 语言官方扩展库x/sync中的一个包,它提供了一种方式来并行运行多个 goroutine,并在所有 goroutine 都完成时返回第一个发生的错误(如果有的话)。这对于需要并行处理多个任务并等待它们全部完成,同时需要处理其中任何一个可能发生的错误的场景非常有用。errgroup是 Go 语言中用于管理多个 goroutine 的同步和错误处理的库。使用errgroup可以简化并发代码的编写,使得错误处理更加简洁和一致。
2024-08-05 15:49:40
485
原创 milvus的批量向量搜索
批量向量搜索允许在单个请求中进行多个向量相似性搜索。这种类型的搜索非常适合需要为一组查询向量查找相似向量的场景,可显著减少所需的时间和计算资源。系统会并行处理这些向量,为每个查询向量返回一个单独的结果集,每个结果集包含在collection中找到的最接近的匹配项。即:一次查询多个向量,吞吐。
2024-07-22 16:39:16
951
原创 milvus的collection操作
*kwargs - 告诉python接受任意数量的关键字参数到这个字典中。那milvus这里有哪些key?看注释。
2024-07-18 14:37:23
1177
原创 milvus分批写入测试数据
假如现在需要向milvus写入500W数据,调用milvus的insert api一次性写入500W数据是不现实的,内存也吃不消。这时候需要分批写入,例如每次写入1000行,直至写完500W数据。
2024-07-17 16:23:53
608
原创 使用milvus-sdk-go的迭代器导出数据
迭代器是一种功能强大的工具,可帮助您使用主键值和布尔表达式迭代集合中的大量数据或所有数据。这可以显著改善您检索数据的方式。当表数据很大,需要全量导出,我们可以使用迭代器,例如每次只查询1000行数据,直到所有数据查询完成,同时也可以减少服务器压力。参数用法不同,后者可能会随着时间的推移而变得效率低下,而迭代器提供了更具可扩展性的解决方案。下面列举一个例子:写入3000条数据,每次读取100条,直至完全读完完毕。需要注意的是迭代器是一个客户端实现。
2024-07-16 15:45:43
904
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z02
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z01
2017-08-09
SpringMvc+Spring+Mybatis+Maven整合示例源码
2017-07-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z07
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z06
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z05
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z04
2017-08-09
mongodb-win32-x86_64-2008plus-ssl-3.4.7-signed.z03
2017-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人