golang
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 Python实现快速排序(quick sort) 快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式,一般用来原样输出; 单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码点字面量(Unicode code point),不做任何转义的原始内容。 string可以直接比较,而[]byte不可以,所以[]byte不可以当map的key值
对于大型的 Golang 项目往往我都会使用 Goland 这样的专业 IDE,但是由于我本地开发环境硬件资源偏低,不能很顺畅的使用 Goland,这个时候我们就可以使用 VSCode 来代替 Goland,另外 VSCode 同样还支持远程开发,所以我索性将开发环境放在远程机器上,然后用 VSCode 远程开发模式进行连接,最主要的是大部分我们的项目都是直接跑在 Linux 上面的,这个时候我们就可以直接在 VSCode 中运行 Linux 环境下面的应用,而且我们还可以很好地进行调试。 要说现在最好用的 IDE 工具,可能除了微软系列的就得算 jetbrains 系列了,几乎支持所有主流的编程语言,可以说是目前最好用的 IDE 工具,比如 IntelliJ IDEA、PyCharm、GoLand、WebStorm,这些 IDE 工具其实平时我都有使用,但是我们也知道这些工具都属于商业产品,价格是非常昂贵的,虽然说这些工具给我们带来的便利远远不是金钱能来衡量的,但是毕竟对于我们大部分个人用户来说还是一笔不小的开支。
前两天,我的一个golang程序突然出现异常,因为从ramq中读取数据并且自动ack 然后另外一个线程再读取出来。 中间使用了mutex来防止冲突,结果发现突然不知道什么原因,这个数据竟然没有读到了。 后来分析应该是mutex的原因,然后做了个小测试,就简单的在使用mutex.Lock的后面直接defer mutex.Unlock 本意很简单,在变量的生命周期结束后直接Unlock,结果发现竟然只会lock不会unlock
go语言中的Mutex Golang以其并发性Goroutines而闻名。不仅是并发,还有更多。 因此,在这种情况下,我们必须确保多个goroutines不应该同时试图修改资源,从而导致冲突
开始于 2015 年,致力于构建一个属于自己的技术分享空间。 本站取名“好一则博”,一来是跟我名字“一博”有关,二来是取自汉代韩婴的《韩诗外传・卷二》 好一则博,博则精,精则神,神则化,是以君子务结心乎一也。 在这里我主要会聊服务端开发相关的内容,以 Java 为主 Golang 为辅,重点关注服务端的高并发与微服务领域
本文将使用Rust语言递归实现斐波那契数列(Fibonacci)的计算; 斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89 ... ,这个数列从第3项开始,每一项都等于前两项之和。 Rust中的数据类型 在本文中,将介绍Rust中的整型、浮点型、布尔类型、字符类型、元组类型、数组类型的声明和简单使用方法; 最新阿里云免费SSL证书申请教程 2021年最新申请阿里云免费SSL证书流程如下: Golang多个返回值有什么作用 在 Go 语言中,函数可以返回多个值,这是一项非常实用的特性,其作用如下: Rust实现字符串sha1、sha256、sha512加密 本文将在Rust语言中使用sha1、sha256、sha512等安全散列算法对字符串进行加密; Python数组求和 给定一个数组,使用Python进行数组求和;
LEPUS(天兔)开源数据库监控系统V5.1版本正式发布,Lepus 5.1全面新增服务器全面监控和SQLServer基本监控、新增了服务自检功能,目前已支持服务器、MySQL、Oracle、PostgreSQL、MongoDB、Redis、GreatSQL、SQLServer数据库的健康监控和告警服务。 LEPUS(天兔)开源数据库监控系统V5.0版本正式发布,Lepus 5.0全面采用Golang语言开发替代之前的PHP和Python语言,安装部署更加简单,同时采用全新设计的架构和功能,内置数据采集、消息组件、任务调度组件、告警组件、内置MySQL、Oracle、PostgreSQL、MongoDB、Redis、GreatSQL数据库的健康和性能监控。 为了促进Lepus良好的开源发展生态,收集大家对产品的意见和问题,我们搭建了一套全新的交流社区,新社区我们购买了独立服务器部署,并采用二级域名的方式独立运营,多方调研精选了一套国外成熟的开源社区产品部署,功能便捷并且快速稳定,建议大家后续在社区发表和提问解决问题,或者给我们提出好的建议
Golang的sync的包有一个并发原语WaitGroup,在日常开发中比较的有用。 WaitGroup的用途:它能够一直等到所有的goroutine执行完成,在其期间会会阻塞主线程的执行,直到所有的goroutine执行完成。 这里要注意一下,在其中的多个goroutine 的执行结果是没有顺序的,调度器不能保证多个 goroutine 执行次序,且进程退出时不会等待它们结束
反射的本质就是在程序运行的时候,获取对象的类型信息和内存结语构,反射是把双刃剑,功能强大但可读性差。本文将详细讲讲Golang中的反射机制,感兴趣的可以了解一下 反射的本质就是在程序运行的时候,获取对象的类型信息和内存结构,反射是把双刃剑,功能强大但可读性差,反射代码无法在编译阶段静态发现错误,反射的代码常常比正常代码效率低1~2个数量级,如果在关键位置使用反射会直接导致代码效率问题,所以,如非必要,不建议使用。 静态类型是指在编译的时候就能确定的类型(常见的变量声明类型都是静态类型);动态类型是指在运行的时候才能确定的类型(比如接口,也只有接口才有反射)
