自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Golang 匿名函数、闭包

参考:https://blog.csdn.net/qq_35976351/article/details/81986496Golang 闭包匿名函数Golang支持匿名函数,即在需要使用函数时,再定义函数,匿名函数没有函数名,只有函数体。匿名函数经常被用于实现回调函数、闭包等。匿名函数可以动态的创建,普通函数必须在包中编译前就定义完毕,而匿名函数可以随时改变功能。func main() { f := func(i int) { fmt.Println(i) } f(10) f =.

2022-02-06 14:02:56 411

原创 高性能IO——Reactor模式

高性能IO——Reactor模式参考:https://cloud.tencent.com/developer/article/1513447目前的IO线程处理模型一般可以分为以下三类:单线程阻塞I/O服务模型;while(true) { socket = accept(); handle(socket)}多线程阻塞I/O服务模型;while(true) { socket = accept() new thread(socket)}Reactor模式(三种)

2022-01-28 17:03:51 817 1

原创 MESI 缓存一致性协议

MESI 缓存一致性协议多核场景下,仅仅依靠CAS这一类硬件原语并不能实现同步,因为原子指令底层实现也可能包含多条微指令,而原子指令的原子性是相对于一个核而言的,多条原子指令在各自的CPU核上都是原子执行的。所以要解决这个问题就要先将总线锁住。例如在Go中Mutex的实现,在执行CMPXCHGL指令直线先LOCK总线。锁住总线就导致程序由并行变为串行,这必然会影响性能,现代CPU都拥有高速缓存,不再通过锁总线的方式实现多核间的同步,为了保证多核间高速缓存的一致性,引入了高速缓存一致性协议(MESI协议)。

2022-01-24 23:13:55 241

原创 磁盘文件系统、挂载

参考:https://zhuanlan.zhihu.com/p/106459445https://blog.csdn.net/qq_39521554/article/details/79501714文件系统持久化的数据是存储在外部磁盘上的,如果没有文件系统,访问这些数据需要直接读写磁盘的sector,而文件系统存在的意义,就是能更有效的组织、管理和使用磁盘中的数据。文件系统的组成要管理,先划分,因为磁盘上的数据要和内存交互,而内存通常是以4KB为单位,所以从逻辑上,把磁盘按照4KB划分比较方便.

2022-01-14 11:02:03 497

原创 Golang中的error

文章目录Golang中的errorerror源码error创建Unwrap()、Is() 和 As()Golang中的errorerror源码type error interface { Error() string}error 是一个接口类型,它包含一个 Error() 方法,返回值为 string。任何实现这个接口的类型都可以作为一个错误使用,Error()这个方法提供了对错误的描述。error创建errors.New()// 源码如下:package errorsfunc

2022-01-05 13:24:23 778

原创 云原生初探

文章目录什么是云原生?第二讲 容器的基本概念什么是容器?容器运行时的生命周期容器项目的架构容器和VM的差异第三讲 Kubernetes核心概念什么是KubernetesKubernetes架构Kubernetes核心概念和API第四讲 理解Pod和容器设计模式为什么Pod必须是原子调度单位?Pod实现机制什么是云原生?不同企业对云原生有不同的解释,最为广泛接受的是:云原生是一类技术的统称 或者 是一套指导进行软件架构设计的思想,通过云原生技术,我们可以构建出更易于弹性扩展的应用程序。它包含了当前业界的一

2021-11-29 22:46:19 340

原创 个人认为值得阅读的文章/博客

个人认为值得阅读的文章/博客[典藏版] Golang 调度器 GMP 原理与调度全分析

2021-11-24 19:42:56 83

原创 Go 排序方式

参考:https://segmentfault.com/a/1190000016514382 (值得一看)Go 常见排序方式整数、浮点数、字符串切片排序sort包提供了一下几种排序函数:sort.Ints(x []int)sort.Float64s(x []float64)sort.Strings(x []string)使用自定义比较器进行排序使用sort.Slice(x interfacec{}, less func(i, j int) bool)进行排序(快速排序 + 堆排.

2021-10-30 13:54:39 514

原创 Golang实现最大堆/最小堆

Golang实现最大堆/最小堆参考: https://yangjiahao106.github.io/2019/01/15/golang-%E6%9C%80%E5%A4%A7%E5%A0%86%E5%92%8C%E6%9C%80%E5%B0%8F%E5%A0%86/https://studygolang.com/articles/24288方法一此方法就是比较传统、常见的方法,下面来构建一个最小堆:type Heap struct { Size int Elems []int}fun

2021-10-17 12:18:31 2279

原创 Docker网络

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0Docker网络理解Docker0清空所有环境docker rm -f $(docker ps -aq)docker rmi -f $(docker images -aq)root@zhucz:/home# ip aDocker如何处理容器间的网络访问的?root@zhuc.

2021-10-16 16:15:42 267

原创 DockerFile

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0DockerFile就是脚本。构建步骤:编写一个dockerfile文件;docker build 构建成为一个镜像;docker run 运行镜像;docker push 发布镜像(发布到DockerHub…)例如:centos的dockerfile脚本:FROM scrat.

2021-10-10 15:56:27 196

原创 Docker容器数据卷

容器数据卷如果容器放在容器内,那么容器删除,数据就会丢失。所以数据需要持久化,数据存放在本地,容器之间可以有一个数据共享的技术。将容器中的目录挂载(映射?)到本地,容器中产生的数据,自动同步到本地。用处:数据的持久化和同步操作,容器间数据共享使用# 方式一:-v source为主机地址,destination为docker内部地址$ docker run -it -v source:destination centos通过docker inspect d2ce53947732查看镜像的相关信

2021-10-10 15:47:06 109

原创 DDIA笔记—第六章 数据分区

第六章 数据分区数据分区与数据复制分区通常与复制结合使用,即每个分区在多个节点都存在副本,这就意味着某条记录属于特定的分区,而同样的内容会保存在不同的节点上以提高系统的容错性。每个节点同时充当某些分区的主副本和其他分区的从副本:如何进行分区?如何决定哪些记录放在哪些节点上?分区的主要目的是将数据和查询负载均匀的分布在所有节点上。如果分区不均匀,则会出现某些分区节点比其他分区承担更多的数据量和查询负载,称之为倾斜。更为严重的情况是,所有的负载都集中在一个分区节点上,这种负载严重不成比例的分区称为系

2021-10-06 18:42:00 294

原创 Docker镜像讲解

https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0https://blog.csdn.net/11b202/article/details/21389067Docker镜像讲解镜像是什么镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容:代码、库、环境变量、配置文件等。所有应用,直接打包成Docker镜像,就可以直接跑起来。Docker镜像加载.

2021-10-05 23:33:21 106

原创 Docker基本组成 和 基本命令

Docker基本组成 和 基本命令镜像 image:就好比一个模板,可以通过这个模板创建容器服务。例如:tomcat镜像===>run===>tomcat容器(提供服务),通过这个镜像可以创建多个容器(最终服务/项目运行就是在容器中);容器 container:Docker运用容器技术,运行一个或一组应用;操作:启动、停止、删除;仓库 repository:存放镜像的地方;公有仓库、私有仓库;测试安装成功使用帮助:https://docs.docker.com/engine/

2021-10-05 23:16:38 113

原创 DDIA笔记——数据复制

Table of Contents generated with DocToc此篇为《数据密集型应用系统设计》(DDIA)读书笔记,笔记可能存在遗漏,建议直接阅读原书。第五章 数据复制主从复制复制滞后复制滞后带来的问题多主节点复制适用场景处理写冲突拓扑结构无主节点复制读修复和反熵读写quorum宽松的quorum和数据回传多数据中心操作检测并发写合并同时写入的值版本矢量第五章 数据复制主从复制复制滞后如果一个应用正好从一个异步的从节..

2021-10-05 22:51:24 876

原创 第二讲 命令源码文件

此为 《极客时间&Go语言核心36讲》 个人笔记,具体课程详见极客时间官网。Table of Contents generated with DocToc第二讲 命令源码文件1. 什么是命令源码文件?2. 命令参数的接收和解析2.1 命令源码文件怎么接收参数?2.2 怎样在运行源代码文件的时候传入参数,又怎样查看参数的使用说明?3. 补充3.1 问题3.2 其他第二讲 命令源码文件源码文件分为三种:命令源码文件库源码文件测试源码文件.

2021-09-18 18:48:35 111

原创 第一讲 工作区和GOPATH

Table of Contents generated with DocToc第一讲 工作区和GOPATH1. 环境变量配置2. 配置GOPATH的意义2.1 Go语言源码的组织方式2.2 源码安装后的结果(归档文件、可执行文件)2.3 理解构建和安装Go程序的过程3. 补充3.1 go build命令一些可选项的用途和用法3.2 go get3.3 其他第一讲 工作区和GOPATH1. 环境变量配置在这个过程需要配置3个环境变量:GOROOT、GO..

2021-09-18 18:41:27 126

原创 http.ListenAndServe()到底做了什么?

参考:https://studygolang.com/articles/25849?fr=sidebar​ http://blog.csdn.net/gophers实现一个最简短的hello world服务器package mainimport "net/http"func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`hello wor.

2021-09-10 16:03:21 1117

原创 Slice的本质

Slice的本质我们先看下面的代码,看看它的输出是什么:package mainimport "fmt"type Slice []intfunc (A Slice) Append(value int) { A = append(A, value)}func main() { mSlice := make(Slice, 10, 20) mSlice.Append(5) fmt.Println(mSlice)}//output: [0 0 0 0 0 0 0 0 0 0]我们

2021-08-26 10:52:19 89

原创 Go unsafe Pointer

Go unsafe PointerGo被设计为一种强类型的静态语言,强类型意味着类型一旦确定就无法更改,静态意味着类型检查在运行前就做了。指针类型转换为了安全考虑,两个不同类型的指针不能相互转换,例如:package mainfunc main() { i := 10 ip := &i var fp *float64 = (*float64)(ip) //会提示 Cannot convert an expression of the type '*int' to the

2021-08-26 10:12:16 735

原创 Go中new和make的区别

Go中new和make的区别变量声明当我们声明变量时可以使用var关键字,当不指定变量的默认值时,这些变量的默认值就是他们的零值,比如int的默认值为0,string的默认值为"",引用类型的零值为nil。但是当我们在声明引用类型的变量并直接使用时,会panic。package mainimport "fmt"func main() { var i *int *i = 10 fmt.Println(*i)}//output: panic: runtime error: inval

2021-08-26 10:10:51 218

原创 MongoDB 分片

MongoDB 分片高数据量(消耗内存)和高吞吐量(消耗CPU)的数据库应用会对单机的性能造成较大压力,为了解决这些问题,一般采用两种方法:水平扩展(将数据集分布在多个服务器上)和垂直扩展(增加更多的CPU和存储资源)。当MongoDB存储海量数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们可以通过分割数据,使得数据分布在多个服务器上。1. 分片集群架构Config Server:存储集群所有节点、分片数据数据信息等元数据信息,默认需要配置3个Config Ser

2021-08-25 15:35:37 266

原创 MongoDB副本集

参考:https://www.cnblogs.com/littleatp/p/8562842.htmlhttps://www.cnblogs.com/ilifeilong/p/14347008.htmlMongoDB副本集MongoDB副本集是由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点。客户端的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持副本集内所有成员存储相同的数据集,实现数据的高可用。1. 副本集角色.

2021-08-25 15:29:13 718

原创 MapReduce简述

MapReduce参考:https://www.cnblogs.com/lixiansheng/p/8942370.htmlhttps://baike.baidu.com/item/MapReduce/133425?fr=aladdin概念MapReduce是面向大数据并行处理的计算模型,用于大规模数据集的并行计算。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、

2021-06-07 20:15:35 2011 2

原创 HDFS(一)

HDFS(一)参考:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.htmlhttps://www.cnblogs.com/zsql/p/11587240.htmlHadoop Distribute File System:Hadoop分布式文件系统,Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。架构架构图:主从结构一个HDFS集群是由一个Namenode和一定数目的Datanides组成。Nameno

2021-06-06 15:35:48 198

原创 中科大软件测试期末复习

前言taozs老师画的重点,极其重要!!!25道多选测试是为了证明这个系统没有bug。 错测试四象限:单元测试(工具)、组件测试(开发人员做,dao层 controller层,测试驱动开发),自动化,面向技术;功能测试(接口测试,主要讲了rest接口; restAssured,curl,postman),selenium,自动化,面向业务;探索测试:用户验收测试,可用性测试,面向业务;系统测试:性能、压力,“非功能性”测试,面向技术,Jmeter;测试金字塔:测试投入比例: unit &g

2021-05-23 16:13:04 939

空空如也

空空如也

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

TA关注的人

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