Go语言中文网 为您找到相关结果 3411

从设计到开发,实现一个人人都可以简单使用及管理的工作流系统

工作流介绍 工作流(Workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。 工作流在IT领域不算是“新人”了,工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更加高效。 我们通过工作流可以节省很多不必要的时间,预设置好的处理人,可以让我们不必反复的问别人谁负责此节点;通过任务来实现最后的操作,可以让我们减少很多人力成本,当然想要实现一套完善、简单、通用、方便管理的工作流系统也是非常不容易的...阅读全文

博文 2020-06-18 02:32:45 b0ec9dbb2519

Go语言(十七) 配置文件库项目

配置文件库项目 简介 用途: 解析ini类型的配置文件 知识点: 主要基于反射 ini配置文件的解析,配置文件如下 ;config file [server] host = www.baidu.com port = 8080 [cartdb] user = root.xxx password = root host = localhost port = 3306 database = cartdb rate = 1.2 需求分析 拆离出动态配置 映射数据到项目数据结构中-包含配置文件读取(UnMarshalFile)和写入(MarsharFile)两个功能 代码部分 package oconfig import ( "fmt" "io/ioutil" "reflect" "strconv" ...阅读全文

博文 2020-05-03 01:33:11 wx5b285b48ed74e

Golang 实现自动清理日志,可用于生产环境 (2)

新建:go.mod 新建:clear-dick.go ,代码如下: package main import ( "auto-clear-log/utils" "auto-clear-log/utils/color" "bytes" "flag" "fmt" "github.com/shirou/gopsutil/disk" "gopkg.in/yaml.v2" "io/ioutil" "log" "os" "path" "path/filepath" "regexp" "sort" "strings" "syscall" "time" ) type Conf struct { Dir string Prefix string Suffix string BeforeTime int64 `y...阅读全文

博文 2020-08-28 19:32:40 老王知识加油站

golang-nsq系列(四)--源码解析总结篇

1. 前言:为什么要使用 MQ 消息队列 随着互联网技术在各行各业的应用高速普及与发展,各层应用之间调用关系越来越复杂,架构、开发、运维成本越来越高,高内聚、低耦合、可扩展、高可用已成为了行业需求。 一提到消息队列 MQ(Message Queue),我们会想到很多应用场景,比如消息通知、用户积分增减、抽奖中奖等,可以看出来 MQ 的作用有:流程异步化、代码解耦合、流量削峰、高可用、高吞吐量、广播分发,达到数据的最终一致性,满足具体的业务场景需求。 本文将从 MQ 比较、NSQ 介绍、源代码逻辑、亮点小结等方面进行解析,以期对 NSQ 有较为深入的理解。 2. 主流 MQ 比较 目前主流的 MQ 有 Kafka, RabbitMQ, NSQ, RocketMQ, ActiveMQ,它们的对比...阅读全文

博文 2019-12-12 00:32:40 热爱coding的稻草

细说反射&reflect

- 基本介绍 * 反射可以在运行时动态获取遍历的各种信息,比如变量的类型(type),类别(kind) * 如果是结构体变量,还可以获取到结构体本身的信息,(包括结构体的字段,方法) * 通过反射,可以修改变量的值,可以调用关联的方法 * 使用反射,需要import("reflect") - 反射常见应用场景又以下两种 * 不知道接口调用那个函数,根据传入参数在运行时确定调用的具体接口,这种需要对函数或方法反射,例如以下这种桥接模式,比如 func bridge(funcPtr interface{},args ...interface{}) * 第一个参数funcPtr以接口形式传入函数指针,函数参数args以可变参数的形式传入,bridge函数中可以用反射来动态执行funPtr函数 * ...阅读全文

博文 2020-07-17 15:32:55 code

Go Web 编程--如何确保Cookie数据的安全传输

什么是Cookie Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。 Cookie主要用于以下三个方面: 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息) 个性化设置(如用户自定义设置、主题等) 浏览器行为跟踪(如跟踪分析用户行为等) Go语言如何表示Cookie 在Go的net/http库中使用http.Cookie结构体表示一个Cookie数据,调用http.SetCookie函数则会告诉终端用户的浏览器把...阅读全文

博文 2020-03-08 16:33:04 Kevin

Golang中管理程序版本信息

我们都知道在一些 Golang 写的程序中,默认会有 version 或 -v 相关的参数来输出软件版本信息,这些版本信息里可能包含软件版本,git 中的 commit 记录,构建时间、构建环境等信息,那么这些信息都是如何在 Golang 程序中进行维护和管理的呢?请看👇. 示例 比如我们常用的 Golang 开发的程序是这样输出版本相关信息的: # k8s的客户端程序版本$ kubectl version -o json --client{ "clientVersion": { "major": "1", "minor": "10", "gitVersion": "v1.10.11", "gitCommit": "637c7e288581ee40ab4ca210618a89a555b6e7...阅读全文

博文 2020-06-27 20:34:19 BGBiao

Go的调试工具:gdb vs dlv

GoLand编辑器虽然很强大,但是在展示内存及堆栈信息这一块还是比较的弱,有可能是我的姿势不对,所以,开始切入了gdb调试,但是gdb踩到了坑,并没有解决,也就引发了gdb与dlv的对比了 gdb 安装 yum install ncures-devel wget http://ftp.gnu.org/gnu/gdb/gdb-8.2.tar.gz tar zxf gdb-8.2.tar.gz cd gdb-8.2 make && make install 进入调试 go build -gcflags '-N -l' main.go gdb main 使用 启动调试程序(gdb) [lday@alex GoDbg]$ gdb ./GoDbg 在main函数上设置断点(b) (gdb) b mai...阅读全文

博文 2019-08-15 20:32:39 tyloafer

golang reflect 反射

package main import ( "fmt" "reflect" ) // reflect 反射 type Student struct { Name string `json:"name" jike:"名字"` Score int `json:"score" jike:"成绩"` } func main() { s1 := Student{ Name:"xiaomaike", Score:666, } t_obj := reflect.TypeOf(s1) // TypeOf() 查看对象类型 //fmt.Printf("%#v\n", t_obj) //fmt.Println(t_obj) //fmt.Print(t_obj.Name(), t_obj.Kind()) // 类...阅读全文

博文 2020-04-10 23:32:42 小麦客

HTTP2服务器推送的第一次尝试

来自公#众#号:新世界杂货铺 在HTTP1.x中,访问一个页面,浏览器首先获取HTML资源,然后在解析页面时增量地获取其他资源,服务器必须等待浏览器发出请求后才下发页面内资源。而服务器实际上是知道页面内资源有哪些的,如果服务器能够在浏览器显式请求资源之前就将资源推送到浏览器,页面加载速度将会大大提示,这也是本篇的主旨。 本篇主要分为两个部分,第一部分是用go实现的服务器推送例子,第二部分是自签名证书。为什么会有自签名证书,这里笔者先卖个关子,继续阅读后文将会守得云开见月明。 服务器推送例子 目前仅有HTTP2支持服务器推送,HTTP1.x不支持服务器推送,那我们在代码中应该如何判断当前服务器是否支持推送? 在Go中,我们通过判断http.ResponseWriter是否实现了http.Pus...阅读全文

博文 2020-10-19 10:32:44 新世界杂货铺

ElasticSearch CURD操作案例(三)

参考文档https://pkg.go.dev/github.com... package main import ( "context" "fmt" "reflect" "github.com/olivere/elastic/v7" ) var client *elastic.Client var host="http://127.0.0.1:9200" type School struct { TeacherName string `json:"teacher_name"` StudentName string `json:"student_name"` } // 初始化es func init (){ clients,err:=elastic.NewClient(elastic.SetU...阅读全文

博文 2020-06-11 17:34:15 code

redis 学习笔记

#### redis安装 ###### linux 目录结构 * /bin&/sbin ;kernel 二进制可执行程序 * /usr/bin&/usr/sbin&/usr/lib ;(unix software resource) ubuntu/BSD/centOS... 等系统默认自带二进制 可执行程序/动态库 或 通过包管理工具(apt-get/yum)安装的二进制 可执行程序/动态库 * /usr/local/bin&/usr/local/sbin&urs/local/lib ;预留的安装目录, 用于存放用户手动编译安装的二进制 可执行程序/动态库 * /opt ;预留的安装目录, 用于存放用户通过软件安装包安装的大型软件 ###### redis 手动编译安装 ```makefil...阅读全文

Golang数据结构-线性表

基本概念 定义:零个或者多个数据元素的有限序列,在复杂的线性表中,一个数据元素可以由若干个数据项组成。 直接前驱元素:若线性表记为(a1a2a3...an),则表中a2领先于a3,则称a2是a3的直接前驱元素,且有且仅有一个直接前驱元素 直接后继元素:称a3是a2的直接后继元素,且有且仅有一个直接后继元素 线性表的长度:线性表的元素个数n,为线性表的长度,随着线性表插入和删除操作,该值是变动的,线性表的存储长度一般小于数组的长度 数组的长度:存放线性表的存储空间的长度,存储分配后这个值一般是不变的 空表:长度n为0时,该线性表为空表 地址:存储器的每个存储单元都有自己在内存的编号,简称为地址 线性表的存储 顺序存储结构 线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素...阅读全文

博文 2020-05-30 03:32:48 也疯狂

Go Strings 源码

模板引擎对LaTeX支持不太好,可以查看静态页面:链接 个人主页 Join Join 方法在字符串拼接的时候使用Builder,通过计算出Builder的大小,只需要分配一次空间。 // Join concatenates the elements of its first argument to create a single string. The separator // string sep is placed between elements in the resulting string. func Join(elems []string, sep string) string { switch len(elems) { case 0: return "" case 1: ret...阅读全文

博文 2020-03-30 23:33:25 Jupiter_Van

golang的time使用

time应该是开发中比较常用的库了,常见方法说明:package main import ( "time" "fmt" ) func main() { a := time.Now().Unix() fmt.Println("时间戳---", a) // 2006-01-02 15:04:05 记住这一刻 b := time.Now().Format("2006-01-02 15:04:05") fmt.Println("格式化时间", b) /** func (t Time) Add(d Duration) Time Duration如下 const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond =...阅读全文

首次!这样搭建SpringBoot脚手架,整合OSS效果翻倍

1. 前言 文件服务器是一个应用必要的组件之一。最早我搞过FTP,然后又用过FastDFS,接私活的时候我用MongoDB也凑合凑合。现如今时代不同了,开始流行起了OSS。 Gitee: gitee.com/felord/kono day06 分支 欢迎Star GitHub: github.com/NotFound403… day06 分支 欢迎Star 2. 什么是OSS 全称为Object Storage Service,也叫对象存储服务,是一种解决和处理离散单元的方法,可提供基于分布式系统之上的对象形式的数据存储服务,具有可拓展、可管理、低成本等特点,支持中心和边缘存储,能够实现存储需求的弹性伸缩,主要应用于海量数据管理的各类场景。 这概念真是够难以理解的。简单说点我知道的吧,平常我...阅读全文

博文 2020-08-27 00:32:44 磕代码的阿轩

区块结构描述

1、块链(Blockchain)表现形式为块文件,名称如blockfile_000000,由块(Block)按照顺序排列组成,每一个块的头部(Header)都包含了当前块的data_hash和前一个块的hash值previous_hash,官网blockchain结构图如下:块链B包含了块B0,B1,B2,B3,其中B0是创世块(genesis block) 2、块(Block)包含3部分内容:块头,块数据,块的元数据。具体描述如下:2.1块头(Block Header)块头结构形式如下: "header": { "data_hash": "xXLEx+MSmIh3XiYCOOzgqgbncCWv/CerQmr4pv5htIw=", "number": "4", "previous_hash...阅读全文

博文 2020-01-09 23:32:45 阿留神

channel 和 select 控制 goroutines

最近有一个需求是在一个常驻内存的程序中结束相关任务。在 Go 中,创建一个 goroutine 非常简单,只需要 go 一下就可以了,但是如果我创建了很多 goroutine,想要结束怎么办? 比如说我有一个死循环的例子 1234567891011121314151617181920package mainimport ("fmt" "sync" "time")func main() {queue := make(chan int, 20) var wg sync.WaitGroup for { // 就是一个死循环 queue <- 1 <-queue for i := 0; i <10; i++ {wg.Add(1) go func(i int) {time.Sleep(5 * time...阅读全文

博文 2020-02-21 10:43:38 ipfans's Blog

[go圣经] 查找重复的行(程序无响应?)

go圣经里有一段`查找重复的行`的代码,发现输入无反应不会打印重复行数据 ```GO // Dup1 prints the text of each line that appears more than // once in the standard input, preceded by its count. package main import ( "bufio" "fmt" "os" ) func main() { counts := make(map[string]int) input := bufio.NewScanner(os.Stdin) for input.Scan() { counts[input.Text()]++ } if input.Err() != nil{ fm...阅读全文

博文 2020-08-25 18:18:57 weilan

Go Web 编程之 请求

概述 前面我们学习了处理器和处理器函数,如何编写和注册处理器。本文我们将学习如何从请求中获取信息。 请求的结构 通过前面的学习,我们知道处理器函数需要符合下面的签名: func (w http.ResponseWriter, r *http.Request) 其中,http.Request就是请求的类型。客户端传递的数据都可以通过这个结构来获取。结构Request定义在包 net/http 中: // src/net/http/request.go type Request struct { Method string URL *url.URL Proto string ProtoMajor int ProtoMinor int Header Header Body io.ReadClose...阅读全文

博文 2020-01-12 23:32:45 darjun

Golang 学习笔记:反射

反射(Go Reflect) 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。 反射就是在运行时动态的获取一个变量的类型信息和值信息。 每种语言的反射模型都不同,并且有些语言...阅读全文

博文 2020-06-03 14:32:50 sunlingbot

【红岸智能】 -- IPFS官方周报第59期

​ 星际文件系统 (IPFS) ( https://ipfs.io/ )是一种新的超媒体分布协议,通过内容和标识来寻址。IPFS 支持创建完全分布式的应用程序。它的目标是使网络更快、更安全、更开放。由于范围广大,本周刊旨在跟踪整个生态系统的开发。想参与其中?点击下面的一些链接,查看我们在 GitHub ( https://github.com/ipfs )上的内容,或加入我们的 IRC ( https://riot.im/app/#/room/#ipfs:matrix.org )。想要更新你的收件箱吗? 订阅我们的每周通讯! (https://tinyletter.com/ipfsnewsletter)以下是自上次 IPFS 周刊以来的一些亮点。最新发布IPFS 解释程序 (IPFS Exp...阅读全文

博文 2019-10-17 20:35:32 aside section ._1OhGeD

验证爬虫代理的有效性

爬虫代理是网络爬虫不可缺少的一部分。当然在使用爬虫代理IP的时候需要了解这个IP是否有效。有效IP直接使用。无效的IP拉入黑名单不使用即可。那如何验证爬虫代理IP是否有效呢,网络上其实有很多种方式:1、浏览器验证以火狐为例:打开火狐浏览器,在浏览器的右上角菜单列表中—选择—常规—网络设置—设置。把爬虫代理IP配置进去,然后填写好用户名和密码即可。代理信息设置完成后访问此http://current.ip.16yun.cn:802返回的就是代理IP的地址2、CURL验证爬虫代理(IP隧道,保持IP不变)用户可以指定IP隧道,用于连续请求场景#!/bin/bash curl -H "Proxy-Tunnel: 12345" -v -x http://username:password@ip:po...阅读全文

Golang标准库——runtime

runtime runtime包提供和go运行时环境的互操作,如控制go程的函数。它也包括用于reflect包的低层次类型信息;参见》reflect报的文档获取运行时类型系统的可编程接口。 Environment Variables 下面的环境变量($name或%name%,这依赖于主机的操作系统)控制go程序的运行时行为。它们的含义和用法可能在各发行版之间改变。 环境变量GOGC设置最初的垃圾收集目标百分比。当新申请的数据和前次垃圾收集剩下的存活数据的比率达到该百分比时,就会触发垃圾收集。默认GOGC=100。设置GOGC=off 会完全关闭垃圾收集。runtime/debug包的SetGCPercent函数允许在运行时修改该百分比。参见http://golang.org/pkg/runt...阅读全文

博文 2020-10-19 23:32:40 DevilRoshan

服务树系列(一):什么是服务树及其核心功能

前言服务树这个名词几乎所有运维和运维开发同学都不陌生,但是服务树的原理和为啥用服务树估计大家并不了解,本文先来讨论下这些基本概念,下文讨论如何实现,下图为其核心组件stree-index服务树与资源管理其实无论是引入CMDB或服务树的一个重要目的是完成对应用运行所依赖的资源管理资源包含什么既然是应用运行时依赖的,那么自然能想到的是诸如ecs/elb/rds/dcs/domain/等ecs:就是机器,具体可以是虚拟机/物理机,可以轻松的设计出这一张表+-------------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default...阅读全文

博文 2020-08-25 17:32:41 ning1875

5年 Python 功力,总结了 10 个开发技巧!网友:太实用了

大家好。 今天给大家分享 10 个我平时整理非常实用的 Python 开发小技巧,内容目录如下: 值得一提的是,这 10 个技巧全部收录在我自己写的 《Python黑魔法指南》里 你可以在按照如下方法,后台发送『黑魔法』就可以获取精美排版的 PDF 电子书。 1. 如何在运行状态查看源代码? 查看函数的源代码,我们通常会使用 IDE 来完成。 比如在 PyCharm 中,你可以 Ctrl + 鼠标点击 进入函数的源代码。 那如果没有 IDE 呢? 当我们想使用一个函数时,如何知道这个函数需要接收哪些参数呢? 当我们在使用函数时出现问题的时候,如何通过阅读源代码来排查问题所在呢? 这时候,我们可以使用 inspect 来代替 IDE 帮助你完成这些事 # demo.py import insp...阅读全文

博文 2020-06-17 10:34:59 王一白

实现Raft协议:Part 1 - 选主

翻译自Eli Bendersky的系列博客,已获得原作者授权。 本文是系列文章中的第一部分,本系列文章旨在介绍Raft分布式一致性协议及其Go语言实现。文章的完整列表如下: 序言:介绍 第一部分:选主(本文) 第二部分:指令和日志复制 第三部分:持久性和优化 在这一部分,我会介绍我们的Raft实现代码的结构,并重点介绍算法的选主部分。本文的代码包括一个全功能的测试工具和一些您可以用来测试系统的案例。但是它不会响应客户端的请求,也不好维护日志,这些功能会在第2部分添加。 代码结构 简单介绍一下Raft实现的代码结构,本系列的所有部分都是通用的。 通常来说,Raft都被实现为一个可嵌入某些服务的对象。因为我们不会真正地开发一个服务,只是研究Raft协议本身,所以创建了一个简单的Server类型,...阅读全文

博文 2020-05-06 14:36:20 GuoYaxiang

kafka元数据在zookeeper中的存储分布

我们都知道,自从Kafka诞生之际,就一直使用Zookeeper服务来进行kafka集群的元数据和状态管理,虽然在KIP-500中有提议未来将移除Zookeeper的依赖,使用Raft协议来实现新的元数据和状态管理,但在这之前,我们仍然需要对kafka集群的整个元数据和状态有一定理解,才能更好的维护和保障kafka集群。 前言 在kafka集群中,ZooKeeper集群用于存放集群元数据、成员管理、Controller 选举,以及其他一些管理类任务。 存放元数据: 是指主题分区的所有数据都保存在 ZooKeeper 中,且以它保存的数据为权威,其他“人” 都要与它保持对齐。 成员管理: 是指 Broker 节点的注册、注销以及属性变更。 Controller 选举: 是指选举集群 Contr...阅读全文

后端开发使用pycharm的技巧

目录 后端开发使用pycharm的技巧 1、使用说明 2、database 3、HTTP Client 1、使用说明 首先说明,本文所使用的功能为pycharm专业版所支持,其他版本如社区版,教育版,则不一定支持。 作为一名后端开发,我猜你的桌面上一定打开着一系列的软件,用作开发调试工具,比如navicat数据库连接工具,postman接口调试工具,pycharm代码编写IDE,以及其他一些工具。今天,我就介绍一下pycharm中你可能还不知道的一些功能,让你的IDE、postman、navicat融为一体,从此不再需要频繁切屏。 2、database 这个功能本人觉得可以完全替代navicat,那么这个database功能在哪里呢。 就在pycharm的右上角竖排的两个图标的其中一个,在这...阅读全文

博文 2020-03-27 18:32:44 高枫

图解kubernetes控制器StatefulSet核心实现原理

StatefulSet是k8s中有状态应用管理的标准实现,今天就一起来了解下其背后设计的场景与原理,从而了解其适用范围与场景 1. 基础概念 首先介绍有状态应用里面的需要考虑的一些基础的事情,然后在下一章我们再去看statefulSet的关键实现 1.1 有状态与无状态 在日常开发的应用中,通常可以分为两大类:有状态与无状态,比如web服务通常都是无状态的,web应用数据主要来自后端存储、缓存等中间件,而本身并不保存数; 而诸如redis、es等其数据也是应用自身的一部分,由此可以看出有状态应用本身会包含两部分:应用与数据 1.2 一致性与数据 一致性是分布式系统中很常见的问题,上面提到有状态应用包含数据部分,那数据和一致性是不是一个东西呢?答案是并不一定,在诸如zookeeper等应用中,...阅读全文

博文 2020-03-29 11:32:44 仔仔

学习笔记——代码中错误处理的最佳实践

最近在极客时间上学习左耳朵耗子大佬的左耳听风栏目,收益颇多,决定对从课程中学习到的东西进行总结记录以加深印象。今天学习的课程主要是对代码中错误处理的方式从各个语言的实现角度做了介绍并提出了一些自己对于错误处理的最佳实践,这里对🐭大佬提出的一些最佳实践进行自己的理解和总结(说到错误处理就想到自从我入职之后从Java转到Golang开发,确实明显感觉到了两种语言对于异常错误处理的不一致,还经常还无法习惯golang中的error处理形式)1.统一分类的错误字典这个在进行http接口开发的时候体会的比较深刻,因为http中的返回错误码的形式就将错误进行了分类,2XX开头的表示正常的请求,3XX表示重定向,4XX表示客户端请求有问题,5XX表示服务端的问题。所以我后来做一些第三方调用接口的开发时偶尔...阅读全文

博文 2020-07-02 00:33:32 谁没有做过白日梦呢

力扣算法学习个人分享812. 最大三角形面积

812. 最大三角形面积 问题描述 给定包含多个点的集合,从其中取三个点组成三角形,返回能组成的最大三角形的面积。 示例 输入: points = [[0,0],[0,1],[1,0],[0,2],[2,0]] 输出: 2 解释: 这五个点如下图所示。组成的橙色三角形是最大的,面积为2。 问题分析 在平面直角坐标系中,只要三个坐标点不在同一直线上就可构成三角形。 当三个坐标点在同一直线上时,面积为零。 当三个坐标点不在同一直线上,求三个坐标点构成的三角形面积最简单的方式是使用向量。 向量(也称欧几里得向量、几何向量、矢量) 指具有大小和方向的量。它可以形象的表示为带箭头的线段。箭头所指代表向量的方向;线段长度代表向量的大小。 已知坐标点求向量 设A(x1,y1),B(x2,y2),C(x3,...阅读全文

博文 2020-03-05 15:32:44 孤狼

grpc server源码学习

grpc server源码学习如何实现一个最简单的grpc server// 创建listener lis, err := net.Listen("tcp", port) if err != nil { log.Fatalf("failed to listen: %v", err) } // 创建server示例 s := grpc.NewServer() // 注册服务 pb.RegisterGreeterServer(s, &server{}) reflection.Register(s) // 启动服务端监听 if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) }grpc.NewServ...阅读全文

博文 2020-09-20 17:32:38 byte

Golang是如何操作excel的?

关键术语介绍为了方便开源库的快速上手,我们先来了解 excel 中的几个关键术语,如下图所示,①为sheet,也就是表格中的页签;②为row,代表 excel 中的一行;③为cell,代表 excel 中的一个单元格。正常情况下,创建一个表格的基本流程是打开 wps 点击新建,这时会默认创建一个 sheet,然后在该 sheet 中的第一行填写表头,接下来根据表头逐行填充内容,最后将文件另存为到硬盘的某个位置。这与 Golang 开源库创建 excel 的流程基本相同,下面演示一个极简表格的创建。创建表格创建表格前需要先引入 excel 库,我们以比较热门的 tealeg/xlsx 库为例。go get github.com/tealeg/xlsx首先创建一个空文件,拿到文件句柄。file ...阅读全文

博文 2020-10-11 21:32:40 平也

爬虫代理的cookie生成运行

HTTP是用于互联网传输数据信息到本地的一种传送协议我们在浏览器中输入输入关键词,会返回页面内容。这就是我们用浏览器向网站所在的服务器发送了一个请求,网站的服务器接收到这个请求后进行解析,然后把网页内容呈现出来。有时候服务器网站会检测IP在一个时间段内的请求次数,如果过于频繁,就会拒绝服务,简称为封IP。HTTP代理就是用别人的IP进行访问,进行IP伪装。除非是访问网站或APP专用数据api接口,正常的HTTP请求都需要进行ua(User-Agent)优化,因为ua是浏览器标识,如果http请求没有ua,或ua太少,都会被网站运维统计异常的,ua越丰富分布就越真实。cookie最好是登陆获取的,一般访客的cookie,对方限制会比较严格,可以控制一个地区新访客的访问频率。另外反爬统计的js也...阅读全文

golang结构体

定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下: type struct_variable_type struct { member definition member definition ... member definition } 结构体声明格式: variable_name := structure_variable_type {value1, value2...valuen} 或 variable_name := structure_variable_type { key1: v...阅读全文

博文 2020-01-01 02:32:54 程序小白菜

cpu信息获取工具WGCLOUD,v3.0 bug 修复

WGCLOUD基于java语言开发,是springboot构建的监控系统,支持高并发高性能,核心模块包括:服务器集群监控,ES集群状态监控,CPU监控,内存监控,数据监控,docker监控,网络流量监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。 此次更新: 修复docker图表显示不准确问题。 修复测试邮件发送错误问题。 以上bug,在已安装v3.0基础上,只需要重新下载安装包, 然后只替换/server/wgcloud-server-release.jar即可。 码云源码下载:https://gitee.com/wanghouhou/wgcloud GITHUB源码下载:https://github.com/tianshiyeben/wgcloud 安装包...阅读全文

博文 2020-06-03 10:32:47 tianshiyeben

GoCenter 的“火眼金睛” ——检测、报告并减少Go Module的安全漏洞

一、背景 Golang开发者非常关心开发应用的安全性。随着Go Module应用越来越广泛,Golang开发者需要更多的方式来确保这些公共共享文件的安全。Golang1.13版本在创建Go Module时,通过增加go.sum文件来验证之后从GOPROXY再次访问到的该Module是否曾被篡改。这个机制有助于保证Module的完整性。但是,当初次创建并提交Go Module时,如果原始文件中被引入了恶意代码,这种安全漏洞还是不能被发现和预警的。Go Module的安全漏洞影响了很多项目和Go开发者。随着CI/CD流程中“左移”实践的推广,对于Go开发者来说,尽早跟踪和报告Go Module之中的安全漏洞变得越来越重要。幸运的是,GoCenter(https://search.gocenter...阅读全文

博文 2020-06-16 19:33:06 JFrog杰蛙科技

GoCenter 的“火眼金睛” ——检测、报告并减少Go Module的安全漏洞

一、背景 Golang开发者非常关心开发应用的安全性。随着Go Module应用越来越广泛,Golang开发者需要更多的方式来确保这些公共共享文件的安全。Golang1.13版本在创建Go Module时,通过增加go.sum文件来验证之后从GOPROXY再次访问到的该Module是否曾被篡改。这个机制有助于保证Module的完整性。但是,当初次创建并提交Go Module时,如果原始文件中被引入了恶意代码,这种安全漏洞还是不能被发现和预警的。 Go Module的安全漏洞影响了很多项目和Go开发者。随着CI/CD流程中“左移”实践的推广,对于Go开发者来说,尽早跟踪和报告Go Module之中的安全漏洞变得越来越重要。幸运的是,GoCenter(https://search.gocente...阅读全文

博文 2020-06-17 00:33:14 JFrog中国

HTTPS 原理与小战

HTTPS 原理与小战 实事求是,不敢写实战,还是改成小战吧。 原理 HTTP + SSL (Secure Socket Layer) 一次浏览器访问,当访问 baidu.com 时浏览器自动添加 schema http:// 和 端口 :80。 这个过程它可能会走这样的路线: 操作系统 -> 路由器 -> ISP -> 电信/联通 -> 城市出口 -> 海底光缆 -> ... -> 联通/电信 -> ISP -> 路由器 -> Server,这个过程中的每一个网元都有风险。 这就像本地写了一个浏览器的代理,可以抓到任何访问的请求。 要解决的问题: C/S 之间的访问加密,让中间网元只传输加密的数据,无法解密(所以要传递密钥) 加密需要密钥,传递密钥也应该保密 加密技术 主要有 对称加密算法...阅读全文

golang oss表单上传

在涉及基于阿里云oss服务的时候,绝大多数情况都是基于表单上传,服务器端生成所需要的信息,这样可以不走本身服务器的流量,灵活并且方便控制。原来基于Java实现的,oss的Java客户端提供了很方便的方法生成policy和signature,golang的客户端貌似没有便捷的方法。以下实现的代码片段仅供参考。 func (s *ossFileService) GetUploadToken(uploadFile model.OssUploadFile) *model.OssUploadToken { ossBucket := s.ossBucketRepository.FindById(uploadFile.FileType) if ossBucket.Id > 0 { fileKey := g...阅读全文

博文 2020-07-27 19:32:52 EasyNetCN

前端工程师吐后端工程师(第九讲)——最不擅长的数据库操作

第八讲中我们介绍了如果使用Gin写一些常用的接口,本讲我们主要介绍一下数据库如何操作。这一讲没有具体页面,可能对于前端工程师会不太习惯。首先我们要单件一个mysql数据库环境。如果不会的话可以参考这个教程https://www.jianshu.com/p/3a0de5da49f3,在搭建完成MySQL,并且启动MySQL之后。数据的管理员账户名设置成root,数据库密码设置为00000000。因为后续我们在代码中使用的数据库相关代码,会以这个为准.我们可以通过mysql -h 127.0.0.1 -P 3306 -u root -p 000000000 指令来连接刚刚搭建在本机上的数据库。127.0.0.1为本机IP,3306为数据库具体端口,root为数据库用户名,000000000为数据...阅读全文

博文 2020-01-08 19:32:47 陈辰CC老师

Go reflect 反射- Type & Value & Field & Method

其实Type 和 Value本质就是对于Golang底层数据的一个封装罢了,其实就是基于iface和eface进行可以编程级别的开发,因为那俩对象对于开发者来说属于黑盒子。 为什么我多拿出Field 和 Method 本质上为了体现这俩的重要性,也会着重讲到 反射的几个重点: 1、安全的使用反射 2、依靠Type可以生成对于类型的数据,核心在于New 和 Set 方法 3、理解Type 和 Value 的用法 4、熟练的掌握Call函数,进行安全操作 5、理解api的使用,熟练掌握 6、学会使用反射进行IOC操作 Type ​ Type 也就是元信息,类似于Java的Class对象,拿到Type基本可以做所有的一切,包含结构信息,字段信息,方法信息等等,所以这个是重点,Java有的功能Go基...阅读全文

博文 2020-06-27 19:34:21 AnthonyDong

Go语言入门(五)结构体&练习

结构体&练习 结构体 定义 Go中的面向对象是通过 struct来实现的,struct是用户自定义的类型 //定义结构体 /定义结构体 type User struct { Name string Gender string Age int AvatarUrl string } func useStruct() { //初始化结构体1 var user1 User user1.Name = "jeson" user1.Gender = "male" user1.Age = 20 user1.AvatarUrl = "http://baidu.com" //初始化结构体2 user2 := User{ Name: "miky", Gender: "female", Age: 18, } fmt...阅读全文

博文 2020-03-26 23:33:12 wx5b285b48ed74e

golang post模拟客户端多文件上传以及处理

为了模拟客户端和服务器端,我这儿开了两个进程,进程A(监听地址:http://192.168.50.250:8080 路由/objects)进程B(监听地址:http://192.168.50.250:8081 路由:/objetcs)方法都是post。进程A是监听客户上传的文件,然后模拟http clien上传给进程B。在B中将文件存储或者将内容打印。 进程A post /ojects: func PostFile(c *gin.Context){ var b bytes.Buffer w := multipart.NewWriter(&b) c.Request.ParseMultipartForm(100000) multiPartform ,_:= c.MultipartForm() ...阅读全文

博文 2019-08-15 18:57:23 我的饭卡呢

go 语言下gin框架学习系列之环境篇01

1:windos环境开发环境的配置 用 Gin 框架之前,需要先检查本地 Go 语言版本,目前要求 Go 1.9 及以上版本,这里我们使用最新的版本go1.15!!! 安装包下载地址:https://studygolang.com/dl/golang/go1.15.windows-amd64.msi 常规的安装软件步骤形式,指定安装目录,然后配置环境变量。 2:GOLAND-IDE新建项目 2.1 新建项目: PS:指定使用的代理 image.png 2.2 设置文件监听,便于自动导包处理: 具体操作路径:File -> Settings -> Tools -> File Watchers PS:(如果goland没File Watchers ,可在File -> Settings -> P...阅读全文

博文 2020-09-04 12:38:10 小钟钟同学

go语言实战生成比特币地址

package main import ("blockTest/tool""bytes""crypto/ecdsa""crypto/elliptic""crypto/rand""crypto/sha256""fmt""golang.org/x/crypto/ripemd160""log") var b58Alphabet = []byte("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")const VERSION = byte(0x00)const CHECKSUM_LENGTH = 4 type BitcoinKeys struct {PrivateKey *ecdsa.PrivateKeyPublicKey []b...阅读全文

博文 2020-09-19 12:33:08 v824394795

C/S架构中 agent如何自升级(以falcon-agent为例)

前言 在我们日常运维/运维开发工作中各种系统主要分为两大流派本文主要讨论下有agent侧一些注意事项 客户端服务端的C/S架构 优点 c/s架构相比于基于ssh的并发和吞吐量要高的多 利用agent可做的事情很多以及更精准的控制 缺点 功能更新需要升级agent agent如果保活是个头疼的问题 机器上agent过多如何管理又是个问题 agentless架构 特点无侵入性agent:典型应用就是基于ssh ansible优点 无agent不需要关心保活和覆盖问题 功能更新主要在server端实现 缺点 基于ssh的功能/性能较差 经典client案例 配置管理/批量操作 Saltstack Minion Puppet Agent 监控 prometheus 各种各样的exporter: no...阅读全文

博文 2020-07-27 20:33:09 ning1875

Go语言接口内部布局和方法集详解

1. 接口值内部布局   如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型的值。赋值完成后得到的值称为接口值。接口值是一个两个字长度的数据结构,第一个字包含一个指向内部表的指针。这个内部表叫作iTable,包含了所存储的值的类型信息和与这个值相关联的一组方法(也就是方法集)。第二个字是一个指向所存储值的指针。下图展示实体值赋值后接口值的内部布局:                            实体值赋值后接口值的内部布局图 如果是一个指针赋值给接口的情况,类型信息会存储一个指向保存的类型的指针,而接口值第二个字依旧保存指向实体值的指针。如下图:                     ...阅读全文

区块链之以太坊搭建私有链

文章引言 以太坊私有链搭建,可以给想接触和玩的新手提供一个入门体验,你们真正感受下区块链的魅力。还有就是在测试环境中也可以的,以太坊主网数据同步始终都是一个硬伤,硬盘消耗太大而且国内同步一般很难完全实现的了,下面的文章就是为了更大家提供一定的方便,详细的讲解里面的步骤。 实战案例 新建创世文件 新建以太坊工程目录 mkdir -p /home/ubuntu/data/eth_data 新建创世配置文件 vim genesis.json 配置内容如下参考,具体根据情况修改。 # genesis.json { "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x00000000000000000000000000...阅读全文

博文 2020-04-09 00:32:47 极客笔记Geeknr