- 博客(25)
- 收藏
- 关注
原创 全网最全的Docker教程
Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何支持 Docker 的平台上。容器类似于虚拟机,但它们更轻量级、启动更快,因为它们共享宿主机的操作系统内核,而不是像传统虚拟机那样需要完整的操作系统。0. 首先安装下载了docker的环境后就会在主机启动一个docker Host主机(会有一个docker dame线程去获取对应的docker主机信息)。并提供客户端(命令行)的docker-cli方式操作主机的docker请求。此外,doc
2025-04-30 13:59:12
909
原创 设备通信技术选型:MQTT和AMQP
MQTT负责快,AMQP负责稳。MQTT和AMQP底层思路完全不同:一个为“轻量推送”,一个为“可靠通信”。测试指令讲求“快而且即刻”,测试结果讲求“准而且完整”。用MQTT发指令、用AMQP收数据,是最合理的工程设计。
2025-04-29 11:49:05
1274
原创 Etcd和Zookeeper和Nacos
详细、系统地梳理一下 etcd、ZooKeeper、Nacos 的联系与区别,包括定位、技术栈、功能特点、适用场景等等
2025-04-26 17:51:40
2549
原创 QUIC协议的核心原理
RTT概念:通信连接的一个过程(如一个TCP三次握手被成为1个RTT.TLS连接也被称为对应的连接)每个QUIC包有对应的序列号。传输失败就可以重传对应序列号的包。QUIC协议数据包的拆解过程。
2025-04-26 11:32:15
261
原创 HTTP到1.1、2、3
但是这一次请求中如果有一个数据传输失败就会造成HTTP对头阻塞(后续其他的数据不会再发送了)。或者把图片的域名区分进行发送获取(域名分片)。从应用层的数据会被封装为QUIC帧.并且把应用层的数据帧放到QUIC里面。QUIC帧会封装为QUIC数据包。还采取了HPACKE的压缩算法,要求浏览器只保存一张静态的只读的表(二进制存储)前提:HTTP2封装数据后还要使用TCP的段进行封装数据。并且如果是恢复的会话可以不用握手。如GET、PUT、DELETE、POST。属于应用层的可以提供用户访问资源的协议。
2025-04-26 11:11:02
456
原创 TCP和UDP的核心原理和区别
如果发送方连续收到3个重复的确认报文(即接收方收到重复的报文段),它会认为网络中发生了丢包,会立即重传丢失的报文段,而不会等到计时器超时。发送方在发送数据后,会启动一个计时器,等待接收方的确认。这个计时器的超时时间是根据网络的往返时间(Round - Trip Time,RTT)来估算的。如果TCP传输的数据多,会拆分成多个数据段。当发送方将数据分段后发送出去时,并不是每一个分段数据传输后都会立即收到一个回调的确认请求。考虑接收方能处理的数据:在建立了三次握手后进行返回接收方能接收多大的数据。
2025-04-25 23:28:56
381
原创 集线器、交换机的核心工作原理
一开始MAC地址表没有数据,那主机进行查找交换机下的其他主机MAC地址。就要进行ARP广播(谁是李四啊?),然后是李四的那个主机就反向传递之间的MAC数据到交换机中。然后进行MAC地址表的写入。集线器就是连接着不同的主机。并通过网络传输组织之间的主机的MAC地址,使得每台主机相当于都知道这个集线器下的其他主机信息。进一步,当多个主机进行广播时,会进入到泛红模式。改进就是进行VLAN(虚拟局域网)的方式进行划分:把之前大的范围缩小。缺点,这种一个主机信息广播模式。且多个主机不能同时发送数据。
2025-04-25 22:05:46
360
原创 计算机网络的差错检测方法
定义相同的除数(4位数据),然后进行进除法运算(在要校验数据后面加上3个0)。最后的余数放在要校验的数据后面。然后相加的结果区分令为校验信息。只要最后校验ip的16进制的二进制想加和校验和是否一样即可。首部检验和:核心:将IP的16进制转换为二机制,相加(这里如果溢出的为在末尾加1)但是缺点:是数据可能刚好可以被构造一个互补的数据。数据在不同主机传输时在传输路程中存在着数据为篡改。奇数校验:加一位,使得整体1的位数为奇数。偶数校验:加一位,使得整体1的位数为偶数。缺点:奇数位改变会被校验出来。
2025-04-25 21:26:25
206
原创 带你轻松通关计算机网络
可以不断细分模型,保留主要的应用层(数据表现),TCPIP层协议封装层,网络层(交换机,路由器、防火墙路由层),物理链路层(具体传输数据层)物理层:以光和电或者电磁波形式传输0/1二进制。数据传输时会经过不同的网络拓扑,其中节点需要使用中继器和集线器。注意实际中OSI作为参考,不一定运用七层:其统一网络通信方式的目的是解决主机之间的网络通信。交换机:MAC地址对不同设备的数据传输(中介),保存各个主机的MAC信息,便于查找访问。数据链路层:定向传输:将数据封装为帧,维护MAC地址(网卡是全球唯一的)
2025-04-25 18:55:51
135
原创 SaToken:企业级的Spring微服务全面的认证和授权
*** 空间权限认证:必须具有指定权限才能进入该方法* <p> 可标注在函数、类上(效果等同于标注在此类的所有方法上)* 使用了 @SaSpaceCheckPermission 的地方,其实就相当于也使用了 @SaCheckPermission 注解。*//*** 需要校验的权限码* @AliasFor(annotation = SaCheckPermission.class) 就可以让 Spring 正确地将这些属性值传递到 @SaCheckPermission 注解上。
2025-04-25 10:21:22
1348
原创 Spring企业级最全的Mysql分库分表方案和算法
初始化分表配置():在容器启动时自动执行方法,根据已有的空间(Space)动态生成所有实际表名,并更新 ShardingSphere 中的配置。动态创建表():针对特定类型和等级的空间(如旗舰版团队空间),动态创建以空间 ID 命名的新表(例如),并更新分片配置。与 ShardingSphere 深度集成:通过操作 ShardingSphere 的运行时元数据,实现动态规则的更新和数据库的重载。
2025-04-24 22:57:29
1054
原创 手撕企业级RPC|Java + Etcd + Vert.x 高性能分布式通信实战
设计类 Dubbo 的二进制协议,解决粘包/半包问题Vert.x 实现 TCP 通信服务器编解码器 + 请求调度器 + 客户端通信实现通过这个项目,我不仅巩固了 Java 基础,还收获了如下技能:🎯从业务到架构的跃迁思维:不仅写代码,还要考虑扩展性、可维护性。🧠设计模式实战应用:真正把工厂、装饰者、代理等设计模式用在实际项目中。⚙️掌握 RPC 核心原理:从原始 socket 到注册中心再到容错重试机制,全链路打通。📦熟练使用 Vert.x:了解其异步、高性能模型。🛠项目工程化思维。
2025-04-24 16:41:40
1069
原创 SPI和自定义Starter的区别和实践
SPI 是 Java 提供的一种服务发现机制,用于实现模块之间的解耦。Java SPI 允许框架在运行时动态发现并加载服务的实现类。Starter 是 Spring Boot 提供的自动配置模块的一种方式,是一组依赖的聚合,用于快速引入特定功能的自动配置。比较项SPI机制自定义Starter定义JDK原生服务发现机制Spring Boot自动配置机制用途动态发现实现类封装配置和依赖,快速集成注册方式配置文件配置文件加载方式显式加载Spring Boot 启动时自动加载适用范围。
2025-04-23 14:50:44
928
原创 MQTT、HTTP、WebSockcet的底层原理区别
HTTP:传统的请求-响应模式,适合网页、接口等一次性交互;WebSocket:支持双向通信,适合需要持续连接、实时交互的应用;MQTT:轻量级、基于发布/订阅的协议,专为低带宽、高延迟、物联网设备设计。
2025-04-23 14:40:45
1272
原创 ES从底层到使用进阶
分词器的选择:Ik_smart(ik_max_word:尽量拆分成精细范围,覆盖多种组合)和whitespace和standard和结巴分词。route默认是文档的_id,routing通过hash函数生成一个数字,所以在创建索引就确认了主分片的数量。FST 是一个有向图 ,每个节点表示一个状态,每个节点(状态)可以有多个出边 ,每个出边都有对应的标签和权重。在 FST 中,从根节点到任何其他节点的路径都代表一个键,并且权重表示该键的相关度或分值。文档:相当于一个类中的数据总和,相当于数据库的行。
2025-04-22 15:07:24
2133
原创 Redis底层原理和进阶
redis为内存操作,性能瓶颈在不在cpu,单线程减少线程切换和避免线程的上下文切换开销实现同步操作。通过IO多路复用保证单线程处理多连接数据结构做了极致的优化活跃于内存即纯粹的内存操作,性能表现出色单线程处理所有指令,避免线程上下文切换和同步原语的使用的开销pipeline:管道:一次性执行多条指令,通过管道一次性将要执行的多条命令发送给服务端,其作用是为了降低对性能的影响(网络调用次数减少,IO线程切换减少)redis单线程设计思想网络IO和键值对,对读写的内存数据库。
2025-04-22 14:55:43
428
原创 Kafka底层原理和使用
Kafka 为极致吞吐和流处理场景而生,其零拷贝、顺序写、无状态、高并发架构使其在性能上普遍高于 RocketMQ,而 RocketMQ 更强调灵活性、事务支持和一致性保障。如果你要选型:应用场景推荐日志收集 / 实时分析✅ Kafka金融 / 事务强一致场景✅ RocketMQ复杂过滤 / 多业务场景✅ RocketMQ流处理 / 大数据平台✅ Kafka。
2025-04-22 14:48:55
1316
原创 Kafka、ES、Redis、Mysql等中间件部署到公网
要将 Kafka、Redis、MySQL、Sentinel 和 Elasticsearch (ES) 部署到公网并且配置账号密码进行访问控制,下面是一个具体的步骤和配置示例。每个服务都有自己的安全配置和网络配置方式,我会逐一处理。
2025-04-22 14:45:46
689
原创 ELK 在企业项目中的搭建流程
配置指定日志文件路径,并设置滚动策略2. 确保 Linux 目录权限确保 Spring Boot 进程能写入/var/logs/3. 启动 Spring Boot 并检查日志运行查看日志输出4. 处理权限问题(可选)使用systemd让 Spring Boot 以特定用户运行这样,你的 Spring Boot 日志就可以正确地存储到,并且可以结合 ELK(Elasticsearch + Logstash + Kibana) 进行日志分析
2025-04-22 14:43:11
2587
原创 Nacos的配置动态生效
naocs文件应使用 YAML 格式,并按照 Spring Boot 配置的格式定义。),这样 Spring Boot 启动时可以最早加载 Nacos 的远程配置。Nacos 配置中心中的。
2025-04-22 14:37:57
583
原创 精心整理Mysql的索引、建表、SQL语句和ORM的规范
【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint( 1表示是,0表示否),此规则同样适用于odps建表。说明:任何字段如果为非负数,必须是unsigned。【强制】数据库名,表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。
2025-04-22 14:25:11
759
原创 企业级Java(spring框架)后端规范
JRebel for Spring Boot 是针对 Spring Boot 应用的热部署插件,可以加速 Spring Boot 应用的开发和调试过程,提供了实时更新代码的功能。CoPilot 是 GitHub 推出的一款基于深度学习技术的代码合作者工具,可以为开发者提供智能的代码建议和自动生成代码片段,加速开发流程。对于基本数据类型(int和double和bolean默认是0),但是对于他们的包装类需要检查是否为null。但是要注意null的情况。首先要知道拿到的值的类型和要使用的值的类型有没有异同。
2025-04-22 14:15:06
1097
原创 基于Canal以及消息队列实现MySQL的Binlog近实时同步
.canal的应用场景目前普遍基于日志增量订阅和消费的业务,主要包括基于数据库增量日志解析,提供增量数据订阅和消费数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻辑的增量数据处理
2025-04-22 14:00:45
1635
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅