- 博客(49)
- 收藏
- 关注
原创 【TCP/IP网络编程】(02):基于TCP的客户端/服务端
本系列内容根据《TCP/IP网络编程》撰写.根据此书总结一些入门网络编程所需的知识,理解这些内容可以更好地让我们进入到后续的高级网络编程中。(以理解知识点为主,而不侧重于完整的代码编写)
2022-03-15 21:31:59
4349
原创 【TCP/IP网络编程】(01):什么是网络编程
本系列内容根据《TCP/IP网络编程》撰写.根据此书总结一些入门网络编程所需的知识,理解这些内容可以更好地让我们进入到后续的高级网络编程中。(以理解知识点为主,而不侧重于完整的代码编写)
2022-03-14 20:10:03
3094
1
原创 【C++11新特性】知识点总结(1)
Variaidc Templates(数量不定的模板参数)释义这个特性可以使得函数接收数量不定的参数进行处理。先看示例,比如我们常见的print函数,我们把它写成函数模板template<typename T,typename...Types>void print(const T& firstArg,const Types&... args){ cout<<firstArg<<endl; print(args...);}这里相当于把参数
2022-03-08 19:41:41
412
原创 【STL源码剖析】总结笔记(12):仿函数(Functors)与适配器(Adapter)
00 写在前面仿函数(functors)和适配器(adapter)就到了整个STL的最后部分。虽然这两部分内容不是很多,可以放在一起说。但作为STL六大部件中的两大部件,这两者还是有很多设计的精华在里面,值得我们学习。这也是【STL源码剖析】总结笔记的最后一篇。01 仿函数(Functors)仿函数的由来仿函数,顾名思义,就是类似函数的一种东西。在讨论仿函数之前,我们来看看它是如何产生的。在前面我们见识了很多算法,算法大都提供一个默认版本,但如果用户想根据不同的应用场景对算法进行变换,也是
2022-02-13 19:00:06
547
原创 【STL源码剖析】总结笔记(11):算法(algorithm)初识
00 写在前面算法,本质上就是解决问题的方法。我们经常见面的数据结构和算法系列,其实数据结构就是我们所说的STL中的容器,而算法就是解决各类问题的方法。在STL中说算法,更侧重的是算法的实现剖析而不是用法,这也是和课堂中的算法最重要的区别。在本系列的开始时,我们就有谈到过算法,我们说算法需要处理容器中的数据,迭代器就是算法和数据之间的桥梁。【STL源码剖析】总结笔记(1):开篇1可以看出迭代器(iterator)在算法中扮演着重要的角色。迭代器中的iterator category对算法影响深
2022-01-28 17:10:10
1198
原创 【STL源码剖析】总结笔记(10):哈希表(hashtable)探究
00 写在前面平衡二叉搜索树中的RB-tree作为一种效率表现和复杂度很平衡的结构,一直被用作STL set和map的底层支持。【STL源码剖析】总结笔记(8):红黑树(RB-tree)探究【STL源码剖析】总结笔记(9):set/multiset与map/multimap而还有一种结构,哈希表(以下称hashtable),在数据具有足够的随机性时,也能够保持在插入删除等操作上的“常数平均时间”表现。也是unordered结构的基础。hashtable更多的是经验设计01 概述hasht
2021-11-30 19:55:51
943
原创 【STL源码剖析】总结笔记(9):set/multiset与map/multimap
00 写在前面【STL源码剖析】总结笔记(8):红黑树(RB-tree)探究这篇的内容在红黑树的基础上就显得简单很多了。set和map需要了解其结构,在实际使用STL过程中最好可以做到轻松使用。因为是红黑树作为底层,所以要注意元素是会自动排序的。01 set/multisetsetset的底层是依靠红黑树来支撑的,所以会根据元素的key自动排序。对于set来说,key就是value,而且set不允许两个元素有相同的key。同理,我们也不可以修改set的元素值,这一点可以从后面set的iter
2021-11-30 19:52:54
749
原创 【STL源码剖析】总结笔记(8):红黑树(RB-tree)探究
00 写在前面前面已经把序列式容器(sequence)看的差不多了,接下来我们来看看关联式容器(associative)。就像我们在第一篇中说的一样,关联式容器分为set和map两大类,以及他们对应的衍生体multiset和multimap,还有也可以被看作关联式容器的unordered类(也就是原来非标准的hashtable)【STL源码剖析】总结笔记(2):容器(containers)概览01 关联式容器关联式容器中每个元素都有一个key和一个value,当元素被插入到关联式容器中时,会根据
2021-11-22 19:08:20
309
原创 【从零开始】KMP算法解析
00 写在前面KMP在字符串匹配中是一个很好用的方法,也有很多题目直接考察KMP算法。这次我们来了解一下KMP算法的代码求解过程。(建议先阅读相关资料了解KMP的手算思路)01 KMP概述KMP算法主要用在字符串匹配上。比如查找一个串中是否出现另一个串。暴力解法就是进行遍历,当不匹配时继续重头再来。而KMP可以记录之前已经匹配过的文本信息,防止出现重复匹配的现象。了解过KMP算法的小伙伴也知道,KMP最重要的就是求next数组,next数组也可以看作匹配时的信息数组,根据next数组给出的信息
2021-11-16 17:46:03
770
原创 【STL源码剖析】总结笔记(7):巧妙的deque
00 写在前面【STL源码剖析】总结笔记(6):iterator的设计与神奇的traits在掌握了迭代器的基本设计原理之后,我们就可以来看剩下的序列式容器的实现了。这时我们可以把注意力更多地集中在每一个容器本身的设计上。01 概述deque是一种双向开口的连续线性空间,也就是可以在头尾两端进行插入和删除操作。我们知道vector是单向开口的连续线性空间,在空间不足的时候需要另寻更大的空间并进行移植。为什么说deque巧妙呢,因为deque没有容量的概念,可以动态地增加空间。但是这种连续其实只是
2021-11-09 20:47:20
509
原创 【STL源码剖析】总结笔记(6):iterator的设计与神奇的traits
【STL源码剖析】总结笔记(6):iterator的设计与神奇的traits00 写在前面上次我们从list入手,说明了list的iterator在实现过程中的巧妙之处。link而这也是iterator在设计时的关键所在。01 iterator和traitsiterator是一种行为类似指针的对象,我们在了解list中iterator的实现过程中就会发现,想要设计list的iterator,就需要对list的实现结构非常熟悉。所以就把list iterator的开发工作交给了list的设计者,这
2021-11-03 19:14:02
238
原创 【STL源码剖析】总结笔记(5):认识迭代器的好帮手--list
00 写在前面说完vector,也了解了分配器(alloctor),接下来我们说说比较具有代表性的容器list。【STL源码剖析】总结笔记(3):vector初识【STL源码剖析】总结笔记(4):幕后功臣–分配器(allocator)为什么说具有代表性呢,因为list的空间不再连续,对空间的使用也更加精准。学习list也是帮助我们打开迭代器大门的第一步。01 概述list和vector是我们平时最常使用的容器。list就是链表,而且根据前置知识我们知道list是一个双向链表。list的节
2021-10-31 18:13:47
225
原创 【STL源码剖析】总结笔记(4):幕后功臣--分配器(allocator)
00 写在前面【STL代码剖析】总结笔记(3):vector初识在前面对于vector的分析中,我们遇到了allocatortemplate<class T,class Alloc=alloc>分配器是贯穿所有容器的存在,即使我们在使用各个容器时并不会用到它,但在背后的空间配置都是分配器的功劳。这次让我们读懂allocator的原理,帮助我们更好地理解STL。01 malloc()所有的分配在最终都会走到malloc()在c++的层面上也就是operator new(),
2021-10-28 19:02:15
483
原创 【STL源码剖析】总结笔记(3):vector初识
00 写在前面vector是我们在学习c++过程中最早接触也是比较常用的容器之一,从vector入手可以更加容易地理解STL的组织架构。这里我们侧重于vector的内部结构,而vector提供的接口操作不是我们的重点,使用方法可以参考cppreference。01 概述array我们经常使用,但它是静态空间,不能做到动态分配内存。大小在一开始就已经固定了。vector和array很相似,区别在于vector是动态空间,它的内部机制会自行扩充空间以容纳新元素。也不需要像array一样在使用大空间前申
2021-10-26 19:58:15
538
原创 【STL源码剖析】总结笔记(2):容器(containers)概览
00 写在前面容器(containers)是STL的重要组成部分之一,也是非常值得我们深入研究的部分。各种vector、map、set的使用极大地提高了我们解决问题的效率。每个容器内部都有着其独特的实现方式以及一些需要我们了解的要点,这些会是文章中的侧重点。01 容器的结构与分类概述容器大致分为序列式容器(Sequence),关联式容器(Associative)和无序容器(Unordered),无序容器也可以归为关联式容器内。分类序列式容器(Sequence)array:数组,是
2021-10-22 17:47:38
354
原创 【STL源码剖析】总结笔记(1):开篇
00 写在前面STL作为C++标准库中的重要组成部分,在学习C++过程中非常重要。这个可以复用的组件库更像是一个包罗万象的“框架”。侯捷老师对于STL的了解之深也使我受益匪浅。而《STL源码剖析》这本书也是集精华于一体,深度探索了对于STL的各个部分。配合老师的视频食用极佳。从这篇开始,我想根据视频和书籍的主要内容做一些整理以及一些理解部分的记录。因为视频部分和书籍部分不完全重合,又是各有精华,所以十分值得去整合在一起理解学习。学习STL需要读者有一定的C++基础能力,且有一些使用STL的经验,这
2021-10-21 21:17:21
705
原创 树莓派搭建全功能NAS服务器(07):管理你的书库&随心阅读
写在前面书籍是人类进步的阶梯。除了影音娱乐能丰富我们的精神世界以外,读书当然也是必不可少的一环。这次我们来说说书籍管理。如果你平日里很喜欢读书,那么整理自己的书籍库是很有必要的。同样不只是用于服务器,本地书库也完全可以管理最后我们再谈谈一些专业性的一些pdf书籍搜索查找的方法。书籍整理思路对于书籍的整理其实和影音库的整理方法很类似。书籍的资源是一方面,信息又是一方面。1.首先需要一款好用的书籍管理工具,然后准备好自己的书籍资源。2.整理元数据(类似刮削)3.修改更正元数据,再绑定
2021-10-19 20:29:56
720
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人