深圳幻海软件技术有限公司 欢迎您!

  • 一起聊聊 SwiftUI 布局协议

    简介今年 SwiftUI​ 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。早在2019年,我写了一篇文章SwiftUI中frame的表现[1],其中,我阐述了父视图和子

  • Go语言中什么是Goroutines

    基本概念Goroutine是一个被Go运行时管理的轻量级线程(AgoroutineisalightweightthreadmanagedbytheGoruntime)。为什么没有采用现有的表示并发名词来解释Go语言中的并发呢?因为现有的线程、协程、进程等都无法准确表达Goroutine。Gorout

  • Go学设计模式--装饰器和职责链,哪个模式实现中间件更科学?

    大家好,我是每周在这里陪你进步的网管~,本次我们继续填坑,说一下装饰器模式。上篇文章我们说过装饰器是代理模式的特殊应用,而且很多人说中间件是用装饰器模式实现的,有的人说是用职责链实现的,那么这篇文章我们就来一起看看他们的异同。什么是装饰器装饰器模式(DecoratorPattern)也叫作包装器模式

  • 请求量太大下游扛不住怎么办?进来学一招

    背景这个问题简单说一下背景,如果不明白可以看上篇文章,不想看也没关系,这是个通用的解法,后面我会总结抽象下。在上篇文章的最后提到对每个摘除的地址做决策时,需要顺序执行,且每一个要摘除的地址都要实时获取该集群的地址信息,以便做出是否需要兜底的决策。当被摘除的机器非常多时,获取地址信息的请求量就会非常大

  • 深入理解 Go 语言的一等函数及其应用

    ​1.什么是Go中的一等函数任何一门编程语言都离不开函数,无论是命令式语言C、多范式编程语言C++,还是面向对象编程语言Java、Ruby,动态语言Python、JavaScript,函数这一语法元素都是当仁不让的核心。Go语言没有面向对象语言的语法,比如类、继承、对象,但Go语言中最重要的部分就是

  • 带参数的全类型 Python 装饰器

    这篇短文中显示的代码取自我的小型开源项目按合同设计,它提供了一个类型化的装饰器。装饰器是一个非常有用的概念,你肯定会在网上找到很多关于它们的介绍。简单说,它们允许在每次调用装饰函数时(之前和之后)执行代码。通过这种方式,你可以修改函数参数或返回值、测量执行时间、添加日志记录、执行执行时类型检查等等。

  • 函数式编程在 Go 泛型下的实用性探索

    背景函数式编程(FunctionalProgramming/FP)作为一种编程范式,具有无状态、无副作用、并发友好、抽象程度高等优点。目前流行的编程语言(C++、Python、Rust)都或多或少地引入了函数式特性,但在同作为流行语言的Golang中却少有讨论。究其原因,大部分的抱怨Golang函数

  • 你有犯过这些 Go 编码错误吗?

    大家好,我是煎鱼。在用Go编程时,总会遇到各种奇奇怪怪的错误,国内外已经有许多小伙伴总结过(参考链接见参考),感觉都能凑一桌了。希望对大家有所帮助。Go常见错误1.nilMap问题在程序中声明(定义)了一个map,然后直接写入数据。如下代码:复制funcmain(){varmmap[string]s

  • Uber工程师对真实世界并发问题的研究

    今天Uber工程师放出一篇论文(AStudyofReal-WorldDataRacesinGolang]( https://arxiv.org/abs/2204.00764)),作者是Uber的工程师Milind Chabbi和MuraliKrishnaRamanathan,他们

  • Golang 常见设计模式之装饰模式

    想必只要是熟悉Python的同学对装饰模式一定不会陌生,这类Python从语法上原生支持的装饰器,大大提高了装饰模式在Python中的应用。尽管Go语言中装饰模式没有Python中应用的那么广泛,但是它也有其独到的地方。接下来就一起看下装饰模式在Go语言中的应用。简单装饰器我们通过一个简单的例子来看

  • 怎么选择 Go 文件读取方案

    文件处理是一个常见的问题,同时Go又提供了非常多的文件读取方法,容易让人患选择困难症。本文作为其扩展,以实际不同大小的文件为例,来具体比较下它们的差异。创建不同大小的文件首先,我们需要有比较对象。鉴于电脑磁盘空间有限,本文就比较KB、MB、GB三个级别的文件读取差异。复制packagemainimp

  • 一日一技:8行炫技代码,知识点多得不得了

    我们今天来看一段炫技代码。它可以把任何能接收两个参数的函数定义成一个特殊的运算符。例如,我们知道Python里面的range函数,最少可以接收1个参数,最多能够接收3个参数。当只有两个参数的时候,格式为range(开始,结束),从开始数字到结束数字逐次加1,左闭右开。使用今天的方法,可以把它的写法改

  • Go1.18 泛型的好、坏亦或丑?

    大家好,我是程序员幽鬼。Go泛型定了,有哪些好的使用场景,哪些不好的应用场景,亦或哪些使用看起来丑?本文聊聊这个问题。1简介泛型很棒,而且Go变得比以前更方便了。但是与可能非常有用的channel类似,我们不应该仅仅因为它们存在就到处使用它们。除了用于数据结构,泛型还有其他很好的应用场景。当然,也有

  • Go 提问:值为 Nil 能调用函数吗?

    本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。大家好,我是煎鱼。最近在我们Go的技术交流群里,有一个小伙伴提了一个程序方面的问题,还挺有意思的,分享给大家。示例示例程序如下:复制type T struct{}  func&

  • Go开发中结构体 model、dto 、time格式问题

    1、背景model层不允许使用json,dto层又重复造轮子,一个表的字段可能20个左右,那么赋值语句难受死了。其次就是json直接解析,model层的time.Time,完蛋格式不对,返回的数据不对。比如 复制{     "user_na

  • 一个 UT Failed 引出的思考

    本文转载自微信公众号「董泽润的技术笔记」,作者董泽润。转载本文请联系董泽润的技术笔记公众号。前几天某个服务ut失败,导致别人无法构建。查看下源代码以及utcase,发现槽点蛮多,分享下如何修复,写单测要注意的一些点,由此引出设计模式中的概念依赖反转、依赖注入、控制反转失败case复制func&nbs

  • 聊一聊Python中的“垃圾”回收

    前言对于python来说,一切皆为对象,所有的变量赋值都遵循着对象引用机制。程序在运行的时候,需要在内存中开辟出一块空间,用于存放运行时产生的临时变量;计算完成后,再将结果输出到永久性存储器中。如果数据量过大,内存空间管理不善就很容易出现OOM(outofmemory),俗称爆内存,程序可能被操作系

  • 用Go构建一个SQL解析器

    摘要本文旨在简单介绍如何在Go中构造LL(1)解析器,在本例中用于解析SQL查询。为了简单起见,我们将处理子选择、函数、复杂嵌套表达式和所有SQL风格都支持的其他特性。这些特性与我们将要使用的策略紧密相关。1分钟理论一个解析器包含两个部分:词法分析:也就是“Tokeniser”语法分析:AST的创建

  • 写Python时的5个坏习惯,你有几条?

    很多文章都有介绍怎么写好Python,我今天呢,相反,说说写代码时的几个坏习惯。有的习惯会让Bug变得隐蔽难以追踪,当然,也有的并没有错误,只是个人觉得不够优雅。注意:示例代码在Python3.6环境下编写1用列表作函数的默认参数看下面这个例子 复制def func(a,&nbs

  • 如何在Go的函数中得到调用者函数名?

    有时候在Go的函数调用的过程中,我们需要知道函数被谁调用,比如打印日志信息等。例如下面的函数,我们希望在日志中打印出调用者的名字。 复制func Foo() {     fmt.Println("谁在调用我?")&nbs

推荐阅读