自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(174)
  • 收藏
  • 关注

原创 reactor框架使用时,数据流请求流程

6. 因此,onNext的调用前,数据的准备可以在Subscription.request的方法逻辑中内部进行准备,当准备好了再调用onNext方法。如果是分批request的,也就是说CoreSubscriber.onSubscribe逻辑中是分批次调用Subscription.request(n),则每个批次的Subscription.request(n)中都可以等待数据好了再调用onNext方法。这个方法就是在reactor的subscribe的时候会调用到这里。中的数据也准备好为止。

2025-01-21 22:01:07 801 1

原创 mongodb的孤儿文档问题

技术干货 | MongoDB 偶遇孤儿文档及处理方法-腾讯云开发者社区-腾讯云

2025-01-05 17:25:12 105

原创 reactor中的并发

分别代表并发的线程数和缓存大小。4. 相对应的cache/buffer/onBackpressureBuffer等操作符因为存在了cache,因此将热流变成了冷流。在reactor的演讲中,flatmap对于io类型的并发效果较好.因为groupby的缓存可能会用完导致hang住。因此这里有如下的可以考虑的优化方法。注意凡是参数中有prefetch的,都表示这个operator有对应大小的缓存。2. 增加flatmap中的concurrency和prefetch值。1. reactor中的并发有两种方式。

2025-01-05 13:32:23 443

原创 reactor的Hooks.enableAutomaticContextPropagation();不生效解决方案

2. 注意,要看idea是否将context-propagation引入了。我的idea就是不知道为什么,虽然pom中添加了这个maven,mvn clean install 也通过了,但是在idea中的三方库就是没有。3. 编写类继承ThreadLocalAccessor。这个编写类的内容在官方文档中没有,坑人。因此按照官方文档,是不可能得到预期结果的。1. pom中需要先增加如下的内容。

2025-01-04 21:17:46 478

原创 鼹鼠工作室的高效秘密

4. 对项目的对接方也要求具有1,2的能力。1高效的决策力是重要的。1. 我们工作获得成功的基础,是具有立即作出决定并付诸。面的东西减到最少数量,对整个工程,动员全部力量有计划。2. 另一个要求,是必须有一批人数很少但是特别。分阶段地完成,始终保持高昂的士气。3. 还有一点,就是把报告及书。有能力并且责任感很强的人员。

2025-01-04 10:19:42 117

原创 flux中的缓存

cache可以将hot流的数据缓存起来。onBackpressureBuffer也是缓存,但是当下游消费者的处理速度比上游生产者慢时,上游生产的数据会被暂时存储在缓冲区中,防止丢失。Flux.interval 默认下游的consume速率不能低于produce的速率,否则直接报错。4. 注意默认带有无界缓冲区时,如果设置了onBackpressureBuffer(size)。有界会导致如果缓冲区不足以缓冲数据时,会报错。3. Flux.fromIterable 经过测试,应该也是属于无界缓冲区。

2025-01-01 14:54:13 594

原创 flux 冷热流的矛盾

sb2只接收到新数据,结合share的功能是将冷数据切换成热数据,似乎也证明了这里Flux.interval是冷数据。所以导致Flux.just流的定义会有矛盾的地方,本质原因是冷/热流包含两种特性。1. 如果从Flux.just在没有subscribe的时候,就获取数据这点来看,属于热的。Flux.just是被订阅时是从头开始全量发送给subscriber的。Flux.just获取到的数据是没有订阅时候就写入进去的。sb2的订阅依然可以从0开始,说明这个Flux.interval是个冷数据。

2025-01-01 12:46:03 244

原创 mongodb和Cassandra

mongodb的一致性问题:15.MongoDB的一致性(读关注与写关注)_mongo w选项-优快云博客孤儿节点问题:技术干货 | MongoDB 偶遇孤儿文档及处理方法-腾讯云开发者社区-腾讯云分片集群MongoDB迁移前清除孤儿文档由数据迁移至MongoDB导致的数据不一致问题及解决方案 | MongoDB中文社区Cassandra可调一致性的使用及原理_大数据_老任物联网杂谈_InfoQ写作社区

2024-12-25 17:42:31 570

原创 实现relation-graph的库

relation-graph - A Relationship Graph Component

2024-12-25 14:42:23 256

原创 lstio的透明代理相关问题

因此,这也是listio的TPROXY模式支持Proxy Protocol的原因。从https://istio.io/latest/docs/setup/additional-setup/cni/可知IstioOperator下只有几个element。而不是用init初始化方式安装。看到,使用init方式初始化lstio的时候,是可以配置透明代理的模式是redirect还是tproxy的。但是如果当作loadbalance,或者其实是从loadbalance过来的,其实ip地址已经被lb给改掉了。

2024-12-22 16:44:05 497

原创 disruptor讲解

从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者、单消费者工作原理解析 - 小熊餐馆 - 博客园高性能队列——Disruptor - 美团技术团队

2024-12-01 21:46:06 113

原创 tcp的网络惊群问题

只需要在各个进程中, 独自的 监听指定的端口,当然在监听前,我们需要为监听 socket 指定 SO_REUSEPORT ,否则会报错啦。由于没有采用 fork 的形式,各个进程中的 accept socket fd 不一样,加之有新连接建立时,内核只会唤醒一个进程来 accept,并且保证唤醒的 均衡性,因此使用 epoll 监听读事件,就不会触发所有啦。但是,epoll并不是只处理accept事件,accept后续的读写事件都需要处理,还有定时或者信号事件。当读写事件发生时,应该通知哪个进程呢?

2024-11-19 19:30:22 423

原创 mysql数据库

MySQL 记录锁+间隙锁可以防止删除操作而导致的幻读吗?事务隔离级别是怎么实现的?

2024-11-19 19:04:53 141

原创 详细理解golang的Point和uintptr的关系和正确使用方法

Go语言 unsafe.Pointer 浅析

2024-11-19 17:27:01 136

原创 分布式相关杂项

Percolator模型及其在TiKV中的实现 - vivo互联网技术 - 博客园

2024-11-14 17:57:19 279

原创 内存管理问题

建议是如果怀疑是c的内存泄露问题,可以先用jemalloc替换操作系统默认的glibc试一下。

2024-11-14 17:01:35 180

原创 rust 性能提高指南

构建配置 - The Rust Performance Book

2024-10-23 23:18:54 131

原创 写给后端开发者的Java21手册

https://juejin.cn/post/7280745727176425531

2024-10-07 16:15:10 434

原创 rust log选型

flexi_logger::code_examples - Rust

2024-10-05 21:32:29 703

原创 王垠的解释器学习材料

王垠虽然疯了,但是他写的解释器教材还是引入的蛮好的。

2024-09-29 14:44:25 322

原创 std::sync::Mutex 和 tokio::sync::Mutex 使用场景

std::sync::Mutex 和 tokio::sync::Mutex 使用场景不理解

2024-09-18 13:49:03 391

原创 rust 异步设计async/await的前世今生记录

*为什么Rust Async/await 设计成这样 ?

2024-09-17 17:54:33 154

原创 httrack 工具使用

httrack "https://learn.lianglianglee.com" -O "./mywebsite" -r3 --mirror

2024-09-16 23:29:14 224

原创 天体的结构图

来源:

2024-09-15 15:24:15 226

原创 .await 操作并不总是要求 Future 对象实现 Unpin,但如果一个 Future 对象没有 Unpin 特性,必须使用固定(Pin)的方式来安全地进行异步操作。

以下这段因为Sleep是!unpin的,而且Box<Sleep>不是!unpin的,因此必须用pin包付起来,否则无法通过编译。)的方式来安全地进行异步操作。特性,必须使用固定(

2024-09-07 00:16:54 167

原创 rust pin的使用

pin实现了DerefMut的trait,因此可以对可变引用自动调用as_mut,变成了Pin<&mut T>。因为存在DerefMut,所以其实Pin<Ptr>和&mut Pin<Ptr>都是可以自动调用as_mut的。但是,但是,注意,这里的pin的内容无法取出来,但是pin里面的值是可以随时set的。如果要在PhantomPinned的情况下,想进行修改pin内部的数据。timeout_fut是在一个loop循环中,因此这里必须是一个借用才可以。中讲解的pin的用法到底是咋回事。

2024-09-06 16:25:50 1211 1

原创 rust中的生命周期(三)

这段代码因为是tokio::task::spawn_blocking开启了多线程,多线程内部对s必须就是有所有权。那么这里tokio::task::spawn_blocking(move||{println!})有move还是不够的,因为这里是多个线程都有对s的所有权,所以这里必须P是copy和Clone都存在。然后这里move的时候,默认是走的Copy的trait。这里不加Clone和Copy的trait不行,但是如果自己实现Clone。又不会进入到方法内部,不了解原因。

2024-08-31 19:40:27 532

原创 await的使用

为什么 for k in sleep_futures.iter()不行,需要使用 for k in sleep_futures?

2024-08-31 14:02:40 180

原创 tokio::task::spawn_blocking和tokio::task::spawn 的区别

Tokio和Actor | Tokio学习笔记

2024-08-31 12:22:20 271

原创 rust单线程下异步代码的意义

单线程下,可以进行多个异步任务。然后这些异步任务可以是网络请求,这样达到单线层的最大利用化。sleep_ms的代码可以是网络请求。意义雷同于单核多线程的含义。

2024-08-30 17:06:52 509

原创 rust生命周期理解(三)

所有权的移动。

2024-08-27 14:36:48 158

原创 sort排序免忘记

3. dual-pivot quicksort 双基准快速排序 jdk使用的不稳定排序算法。2. pdgsort golang/最新1.21使用的算法/rust非稳定排序使用的算法。1. timesort rust 稳定排序/python使用的算法。

2024-08-26 15:27:00 337

原创 rust生命周期理解(二)

会报错的原因是,for v in hanlders内部的move的确已经将所有权进行转移。for循环获取的是真实的变量。又试图获取一个已经转移了的hanlers的所有权,所以报错。创建的线程可能会在主线程结束之后继续运行,这意味着这些捕获的引用必须具有。的生命周期,因此不存在生命周期的问题。生命周期,即它们需要在程序的整个生命周期内有效。关键字时,闭包会捕获其环境中的变量。在线程的生命周期内是有效的,因此编译可以成功。类型的值(所有权),而不是引用。使用了值的迭代,而不是引用。向量的一个短期引用,不符合。

2024-08-25 10:20:18 775

原创 rust的生命周期问题理解(一)

变成了对rc_clone的不可变借用。// 现在可以安全地修改 `rc_mut`,原始的 `rc` 和 `rc_clone` 不受影响。// 此时的引用计数为2,`make_mut` 会在需要修改时进行克隆。第9行是对a的不可变借用,第10行是对a的可变借用。这句话将对a进行不可变的借用。此行b是对a的一个可变借用。rc_mut是对rc_clone的可变借用。a和b都对应同一个区域有write的权限。原因是a和b变量都指向同一个内存区域。

2024-08-20 13:52:27 524

原创 gin框架传入的gin.context参数是池化的

统一入口,将*gin.Context转化为context.Background(),调用controller。将context作为参数传递,而不再使用*gin.Context作为参数。2. 实现了context接口,导致context.withvalue(*gin.context,key,value).并不会有编译错误。2. 但是gin.context又实现了context的接口。因此,可以当作context去使用。1. 池化导致了复用后的ctx将会将之前使用的ctx中的内容进行覆盖。

2024-08-05 18:39:02 434

原创 重温redis和mysql的数据一致性问题

一致性问题考虑两个方面:2. 大家讨论的前提需要达成一致:掘地三尺,搞定 Redis 与 MySQL 数据一致性问题 | 社区征文

2024-08-05 18:33:31 270

原创 monad理解

就是因为可以存在f*g*m 等等这种多层复合映射,而不是只有单一的f(x)这种单一映射。幺半群的三个特性,本质上就是为了可以有效的进行链式操作。同时结合律的特性保证了函数式程序的编译执行过程中,可以自主进行函数的优化结合进行性能优化。2. 将结果有变化的地方,用monad进行封装。每个学习monad的人都要写一份自己理解的monad。然后还是包括自己没人能看到自己在写啥,而且大部分写的还是错误的。只能封装成monad的形式,才能保证返回的是一个符合monad要求的对象,可以一直去链式调用。

2024-07-08 21:22:08 407

原创 网络相关知识

2. 但是数据到服务端的时候,可能有多个流的req都几乎同时解码成功作为http2的req(我猜可能也有情况是当前正在处理其他的流的req,当前的这些流放在缓冲队列中).此时,可以根据流依赖和权重值,在服务器端选择对应的高优先级的req进行rsp的响应。1. quic其实相比http2效率提升非常有限,重点关注的是最底层的网络慢的10%的用户,可能有较好的效果,例如在高速火车上,甚至quic因为需要逐条压缩,导致效率和速度还慢于http2。三. 何为http/2流优先级?一. quic 的深入理解。

2024-06-24 02:00:34 492

原创 cpu漏洞修复

关于CPU相关漏洞的修复处理_cpu漏洞如何修复 vulnerability spec store bypass: vulnera-优快云博客

2024-06-21 15:43:28 249

原创 io_uring

应用线程通过mmap 机制更新SQ 来提交 SQE,以及监控 CQ 的完成状态,应用无需任何系统调用,就能提交和收割 I/O(submit and reap I/Os)。如果内核线程的空闲时间超过了用户的配置值,它会通知应用,然后进入 idle 状态。这种情况下,应用必须调用。如果 I/O 一直很繁忙,内核线程是不会 sleep 的。在日常的使用中一般建议选择后两种轮训模式,用户线程轮存在用户态到内核态的切换,相比内核轮询存在一定的性能损耗;内核轮询模式下,没有用户态和内核态的切换降低了损耗。

2024-06-21 10:23:22 283

空空如也

空空如也

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

TA关注的人

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