吴俊贤的博客

我干了什么 究竟拿了时间换了什么

BoyerMoore字符串匹配算法好后缀表构建

书里面对好后缀的构建讲的内容太少,实现算法的时候发现有许多的问题,因此在这里详细介绍一些应该如何构造好后缀表。 符号说明 l:字符串的长度 goodSuffix:好后缀表数组名 后缀表数组 好后缀表可以用一个长度为l的数组来存着,暂且称之为goodSuffix数组,那么goodSuffix[i]就是我们要查的好后缀为i时候的移动值。goodSuffix[0]初始化为l。 ...

CGo之C字符串使用时的内存泄露问题

C字符串使用时的内存泄露问题 cgo官方文档中,在CString与CBytes处,指明了我们需要在使用完毕后,释放内存。如下 // Go string to C string // The C string is allocated in the C heap using malloc. // It is the caller's responsibility to arrange fo...

Hyperledger Fabric学习笔记

下列内容基于1.2版本文档编写而成。 系统架构 交易流程 1. 初始化交易 首先构建一个交易请求(transaction proposal),可以使用SDK创建请求。交易请求是调用chaincode函数来读写账本上的数据的请求。SDK会使用用户的密码学密钥给交易请求签名。 2. 背书节点验证签名并执行交易 背书节点验证: 交易请求格式正确 过去没有被提交(防止重放攻击...

Go箴言个人理解

像诗一样简练

前言 Go大牛Rob Pike在15年做过一次关于Go的演讲,提出了许多Go的箴言。这个网站总结了这些箴言。 这篇文章将会一一探讨这些箴言的意义,加上我个人浅显的见解。 Don’t communicate by sharing memory, share memory by communicating. 不要通过共享内存来通信,而是通过通信来共享内存 通过共享内存通信,大概意思是使...

Go静态库动态库使用

如何提供和使用闭源代码库

内容参考如下文章: http://reborncodinglife.com/2018/04/27/how-to-create-static-lib-in-golang/ 首先给出一个重要结论,Go语言并不支持使用只有二进制文件(.a与可执行文件)的库。 静态库编译使用 库编写者要做的事 假如我写了一个超级厉害的排序库(不会给你看代码的手动滑稽),库的位置在$GOPATH/sr...

Go语言学习笔记

包、变量和函数 包 import语句 包的层次 导出名 函数 函数返回多个值 命名返回值 变量 :=...

BCCSP接口使用手册

学习使用和定制BCCSP

BCCSP接口 官方实现使用方法 创建与初始化 使用BCCSP接口 源码简析 包结构 SW实现简析 密码学函数接口 初始化 主要函数逻辑 工厂 ...

LeetCode 557,翻转一个字符串里的单词

LeetCode第557题-翻转一个字符串里的单词 原题链接 输入一句话,然后把话里的单词,用空格分开的,翻转过来。例如: 输入:”This is a demo” 输出:”sihT si a omed” 挺简单,可以直接用String.split()函数分成单词字符串数组以后,一个一个单词反过来,拼接成结果字符串就ok了。代码如下: public class Soluti...

解决Android Studio中,gradle更新慢的问题

Android Studio突然叫更新Gradle至3.3版本,好吧,按了下更新。 下面一栏就一直在”Refreshing Gradle Project…“,貌似是在下载的,然后看了下网络监控,50kB/s,下到何时? 于是上网找了下方法,找到了这篇。 试了下,总结下我是怎么做的。 首先,打开工程目录下的/gradle/wrapper,里面有个gradle-wrapper.prope...

算质数集的算法

给定一个N,如何算这个范围里的所有质数呢? 先看定义:质数是除了1和它本身,没有其他因数的数。 从这个定义下手,很容易就能得到一个简单的算法。要判断一个数n是不是质数,从2开始测试,但是一直测到什么数呢?n/2?可以,因为再升上去,商就比2要小的,而质数需要整除,继续检验就没有意义了。其实范围可以更小,上限可以到n的平方根,因为其实过了n的平方根之后,商就会比n的平方根的数要小,而我们已...