- 博客(24)
- 收藏
- 关注
原创 go defer关键字
defer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。不过如果对defer的了解不够深入,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。在讲解defer的实现之前先看一看使用defer容易遇到的问题。defer使用时的坑先来看看几个例子。请读者先不要运行代码,在心里跑一遍结果,然后去验证。
2023-09-13 21:10:05
134
原创 go语言的signal
信号是事件发生时对进程的通知机制。有时也称之为软件中断。信号与硬件中断的相似之处在于打断了程序执行的正常流程,大多数情况下,无法预测信号到达的精确时间。因为一个具有合适权限的进程可以向另一个进程发送信号,这可以称为进程间的一种同步技术。当然,进程也可以向自身发送信号。然而,发往进程的诸多信号,通常都是源于内核。引发内核为进程产生信号的各类事件如下。硬件发生异常,即硬件检测到一个错误条件并通知内核,随即再由内核发送相应信号给相关进程。比如执行一条异常的机器语言指令(除 0,引用无法访问的内存区域)。
2023-09-06 10:48:41
271
原创 Lock wait timeout exceeded
mysql提示Lock wait timeout exceeded;try restarting transaction很明显,是因为这条语句被锁住了,所以释放这个锁。我们可以通过到information_schema 中来进行查找被锁的语句。innodb_lock_waits 锁等待的对应关系。innodb_trx 当前运行的所有事务。innodb_locks 当前出现的锁。杀掉这个MySQL语句的线程即可。
2023-05-10 22:58:35
125
原创 group by datetime类型字段
5、substring_index(字段名,str,count),str是截取的字段 count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的。3、substr\substring(字段名,index)当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空。4、substr\substring(字段名,index,len)从index开始,截取len长度。字段类型转换 cast。
2023-04-12 17:49:12
263
1
原创 go语言变量的生命周期
基本的实现思路是,从每个包级的变量和每个当前运行函数的每一个局部变量开始,通过指针或引用的访问路径遍历,是否可以找到该变量。如果不存在这样的访问路径,那么说明该变量是不可达的,也就是说它是否存在并不会影响程序后续的计算结果。f函数里的x变量必须在堆上分配,因为它在函数退出后依然可以通过包一级的global变量找到,虽然它是在函数内部定义的;相反,当g函数返回时,变量*y将是不可达的,也就是说可以马上被回收的。y的存储空间(译注:也可以选择在堆上分配,然后由Go语言的GC回收这个变量的内存空间)
2023-04-02 16:05:30
128
原创 go语言指针
指针特别有价值的地方在于我们可以不用名字而访问一个变量,但是这是一把双刃剑:要找到一个变量的所有访问者并不容易,我们必须知道变量全部的别名(译注:这是Go语言的垃圾回收器所做的工作)。如果用“var x int”声明语句声明一个x变量,那么&x表达式(取x变量的内存地址)将产生一个指向该整数变量的指针,指针对应的数据类型是。p对应一个变量,所以该表达式也可以出现在赋值语句的左边,表示更新指针所指向的变量的值。p表达式读取指针指向的变量的值,这里为int类型的值,同时因为。p表达式对应p指针指向的变量的值。
2023-04-02 15:34:36
81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人