自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang构造N叉树

package mainimport ( "fmt" "strconv" "sync")type Spaninfo struct { AppNames []string `json:"appNames"` ContainErr bool `json:"containErr"` Attrs map[string]interface{} `json:"attrs"` Cspa.

2021-12-01 19:14:51 3

原创 mac本工具使用配置

1.CotEditor:文本编辑器文本换行或者不换行设置:格式-换行文本分栏展示,方便对比:显示-分栏显示

2021-11-11 09:56:53 146

原创 NO1:how

我想成长为一个架构师,活成自己仰慕的样子.我觉得我的职业生涯才开始,后面还有更多可能,我想去假设去求证.老?或许吧.我无须仰慕别人,我就是我仰慕的样子.1.所有系统都涉及到数据的持久化,存储,kv存储或者关系存储,几个常用的系统2.进程,常用的处理服务,web后台啦,服务发现组件啦,深挖一下3.网络,所有的服务都会涉及到网络,深挖一下网络原理4.数据结构和算法:这是内功,能让你写代码思路多多5.摸透一门语言,语言就是工具,就是一把垦荒的斧头,一把利器6.摸透操作系统:都是在o

2021-06-29 12:20:13 26

原创 一些好的资源链接

文件系统底层知识:https://www.thomas-krenn.com/en/wiki/Linux_Storage_Stack_Diagram#Diagram_for_Linux_Kernel_3.17IBM的学习库,关于linux的:https://developer.ibm.com/zh/technologies/linux/tutorials/l-lpic1-109-4/文件系统介绍:https://learning.snssdk.com/feoffline/toutiao_w

2021-02-23 19:40:40 156

原创 golang-type关键字使用大全https://blog.csdn.net/wohu1104/article/details/105846539

目录1.定义结构体2.定义接口3.根据旧的类型定义新的类型类型转换4.类型别名定义5.接口类型查询1.定义结构体2.定义接口3.类型定义(函数也是类型,可以作为参数传递给别的函数)type newType Type使用类型定义定义出来的类型与原类型不相同,所以不能使用新类型变量赋值给原类型变量,除非使用强制类型转换。类型定义可以在原类型的基础上创造出新的类型。其中newType是一种新的类型,newType本身依然具备Type类型的...

2021-01-21 19:12:35 88

原创 golang文件读取和写入https://www.cnblogs.com/-beyond/p/9203272.html

package mainimport ( "io/ioutil" "fmt" "os" "bufio" "io")var ( filepath = "C:\\Users\\yangzhen1\\Desktop\\es10000Console_old\\src.txt" descpath = "D:\\goCodeWorkspace\\src\\github.com\\ks3sdklib\\aws-sdk-go\\test\\yz_test\\desc.t.

2021-01-19 10:59:39 85

原创 zz一口气搞懂「文件系统」,就靠这 25 张图了

https://mp.weixin.qq.com/s/qJdoXTv_XS_4ts9YuzMNIw前言不多 BB,直接上「硬菜」。正文文件系统的基本组成文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘里的数据并不会丢失,所以可以持久化的保存文件。文件系统的基本数据单位是文件,它的目的是对磁盘上的文件进行组织管理,那组织的方式不同,就会形成不同的文件系统。Linux 最经典的一句话是:「一切皆文件」,不仅普通

2020-09-03 22:16:49 67

原创 zz文件系统:隐匿在 Linux 背后的机制

https://mp.weixin.qq.com/s/UuSRX2r-HagSfmNWpGkbuw在 Linux 中,最直观、最可见的部分就是文件系统(file system)。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中有一些来源于 MULTICS,现在已经被 Windows 等其他操作系统使用。Linux 的设计理念就是小的就是好的(Small is Beautiful)。虽然 Linux 只是使用了最简单的机制和少量的系统调用...

2020-09-03 22:12:55 91

原创 使用tcp协议手写一个http的server端和一个http的客户端

浏览器就是一个http协议的客户端,浏览器不仅仅是http协议的客户端,还是ftp等其他服务的客户端,目前只尝试http协议。1 .手动实现一个http的server端,请使用浏览器作为客户端访问这个http服务的server端:本质就是把返回流设置成http resp的格式。package mainimport ( "net" "fmt")func main() { listener, err := net.Listen("tcp", "127.0.0.1:8000") i

2020-08-03 16:39:14 240

原创 Linux下查看内存使用情况方法总结

+++++++++++++++查找占用内存最多的进程+++++++++++++++++++++++++i+++ll /proc/$(ps aux --sort -pmem | head -2|tail -1|awk '{print$2}')/exe|awk '/exe/{print$NF}'通过: ps aux | sort -k4,4nr | head -n 10 |awk '{print $2}'查看内存占用前10名的程序Pid查看pid的物理内存占用:cat /proc/2913/status

2020-07-16 15:29:40 130

原创 zz:samba安装与使用

https://blog.csdn.net/qq_41636653/article/details/81953376Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。1.samba的作用samba是一款软件,主要提供cifs协议(基于文件系统传输)2.samba的安装与启用.

2020-06-17 10:29:21 98

原创 zz内核初始化

https://www.cnblogs.com/JaPer/p/10781136.html内核启动的入口函数 start_kernel() {init/main.c配置文件} , 里面有XXXX_init的初始化函数1)在操作系统中有个创始进程,set_task_stack_end_magic(&init_task)。 有一个参数 init_task 定义是struct task_struct init_task = INIT_TASK(init_task)...

2020-06-10 21:36:02 95

原创 为什么要三次握手四次挥手

像TCP协议一样。它之所以这么复杂,那是因为它秉承的是“性恶论”。它天然认为网络环境是恶劣的,丢包、乱序、重传,拥塞都是常有的事情,一言不合就可能送达不了,因而要从算法层面来保证可靠性。拥塞控制和流量控制的区别,流量控制是针对端的,拥塞控制是针对网络的。包的序号。为什么要给包编号呢?当然是为了解决乱序的问题。不编好号怎么确认哪个应该先来,哪个应该后到呢。编号是为了解决乱序问题。既然是社会老司机,做事当然要稳重,一件件来,面临再复杂的情况,也临危不乱。还应该有的就是确认序号。发出去的包应该有确..

2020-05-26 22:43:54 147

原创 ZZ:阮一峰-curl 的用法指南

http://www.ruanyifeng.com/blog/2019/09/curl-reference.html简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的参考,方便查阅。内容主要翻译自《curl cookbook》。为了节约篇幅,下面的例子不包括运行时的输出,初.

2020-05-21 21:41:39 179

原创 Golang(Go语言)中实现典型的fork调用

背景在日常的系统编程中,我们经常有这样的需求:fork多个子进程去执行任务。例如典型的master-slave架构便是这样的,fork调用之后,父进程开始作为管理进程管理子进程,而子进程则开始执行处理请求的代码。但是在Go语言中,由于Go语言屏蔽了进程、线程的概念,而只提供了goroutine的概念,导致我们无法很好的直接操作fork调用。在Go语言中,此类解决方案只有以下三种:syscall.ForkExec os.StartProcess exec.Cmd这三个都类似于f...

2020-05-21 17:18:24 993 1

原创 http和websocket

http的长连接和websocket的区别一、什么是http协议HTTP是一个应用层协议,无状态的,端口号为80。主要的版本有1.0/1.1/2.0.HTTP/1.* 一次请求-响应,建立一个连接,用完关闭; HTTP/1.1 串行化单线程处理,可以同时在同一个tcp链接上发送多个请求,但是只有响应是有顺序的,只有上一个请求完成后,下一个才能响应。一旦有任务处理超时等,后续任务只能被阻塞(线头阻塞); HTTP/2 并行执行。某任务耗时严重,不会影响到任务正常执行二、什么是we..

2020-05-19 21:41:08 113

原创 golang 单例模式的几种实现

1、饿汉模式type Instance struct {}var MyInstance = &Instance{}func GetInstanc() *Instance { return MyInstance}type Instance struct {}var MyInstance *Instance//服务启动时加载func init() { MyInstance = &Instance{}}2、懒加载模式type sing

2020-05-19 21:13:22 218

原创 golang中interface底层分析-2-简书上的两个文章-很好

https://www.jianshu.com/p/ce91ca87fef1https://www.jianshu.com/p/917a3cf6682f

2020-05-19 21:02:43 109

原创 Go语言interface(接口)底层实现-1

Go的interface源码在Golang源码的runtime目录中。Go在不同版本之间的interface结构可能会有所不同,但是,整体的结构是不会改变的,此文章用的Go版本是1.11。Go的interface是由两种类型来实现的:iface和eface。其中,iface表示的是包含方法的interface,例如: type Person interface { Print() } 而eface代表的是不包含方法的interface,即type...

2020-05-19 21:00:19 179

原创 一个连接的建立和数据的收发:干活的都是协议栈,驱动程序,网卡

服务端等待连接模块1.服务端进程创建套接字-创建套接字阶段描述符=socket(使用ipv4,使用tcp,...)//此过程,开辟了一个内存空间,返回的是这块空间的文件描述符,既分配用于套接字的内存空间2.将套接字设置为等待连接状态-等待连接状态bind(描述符1,端口号等,...) //把端口号写入套接字中,因为客户端在发起连接的时候,需要指定服务端的端口号listen(描述符1,...) //向套接字写入等待连接状态这一控制信息向套接字写入bind所指定的端口号,并等待...

2020-05-17 19:53:49 153

原创 记一个配置本地yum源的好办法

安装集群的ansible脚本需要2.7的,但是yum安装默认是最新的,每次搭集群都为了版本小折腾一下,索性把2.7版本的所有依赖都集成到一个文件夹,下次直接yum源设置为本地文件夹不就行了。嗯,然后按照网上教程设置,总是不对,只有这样才能成功。http://www.manongjc.com/article/119700.htmlrepodata创建本地YUM仓库参考一createrepo是linux下的创建仓库的软件包。create是创建的意思,repo是repository的缩写,是仓库的

2020-05-11 22:23:02 264

原创 工作中一个小问题,有关iscsi的

售前在跟客户演示块存储的使用,遇到一个需求,多个客户端挂载同一块虚拟盘,可否实现同步读写,一路问到我这里,虽然不是我一个小小的控制台开发力所能及的,但是多探索不是坏事,还是磕一下吧。我简单测试了下,通过客户端1挂载并使用了虚拟盘,写文件,然后通过客户端2挂载虚拟盘,可以看到客户端1写的东西。然后我又在客户端2写东西,客户端1没有得到同步,说明数据实时同步是不支持的,我把客户端2虚拟盘卸载掉,然后重新挂载,展示的还是客户端1的那些内容,说明客户端2的数据并没有真正持久化。怀疑一是iscsc协议的问题,

2020-05-09 16:46:02 144

原创 go的拷贝

1.go的传参全部是拷贝传参2.range出来的v也是拷贝出来修改eg:答案是1type M struct{ A int}func main(){ z := []M{{1},{2}} for _,m := range z{ if m.A==1{ m.A = 12 } } fmt.Println(z[0].A)}那么怎样才能改变slic...

2020-05-08 15:25:34 70

原创 大爱一本书-linux内核源码分析上下册

在我抽屉里躺半年多了,此前看过电子的,喜欢的不行,买了纸质的在桌子里睡觉。昨天想看一下select()的实现,搜索到了设备驱动那一章节。非常透彻的讲解。基于linux2.4内核源码说的。计算机最基本的三个物质基础就是cpu 内存 以及IO设备(eg:网卡/硬盘),严格地说,离开了对设备的操作即IO操作,计算机本身也就失去了意义。文件操作是对设备操作的组织与抽象,而设备操作则是文件操...

2020-05-07 13:25:18 264

原创 select poll epoll IO多路复用模型

扎心了,不表。还是捋一下,很基础1.select poll epoll

2020-04-30 14:53:31 54

原创 关于es的漫画,很有意思,棒极了

https://developer.51cto.com/art/201904/594615.htm小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。...

2020-04-30 14:43:08 991

原创 https://segmentfault.com/a/1190000014044351

Socket长连接所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接(心跳包),一般需要自己做在线维持。 短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接。比如Http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。其实长连接是相对于通常的短...

2020-04-29 21:09:21 196

原创 容器之间如何通信

1.宿主机端口映射2.容器链接Docker 还有一个链接系统能够把多个容器链接到一起.通过Linking, 容器之间能够相互发现,并能够安全地传输信息. 当创建Linking时,实际上是在源容器和目标容器之间建立了一根管道(Conduit). 要创建Linking,需要使用--link标志, 首先创建一个新容器,其中包含我们要访问的数据库:。从镜像training/postgres创...

2020-04-29 20:55:52 731

原创 一个协程池的简单实现

package mainimport ( "fmt" "time")type Task struct { f func() error}func NewTask(f func() error) *Task{ t := Task{ f: f, } return &t}func (t *Task)Run(){ t.f()}type pool stru...

2020-04-29 20:10:31 127

原创 slice map和chan struct make new 作为函数参数分析

go都是值传递。1.slice是个结构体,而不是一个指针,其底层实现是指向数组的指针三要素:type(指针),len,cap函数内部修改slice并不会影响外部slice。 其实go里面都是值传递,makeslice返回的是[]int,传入函数内部会对其拷贝一份,slice内部实现是指向数组的指针的,拷贝的副本部分底层实现也是指向同一内存地址的指针数组。所以内部修改slice的值是能修...

2020-04-29 14:30:02 110

原创 GO的调度

我是我以为我懂了先生,以为自己知道go是怎样调度的,其实深入想一下,自己不了解的太多了。就拿最广而告之的M P G来说吧。M:拥有PCB结构,在内核中有一席之地的内核级线程。tip:go之父设计线程调用时候,tcp连接参数全部都是non-block模式,注意不理解这个,有可能会线程暴涨哦~~~~非阻塞,从调用者的角度,不会阻塞自身一直等下去,倘若每一个ioRead阻塞一个M,多个netIO...

2020-04-29 13:21:18 157

原创 linux的/proc /sys目录的区别

内核中有三个常用的伪文件系统:procfs,debugfs和sysfs。 procfs — The proc filesystem is a pseudo-filesystem which provides an interface to kernel data structures.//提供内核数据结构的接口,是一个为文件系统.挂载在/proc目录 sysfs — The f...

2020-04-28 11:18:51 483

原创 如何在linux内核增加一个自定义的系统调用

1.在/usr/src/Linux-2.4.18/kernel/sys.c添加自己的源代码2.连接新的系统调用,让linux内核知道他的存在,修改两个文件文件1:系统调用清单表/usr/src/Linux-2.4.18/include/asm-i386/unistd.h,给你的系统调用函数分配一个num文件2:系统调用跳转表,这是对sys_call_table[]数组进行初始化,该数组...

2020-04-27 17:12:18 537

原创 unix域套接字

Unix域套接字只能用于在同一个计算机的进程间进行通信。虽然网络套接字也可以用于单机进程间的通信,但是使用Unix域套接字效率会更高,因为Unix域套接字仅仅进行数据复制,不会执行在网络协议栈中需要处理的添加、删除报文头、计算校验和、计算报文顺序等复杂操作,因而在单机的进程间通信中,更加推荐使用Unix域套接字。------https://www.jianshu.com/p/43ed6e40...

2020-04-27 16:21:09 211

原创 mobalXterm使用以及dos2unix

刚才在另一个笔记本安装了shell终端神奇,复习一下设置以及dos2unix的使用:批量删除整个linux系统中后缀为.tmp的文件;那么命令可以这么写:如果批量替换public/components 目录下的所有文件使用如下命令:find public/components/ -name "*" | xargs dos2unix其中,”*”号表示所有文件。要更改...

2020-04-26 13:13:52 203

原创 Consul使用手册

此前接触consul是通过micro去了解的,不明白为什么consul agent -dev命令就把micro服务注册到consul了,看了这个文章终于明白了。是因为micro本身有consul的支持。“服务注册与发现在进行服务注册之前先确认集群是否建立,关于服务注册可以看上篇的介绍,两种注册方式:一种是注册HTTP API.(例如node有consul客户端模块,不需要写配置文件...

2020-04-25 21:20:24 237

原创 docker再探

以前用过,现在忘得差不多了,重新看一遍吧:1.docker科普是一个开源软件,一个容器引擎,基于linux的cgroup子系统,以及namespace特性而产生。能够提供进程隔离的能力,一个docker容器就是一个虚拟的os。所谓容器引擎,就是通过docker的功能可以创建容器。docker有这几个元素,通过docker客户端命令,连接docker demon服务端,然后服务端可以从仓...

2020-04-24 14:06:38 81

原创 go语言中的格式占位符%集锦

这些是死知识,把常用的记住,不常用的直接查表就行了golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。定义示例类型和变量type Human struct {Name string}var people = Human{Name:"zhangsan"}1)普通占位符占位符 说明 举例 输出 %v 相应值的...

2020-04-22 14:20:29 242

原创 defer链的执行顺序

defer先进后出,协程遇到panic时,遍历本协程的defer链表,并执行defer。在defer执行过程中遇到recover则停止panic,返回recover处继续往下执行,如果没有recover,遍历完本协程的defer链之后,向stderr抛出panic信息,从执行顺序看,先进后出的顺序执行。关注:defer的执行顺序,执行时参数的值,以及参数的执行顺序。之行时候参数的值斗志值拷...

2020-04-22 13:20:41 125

原创 shell之curl,姑且这么归吧

http://www.ruanyifeng.com/blog/2019/09/curl-reference.html阮一峰的博客curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的...

2020-04-21 18:15:35 97

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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