redis分布式锁 package main import ( "fmt" "log" "sync" "time" "github.com/go-redis/redis" ) // 声明一个全局的rdb变量 var rdb *redis.Client var mutex sync.Mutex // 初始化连接 func initClient() (err error) { rdb = r
二叉树的中序遍历 题目链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 面试的时候问这道题基本都是考察非递归的写法,但还是贴一下递归写法: 方法1:递归 var result []int func f(root *TreeNode) { if root==nil{ return } f(root.Left) result=appen
package main import ( "fmt" "io/fs" "log" "os" "path/filepath" "regexp" "strconv" ) func myWalkFunc(path string, info fs.FileInfo, err error) error { ext := ".rmvb"
一 TCP编程 1.1 TCP协议 TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。 1.2 TCP服务端 一个TCP服务端
gorm查询的时间格式是2022-03-03T14:32:05+08:00,这种格式不符合我们日常使用习惯,尤其是前端展示会额外占用单元格宽度 gorm不提供时间格式的配置,只能自定义个一个类型,继承time.Time,上代码,这个是网上一搜一堆的代码,没啥可以说的 package utils import ( "database/sql/driver"
下载 go get github.com/apache/rocketmq-client-go/v2 代码 func main() { // 1. 创建主题 //CreateTopic("test-04", 10909) // 2. 生产者向主题中发送消息 //SendSyncMessage("hello world0002") // 3. 消费者订阅主题并消费 SubscribeMessage() } func Create
==表结构== CREATE TABLE `point_info` ( `id` BIGINT(19) NOT NULL COMMENT '自增ID', `product_key` VARCHAR(50) NOT NULL COMMENT '产品标识' COLLATE 'utf8mb4_general_ci', `device_name` VARCHAR(50) NOT NULL COMMENT '设备名称
52、使用指针作为方法的 receiver 只要值是可寻址的,就可以在值上直接调用指针方法。即是对一个方法,它的 receiver 是指针就足矣。 但不是所有值都是可寻址的,比如 map 类型的元素、通过 interface 引用的变量: type data struct { name string } type printer interface {
type JSON json.RawMessage // Scan scan value into Jsonb, implements sql.Scanner interface func (j *JSON) Scan(value interface{}) error { bytes, ok := value.([]byte) if !ok { return errors.New(fmt.Sprint("Failed to unmarshal JSONB val
P6136 【模板】普通平衡树(数据加强版) //非旋转的Treap树 #include<bits/stdc++.h> using namespace std; const int INF=0x7fffffff; struct Node *nil; // 自定义的空指针,防止翻车(RE) struct Node { Node *ch[2]; // 结点的左右孩子。为什么不分开写成lc,rc呢?往后就知道了 i
BSTree的全称: Binary Search Tree 【规则】 # 左子节点的值总是小于父节点 # 右子节点的值总是大于父节点 【添加,查找】 # 添加和查找相对简单,按着规则来就可以,比当前值小左边(蓝色),大在右边(黄色) 【删除】 # 首先是要找到要删除的节点,然后再按下面的情况来删除 (a) 待
1、为什么会出现黏包? 主要原因就是tcp数据传递模式是流模式,在保持长连接的时候可以进行多次的收和发。 2、如何解决黏包? 出现”粘包”的关键在于接收方不确定将要传输的数据包的大小,因此我们可以对数据包进行封包和拆包的操作。 封包:封包就是给一段数据加上包头,这样一来数据包
如何在Pod间拷贝文件? 具体代码如下: /* copy file to pod */ package cp import ( "archive/tar" "context" "fmt" "io" "io/ioutil" "log" "os" "path" "strings" corev1 "
RPC 1. 简介 什么是RPC? 远程过程调用(Remote Procedure Call, RPC)。计算机的一个通信协议 该协议允许一台计算机的程序调用另一台计算机的程序。 如果涉及的软件采用的面向对象编程,远程调用也可以叫做远程调用或远程方法调用 2. Go实现RPC 2.1 如何实现 go使用官方提供的n
在需要分步写入整条信息时做回滚操作时使用 /* * @Description: * @Author: gphper * @Date: 2021-11-06 20:11:56 */ package main import ( "fmt" "io" "log" "os" ) func main() { f, err := os.OpenFile(`file.txt`, os.O_RDWR, os.ModeP
简介 继上篇的Run命令容器的实现,本章节中将实现增加容器资源限制,已内存限制为例,展示如果现在容器的内存使用 源码说明 同时放到了Gitee和Github上,都可进行获取 Gitee: https://gitee.com/free-love/docker-demoGitHub: https://github.com/lw1243925457/dockerDemo 本章节对
lab4是实现一个基于Percolator模型的分布式事务。 lab4a lab4a是介绍三种Column Family的作用和协作,分别包括CfDefault, CfWrite, CfLock。 CfDefault是暂存实际数据的cf, CfWrite是写入时间的记录,CfLock是该数据的锁。数据版本(事务)由一个全局递增的ts表示,ts越大越新,数据在数据库
lab2b 集群视图下的日志的复制和状态的写入。 与lab2a相比,lab2b需要阅读大量代码了解整个集群是怎么工作的。首先,我们要对整个集群有个大概的了解(可以看文档)。 node和store看作等价的就行 可以看到,一个node上面可以跑多个Raft实例(叫做Peer/RaftGroup),每个Peer属于不同的Region,每
# LRU: Least recently used,最近最少使用 【一般使用链表+map这两个数据结构来实现】 # 使用map来加快缓存数据的查找 # 使用链表来记录最近的访问情况,最近被访问了(Get和Put都属于是最近访问了),就会被移到链表头 # 当Put进去的数据超过缓存容量时,链表尾部的元素就会被移出缓存
func hasCycle(head *ListNode) bool { if head==nil||head.Next==nil{ return false } p1,p2:=head,head.Next for p2!=nil{ p1=p1.Next p2=p2.Next if p2!=nil{ p2=p2.Next } if p1==p2{
回调API和核心API 回调 API: 启动一个事务,执行指定的操作,并提交(或出错时中止)。 自动包含 "TransientTransactionError" 和 "UnknownTransactionCommitResult" 的错误处理逻辑。 核心 API: 需要显式调用来启动事务并提交事务。 不包含 "TransientTransactionError"
本地操作Docker 环境准备 安装 SDK $ go get github.com/docker/docker/client 初始化客户端对象 使用如下方式直接连接本地的 Docker Daemon,不需要过多配置,直接用环境变量的参数初始化客户端即可。 // NewEnvClient 直接使用环境变量中的 DOCKER_HOST, DOCKER_TLS_VERIFY, DOCKE
[算法]剑指offer p26复杂链表的复制 golang 题目 题目:请实现函数Clone,复制一个复杂链表。在复杂链表中,每个结点除了有一个next指针指向下一个结点外,还有一个sub指向链表中的任意结点或者NULL。结点的 golang 定义如下: type ComplexLinkNode struct { Value int Next *Com
init?:初始化可能失败,会返回 nil
一、GoMock简介 1、GoMock简介 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包和mockgen工具两部分,其中GoMock包完成对桩对象生命周期的管理,moc