- 博客(51)
- 收藏
- 关注
原创 go的函数和方法
go的方法总是和定义的类型(结构体)绑定到一起,且隐式的将实例作为第一实参 (receiver),一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。当方法的接受者不是一个指针时,该方法操作对应接受者的值的副本,即使使用指针实例调用方法,但是方法的接受者是值类型,所以方法内部操作还是对副本的操作,而不是指针操作,不会改变实例的内容。当方法的接受者是一个指针时,无论实例是值还是指针,方法都会对原实例进行操作。值类型和指针类型方法。
2023-05-23 13:19:07
501
原创 docker学习
docker是Docker提供的一个命令行工具,用户可以使用docker或者restful api与Docker守护进程交互,用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。如果在构建过程中某一步执行出错,导致构建失败,我们可以基于已经成功构建的最后一步的镜像使用docker run创建一个容器,然后执行出错的指令,调试构建。docker commit 容器名/id 镜像仓库名/镜像名:提交构建镜像。
2023-03-30 15:45:07
372
原创 go的一些技巧
1、执行shell命令使用"os/exec"包里的exec.Command函数调用,为了获取命令执行的实时信息,可以从cmd输出管道里读取命令执行信息,示例如下package mainimport ( "bufio" "fmt" "io" "os/exec" "sync")func main() { fmt.Println("hello world") Command("ping www.baidu.com")}func Command(cmd string) error
2022-04-25 16:12:44
292
原创 go学习笔记
1、channel原理和使用2、context的用途3、go是值传递还是指针传递go语言的传参都是值传递,当参数是非引用类型时,只传递参数的副本,当参数是slice、map、channel、interface和函数等引用类型时,传递的是地址指针的副本,其本质也是值传递,虽然形参和实参本身的地址不同,但是存放的地址指针是相同的,因此可以改变原来实参的值参考https://blog.youkuaiyun.com/qq_39397165/article/details/1095618394、struct大小,空字
2022-04-21 20:36:31
681
原创 cgroup学习(1)
cgroup概念和介绍1、什么是cgroupLinux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并
2021-01-26 15:44:27
310
原创 go语言实现where in查询
有时候需要一些条件查询操作,比如查询某字段出现在字符串数组集合中的所有记录,则需要进行where in条件查询,字符串数组在where in参数中的格式为(‘aaa’,‘bbb’,‘ccc’),字符串必须用单引号’ '括起来 str := []string{"aaa","bbb","ccc","ddd"} sql := "select * from table_name where columes in ('%s')" params := strings.Join(str,"','")//params
2020-08-21 16:16:42
4932
原创 go语言map转结构体
方式一、通过mapstructure.Decode()方法可以通过mapstructure.Decode(map[string]interface,*struct)方法将map转换成结构体,如:type student struct{}
2020-08-21 15:33:37
18444
原创 Etcd v3存储
Etcd v3 storeEtcd v3 将 watch 和 store 拆开实现,我们先分析下 store 的实现。Etcd v3 store 分为两部分,一部分是内存中的索引,kvindex,是基于 google 开源的一 个 golang 的 btree 实现的,另外一部分是后端存储。按照它的设计,backend 可以对接 多种存储,当前使用的 boltdb。boltdb 是一个单机的支持事务的 kv 存储,Etcd 的事务 是基于 boltdb 的事务实现的。Etcd 在 boltdb 中存储
2020-08-11 10:50:07
706
1
原创 RPC学习笔记
什么是RPC学习链接:https://blog.youkuaiyun.com/qq_21383435/article/details/80032375https://www.zhihu.com/question/25536695https://developer.51cto.com/art/201906/597963.htmhttps://baijiahao.baidu.com/s?id=1637758852641939872&wfr=spider&for=pchttps://www.jia
2020-08-06 14:59:44
146
原创 kubernetes学习笔记
学习链接kubernetes基础知识一文了解kubernetes图解kuberneteskubernetes核心概念
2020-08-04 20:38:25
151
原创 Etcd源码阅读笔记1
type Client struct { Cluster KV //KV存储 Lease Watcher Auth Maintenance conn *grpc.ClientConn cfg Config creds grpccredentials.TransportCredentials resolverGroup *endpoint.ResolverGroup mu *sync.RWMutex ctx c
2020-07-27 18:33:18
208
原创 GoLang协程
简书:https://www.jianshu.com/p/6dde7f92951e多进程、多线程:https://www.jianshu.com/p/e50b9e4ce5aa
2020-07-16 15:59:01
196
原创 SSD映射机制
SSD的FTL通过对逻辑地址和物理地址进行映射来克服闪存的物理限制(覆盖写开销大),FTL向主机提供了传统磁盘类似的块更新接口。早期的FTL是用日志结构的框架,所有的逻辑块更新都被追加写入日志结构的末尾,其中的无效块在垃圾回收的过程中回收,我们称这种方式为页级映射(page mapping FTL),因为逻辑页可以被映射到任何物理页中。FTL把写请求的数据写入到合适的空闲页中,并在内存和物理页中保...
2020-04-20 09:15:24
2845
4
原创 C++健壮指针和资源管理
我最喜欢的对资源的定义是:"任何在你的程序中获得并在此后释放的东西。内存是一个相当明显的资源的例子。它需要用new来获得,用delete来释放。同时也有许多其它类型的资源文件句柄、重要的片断、Windows中的GDI资源等等。很容易的可以将资源的概念推广到程序中创建、释放的所有对象,无论对象是在堆中分配的还是在栈中或者是在全局作用域内声明的。对于给定的资源的拥有者,可以是负责释放资源的一个对...
2020-04-16 12:43:02
214
原创 Device Mapper学习笔记
参考链接:https://www.ibm.com/developerworks/cn/linux/l-devmapper/index.html
2019-11-05 12:07:33
303
原创 ceph学习笔记
参考博客:https://www.jianshu.com/p/2246464306b2Ceph有了块设备接口,在块设备上完全可以构建一个文件系统,那么Ceph为什么还需要文件系统接口呢?主要是因为应用场景的不同,Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘,而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的共享性。PS:想了...
2019-09-09 17:11:58
662
原创 C++面试汇总
1、CPP 虚拟内存管理参考回答:https://www.cnblogs.com/findumars/p/5929831.html?utm_source=itdadao&utm_medium=referral参考回答:https://blog.youkuaiyun.com/hanoi_ahoj/article/details/88660494类中的静态成员:静态成员变量只能在类中声名,不能在类中...
2019-08-12 18:03:45
601
转载 输入URL到页面加载发生了什么
文章来源:https://segmentfault.com/a/1190000006879700总体来说分为以下几个过程:1、DNS解析2、TCP连接3、发送HTTP请求4、服务器处理请求并返回HTTP报文5、浏览器解析渲染页面6、连接结束...
2019-08-09 16:16:51
142
转载 Linux系统IO模型
文章来源:https://www.zhihu.com/question/19732473基础知识用户空间和内核空间进程切换系统调用中断进程的阻塞用户空间和内核空间操作系统为了支持多个应用同时运行,需要保证不同进程之间相对独立(一个进程的崩溃不会影响其他的进程 , 恶意进程不能直接读取和修改其他进程运行时的代码和数据)。 因此操作系统内核需要拥有高于普通进程的权限, 以此来...
2019-08-09 09:50:10
127
原创 TCP/UDP协议详解
1、TCP/UDP不同点:TCP面向连接一个连接只能是点对点(端对端、一对一)的连接提供可靠交付全双工通信面向字节流的(发送的是TCP数据报,但是是以字节序列的形式流入或流出进程)TCP不管应用程序进程一次把多少报文数据发送到TCP发送缓冲区中,而是根据接收方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节TCP连接的端点是套接字:IP地址:端口(同一个端口会被不同...
2019-08-09 01:08:51
4480
原创 GDB调试笔记
一、Linux程序gcc编译步骤:Gcc编译过程主要的4个阶段:l 预处理阶段,完成宏定义和include文件展开等工作;(.i)l 根据编译参数进行不同程度的优化,编译成汇编代码(.s.S)l 用汇编器把汇编代码进一步生成目标代码(.o)l 用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件格式:l gcc -E test.c//预处理阶段l Gcc -S te...
2019-08-08 09:47:00
175
原创 TiDB学习之 MySQL数据同步
1、首先用check检查mysql数据库表是否支持迁移到TiDB2、使用mydumper和myloader全量导入数据,mydumper从MySQL导出数据,然后myloader将数据导入TiDB(注意,虽然我们也支持使用 MySQL 官方的 mysqldump 工具来进行数据的迁移工作,但相比于 mydumper/myloader,性能会慢很多,对于大量数据的迁移会花费很多时间,这里我们并不...
2019-08-06 15:42:51
1291
转载 Paxos算法解析
Paxos是什么Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一问题产生的背景在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异...
2019-08-03 00:34:45
329
原创 ceph学习系列之(一)基础概念
1. Ceph架构简介及使用场景介绍1.1 Ceph简介Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。1.2 ...
2019-07-29 11:48:33
680
原创 C++学习笔记之 String
1、C++的c_str()方法返回一个指向C风格的字符串指针,如下:open()方法要求使用一个C风格的字符串作为参数,可以用string对象调用c_str()方法当做参数string filemane;cout<<"Enter file name: ";cin>>filename;ofstream fout;fout.open(filename.c_str())...
2019-07-28 01:01:25
137
原创 C++知识点
endl和’\n’的差别:使用std :: endl可能效率有点低,因为它实际上有两个作业:1、它将光标移动到下一行,2、“刷新”输出(确保它立即显示在屏幕上)。当使用std :: cout将文本写入控制台时,std :: cout通常会刷新输出(如果没有,通常无关紧要),所以使用std :: endl flush刷新很重要。因此,通常首选使用’\ n’字符。’\ n’字符将光标移动到下一行,...
2019-07-25 17:30:09
476
2
原创 HCIA Storage学习笔记
存储发展史:DAS->NAS->SAN(FC SAN:服务器->FC交换机->FC SAN控制器->磁盘阵列、IP SAN:服务器->以太网交换机(IP链路)->iSCSI存储控制器->磁盘阵列)->分布式存储->云存储(软件定义存储)存储架构发展趋势:融合存储(将NAS和SAN结合起来,简化存储管理,提高利用率)华为存储解决方案...
2019-07-24 15:06:30
1873
原创 C++容器学习
一、序列容器std::vectorstd::dequestd::arraystd::liststd::forward_liststd::basic_string二、关联容器setmultisetmapmultimapset元素唯一;multiset元素不唯一map元素以<key,value>成对存在,且key唯一;multimap元素以<key,...
2019-07-23 12:11:39
468
转载 面试题汇总
C/C++学习:https://github.com/Ewenwan/ShiYanLou面试算法笔记:https://blog.youkuaiyun.com/cheese_pop?t=1算法基础:https://blog.youkuaiyun.com/cyningsun/article/category/720182C++学习:https://blog.youkuaiyun.com/tennysonsky/column/inf...
2019-07-06 14:30:30
109
转载 LevelDB学习系列笔记
LevelDB源码解析之 基本思路:https://zhuanlan.zhihu.com/p/34658848LevelDB源码解析之 架构设计:https://zhuanlan.zhihu.com/p/34665791引用:浅析 Bigtable 和 LevelDB 的实现leveldb之MANIFESTLevelDB源码解析之 数据完整性:https://zhuanlan.zhihu...
2019-05-23 14:31:41
412
转载 快照技术学习笔记
通常数据块快照有6中类型的快照技术:1、Copy-on-write 复制写2、Redirect-on-write 重定向写3、Clone or split mirror 克隆或镜像4、Copy-on-write 这里写代码片with background copy后台拷贝的复制写5、Incremental 增量快照6、Continuous data protection 持续数据保护...
2019-05-23 11:13:21
1236
原创 Git学习
学习链接:https://www.liaoxuefeng.com/wiki/896043488029600集中式 vs 分布式Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活...
2019-05-15 14:11:41
115
原创 C++学习之 运算符重载
运算符重载是一种形式的C++多态要重载运算符,需要使用被称为运算符函数的特殊函数形式,运算符函数的格式如下:operatorop(atgument-list)例如,operator+()重载+运算符,operator*()重载*运算符。op必须是有效的C++运算符,不能虚构一个新的符一个运算符重载示例Time Time::operator+(const Time & t) con...
2019-04-18 23:04:39
468
转载 3D XPoint的原理解析
回顾存储的发展历程。3D Xpoint是自NAND Flash推出以来,最具突破性的一项存储技术。由于具备以下四点优势,3D Xpoint被看做是存储产业的一个颠覆者:(1)比NAND Flash快1000倍;(2)成本只有DRAM的一半;(3)使用寿命是NAND的1000倍;(4)密度是传统存储的10倍;而得益于这些优势,3D Xpoint能被广泛应用在游戏、媒体制作、基因组测序、金...
2018-12-18 15:55:49
15267
原创 LevelDB学习
学习博客:https://blog.youkuaiyun.com/qq_26499321/article/details/78063856
2018-11-04 16:41:42
251
原创 数据库在磁盘上的存储
关系型数据在磁盘上的存储布局:https://blog.youkuaiyun.com/cjfeii/article/details/8884658#t10基于page的heap file深入理解数据库磁盘存储(Disk Storage):https://blog.youkuaiyun.com/u011537073/article/details/49157903...
2018-11-02 22:09:40
4364
原创 LSM树学习
LSM树存储模型关于Mem Table、Immutable Mem Table和SSTable等概念见博客:https://blog.youkuaiyun.com/qq910894904/article/details/38014127LSM的基本思想是将修改的数据保存在内存,达到一定数量后在将修改的数据批量写入磁盘,在写入的过程中与之前已经存在的数据做合并。同B树存储模型一样,LSM存储模型也支持增、...
2018-11-02 21:28:52
1453
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人