Golang基于泛型实现的简单依赖注入(DI)

发布时间:2022年05月10日 // 分类:代码 // 暂无评论

前言众所周知,在SpringBoot中@Autowire依赖注入是极其方便的。在Golang中,也可以利用reflect反射实现简单的依赖注入。但在泛型出现之前,这样的依赖注入在IDE提示上不够优雅,如果实例和interface的类型不对应,需要在运行时才会报错。(可以参考我之前的文章《Golang实现简单的IoC》)Golang 1.18 终于推出泛型后,我们以利用泛型的特性,在初始化实例...
阅读全文

Golang实现一个简单的TCP端口转发程序(TCP反向代理)

发布时间:2022年05月04日 // 分类:代码 // 暂无评论

利用Golang强大的net库,可以轻松实现一个简单的TCP端口转发程序(TCP反向代理)。package main import ( "fmt" "io" "net" ) var ( serverAddr = "127.0.0.1:80" // 目标服务器地址 ...
阅读全文

Spring Boot 对接 Jaeger 时利用Filter修改 Span 的 OperationName

发布时间:2022年05月04日 // 分类:代码 // 暂无评论

Spring Boot 接入Jager后,访问接口时,默认显示对应控制器的方法名。如下图:控制器方法名经常会重名,也不利于我们利用URL查询接口。在这种情况下,我们可以利用Opentracing提供的方法获取到当前Span,并修改OperationName。1、新建一个Filter用于修改OperationName通过GlobalTracer获取到当前Span,并写入HttpServletR...
阅读全文

Spring Boot 利用Filter将请求数据、响应数据写入日志

发布时间:2022年05月04日 // 分类:代码 // 暂无评论

SpringBoot中Servlet提供的Filter与Gin的Middleware洋葱模型是很相似的,本质上可以认为是责任链设计模式。通过Filter,我们可以获取到请求对象ServletRequest、响应对象ServletResponse。利用Filter的特性,我们可以实现一个Filter,获取Request和Response,并整合写入到日志中去。本文基于 Spring Boot ...
阅读全文

Spring Boot 2.x 整合Jaeger实现分布式跟踪(链路、日志、性能监测)

发布时间:2022年05月03日 // 分类:代码 // 暂无评论

Zipkin是最早流行起来的主流分布式跟踪平台,起源于Google Dapper并由Twitter进一步开发。而后Uber用Golang实现了Jaeger。Jaeger除了兼容Zipkin原有的大部分功能以外,还提供了更为丰富的功能。对比来说,两者都是比较成熟稳定的分布式跟踪解决方案。考虑Jaeger更好的性能、更轻量的资源占用,所以决定在项目中使用Jaeger。Spring Cloud 的...
阅读全文

mark: 阿里巴巴Java开发手册(P3C) - 代码规范

发布时间:2022年04月23日 // 分类:代码 // 暂无评论

Githu地址https://github.com/alibaba/p3c当前最新版本:黄山版(2022.2.3发布)Java开发手册(黄山版).pdf
阅读全文

Spring Boot中利用JPA Specification实现管理后台查询列表条件通用筛选的统一封装

发布时间:2022年04月23日 // 分类:代码 // 暂无评论

在实现管理后台业务时,基本上一定会遇到对列表进行筛选操作(如下图)。将筛选条件逐个硬编码到服务端代码中,一定是又臭又长。因此在成熟的项目中,一般都会对列表查询筛选条件进行封装。这里就提供一个简单的封装方案。简单演示如果硬编码了筛选条件,后台查询接口的Payload一般会是这样:{ page:1, size:10, where:{ name:"xxx",...
阅读全文

Git存储凭证

发布时间:2022年04月12日 // 分类:运维 // 暂无评论

Git支持将凭证保存到磁盘中,设置后不必每次操作Git都要登录用户密码。git config --global credential.helper store 官方文档:https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8
阅读全文

在Ubuntu 20.04中使用apt安装微软Edge浏览器

发布时间:2022年03月23日 // 分类:运维 // 暂无评论

前言使用微软 Microsoft Edge 浏览器可以得到类似 Google Chrome 的体验。而且在国内环境下,不需要科学上网就可以实现浏览器书签等内容的同步。这两年微软在Linux、MacOS环境下的Edge浏览器支持也越来越完善,已经可以做到基本相同的体验。如果有多台开发机器,可以考虑一律使用Edge浏览器。Ubuntu下普通安装方式在Ubuntu环境下,可以直接访问微软Edge主...
阅读全文

IDEA中给Maven设置代理

发布时间:2022年03月22日 // 分类:代码 // 暂无评论

前提假设已经有一个科学代理运行在 127.0.0.1:7890具体设置打开设置“文件 - 设置”打开“构建、执行、部署 - 构建工具 - Maven - 正在导入”找到下方“导入程序的VM选项”,填写代理参数-DproxyHost=127.0.0.1 -DproxyPort=7890“确定”保存设置这样操作后,IDEA在调用Maven时,Maven就会自动通过代理服务器下载依赖。如图所示,在...
阅读全文

Golang实现简单的IoC

发布时间:2022年02月09日 // 分类:代码 // 暂无评论

借鉴之前公司同事的思路,简单实现一个IoC练练手。package ioc import ( "fmt" "reflect" ) var container map[reflect.Type]map[string]reflect.Value func init() { container = map[reflect.Type...
阅读全文

Nginx限速操作(转载)

发布时间:2022年02月08日 // 分类:运维 // 暂无评论

Nginx有很多骚操作,今天偶然看到这个限速功能,记录一下。转载自:《Nginx限速操作 —— 正冰》 http://blog.is36.com/archives/488/如果不对Nginx进行限速设置的话,那么会导致如果客户端在下载一个比较大的文件就会大量占用带宽,导致其它用户无法正常访问系统。那么只需要在Nginx上进行显示,限制如下:前面1000K数据不限速(一般都满足),当如果是一个...
阅读全文

分类
随机文章
最新文章
最近回复
  • 1: 代码都写错了,serialize 写了两次
  • ANTONIO: 谢谢你, 终于有声音了!!!
  • andyw: newbee的版主!好用
  • amos: 真管用!!!感谢版主
  • Kent: 优秀!
  • Kent: 关于页面里有我的邮箱
  • kincae: 你好,找了很多文档就你的这篇解决了我的问题,可以留个联系方式吗
  • xuesheng: phpredis版本的问题。 phpredis 5.3.0 fixed. * Use long...
  • Proxmox VE 6.1 配置源及关闭订阅提醒 - ZIMRI`Blog: [...]原文链接 https://www.ywlib.com/archives/150.ht...
  • 夏目贵志: 感谢解决困惑我2小时的问题!!!
归档
链接