- 博客(11)
- 收藏
- 关注
原创 Request Proxy总结
接收端请求体按Method、Url、Header、Body排序。需要用channel来作为超时判断时,直接把内容也通过channel传递,因为已经有了消耗,而且用全局变量会导致超时后协程中执行成功,改变全局变量的值。cmd := exec.Command("/bin/sh", "-c", reqParam.Arg)cmdResult := make(chan cmdOutput, 1)go func() { cmdData, cmdErr := cmd.CombinedOutput
2022-01-19 12:28:23
2610
原创 指定可写缓冲区大小
指定可写缓冲区大小代码实现type truncateBuffer struct { buf []byte}func newTruncateBuffer() *truncateBuffer { return &truncateBuffer{buf: make([]byte, 0, 1024*1024)}}func (b *truncateBuffer) Write(p []byte) (n int, err error) { pLen := len(p) bLen := len
2022-01-19 11:37:03
201
原创 git mv 移动或重命名文件,目录或符号链接问题
git mv 例如:git mv test.txt mydir 将test.txt文件移动到mydir目录下git mv test.txt test1.txt 将test.txt文件重命名为test1.txt此操作必须要在暂存区或者文件commit之后才能进行rename,此时不需要再git add, 否则会报错 fatal: not under version control, source=home/test.txt, destination=home/test1.txt )..
2021-11-15 11:34:34
943
原创 ssh克隆存储库时提示Hot key认证失败
Testing your SSH connectionssh -T git@github.com # Attempts to ssh to GitHub需要用ssh -T “需要远程的地址”
2021-11-11 11:24:39
418
原创 分布式相关知识点
分布式锁在项目中有哪些应用场景1、系统是一个分布式系统,golang的锁已经锁不住了;2、需要操作共享资源,比如库里唯一的用户数据;3、同步访问,即多个进程同时操作共享资源;分布式锁有哪些解决方案1、Redis分布式锁。使用setnx key value,这种方法如果不在使用完后delete删除锁,则会产生死锁;因此需要同时设置过期时间,作为一个原子性操作;但如果这次操作的耗时超过了过期时间,则其他操作现在能拿到这个数据了,此时需要用watch dog来刷新过期时间。2、基于Zookeeper,
2021-09-26 14:10:59
148
原创 杂七杂八知识点
MVC软件架构模式MVC是软件工程中的一种软件架构模式,它把软件系统分为三个基本的部分:模型Model、视图View以及控制器Controller。这种模式的目的是为了实现一种动态的程序设计,简化后续对软件系统的修改和扩展,并使得程序的某一部分的复用成为可能。三个部分按照其各自的职责划分:数据Model: 负责封装数据、存储和处理数据运算等工作视图View: 负责数据展示、监听用户触摸等工作控制器Controller: 负责业务逻辑、事件响应、数据加工等工作数据层在发生改变之后会通知视图层进行
2021-09-19 00:34:53
96
原创 面经与八股文汇总
垃圾回收 https://www.jianshu.com/p/8b0c0f7772da出现概率:100%问题回收流程,对比其他语言的垃圾回收机制三色回收有没有stw,什么是stw,几次、出现在什么时候写屏障什么玩意儿GPM 调度和CSP模型 https://www.jianshu.com/p/36e246c6153d出现概率: 100%,x牛、x哈游、问得都非常详细、其他公司只要说出过程就完事问题GPM分别是什么、分别有多少数量协程的结构体怎么抢占、怎么调度、本地、全局队列解
2021-09-17 00:50:33
783
原创 剑指offer-Golang实现
package mainimport ( "container/heap" "container/list" "math" "sort" "strconv" "strings")func main() {}//03:数组中重复的数字func findRepeatNumber(nums []int) int { if nums == nil { return -1 } var tmp int for i := 0; i < len(nums); i++ {
2021-09-10 13:26:23
283
原创 《GO语言实战》笔记
《GO语言实战》笔记数组、切片和映射从内存和性能来看,在函数间传递数组是一个开销很大的操作,因为总是以值传递的方式进行的。无论一个数组有多长,总会完整复制并传递给函数。//创建容量长度都是100的切片slice := []string{99: “”}如果在[]运算符里指定了一个值,那么创建的就是数组而不是切片。var slice []int // 创建nil整型切片slice := make([]int, 0) slice := []int{} // 创建空切片两者长度、容量都为零,前者的
2021-08-10 16:56:54
193
原创 网络协议笔记
网络协议TCP与UDP的区别TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通信之后关闭连接。UDP协议需要自己完成丢包重发、消息排序的工作。TCP是面向流的协议,接收方\发
2021-07-05 13:56:39
63
原创 Go基础知识点
Go基础知识点:=简写不可用于声明全局变量,只能用于func内。函数返回参数为一个且不带参数名,可以不写括号。返回参数超过一个或者带参数名则需要用括号扩起+return返回;返回参数不带参数名称时必须显示返回。select中每个 case 必须是一个通信操作,要么是发送要么是接收;如果有同时多个case去处理,比如同时有多个channel可以接收数据,那么Go会伪随机的选择一个case处理(pseudo-random)。如果没有case需要处理,则会选择default去处理,如果default ca
2021-07-04 17:04:17
112
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人