最近项目中使用到了lua,因为之前没怎么接触过,特此记录下自己在学习过程中疑惑的地方。 在使用lua进行编码的过程中,我们经常会使用到.和:,但是对于刚开始接触lua的我来说,对这两者的使用还是感到时常感到疑惑,接下来我们一起看看几个例子,来感受两者的区别。如果发现文中错误的地方,请不吝赐教,谢谢! 1、基础介绍 接下来,我们看看下面的例子,来了解.和:的基础用法。 Car={Name="BYD",Price=12} print("Car的地址--->",Car) print(Car.Name)-访问属性 -print(Car:Name)报错 print(string.rep...

  0OBZ97PIiF5t   2023年11月02日   55   0   0 其他语言

singleflight使用方法以及源码阅读 1、简介 安装方式: goget-ugolang.org/x/sync/singleflight singleflight是Go官方扩展同步包的一个库。通过给每次函数调用分配一个key,相同key的函数并发调用时,在函数执行期间,相同函数的调用,只会被执行一次,返回相同的结果。其本质是对函数调用的结果进行复用。 2、使用方法 2.1使用Do获取函数执行结果 Do方法是同步返回函数执行结果 packagemain import( "fmt" "golang.org/x/sync/singleflight" "runtime" "sync"...

  0OBZ97PIiF5t   2023年11月02日   26   0   0 Go

1、Golang中死锁的触发条件 1.1书上关于死锁的四个必要条件的讲解 发生死锁时,线程永远不能完成,系统资源被阻碍使用,以致于阻止了其他作业开始执行。在讨论处理死锁问题的各种方法之前,我们首先深入讨论一下死锁特点。 必要条件: 如果在一个系统中以下四个条件同时成立,那么就能引起死锁: 互斥:至少有一个资源必须处于非共享模式,即一次只有一个线程可使用。如果另一线程申请该资源,那么申请线程应等到该资源释放为止。 占有并等待:—个线程应占有至少一个资源,并等待另一个资源,而该资源为其他线程所占有。 非抢占:资源不能被抢占,即资源只能被线程在完成任务后自愿释放。 循环等待:有一组等待线程{P0,...

  0OBZ97PIiF5t   2023年11月02日   27   0   0 Go

最近的项目用到了RxGo,因为之前从没有接触过,特意去学了学,特此记录下。文章很多内容是复制了参考资料或者官方文档。如果涉及侵权,请联系删除,谢谢。 1、RxGo简介 1.1基础介绍 RxGo是一个基于Go语言的响应式编程库,它提供了一种简单而强大的方式来处理异步事件流和数据流。RxGo的设计灵感来自于ReactiveX,它提供了类似于ReactiveX的操作符和概念,如Observable、Observer、Subject、Scheduler等。 RxGo的目标是提供一种简单而强大的方式来处理异步事件流和数据流,使得开发人员可以更容易地编写高效、可维护和可扩展的代码。RxGo的特点包括:...

  0OBZ97PIiF5t   2023年11月02日   70   0   0 Go

1、FSM简介 1.1有限状态机的定义 有限状态机(FiniteStateMachine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件。 状态机有三个组成部分:状态(State)、事件(Event)、动作(Action),事件(转移条件)触发状态的转移和动作的执行。动作的执行不是必须的,可以只转移状态,不指定任何动作。总体而言,状态机是一种用以表示有限个状态以及这些状态之间的转移和动作的执行等行为的数学模型。 状态机可以用公式State(S),Event(E)->Actions(A),State(S’)表示,即在处于状态S的情况下,接收到了事件E,使得状态转移到了S’...

  0OBZ97PIiF5t   2023年11月02日   60   0   0 Go

本文讲解的是golang.org/x/sync这个包中的errgroup 1、errgroup的基础介绍 学习过Go的朋友都知道Go实现并发编程是比较容易的事情,只需要使用go关键字就可以开启一个goroutine。那对于并发场景中,如何实现goroutine的协调控制呢?常见的一种方式是使用sync.WaitGroup来进行协调控制。 使用过sync.WaitGroup的朋友知道,sync.WaitGroup虽然可以实现协调控制,但是不能传递错误,那该如何解决呢?聪明的你可能马上想到使用chan或者是context来传递错误,确实是可以的。那接下来,我们一起看看官方是怎么实现上面的需求的...

  0OBZ97PIiF5t   2023年11月02日   35   0   0 Go

在实际开发过程中,有时候会遇到如何编写Go开机自启服务的需求,在linux中我们可以使用systemd来进行托管,windows下可以通过注册表来实现,mac下可以通过launchd来实现,上面的方式对于开发者来说,并不是什么困难的事情,但是对于使用者而言,是并不希望通过这么复杂的方式来达到开机自启的功能的。这个时候,作为开发者,就需要使用其他的方式来实现开机自启的功能,下面讲一个Go中,借助这个库github.com/kardianos/service来简化如何实现开机自启功能。 1、github.com/kardianos/service基础介绍 1.1kardianos/service简...

  0OBZ97PIiF5t   2023年11月02日   78   0   0 Go

最近熟悉go项目时,发现项目中有用到github.com/yuin/gopher-lua这个包,之前并没有接触过,特意去看了官方文档和找了些网上的资料,特此记录下。 本次介绍计划分为两篇文章,这一次主要介绍github.com/yuin/gopher-lua这个包的介绍以及基础使用,下一边将介绍github.com/yuin/gopher-lua是如何在项目中使用的。如有不对的地方,请不吝赐教,谢谢。 文章中的gopher-lua如果没有特别说明,即为:github.com/yuin/gopher-lua。 1、gopher-lua基础介绍 我们先开看看官方是如何介绍自己的: Gopher...

  0OBZ97PIiF5t   2023年11月02日   25   0   0 Go

本次主要介绍golang中的标准库bytes,基本上参考了字节|bytes、Golang标准库——bytes文章。 bytes库主要包含5大部分,即: 常量 变量 函数 Buffer Reader 我们依次学习上面的5大部分。 1、常量 constMinRead=512 bytes.MinRead是一个常量,表示在使用ReadFrom方法从io.Reader中读取数据时,每次读取的最小字节数。如果io.Reader的Read方法返回的字节数小于bytes.MinRead,ReadFrom方法会尝试再次读取,直到读取的字节数达到bytes.MinRead或者io.EOF。这个常量的值为51...

  0OBZ97PIiF5t   2023年11月02日   43   0   0 Go

1、背景介绍 前两天,现场的同事使用开发的程序测试时,发现日志中报etcdserver:mvcc:databasespaceexceeded,导致etcd无法连接。很奇怪,我们开发的程序只用到了etcd做程序的主备,并没有往etcd中写入大量的数据,为什么会造成etcd空间不足呢?赶紧叫现场的同事查了下etcd存储数据的目录以及etcd的状态,看看是什么情况。 查看etcd状态: ./etcdctlendpointstatus--write-out=table--endpoints=localhost:12380 看到这里就很奇怪了,为什么RAFTAPPLYENDINDEX会这么大呢?这...

  0OBZ97PIiF5t   2023年11月02日   30   0   0 Go

相信熟悉Golang的小伙伴不少都知道条件编译这个事,最近项目中也可能会用到这个东西。所以特意重新学习下,记录下学习的过程。这样用的时候记不住了,还可以直接过来看自己的笔记。 文章很多内容来源于参考资料,感谢。 1、条件编译简介 1.1、为什么需要条件编译 在实际的项目开发中,我们可能需要根据条件的不同,来编译release和debug版本代码的需求,也可能需要根据运行环境的不同来编译不同的文件,诸如此类的需求时,我们应该怎么做呢? 这个时候就可以使用Golang中的条件编译了,Golang支持两种条件编译方式: 构建标签(Buildtags) 文件后缀(Filesuffixes) 1...

  0OBZ97PIiF5t   2023年11月02日   19   0   0 Go

写这篇文章的时候,已经离我找工作有一段时间了,但是觉得这道题不管是面试还是日常的工作中,都会经常遇到,所以还是特意写一篇文章,记录下自己对Golang中的理解。如文章中出现不对的地方,请不吝赐教,谢谢。 注意,以下文章内容是基于go1.16.4进行演示的,如果和你验证时,结果不一致,可能Go的判断规则有所改变。 1、面试题 大家可以先不看结果,想想答案,再看后面的结果以及相关的分析。 typeTinterface{ } funcmain(){ var( tT pT i1interface{}=t i2interface{}=p ) fmt.Println...

  0OBZ97PIiF5t   2023年11月02日   51   0   0 Go

最近接触到了github.com/json-iterator/go,是由滴滴开源的第三方json编码库,它同时提供Go和Java两个版本。 文中大量内容来自github上的wiki文档,有兴趣的朋友可以直接点击Home跳转到官方文档查阅。 本文加了些自己的思考以及相关的详细学习例子,废话不多说了,冲!!! 1、基础介绍 json-iterator提供简洁的API,可以让你很方便地进行json序列化/反序列化;与encoding/json完全兼容,使用者可以快速、方便地迁移到json-iterator上来。此外,json-iterator还提供了很多其他方便的功能,如开放的序列化/反序列化配...

  0OBZ97PIiF5t   2023年11月02日   28   0   0 Go

1、为何需要优雅重启 在实际开发过程中,我们会不断迭代升级产品,每次迭代后,都需要在线上服务器更新代码。一般小公司的迭代升级,是没有做到像金丝雀发布或者使用到kubernetes这些东西的。那如何保证更新的时候,之前接收到的请求能够正常处理完成呢,这个时候就需要实现优雅重启了。 那如何实现优雅重启呢,其实,我们部署pythonweb服务所用到的uwsgi和gunicorn已经实现了优雅重启了,下面就讲讲如何实现优雅重启 2、uwsgi如何实现优雅重启 以下实验是基于以下版本进行的。 python3.6.8 flask2.0.3 uwsgi2.0.21 2.1编写web服务 main.py ...

  0OBZ97PIiF5t   2023年11月02日   18   0   0 Python

1、属性描述符的基础介绍 1.1何为属性描述符? 属性描述符是一种Python语言中的特殊对象,用于定义和控制类属性的行为。属性描述符可以通过定义__get__、__set__、__delete__方法来控制属性的读取、赋值和删除操作。 通过使用属性描述符,可以实现对属性的访问控制、类型检查、计算属性等高级功能。 如果一个对象定义了这些方法中的任何一个,它就是一个描述符。 看完上面的文字描述,是不是感觉一头雾水,没关系,接下来通过一个简单的案例来讲解属性描述符的作用。 1.2为什么需要属性描述符? 假设我们现在要做一个成绩管理系统,在定义学生类时,我们可能这样写: classStudent(o...

  0OBZ97PIiF5t   2023年11月02日   83   0   0 Python

1、装饰器基础介绍 1.1何为Python中的装饰器? Python中装饰器的定义以及用途: 装饰器是一种特殊的函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器可以用来修改或增强函数的行为,而不需要修改函数本身的代码。在Python中,装饰器通常用于实现AOP(面向切面编程),例如日志记录、性能分析、缓存等。装饰器的语法使用@符号,将装饰器函数放在被装饰函数的定义之前 学过设计模式的朋友都知道,设计模式的结构型模式中也有一个叫装饰器模式,那这个和Python中的装饰器有什么不同呢? 设计模式中的装饰器的定义以及用途: 设计模式中的装饰器是一种结构型模式,它可以在不改变原对象的...

  0OBZ97PIiF5t   2023年11月02日   23   0   0 Python

1、面试题介绍 以前面试,面试官问了一个问题,大意是: 我们在终端中,通过执行pythonmain.py命令,会启动一台前台进程直到程序结束。现在我还是想通过执行pythonmain.py,启动一个后台进程,让后台进程运行我们的业务逻辑。这个时候应该怎么做呢? 回答上面这道题,需要先了解什么是前台进程和后台进程,什么是孤儿进程和僵尸进程?接下来,我们先一起看看前台进程和后台进程,以及孤儿进程和僵尸进程。最后再通过编写代码来完成面试题的需求。 2、前台进程和后台进程 2.1什么是前台进程 在Linux中,前台进程是指当前正在运行的进程,它与用户交互并占用终端。当用户在终端中输入命令时,该命令...

  0OBZ97PIiF5t   2023年11月02日   57   0   0 Python

原文:Golang标准库——io 1、io io包提供了对I/O原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。 因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安全的。 1.1常量 Seek值。 const( SeekStart=0//寻找相对于文件的起源 SeekCurrent=1//寻找相对于当前的偏移量 SeekEnd=2//寻求相对于目的 ) 1.2Variables varEOF=errors.New...

  0OBZ97PIiF5t   2023年11月01日   24   0   0 转载区

一、简单排序 本系列笔记全部来源了《2020最新数据结构与算法教程》,点击视频连接即可跳转观看学习。如有侵权,请联系删除,谢谢。 在我们的程序中,排序是非常常见的一种需求,提供一些数据元素,把这些数据元素按照一定的规则进行排序。比如查询一些订单,按照订单的日期进行排序;再比如查询一些商品,按照商品的价格进行排序等等。所以,接下来我们要学习一些常见的排序算法。 在go的开发工具包jdk中,已经给我们提供了很多数据结构与算法的实现,比如math,time等等,都是以API的方式提供,这种方式的好处在于一次编写,多处使用。我们借鉴jdk的方式,也把算法封装到某个类中,那如果是这样,在我们写go代...

  0OBZ97PIiF5t   2023年11月01日   56   0   0 算法与数据结构

toml官方wik toml官方文档 此次文档是以v1.0.0为例,进行说明的。如果使用到的版本不同,直接去官方文档中找对应的版本即可。 谈到配置文件,大家都能说出来好几种,比如常见的ini、xml、json、yaml、properties、toml等等,因为项目中用到了toml格式的配置文件,但是之前并没有使用过,所以特意找toml官方文档学习学习,特意记录下,和官方提供的简体中文一模一样。 TOML是前GitHubCEO,TomPreston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。TOML被设计为可以无二义性的转换为一个哈希表(Ha...

  0OBZ97PIiF5t   2023年11月01日   100   0   0 翻译区
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~