摘要: 有栈协程就是实现了一个用户态的线程,用户可以在堆上模拟出协程的栈空间,当需要进行协程上下文切换的时候,主线程只需要交换栈空间和恢复协程的一些相关的寄存器的状态就可以实现一个用户态的线程上下文切换,没有了从用户态转换到内核态的切换成本,协程的执行也就更加高效。 ##golang协程实现 Gorouti 阅读全文
posted @ 2022-09-17 13:56 sahara-随笔 阅读(370) 评论(0) 推荐(0)
摘要: ##Buffered I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。 在 Linux 的缓存 I/O 机制中,这种访问文件的方式是通过两个系统调用实现的:read() 和 write()。调用read()时,如果 操作系统内核地址空间的页缓存( pa 阅读全文
posted @ 2022-09-17 13:55 sahara-随笔 阅读(90) 评论(0) 推荐(0)
摘要: Spring bean注入流程 类实例化 -> 属性注入 -> 执行初始化方法 -> (如果有需要)生成代理对象 -> 使用 二级缓存存在的问题 举例说明:A、B两个类相互依赖,初始化A的时候, 第一步实例化A完成(原始实例放入二级缓存),注入依赖属性B,一级缓存查询B没有,二级缓存查询B没有, 初 阅读全文
posted @ 2022-08-20 21:24 sahara-随笔 阅读(1898) 评论(0) 推荐(0)
摘要: flink cdc底层抽取数据原理是按表分块,进行快照读获取所有数据,当全量数据收集完成后,继续获取binlog增量数据。 以上操作,在执行全量数据收集时,若源端数据库用户执行ddl命令(如修改表字段等),flink cdc当前阶段无法感知表结构变化。 解决方案: split reader 执行分块 阅读全文
posted @ 2022-06-29 19:07 sahara-随笔 阅读(1489) 评论(0) 推荐(0)
摘要: flink 堆内存分配优化,调整堆内存相关参数 flink slot个数调整,slot个数和cpu核数正相关 源端连接池连接数与并行度保持一致(底层子任务共享连接池) 目的端数据库连接释放逻辑优化,避免内存泄漏 flink cdc debezium reader线程泄漏(任务执行完成后,线程阻塞未释 阅读全文
posted @ 2022-06-28 09:38 sahara-随笔 阅读(705) 评论(0) 推荐(0)
摘要: RabbitMQ是一个可靠的、通用的消息中间件,支持多种协议如:AMQP, MQTT, STOMP, 等。执行后台或者长期任务是rabbitmq常见的使用方式;也可以用于微服务之间通信,避免传递消息的瓶颈。 kafka是一个消息总线,特点是能高吞吐量的接收数据流和重放。常用于需要迁移、处理或者分析大 阅读全文
posted @ 2022-04-13 17:45 sahara-随笔 阅读(76) 评论(0) 推荐(0)
摘要: 转载记录 很多人容易搞混不可重复读和幻读,确实这两者有些相似。但不可重复读重点在于update和delete,而幻读的重点在于insert。 如果使用锁机制来实现这两种隔离级别,在可重复读中,该sql第一次读取到数据后,就将这些数据加锁,其它事务无法修改这些数据,就可以实现可重复读了。但这种方法却无 阅读全文
posted @ 2021-12-12 18:53 sahara-随笔 阅读(232) 评论(0) 推荐(0)
摘要: 多线程socket IO 传统的socket IO中,server一直监听服务端口,当一个请求连接发送到server端时,server端获取当前的socket,然后为socket分配一个线程(通过new方式或者线程池获取一个可用的线程),让该线程独占这个socket,执行相关任务、直到任务执行完成后 阅读全文
posted @ 2021-11-15 20:14 sahara-随笔 阅读(450) 评论(0) 推荐(0)
摘要: 阻塞是线程的一个状态,线程发起任务请求然后一直等,直到到任务完成再把结果返回,如果任务未完成当前线程会被挂起。 非阻塞是发起任务请求之后先马上返回去做别的事,然后再时不时主动查看任务请求是否被完成。(轮询) 同步是指两个任务(线程)之间存在竞争或者因果关系,例如一个线程占用了一个对象,其他线程如果要 阅读全文
posted @ 2021-09-30 17:00 sahara-随笔 阅读(412) 评论(0) 推荐(0)