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

浙公网安备 33010602011771号