自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(160)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于 Gin 的 HTTP 中间人代理 Demo

这篇博客和上一篇博客之间已经隔了好久了。因为理解这个中间人代理的过程遇到了困难,再加上时间不是很充足,也就没有继续写这个主题的内容。最近刚好又有了时间了,所以就集中时间看了很多内容,测试代码(因为 TSL 发生了错误基本上看不懂什么意思,感觉自己掌握的知识和工具还是太少了,很多错误只能束手无策了),也算是对这个东西有了一个新的理解。我其实还是更喜欢盲转发的代理,因为那样实现起来更简单,可以做一些上网行为统计的小工具玩一玩。

2023-12-09 18:44:39 507

原创 基于 Gin 的 HTTP 代理 demo

上次用 TCP 模拟了一个 HTTP 代理之后,感觉那样还是太简陋了,想着是不是可以用框架来做一个有点实际用处的东西。所以,就思索如何用 golang 的 Gin 框架来实现一个?嗯,对的你没有听错,是 gin 框架。你可能会疑惑,它不是 Web 框架吗,怎么可以用来做代理软件呢?哈哈,其实仔细想一想就明白了。我已经说过了,HTTP 代理的本质其实就是一个 HTTP 服务器!所以,我只要想办法让它来处理所有的路由就行了!

2023-11-12 23:04:16 1302

原创 拖拽生成树+JSON序列化

生成的 json 利用 Python 库的可视化(见上一篇博客中提到的几种可视化方法之一)复制下面代码,浏览器打开(Chrome、新版 Edge),打开控制台,拖拽形成树,然后控制台调用 Serializer() 方法。思考我刚开始做的时候,还不知道所有节点组成的是一个图(没有想到这里)。不过后来发现,这不就是数据结构里面的图吗?然后问题就转化为如何判定一个有向图是一棵树了。然后,我请教了人工智能,哈哈。这个答案的质量真是不错!这里简单介绍一下,几个关键的元素。节点:一个给定半径的圆。箭头:从一个

2022-12-14 23:17:45 548

原创 使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start(python版本的),我了解 grpc 内部使用的是 HTTP2,所以我就想着抓包来试试,下面就来记录一下这个过程中的探索。注意:我的电脑上面安装了 Fiddler Classic,不过它并不支持 HTTP2,最新的 Fiddler Everything 支持,不过这个是收费版本的,我就去下载了 mitmproxy 这个开源的软件。

2024-04-05 18:20:21 942

原创 Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面,直接访问链接就能看到官方文档中已经明确说了不支持。以前对于 docker 的网络模式,一直只是了解,没有亲自尝试过。结果今天在尝试 docker 的 host 网络模式时,发现无论如何都无法通过localhost和127.0.0.1访问宿主机的服务,只有通过本机的 IP 访问。我尝试询问 AI 来解决,但是它说的我也知道,不过我的问题是无法访问。

2024-04-04 20:10:47 723

原创 基于 Docker 的 go grpc quickstart

工作之后一直使用的 RPC 框架是 Apache 的 thrift,现在发现 grpc 更流行,所以也要学习一下,先来简单的跑一下 demo。在本地安装运行也很方便,不过因为有了 docker,所以在 docker 里面安装运行隔离性更好,顺便也提升 docker 命令行的熟练度。

2024-04-04 16:03:22 554

原创 基于 Docker 的 python grpc quickstart

工作之后一直使用的 RPC 框架是 Apache 的 thrift,现在发现 grpc 更流行,所以也要学习一下,先来简单的跑一下 demo。在本地安装运行也很方便,不过因为有了 docker,所以在 docker 里面安装运行隔离性更好,顺便也提升 docker 命令行的熟练度。

2024-04-04 15:17:44 420 1

原创 如何通过内网穿透+代理共享网络

好了,整个流程已经全部走通了。这里面可能说得不是十分详细,因为有些话还是点到为止比较好。对于需要了解的人,大概率是可以看懂的,如果本身不了解这些东西的话,还是不要去了解为好。总得来说,多了解一些东西,在需要的时候还是可以用起来的。我对网络这一块还是蛮感兴趣的,但是一直了解的都是一些比较浅显的知识,更多的是网络的应用了,哈哈!

2024-01-24 17:11:08 1046

原创 DragonEnglish:COCA20000+单词+释义

因为我当时接触的版本只有单词或者单词+释义的版本,所以我直接通过各种方式给它搭配了音标+例句+发音,然后每100个切割成1份,分成了 202 个文件来学习,因为是纯静态的文件我还把它使用 Nginx 镜像打包,给挂到了我的阿里云服务器上面了。前段时间,又把之前的代码翻出来了,果然再看自己之前的代码感觉一团糟,所以我就给删改了很多,然后传到 github 上面了,希望也可以帮助有同样需求的朋友。然后正好到年底了,再水一篇博客来作为今年的结尾的,2023年诸事不顺,希望新的一年可以有新的改变。

2023-12-30 23:30:43 479

原创 基于 Gin 的 HTTP 代理上网行为记录 demo

前端时间写了好几篇使用 Gin 框架来做 HTTP 代理 demo 的文章,然后就想着做一个记录上网行为的小工具,就是简单记录看看平时访问了什么网站(基于隧道代理的,不是中间人代理,所以只能记录去了哪里,不能记录干了什么)。不过因为编译问题一直没有解决,我又不想重新在 Windows 上安装 Golang 的开发环境,所以就把它搁置了。最近正好把那个交叉编译的问题解决了,所以就把这个博客也发出来吧。

2023-12-16 14:55:48 273

原创 Golang在 Docker 中交叉编译 Windows

所谓编译就是把代码变成二进制可执行文件的过程。代码就是一段 Unicode 字符,它是肯定可以跨平台的,但是最终运行的并不是它(最终运行的是代码的编译产物)。我们平时写完一个小程序,直接就点击运行了。但是这里的代码其实是不能直接运行的(编译型语言),它内部还是要进行一个编译的过程,把代码转成目标平台的二进制可执行文件。这个二进制可执行文件是和操作系统和目标架构绑定的,所以你换一个操作系统或者架构它就不能运行了。

2023-12-16 01:17:17 307

原创 基于 Gin 的 HTTP 代理 Demo(2)

上次写了之后,对这方面还是蛮感兴趣的,所以就接着继续走下去。为了这个主题的内容,我斥巨资购入了一本二手的 《HTTP 权威指南》,因为我知道这本书里面有我想要的知识。在我还在大学的时候,我就看过这本书的前面关于 HTTP 协议的基本知识,当时正好也接触了 Fiddler,所以就利用 Fiddler 进行学习。抓取协议,了解各个字段的含义,尝试用JAVA的 TCP 来模拟,因此对于 HTTP 协议有了一个基本的认识。

2023-11-26 01:06:01 300

原创 如何通过代理共享网络

昨天在探索用 Gin 实现 HTTPS 代理,学习到了很多新的知识点,感觉可以把以前的内容串联起来了。然后在睡觉的时候,想到了怎么通过代理共享网络的问题。这个问题已经思考过了好几次,但是还是有一点模糊,昨天不知道怎么的,感觉有点想通了,事不宜迟得赶紧记录下来。我在电脑上面安装了 Fiddler,一个抓包软件,它算是一个 HTTP 代理软件。我使用它主要是用来学习 HTTP 协议,很多问题,要是可以亲眼看上一眼,其实就能解决了。

2023-11-20 22:57:26 669

原创 卸载本地开发环境,拥抱容器化开发

以前在公司的时候,使用同事准备的容器化环境,直接在 Docker 内进行开发,爽歪歪呀。也是在那时了解了容器化开发的知识,可惜了,现在用不到那种环境了。所以打算自己在本地也整一个个人的开发环境,不过因为我本地已经按照好了开发环境(我现在主要使用Go,平时会写一些Python脚本,所以我本地安装了它们两个),也就没有动力推动自己去学习了。因为这个想法已经拖了很久了,再拖下去就不可能再去弄了。所以,今天就激进一点,直接把本地的开发环境卸载,强迫自己去开始容器化开发环境。

2023-11-12 18:34:42 330

原创 利用二维码在命令行查看图片

最开始的时候,我的想法是把图片完全展示,不过受限制于这中间传输的限制,还是挺困难的。所以,我就退而求其次,只把图片的部分信息拿出来,这里面的关键点是没有通过网络进行传输信息(获取图片信息的时候),不过若要是想完全传输一整个图片或者小文件,那也需要很多张二维码才行了,总之还是很麻烦的。

2023-11-05 23:31:22 109

原创 Fiddler抓包VSCode和探索

有趣的探索结束了,我确实感觉自己收获了不少,也把以前的一些知识串联起来了。希望各位读者也能从中有所收获。

2023-10-22 19:32:06 1104

原创 在 VSCode 中使用 PlantUML

最近,因为工作需要绘制一些逻辑图,我自己现在使用的是 PlantUML 或者 mermaid,相比之下前者更加强大。不过它的环境也麻烦一些,mermaid 在一些软件上已经内置了。但是 PlantUML 一般需要自己本地安装或者使用远程服务器(但是网络不是很方便,而且每次想要看都必须使用远程服务器,这点更加不方便了)。所以,在本地配置一个环境是很有必要的了。

2023-10-15 22:04:02 2898

原创 gin 框架的 JSON Render

gin 框架默认提供了很多的渲染器,开箱即用,非常方便,特别是开发 Restful 接口。不过它提供了好多种不同的 JSON Render,那么它们的区别是什么呢?下面就让我们来依次看一下它们的区别,不过这里只是简单介绍一下,我主要想说的是默认的 JSON 和 PureJSON,其它的就一笔带过了,不过我也看了一些其它的博客,也把相关链接添加进来了。

2023-10-05 23:09:32 612

原创 Windows 上下载并提取 Wikipedia

因为容器里面是没有 wikiextractor 的,所以需要自己安装一下,也不用写一个 Dockerfile 来构建镜像了,那简直是浪费时间,反正你也就用一次。,以前我对这个东西是十分抗拒的,因为很多年以前它对 Windows 的支持并不好,但是今非昔比了,现在它和 WSL2 结合之后,真的成了一个十分有用的工具了!我下载的是 English Wikipedia,差不多 20 G,上面的 wiki_extract 是我自己建立的空目录,准备用来存放提取的文件的。

2023-09-24 18:53:27 210

原创 golang-bufio 缓冲扫描

前面两篇博客,介绍了bufio包中的缓冲读和写(bufio.go),下面再来介绍一下缓冲扫描(scan.go)。这个扫描的是用来对缓存读的更高级封装,提供了一些更易用的方法。

2023-09-10 18:42:26 586 2

原创 golang-bufio 缓冲写

接下来会介绍缓冲写的主要方法的作用,并且会添加一些个人的注释。如果有不对的地方,欢迎指正。

2023-09-03 18:56:21 1186

原创 从RESP的角度理解事务和管道

通过网络抓包分析,我们可以清晰的看出来。事务的每一条指令都会进行一次网络请求,所以在 QUEUED 阶段失败了,整个事务就失败了,因为服务端是可以感知的,成功了它才会发送 QUEUED 指令。而管道呢,则是把若干条指令拼接起来一次性发送,它最大的作用是节省了多次建立连接所需要的时间(不要小看了每次建立断开连接是开销,累计起来是很庞大的!

2023-09-01 23:47:07 273

原创 MySQL的共享锁和排他锁

有过编程语言并发学习经验的同学,应该都了解过读写锁的概念。读写锁主要是为了解决多读少写条件下,程序的并发性能问题。它的特点即是:如果一个线程持有了读锁,那么其他线程也是可以继续读取它锁定的数据,但是不能进行修改,即加写锁;如果一个线程持有了写锁,那么它会阻止任何其他线程的读取和修改。在数据库领域,也有读写锁的概念,下面让我们来了解一下。在一个事务中,查询数据并且插入或者更新相关的数据,使用常规的 SELECT 语句并不能提供足够的保护。其他事务可以更新或者删除你刚好查询的数据行。

2023-08-29 15:51:14 352

原创 golang-bufio 缓冲读

好了,到这里就结束了。这里至少Reader相关的部分,后面还会继续Writer相关的部分。不过,目前还没有特别好的记录方式,只是大致挑几个代码贴出来,写一些自己的理解,然后配一些示意图,再加上一些测试代码。这篇博客不是为了说明这个包是怎么使用的,而是为什么要用它,以及它的一些实现的细节。现这样写吧,以后再探索是不是有更好的方式。

2023-08-29 00:48:48 582

原创 MySQL事务的隔离级别

commit 表示提交事务,事务对数据库的修改成为永久性的,rollback 表示回滚事务,撤销正在进行中的所有未提交的修改。在事务 A 在执行的过程中,它是可以感知到事务 B 的 DML 操作的,这样来说其实读未提交就相当于是没有隔离级别了。在一个事务中,从它开始直到事务结束,都可以反复读取到事务刚开始看到的数据,并一直不会发生变化,避免了脏读、不可重复读和幻读现象。MySQL InnoDB 存储引擎实现了 SQL 标准的 4 种隔离级别,用来限定事务内外的哪些改变是可见的,哪些是不可见的。

2023-08-26 17:08:46 319

原创 快速搭建 Linux 学习平台

好了,到此就结束了,这个搭建的环境是可复用的,以后也是一直可以使用的。如果你也需要一个这样的环境的话,最好是亲自动手试一试。有了 Docker 之后,学习各种软件都会很方便的。在我大学那会,我还没有接触 docker 时,安装软件总是特别复杂的,各种配置,要是弄错了,可麻烦了。现在使用 docker 以后,那就简单多了。甚至,现在的开发都直接在 docker 容器中进行了,本地连开发环境都不需要了。。

2023-08-23 13:06:25 362

原创 Canvas实现缩放+涂鸦改进

基于 Canvas 实现的图片缩进+拖拽+涂鸦

2023-06-11 19:55:39 1360 2

原创 网络连接中的舔狗协议

最近互联网上,“舔狗” 这个词语很火,也衍生出来很多梗(快速说出互联网 4 大舔狗!!!然后今天偶然间看到了一个 RFC 文档, 发现了一个有趣的网络协议, 这个协议让我立马想到了舔狗这个词,哈哈。也不卖关子了,让我们来直接看一看它吧 –。这大概是最简单的RFC文档了,其他的文档基本都是长篇大论,我基本没有看完过。discard service (丢弃服务)是一个很有用的调试和测量工具。discard service 只是简单的丢弃它接收到的所有数据。

2023-05-29 20:35:18 1273

原创 canvas实现图片缩放+涂鸦

创建一个缓存的canvas对象,保存当前canvas中的内容,在屏幕canvas上绘制图像时,同时也在缓存canvas中进行等比例的绘制。然后,在缩放操作时,首先要清空当前 canvas 的内容,然后把缓存 canvas 的内容,绘制到当前canvas中,即可实现该效果了。这里的难点在于等比例绘制时的对应关系。我在当前canvas上设置的是

2023-03-26 08:30:37 1276 4

原创 http 自动跳转 https

这里大致的思路是:监听两个端口,一个是端口提供 http 服务(只有一个根路径),一个提供 https 服务(正常的应用服务路径),然后如果有人访问了 http 的根路径,那么将其转发到 https 服务的根路径上即可。因为之前访问过了,浏览器会记住你访问过的网址的,这里的区别在于匹配到网址后,出现了百度的 logo 图标。我并没有输入协议,所以浏览器默认是会访问 http 网站的,但是最终的结果是访问了 https 网站。我前面说了这是做了跳转,但是这种说法是很模糊的,你并不知道实际上是使用了什么技术?

2023-02-12 23:22:52 270

原创 极简四则运算解释器

所有的代码都在这里了,只需要一个文件my_eval.py,想要运行的话,复制、粘贴,然后按照演示的步骤执行即可。Node、BinOp、Constan 是用来表示节点的类.Calculator 中 lexizer 方法是进行分词的,本来我是打算使用正则的,如果你看过我前面的博客的话,可以发现我是用的正则来分词的(因为 Python 的官方文档正则表达式中有一个简易的分词程序)。不过我看其他人都是手写的分词,所以我也这样做了,不过感觉并不是很好,很繁琐,而且容易出错。

2022-12-31 21:28:49 383

原创 简单四则运算语法树可视化

前几天有一篇博客是关于四则运算和二叉树的,我是把四则运算用二叉树写出来(我是用的 JSON 的形式来存储和表达的),并计算最终的结果。最近,也在继续这个方面的东西,不过遇到一些问题。所以想着先做一些简单是事情,也许会更好吧。这篇博客的内容也很简单,就是给定一个四则运算的表达式,画出它的语法树。如果了解过这方面知识的人,应该都能大致画出来,不过其实也是挺费事的。如果包含了多层括号嵌套,也注定了是一个费时费力的事情。这种机械的事情,让程序自己来做是最好不过的了。

2022-12-22 23:42:35 413

原创 四则运算和二叉树

一个 root 节点,表示树的根。然后是下面的子节点。kind 的类型为 INT、ADD、MIN、MUL 和 DIV。即整数、+、-、* 和 /。然后是 value,它只有在 kind 为 INT 时有意义。然后是 left 和 right,左右子节点,如果有的话,就一直这样递归表示下去。这里只是简单的尝试一下,计算基本是没有问题的。问题的关键在于把表达式转成树的结构,我还没有想好怎么处理,所以我就把后半部分写出来了。的形式来展示,所以就想着给定一颗表达式树,计算它的结果出来。

2022-11-30 00:14:38 634

原创 简单的 JSONParser

最近在学习 Python 的正则表达式内容,我看的是,在文档的最后有一个例子,勾起了我的兴趣。它是用正则表达式来制作了一个简单的词法分析器。我觉得这个东西非常有趣,以前在学校的时候,有一次作业我是手写的,不过我感觉写得不好,勉强完成老师的作业吧,哈哈。所以,我参考这个例子写了一个 JSON 的词法分析,然后又加上了简单的语法分析程序。它的整个效果,有点类似于 python 标准库 json 的方法,不过是一个极其简陋的实现,而且基本上没有错误处理。

2022-11-29 23:36:53 2778

原创 DragonEnglish——COCA20000单词+音频+释义+例句及翻译内容聚合

为了做这个东西,倒是花费了不少时间,学习了几个技术,不过做出来的东西还是感觉很丑。不过逻辑上是没有什么问题了,如果大家感兴趣的话,可以去看看视频演示的效果。

2022-11-20 20:21:04 2058

原创 使用蒙特卡罗方法计算圆周率

这个东西网上已经有很多相关的内容了, 我只是对这个过程感兴趣, 所以自己来做了一个. 网上, 大多数纯粹计算的, 对于我这种视觉型的人来说, 还是要看一下比较好. 这里我加入了 matplotlib 绘制散点图 (临时学的简单用法), 把这个过程用图片表示出来. 虽然已经理解了它计算的原理, 但是真的看到自己画出来的图示, 还是感觉满有意思的. 果然一图胜千言, 哈哈.

2022-10-29 17:59:09 2373

原创 满二叉树的逻辑结构表示

最近复习了堆排序的内容, 之前学习过的东西忘了一个精光, 感觉但是也多是死记硬背, 没有很好的去探索为什么这样做. 所以, 在思考。

2022-10-29 15:41:12 448

原创 基于 pywinauto 的自动化采集任务

这个虽然没有什么用处, 不过也了解了不少新的东西. 在这个过程中学习了正则表达式, 并且也运用上了. 如果你关注我的其它博客的话, 会发现我最近一直在更新正则表达式相关的文章. 这个就是一个小玩具, 不过如果真的要启动的话, 我感觉还蛮麻烦的, 如果感兴趣的话, 不妨试一试. 如果有问题的话, 可以在下面评论. 不过不一定可以及时回复了.

2022-10-16 22:20:14 471

原创 08. 反向引用

反向引用在文本匹配和替换中, 非常有用, 是一个很强大的功能. 这里只是一个简单的介绍, 先对它有一个初步的理解. 这个系列, 也快结束了, 预计还会再写几篇博客吧, 如果感兴趣的话, 可以接着往下看. 不过, 近来工作也蛮累的, 很多时候都心有余而力不足了. 哈哈.

2022-10-16 18:40:48 576

原创 07. 使用子表达式

子表达式使用(和)来定义, 作用是把表达式的各个部分划分在一起. 子表达式的常见用途包括: 通过重复次数源字符串准确地控制重复内容, 正确地定义|的多项分支. 同时, 子表达式还允许进行嵌套使用.PS: 使用子表达式进行分组, 之后还会遇到另一种重要的用户, 捕获组 Capture Group.

2022-10-15 18:02:58 486

顺序表的实现(C语言)

C语言实现顺序表的操作,简单参考一下,相互交流学习。使用 C语言的顺序表的实现比较简单,是以前学习数据结构时专门记录的,有点帮助。

2019-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除