在力扣刷二叉树相关题目时,输入一般都是完全层序遍历,我习惯在自己电脑上调试代码,因此才编写下面代码将完全层序遍历数据重建二叉树对象。 生成的结果二叉树一般也只会给出完全层序遍历,无法直观的感受二叉树实际情况,因此我编写代码将二叉树对象生成svg图片,刷二叉树相关题目更清晰直观了。 力扣原题:http ...
Goland终端Terminal的PowerShell不能使用,明明windows上升级了PowerShell 7设置了配置文件,但是只能在windows终端下使用,goland终端下直接失效报错,安装升级PowerShell请看[博客]([Windows11终端升级PowerShell7 - Ha... ...
现在大家做系统开发,都喜欢搞"微服务架构"——简单说就是把一个大系统拆成很多小服务,这样更灵活也更容易扩展。那这些服务之间怎么沟通呢?就得靠一种技术叫 RPC(远程过程调用)。今天我们就来聊聊它的"进化版":gRPC,看看它和传统的 RPC 到底有啥不一样。 一、先搞懂几个概念 什么是 RPC? 可 ...
在微服务架构日益流行的今天,远程过程调用(RPC)技术成为连接各个服务的重要桥梁。本文将详细比较传统RPC与谷歌开发的gRPC框架,通过具体示例展示它们在请求处理、数据格式、性能等方面的差异。 基本概念回顾 RPC (远程过程调用) 是一种允许程序调用另一台计算机上服务的通信协议,是分布式计算的基础 ...
前情提要 上期讲了路由,这期开始就慢慢把处理器的实现都讲完 这期改了栏目名,主要考虑到想要剖析这个项目,Gin占的文字比重反而不高 我保留了之前文章的栏目名,这样你才知道我改了名 账号与权限如何实现? 我们从./router/router.go下这部分代码继续讲 上期我们已经了解了这段代码首先是注册 ...
前情提要 上期我们讲完了mysql和Redis的配置,完成了对 main函数下第一行代码的解析,今天接着继续 (之前写错成steup了。。。) 这是main函数下第二行代码 点击查看SetupRouter代码 func SetupRouter() *gin.Engine { r := gin.Def ...
数据库、Redis和GO 接着上期的内容 这是func InitConfig()最后两行代码 initDB() initRedis() 这两行代码正好对应./config/下的db.go和redis.go 我们就分两部分讲 !!!请注意,本期默认大伙理解mysql和Redis,不作赘述 Gorm-通 ...
起因 跟着UP敲完代码之后感觉什么都没搞懂,只得其型不得其意,这样的学习结果毋庸置疑是没有用的,只会陷入教程地狱的困境,所以我决定从头阅读一遍源码,结合文档和大模型,来学习一遍 准备工作 由于跟写的时候是有边用git进行版本控制的,在完工之后我便将云服务器上的工程上传到我的仓库里了:该项目仓库链接 ...
Golang并没有类的概念,想要实现C++中的多态必须依赖interface,也就是接口 让我们构建一个例子,写植物大战僵尸中的豌豆射手、寒冰射手和樱桃炸弹 首先是C++ 我们已知寒冰射手是豌豆射手的变种,只是子弹变成了冰块;而樱桃炸弹和两种射手又都是植物 点击查看C++代码 #include <i ...
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 如题:一个使用了cgo的golang项目中,为了与c交互,需要把上下文对象: 1 在golang中获得指针 2 使用 unsafe.Pointer(addre ...
目录免责声明个人武器开发美观输出Whois查询反查ip目录扫描子域名爆破被动扫描主动扫描(字典爆破)CDN检测 免责声明 本博客绝不涉及任何非法用途。 使用者风险自担,违规后果自负。 守法为先,技术向善。 请合理、合法地使用网络安全技术,共同维护一个健康、安全的网络环境! 个 ...
写c/c++或者rust的开发者应该对条件编译不陌生,条件编译顾名思义就是在编译时让代码中的一部分生效或者失效,从而控制编译时的代码执行路径,进而影响编译出来的程序的行为。 这有啥用呢?通常在编写跨平台代码的时候有用。比如我想开发一个文件操作库,这个库有全平台统一的接口,然而各大操作系统提供的文件和 ...
常见的设计模式,如 **单例模式**、**工厂模式**、**策略模式**、**观察者模式**、**代理模式**、**装饰器模式** 和 **适配器模式** 都可以在 Go 中实现,适用于不同的开发需求。
这些设计模式不仅能帮助你编写结构清晰、可维护的代码,还能让你更好地应对复杂的编程问题。 ...
目录CLI开发框架cobra 集成库目录规范搭建框架根命令参数添加子命令帮助信息爬虫功能(趁热打铁)Goquery处理响应编码处理收集百度热搜榜爬虫功能所有源码 CLI开发框架 师傅们久等了,为了加快进度,这章节添加了一个爬虫功能,也是后面写工具要用到的。 学习成果:能够集成一个爬虫功能到工具中 如 ...
大家好,我是 Java陈序员。 之前给大家推荐过一个支持多家云存储驱动的公有云文件系统! 一个支持多家云存储驱动的公有云文件系统! 今天,再给大家安利一个支持多种存储方式的开源云存储管理工具! 关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目 ...
CLI开发框架 命令行工具开发,主要是介绍开发用到的包,集成了一个框架,只要学会了基本每个人都能开发安全工具了。 该文章先学flags包,是比较经典的一个包,相比后面要学习的集成框架这个比较自由比较细化点,自定义可能高一些,后续会学到一个Cobra框架,这个很多安全工具都在使用,先学会flags包入 ...
一个快速灵活的静态站点生成器,由[bep](https://github.com/bep)、[spf13](https://github.com/spf13)和[Go](https://go.dev/)的[friends](https://github.com/gohugoio/hugo/graph... ...
MIT6.5840 2024 Spring Lab1 前言 本文主要作为笔记使用,这次实验基本是边查GO的语法边做的,所以代码写的不够优雅,无法充分发挥GO的一些特性,因此本文的代码实现有很大的优化空间,欢迎各位大佬指正,希望本文能给一些正在学习的小伙伴提供一些思路。最后希望小伙伴们不要抄代码,可以 ...
1、锁的概念引入 首先,为什么需要锁? 在并发编程中,多个线程或进程可能同时访问和修改同一个共享资源(例如变量、数据结构、文件)等,若不引入合适的同步机制,会引发以下问题: 数据竞争:多个线程同时修改一个资源,最终的结果跟线程的执行顺序有关,结果是不可预测的。 数据不一致:一个线程在修改资源,而另一 ...
日志 最终实现的效果: (这里是json格式化了,你到时候可以不格式化看起来更装b点) log 输出打印 log日志最容易上手,默认自带时间戳打印日志内容 打印 //打印,默认带时间戳 log.Print("log Print") log.Println("log Println") log.Pri ...