- 博客(10)
- 收藏
- 关注
原创 基于LengthFieldBasedFrameDecoder手写一个简单的编码器解决tcp粘包拆包问题(Netty)
将消息分为消息头和消息体,消息头中包含表示消息总长度,根据应用层逻辑,只要达到指定的消息长度才进行处理,否则返回。(1).应用程序写入数据的字节大小大于套接字发送缓冲区的大小 ,产生拆包。(2).应用程序未启用Nagle算法,导致小包被合并,产生粘包。客户端发送了100次数据,服务端实际收到了29次。如下代码未使用编码器(被注释的代码)可以看到tcp粘包的问题得以解决。服务端接受数据handler。客户端发送数据handler。
2024-02-06 18:35:08 339
原创 通过自定义Map构造通用数据字典
最近再做业务的时候。遇到了这样一个场景。我需要从不同的数据源,拿到相关的配置,这些数据源可能是配置在远程apollo,也有可能是配置在数据库字典表里面的。总之配置来源非常的多且杂!因此本文通过自定义数据字典继承Map的方式,构造了一个易用且扩展性强的字典。
2023-08-27 22:20:24 185
原创 稀疏矩阵转置算法(C语言)
(参考数据结构教材,严蔚敏,吴伟民版 p99,多谢阅读,望对您有帮助)无论是几维的数组,在计算机中都是以一维数组的方式进行存储的。矩阵:相当于二维数组,它的存储,依然是用一维数组的方式进行存储。nxn的矩阵,在计算机空间上,需要nxn个空间。稀疏矩阵的压缩:将矩阵中的值为零或者为常数C的某c个数,不做存储(或者共用同样的空间,本题转置对0不做存储),压缩后原本nxn的矩阵,存储只需要nxn-c的空间下面以这样的M矩阵进行转置1 2 34 0 00 5 1转置后得N矩阵:1 4 02
2022-04-03 15:18:41 2912
原创 离散事件模拟(操作系统实验1,银行排队算法,C语言实现)
本算法用文字描述难以将清楚,笔者实力有限,做了8小时,一言难尽。出自C语言教材(严蔚敏,于伟民版)p65,B站这人思路讲的很好,大家不懂去看看,代码部分是笔者原创,不懂留言即可。相互学习,共同进步https://www.bilibili.com/video/BV1nE411u7n4?spm_id_from=333.337.search-card.all.click#include "stdio.h"#include "stdlib.h"#include "time.h"#define QUEUE_M
2022-04-01 22:22:49 1732
原创 单链表就地逆置算法(C语言版),为什么输出链表是逆序?
今天看到一个单链表逆置算法,想把自己的感悟分析一下题目:将线性表(a1,a2,a3,a4,a5,a6,a7,a8,an)逆转为(an,a8,a7,a6…,a1)对于这个题目,我第一时间的思路是把an节点找到,然后添到头节点的末尾,再找倒数第二个节点,添加到an节点的末尾,这样看来,算法复杂度太高了,第一次找需要n次,第二次需要找(n-1)次,依次类推,复杂度高达n!看了答案之后,幡然醒悟,何尝不用建立线性表时逆序的思路进行倒转呢(如图所示)访问节点时,每访问一个节点n,便将该节点n,插入头指针L.
2022-03-31 17:06:32 1958
原创 C语言栈实现括号匹配问题
栈(stack)结构体:typedef struct { char *base; char *top; int stacksize;}Stack;栈的基本操作pop{弹出栈顶元素},push{推入栈顶},Gettop{获取栈顶元素,不弹出},InitStack{初始化栈},IsEmpty{判断栈是否为空}void InitStack(Stack &s){ s.base = (char *)malloc(STACK_SIZE * sizeof(char)); s.top = s
2022-03-30 16:11:02 2194
原创 单链表实现多项式相加
运行结果如下图所示(注:作者本是学生,理解教材的基础上加以创作,代码有纰漏,不深刻处,请海涵,指教。多谢阅读):#include "stdio.h"#include "stdlib.h" typedef struct Nape { int c;//系数 int index;//指数 struct Nape *next;}Nape, *NapeList;void CreateNape(NapeList &n)//构建线性表{ n = (NapeList)malloc(size
2022-03-29 14:52:13 1449 1
原创 Java实现第k选择(线性时间选择)
package test2;import java.util.Random;import java.util.Scanner;public class xianxing{ public void geta(int a[]) { Random rd=new Random(); for(int i=0;i<10;i++) { a[i]=rd.nextInt(100)+1; } } public void printa0(int a[]) { System.out.print(“生
2021-05-13 10:17:20 746
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人