Golang channel的使用总结 Go语言中,最最最优秀的莫过于channel了。3大特点:1、线程安全2、其数据结构是队列(先进先出)3、有基本的数据类型通道使用前必须先初始化,否则会error无缓冲的通道:接收和发送是同步的,意味着,向其发送数据,必须有一个接收者,否则发送阻塞,接收也阻塞。缓冲通道:发送和接收不同步,1.发送不会阻塞 2.接收会阻塞关闭通道后,再次关闭会panic(划重点,通道一般有发送者关闭)关闭通道后,在往channel发送数据会panic关闭通道后,可以一...
HTTPS实现原理 以前只知道https,可以对传输的数据进行加密。主要面试经常喜欢问些此类的问题,接下来讲解下原理申请过域名证书的都知道,有2个文件1、证书文件证书文件包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;签名的生成是单向散列公开的明文信息的信息摘要,然后用私钥将信息摘要加密,就得到签名2、私钥私钥获取签名时有用到的。SSL握手协议,如下图主要看证书验证那块客户端拿到证书后,因为本.
DNS的实现,面试常问 很多公司面试都会有这个问题,比如从浏览器输入www.baidu.com打开到显示页面,经过哪些。从这个简单的问题,可以看出应聘者对网络这块的了解程度。DNS说白了,就是将域名解析成IP的过程。为什么要解析ip,因为ip才是你真正要访问的东西的地址。解析的过程中,会产生DNS挟持,DNS污染使得解析的IP错误,造成大面积访问404的问题,所以很多公司采用httpDNS的方式,来缓存到本地环境,减少这块的错误。一般DNS解析过程分为1、递归查询,即发一次请求,等你给结果,主要用于
Go语言数组学习 go 语言的数组:1、长度固定2、长度是数组类型的一部分3、值类型(参数以复制的方式传递)// 值传递例子package mainimport "fmt"func test(b [3]int){ fmt.Printf("b 地址:%p",&b)}func main() { fmt.Println("Hello, World!") var a = [3]int{1,2,3} fmt.Printf("a 地址:%p",&a) a[2] = 4
Python自动爬取拉钩教育课程 本课程纯属学习交流,如有侵权,请告知,立马删除import requestsimport jsonimport csvimport timeimport random# import shlex# print(random.randint(1,17))# exit()courseId = "1" # 想学哪一门,改这里url = "https://*****/getCourseLessons?courseId=" + courseIdpayload = {}headers
Gin框架执行流程 // gin.gogin.Run() // gin启动http.ListenAndServe(address, engine)// server.goserver := &Server{Addr: addr, Handler: handler}server.ListenAndServe()ln, err := net.Listen("tcp", addr) // 网络监听srv.Serve(ln)c := srv.newConn(rw) // 网络连接c := ...
微服务高可用 1、隔离2、超时控制(context.withTimeout)3、过载保护(滑动均值)4、限流(google.com/x/rate、uber)5、降级(注意降级数据一定要测试)6、重试(一般只在报错那个节点做)
Gin框架 ShouldBindJSON详解 为什么第二次使用ShouldBindJSON就失效了呢?今天debug看了下,主要是 http.Request的io buffer第一次取完之后,http.body 结构体中的sawEOF=true第二次去读取,发现已经是true了。直接返回了err = io.EOF....
利用PHP数组实现元素0的处理 分享一道面试题,也当做警醒自己,面试讲究战术的,不要被面试官套路,自己应该有自己的准备。$arr = [2,0,6,0,8,5,0];数组arr,将其中的非0整数按照顺序输出,0 最后输出。其实时间足够还是很简单的,被面试官催,我真的太难了。$arr = [2,0,6,0,8,5,0];foreach ($arr as $k => $a) { echo $a.PHP_EOL; if ($a == 0) { unset($arr[$k]); .
阶梯计费-PHP实现最简洁 最近遇到一个阶梯计费的case ,想了挺久的,还是没有很好的解决方案,今天突发奇想,被我发现了。哈哈哈哈其实当时想了配置文件,但是没有想到这个点子上,所以记录下,下次项目中参考使用<?php// 阶梯计费代码function calcMoney($n, $config) { $money = 0; foreach ($config as $k => $value) { if ($n >= $value['min'] && $n