自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术进步那些的事

技术问题,项目随笔,敢于分享,坐等拍砖

  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringBoot开启多端口探究--基于多ApplicationContext

前面探讨了management端口开启,grpc端口开启,本文继续探讨在SpringApplication中开启多个端口的方式之多ApplicationContext, 相比management端口基于多WebServer实例, 多ApplicationContext的颗粒度更大,也会略显粗暴,优点是简单。

2024-09-08 10:37:37 655

原创 SpringBoot开启多端口探究--开启gRPC端口

本文介绍了SpringBoot下开启gRPC端口的两种方案,前者仅由容器管理声明周期,后者由框架负责对象的配置,生成和生命周期,开发者可以更多关注自身业务。实际工作中如何处理,还请读者“量体裁衣”。

2024-08-18 10:48:31 1040

原创 SpringBoot开启多端口探究--开启management端口

从中有几个点值得借鉴:1. 独立的ApplicationContext可以作为资源隔离的一种方式,同时又不完全失去与parent的联系;2. 条件初始化在SpringBoot自动配置中的广泛应用;3. WebApplicationContext与ApplicationContext的区别在于WebServerFactory是否存在,以及RequestHandlerMapping+必要的注解识别,有了这点发现,做API隔离可用的方案也会更加丰富;

2024-07-28 11:11:36 2061

原创 SpringBoot服务数据热更新方案参考

本文介绍了基于SpringBoot的服务数据热更新思路,落地细节,后续问题以及潜在约束,作为一种热更新方案供各位看官参考。

2024-06-23 10:43:48 696

原创 深入Kafka client

本文讨论了Kafka发送消息的三种语义at-least-once, at-most-once, exact-once,并针对exact-once的单分区实现(幂等控制)和跨分区实现(事务消息)做简要介绍, 希望能帮助你梳理出Kafka broker端对消息发送QoS实现的基本脉络, 为进一步学习打基础。

2024-03-03 09:17:00 1205 1

原创 深入Kafka broker

本文深入Kafka broker节点内部, 探讨Kafka协议设计,延迟操作和组控制器的设计与实现, 结合之前的存储结构,建立起Kakfa broker的整体结构框架。

2024-01-20 10:48:24 1251 1

原创 Kafka消息存储

本文介绍了Kafka关于日志存储相关的目录结构, 日志内容结构, 日志删除策略以及Kafka使用的高性能IO策略。

2024-01-07 09:55:46 1516

原创 Topic和Partition

对于一个topic而言, 其相关的文件数量=分区*副本因子。而所有的副本中, 通常第一个副本为优先副本, 而实际对外提供读写服务的是leader副本。通过优先副本选举, 将优先副本重新选举为leader副本。站在集群视角, leader副本数量影响broker的负载, 我们需要重新调整分区数量, 或指定副本位置来平衡负载。

2023-12-03 09:54:06 224

原创 消息消费过程

本文介绍下Kafka消费过程, 内容涉及消费与消费组, 主题与分区, 位移提交,分区再平衡和消费者拦截器等内容。

2023-11-19 11:10:27 984

原创 Producer

本文介绍了Kafka Producer发送数据中涉及的线程和各自的职责,重点介绍了与应用直接相关的Interceptor, Serializer和Partitioner。

2023-11-12 10:55:55 1021

原创 Kafka开篇

本文介绍消息中间件的使用场景、概念架构,以及Kafka的顶层架构,帮助你建立起消息中间件的宏观认识。

2023-09-17 09:53:43 423

原创 Redis Cluster

文介绍了Redis Cluster模式集群的搭建、数据分区的迁移以及故障迁移过程

2023-08-31 21:35:06 623

原创 Redis哨兵模式

本文介绍Redis主从模式的问题和官方推荐的解决方案之一--哨兵模式, 并介绍了哨兵模式下的典型拓补结构和Failover过程, 希望能帮助你对Redis高可用和Failover有更进一步的认识.

2023-08-27 11:13:37 251

原创 Redis Replication

本文介绍了Redis Replication的作用,以及相关的阶段和具体实现,希望能帮助你更好地理解Redis Replication的实现,感谢您的阅读。

2023-08-27 09:26:45 1324

原创 Redis持久化

本文介绍Redis的两种持久化策略RDB和AOF的使用场景和优缺点。

2023-08-27 09:23:18 186

原创 Redis Pipeline&Script

本文从pipeline的背景开始,介绍了pipeline的具体实现、与Shell pipeline的区别,以及与Script对比,希望能帮助你更好地理解和使用Redis。

2023-07-16 10:55:19 644

原创 Netty系列文章

1. Netty网络应用基础2. Java I/O3. IO/模型4. 网络应用编解码5. Netty Pipeline6. Netty EventLoopGroup&EventLoop7. Netty ThreadLocal&FastThreadLocal8. Netty Future&Promise9. Netty内存管理–(旧)PoolChunk&伙伴分配10. Netty内存管理–内存池空间规格化SizeClasses11. Netty内存管理–PoolChunk&PoolSubP

2023-07-09 10:40:47 296

原创 List, Set, Ordered-Set&Hash

本文对Redis中除String外的4种数据类型从基本特点,使用场景和底层实现三个角度做小结。

2023-07-02 10:36:15 292

原创 String类型

本文介绍了Redis中的String类型,以及由此延伸出的字节级和位级操作,最后总结了下常见的使用场景。

2023-06-24 11:20:11 346

原创 Redis诞生之前

Redis作为一个分布式缓存在日常开发中得到了广泛的使用,但Redis是怎么产生的,本文分享下个人理解。

2023-06-11 11:07:08 1043

原创 Netty ObjectPool

本篇咱们讨论了对象池的作用是复用对象,基于并发集合+保鲜控制这种全局实例的常规实现,最终重点介绍了Netty中基于线程颗粒度的MpscQueue+Handle的特别实现,希望帮助你建立起Netty对象池的全局视角。

2023-05-14 11:48:11 681

原创 Netty内存管理--内存分配器PooledByteBufAllocator

本篇聊聊直接使用的内存分配器PooledByteBufAllocator基于实际场景做了一些额外的优化。

2023-04-30 16:24:39 1138

原创 Netty内存管理--内存池PoolArena

想必你已知道了Netty中的内存规格化(SizedClass), Page和SubPage级别的内存分配, 但是具体使用者不应该关心应该申请page还是subpage。而且从过去的经验来说, 申请page/subpage的数量也是个动态值, 如果申请使用完之后就释放那使用内存池的意义就不大。Netty的实现中引入了分配器和内存池。其中分配器面向使用者, 解决统一申请问题。内存池负责完成内存的申请和复用管理

2023-04-30 16:20:28 1086

原创 内存管理--PoolChunk&PoolSubPage

想必你已知道内存池实现需要兼顾分配效率和空间利用率, 通过对实际业务的观察你会发现, 通常小内存的申请和回收是比较频繁的, 大内存使用相对较少。比如创建16个元素以内的链表或者顺序表比较常见, 有160个元素的比较少。因此, 针对大小内存申请分开考虑是个不错的注意。在Netty 4.1.73中就把尺寸分为2个大类, Normal和Small。其中small级别的分配是在normal的基础上进行。相当于分配都是按page分配, 但是针对小于page颗粒度的内存又多了一些独立管理。

2023-04-30 15:56:38 1455

原创 Netty内存管理--内存池空间规格化SizeClasses

内存池类似于一个内存零售商, 从操作系统中申请一整块内存, 然后对其进行合理分割, 将分割后的小内存返回给程序。

2023-04-30 15:54:03 1269

原创 Netty内存管理--(旧)PoolChunk&伙伴分配

本篇Netty中内存内存规格化,对应的管理颗粒Chuank和Page,以及Chunk中Page的分配与回收过程。

2023-04-17 20:35:40 558

原创 Netty_Future&Promise

本文介绍了Future的使用场景和基本实现, 并进一步探其对代码组织和资源消耗上的改善

2023-04-09 09:19:55 395

原创 细说ThreadLocal&FastThreadLocal

细聊JDK中的ThreadLocal具体实现和Netty中FastThreadLocal所做的优化

2023-04-02 10:45:43 625

原创 EventLoopGroup&EventLoop

EventLoop相关类的层级结构、任务调度和IO处理, 其中IO处理包括连接和数据读写。

2023-03-26 10:55:31 514

原创 Netty pipeline

本文介绍了Netty pipeline对链接创建, IO处理和消息处理的过程,并进一步探讨了pipeline的结构的特点。

2023-03-19 10:50:39 633

原创 网络应用编解码

本文从业务编解码和传输编解码两个方面讨论网络应用中的编解码问题。其中应用编解码层面本文讨论了评价方式和场景特点, 在传输编解码层面讨论了典型问题和解决方案。最后, 本文分享了Netty中对编解码的支持和以及部分个人使用经验。

2023-03-12 11:52:18 317

原创 I/O模型

本文介绍了Java网络应用中的几种IO模型,希望帮助在读的你能更好理解IO模型

2023-03-05 12:11:00 464

原创 Java I/O

关于IO, 想必你听过很多中I/O方式, 但是不同的场景下说法不同。有的是OS视角的, 有的是JDK本身支持的, 有的是纯实现视角。但是作为一个developer, 我希望你能先搞清楚上下文之后, 再去理解内容, 否则容易抬杠。这个上下文有横向和纵向两个维度。纵向维度包括JDK底层, JDK上层包装库, 开发框架(如Netty)等。横向的比如在JDK底层实现中支持BIO和NIO, 在JDK上层包装库维度支持BIO、NIO和AIO。开发框架Netty中包含BIO, NIO和OIO。

2023-02-26 11:41:46 380

原创 Netty网络应用基础

Netty网络应用下的基本概念,整体框架和应用分层结构,帮助你建立网络应用开发的基础地图。

2023-02-12 11:52:44 479

原创 Debug Python project managed by poetry under VSCode in attach mode

【代码】Debug Python project managed by poetry under VSCode in attach mode。

2022-11-30 10:29:12 760

原创 RPC client之OpenFeign

本文我们一起看看SpringCloud中的OpenFeign组件,探讨下其整体结构和带给我的启发。内容涵盖启用Feign,创建代理对象,到最终响应处理的整个过程。以上就是今天要讲的内容,本文介绍了OpenFeign在SpringBoot环境下如何启用@FeignClient注解,对应的BeanDefinition是如何注册的,BeanInstance是如何生成的,并简单分析了基于Feign的RPC调用过程。从内容上来看,基本覆盖了FeignClient的骨架内容。

2022-09-18 11:02:16 1829

原创 FeignClient 数据请求方式小结

基于SB/SC做微服务化改造,服务之间的HTTP请求大多是基于FeignClient来完成。本文对个人工作中遇到的使用方式做一个小结。本文对FeignClient在使用过程中遇到几种方式做了小结,期待对你有所帮助。...

2022-08-21 10:53:37 2743 2

原创 对ByteBuf设计的感想

最近以ByteBuf作为入口,开始了Netty的学习,在这里对个人的想法、看法做一个总结。本文总结了自己对ByteBuf设计实现上的一些感想,希望对你有所帮助。如果你能给我带来更多输入,欢迎交流。

2022-08-14 09:57:24 128

原创 聊聊CentOS系统调用

本文从计算机组成,操作系统角度结合个人经验分析系统调用,帮助你理解系统调用。系统调用指的是对操作系统暴露的API的调用。至于为什么调用OS的API,是因为OS提供了一个应用进程运行的基础,大多数程序离开操作系统是无法运行的。系统调用是怎么产生的呢?在编程语言层面,如果是需要操作系统支持的函数,其底层实现上会包装OS的API,最终以编程语言的普通函数一样暴露给开发者。因此,最终是否发生系统调用与进程要完成的任务有关。......

2022-07-31 15:12:04 298

原创 Prematurely reached end of stream

使用MongoDBcursor从中大批量拉取数据做ETL。

2022-07-24 11:32:21 2383

NEO4j.pdf入门与说明文档

存储图的数据库,包括关系,节点,和属性,以及节点遍历相关内容。该文档能帮助你实现对NEO4j数据库的入门学习

2012-03-19

空空如也

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

TA关注的人

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