Go - 代码生成工具

分享两个常用的代码生成工具:gormgenhandlergengormgen基于 MySQL 数据表结构进行生成 3 个文件:生成表的 struct 结构体生成表的 Markdown 文档生成表的 CURD 方法场景在进行业务需求开发时,创建完数据表后,执行代码生成工具,常用的 CURD 操作全部生成完毕,使用的时候只需要 . 后面的方法即可,这样大大提高了业务开发效率。示例表结构:CREATE TABLE `user_demo` ( `id` int(11) unsigned NOT NULL...阅读全文

51CTO博客 2021-03-01 11:56:37 mb601cf691d1fe2

高并发系统的限流策略:漏桶和令牌桶(附源码剖析)

原文链接: 高并发系统的限流策略:漏桶和令牌桶(附源码剖析)前言哈喽,大家好,我是正在学习PS技术的asong,这是我并发编程系列的第5篇文章,今天与大家聊一聊高并发系统中的限流技术,限流又称为流量控制,是指限制到达系统的并发请求数,当达到限制条件则可以拒绝请求,可以起到保护下游服务,防止服务过载等作用。常用的限流策略有漏桶算法、令牌桶算法、滑动窗口;下文主要与大家一起分析一下漏桶算法和令牌桶算法,滑动窗口就不在这里这介绍了。好啦,废话不多话,开整。文中测试代码已上传:https://githu...阅读全文

Segmentfault 2021-03-04 09:32:34 asong

手撸golang 基本数据结构与算法 图的最短路径  狄克斯特拉算法

缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之狄克斯特拉算法与贝尔曼-福特算法类似, 狄克斯特拉(Dijkstra)算法也是求解最短路径问题的算法, 使用它可以求得从起点到终点的路径中权重总和最小的那条路径。 比起需要对所有的边都重复计算权重和更新权重的贝尔曼-福特算法, 狄克斯特拉算法多了一步选择顶点的操作, 这使得它在求最短路径上更为高效。 如果闭环中有负数权重,就不存在最短路径。 贝尔曼-福特算法可以直接认定不存在最短路径, 但在狄克斯特...阅读全文

Segmentfault 2021-03-04 07:32:33 ioly

go mod 使用

go mod 简介 Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。 Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子...阅读全文

Runtime: Golang是如何处理系统调用阻塞的?

我们知道在Golang中,当一个Goroutine由于执行 系统调用 而阻塞时,会将M从GPM中分离出去,然后P再找一个G和M重新执行,避免浪费CPU资源,那么在内部又是如何实现的呢?今天我们还是通过访问Runtime源码的形式来看下他的内部实现细节有哪些? go version 1.15.6 我们知道一个P有四种运行状态,而当执行系统调用函数阻塞时,会从 _Prunning 状态切换到 _Psyscall,等系统调用函数执行完毕后再切换回来。 P的状态切换 <figcaption>P的状态切换...阅读全文

简书 2021-03-01 03:32:42 路过100

leetcode303 区域和检索 - 数组不可变 golang实现

303. 区域和检索 - 数组不可变 image.png 解题思路 典型的前缀和题目 根据nums计算前缀和数组,添加辅助位,方便后续操作。(编码注意点见下) 计算区间,因为加了辅助位。sum[j+1]= nums[0] + nums[1] + ... + nums[j], sum[i] = nums[0] + nums[1] + ... + nums[i-1].所以sum[j+1]-sum[i]= nums[i]+...nums[j].为区间和 前缀和编码注意点 笔者每次在解前缀和的时候手速都...阅读全文

简书 2021-03-01 03:32:39 lucasgao

用了5年 Python 经验,总结了 10 个开发技巧

一丶如何在运行状态查看源代码查看函数的源代码,我们通常会使用 IDE 来完成。比如在 PyCharm 中,你可以 Ctrl +鼠标点击进入函数的源代码。那如果没有 IDE 呢?当我们想使用一个函数时,如何知道这个函数需要接收哪些参数呢?当我们在使用函数时出现问题的时候,如何通过阅读源代码来排查问题所在呢?这时候,我们可以使用 inspect 来代替 IDE 帮助你完成这些事:# demo.pyimport inspectdef add(x, y):return x + yprint("=====...阅读全文

简书 2021-02-28 22:32:48 玩转python

python语言这几年的编程语言排行趋势

近几年编程语言排行榜 Python均位居前列PYPL 编程语言排行榜和 Hacker News 招聘趋势都已经出炉。Hacker News 招聘趋势的数据由 Hacker News 新闻站负责收集,它不仅仅关注编程语言趋势,还关注公司要求的顶尖技能的趋势,包括框架、库等。PYPL 通过分析 Google 搜索语言教程的频率生成数据,即,某项语言在 Google 上搜索频率越高,表示这项语言越受欢迎。在四月的数据中,两个排行榜都显示,Python 是增长最快的语言,流行度名列前茅。Kotlin 在...阅读全文

简书 2021-02-28 22:32:45 Python交流者

2021-02-28:给定一个整型数组arr,和一个整数num。某个arr中的子数组sub,如果想达标,必须满足:sub中最大值 – sub中最小值 <= num,返回arr中达标子数组的数量。

2021-02-28:给定一个整型数组arr,和一个整数num。某个arr中的子数组sub,如果想达标,必须满足:sub中最大值 – sub中最小值 <= num,返回arr中达标子数组的数量。 福哥答案2021-02-28: 采用两个双端队列,存序号。maxWindow从大到小,minWindow从小到大。 1.两个双端队列同时右扩。当最大值-最小值大于sum,退出循环。 2.计数。 3.删除双端队列左边的过期序号。 有代码。 代码用golang编写,代码如下: package main im...阅读全文

简书 2021-02-28 22:32:43 福大大架构师每日一题

【leetCode】leetCode刷题Golang版本--搜索插入位置

搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2 示例 2:输入: [1,3,5,6], 2输出: 1 示例 3:输入: [1,3,5,6], 7输出: 4 示例 4:输入: [1,3,5,6], 0输出: 0 解题过程:注意:1.nums是一个有序排列(升序) 思路:1. target是否在数组中存在2. target 元素大小比...阅读全文

51CTO博客 2021-02-28 20:42:59 mb601cf691d1fe2

【leetCode】leetCode刷题Golang版本--合并区间

合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 解题过程:思路:1. 首先集合应该是一个有序集合(升序)2. 比较两个元素的开始和结束索引值大小3. 在原有集合上修改...阅读全文

51CTO博客 2021-02-28 20:18:02 mb601cf691d1fe2

Go | Go 结合 Consul 实现动态反向代理

Go 结合 Consul 实现动态反向代理代理的核心功能可以用一句话概括:接受客户端的请求,转发到后端服务器,获得应答之后返回给客户端。Table of Contents反向代理实现逻辑Go 语言实现原生代码httputil.ReverseProxy 工具实现接入 consul 实现动态代理参考反向代理反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请...阅读全文

51CTO博客 2021-02-28 19:46:01 mb601cf691d1fe2

跨域请求报错

Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource相信这个问题大家都不陌生,当然解决的方式也很简单,只需要在后端的服务的响应头加上如下配置Access-Control-Allow-Origin --> true之后可能问题就解决...阅读全文

Segmentfault 2021-03-03 09:32:32 润雨冰雪

Go - 代码生成工具

分享两个常用的代码生成工具:gormgenhandlergengormgen基于 MySQL 数据表结构进行生成 3 个文件:生成表的 struct 结构体生成表的 Markdown 文档生成表的 CURD 方法场景在进行业务需求开发时,创建完数据表后,执行代码生成工具,常用的 CURD 操作全部生成完毕,使用的时候只需要 . 后面的方法即可,这样大大提高了业务开发效率。示例表结构:CREATE TABLE `user_demo` ( `id` int(11) unsigned NOT NULL...阅读全文

Segmentfault 2021-03-03 07:32:33 新亮

知乎文章转视频实现(乞丐版本)

前言作者这个周末因为脚扭了所以没办法出去玩,只能在家宅着,看书之余发现了知乎的一个新功能,可以把文章转成视频,不需要自己编辑,非常傻瓜和无脑。作为一个程序员,看到一个东西的第一眼就是想着怎么实现,正好自己也没法出门,所以就花了几个小时的时间实现了一个乞丐版本的文字转视频。下面会介绍一下实现需要解决的几个问题和后续的优化方向。实现文章转视频需要解决的几个问题文字分割要生成视频,就必须有语音,为了实现朗读的效果,就不能很机械的一个字一个字的读,也不能一段话连续的读下去没有停顿。所以文字分割的重点是能...阅读全文

Segmentfault 2021-03-02 23:32:32 Leoython

Go项目的终极配置

【译文】原文地址 说明:本文最初发表在martinheinz.dev 对我来说,开始一个新项目时最大的麻烦就是试图把项目配置的“完美”。我总是尝试使用最优的目录结构,这样一切都容易找到,以及导入工作也方便,设置所有的命令,这样就可以达到一键/一条命令完成所需操作,比如找到最好的工具、格式化、测试框架等。 这个列表还在增加,远没有达到我满意的配置...除了本文介绍的终极最优Glang配置。 说明:这个配置工作的这么好,部分原因基于已有项目,如项目1和项目2。 我的项目仓库地址:https://gi...阅读全文

简书 2021-02-28 11:32:57 汪明军_3145

手撸golang 基本数据结构与算法 图的最短路径 贝尔曼-福特算法

缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 贝尔曼-福特算法 贝尔曼-福特(Bellman-Ford)算法是一种在图中求解最短路径问题的算法。 最短路径问题就是在加权图指定了起点和终点的前提下, 寻找从起点到终点的路径中权重总和最小的那条路径。 摘自 <<我的第一本算法书>> 【日】石田保辉;宫崎修一 流程 给定若干顶点, 以及顶点间的若干条边, 寻找从指定起点from到指定终点to的最小权重路径 设定from的权重为0, 其他顶点的权...阅读全文

简书 2021-02-28 11:32:57 老罗话编程

golang获取调用者的方法名及所在源码行数

golang获取调用者的方法名及所在源码行数 代码如下 参数:skip是要提升的堆栈帧数,0-当前函数,1-上一层函数,.... 返回值: pc是uintptr这个返回的是函数指针 file是函数所在文件名目录 line所在行号 ok 是否可以获取到信息 pc0, file0, line0, ok0 := runtime.Caller(0) logs.Error(" runtime.Caller(0) pc0:",pc0) logs.Error(" runtime.Caller(0) file0...阅读全文

简书 2021-02-28 11:32:57 我是不会赢的