2022
04-07
04-07
Go中使用加密算法的方法
目录哈希算法加密模式对称加密⾮对称加密椭圆曲线加密算法ECC数字签名字符编码/解码巨人的肩膀哈希算法 md5128bit,16字节如:md5(“helloworld!”)=fc3ff98e8c6a0d3087d515c0473f8677//32位16进制数字funcTest(t*testing.T){//方法一str:="helloworld!"has:=md5.Sum([]byte(str))md5str1:=fmt.Sprintf("%x",has)//将[]byte转成16进制t.Log(md5str1)//方法二w:=md5.New()io.WriteString(w,...
继续阅读 >
目录一、概述二、匹配关键词三、算法实现3.1、构建存储结构3.2、匹配关键词3.3、完整代码四、其他用法4.1、添加通配符一、概述计算机操作系统中的进程状态与切换可以作为DFA算法的一种近似理解。如下图所示,其中椭圆表示状态,状态之间的连线表示事件,进程的状态以及事件都是可确定的,且都可以穷举。DFA算法具有多种应用,在此先介绍在匹配关键词领域的应用。二、匹配关键词我们可以将每个文本片段作为状态,例如“匹配关键...
目录一、基本思想二、代码实现三、总结一、基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序...
目录一、链表排序二、另外一种链表排序方式三、比较两种排序的效率四、下面通过交换结点实现链表的排序一、链表排序最简单、直接的方式(直接采用冒泡或者选择排序,而且不是交换结点,只交换数据域)//线性表的排序,采用冒泡排序,直接遍历链表voidListsort(Node*&head){inti=0;intj=0;//用于变量链表Node*L=head;//作为一个临时量Node*p;Node*p1;//如果链表为空直接返回if...
目录一、拓扑排序的介绍二、拓扑排序的实现步骤三、拓扑排序示例手动实现四、拓扑排序的代码实现五、完整的代码和输出展示一、拓扑排序的介绍拓扑排序对应施工的流程图具有特别重要的作用,它可以决定哪些子工程必须要先执行,哪些子工程要在某些工程执行后才可以执行。为了形象地反映出整个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶点代表活动(子工程),图中的有向边代表活动的先后关系,即有向边的...
目录一、最短路径问题介绍二、Dijkstra算法介绍2.1、算法特点2.2、算法的思路三、Dijkstra算法示例演示四、Dijkstra算法的代码实现(c++)一、最短路径问题介绍问题解释:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)SPFA算法这篇博客,我们就对Dijkstra算法来做一个详细的介绍二、Dijkstra算法介...