- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 go 简单令牌桶实现
import ( "sync" "time" ) type stopWatch struct { time int64 } func (s *stopWatch) nowMicros(nowMicros int64) int64 { return nowMicros - s.time } func (s *stopWatch) getMicro() int64 { return time.Now().UnixMicro() - s.time } type rateLi..
2022-03-29 13:46:13
308
原创 c++ 模板类型推断
1.若T为引用,但不是万能引用: template<class T> void fun(T&); a)T不会被推导为引用类型,形参会被推断为引用类型(&类型) b)如果实参带const,实参的const属性会成为模板T的组成部分,且形参也会带上const属性(const &) 2.若T为引用,且带有const属性 template<class T> void fun(const T&); a) T不会被推断为const类型(即使实参.
2022-01-17 00:29:21
1952
原创 TCP time_wait
1.TCP特点:面向连接,字节流,可靠传输 (TCP发送端执行写操作的次数和接受端执行读操作的次数没有数量关系,即应用程序对对数据的发送和接受是没有任何边界的) 2.TCP头部 1.16位端口号:告知报文来自那个端口,并且将交付给哪个端口。 2.32位序号:一次TCP通信,一个传输方向上的字节流的每个字节的编号。假设A主机和B主机进行TCP通信,A发送给B的第一个报文中,序号被初始化为某个随机的值ISN,后续的TCP的序号将被系统设置为ISN加上该报文段的第一个值在总报文段的偏移。 3.32位
2022-01-07 21:21:27
1097
原创 IP数据报头部
1.4位版本号:对于ipv4,其值是4 2.4位头部长度:表示ip的头部有多少4字节。4位最大表示15,因此ip数据报头部最长是60字节 3.16位总长度:以字节为单位。最大的位2^16-1,但是由于MUT的限制,超过MUT的都被分片传输 4.16位标示:唯一的标示每个数据报。分片的数据报该位相同 5.13位片偏移:相对原始ip数据报开始位置的偏移。实际的偏移由该位偏移3位得到 6.3位标志:第三位为MF 7.8位生存时间:经过路由的最大数 8.8位协议:用来区分上层协议。ICMP:1 T..
2022-01-06 22:55:34
2298
原创 最大基环内向树
一、内向基环树性质: 1.是一个图,而不是一个树 2.所有节点的出度均为1 3.环外的节点指向环内的节点 二、如何找出内向基环树: 拓扑排序:记录所有节点的入度,拓扑排序后,入度为1的节点为环中的节点。 代码中g[i]代表i->g[i]的一条有向边 queue<int>q; for(int i=0;i<n;++i){ if(degree[i]==0){ q.push(i); }
2022-01-06 16:41:14
365
原创 C++MutexLock,MutexLockGuard实现(Linux muduo网络库 陈硕)
class EventLoop:boost::noncopyable { public: EventLoop(); ~EventLoop(); //事件循环函数 void loop(); void assertInLoopThread(){ if(!isInLoopThread()) absortNotInLoopThread(); } } bool isInLoppThread() const { return threadid_==CurrentThread::tid(); } .
2021-12-06 00:29:48
297
原创 线程安全的C++单例模式实现(Linux moduo 网络库)
单例模式 意图:一个类只能有一个实例,提供一个全局访问点 适用场景:一个类频繁的创建与销毁 关键:构造函数定义为private
2021-11-30 12:25:02
3419
江南大学数据可视化作业
2022-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人