golang-标准库(math/rand)

rand包是go提供用来产生各种各样随机数的包,本文对这些产生随机数的方法做一下介绍。注意:rand生成的数值虽然说是随机数,但它其实是伪随机数,关于为什么是伪随机数,而不是真正的随机数,本文不做详细讲解,因为我也不是太清楚,只是提出这一点;简单说一下我的理解:真正的随机数是无规则可循的,就像抛硬币,正反面是真正随机的,这是一个真正的随机案例。计算机底层生成一个数值,究其根源它也是程序员们根据某种算法得到的数值,而是要是人为操控的计算就一定有规律可循,只是这个规律不是肉眼可见的。所以说是伪随机数。
阅读更多

golang-标准库(html/template)

这个标准库,是go实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。简单说就是对html,css,javascript进行安全转换;例如对html中的
这个标签的特殊字符<>进行转换。还有用于生成安全的html模版代码的方法。
与之相似还有另一个包 text/template,只是前者解析html,后者解析普通文本字符串而已。
阅读更多

golang标准库-crypto/hmac(加密哈希算法)

hmac算法是加密的hash算法,它需要一个hash算法(比如sha256获取md5等)和一个密匙key,在hash计算的过程中将密匙key混入,产生一个和原来hash算法相同位数的hash值。
在大多数情况下,我们甚至可以将hamc算法看做是加盐的hash算法(加盐是将一个随机字符串放在需要加密的密文前面或者后面,然后对这个拼接后的密文进行加密得到hash值)。
但它们的加密原理肯定不一样,虽然达到的效果是一样的,都是对密文混入一个第三方值,然后得到一个hash值。
阅读更多

golang标准库-crypto/md5(md5加密算法)

本文讲解如何使用go封装好的md5算法,不深入剖析md5算法原理。 首先我们要知道md5算法属于hash算法的一种,所以在了解md5之前,我们先认识一下go提供的hash接口。hash算法是保证只要输入的值不同,就一定会得到两个不同的指定长度的hash值。当前两个不同值产生相同的hash还是有可能的,只是这个可能性很小很小
阅读更多

golang标准库-log

log包实现了简单的日志服务,该包提供一些格式化输出的方法,属于fmt包的加强版;也可以自定义输出格式;用该包做开发中的日志打印是个不错的选择
阅读更多

golang标准库-flag

flag包是go提供的用来解析命令行参数的包,虽然os.Arg方法也能拿到命令行的所有参数,但它拿到的参数是没有格式和说明的,flag包能够解析 -port=8080 这类具有明确格式意义的参数,为程序提供明确的启动参数
阅读更多

golang标准库-io

io包提供了对I/O操作的基本接口。本包的基本任务是包装这些操作已有的实现,使之成为共享的公共接口,因为这些接口对底层实现包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的。 这个包在日常的开发中可能用的不多,本章主要对包的接口做说明,可以做的代码示例不多,具体的代码实例就用文件的I/O来举例,网络IO不好模拟。不过都是IO,原理上来说都是一样的
阅读更多