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 升级的想法,使得控制器的编写更加方便。 这里放一个最基础的例子,更多的编写放在了后方。 这段代码可以使得类似这样的控制器代码很方便的撰写,将大量的重复代码剥离出控制器外。 唯一的区别就是路由注册的代码可能会稍微长一点点
go collection abandon1a2b Coding 基于接口实现map泛型遍历 一些方便的集合转换操作 基于接口实现map泛型遍历 的key必须是可以进行比较的,如果之后需要扩展可以进行组合 一些方便的集合转换操作
php[027]fiber abandon1a2b Coding 大家的电脑应该都是大等于2核的了,但是大家电脑上同时运行的程序大多远远多于cpu的核心数量。这是因为操作系统在任务处理上采取了宏观上并行,微观上串行的做法。也就是cpu每个程序都执行了一点点时间然后就切换去执行别的程序。使得大家看上去都执行了很多。现在 php8.1 。推出了 fiber 。把调度权利赋予给了各位 php 开发。那么我们有 fiber 我们可以实现什么样的新操作呢。 拿平时大家写的...
go例子 abandon1a2b Coding 取盘子 go context fibonacci defer chan api lock 接口限流 sort interface 在thh项目中的非复用例子代码,移除项目至此 取盘子 context fibonacci defer chan api lock 接口限流 sort interface
可以使用的数学公式 abandon1a2b Coding 上标 下标 组合 前置 导数 向量 上弧 上括号 累加 求积(累乘) 极限 表示上标, 表示下标。如果上下标的内容多于一个字符,需要用 将这些内容括成一个整体。上下标可以嵌套,也可以同时使用。 上标 $a^2$ 下标 组合 2^3$ 前置 ${}_ 1^2\!X_ 3^4$ 导数 $x^\prime$ $x'$ 向量 $\vec{c}$ $\overleftarrow{a $\overrighta...
语法模版 abandon1a2b Coding 文档 math 安装文档 语法 tag 插件 文档 语法 Warning Header mermaid文档 文档 代码块格式 语法 流程图 Flowchart 序列图 甘特图 类图 Git 图 实体关系图 用户旅程图 本文为 202206 版本升级后的语法大全总结 文档 math 安装文档 语法 行内 $\sum_ {k=1}^N k^2$ 剧中 $$\begin{equation} \label...
go:我的gin ~控制器也能跑出panic了 abandon1a2b Coding 前两天写了写了一篇关于go无法捕获panic的的情况。当时并没有想太多,今天突然想到如果我在 gin 的控制器函数中使用了 并抛出了 panic 那么会不会被捕获呢?。代码如下 结论是请求后10s后就抛出了panic。gin 之所以可以捕获 action 中直接跑出的 panic 是因为 gin 采用的洋葱设计,在外层有着对 panic 的捕获操作。 不同的是,由 go 运行并抛出的 panic ...