java dto 枚举兼容 abandon1a2b Coding 我们的场景是枚举和dto都是服务端提供的包文件,但是如果服务端发生了升级。如果客户端调用的时候出现了未知的枚举,会产生null的错误异常,会阻止程序的正常运行。现在希望是可以有默认值,所以枚举类型需要单独增加一个enum,作为默认值。但是由于服务端在正常情况下不会设置为默认值,而是有可能设置一个客户端不存在,但是服务端存在的正常类型,这时候需要在dto做手脚了,首先enum本身是一个基原类型的组合...
traefik abandon1a2b Coding About The Cloud Native Application Proxy traefik 和 nginx 比较像,主要加载比较方便,配置相对友好。
frp 使用 abandon1a2b Coding About A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. frp 其实有些功能和 ng/traefik 比较像似,唯一的区别是frp是一个内网渗透软件。而 nginx/traefik 背后的服务,对于 nginx/treafik 来说是固定的。但是 f...
PHP、Java、Python、Go 和 Rust 中进行基本开发操作时所需要的命令[对比表格] abandon1a2b Coding 以下是PHP、Java、Python、Go和Rust中进行基本开发操作所需要的命令的对比表格: 操作 Java Python Rust 创建项目 composer create-project archetype:generate python -m venv go mod init cargo 引入依赖 composer require dependency:resolve install ca...
gpt 助我学习之 [js-async/await] abandon1a2b Coding 本次提问涉及了询问用法,追问疑惑,确认掌握~ 询问 js sync await 给我讲一下,还是有些迷惑 在 JavaScript 中,我们经常需要处理异步任务,例如从服务器获取数据、向服务器发送数据等。传统的方式是使用回调函数来处理异步任务,这在多层嵌套时会导致回调地狱,代码难以维护和调试。为了解决这个问题,JavaScript 引入了 Promise 和 async/await 两种方式来处理...
时间和空间的完美结合 Gzip/缓存 abandon1a2b Coding 在用 go 写工具的时候,嵌入了一个前端页面,由于大多是开发工具,所以前端页面采用了全局引用的方式引入。但是使得首次加载的js会变的巨大。编译前端资源的时候,有显示开启gzip可以减少2/3以上的体积。这是一个十分诱人改造方案。 在gin中,我找了一个 github.com/gin-contrib/gzip 开源库,这个库是一个中间件可以很方便的集成到 gin 中。同时也确实产生了符合预期的效果,...
记一次logrus异步日志改造 abandon1a2b Coding 关键代码 本次改造的目的是为了优化在高并发下,日志写入对接口性能的影响,由于写入操作是同步的所以影响还是比较明显, 相比于替换速度更快的log库(例如zap),异步写入这一点足以提高不止是一个数量级别的速度。所以这里采用改造已有 logrus 的封装。首先在初始化的时候启动一个 goroutine 用以消化异步的日志,同时设置一个合适的长度的chan用来缓存需要处理的一异步日志,如果 chan 过...
filequeue abandon1a2b Coding thh/filequeue.go at master · eatmeatball/thh (github.com) 上面是我的源码链接地址。 写这个文件队列的目的是为了写单体应用程序的时候可以不用依赖redis,这种额外程序。这样在开发一些单体应用的时候,可以把依赖降低到最少,也避免了内存队列的中断丢失问题。 文件队列是指一种基于文件的数据结构,通常用于在磁盘上存储和管理大量数据。相对于内存队列,...
利用 git hooks 自动追加 commit 前缀 abandon1a2b Coding 关于实现 git commit 自动添加分支名为前缀。(全局) git pre-receive钩子 实现全局hook的问题? - 知乎 (zhihu.com) 记一次Git hooks不生效的问题 | Yukino的杂记 (yukinoyukino.com) 使用git hook 为commit message添加前缀 - 简书 (jianshu.com)
antlr4 编译器探索学习 abandon1a2b Coding 假期打算利用 antlr4 快速入门自制编程语言。采用 antlr4 是因为是参考了 gscript ,同时其可以较实现语法解析的部分。 因为要使用 antlr4 所以要了解两点,第一点是 antlr4 能做什么,第二点是 antlr4 是如何用。 是什么 首先关于 antlr4 能做什么 ,官网描述 ANTLR(语言识别的其他工具)是一个 强大的解析器生成器,用于读取、处理、执行或 翻译结构化文...
类型推导与推断 abandon1a2b Coding 关于 JAVA go php 中类型推导与推断对比。 首先 php 这种弱类型解释型语言其实本身在使用用过程中不是严格需要类型推导的。比如下面的简单代码 上面的代码是可以运行且不报错的,那么类型推导的话题原因是从何而来的呢。现在在对比看一下 java 的代码。 上述的代码是不不可通过编译的。其实在此处,所提到的类型推导就出现了需要的点。关于java的代码是可以这样处理的。 这样处理下 java 的...
开发环境小集群设置 abandon1a2b Coding 其中 traefik nginx php-serve 环境由 docker-compose 统一控制。在功能上 ng 本身也是可以像traefik 一样代理许多服务的流量,但是 traefik 的 providers 功能可以更灵活的转发配置环境。既可以是监视文件变化,也可以调用接口更新。作为本地环境本身资源消耗极小。总的来说 ng 也能实现,但是 traefik 用来做本地环境的总网关更灵活方便...
go 升级 gin/fiber 的控制器 abandon1a2b Coding 之前用 go 的泛型,写了相关的 collection 操作函数。所以又了对 fiber gin 这类 http lib 升级的想法,使得控制器的编写更加方便。 这里放一个最基础的例子,更多的编写放在了后方。 这段代码可以使得类似这样的控制器代码很方便的撰写,将大量的重复代码剥离出控制器外。 唯一的区别就是路由注册的代码可能会稍微长一点点