- 博客(29)
- 资源 (1)
- 收藏
- 关注
原创 RabbitMQ-高级篇
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时配置:// 获取RabbitTemplate RabbitTemplate rabbitTemplate = applicationContext . getBean(RabbitTemplate . class);
2025-03-03 16:06:26
614
原创 go异常all goroutines are asleep - deadlock-协程死锁详解
新增了test函数,在main函数中为test函数开了协程专门执行,让对c的写在test中进行,这样main函数就能继续往下执行,去开一个协程执行testDeadLock函数了,这样一来,虽然刚刚开的test函数中会因为对c的写入发生阻塞但并不会影响main函数对应协程的继续执行,所以之后的testDeadLock马上将从c中读出test函数刚刚写入的内容,这样一来 test中对c写入的内容就被testDeadLock顺利读出并打印了。如何解决这个问题呢?对问题研究总结后,在此记录一下。
2024-11-24 18:27:44
643
原创 go micro遇到问题记录
{ "id": "go.micro.api", "code": 500, "detail": "error during request: unknown field \"name\" in go_micro_api.Request", "status": "Internal Server Error" } ———————————————— 版权声明:本文为优快云博主「benben_2015」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
2024-11-24 18:25:14
804
原创 go异常 Consul transport: Error while dialing dial tcp too many colons in address
但是这个方法是基于http请求的,如果每次请求时,都调用这个方法,会损失一定性能。如果你不是和我一样基于 conusl协议的,可以尝试把地址写成[协议://ip地址]:端口/endpoint 或者 [账号@密码:地址]:端口/endpoint这样说不定就解决了(也就是:端口前面的内容用中括号括起来)。这样钻牛角尖,纯粹为了技术研究,拖这个问题的福,我对gprc底层的通信的实现原理大致全新的理解。我在模板代码里找了半天,又去grpc的包中找,再去consul的包中去查找,都找不到哪里有些这个解析器。
2024-11-24 18:23:00
840
1
原创 go异常 解决 imported from implicitly required module
我在代码里直接使用了这个验证包,但是在go.mod里没有引入,代码里ide是不会报错的,因为能找到代码库,但是运行的时候会报错。ide 不提示报错 在运行的时候提示报错 解决 需要在mod中显示 导入。比如我使用某个第三方包,这个第三方包里面包含了validator 包。记录,在写 validator/v10。这个时候只需要显示的引入一下就可以了。比如提示的go get xxxxx包。go.mod文件里就可以看到了。从隐式的引入模块导入的。
2024-11-24 18:21:23
120
原创 go grpc环境搭建 并生成xx.pb.go文件
安装完成后 会发现gopath中bin目录也会多一个protoc-gen-go 文件。一种方式直接clone源码(go install)编译,这里用第二种方式直接下载。可以把include文件也复制到bin目录里面或者按照readme方式复制。写一个hello.proto测试文件,进入xx.proto所在目录。以下可省略部分:如果你要用到他们内置的proto文件如。几个问题 报错博客链接。
2024-11-24 18:19:35
374
原创 go-zero 超时 timeout
https://blog.youkuaiyun.com/wanglei19891210/category_11659629.html【go-zero】go-zero架构逐一突破:go-zero 超时 timeout 到底有几处可以设置?你学废了吗_gozero 请求超时-优快云博客
2024-11-24 17:13:31
216
原创 context deadline exceeded
grpc报错rpc error:code=DeadlineExceeded desc = context deadline exceeded_西京刀客的博客-优快云博客
2024-11-24 17:12:42
168
原创 channel和goroutine
ticker是一个定时触发的计时器,它会以一个间隔(interval)往Channel发送一个事件(当前时间),而Channel的接收者可以以固定的时间间隔从Channel中读取事件。timer是一个定时器,代表未来的一个单一事件,你可以告诉timer你要等待多长时间,它提供一个Channel,在将来的那个时间那个Channel提供了一个时间值。在遍历时,如果channel 已经关闭,则会正常遍历数据,遍历完后,就会退出遍历。接收任意数据,忽略接收的数据 阻塞接收数据后,忽略从通道返回的数据,格式如下。
2024-11-24 17:08:15
680
原创 golang基础
因为for range在遍历值类型时,其中的v变量是一个值的拷贝,当使用&获取指针时,实际上是获取到v这个临时变量的指针,而v变量在for range中只会创建一次,之后循环中会被一直重复使用,所以在arr2赋值的时候其实都是v变量的指针,而&v最终会指向arr1最后一个元素的值拷贝。//例如,下面的示例程序将遍历一个切片,并将切片的值当成切片值存入,切片类型是一个结构体,切片的类型是为Point型,值是一个地址。//记住,再go语言中,区别一个变量是数组还是切片,就看有没有定义长度。
2024-11-24 16:22:12
917
原创 js css
Babel (babeljs.io)是一个广为使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而 在浏览器或其他环境执行。注意 上面会运行报错 原因是,在ES6中,并没有支持该用法,在ES2017中才有,所以我们不能直接运行了,需要进行编码后再运行。reduce() 会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。Set,本质与数组类似。所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。
2024-11-23 21:39:25
794
原创 node
dd@lff ~ % n ο node/10.13.0 node/14.15.3 Use up/down arrow keys to select a version, return key to install, d to delete, q to quit(使用上/下箭头键选择版本,回车键安装,d删除,q退出)最后,记得用 n 切换一下 node 版本(相见第 (3)步),以正常使用 node。现在,我的 node 版本是14.15.3 的,我想使用 10.13.0 的版本。是不是权限的问题呢?
2024-11-23 21:37:59
1363
原创 记docker搭建zookeeper duubo-admin环境失败
原始是docker 默认网络是bridge模式。进入conf文件夹中,copy一份配置文件。dubo-admin改tomcat方式。改下dataDir目录路径。后面改mac本地搭建。
2024-11-23 21:35:36
136
原创 redis
由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装。从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录。systemctl start redis.service #启动redis服务。systemctl stop redis.service #停止redis服务。systemctl restart redis.service #重新启动服务。2、取最新版的 Redis 镜像。
2024-11-23 21:35:08
808
原创 nginx配置使用域名访问
api被很多同学理解成了网关,实际意义上来说当你的项目在使用go-zero做微服务时候,你把api当成网关也没什么大的问题,不过这样做导致的问题就是一个api对应后面多个rpc,api充当了网关,这样如果我在更新后续业务代码时候,更新任何业务都要去改动这个api网关,比如我只是改了一个小小的不起眼的服务,那就要重新构建整个api,这样不太合理,效率极低也很不方便。,identity-api也是我们内部的服务,是由我们自己写的鉴权服务,实际也是用的go-zero的jwt。
2024-11-23 21:29:10
2401
原创 MongoDB
条件比较运算: db.comment.find({字段名:{$gt:值}}) 包含查询: db.comment.find({字段名:{$in:[值1,值2]}})或 db.comment.find({字段名:{$nin:[值1,值2]}})条件连接查询: db.comment.find({$and:[{条件1},{条件2}]})或 db.comment.find({$or:[{条件1},{条件2}]})如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。
2024-11-23 21:27:20
1589
原创 mysql
select e.* , s.grade from emp e , dept d , salgrade s where e.dept_id = d.id and ( e.salary between s.losal and s.hisal ) and d.name = '研发部';当字段类型为字符串(varchar,text等)时,有时候需要索引很长的字符串,这会让索引变得很大,查询时,浪费大量的磁盘IO, 影响查询效率。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。
2024-11-23 20:51:22
1086
原创 linux命令及shell语法
ls 显示不隐藏的文件与文件夹ls -l 显示不隐藏的文件与文件夹的详细信息ls -al 显示所有文件与文件夹的详细信息。
2024-11-23 20:44:53
985
原创 Spring MVC
名称:@RestControllerAdvice类型:==类注解==位置:Rest风格开发的控制器增强类定义上方作用:为Rest风格开发的控制器类做增强说明:此注解自带@ResponseBody注解与@Component注解,具备对应的功能名称:@ExceptionHandler类型:==方法注解==位置:专用于异常处理的控制器方法上方作用:设置指定异常的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前方法执行。
2024-11-16 16:37:46
26
原创 idea插件
可以生成mapper 也可以生成control层 service层 dao层。可以生成mapper 也可以选择同时生成 example及分页等。可以生成mapper 也可以生成MybtiasPlus相关。
2024-11-16 16:34:12
111
1
原创 SpringAOP简介和作用
/通知类必须配置成Spring管理的bean@Component//通知类必须配置成Spring管理的bean@Component//设置当前类为切面类类@Aspect//设置切入点,@Pointcut注解要求配置在方法上方//设置在切入点pt()的前面运行当前操作(前置通知)
2024-11-16 16:33:44
635
原创 Spring
BeanFactory是IoC容器的顶层接口,初始化BeanFactory对象时,加载的bean延迟加载ApplicationContext接口是Spring容器的核心接口,初始化时bean立即加载ApplicationContext接口提供基础的bean操作相关方法,通过其他接口扩展其功能ApplicationContext接口常用初始化类==ClassPathXmlApplicationContext(常用)==
2024-11-16 16:21:34
704
原创 RabbitMQ基础
Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量其中工作队列模式,如果生产了一条消息,c1消费者消费了,那个c2消费者就不行接收到了带交换机的。
2024-11-16 12:48:32
14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人