自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 让openai支持socks5代理

这样再使用openai就不会有“python Unknown scheme for proxy URL URL(socks:127.0.0.7:7891) ”之类的错误了,目前只在这个版本的openai才能使用哦。这段时间有空来倒腾下大模型,由于访问openai需要外网,而我本地采用的socket代理形式,一度让我差点放弃,接下来说说怎么解决。

2023-12-17 21:49:02 1152 1

原创 【Golang】深度解析json解码切片数据到未初始化的切片

不要大惊小怪,一切魔法背后都是基本菜刀,重要的是刀法主要知识点: 反射,unsafe指针【这玩意儿找时间好好理解一下】slice是内置类型,支持不奇怪可以尝试把[]int替换成自定义类型,看看结果,感兴趣的小伙伴可以根据源码做个判断。

2023-03-03 00:14:42 409

原创 【纠删码存储引擎】从0到1沉浸式体验CubeFS

今天带大家体验一所提供的纠删码存储系统,官网也提供了相关部分,以下是在最小CentOS系统上搭建纠删码存储引擎的记录,小伙伴在其他完善的linux系统相应流程可增减~

2023-02-21 15:11:07 705

原创 【golang探索计划】golang slice 分片的探讨与总结

golang基础结构分片学习

2023-01-17 18:43:16 243

原创 rpc 带body重试机制【Golang】

golang http请求带body重试解决方案

2022-12-13 16:34:11 192

原创 【C++】学习:引用、 右值引用 案例

在C++的学习过程中,我们经常会采用引用来作为传递的参数,可以减少拷贝次数。然而在大型的数据操作中,我们很容易造成拷贝,而且这些拷贝会涉及大量的数据复制,从而降低程序的主体性能。今天我们尝试以一个案例来介绍如何采用右值引用来减少数据的复制。.........

2022-06-05 23:16:52 354

原创 【Raft】学习九:成员变更ConfChangeV2

前言在分布式系统中,节点的增删是常见也是必须的操作,对于实用的共识算法Raft自然也提供了关于节点变更的理论基础。在Raft算法中一次变更一个节点是天然支持的,如果一次涉及多个节点的变更,对于一个稳定的系统来说就具有一定风险。例如,在前面的介绍leader选举时,leader的选举依赖集群中的大多数,如果改变了这个大多数,就会导致leader在选举出现问题。如下图(图来源于这里)所示,当新配置占据大多数,而原leader在老配置中就可能会产生新两个leader。因而本文基于Raft的理论和etcd/raf

2022-04-29 00:05:38 665

翻译 【raft】学习:论文In Search of an Understandable Consensus Algorithm (Extended Version)翻译

摘要raft 是一个用来管理多副本的共识算法, 他的功能等价于多阶Paxos,且和paxos效率不相上下,不过结构不同于Paxos;相比于Paxos,raft更容易理解,为构建可实践系统提供了更好的基础。为了增强可理解性,raft拆分了共识的关键要素,如主节点选举、日志复制和安全,除此增强了连贯性(coherency)以减少必须考虑的状态数。从使用学习结果来看,相比于Paxos,raft更有容易学习对于学生来说。Raft还包含了改变集群成员关系的方案,采用了大多数重叠以保证安全性。概述共识算法允许一组

2022-04-24 11:11:12 380

原创 【操作系统】:零拷贝

前言不知道有没有朋友和笔者一样,在没有了解零拷贝以前,便从字面意思理解为没有拷贝,单纯而又美好;其次在刚接触工作的时候,老练的同事们在讨论性能优化的时候,拷贝这个词也会时常提及,在学习kafka时,也看到其在性能点中提到零拷贝技术。所以拷贝以及零拷贝的学习势在必得,基于此,花了一段时间学习了拷贝和零拷贝。本文文字较多,需要耐心的阅读,当然后期笔者会补上一些示意图,辅助理解。本文主要尝试搞明白的问题有如下几个:什么是拷贝?什么是零拷贝?零拷贝有哪些实现方式?以及其他的一些基本概念等等…基本概念

2022-04-21 13:01:22 3758

原创 【raft】学习八:ReadIndex

本文主要了解了一下一致性的一些基本知识,以及跟随etcd/raft的代码逻辑,探讨了一个只读请求需要经历哪些操作,主要探讨了两种方式:readIndex和lease read。

2022-04-18 19:38:07 1000

原创 【raft】学习七:etcd/raft节点启动流程

前言在前面的raft学习中,探讨了基于etcd/raft的一些数据结构和raft的日志存储,以及Leader选举算法。随着对raft的使用和了解,本次将带着前面的学习,看看raft 节点的启动流程和一些准备工作,从而在使用raft时能够更加简单地将raft运用到我们的实际工作中。准备工作raft本身是一种一致性同步协议,因而需要实体节点来运行协议并提供输入和输出,RawNode是原生的 raft 节点的实体,里面包含了raft协议层和一些状态信息。RawNodetype RawNode struc

2022-04-16 18:26:49 1608

原创 【raft】学习六:etcd/raft 选举和选举优化

前言又到了王家村一年一度的村支书选举时间,依据王家村的历史经验,王家村中依法享有选举权和被选举权的每位村民都可以参与选举。由于村支书这个职位在王家村备受好评,因而王家村每年的村长选举都非常激烈。村支书选举委员每年都非常头疼,由于王家村的村民大多数都没有在家,导致一次选举时常出现一些问题,因此王家村每年都在线上展开选举。由于每年王家村的村民报名参加的人数比较多,但王家村的村民都遵守村支书选举委员会定制的规则,且选举委员公正无私,因而王家村选举委员会面临以下几个问题;怎么发起选举,且有序地进行?具有相同

2022-04-15 17:00:45 1148

原创 【raft】学习五:日志结构raftLog

基于etcd/raft 对raftLog的学习

2022-04-14 16:34:00 1175

原创 【raft】学习四:重要接口学习 Storage和Node

前言在前面的三次学习中,我们学习了一些重要的数据结构,今天主要探讨一下重要的接口,这些接口使得整个raft得以健康地运行。NodeNode接口承载了应用层与raft协议层的桥梁这个角色,相互传递消息和命令。// Node represents a node in a raft cluster.type Node interface { // Tick 主要传递应用层的心跳和选举给raft协议层 Tick() // Campaign 致使节点状态转换到候选状态并开始竞选成为领导者 Campa

2022-04-08 14:58:25 395

原创 【raft】学习三:消息结构

今天我们学习一下etcd raft的一些实体数据结构type Message struct { Type MessageType `protobuf:"varint,1,opt,name=type,enum=raftpb.MessageType" json:"type"` // 消息的接受者 To uint64 `protobuf:"varint,2,opt,name=to" json:"to"` // 消息的发送者 From uint64 `protobuf:"var

2022-04-02 10:30:04 173

原创 【raft】学习二:etcd/raft raft数据结构学习

Raft-etcd 源码学习各位朋友大家好啊,还没有学习消息类型的盆友,可以去这里哦,本次主要学习一下raft协议层中所定义的数据结构。数据结构学习type raft struct { // id ID代表当前节点的ID id uint64 // Term 代表当前任期 Term uint64 // Vote 当前节点投票给了谁,可以是自己 Vote uint64 // readStates 存储读请求到的结果数据 readStates []ReadState // the lo

2022-02-28 22:11:53 375

原创 golang 递归死锁案例分析

背景在一个无聊的下午,我突发奇想统计任意目录下的文件个数。我也是进入程序界快两年的人勒,于是当我想从单线程进军多线程领域。未曾想到,死锁成为了我不可磨灭的噩梦。基本功能需求不漏数;限制并发量,避免cpu频繁发生上下文切换一个工人辛勤劳作版func countFile(path string) { if infos, err := ioutil.ReadDir(path); err != nil { fmt.Println("some errors curd") return }

2022-02-20 15:24:21 491

原创 【raft】学习一:etcd/raft 19种消息类型解读

消息类型说明在raft定义了18种消息类型:// MsgHup 这个消息类型是为了让自己的节点接收到消息后将状态改为candidate的状态,发起选举, // 可以看到tickElection会调用step函数发送一条类型为MsgHup的消息 // 这是一个本地消息(发给自己),通过心跳告诉自己可以开始选举 MsgHup MessageType = 0 // MsgBeat 当本节点是leader的时候会向子节点发送心跳 MsgBeat MessageType = 1 // MsgProp

2022-01-19 22:03:48 1601

原创 linux 文件打洞

文件打洞在许多文件存储场景中,时常存在文件内容的删除和更新,每当删除一些文件中内容时,会存在空间回收问题。正好最近遇到这个问题,在这里记录一下。文件空间回收的常见解决方案将文件中有效内容拷贝到新的文件中,删除旧的文件从而释放空间;类比数组,将后面的数据向前移动,移动的偏移为删除的数据长度;文件打洞。场景分析在一般的场景下,数据量不大(小于10G)或者数据与其他文件没有关联性,移动数据或者拷贝数据相对于文件打洞性能区别不打。如果当前的数据和其他数据存在数据关联,数据的位置的变更很大程度会影响

2021-10-20 11:38:32 1079

原创 深度解析golang中Context在HTTP服务中的角色

深度解析golang中的HTTP服务与Context的关系问题背景在go语言的http服务中,我们常常会使用到Context来取消一个请求,或者取消数据的读取。偶然的一次尝试,让我对Context有了一定的兴趣。接下来本文围绕下面的例子,分析http如何利用Context来控制请求的取消和影响数据读取。例子我们开启一个http服务,发送大量数据给每个请求,代码如下:srv.go:http服务package mainimport ( "fmt" "net/http")func hel

2021-10-15 01:12:06 2994 3

原创 Mongodb安装---->Ubuntu 20.04 LTS

Mongodb安装---->Ubuntu 20.04 LTS新手安装Mongodb的一些记录在开始安装时,选对教程是最重要的哟。首先我个人推荐官方教程,本文主要是结合[官方教程]和自己安装时所遇到一些问题的记录。每个人所遇到的问题可能有一些细微差异,同时本文只是个人的一些记录,如果很巧让你遇到和我相同的问题,能够帮助你也会给本次记录赋予一些意义!!!MongoDB是什么?为了不曲解(新手的觉悟),我就直接将官方的介绍贴上来啦^. ^MongoDB is a document database

2021-09-05 19:26:10 1308

原创 pycharm 中多进程踩坑--Python

pycharm 中多进程踩坑–Python所遇到的情况如下:在进程中创建类实例,回调函数去获取实例时,报如下错误,注意在cmd和linux下面运行是没问题的。执行的代码如下:# --coding: utf-8 --# @User: JasonHU# @Time: 2020/11/25 21:11# @IDE: Pycharm# author: hzcimport multiprocessing as mpimport timeclass test: def __init__

2020-11-26 15:14:56 1886 5

原创 java连接集群出现的问题集结 Can‘t connect to master: redis://127.0.0.1:6384

计算机网络中的数据流动,以及每层对应的设备之间的数据流动

2020-10-25 22:13:54 1752

原创 JVM的五大区域

JVM五大内存区域你知道吗?—精要1. 程序计数器程序计数器是一块很小的内存空间,线程私有,行号指示器。为什么需要程序计数器?一个程序中有多条指令,利用程序计数器可以准确定位到正确执行位置。注意 若线程执行的是Java方法,则计数器记录的是字节码指令的地址,若果是本地方法,则计数器为空,唯一不存在内存溢出的区域2. Java栈(虚拟机栈)**特点:**线程私有**功能:**保存方法的局部变量,操作栈、动态链接、方法出口等信息。使用时间:主要在方法调用时使用栈帧: 是用来存储数据和部

2020-07-11 13:34:29 463

原创 Texstudio的下载

Texstudio的下载

2020-06-15 17:21:07 19720 8

原创 Windows:Word2Vec中出现C extension not loaded for Word2Vec, training will be slow.问题的解决办法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-07-16 21:06:44 711

空空如也

空空如也

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

TA关注的人

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