LQH入职第10天

1、go test 测试单个文件和测试单个函数

1,测试单个文件,一定要带上被测试的原文件

go test -v  wechat_test.go wechat.go 

2,测试单个方法

go test -v -test.run TestRefreshAccessToken

2、僵尸进程与孤儿进程

我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
  僵尸进程的危害:如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,因此孤儿进程并不会有什么危害。
  任何一个子进程(init除外)在exit()之后,并非马上就消失掉,而是留下一个称为僵尸进程(Zombie)的数据结构,等待父进程处理。

守护进程:也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。
孤儿进程与守护进程的区别

(1)孤儿进程是因为父进程异常结束了,然后被1号进程init收养。
守护进程是创建守护进程时有意把父进程结束,然后被1号进程init收养。
虽然他们都会被init进程收养,但是他们是不一样的进程。
(2)守护进程会随着系统的启动默默地在后台运行,周期地完成某些任务或者等待某个事件的发生,直到系统关闭守护进程才会结束。
孤儿进程则不是,孤儿进程会因为完成使命后结束运行。

3、缓冲的channel和无缓冲的channel

我之前天真的认为 有缓冲与无缓冲的区别 只是 无缓冲的 是 默认 缓冲 为1 的缓冲式。
其实是彻底错误的,无缓冲的与有缓冲channel有着重大差别

那就是一个是`同步`的 一个是`非同步`

怎么说?比如
c1:=make(chan int) 无缓冲
c2:=make(chan int,1) 有缓冲
c1<-1
无缓冲的 不仅仅是 向 c1 通道放 1 而是 一直要有别的协程 <-c1 接手了 这个参数,那么c1<-1才会继续下去,要不然就一直阻塞着。

而 c2<-1 则不会阻塞,因为缓冲大小是1 只有当放第二个值的时候 第一个还没被人拿走,这时候才会阻塞。
https://www.cnblogs.com/mafeng/p/9028716.html

4、go语言中哪些情况可以使用panic

(1)对于一些不可接受的系统错误,如服务启动时的那些初始化或一些严重的逻辑错误,像数据连接建立日志文件打开空指针等,可以直接 panic,这些都是严重影响程序正常运行的错误,存在这些错误,程序就不用启动了。
(2)在服务启动后,常常会有些业务的错误,比如偶尔一次的数据保存失败参数校验错误短信发送失败,这些事情要能及时做好日志记录报警工作,但服务不能 panic,还要保证服务的正常运行。
(3)其实就一个原则,发生的 error 是否已经严重影响服务逻辑,如果在预判之类的错误,那我们就应该 return error,记录日志,并不需要人工干预才能恢复,否则建议 panic。
(4)基本都是 error,而 panic 一般主要在启动时才会使用,保持程序运行环境的正常初始化。
⚠️注:(1)当函数的返回值是指针时,一定要对函数的返回值进行初始化。返回值是指针,相当于var *p type,并没有空间。
(2)指针,chan ,map都要注意,声明以后必须分配空间。
var ip int / 声明指针变量 /
ip = &a /
指针变量的存储地址 */
|| var p *[]int = new([]int)
var p *int = new(int)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值