leetcode_25

Golang: 思路:K个一组翻转列表,其实和k个一组翻转数组本质是一样的 代码如下: func reverseKGroup(head *ListNode, k int) *ListNode { if k<=1{ return head } node:=head var arr []*ListNode for i:=0;i<k;i++{ if node!=nil{ arr=append(arr,node) node=node.Next }else{ return head } } if len(...阅读全文

简书 2020-03-16 09:32:47 淳属虚构

人工智能深度学习领域中Python之外的语言如何应用

深度学习领域目前主流的语言是Python,但一些深度学习框架也推出了其他语言的版本或适配方法。以谷歌(Google)公司著名的TensorFlow平台为例,虽然训练神经网络的过程还需要使用Python语言,但对于已经训练好的神经网络模型,已经可以在Java、Javascript、C++、Go等语言中调用,以便利用这些模型进行计算并获取神经网络对于需解决问题的预测结果。下面我们来给出一个具体的实例帮助理解这种方式,实例将使用Go语言(Golang)。 1. 搭建Go语言调用TensorFlow模型...阅读全文

简书 2020-03-16 09:32:46 陆满庭

leetcode_15

Golang: 思路:最开始是先做了leetcode15再去做leetcode16的,leetcode16去参考了下大佬们的答案,收益良多,于是回来看了leetcode15,用了leetcode16的方法。这题还有一个思路是,将三数之和转换为二数之和去求解。 代码如下: func threeSum(nums []int) [][]int { var res [][]int sort.Ints(nums) for i:=0;i<len(nums)-2;i++{ if i!=0&&nums[i]==...阅读全文

简书 2020-03-16 09:32:45 淳属虚构

动态路由:Gin vs SpringMVC

这两天在接触Gin,对它的动态路由功能比较感兴趣,特意做了笔记,顺便跟SpringMVC作下对比。 1.简介  Gin是使用Go/golang语言实现的HTTP Web框架。接口简洁,性能极高。截止1.4.0版本,包含测试代码,仅14K,其中测试代码9K左右,也就是说框架源码仅5K左右。SpringMVC不用过多介绍,Java市场的一把手。  Gin支持动态路由,简单示例如下: import ( "github.com/gin-gonic/gin" "net/http" ) func main(...阅读全文

Segmentfault 2020-03-21 16:32:34 程序猿啊驼

Go语言中复合的数据类型

数组 数组是同一种数据类型元素的集合。在Go语言中,数组从声明时就确定,可以对其成员进行修改,但是不可以修改数组的大小。 数组的定义 数组的基本定义语法如下: var 数组名 [数组大小]类型 比如定义一个长度为3,类型是int的数组: var a [3]int 注意:长度必须是常量,它是数组类型的一部分,一旦定义,长度不能改变。 数组的初始化 (1)、初始化数组时可以使用初始化列表来设置数组元素的值。 func main() { var testArray [3]int //数组会初始化为in...阅读全文

51CTO博客 2020-03-15 21:20:28 Uncle_Joker

Go语言开发基础环境搭建

1、安装Go开发包 下载地址:<https://golang.google.cn/dl/>; 下载适合自己的版本进行安装即可。 安装完成后,可以用以下命令进行查看: 2、配置GOPATH 步骤: 在自己电脑上新建一个目录E:\DEV\Go做为Go代码存放目录 将上面创建的目录添加到我们的环境变量中 在上面的目录中新建三个文件夹,分别是bin src pkg 将E:/DEV/Go/bin 添加到PATH环境变量中 3、开发目录架构 1.14版本之前: 4、HelloWorld 代码如下:main....阅读全文

51CTO博客 2020-03-15 21:06:45 Uncle_Joker

Go语言中基本数据类型初识

在Go语言中常用的基本数据类型有如下几种: 整型 浮点型 布尔类型 复数 字符串 整型 有符号 int8 int16 int32 int64 无符号 uint8 uint16 uint32 uint64 特殊整型 uint,32位操作系统就是uint32,64位操作系统就是uint64 int,32位操作系统就是int32,64位操作系统就是int64 uintptr,无符号整型,用于存放指针 注意:在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在...阅读全文

51CTO博客 2020-03-15 21:16:19 Uncle_Joker

Go语言常量与变量初识

标识符和关键字 标识符 标识符只能以字母和_组成,并且只能以字母和_开头。 关键字 Go中有25个关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 变量 变量声明 变量需要先声明,再使用。其语法如下: var name string...阅读全文

51CTO博客 2020-03-15 21:10:50 Uncle_Joker

使用golang反向代理统计api访问次数

前言 今天写点有趣的小东西。事情是这样的,我经常看到有些软件加了统计数据的sdk,之后就可以实现统计接口的访问量,接口负载等等数据。而这些功能不需要原有的软件做些什么,对原来的业务完全无***,我觉得这样的功能很有实用性,所以没有参考其他类似的软件或者工具,我想自己试试怎么实现这样的功能。 思路 首先,我们先给要做的工具起个名字,就叫monitor。要实现无侵入,那么只能是在业务软件外面套一层,经由业务软件的流量,都需要经过monitor这一层,这让人很容易得想到了网关的功能也是类似的。恰好,g...阅读全文

51CTO博客 2020-03-15 10:37:30 wx5e1abbbb0a5e5

小程序go-ip源码 - 使用golang获取本机IP

如何获取本机网卡的IP地址 应用场景 无需各种繁琐操作,直接双击打开go-ip.exe,即可看到本机网卡的全部IP golang可以编译全平台(win/mac/linux)程序 运行效果(win10操作系统) 代码 package main // 获取本机全部网卡的全部IP // 2020-03-12 16:52 import ( "fmt" "net" "fyne.io/fyne/app" "fyne.io/fyne/widget" ) //获取全部网卡的全部IP func Ips() (ma...阅读全文

Segmentfault 2020-03-21 10:32:34 zuolinux

服务优雅重启

一、优雅重启/热更新 对外提供服务程序,在升级或因其它原因需重启时,若考虑不影响用户体验情况下,应当使用优雅重启或者说热更新。二、目的1.服务升级/更新时不关闭现有连结,对用户友好/用户无感知2.新的进程启动并替代旧进程3.新的进程接管新的连结4.已建立的连结随时响应用户的请求,不可以出现拒绝访问的情况;同时新连结请求到达时应请求新进程三、两种实现1.在建立套接字时设置SO_REUSEPORT,从而让多个进程能够被绑定到同一端口。从而有多个流量接收队列绑定到多个进程。2.复制套接字,并把它以文件...阅读全文

简书 2020-03-15 21:32:53 东_山_郎

Gin框架中使用JWT进行接口认证

背景: 在如今前后端分离开发的大环境中,我们需要解决一些登陆,后期身份认证以及鉴权相关的事情,通常的方案就是采用请求头携带token的方式进行实现。本篇文章主要分享下在Golang语言下使用jwt-go来实现后端的token认证逻辑。 JSON Web Token(JWT)是一个常用语HTTP的客户端和服务端间进行身份认证和鉴权的标准规范,使用JWT可以允许我们在用户和服务器之间传递安全可靠的信息。 在开始学习JWT之前,我们可以先了解下早期的几种方案。 token、cookie、session...阅读全文

简书 2020-03-15 21:32:52 BGbiao

wsl2 下安装 golang

1 下载go的压缩包 https://studygolang.com/dl 中, 选择 image.png 2 解压 2.1 把压缩包放到 D:\work\go 目录下 2.2 进入到 WSL2中, d 盘对应的目录是 /mnt/d/work/go/ 通过 vscode的远程资源管理器进入到 wsl2中 image.png image.png 2.3 tar -C /usr/local -xzf go1.14.linux-amd64.tar.gz 2.4 根据go env 查看 gopath 和...阅读全文

简书 2020-03-15 21:32:51 愚蠢的二师弟

golang 使用xorm操作mysql

xorm 官方介绍:xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。xorm的目标并不是让你完全不去学习SQL,我们认为SQL并不会为ORM所替代,但是ORM将可以解决绝大部分的简单SQL需求。xorm支持两种风格的混用。 xorm还提供了工具,通过reverse命令根据数据库的表结构生成对应的struct,省去了人工组织代码的工作,十分方便。官方地址:https://xorm.io/中文文档:https://books.studygolang.com... 安装 ...阅读全文

Segmentfault 2020-03-20 09:32:34 叶子

Golang package轻量级KV数据缓存——go-cache源码分析

作者:Moon-Light-Dream 出处:https://www.cnblogs.com/Moon-Light-Dream/ 转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 什么是go-cache KV存储引擎有很多,常用的如redis,rocksdb等,如果在实际使用中只是在内存中实现一个简单的kv缓存,使用上述引擎就太大费周章了。在Golang中可以使用go-cache这个package实现一个轻量级基于内存的kv存储或缓存。GitHub源码...阅读全文

博客园 2020-03-14 22:07 Moon-Light-Drea 等

go语言-常见并发模式

生产者-消费者模型并发编程中最常见的例子就是生产者/消费者模型,该模型主要通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。简单的说,就是生产者生产一些数据,然后放到队列中,同时消费者从队列中来取这些数据。这样就让生产和消费变成了异步的两个过程。当队列中没有数据是,消费者就进入饥饿的等待中;而当对立中数据已满时,生产者则面临产品积压导致CPU被剥夺的问题。//生产者 func Producer(factor int, out chan <- int) { for i := 0;...阅读全文

51CTO博客 2020-03-15 15:38:11 guoguocto

leetcode_695

Golang: 思路:每日一题之BFS,岛屿的最大面积,DFS和BFS都可以做,我用了BFS和栈。 代码如下: func maxAreaOfIsland(grid [][]int) int { res:=0 if len(grid)==0{ return res } for i:=0;i<len(grid);i++{ for j:=0;j<len(grid[0]);j++{ if grid[i][j]==1{ area:=0 grid[i][j]=2 stack:=[][]int{{i,j}} ...阅读全文

简书 2020-03-15 15:32:43 淳属虚构

golang的OAEP加密、解密

今天在做微信支付商户平台的提交申请单API时,发现这个接口的contact_info参数数据需要加密,按照平台的接口文档完善了EncryptOAEP和DecryptOAEP这个两个函数的程序代码。 一共有四个函数分别是EncryptOAEP、DecryptOAEP、ParsePKIXPublicKey、ParsePKCS1PrivateKey。 EncryptOAEP // 加密 func EncryptOAEP(text string)string { rsaPublicKey := Pars...阅读全文

简书 2020-03-15 15:32:43 守望者_0173

使用golang反向代理统计api访问次数

前言 今天写点有趣的小东西。事情是这样的,我经常看到有些软件加了统计数据的sdk,之后就可以实现统计接口的访问量,接口负载等等数据。而这些功能不需要原有的软件做些什么,对原来的业务完全无入侵,我觉得这样的功能很有实用性,所以没有参考其他类似的软件或者工具,我想自己试试怎么实现这样的功能。 思路 首先,我们先给要做的工具起个名字,就叫monitor。要实现无侵入,那么只能是在业务软件外面套一层,经由业务软件的流量,都需要经过monitor这一层,这让人很容易得想到了网关的功能也是类似的。恰好,go...阅读全文

简书 2020-03-15 15:32:43 onepunchgo

go中的引用类型

首先,go中的赋值,都是值传递 a := 1 b := a x := Struct{} y := x 复制代码他们都是在内存中有独立空间的,也就是copy的过程,所以这里对y的某个属性的改动,并不会影响x 那么我们要让两个变量指向同一个内存怎么办呢,可以使用引用类型: y := &x 复制代码这时候,y的类型是*Struct,这时候我们可以对y进行修改,修改完之后,x也会发现变化,因为y现在是一个引用类型,他指向的是x结构体所在的内存 我们可以通过: y.variable = xxx 复制代码来...阅读全文