- 博客(174)
- 资源 (2)
- 收藏
- 关注
原创 图(五):最短路径
定义:在一幅加权有向图中,从顶点s到顶点t的最短路径是所有从s到t的路径中权重最小者。(单源最短路径、单终点最短路径、单对顶点最短路径、每对顶点最短路径)引理:最短路径的子路径是最短路径。当且仅当加权有向图中至少存在一条从s到v的有向图路径且所有从s到v的有向路径上的任意顶点都不存在于任何负权重环中时,s到v的最短路径才是存在的。松弛(relaxation)操作Bellman-Ford...
2020-03-06 21:51:46 507
原创 图(四):最小生成树
最小生成树即权值最小的生成树。(无环,连接所有顶点的图,一定是树,即生成树(spanning tree))GENERIC-MST在算法的每一步中,确定一条边(u, v),使得将它加入集合A后,A&{(u,v)}仍然是某一最小生成树的子集。称这样的边为A的安全边(safe edge)。算法的关键是如何寻找安全边。理解:cut、light edge、crosses、resp...
2020-03-05 11:48:19 736
原创 图(三):图的遍历(BFS&DFS)
1、广度优先搜索(Breadth-first search)BFS是最简单的图搜索算法之一,也是很多重要的图算法的原型。在Prim最小生成树算法和Dijkstra单源最短路径算法中,都采用了与BFS类似的思想。BSF始终是将已发现和未发现顶点之间的边界,沿着其广度方向向外扩展。即算法首先会发现和s距离为k的所有顶点,然后才会发现和s距离为k+1的其他顶点。(层序遍历)广度优先搜索构造了一棵广...
2020-03-03 14:43:22 334
原创 图(二):图的表示
图的表示(1)邻接矩阵(adjacency matrix)(2)邻接表(adjacency lists)图G=(V, E)的邻接表表示由一个包含|V|个链表的数组Adj所组成,其中每个链表对应于V中的一个顶点。对于每一个u属于V,邻接表Adj[u]包含所有满足条件(u, v)属于E的顶点v。(3)邻接集(adjacency sets)(4)边数组(array of edges):所有边构...
2020-03-03 12:25:43 335
原创 图(一):基本概念
图是一组顶点和连接这些顶点的边的集合。在图中,路径是由边顺序连接的一系列顶点。简单路径是一条没有重复顶点的路径。环是一条至少含有一条边且起点和终点相同的路径。简单环是一条(除了起点和终点必须相同之外)不含有重复顶点和边的环。路径或者环的长度为其中所包含的边数。如果从任意一个顶点都存在一条路径到达另一个任意顶点,我们称这幅图是连通图。一副非连通的图由若干连通的部分组成,它们都是其极大连通子图。树...
2020-02-28 16:14:43 446
原创 数据链路层(data link layer)
1、数据链路链路(link)是一条无源的点到点的物理线路,而中间没有任何其他的交换点。即物理链路。数据链路(data link)在物理链路加上必要的通信协议。即逻辑链路。数据链路层作用:把网络层交下来的数据构成帧发送到链路上,以及把接受到的帧中的数据取出并上交给网络。数据链路层的作用:1)封装成帧;在报文的首尾添加帧界定符。2)透明传输;透明即通过数据链路层不改变报文内容,在报文中填充...
2020-02-18 21:58:52 1289
原创 Union-Find算法(Java)
union-find算法用于处理动态连通分量问题。(1)处理连通分量的问题1)找到元素所属的连通分量;2)判断两元素是否属于同一连通分量;3)合并两元素(连通分量)。(2)API(3)实现使用id[]数组来放置元素所属连通分量的标志(id),通过三种不同的实现来展示对算法改进的过程。1)quick-find2)quick-unionid[]数组用父链接的形式表示一片树林。...
2020-01-01 23:58:51 523
原创 泛型链表
使用c语言实现泛型链表主要是将链表的操作与具体的对象进行隔离。即链表的操作,只对链结点进行,与具体的对象无关。用户可以通过链结点获取具体的对象,完成想要的操作。通过链结点获取对象有两种常用的方式:(1)通过链结点的位置计算出该对象的位置;(2)直接在链结点中包含该对象的位置(指针)。具体链表操作的实现可以参考:https://blog.csdn.net/jiangxt211/artic...
2019-09-15 11:05:07 325
原创 C预处理
预处理器执行宏替换、条件编译以及包含指定的文件。#include指令:用于在编译期间把置顶文件的内容包含进当前文件中;#define指令:用任意字符序列替换一个标记;1、文件包含#include指令是一个将所有声明放在一起的好方法,它保证所有的源文件都具有相同的定义与变量(函数)声明。如果某个包含文件的内容发生了变化,那么所以依赖于该包含文件的源文件都必须重新编译。#include ...
2019-02-17 11:56:51 615
原创 二叉查找树(二)
The search tree data structure supports many dynamic-set operations, including SEARCH, MINIMUM, MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, and DELETE. Thus, we can use a search tree both as a dictionary...
2018-11-25 23:00:44 190
原创 散列表(hash table)
A hash table generalizes the simpler notion of an ordinary array. Directly addressing into an ordinary array makes effective use of our ability to examine anarbitrary position in an array in O(1)tim...
2018-11-11 21:33:24 305
原创 双链表(二)
#ifndef _MY_HLIST_H#define _MY_HLIST_Htypedef struct hlist_node { struct hlist_node *next; /* next element */ struct hlist_node **pprev; /* address of previous next element */} HNODE;t...
2018-11-11 17:56:34 186
转载 IEEE 802.1Q
IEEE 802.1QFrom Wikipedia, the free encyclopediaJump to navigationJump to searchIEEE 802.1Q, often referred to as Dot1q, is the networking standard that supports virtual LANs (VLANs) on an IEEE ...
2018-10-06 16:05:14 3012
转载 Ethernet frame
Ethernet frameFrom Wikipedia, the free encyclopediaJump to navigationJump to searchA data unit on an Ethernet link transports an Ethernet frame as its payload.[1]An Ethernet frame is preceded ...
2018-10-06 11:47:05 1539
转载 epoll用法(转载)
https://www.cnblogs.com/lojunren/p/3856290.htmlhttps://blog.csdn.net/shenya1314/article/details/73691088
2018-07-29 17:29:51 215
转载 编程珠玑番外篇-Q 协程的历史,现在和未来(转)
转自https://blog.youxu.info/2014/12/04/coroutine/编程珠玑番外篇-Q 协程的历史,现在和未来Comments本文原发于《程序员》2014年11月刊,发表时略有修改。 计算机科学是一门应用科学,几乎所有概念都是为了理解或解决实际问题而生的。协程 (Coroutine) 的出现也不例外。协程的概念,最早可以追溯到写作 COBOL 语言编译器中的技术难题。从磁...
2018-06-20 22:37:28 379
原创 字序与位序
1、字序对于跨越多字节的程序对象,我们需要建立两个规则:1)这个对象的地址是什么;2)在内存中如何排列这些字节。在几乎所有的机器中,多字节对象都被存储为连续的字节序列,对象的地址为所用字节中最小的地址。排列对象的中字节有两个通用规则:小端法(little endian)和大端法(big endian)。小端法即最低有效字节在最前面(低地址);大端法正好相反。That is, in a big en...
2017-07-10 22:49:17 1254
转载 C++静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非
2017-06-05 20:02:38 291
原创 网络协议(四)Socket编程之Unix
Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法。1)Unix域套接字往往比通信两端位于同一主机的TCP套接字要快;2)Unix域套接字可用于在同一主机上的不同进程之间传递描述符;3)Unix域套接较新的实现把客户端的凭证(用户ID和组ID)提供给服务器,从而能够提供额外的安全检查措施。Unix域中用于标识客户和服务端的协议地址是普通文件系统
2017-05-10 20:45:11 373
原创 网络协议(三)UDP
UDP(User Datagram Protocol):用户数据报协议,属于传输层协议。1、udp是无连接不可靠的数据报协议。其具有以下特性:(1)无连接,即发送数据前不需要建立连接;(2)尽最大努力交付,即不保证可靠交付;(3)面向报文,DUP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界;(4)没有拥塞(流量)控制;(congestion contro
2017-04-14 20:56:17 462
原创 队列(双链表实现)
队列(queue)需要满足FIFO(First In First Out)的要求。在是使用双链表实现队列时,需要注意下面三种情况:1)队列为空;2)队列只有一个元素;3)队列有多个元素。进栈(Enqueue)出栈(Dequeue)#pragma once#ifndef _MY_QUEUE_H#define _MY_QUEUE_Htypedef struct node { struct n...
2017-03-15 14:27:32 647
原创 C的多态
使用链表来放不同类型的对象。#pragma once#ifndef _MY_TEST_H#define _MY_TEST_H#include "mylist.h"typedef void FunA(int iVal);typedef void FunB(char *pc);typedef struct nodea { struct nodea *pNext; int k
2017-03-05 17:39:55 308
原创 结构
C语言提供两种结合不同类型的对象来创建数据类型的机制:结构(structure),用关键字struct声明,将多个对象集合到一个单元中;联合(union),用关键字union声明,允许用几种不同的类型来引用一个对象。(1)结构(struct)结构就是一个或多个变量的集合,这些变量可以为不同的类型,为了处理方便而将这些变量组织在一个名字之下。关键字struct引入结构声明。结构声明由包含
2017-03-04 16:56:57 302
原创 数组
C语言中的数组是一种将标量聚集成更大数据类型的方式。#include #include #include void PrintArray(int arr[], int n){ printf("array:\n"); for (int i = 0; i < n; i++) { // printf("%d\t", arr[i]); printf("%d\t",
2017-03-03 21:30:40 200
原创 查找算法
#include #include // 二分查找法int BinarySearch(int arr[], int n, int x){ int left = 0; int right = n - 1; int mid = 0; while (left <= right) { mid = (left + right) / 2; // mid = left + (righ
2017-03-01 17:50:38 200
原创 排序算法
两个数的交换void swap(int arr[], int i, int j){int tmp;tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}// 当交换的两个数相等或与自身交换时,下面两种实现不能用void swap(int arr[], int i, int j){arr[i] ^= arr[j];arr
2017-03-01 16:27:53 223
原创 网络协议(三)Socket编程之UDP
UDP(User Datagram Protocol):用户数据报协议1)无连接;2)尽最大努力交付;3)面向报文。#include ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,struct sockaddr *addr, socklen_t *addrlen);in
2017-02-28 21:56:09 661
原创 网络协议(二)Socket编程之TCP
TCP(Transmission Control Protocol):传输控制协议。1)面向连接的运输层协议,点对点连接;2)提供可靠交付;3)提供全双工通信;4)面向字节流。TCP连接的建立和终止1、TCP连接的建立1)服务器必须准备好接受外来的连接。由socket、bind和listen来完成被动打开(passive open)。2)客户通过调用connect发
2017-02-28 21:08:07 331
原创 线程
主要内容来自apue及网络Consistency Synchronization Race Deadlock线程(thread)是“进程”中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。线程是操作系统能够进行运算调度的最小单位。死锁(deadlock):是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作
2017-02-27 15:51:47 279
原创 硬连接(hard link)和软连接(symbolic link)
stat - display file or file system statusstruct stat { mode_t st_mode; /* file type & mode (permissions) */ ino_t st_ino; /* i-node number (serial number) */ dev_t
2017-02-25 16:47:03 8599
转载 ftp
http://www.cnblogs.com/hnrainll/archive/2011/02/16/1956539.htmlhttp://blog.csdn.net/junmuzi/article/details/8446060Linux FTP 服务器配置简单说明一. FTP 说明 linux 系统下常用的FTP 是vsftp, 即Very Securit
2016-10-15 01:01:11 302
原创 servr
/* * tiny.c - A simple, iterative HTTP/1.0 Web server that uses the * GET method to serve static and dynamic content. */#include "csapp.h"void doit(int fd);void read_requesthdrs(rio_t *rp);int
2016-09-22 00:05:39 1273
原创 shell(1)
#!/bin/bashcd test# get current time L_TIME=$(date +%4Y%m%d)echo "current time: $L_TIME"lmonth=$(expr substr $L_TIME 5 2)echo "lmonth: $lmonth"L_MONTH=$(date +%m)#lday=$(substr $L_TIME 7
2016-09-17 00:09:09 226
原创 HTTP协议
1 HTTP Message1.1 Message TypesHTTP messages consist of requests from client to server and responses from serverto client.HTTP-message= Request | Response; HTTP/1.1 messagesRequest and Res
2016-09-04 23:23:34 326
转载 ping实现
转自:http://www.cnblogs.com/luxiaoxun/archive/2012/10/17/2728607.html// Description:// This sample illustrates how an ICMP ping app can be written// using the SOCK_RAW socket type and IPPROT
2016-07-10 23:28:01 514
原创 HTTP——10 Status Code Definitions
HTTP状态码分为五大类。状态码为客户端提供了一种理解事务处理结果的便捷方式。1xx Informational100 Continue101 Switching Protocols2xx Successful 200 OK201 Created202 Accepted
2016-07-07 20:54:25 619
原创 HTTP之URL
1、URI是一类更通用的资源标识符,URL可以看成是URI的一个子集,提供了一种访问资源的手段。URI(Uniform Resource Identifier)是一个通用的概念,由两个主要的子集URL(Uniform Resource Locators)和URN(Uniform Resource Names)构成,URL是通过描述资源的位置来标识资源的,而URN则是通过名字来识别资源的,与资源
2016-06-11 23:47:07 655
原创 MyList
#include #include #include typedef struct ListNode { struct ListNode *pNext;} ListNodeSt;// 在链表尾部添加 ListNodeSt *AppendListNode(ListNodeSt *pStart, ListNodeSt *pNode){ ListNodeSt *pIter = pS
2016-05-18 01:02:30 518
原创 webserver
web基础Web客户端和服务器之间的交互用地是一个基于文本的应用级协议,HTTP(Hypertext Transfer Protocol, 超文本传输协议)。对于Web客户端和服务器而言,内容是与一个MIME(Multipurpose Internet Mail Extensions,多用途的网际邮件扩充协议)类型相关的字节序列。text/htmlimage/gifWe
2016-05-18 00:59:03 444
Visual_Assist_X_10.6.1859
2016-03-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人