自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(394)
  • 资源 (11)
  • 问答 (1)
  • 收藏
  • 关注

原创 线程池阻塞问题的思考与改进

本文讨论了线程池中处理阻塞任务的解决方案。当30%的任务可能永久阻塞时,使用单一线程池会导致线程资源耗尽(5线程池仅处理19个任务后阻塞)。改进方案是将阻塞任务单独提交到专用的阻塞IO上下文(如asio::io_context),确保主线程池(处理CPU密集型任务)不受影响。实验结果显示,50个任务中42个CPU任务正常完成,8个阻塞任务被隔离处理,验证了该方案的可行性。这种设计模式有效解决了阻塞任务影响整体系统吞吐量的问题。

2026-03-06 23:15:00 41

原创 关于Ceph的一致性分析

本文对比分析了二阶段提交(2PC)和Ceph的写流程。2PC中主节点并行执行本地写日志和向从节点发送消息,等待所有从节点确认后提交或回滚,存在多轮消息交互的复杂性。Ceph采用类似流程但更简化:主节点并行执行本地写和发送写请求,只有所有节点(包括主)都成功才确认写操作,否则直接返回失败。Ceph在事务提交阶段遇到存储错误时会崩溃退出,确保数据一致性。两种方案都通过主从协作保证强一致性,但Ceph流程更简洁高效。

2026-02-02 10:23:02 353

原创 为什么高性能代码爱用侵入式链表?一个 pool[10000] 的例子让我彻底明白了

本文对比了普通链表和侵入式链表的实现差异。普通链表需要额外创建节点结构体,存在内存分配、指针跳转和内存释放的开销。侵入式链表通过将指针直接嵌入Person结构体中,避免了节点分配,访问更高效且无需单独释放。其优势在于零分配、一次访问和自动管理,但会带来耦合问题和生命周期风险。适用于预先分配对象、频繁组织且要求高性能的场景。侵入式链表在特定场景下能显著提升性能,但需谨慎处理耦合和生命周期问题。

2026-01-29 20:30:53 368

原创 linux测速

摘要:本文介绍了三种Linux测速方法,推荐使用wget直接下载大文件测试网速,简单直观。其他工具如speed-test因测试节点在国外不准确,fast-cli安装复杂且依赖项多容易失败。wget是最便捷有效的测速选择,命令示例为wget -O /dev/null [文件URL]。

2026-01-27 17:51:25 151

原创 Ceph性能瓶颈梳理与应对方案

最近在做ceph相关的工作,很多特性都和ceph的性能相关。做了一段时间了,记录一下心得,希望帮助到有需要的朋友。主要应对的是对象存储的场景。索引分片按照三副本存储在index池,用户数据EC存储在data池。题目启的很大,但是实际上主要是分析硬盘瓶颈的解决方案。

2026-01-27 01:15:00 580

原创 关于Rocksdb多列簇下写压力不一致带来的问题

本文分析了RocksDB中列簇压缩调度的公平性问题。当前系统采用简单的FIFO队列调度方式,导致写入负载高的列簇无法及时获得压缩资源。通过案例说明,当不同列簇的写入速率差异较大时(如A列簇写入量是其他列簇的4倍),简单的轮转调度会导致高负载列簇积压严重,甚至触发写入停滞。作者指出真正的公平调度应该基于各列簇的紧急程度(通过score评估),建议改为优先调度score最高的列簇。这一问题的核心在于认识到绝对公平与效率优化的矛盾,发现问题本身比具体解决方案更为关键。

2026-01-20 19:16:29 47

原创 说说CompactionPri

RocksDB在6.15.5版本中提供了四种选择待compact文件的策略:kByCompensatedSize根据文件补偿大小排序,会考虑墓碑键值的影响;kOldestLargestSeqFirst和kOldestSmallestSeqFirst分别基于SST文件中最新和最老数据的序列号来选择;kMinOverlappingRatio则优先选择与下层SST文件交叠比例小的文件。其中kMinOverlappingRatio是该版本的默认策略,通过计算当前文件与下层文件的KV范围交叠比例来决定压缩优先级。这些

2026-01-20 11:42:07 330

原创 使用Ventoy安装FnOS

Ventoy是一款多功能U盘启动工具,支持同时存放系统镜像和个人文件。安装时需下载Ventoy安装包,运行Ventoy2Disk.exe格式化U盘为exFAT格式,然后将系统镜像拷贝至U盘根目录。使用时需通过BIOS设置U盘为第一启动项,选择系统镜像安装。安装过程中要注意为系统分区预留空间(建议80-90GB),不能全盘分配,以便后续创建存储空间。安装完成后拔掉U盘即可启动新系统。该工具支持版本升级且不会影响U盘中的个人文件。

2025-12-05 22:54:53 452

原创 c++锁的基本用法

本文展示了两种多线程同步机制的C++实现。第一部分实现了生产者-消费者模型,使用互斥锁和条件变量来同步对有限容量篮子(10个鸡蛋)的存取操作,确保生产者在篮子满时等待,消费者在篮子空时等待。第二部分实现了读写锁(RWLock),通过维护读者、写者和等待写者的计数,使用条件变量协调读写操作,确保写者优先避免饥饿,同时允许多个读者并发访问。两个示例都提供了完整的线程测试代码,演示了如何在并发环境中安全地共享数据。

2025-12-03 09:32:16 110

原创 通过sunshine+moonlight在客厅的电视上玩书房里电脑上的游戏

摘要:本文介绍如何通过Sunshine和Moonlight实现电脑游戏在客厅电视上串流播放。具体步骤:1)电脑安装ViGEmBus驱动和Sunshine服务端;2)电视安装Moonlight客户端;3)手柄连接提供两种方案:蓝牙直连电视(仅游戏内可用)或2.4G接收器连接电脑。作者推荐使用蓝牙连接电视的方案,并指出多手柄情况需要自行测试。全文采用直白表述,避免常见教程关键信息缺失的问题。(149字)

2025-12-01 00:15:27 563

原创 ceph搬迁的时候压力汇总情况

摘要 本文介绍了一个用于分析Ceph集群数据迁移压力的Python脚本。该脚本通过解析ceph pg dump命令输出,统计各OSD节点在数据迁移过程中的读写压力。主要功能包括: 统计待迁移数据(backfill_wait)和正在迁移数据(backfilling)的分布情况 计算各OSD作为源节点(发送数据)和目标节点(接收数据)的PG数量 提供三种压力视图:发送压力、接收压力和总迁移压力 输出结果按压力降序排列,便于识别高负载节点 使用方式简单,只需通过管道将过滤后的PG信息传递给脚本即可。该工具弥补了原

2025-11-28 18:04:00 194

原创 鼓捣4k仓库(一个旧手机,帮你打造4K观影天堂)

摘要:本文介绍了如何利用闲置的旧手机搭建家庭下载服务器,实现远程控制下载4K电影并本地观看。通过Termux安装Aria2下载工具,配置内网穿透使用frp服务,解决了远程操作、低功耗下载和本地观看三大问题。文中详细记录了从环境配置、Aria2安装、内网穿透到实际下载的全过程,提供了一种经济高效的影音下载解决方案,避免在线观看时的画质压缩问题。

2025-11-19 22:00:52 396

原创 聊聊c++的反射

本文探讨了C++中实现反射功能的几种方法。首先介绍了反射的基本概念,即通过字符串动态修改实例字段的能力。然后分析了RTTR框架的局限性,指出其已多年未更新且与高版本GCC兼容性差。重点介绍了两种实用方案:一是使用boost.pfr库进行字段索引访问,但存在只能通过常量索引访问的限制;二是基于nlohmann/json库的JSON序列化方法,通过模板函数实现了通用的字段修改功能,支持多种数据类型转换,虽然性能不高但足够满足一般需求。文章最后展示了这两种方法的具体实现代码示例,包括对Person和Config结

2025-11-10 17:50:09 201

原创 说说c++的异步 聊聊async_completion

我们从https://blog.csdn.net/dlf123321/article/details/154187272 看完,从流程上来说就走进了异步的大门。

2025-11-03 11:25:54 300

原创 说说c++的异步(从std::future到Boost.Asio)

谈谈c++的异步

2025-10-31 15:18:10 245

原创 关于protobuf

【代码】关于protobuf。

2025-10-16 00:28:00 163

原创 关于gflag

https://gitee.com/cxyxd/cpp-toy/tree/master/src/for_flag

2025-09-28 21:49:42 106

原创 c++ 关于全局变量

总感觉自己c++基础知识很差。最近看代码看到全局变量。我是这么想的。我定义一个global.h里面有一个int a=10;某个cc文件想用这个全局配置,就include globa.h 就行么。额,报错 multiple definition。那么怎么办呢?

2025-09-26 15:40:34 241

原创 关于Unix Domain Socket的使用入门

Unix Domain Socket(UDS) 是一种 在同一台计算机上的不同进程之间进行通信的机制。你可以把它理解为“本地版的网络套接字”,但它不走网络,只在操作系统内部完成数据交换。简单说一个c++每隔几秒钟打印一个字符串,这个字符串就存在进程的内存里,并不是从磁盘里实时读取的。现在想让程序打印另一个字符串怎么办?最近在看ceph的动态参数修改。就观察到了Unix Domain Socket这个技术。假定我有个c++程序,里面有个变量,我现在想修改它怎么办?那这个UDS具体是个啥呢?

2025-09-26 15:02:48 326

原创 关于shared_ptr的线程安全性

本文讨论了shared_ptr的线程安全性问题。指出多个线程同时读写同一个shared_ptr变量是不安全的,会导致"撕裂读"等问题。但不同线程持有指向同一对象的独立shared_ptr拷贝时,引用计数操作是线程安全的。然而,这并不保证对象内部的数据安全,若多个线程同时修改对象仍需加锁。此外,文章还对比了unique_ptr的使用方式,强调必须通过std::move转移所有权。总之,shared_ptr的线程安全是有限的,需根据具体使用场景采取适当措施。

2025-09-19 14:29:47 93

原创 关于前置声明

假定,有下面3组文件a.cc被编译成可执行文件其中。

2025-08-19 14:05:10 218

原创 关于使用netserver 进行网络速度的测试

1 在server A上启动 netserver 这个程序;端口,就随便写一个不用的值,这里就暂时用88882 在server B上去进行测试,假定server A的ip是192.168.1.1053 在server A上查看网络流量,就可以看到192.168.1.105绑定的网卡上有流量,另外这个流量的计算单位是KB/s,或者MB/s。记得是大B。4 测试完成关闭server A上面的netserver然后 kill5 测试完成关闭server B上面的netperf。

2025-06-22 19:25:30 321

原创 关于sst的统计信息

不是,使用的是 FdWithKeyRange(就是上面的VersionStorageInfo里面的level_files_brief_)即使我们配置单个sst的大小是64MB,L1L2及更下层次的sst最大大小确实是64MB,但是L0层的sst并不受这个限制。下一个问题,在compact进行选择文件的时候,使用的是FileMetaData么?VersionStorageInfo里面的files_的语意说的很清楚了。Version 记录的某个时刻全局所有sst的信息。记录在sst内部的属性信息。

2025-06-17 11:05:32 392

原创 char* Slice的引用拷贝管理

因为org的清理,只是说让org内部不在指向0x4070a3 ,但是0x4070a3的数据(abc)依然没有被覆盖,而且another依然指向0x4070a3。data_ 本身是一个字符指针,指向0x40709a ,这个位置存放的数据是“abcx\0”data_ 本身是一个字符指针,指向0x40709f,这个位置存放的数据是“defx\0”org和another指向同一个位置,那为什么清理了org,another依然可以读到呢?因为slice_list里面的每个元素的data都指向temp2。

2025-06-09 14:32:16 313

原创 RocksksDB写流程

batch里面有个字符串叫rsp_,里面放的就是每次操作的元数据,rsp_ 的格式如下|8个字节的sequence|4个字节count|serialized-kv-1|serialized-kv-2|serialized-kv的结构就是|1个字符的KTypeValue|4个字节key_size|key_bytes|4个字节value_length|value_bytes|所谓的KtypeValue就是表明这次操作是写还是删除。

2025-06-05 15:24:53 873

原创 谈谈iostat

这个简单的可以理解为快递员要给一个18层的公司所有员工送快递,每一层都有一些包裹,对于快递员来说,最好的办法是同一楼层相近的位置的包裹一起投递,否则如果不采用这种算法,采用最原始的来一个送一个(即noop算法),那么这个快递员,可能先送了一个包括到18层,又不得不跑到2层送另一个包裹,然后有不得不跑到16层送第三个包裹,然后包到1层送第三个包裹,那么快递员的轨迹是杂乱无章的,也是非常低效的。aqu-sz: 发出到设备的请求的平均队列长度。w_await 向设备发出的写请求被处理的平均时间(以毫秒为单位)。

2025-05-28 22:02:49 644

原创 关于甲骨文(oracle cloud)丢失MFA的解决方案

前两年,申请了一个招商的多币种信用卡,然后就从网上撸了一个oracle的免费1h1g的服务器。用了一段时间,人家要启用MFA验证。啥叫MFA验证,类似与短信验证吧,就是绑定一个手机,然后下载一个app,每次登录的时候除了你设置的用户名密码外,还需要那个特定手机上展示的一个code。就这么简单。但是,不出意外的话,有意外了,手机换了,当时忘记更新那个app了。然后 就没法登录oracle了。

2025-05-10 17:05:52 2286

原创 c++ stl的插入获取与删除

本文介绍了常用STL容器的基本操作和特性。list底层采用双向链表实现,支持高效的头部/尾部插入删除操作;vector底层为数组,头部操作时间复杂度为O(n)。文章详细列出了list和vector的常用方法对比,包括元素增删和访问操作,并提供了删除特定元素的代码示例。此外还简要说明了stack和queue的基本操作,如push/pop、top/front等。重点比较了emplace和push方法的区别,emplace可直接构造元素避免拷贝。

2025-04-21 10:36:12 403

原创 c++ 获取当前时间戳与格式化时间字符串

chrono是c++11提出的。

2025-04-11 10:27:00 258

原创 关于LRU与LFU

第一个unordered_map key是真实的key,value是一个node,包含了真实的value和它使用的频率。简单地说,就是移除那些最长没有被使用的数据。当容量满的时候,直接从第三个unordered_map 里面找最小的key,然后清理对应的value即可。第一个unordered_map key是真实的key,value是真实的value。第二个unordered_map key是真实的key,value 是它的使用次数。这里麻烦的要记录每个key的使用频率,然后找到最小的那个频率。

2025-04-10 14:48:18 466

原创 C/C++指针与内存的常见错误踩坑

C/C++指针与内存的常见错误踩坑

2025-04-08 09:18:30 164

原创 说说c++的各种默认函数

除了大家都熟悉的默认构造函数(无参或有参)和析构函数。还有拷贝构造,拷贝赋值,移动构造,移动赋值这四个。

2025-03-25 11:34:19 139

原创 关于GDB

【代码】关于GDB。

2025-03-19 15:04:18 201

原创 c++ vector指针的传递

当vector里面是指针,且整个vector作为参数传递给某个方法的时候。大家看上面的输出,比对一下 就能看出来很多问题。在linux下运行代码,上面两个地址是一样的;在windows下运行,上面两个地址不一样。

2025-03-18 22:04:15 317

原创 c++参数传递概念

p本身的地址是 0x7ffe35a67738 这个地址里面存放的是数据是0x7ffe35a67790,我们通过类型可以知道它依然是一个地址,在method3内部,我们就知道 0x7ffe35a67790 位置是一个person对象,那么是zhangsan。Person里面有个方法叫add,参数是Person *p,那么对p的所有修改,会影响真实的外部调用 这叫使用指针做函数参数。形参的地址自然是不变的,依然是0x7ffe35a67738 ,但是里面存的值就指向了new的那个对象了。

2025-03-16 00:36:41 137

原创 关于shared_ptr

我们可以看到person 构造了两次 析构了两次 但是 bed 只构造了一次 也析构了一次。

2025-03-10 17:16:43 283

原创 谈谈Libaio

但是 我找了半天 都没有一个能运行的例子。一段代码不能运行和shi有什么区别?下面的例子是直接把一个person list写入裸盘,再读出来进行校验的例子。网络上有一堆 aio的例子和说明。

2025-02-17 17:03:26 245

原创 线程池判断当前任务组是否都已经结束

最近写测试代码的时候,需要判断提交的线程池里面的任务是否都已经全部执行完成。在网上找到了一圈,发现这篇博客写到算是比较完整的。但是还是有几个问题。

2024-12-08 20:43:47 214

原创 rocksdb merge的简单记录

rocksdb的merge主要是为了解决读&写需要两步的操作。例如定义一个累加器,总得先把之前的值读出来才能加。下面给两个例子,大家可以直接用。

2024-10-10 17:56:14 476

原创 fio的常用命令

使用fio工具测试磁盘性能时,必须注意:写测试只能在未挂载文件系统的裸盘上进行,已挂载且有数据的磁盘不能直接测试。顺序写测试使用5GB文件,参数包括direct I/O、32队列深度、4K块大小;顺序读测试类似,但可设置多线程。测试命令需指定设备路径(如/dev/sdxxxxx)和测试名称。

2024-09-24 16:32:02 222

关于java中的时间

关于java中时间 日期 和math的ppt 很简单

2012-12-24

fusioncharts/widgets for flex 的swf 与swc文件

里面的swf 我自己用过 绝对没有问题 另外使用fusioncharts的朋友 也希望你们与我交流

2012-11-28

用flex 写的 卖手机的网页

用flex写的 商店的 模型 绝对可以用 我从官网上下下来后 进行了一点点的修改

2013-01-12

springmvc 异常处理示例

springmvc异常处理的博文如下: http://blog.csdn.net/dlf123321/article/details/50756003

2016-02-27

用ext写的前台源码 有说明文档

用extjs写的前台 有说明文档 我自己从项目中剥离下来的 可以做为ext的一个综合应用

2014-08-26

ActiveMQ实例---分布式发送邮件

ActiveMQ实例---分布式发送邮件

2016-05-14

flex导航设计与表单验证

里面的每一项我都试验过 直接复制到flex就能看到效果

2012-12-23

mysql-connector-java-5.1.22.rar

mysql-connector-java-5.1.22 包含jar,doc与src代码

2014-10-27

mytinyspring

黄亿华 1000行代码读懂Spring(一)- 实现一个基本的IoC容器 代码的重写

2014-09-30

用java发送邮件

这是用javamail完成的发送邮件的demo diamond说明如下http://blog.csdn.net/dlf123321/article/details/39153175

2014-09-09

spring 源码

spring的源代码 分成了各个子项目 自己下载的

2014-07-28

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

TA关注的人

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