随笔分类 -  Golang

摘要:可以使用Docker安装ES和Kibana: 使用`docker-compose`安装ElasticSearch和Kibana: ```yaml version: '3.1' services: elasticsearch: image: elasticsearch:7.13.3 container 阅读全文
posted @ 2023-09-02 15:42 N3ptune 阅读(85) 评论(0) 推荐(0)
摘要:服务注册通常用于分布式系统或微服务架构中,是一种用于管理和发现这些分布式服务的机制。它的目标是让服务能够动态地找到其他服务,并能够与其进行通信,而无需显式地配置其位置信息 本文简单讲述使用etcd进行服务注册,基于kitex和hertz框架简单实现微服务应用 代码地址:https://github. 阅读全文
posted @ 2023-08-01 04:51 N3ptune 阅读(675) 评论(0) 推荐(0)
摘要:五种基础数据结构: string(字符串)、list(列表)、set(集合)、hash(集合)和set(有序集合) 使用命令redis-cli即可连接 使用go语言代码连接redis: import ( "github.com/go-redis/redis" ) var c *redis.Clien 阅读全文
posted @ 2023-04-13 18:15 N3ptune 阅读(44) 评论(0) 推荐(0)
摘要:HDFS(Hadoop分布式文件系统)是Hadoop生态系统的一部分,它是一个可扩展的分布式文件系统,被设计用于在大规模数据集上运行的应用程序 安装相关package: $ go get github.com/colinmarc/hdfs/v2 创建目录 命令: $ hdfs dfs -mkdir 阅读全文
posted @ 2023-03-12 21:33 N3ptune 阅读(1818) 评论(0) 推荐(0)
摘要:单模式串匹配算法、多模式匹配算法 strings.Index(text, pattern) BF算法 BF=Brute Force,暴力匹配算法,最坏情况时间复杂度为O(n*m),实际上是在主串中检查起始位置分别是0、1、2...n-m且长度为m的n-m+1个子串,查看有无与模式匹配的 func B 阅读全文
posted @ 2023-02-09 16:57 N3ptune 阅读(102) 评论(0) 推荐(0)
摘要:有时要求写一个函数有能力统一处理各种值类型的函数,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型在设计函数时并不存在,当我们无法透视一个未知类型的布局时,这段代码就无法继续,这是就需要反射 reflect.Type & reflect.Value 反射功能由reflect包提供, 阅读全文
posted @ 2023-01-10 22:12 N3ptune 阅读(96) 评论(0) 推荐(0)
摘要:温故而知新 接口 接口是一种共享边界,计算机系统的各个独立组件可以在这个共享边界上交换信息,在面向对象的编程语言,接口指的是相互独立的两个对象之间的交流方式,接口有如下好处: 隐藏细节: 对对象进行必要的抽象,外接设备只要满足相应标准就可以和主设备对接,应用程序只要满足操作系统规定的系统调用方式,就 阅读全文
posted @ 2022-12-23 13:56 N3ptune 阅读(199) 评论(0) 推荐(0)
摘要:gRPC框架 & ProtoBuf 安装相关工具: pip3 install grpcio pip3 install grpcio-tools protobuf3有自己专门的定义的格式,基于此可以生成不同的脚本 编写示例的protobuf3: syntax = "proto3"; message H 阅读全文
posted @ 2022-12-12 13:16 N3ptune 阅读(183) 评论(0) 推荐(0)
摘要:github地址: https://github.com/gin-gonic/gin 初体验 安装: $ go get -u github.com/gin-gonic/gin 简单实例: package main import "github.com/gin-gonic/gin" func main 阅读全文
posted @ 2022-12-10 22:43 N3ptune 阅读(186) 评论(0) 推荐(0)
摘要:主调函数,设置路由表 package main import ( "fmt" "net/http" "store/handler" ) func main() { http.HandleFunc("/file/upload", handler.UploadHandler) http.HandleFu 阅读全文
posted @ 2022-12-04 10:41 N3ptune 阅读(540) 评论(0) 推荐(0)
摘要:Remote Procedure Call 简单RPC调用 server实现 // 注册接口 type HelloService struct{} func (s *HelloService) HelloFunc(request string, reply *string) error { // 返 阅读全文
posted @ 2022-11-29 23:23 N3ptune 阅读(226) 评论(0) 推荐(0)
摘要:该项目将基于go-zero和xorm go-zero中文文档: https://legacy.go-zero.dev/cn/ Xorm中文文档: http://xorm.topgoer.com/ 功能划分 整个项目可以分为3个模块: 用户模块、存储池模块和文件共享模块 数据库设计 用户是一个实体,建 阅读全文
posted @ 2022-09-17 14:24 N3ptune 阅读(506) 评论(0) 推荐(0)
摘要:接上文: https://www.cnblogs.com/N3ptune/p/16623738.html HTTP/REST的解析导致基于HTTP的内存缓存服务性能不佳,本次实现一个基于TCP的缓存服务 TCP缓存协议规范 对于TCP来说,客户端和服务端之间传输的是网络字节流,要自定义一套序列化规范 阅读全文
posted @ 2022-08-29 22:02 N3ptune 阅读(234) 评论(0) 推荐(0)
摘要:实现一个可扩展的,简易的,分布式对象存储系统 存储系统介绍 先谈谈传统的网络存储,传统的网络存储主要分为两类: NAS,即Newtwork Attached Storage,是一个提供了存储功能和文件系统的网络服务器,客户端可以访问NAS上的文件系统,可以上传和下载文件,NAS客户端和服务端之间使用 阅读全文
posted @ 2022-08-28 00:13 N3ptune 阅读(1797) 评论(0) 推荐(0)
摘要:所有的缓存数据都存储在服务器的内存中,因此重启服务器会导致数据丢失,基于HTTP通信会将使开发变得简单,但性能不会太好 缓存服务接口 本程序采用REST接口,支持设置(Set)、获取(Get)和删除(Del)这3个基本操作,同时还支持对缓存服务状态进行查询。Set操作是将一对键值对设置到服务器中,通 阅读全文
posted @ 2022-08-25 11:34 N3ptune 阅读(314) 评论(0) 推荐(0)
摘要:使用Go语言实现比较简单的分布式系统,这个系统中采用多个分布式模型,即混合模型,并且基于HTTP进行通信,传输JSON数据 github链接: https://github.com/T4t4KAU/distributed/tree/main/Simple-distributed-system 服务注 阅读全文
posted @ 2022-08-24 18:07 N3ptune 阅读(962) 评论(0) 推荐(0)
摘要:Go语言:两种常见的并发模型 在并发编程中,须要精确地控制对共享资源的访问,Go语言将共享的值通过通道传递 并发版"Hello World" 使用goroutine来打印"Hello World" package main import "fmt" func main() { done := mak 阅读全文
posted @ 2022-07-01 23:05 N3ptune 阅读(293) 评论(0) 推荐(1)
摘要:环境: 两台虚拟机,不限系统 ## 写在前面 DNS服务器是干什么的?DNS服务器(Domain Name Server,域名服务器)是进行域名和与之相对应的IP地址进行转换的服务器,保存了一张域名和与之相对应的IP地址 的表,以解析消息的域名。 在Linux上使用nslookup可以查询域名对应的 阅读全文
posted @ 2022-05-29 12:15 N3ptune 阅读(1191) 评论(0) 推荐(0)
摘要:域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。这就如同一个地址簿,根据域名来指向IP地址。 域名系统_百度百科 实现DNS客户端 使用第三方包 github.com/miekg/dns 阅读全文
posted @ 2022-05-26 08:22 N3ptune 阅读(824) 评论(0) 推荐(0)
摘要:一般常用的下载方式是通过浏览器访问URL,然后基于HTTP进行下载。这种单线程下载方式通常比较慢,这里尝试使用Go语言实现一个多协程的下载器。 大致思路 按照传统的单线程的思路,实现下载要基于HTTP请求,因此要知道对应的URL,请求该URL会得到服务器的响应Responce。之后取出Respons 阅读全文
posted @ 2022-05-21 21:05 N3ptune 阅读(616) 评论(0) 推荐(1)