- 博客(311)
- 资源 (48)
- 收藏
- 关注

原创 SSH 远程登录报错:kex_exchange_identification: Connection closed.....
不知道为啥会出现这样的情形,最近这段时间登录都是正常的,不知道哪里抽风了,就提示这个。错误信息 kex_exchange_identification: Connection closed by remote host 出现在尝试使用 SSH 连接到远程服务器过程中,表明在密钥交换阶段的一开始,远程主机就关闭了连接。服务器的sshd_config文件中配置错误,可能是不允许的加密算法、修订文件中的语法错误,或者未正确指定用于SSH的HostKey。如果当前已有太多活动连接,新的连接尝试可能会被拒绝。
2024-08-24 18:52:05
4091

原创 Phalcon 创建项目过程中的一些坑
得到的项目结构图如下: 就会发现 访问不了,报错如下: 如下图: 修改成如下的路由后,再去浏览器里面看的话,就发现得到的结果和官网上的是一致的了: 点击运行后,得到的结果如下:
2024-08-11 23:20:13
216

原创 Phalcon安装过程以及踩的一些坑(mac环境)
这个问题的实质是版本不兼容造成的: php的版本是 7.4.26,phalcon 5.1 和devtools 4.2。相关命令是成功不了的。公司用Phalcon框架好长时间了,中途发现了一些Phalcon使用的上的问题,于是想在本地搭建一套Phalcon的环境,方便排查问题使用。出现这个的最主要原因是:Phalcon的可执行文件目录添加到了PATH环境变量里面;跟phalcon需要的版本不一致,既然把phalcon升级到5了,那么这个。需要注意的是,在mac系统下,要加。安装完成后,在cli下使用。
2024-07-31 22:57:15
313

原创 Git删除分支不成功,提示:error: Cannot delete branch......的问题解决
【代码】Git删除分支不成功,提示:error: Cannot delete branch......的问题解决。
2023-05-23 22:40:09
10715
2

原创 supervisor: couldn‘t exec /xxx/xxxx: ETXTBSY supervisor: child process was not spawn
说实话,刚开始看到这个报错提示的时候,我也百思不得其解!于是打开了对应的日志文件,发现该服务还在源源不断的产生服务日志!的解释,发现这个单词的意思大概就是说,对应的服务已存在,并处于运行中!于是我好像知道问题的所在了:在重新部署该服务的时候,这个服务已存在,且正在对外提供服务,没办法重启?通过使用服务以及观察对应的日志,发现最新的修改已部署成功,服务没问题。发现这个服务存在且有多个实例对外提供服务。在公司的部署代码的服务器上,使用。通过服务,查找到对应的进程id。完成之后,重新部署进程,服务启动成功 了。
2023-03-19 11:59:20
962

原创 mac环境,安装NMP遇到的问题
项目开发中,公司项目需要使用本地的环境运行,主要是php这块的业务。没有使用docker来处理,重新手动撸了一遍。记录下其中遇到的问题;由于我本地环境确实没有安装ssl证书,所以可以把这部分配置文件注释掉;然后再启动nginx,就没问题了。我安装的是php8版本,简而言之,就是。找了很久,最后发现执行下。安装php8,找不到对应的资源。
2023-02-16 23:16:46
1447

原创 Golang 模糊测试的使用
其本质上是一种自动化测试技术,更具体一点,它是一种基于随机输入的自动化测试技术,常被用于发现处理用户输入的代码中存在的bug和问题。模糊测试和常规的功能测试的最主要区别是:模糊测试时候,因为输入不可控,所以不能精准预测输出。举个例子说明,一般流程如下:我们有个方法,用来翻转一个字符串;通过运行结果,可以看到,我们的方法通过了测试用例,说明我们这个方法没问题。如果不带上这个参数,模糊测试会一直执行下去,直到遇到报错;带上这个参数,带上时间,执行完这个时间,模糊测试就自动终止了。在我的环境里面,运行。
2023-02-12 22:00:50
698

原创 Go语言生成UUID的教程以及对应的源码分析
摘自维基百科:UUID 的目的是让分布式系统中的所有元素,都有能够为方便的辨识信息,来表示唯一的序列号,无需考虑数据库创建时名称重复问题。UUID按照标准方法生成时,在实际应用中具有唯一性,且不依赖中央机构的注册和分配。UUID重复的概率接近零,可以忽略不计。在其规范的文本表示中,UUID 的 16 个 8 位字节表示为 32 个十六进制数字,由连字符 ‘-’ 分隔成五组显示,形式为“8-4-4-4-12”总共 36 个字符(32 个十六进制数字和 4 个连字符)。
2022-12-08 22:15:28
1393

原创 PHP message: PHP Fatal error: Allowed memory size of 657217728 bytes exhausted
正在进行开发的时候,突然接到一个报警信息,线上的某个接口出现了如下报错信息:;出现这样的问题了,肯定要优先解决线上这样的报错!于是放下手上当前的工作,排查起这个问题来了。 这个错误的提示,说白了,就是可允许的最大内存已经耗尽!定位到具体的代码,类似如下: 看到这个地方的代码,才到了出现问题的原因;但是处于谨慎考虑,查询了一下线上数据库对应表的条数:大概40w条数据,一行大概有十几个字段;这样问题就很明显了:一次性把几十万条数据查询出来,然后全部加载到内存中,内存就爆了!(也不知道是哪位
2022-12-05 23:01:16
683

原创 Mac下,protoc-gen-go-grpc: program not found or is not executable问题的解决
大部分情况下,问题就解决了!但是我这边,通过上面的方式安装失败了,死活安装不成功(mac环境);可以看到,安装成功了!于是再执行生成pb文件的命令,此时就成功 了!在公司的项目中,需要把对应的proto文件生成对应的pb文件,当执行。后来想,既然是安装插件嘛,为啥不用Mac自带的命令方式呢!在网上找了下对应的问题,看了不少文章,解决的方案就是安装。没有被安装,导致执行脚本的时候,没有找到对应的插件去处理。造成的后果是,对应的pb文件没有被生成!出现这个问题的原因,简单说,就是。
2022-11-23 22:17:51
5090
2

原创 MySQL 表删除数据后自增ID不连续问题的解决
遇到一个问题,就是在处理线上数据的时候,部分数据不符合要求,要删除;然后要重新插入新的数据,要求只有一点,就是要保持自增ID的连续性,即按照1、2、3、4、5、6.。这样的顺序增加,经过查询资料,终于解决了。在这里,1000是当前表中的id值;比如,在我刚才的例子 中,如果想要id连续自增(从21开始),那么此时的auto_increment应该设置为20;可以看到此时的id是从23开始算起,而不是从21开始。可以看到,此时的id就是自增连续的了!通过上面的SQL,修改后得到的结果是;其中id是自增长的。
2022-11-14 21:05:40
4830
6

原创 无重复字符串的最大长度之基于Golang的实现
之前在看网络相关的的书籍时,书上说的有滑动窗口协议,用于数据传输;虽然知道这个东西,但如何实现确实没有考虑过!通过力扣,发现有的题目着实还不错,值得学习!以后也要多刷刷题目!一看到这道题目,我就想到用双循环的方式来处理。(看到注解里面有人说,这个问题要基于滑动窗口的方式解决;这个实现应该就是滑动窗口的方式)对这道题目很感兴趣,于是自己就研究了下,花费了不少时间,终于用Golang的代码解出了这道题目。:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
2022-11-13 21:55:05
370

原创 Golang源码:singleflight分析(二)
Group结构只有两个字段,m是一个map,key是相同请求的标识,value是用来保存调用信息,这个map是懒加载,就是在使用时才会初始化;mu是互斥锁,用来保证m的并发安全。wg sync . WaitGroup // 存储返回值,在wg done之前只会写入一次 val interface {
2022-10-31 06:00:00
307

原创 Golang源码:singleflight分析(一)
wg . Add(10) //模拟10个并发 for i := 0;i < 10;i ++ {= nil {log . Print(err) return } log . Println(data) }() } wg . Wait() } //获取数据 func getData(key string)(string , error) {//模拟从db中获取数据 data , err = getDataFromDB(key) if err!
2022-10-24 22:39:06
419

原创 Golang fsm源码分析
可以理解成:某个事件(状态),由一系列其他的 事件(状态)转换而来;比如房门状态:事件名称为:开门事件,源状态:关;门只有在关闭的情况下才能转换为打开状态。在这个库文件里面,提供得有对应的代码示例;在这里,我选择其中的一个例子做个示范;在项目实践上,我们也有用到关于FSM。我的这篇文章就是对这个库文件的源码做一个分析。它定义了当前状态是如何装换的;在这个里面,最主要的是。中定义状态转换映射的缩写;
2022-10-06 16:00:09
590

原创 go mod download: invalid proxy URL missing scheme: on
我的Golang版本是1.18,然后借助于公司的梯子,能够访问外网的那种(谷歌,YouTube,Facebook都能打开);按照道理来说,go mod下,应该是毫无压力的,那为啥会报这个错误呢?研究了好长时间,在同事的指点下,终于把这个问题解决了。平时连得内网,特意这么设置的,所以没啥问题;但是借助于梯子后,能访问外网,这样搞,就有问题了。当我把这个配置修改成。最近在处理一个项目的时候,需要下载依赖;问题出现Go Env的配置上;更具体的说,就是配置。后,再连上外网,就没问题了。
2022-10-01 10:57:37
2244
1

原创 Golang log包的源码分析
第二个参数prefix设置日志的前缀,第三个参数设置日志的属性。这个里面,先把prefix放入slice里面,然后分别把属性以及刚才获取得到的文件相关信息放到这个slice里面。通过调用log包提供的函数,可以实现简单的日志打印功能。沿着这3个函数往下分析,可以看到,底层调用了同一个函数。这个函数最终会返回函数名,文件以及对应的行数等;版本的(低于这个版本的,源代码略有区别,可以忽略不计);log对象的创建,有对应的。在这个里面,最主要的是调用了。需要加以说明的字段是。包里面,提供了3个系列的函数,分别。
2022-09-29 22:48:16
511

原创 Golang errors包的源码分析
最近研究源码的时候,发现很多地方都用到了errors包里面的内容,对这个很感兴趣。因此,就想把这个包给研究下。
2022-09-21 22:49:28
391
2

原创 Golang之 runtime.Caller使用
英文注释里面有这个函数的使用说明:这个函数上报协程堆栈中的调用函数的文件以及行号的相关信息;这个参数`skip`表示堆栈桢的数量,0表示当前调用这个函数的这一层级。返回的第一个参数`pc`表示的是程序计数器。返回的就是调用函数的程序计数的相关值,包括函数名,文件,行号等信息。这个函数的使用以及源码产生了兴趣,因此研究了一番。
2022-09-18 16:45:19
339

原创 Golang context包的源码分析
context.go文件里面,主要有4个struct体,都继承Context接口;四个struct体 分别是emptyCtx、cancelCtx、timerCtx、valueCtx。提供了获取对应结构体的方法:WithCancel,WithDeadline,WithTimeout,WithValue;结构如图:我们就按照这个顺序,分别介绍对应的Context。
2022-09-15 23:35:46
214

翻译 Go的编程过程中,你会犯这些错误吗?(三)
你可以把接口值nil想象成有类型的,没有类型的nil不等于有类型的nil。数组,切片和字符串都是从0开始索引的,所以a的值可以在a[0],a[1],a[2],…在使用闭包的同时也可以避免这种数据竞争,但是我们必须注意为每个goroutine使用唯一的变量。只有当接口的值和动态类型都为nil时,接口的值才等于nil。被6个协程共享:当两个Go的协程同时访问同一个变量,并且其中至少有一个是写操作时,就会发生数据竞争。,它应该匹配一个零或多个数字的字符串,匹配一个包含字符的字符串?
2022-09-12 10:56:42
123

翻译 Go的编程过程中,你会犯这些错误吗?(二)
当无法从上下文推断出类型时,无类型的常量会根据常量的格式转换为bool、int、float64、complex128、string或rune。在这种情况下,常数是一个整数,但是。2.14.1 勾股定理是勾股定理的整数解,a2 + b2 = c2。此外,只允许后缀表示法。如果我们按照标准的习惯用法使用不等式,编译器将捕获错误。这会溢出(因为一个字节的最大值是255),结果是。函数的返回值是复制的元素数量。(6,8,10)是另一个例子,但Go中似乎不成立。要获取完整的副本,必须分配一个足够大的目标。
2022-09-11 23:06:09
129

翻译 Go的编程过程中,你会犯这些错误吗?
的元素时,你相当于是修改了对应的底层数组中的元素值,这样依赖相同底层数组的。2. 当你在方法中传递一个数组的类型时,数组会被复制。另外,Go的编译器会检测并且不允许某些变量覆盖。是nil(空),那么使用它的指针引用在运行时会异常----不能存储任何元素,它只是描述了底层数组的一部分。Go中的字符串是不可修改的,就像是一个可读的。格式的字符都会从字符串中移除,所以就会返回一个空字符串。在一个网站上看到一篇很好的文章,题目是。2.5.1 为什么下面的程序编译不了?1. 在Go中,数组是值类型;
2022-09-11 12:33:43
121

原创 你遇到过哪些高质量的 Go 语言面试题?
实名反对高票答案,全是些cgo的问题,真正跟go核心相关的channel,goroutine都没问。而且各种假大空,动不动就性能,我特么10w长度的slice都没性能问题,你这动不动就要优化底层数据结构?有这功夫不如看看channel,slice,map,这些数据结构怎么实现的,免得以后死锁,slice扩容这种问题踩坑。我举例的问题都比较简单,完全可以对这些方面细节考察然后进行扩充,最后整理出一套比较综合的题目,给自己或者他人。之前面过几家go的,也做了一段时间go,简单谈下我遇到的坑吧。
2022-09-04 22:55:24
356

原创 Go语言中开启和退出协程(二)
context意思是,context是来传递信息的:服务端可以创建一个context,而请求方应该接受这个context;在方法的调用链中,必须传递这个context,在创建context中,可选参数有WithCancel,,,WithValue;当一个context取消时,由它派生出的所有(子)context也会随之取消。...
2022-08-28 12:51:49
289

原创 Go语言中开启和退出协程
协程(coroutine)是Go语言中的轻量级线程实现;与线程不同的是,协程不受操作系统调度,协程的调度由用户程序自行提供;Go语言中的协程调度器将协程调度到线程中运行。在Go语言中,协程的创建很容易,关键字是Go:例如,用。在Go语言中,退出协程有两种方法:1 通过。在这里,先将如果通过通道的方式,退出协程。开启了两个协程,第一个协程是。以上所有的都执行完成后,输出。里面如果有值,则关闭通道。即开启了一个新的协程。
2022-08-22 23:09:25
1917

原创 Go语言圣经的知识图谱
分为10章,略有改动;只有一个总体的框架图,一些细节的东西没有写上去(对我自己来说,觉得没必要,因为这些东西都会;如果是初学者,建议按照这个框架来研究,包括细节)
2022-08-20 23:07:44
354

原创 Short read or OOM loading DB. Unrecoverable error, aborting now
Ps:看到网上还有另外一种搞法,就是把对应的快照文件给删掉,然后再重启,这样就重启成功了!需要注意的是,删除后,就没有之前的缓存了,这个要慎重!的快照文件处理不当造成的!由于是测试环境,我们没有修复快照文件,而是采取直接删除然后重启的办法搞得!服务后,无法加载到内存中,导致出现的错误。这个时候要做的,应该是修复这个文件然后重新加载进去就好。的查询次数比之前高出不少,这个说明了缓存的必要性!看到文件不存在的这种报错,于是在对应的目录下找了找,发现。日志来看,发现是读对应的快照失败,没有啥好办法,重启。...
2022-08-08 20:52:25
1459

原创 package DotaChessSelfPlay is not in GOROOT以及 relative import paths are not supported in module mode
在网上找了不好资料,但是都没解决!然后不想找了,直接观察项目文件,发现项目中缺失。那么是不是因为缺少这个文件导致的呢?执行程序后,项目运行成功了!因此在运行这样的项目时候,先执行。今天研究一个开源项目的时候,进行。提出的开发包管理工具,一些老的项目是没有。,然后再去下载依赖包,即可正常运行项目!,发现之前的错误提示都消失了!是要依赖于这个文件的。......
2022-08-04 20:10:28
968

原创 Golang swagger :missing required param comment parameters
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger让部署管理和使用功能强大的API从未如此简单。...
2022-08-01 09:00:00
1699
1

原创 Golang sync/atomic 包的原子操作说明
具体的原子操作在不同的操作系统中实现是不同的。比如在Intel的CPU架构机器上,主要是使用总线锁的方式实现的。大致的意思就是当一个CPU需要操作一个内存块的时候,向总线发送一个LOCK信号,所有CPU收到这个信号后就不对这个内存块进行操作了。等待操作的CPU执行完操作后,发送UNLOCK信号,才结束。原子操作即是进行过程中不能被中断的操作,针对某个值的原子操作在被进行的过程中,CPU绝不会再去进行其他的针对该值的操作。包避免了加锁解锁的过程,一行代码就可以完成这个操作,使代码更简洁,更具有可读性。...
2022-07-29 21:57:13
296

原创 Golang invalid argument to intn报错的解决
最近的项目中,因为要处理随机的问题,所以使用到随机数。项目在测试的过程中,突然报错了invalidargumenttointn;事实上,这个报错是随机函数的源码实现中的提示;当传入的参数小于等于0时,就会抛出这个提示;为什么会有这样的提示呢?原因是,它的实现源码里面对入参值有判断;当不符合规范时,直接抛出。我这边使用的随机函数,是golang内置的包。我这边在使用的时候,未对入参。,这个方法入参是一个非负数;进行判断,在某些情况下,入参。...
2022-07-20 21:05:26
2079

原创 Golang signal.Notify 信号的退出
信号(Signal)是Linux,类Unix和其它POSIX兼容的操作系统中用来进程间通讯的一种方式。一个信号就是一个异步的通知,发送给某个进程,或者同进程的某个线程,告诉它们某个事件发生了。当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。如果目标进程先前注册了某个信号的处理程序(signalhandler),则此处理程序会被调用,否则缺省的处理程序被调用。摘取来源在POSIX.1-1990标准中定义的信号列表c。...
2022-07-16 20:48:50
608

原创 Golang go-svc包源码分析
在研究NSQ源码时,发现了一个问题;如下: 的源码方法: 的源码方法: 的源码方法: 可以看到,在三个主要的方法中,都包含了、、三个方法;为什么会这样用呢?原因在于,中,使用了包,来启动相关程序,使得在程序退出的时候可以做一些释放资源等收尾工作。因此,这篇文章,主要就是用来分析包的代码。 包的源代码地址,它的代码定义如下: 通过定义的包,可知,我们的服务调用,对应的服务,必须要实现里面的、、三
2022-07-10 11:56:23
483

原创 Nsq中WaitGroup的封装使用
在看NSQ源码的过程中 ,发现了NSQ中,对操作的封装,觉得值得学习一番,因此记录下自己的感悟。 WaitGroup位于sync包中,用于控制协程间的同步。WaitGroup使用场景与名字的含义一样:当我们需要等待一组协程都执行完成后,才去做后续处理时,就可以考虑使用。 定义以及方法如下: WaitGroup的使用非常简单,它提供了三个方法: 使用的demo如下: 执行结果如下:(需要注意的事,每次执行的顺
2022-07-03 11:06:54
148

原创 Golang 装饰器模式以及在NSQ中的使用
最近在研究NSQ这款中间件,发现了一些有意思的东西,装饰器模式就是其中一个。在整个项目中,装饰器模式的使用随处可见,因此有了这篇文章。 装饰器模式属于设计模式的一种,它的定义,简单来说,就是在不改变对象的内部结构情况下,动态地扩展对象的功能。通过创建一个装饰器,包装真实的对象,给对象增加新的功能特性。在Java中,IO就是典型的应用到了装饰器模式;Python中,更是在语法上原生支持,这大大提高了装饰模式在 Python 中的应用。 我们举个例子来看一下装饰器的应用。首先
2022-07-02 22:30:01
277
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人