- 博客(75)
- 资源 (1)
- 收藏
- 关注
原创 函数式编程?别费力气了,它就是个愚蠢的玩具
Functional Programming? Don’t Even Bother, It’s a Silly Toy函数式编程?别费力气了,它就是个愚蠢的玩具提示:本博文可能不再更新请移步我的公众号:跃寒或个人主页Jul 29原文It will make your productivity plummet它会使得你的生产力直线下降Perhaps you’ve heard of...
2019-08-02 21:39:53
4322
原创 初入Linux(Ubuntu18.04)必须要知道的事情!
1、为什么要入Ubuntu?越早入Linux越好,非科班的人更要努力(有时感觉累成
2019-06-12 12:26:02
8730
2
原创 03.1迷宮
遞歸(recursion)基本介紹程序調用自身的編程技巧稱為遞歸。遞歸算法相對於常用的算法如普通算法等,運行效率較低。在遞歸調用的過程中系統為每一層的返回點、局部量等開闢了棧儲存。遞歸次數過多容易造成棧溢出。應用場景8皇后問題漢諾塔階乘迷宮球和籃子用棧解決的一些問題注意:函數的局部變量是獨立的,不會相互影響,如果希望各個函數棧使用同一個數據,使用引用傳遞。...
2019-05-29 07:59:15
389
原创 02.4快速排序
快速排序(Quick sort)基本介紹快速排序(Quick sort)是對冒泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另一部分的所有數據要小,然後再按此方法對這兩部分數據分別進行快速排序,整個過程可以遞歸進行。(不穩定)代碼實例func QuickSort(values []int) { //是否符合排序條件 i...
2019-05-27 12:02:38
253
原创 02.3選擇排序
選擇排序(Selection sort)基本介紹選擇排序的工作原理是每一次從待排序的數據元素中選出最小或最大的一個元素,存放在序列的起始位置。然後,再從剩餘排序元素中繼續尋找最小或最大的元素,然後放到以排序序列的末尾,以此類推。(不穩定)代碼實現func SelectionSort(nums []int) { length := len(nums) for i := 0; i...
2019-05-27 12:01:32
158
原创 02.2插入排序
插入排序(Insertion sort)基本介紹插入排序的基本操作是將一個數據插入到已經排好序的有序數據中,從而得到一個新的有序數據,算法適用於少量數據的排序。(穩定)代碼實現func InsertSort(nums []int) { for i := 0; i < len(nums); i++ { //從數組中取出的第i個值 insertVal := nums[...
2019-05-27 12:00:19
217
原创 02.1冒泡排序
冒泡排序(Bubble Sort)基本介紹它重複地走訪要排序的元素列,依次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。(穩定)代碼實現var n intfunc BubbleSort(values []int) { flag := true vLen := len(values) //一共比較n-1次 for i := 0; i < vLen-1; i...
2019-05-27 11:59:38
135
原创 01.6哈希表
哈希表(Hash table)(散列表)散列表(Hash table,也叫哈希表),是根據關鍵碼值(Key value)而直接訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。這個映射函數叫做散列函數,存放的數組叫做散列表。給定表M,存在函數f(key),對任意給定的關鍵字值key,帶入函數後若能得到包含該關鍵字的記錄在表中的地址,責成M為哈希表...
2019-05-27 11:58:58
179
原创 01.5二叉樹
二叉樹(Binary Tree)基本介紹二叉樹是每個結點最多有兩個子樹的結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹通常被用於實現二叉查找和二叉堆。前序遍歷:首先訪問根,再前序遍歷左(右)子樹,最後先序遍歷右(左)子樹。中序遍歷:首先中序遍歷左(右)子樹,再訪問根,最後中序遍歷右(左)子樹。後序遍歷:首先後序遍歷左(右...
2019-05-27 11:57:49
296
原创 01.4鏈錶
鏈錶(linked list)基本介紹鏈錶由一系列結點組成,結點可以在運行時動態生成。每個節點包括兩個部分:一個是儲存數據元素的數據域,另一個是儲存下一個結點地址的指針域。單向鏈錶單鏈表一般應設頭指針指向開始節點,終端結點的指針域為空,即NULL。單鏈表的建立有頭插法和尾插法兩種。代碼案例type Node struct { no int//序號 name stri...
2019-05-27 11:56:34
142
原创 01.3棧
棧(stack)基本介紹棧又名堆棧,它是一種運算受限的線性表。其限制是僅允許在表的一段進行插入和刪除運算。這一端被稱為棧頂,相對的,把另一端稱為棧底。向一個棧插入新元素又稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰元素稱為新的棧頂元素。應用場景子程序的調用:在跳向子程序前,會將下個指...
2019-05-27 11:54:54
161
原创 01.2 隊列
隊列(queue)基本介紹隊列是有序列表,可用數組、鏈錶實現,先入先出(FIFO)的原則。隊列只允許在表的前端(front)進行刪除操作,在表的後端(rear)進行插入操作。順序隊列使用兩個指針管理順序數組,隊頭指針(front)指向隊頭元素;隊尾指針(rear)指向下一個入隊元素的儲存位置。隊尾插入一個元素時,rear增1;隊頭刪除一個元素時,front增1。當front=r...
2019-05-27 11:49:00
186
原创 01.1稀疏數組
稀疏數組(sparse array)基本介紹當數組中大部分元素都是同一值時可以使用稀疏數組保存以節省空間。一般用作保存二維數組(棋盤、地圖等)。應用實例如下二維數組:0100001000關鍵代碼://壓縮//每個結構體對應響應的數值type ValNode struct { row int col int ...
2019-05-27 11:46:22
145
原创 54、内容分发之二(应用层)
对等网络不是每个人都能在世界各地设立1000 个节点的CDN 来分发他们的内容。还有一个替代品可用,它简单易用,并且可以分发大量的内容。它就是对等网络( P2P, Peer-to-Peer )。P2P 网络的异军突起始于1999 年。第一个广泛的应用是大规模的犯罪行为: 50 万Napster 用户交换没有得到版权拥有人许可的盗版歌曲,直到Napster 在一片很大的争议声中由法院裁定被关闭。...
2019-03-22 13:23:34
564
原创 53、内容分发之一(应用层)
引言由于分发内容的任务与通信完全不同,它对网络提出了不同的需求。例如,如果Sally想与Jitu谈话,她可能向他的移动电话发出IP 语音呼叫。通信必须在特定的计算机上完成:它呼叫Paul 的计算机将不能做得很好。但是,如果Jitu 想观看他团队的最新板球比赛,他很幸福地可以从任何提供服务的计算机上获得视频流。他不介意计算机是Sally 的或者是Paul 的,或者更加可能的是一台Internet...
2019-03-21 20:13:38
593
原创 52、流式音频之三(应用层)
实时会议IP语音的使用形式各种各样。一种形式看起来像普通电话(老式电话?)一样,但是电话插入以太网,并通过网络发出呼叫。Pehr Anderson 是麻省理工学院的本科学生,当他和他的朋友为一个课程项目原型实现了这个设计,结果他们得到的成绩是“B ”。愤愤不平的他在1996 年创办了一个称为NBX 的公司,并开创了这种基于IP 的语音传输: 3 年后,他将公司以9000万美元出售给3Com。另...
2019-03-21 18:16:40
541
原创 51、流式音频之二(应用层)
1、流式存储媒体把注意力转移到网络应用,第一种情况针对早已存储在文件中的流媒体。最常见的例子是在Internet 上观看视频。这是视频点播( VoD, Video on Demand)的一种形式。其他形式的视频点播使用了服务提供商网络来传送影片,这种网络通常独立于Internet (例如,有线电视网络)。Internet 上充满了音乐和视频站点,这些站点流化存储在其上的媒体文件。实际上,处理...
2019-03-21 08:28:36
1090
原创 50、流式音视频之一(应用层)
引言Web 应用和移动Web 并不是网络应用领域中唯一令人振奋的发展。对许多人来说,音频和视频才是网络的圣杯。当提及“多媒体”这个词时,无论技术人员和商人都会不约而同地垂涎三尺。前者看到的是为每一台计算机提供E 语音和视频点播所隐含的巨大技术挑战,而后者则看到它同样隐含的丰厚的利润。虽然至少从20 世纪70 年代开始就有了通过Internet 发送音频和视频的想法,但大约自2000 开...
2019-03-20 21:33:34
11101
原创 49、万维网之四(应用层)
1、HTTP——超文本传输协议既然我们已经理解了Web 内容和应用,现在是时候考察在Web 服务器和客户之间传输所有这些信息的协议了。这就是超文本传输协议( HTTP, HyperText Transfer Protocol),由RFC 2616 说明。HTTP 是一个简单的请求。响应协议,它通常运行在TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息...
2019-03-20 08:06:37
698
原创 48、万维网之三(应用层)
动态Web页面和Web应用到目前为止我们使用的静态页面模型将页面作为多媒体文档处理,这些文档被方便地链接在一起。这是Web 初期的一个拟合模型,因为大量的信息都可在线查询。如今,围绕着Web 的许多兴奋点在于可将它用作应用程序和服务。应用例子包括在电子商务网站购买产品、检索图书馆目录、探索地图、阅读和发送电子邮件,以及进行文档合作。这些新的用途犹如传统的应用软件(例如,邮件阅读器和文字处理器...
2019-03-19 18:25:25
668
原创 47、万维网之二(应用层)
静态Web页面Web的基础是将Web 页面从服务器传输到客户端。在最简单的形式中,Web 页面是静态的。也就是说,它们就是存放于服务器上的文件,每次被客户端获取和显示表现的都是一样的方式。然而,仅仅因为它们是静态的,并不意味着页面在浏览器端是呆滞的。包含一段视频的页面也可以是一个静态Web 页面。正如前面提到的,在这个Web 中,大多数页面以HTML 语言来编写。教师的网页通常是静态的HτM...
2019-03-19 13:37:03
378
原创 46、万维网之一(应用层)
引言Web 是万维网( World Wide Web )的俗称,它是一个体系结构框架。该框架把分布在整个Internet 数百万台机器上的内容链接起来供人们访问。Web 刚出现时在瑞士被科研人员用来相互之间协同设计高能物理实验,仅十年间它就演变成今天被数百万人认为的“ Internet ”应用。Web 诞生于1989 年的欧洲原子能研究中心CERN。最初的想法是帮助大型研究组成员通过修改报告、...
2019-03-19 10:32:27
1697
原创 45、电子邮件之二(应用层)
1、邮件传送既然我们己经描述了用户代理和邮件消息,现在己经做好一切准备来进一步考查邮件传输代理如何将邮件从发件人中继给收件人。邮件传送采用的协议是SMTP。移动邮件最简单的方法是建立一个从源机器到目标机器的传输连接,然后在该连接上传输邮件。这是SMTP的最初工作方式。然而,经过多年的发展,邮件的传输逐步区分出了两种使用SMTP 的不同方式。第一种使用方式是邮件提交( mail submissi...
2019-03-18 22:07:29
1356
原创 44、电子邮件之一(应用层)
引言电子邮件或者更常用的E-mail,己经存在30 多年了(不止了)。由于比纸质信件更快更便便宜,电子邮件成为自早期Internet 出现以来最广泛的应用。在1990 年以前,它主要被用于学术界。在整个20 世纪90 年代,它变得普及起来并呈指数形式增长,以至于现在每天发送的电子邮件数量远远超过了传统的纸质邮件( snail mail )数量。其他形式的网络通信,比如即时消息和IP语音在近10...
2019-03-18 15:04:07
4183
原创 43、DNS域名系统(应用层)
应用层引言应用层下面的各层提供了传输服务,但它们并不真正为用户工作。在本章中,我们将学习一些实际的网络应用。然而,即使在应用层也仍然需要协议的支持,以便各种应用程序能够工作。因此,在开始介绍这些应用之前,我们将先介绍其中的一个协议。这个协议就是DNS ,它负责处理Internet 命名问题。之后,我们将介绍3 个实际应用:电子邮件、万维网( World Wide Web)和多媒体。我们将以对...
2019-03-17 14:57:54
1550
原创 42、传输层习题及参考答案
在传输原语中, LISTEN 是一个阻塞调用。试问这是严格要求的吗?如果不是,请解释如何使用一个非阻塞的原语。与正文中描述的方案相比,你的方案有什么优点?解:不是。LISTEN可能表示愿意建立新的连接,而不是阻止。当尝试连接时,可以给调用者一个信号。然后,它将执行,例如,OK或REJECT接受或拒绝连接。传输服务原语假设在两个端点之间建立连接的过程是不对称的,一端(服务器〉执行LIST...
2019-03-17 11:26:00
19993
4
原创 41、延迟容忍网络(传输层)
引言我们将通过描述一种全新的传输来结束本章,这种传输有朝一日可能会成为Internet的重要组成部分。TCP 和大多数其他传输协议建立在这样的假设基础之上:发送端和接收端通过一些工作路径持续地连接在一起,否则协议就会失败且数据将无法传递。在某些网络中,往往没有端到端的路径。一个例子是空间网络,比如低地球轨道(LEO)卫星网络,卫星频繁进出地面站的探测范围。一个给定的卫星或许只能在特定的时间与地...
2019-03-16 17:57:27
2698
原创 40、性能问题(传输层)
引言在计算机网络中,性能问题非常重要。当成百上千台计算机相互连接在一起时,无法预知结果的复杂交互过程很常见。这种复杂性常常会导致很差的性能,而且无人知道其中的缘由。在下面的章节中,我们将讨论许多与网络性能有关的问题,以便了解可能存在哪些问题以及如何处理这些问题。不幸的是,理解网络性能更像是一门艺术,而不是一门科学。这里很少有可在实践中应用的基础理论。我们能够做的最好方法是给出一些来自于实践的...
2019-03-16 15:20:05
1380
原创 39、Internet传输协议之TCP之二(传输层)
1、TCP计时器管理TCP 使用多个计时器(至少从概念上讲是计时器)来完成它的工作。其中最重要的是重传计时器(RTO, Retransmission Timeout )。当TCP 实体发出一个段时,它同时启动一个重传计时器。如果在该计时器超时前该段被确认,则计时器被停止。另一方面,如果在确认到来之前计时器超时,则段被重传(并且该计时器被重新启动)。于是问题就来了:超时间隔应该设为多长?这个问...
2019-03-16 12:06:47
850
原创 38、Internet传输协议之TCP之一(传输层)
引言对于大多数Internet应用来说,它们需要可靠的、按序递交的传输特性。UDP不能提供这样的功能,所以Internet还需要另一个协议。这就是TCP,它是Internet上的主力军。1、TCP概述传输控制协议(TCP)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。因为互联网络的不同部分可能有不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目...
2019-03-16 09:35:10
1118
原创 37、Internet传输协议之UDP(传输层)
引言Internet传输层主要有两个协议,无连接和面向连接各一个,互为补充。无连接协议是UDP,它除了给应用程序提供发送数据包功能并允许它们在所需层次之上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的协议是TCP,该协议几乎做了所有的事情。它建立连接,并通过重传机制增加了可靠性,同时还进行流量控制和拥塞控制,代表使用它的应用程序做了所有的一切。UDP是最简单的传输协议。由于UDP是...
2019-03-12 10:46:37
2164
原创 36、拥塞控制(传输层)
引言如果机器上的传输实体以太快的速度发送太多的数据包,就会使得网络变得拥塞,从而导致网络性能的严重下降。避免这个问题是网络层和传输层的共同责任。拥塞发生在路由器上,因此在网络层检测拥塞。然而,拥塞终究还是要传输层注入到网络的流量引起,因此控制拥塞的唯一途径是传输层放缓往网络中发送数据包的速度。本节将学习传输层的拥塞控制机制,然后将描述主机如何调节它们发往网络的数据包速率。Internet的拥...
2019-03-10 12:26:09
4841
原创 35、传输协议的要素二(传输层)
1.差错控制和流量控制差错控制确保数据传输具备所需的可能性,通常指所有的数据均无差错地传送到目的地。流量控制是防止快速发送方淹没慢速接收端。链路层中已经考查过这两个问题,回顾:(1)帧中携带一个检错码(比如CRC或者校检和)用于检测信息是否被正确接收(2)帧中携带的序号用于识别本帧,发送方在接收到 接收方成功接收后返回的确认之前,必须重发帧(超时后),这种机制称为自动重复请求(ARQ)(3)...
2019-03-08 21:00:52
519
原创 三级网络技术综合、应用题(2019、3)
引言如有纰漏,请在评论区无情指出,小寒实在害怕误导同学这类题没有图片情境辅助,有点难以整理。以下是小寒所尽力。根据未来题库整理。祝大家顺利过关!综合题:1、给定IP地址与子网掩码:地址类别(D是组播地址,E是保留地址;考试记住A\B\C类的分界地址即可,即128与192):A:1.0.0.0~127.255.255.255B:128.0.0.0~191.255.255.255...
2019-02-25 22:03:09
7487
8
原创 三级网络技术选择题考点整理(2019-3)
引言表示:1、1(1)都是表示大致在选择题第一题出现的考点,(~4)表示也可能出现在第4题附近。对于路由表信息的题目,使用排除法更好。选多排少,比如A、C、d选项的静态路由S后面跟了具体的IP地址,而B选项后面是一个VALN名称,那么可以排除B选项。根据未来教育题库整理。若有纰漏,请毫不留情评论指出。1、无线接入技术:目前来说只有Adnoc\WiFi\WiMAX\HiperLAN四种技...
2019-02-19 13:43:21
15525
8
原创 34、传输协议的要素一(传输层)
引言传输协议有些方面类似于数据链路协议。这两种协议都要处理错误控制、顺序性以及流量控制以及其他一些问题。两者之间也有很大的差别。这批差别是因为两种协议的的运行环境不同而造成的。在数据链路层,两台路由器通过一条有线或者无线信道直接进行通信;而在传输层,该物理信道被整个网络替代。这种环境差异对于协议涉及有很大的影响。首先在点到点链路上,无论是电路或者光纤,路由器不必指定它要与哪一台路由器进行通话...
2019-02-16 19:36:32
1010
原创 浏览器上网的一些原理
当你在浏览器地址栏中输入一个域名网址,或者一个ip地址时,你可以成功访问到希望的网站,但有时候需要科学上网才能成功。那么当你输入一个网址时,这背后发生了什么?1.从DNS域名解析开始。以域名,比如www.baidu.com代替ip地址更容易让人记忆深刻。DNS域名解析就是将域名解析成特定的ip地址。DNS域名解析是有一个顺序的,顺序:浏览器的DNS缓存——本地的DNS缓存——路由器的D...
2019-02-15 16:53:34
2952
原创 33、传输服务(传输层)
引言传输层与网络层一起构成了网络协议层次的核心。网络层使用数据报或虚电路技术为端到端通信提供了数据包交付服务。传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间扩展到了两台计算机上的进程之间,并且服务所需的可靠性程度独立于当前使用的物理网络。传输层为应用层使用网络提供了抽象的模式。在本章我们将学习传输层,包括它的服务和API设计的选择,其中设计可靠性、连接 和拥塞控制,协议(比如...
2019-02-15 16:40:08
3192
原创 kali。VM虚拟机kali没有WiFi无线适配器;conky的配置与自启动,终端字体重叠、终端启动快捷键。
前言这两天在VMware上装了一个kali,遇到诸多坑,供大家参考。1、虚拟机不支持内置的无线网卡无论是VMware还是VisualBox都不支持,这是两大主流的虚拟机软件。并非虚拟机出现了问题。需要自己购买无线网卡,对于台式机有多种接口可选,笔记本只能用usb接口的。无线网卡的选购有严格标准。Aircrack-ng的作者给出了建议,这是Aircrack-ng官网。如果网卡适用于Air...
2019-01-31 20:51:59
4098
生命3.0,关于人工智能的书籍
2018-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人