当前位置: 首页 > news >正文

潍坊百姓网免费发布信息网广东知名seo推广多少钱

潍坊百姓网免费发布信息网,广东知名seo推广多少钱,遵义网站建设方案,设计网站公司只找亿企邦一、概述 进来在学go的端口检测部分#xff0c;但是自己写遇到很多问题#xff0c;又不知道从何入手#xff0c;故找来网上佬们写的现成工具#xff0c;学习一波怎么实现的。分析过程杂乱#xff0c;没啥思路#xff0c;勿喷。 项目来源#xff1a;https://github.com/…一、概述 进来在学go的端口检测部分但是自己写遇到很多问题又不知道从何入手故找来网上佬们写的现成工具学习一波怎么实现的。分析过程杂乱没啥思路勿喷。 项目来源https://github.com/XinRoom/go-portScan/blob/main/util/file.go 二、目录结构分析 总体来说这个工具主要三部分cmd(主程序、core核心框架部分、util工具部分后续的分析也从这三个部分开始讲解 三、util目录 此目录下主要有三个文件分别为file.go、log.go、shuffle.go以下逐一分析 1、file.go逐行读取文件内容 func GetLines(filename string) (out []string, err error) 主要内容为一个GetLines方法其接收一个文件名作为参数并返回文件中非空行的内容组成字符串切片和可能的错误主要作用是逐行读取文件并将非空行的内容添加到“out切片中。 func GetLines(filename string) (out []string, err error) {if filename {//先判断文件名是否为空为空则提示错误return out, errors.New(no filename)}file, err : os.Open(filename)//打开文件if err ! nil {return out, err}defer file.Close()//读取完记得关闭scanner : bufio.NewScanner(file)//读取文件的内容scanner.Split(bufio.ScanLines)//一行一行读取分隔for scanner.Scan() {//逐行读取并将文本内容追加到out切片中line : strings.TrimSpace(scanner.Text())if line ! {out append(out, line)}}return } 2、log.go日志记录 func NewLogger(filename string, std bool) *log.Logger 主要内容为一个 NewLogger方法它根据提供的参数创建一个新的日志记录器对象。该函数接受一个文件名和一个布尔值参数。 filename 参数用于指定日志输出的文件名如果为空字符串则表示日志将输出到标准输出stdout。std 参数是一个布尔值如果设置为 true则日志会同时输出到文件和标准输出如果设置为 false则只输出到文件。 这个函数的目的是根据参数创建一个日志记录器可以指定输出到文件还是标准输出并可以选择是否同时输出到文件和标准输出。 func NewLogger(filename string, std bool) *log.Logger {var out io.Writerif filename {out os.Stdout //如果传入的filename为空将out设置为标准输出} else {//如果不为空则打开这个文件outFile, _ : os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)if std {//如果 std为true则将输出同时定向到标准输出和文件中通过 io.MultiWriter 将os.Stdout 和打开的文件合并成一个多写入器out io.MultiWriter(os.Stdout, outFile)} else {//如果 std 参数为 false则直接将输出定向到打开的文件中out outFile}}logger : log.New(out, , 0)//使用 log.New 方法创建一个新的日志记录器对象 logger将输出对象 out 作为日志记录器的输出设置空的前缀并且不添加任何额外的选项flagreturn logger } 3、shuffle.go 主要包含3个方法NewShuffle、Get、IsUint16InList以及一个结构体Shuffle type Shuffle struct type Shuffle struct {rl []uint16 // 乱序序列存储的是一般轮次的乱序序列rl2 []uint16 // 最后一轮乱序序列(无法整除时使用)n uint16 // 乱序精度用来限制乱序序列的长度size uint64 //乱序序列的大小 } func NewShuffle(size uint64) *Shuffle 函数接收一个 size 参数作为生成乱序序列的大小。 // NewShuffle 局部乱序 func NewShuffle(size uint64) *Shuffle {if size 0 { //如果size为0 返回nilreturn nil}sf : Shuffle{size: size}// 创建一个新的 Shuffle 结构体设置其 size 字段为传入的值if size 100 {sf.n 100 //如果size100设置乱序精度为100} else {sf.n uint16(size)//否则设置乱序精度为size 的 uint16 类型。}//通过循环填充 rl 切片创建一般轮次的乱序序列。//使用 rand 包生成随机数种子对 rl 进行乱序化操作。//如果 size 无法整除 n则设置 rl2 切片并生成最后一轮乱序序列// 通用轮次sf.rl make([]uint16, sf.n)for i : uint16(0); i sf.n; i {sf.rl[i] i}// 洗牌方法r : rand.New(rand.NewSource(int64(size)))r.Shuffle(int(sf.n), func(i, j int) {sf.rl[i], sf.rl[j] sf.rl[j], sf.rl[i]})// 最后一轮无法整除时新建对应长度的rl2t : uint16(size % uint64(sf.n))if t ! 0 {sf.rl2 make([]uint16, t)for i : uint16(0); i t; i {sf.rl2[i] i}r.Shuffle(int(t), func(i, j int) {sf.rl2[i], sf.rl2[j] sf.rl2[j], sf.rl2[i]})}return sf } func (sf *Shuffle) Get(index uint64) uint6 Get 方法接收一个索引 index用于获取转换后的索引值。首先计算 t 为 index 对 sf.n 取模得到的结果。然后根据索引 index 与 n 的关系决定使用哪个乱序序列。如果无法整除则使用 rl2否则使用 rl // Get 根据索引获取转换后的索引值 func (sf *Shuffle) Get(index uint64) uint64 {t : index % uint64(sf.n)// 最后一轮无法整除时用rl2if index-tuint64(sf.n) sf.size {return index - t uint64(sf.rl2[uint16(t)])}return index - t uint64(sf.rl[uint16(t)]) } func IsUint16InList(code uint16, list []uint16) bool IsUint16InList 函数接收一个 code 和一个 list用于判断 list 中是否存在 code。 它遍历 list 切片如果发现存在与 code 相等的元素则返回 true如果遍历完 list 后都没有找到则返回 false。 func IsUint16InList(code uint16, list []uint16) bool {for _, e : range list {if e code {return true}}return false }
http://wiki.neutronadmin.com/news/184974/

相关文章:

  • 咸阳网站建设电话北京网络
  • 遵义建设厅网站常见网页制作工具
  • 重庆公司章程在哪里打印如何对seo进行优化
  • android做网站wordpress mu 下载
  • 跨境电商购物网站网站建设优化项目
  • 设计网站下载2023年企业所得税税收优惠政策
  • 网站建设的技术团队电脑网页无法访问如何解决
  • 做视频在线观看网站广东圆心科技网站开发网站模板设计
  • 个人网站怎么做代码WordPress模版二次元
  • 建个电子商务网站多少钱如何用dw做网站前端
  • 淘客做自己的网站软件项目实施流程
  • 惠州淡水网站建设公司深圳网站设计公司怎么样
  • wdcp 网站备份wordpress4.7无法安装
  • ps做网站动图东莞营销型网站建站
  • wap网站设计规范什么是三合一网站建设
  • 公司的网站怎么建设360建筑网忘记登入密码了怎么办
  • 通过邮箱查注册网站网络推广是什么职位
  • 商城网站的功能学网站开发多少钱
  • seo矩阵培训东莞债优化
  • 查看网站外链代码wordpress 还原
  • 怎样建设网站是什么做网站的困难
  • 网站模板开发主要作用网站页面创意
  • 专业做财务公司网站济南市住房和城乡建设局官网
  • 华为云助力企业网站安全保障优秀企业网站案例
  • 网站seo工具wordpress 下载文件
  • 合肥有哪些做网站的公司wordpress前端
  • 网站开发的程序平台重点实验室网站建设的意义
  • a8新媒体的案例免费seo快速收录工具
  • 超大型网站建设购物网站开发历史
  • 郴州网站建设培训个人网站建设与企业网站