牛顿迭代法求开方
求一个数的开平方 我们假设这个数是 ,如何先快速求出 的值? 我们可以把这个题目转化成一个几何问题。如下图: 可以转换为,求公式 Y=X2−aY = X^2 - aY=X2−a,(a,0)(\sqrt a,0)(a,0)的值。 我们现在抛物线上任意取一点 (x0,x02−a)(x_0,x_0^2 - a)(x0,x02−a), 然后基于这一点画一个切线,切线的方程记为 。 切线的斜率 ,我们可以对抛物线求导,得到 带入到切线的方程可以得 因为切线经过点(x0,x02−a)(x_0,x_0^2 - a)(x0,x02−a),带入切线方程,就有 x02−a=2∗x02+bx_0^2 - a = 2 * x_0^2 + bx02−a=2∗x02+b 转而得到 b=−x02−ab = -x..
更多Golang “锁”事
一、 Go 同步原语 sync.Cond -> notifyList -> runtime.mutex、atomic sync.WaitGroup -> atomic、 runtime.sema sync.Map -> sync.Mutex、atomic sync.Once -> sync.Mutex、atomic sync.RWMutex -> sync.Mutex、atomic sync.Mutex -> runtime.sema channel -> runtime.mutex **sync.Mutex和runtime.mutext区别:**简单说就是sync.Mutex是用户层的锁,Lock抢锁失败会造成goroutine阻塞(会调用gopar..
更多Golang Context 详解
基于 Go 1.18 源码分析 一、引言 1.1 什么是 Context? Context是Go 1.7引入的一个标准库,官方 blog 里面介绍,最早是Google内部使用的一个库,主要用于在一个Request对应的多个Goroutine中传递数据,数据主要分为两种: 请求的基本信息,比如用户鉴权信息、请求的Request-ID等等。 请求的Deadline,如果请求被Cancel或者Timeout,能够控制多个Goroutine会返回。 整个 context.go 加上注释也就600行左右。核心就是Context type : type Context interface { // 获取 DeadLine 时间,使用 WithDeadline 和 WithTimeout 才有 Deadlin..
更多Quic 加密握手的过程
Quic 加密握手的过程示意图
更多