全部文章
Go内置函数make和new的区别?
初始化变量一般分为两步:变量声明 + 变量内存分配,在 Go 语言中 var 关键字用来声明变量的,若声明变量是值类型系统会默认为他分配内存空间,并赋该类型的零值。
Go defer关键字的实现原理?
defer 能够让我们推迟执行某些函数调用,推迟到当前函数返回前才实际执行。defer 与 panic 和 recover 结合,形成了Go语言风格的异常与捕获机制。defer 语句经常被用于处理成对的操作,如文件句柄关闭、连接关闭、释放锁。虽然 defer 方便开发者使用,但是也有一定的性能损耗。
Go函数参数传递到底是值传递还是引用传递?
Go语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。是否可以修改原内容数据,和传值、传引用没有必然的关系。但在Go语言里因为参数是引用类型,虽然只有传值,但是我们还是可以修改原内容数据。
Go函数返回局部变量的指针是否安全?
一般来说,局部变量会在函数返回后被销毁,因此被返回的引用就成为了 “无所指” 的引用,程序会进入未知状态。但这在 Go 中是安全的,Go 编译器将会对每个局部变量进行逃逸分析。如果发现局部变量的作用域超出该函数,则不会将内存分配在栈上,而是分配在堆上,因为他们不在栈区,即使释放函数,其内容也不会受影响。
Go方法值接收者和指针接收者的区别?
如果方法的接收者是指针类型,无论调用者是对象还是对象指针,修改的都是对象本身,会影响调用者;如果方法的接收者是值类型,无论调用者是对象还是对象指针,修改的都是对象的副本,不影响调用者;
Go 语言常见知识点总结
Go 语言常见知识点总结,相关开发技巧,避坑指南
MySQL 如何从查看和管理正在运行的线程
有时,您可能会收到MySQL服务器返回的 “太多连接” 错误。要找出原因,可以使用 SHOW PROCESSLIST 命令。该命令的作用是返回所有当前运行的线程。然后,您可以使用 KILL 语句终止空闲线程
MySQL表维护
MySQL 提供了几个有用的语句,允许您有效地维护数据库表。这些语句使您可以分析,优化,检查和修复数据库表。
MySQL访问控制系统
MySQL 实现了一个复杂的访问控制和权限系统,允许您创建全面的访问规则来处理客户端操作并有效防止未经授权的客户端访问数据库系统。
MySQL 表相关操作
MySQL 表相关操作,表管理相关
电路交换
在通信开始前,通信双方要在网络上建立专属信道来发送数据,信道至少会持续到通信结束才会断开。
设计模式之工厂方法
工厂方法模式是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型;有时候也被称为:虚拟构造函数、Virtual Constructor、Factory Method。
设计模式基本概念
设计模式 是软件设计中常见问题的典型解决方案。每个模式就像一张蓝图,你可以通过对其进行定制来解决代码中的特定设计问题。
Go 常用标准库之fmt
fmt 包实现了类似C语言 printf 和 scanf 的格式化I/O。格式化动作(‘verb’)源自C语言但更简单。
Go 常用标准库之io
io包提供了对 I/O 原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。因为这些接口和原语是对底层实现完全不同的低水平操作的包装,除非得到其它方面的通知,客户端不应假设它们是并发执行安