
个人学习博客
DBWG
这个作者很懒,什么都没留下…
展开
-
为什么计算机二进制中,一个数减另一个数等价于正数加取补码的负数
为什么计算机二进制补码运算结果正确原创 2025-02-14 20:04:56 · 252 阅读 · 0 评论 -
GoF23种设计模式 简介
通俗速懂 7个面向对象设计原则和23个GoF设计模式原创 2025-01-02 14:21:06 · 958 阅读 · 0 评论 -
GoF设计模式——结构型设计模式分析与应用
适配器模式:解决不兼容接口的适配问题。桥接模式:解耦抽象与实现,增加系统的可扩展性。组合模式:通过树形结构统一处理单一对象与组合对象。装饰器模式:动态地在运行时为对象添加功能,增加系统的灵活性。外观模式:简化客户端接口,降低系统的耦合度。享元模式:优化内存和性能,适合大量相似对象的场景。代理模式:控制对象的访问,增强目标对象的功能,同时保持目标对象的独立性。这些模式的优点使它们在面对特定问题时成为非常有力的工具,能有效提升代码的可扩展性、灵活性和可维护性。原创 2024-11-23 16:43:36 · 1029 阅读 · 0 评论 -
并查集带压缩路径的find
简单看下代码就能掌握原创 2023-12-11 12:04:55 · 480 阅读 · 0 评论 -
pthread学习遇到的问题
一些奇怪的问题,一般搜不到原创 2023-12-05 21:39:01 · 415 阅读 · 0 评论 -
Reactor
epoll底层(红黑树) ; LT ET(边缘触发模式) ; Reactor原创 2023-09-09 15:55:04 · 145 阅读 · 0 评论 -
epoll 原理
正是select这些缺点,才有了poll。原创 2023-09-05 21:12:51 · 416 阅读 · 0 评论 -
高级IO 1
IO ; fcntl ; select原创 2023-09-04 21:58:20 · 92 阅读 · 0 评论 -
NAT与代理服务器
用来网络故障排查原因草图理解“位置”原创 2023-09-03 16:54:22 · 282 阅读 · 0 评论 -
mac帧 arp
以太局域网中,任何时刻,只能有一台主机在给另一台主机发送数据帧,否则可能会发生数据碰撞的问题。令牌环里只有拿令牌的人可以说话 --> 互斥锁的锁。用于两个设备(同一种数据链路节点)之间进行传递。就是经历很多的子网或者局域网。IP解决的是路径选择的问题。原创 2023-09-02 20:41:44 · 850 阅读 · 0 评论 -
IP初学习
首部长度指的是报头长度,用于分离报头和有效载荷。原创 2023-09-01 20:39:31 · 1550 阅读 · 0 评论 -
UDP TCP 报文内容
表示数据是从哪个进程来,到哪个进程去;后面详细讲;表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是15*4=60o URG:紧急指针是否有效 ——urgent 紧急的o ACK:确认号是否有效 ——Acknowledge character 确认字符o PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走 ——pusho RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段 ——reseto SYN:请求建立连接;原创 2023-08-18 01:15:45 · 831 阅读 · 0 评论 -
socker套接字
1.cerr和strcerror() ; 2.sockaddr_int结构体 ; 3.socket手册 ; 4.网络字节序类型 ; 5. 序列化和反序列化的一个重要原因原创 2023-08-05 20:21:09 · 250 阅读 · 4 评论 -
读者写者问题
互斥:只有一个能写或者读。同步:一个弄完另一个弄。原创 2023-07-31 22:54:48 · 80 阅读 · 0 评论 -
多线程(以及一些复习)
同步:只有 生产队列为满时是消费队列先跑,消费队列为满时是生产队列先跑 是确定的,这也是最重要的同步关系互斥:当他们为空为慢时只能有一个人访问共享资源其他情况不访问同一资源,访问不同下标,消费和生产就可以并发访问资源了。原创 2023-07-30 20:58:00 · 96 阅读 · 0 评论 -
特殊类的设计
右值走移动构造。原创 2023-07-29 20:22:21 · 81 阅读 · 0 评论 -
智能指针♍
rescorce acquisition is initialization原创 2023-07-28 14:39:12 · 92 阅读 · 0 评论 -
异常c++11
最后把捕获的异常(可以是两个)全部给到main里。捕获catch()里的类型必须和抛出的一样。2.一些可以没有的声明。原创 2023-07-27 16:25:46 · 75 阅读 · 0 评论 -
包装器function
左值可以取地址,右值不可以取,所以匿名对象编译不过。原创 2023-07-26 20:05:24 · 57 阅读 · 0 评论 -
C++11小复习
左值(Lvalue)指的是一个表达式或对象,具有内存地址并且可以被赋值。可以被取地址(&)操作符获取其内存地址右值(Rvalue)没有固定的内存地址。原创 2023-07-25 17:14:42 · 64 阅读 · 0 评论 -
右值引用学习笔记
可以获取地址的就是左值给左值取别名就是1.字面常量,表达式返回值,函数返回值2.左值既可以出现在等号左边,也可出现在等号右边。右值只能出现在等号右边3.右值引用&&4.右值引用引用后属性是左值,这样才能实现转移资源。原创 2023-06-21 16:48:59 · 73 阅读 · 0 评论 -
C++11学习笔记1
d2本质是构造加拷贝构造加优化。原创 2023-06-20 11:11:56 · 81 阅读 · 0 评论 -
哈希学习笔记
重复的插入set会失败,不会占用空间。再*8 等于 80亿bit。原创 2023-06-19 17:25:47 · 85 阅读 · 0 评论 -
红黑树学习笔记
2.rb_tree_node节点是个继承啊喂。3.取类模版的内嵌类型前面要加typename。因为编译器无法区分你取得是类型还是静态变量。6.类模版有点多,要有全局不然难看懂啊。1.库里set和map的封装模版。等类模版实例化后再在里面找。5.迭代器的“拷贝”构造。4.箭头简单复习一下。原创 2023-06-14 11:32:44 · 112 阅读 · 0 评论 -
map和set学习笔记
sort需要随机迭代器。原创 2023-06-05 19:21:22 · 111 阅读 · 0 评论 -
搜索二叉树学习笔记
1.缺省值必须是全局变量或常量。原创 2023-06-04 00:09:39 · 150 阅读 · 0 评论 -
多态学习笔记
其实更重要的问题是:如果继承的两个类都没有这个类的虚函数,那么这个虚函数放哪张表里。func1都重写了,调用的都是子类的func1,为什么两张表中这个函数的地址不一样。(64位下指针是8个字节;类比int去理解: (其实我没有类比,你得清楚传的参数是什么)(typedef一个函数指针原本写法,下一个图才是正确写法)如果继承两个类,有两张表,那么第二张表的地址在哪里?静态多态是通过重载和模板技术实现,在编译的时候确定。来实现,执行动态绑定,在运行的时候确定。3.p指向的仍是B的地址。(三同中的参数同指的是。原创 2023-05-24 21:07:03 · 116 阅读 · 0 评论 -
多态一些做题概念
重写即覆盖,针对多态;重写要求函数完全相同重定义即隐藏, 两者都发生在继承体系中;重定义只需函数名相同即可重载只能在一个范围内,不能在不同的类里(重载不涉及子类)(30条消息) 子类、父类之间实现函数重载_子类重载父类函数_bama2488313716的博客-优快云博客------被virtual修饰的成员函数称为虚函数virtual关键字只在声明时加上,在类外实现时不能加(friend也是吧)原创 2023-05-23 18:48:03 · 79 阅读 · 0 评论 -
继承学习笔记
int不能作double的引用,只能做double产生的临时变量的引用,而临时变量具有常性,不能修改,所以要加const。这样是声明a是变量b的引用。函数名相同就构成隐藏关系,所以要指定作用域。静态成员变量的继承和普通成员变量不一样。:效率上有损失,而且出了问题非常难分析。那么你这个父函数如何构造自己呢?栈帧规则:先定义的后析构。可以在子类也写个友元。原创 2023-05-20 21:04:02 · 79 阅读 · 0 评论 -
模版进阶学习笔记
模版声明和定义分离,会报链接错误没有交互就不知道要实例化成什么,所以不知道开多大空间就没有开分开写可以显示实例化来解决,但是失去模版的作用了声明和定义放到一起,直接就可以实例化,编译时就有地址,不需要链接:.hpp只是暗示你是个模版,和.h一样的。原创 2023-05-16 21:07:41 · 75 阅读 · 0 评论 -
Stack-优先级队列学习笔记
模版出了类转换思路。原创 2023-05-15 19:51:03 · 134 阅读 · 1 评论 -
List学习笔记
list后程学习笔记,以后转型做电子笔记了原创 2023-05-08 20:52:47 · 99 阅读 · 0 评论 -
int** returnColumnSizes真的非常奇特
直接了当的说一下,int** returnColumnSizes只是这么写了,没有初始化(没有指向任何元素)所以returnColumnSizes[0]用来存行数 (returnColumnSizes[0]就是。returnColumnSizes[0][i]用来存第i行的列数。然后二维数组得知道行数和列数,原创 2023-02-19 12:51:15 · 566 阅读 · 2 评论 -
关于建堆的一些时间复杂度
即为倒数第二层的节点个数,假设每个数都比儿子节点大,都要向下调整,调整需要调整1次(这里当然替换大的儿子节点)。我们发现向下调是对节点数多的调少量次,对上面节点数少的调多量次。即F(h)=2^(h-1) + 2^(h-2) +当然你得知道堆的物理结构是数组,小堆是下面的数大。(我们是用h计算,最后还是要回到节点个数)时间复杂度为 O(N*log₂N)而向上调是对节点数少的调少量次,对。所以F(h)=2^h-1 - h。①向下调(从下往上对每棵小树)所以时间复杂度为O(N)有2^h-1 = N。原创 2023-01-02 19:46:42 · 335 阅读 · 1 评论 -
堆(java和c++叫优先级队列)简单了解 (二叉树知识)
去举几个例子,根据取整还能得出 parent = (child - 1)/2。leftchild = parent*2 + 1 为奇数。rightchild = parent*2 + 2 为偶数。我们想的二叉树的图其实属于逻辑结构(便于理解,想象出来的)还有一种结构是物理结构(实实在在在内存是如何存储得)1.堆是完全二叉树,分为大堆和小堆。大堆:树中所有父亲都大于等于孩子。小堆:树中所有父亲都小于等于孩子。原创 2022-12-30 21:04:57 · 87 阅读 · 0 评论 -
一棵完全二叉树的节点数位为531个,那么这棵树的高度为()
讲解完全二叉树高度h和节点个数N之间的关系原创 2022-12-30 19:44:35 · 879 阅读 · 0 评论 -
char s[] = “\\123456\123456\t“;
2.\123是一个转义字符,而根据以下规定可知相当于ASCII码的第83个字符,即为'S'3.\t表示tab,是C语言中的一个转义字符,但是是一个字符长度。中如果一位~三位都是0~7的数字,那么这是一个。1.'\\' 用来表示 '\'以下程序段的输出结果是( )原创 2022-12-30 01:23:27 · 757 阅读 · 0 评论 -
某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树的叶子结点数为()
【数据结构二叉树题目】某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树的叶子结点数为()原创 2022-12-29 22:02:35 · 1851 阅读 · 0 评论 -
(性质)对于任意一棵二叉树,如果度为0其叶结点个数为n0,度为2的分支结点个数为n2,则有n0=n2+1
【数据结构二叉树性质】对于任意一棵二叉树,如果度为0其叶结点个数为n0,度为2的分支结点个数为n2,则有n0=n2+1原创 2022-12-29 21:53:50 · 2454 阅读 · 0 评论 -
在具有 2n 个结点的完全二叉树中,叶子结点的个数为()
(数据结构【二叉树】的题)在具有 2n 个结点的完全二叉树中,叶子结点的个数为原创 2022-12-29 21:35:52 · 2479 阅读 · 0 评论