自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

转载 git rebase用法

基本操作开发任务分叉到两个不同分支,又各自提交了更新整合分支最容易的方法是 merge 命令。 它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)。其实,还有一种方法:你可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。 在 Git 中,这种操作就叫做 变基(rebase)。 你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。在这个例子中,你可以检出 e

2021-05-31 20:56:04 583

原创 acwing算法题--01背包问题

原题链接:https://www.acwing.com/problem/content/2/package mainimport "fmt"const N = 1010var v,w [N]intvar dp [N][N]intfunc main() { var n, m int fmt.Scan(&n, &m) for i := 1; i <= n; i++ { fmt.Scan(&v[i], &w[i]) } for i := 1

2021-05-30 01:02:20 62

转载 Golang for循环使用多个变量

由于Go没有逗号表达式,而++和–是语句而不是表达式,如果想在for中执行多个变量,需要使用平行赋值for i, j := 1, 10; i < j; i,j=i+1,j+1 { //死循环 fmt.Println(i)}而不能写成for i, j := 1, 10; i < j; i++,j++ { fmt.Println(i)}for的condition在每执行一次循环体时便会执行一次,因此在实际开发过程中需要注意不要让condition中计算简单而不是复杂

2021-05-29 06:45:09 2444

翻译 Golang slice原理

数组slice类型是建立在Go数组类型之上的抽象,因此要了解slice我们必须首先了解数组。数组类型定义了长度和元素类型。例如,[4]int 类型表示一个由四个整数组成的数组。数组的大小是固定的,长度是数组类型的一部分( [4]int 和 [5]int 是完全不同的类型)。数组可以以常规的索引方式访问,表达式 s[n] 访问数组 s 的第 n 个元素。var a [4]inta[0] = 1i := a[0]// i == 1数组不需要显式的初始化;数组中的零值可以直接使用,数组元素会自动初

2021-05-28 18:34:52 624

转载 Golang 数组传参

概念介绍数组与切片数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。数组长度最大为2Gb,它是值类型。切片是对数组一个连续片段的引用,所以切片是一个引用类型。按值传递和按引用传递Go语言中函数的参数有两种传递方式,按值传递和按引用传递。Go默认使用按值传递来传递参数,也就是传递参数的副本。在函数中对副本的值进行更改操作时,不会影响到原来的变量。按引用传递其实也可以称作”按值传递”,只不过该副本是一个地址的拷贝,通过它可以修改这个值所指向的地址上的值。Go语言中,在函数调用时,引用类型(s

2021-05-28 15:57:19 1476

转载 Golang 判断key是否在map中

if _, ok := map[key]; ok { //存在}原文链接:https://blog.csdn.net/xielingyun/article/details/49996247

2021-05-26 21:09:00 929

原创 acwing算法题--直方图中最大的矩形

原题链接:https://www.acwing.com/problem/content/description/133/package mainimport "fmt"func main() { for { var n int fmt.Scan(&n) if n == 0 { break } var a []int for i := 0; i < n; i++ { var c int fmt.Scan(&c) a = appe

2021-05-25 23:46:48 105

转载 Golang unsafe.Pointer指针

相较于 C 而言,Go 语言在设计时为了使用安全给指针在类型和运算上增加了限制,这让Go程序员既可以享受指针带来的便利,又避免了指针的危险性。除了常规的指针外,Go 语言在 unsafe 包里其实还通过 unsafe.Pointer 提供了通用指针,通过这个通用指针以及 unsafe 包的其他几个功能又让使用者能够绕过 Go 语言的类型系统直接操作内存进行例如:指针类型转换,读写结构体私有成员这样操作。正是因为功能强大同时伴随着操作不慎读写了错误的内存地址即会造成的严重后果所以 Go 语言的设计着才会把这些

2021-05-21 21:46:29 2876

转载 git add用法

git add -A和 git add . git add -u在功能上看似很相近,但还是存在一点差别git add . :会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。git add -u :仅监控已经被add的文件(即tracked file),会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add –update的缩写)git add

2021-05-16 18:12:29 5900

转载 git restore用法

git restore --stage 和git restore 两个命令:文件在暂存区且未作修改的情况使用git restore --staged 把文件从暂存区移动到工作区,即文件不被追踪;文件在暂存区且已经修改的情况使用git restore --staged 把文件从暂存区移动到工作区,且不会撤销修改的内容;使用git restore 文件仍在暂存区且会撤销文件修改的内容;文件在本地代码库已经修改的情况使用git add 把文件重新放到暂存区,且保留文件的修改;使

2021-05-16 18:04:39 4988

转载 Makefile中打印变量

一、使用info/warning/error增加调试信息方法1: $(info, “here add the debug info”) 但是此不能打印出.mk的行号方法2: $(warning “here add the debug info”)方法3: $(error “error: this will stop the compile”)这个可以停止当前makefile的编译方法4: $(info $(TARGET_DEVICE) )打印变量的值二、使用echo增加调试信

2021-05-16 17:33:58 5131

原创 leetcode算法题--数组中两个数的最大异或值

原题链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/func findMaximumXOR(nums []int) int { res := 0 for i := 1; i < len(nums); i++ { for j := 0; j < i; j++ { res = max(res, nums[i] ^ nums[j])

2021-05-16 10:54:29 153

原创 acwing算法题--整数分解

问题描述:将3分解成两个正整数的和,有两种分解方法,分别是3=1+2和3=2+1,注意顺序不同算不同的方法请问,将2021分解成五个正整数的和,有多少种分解方法?解题方法:隔板法看成有2021个1一字排开,这样有2020个空隙,这样就有C20204C_{2020}^{4}C20204​ ,于是代码如下package mainimport "fmt"func main() { res := 1 for i, j := 2020, 1; j <= 4; i--{ res =.

2021-05-15 21:56:55 261

转载 openvswitch 流表操作(四十八)

流表组成每条流表规则由一些列字段组成,可以分为基础字段、匹配字段和动作字段三部分。 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之于基础字段之中.流表组成部分字段说明基础字段cookie=value 流表标识字段,cookie字段有两种书写方式:cookie=value和cookie=value/mask。mask中对应位为1时cookie中值相应的位须严格匹配,为0时cookie中值对应的位通配,当mask为-1时,必须严格匹配cook

2021-05-13 11:41:14 5612

转载 OVS数据库操作(四十七)

说明[Record]就是行对应的_uuid[if-exists]当值不存在的是否会报错而不是返回False基本信息查询列举数据库# ovsdb-client list-dbsOpen_vSwitch列举数据库表# ovsdb-client list-tables [DB]### 列举数据库Open_vSwitch的所有表名# ovsdb-client list-tables Open_vSwitchTable-------------------------Cont

2021-05-13 11:25:44 888

转载 理解 Go defer

defer 的作用和执行时机go 的 defer 语句是用来延迟执行函数的,而且延迟发生在调用函数 return 之后,比如func a() int { defer b() return 0}b 的执行是发生在 return 0 之后,注意 defer 的语法,关键字 defer 之后是函数的调用。defer 的重要用途一:清理释放资源由于 defer 的延迟特性,defer 常用在函数调用结束之后清理相关的资源,比如f, _ := os.Open(filename)defer f

2021-05-13 00:42:48 85

转载 go context包的WithTimeout和WithCancel的使用

1、WaitGroup它是一种控制并发的方式,它的这种方式是控制多个goroutine同时完成。func main() { var wg sync.WaitGroup wg.Add(2) go func() { time.Sleep(2*time.Second) fmt.Println("1号完成") wg.Done() }() go func() { time.Sleep(2*time.Second

2021-05-13 00:18:35 579

转载 虚拟网络技术:ipvlan

导读:ipvlan是linux kernel比较新颖的特性,稳定的版本>=4.2,和macvlan类似,都是从一个主机接口虚拟出多个虚拟网络接口,ipvlan虚拟出的子接口共有物理接口的mac地址,但可配置不同的ip地址。一、ipvlan简介ipvlan和macvlan类似,都是从一个主机接口虚拟出多个虚拟网络接口。唯一比较大的区别就是ipvlan虚拟出的子接口都有相同的mac地址(与物理接口共用同个mac地址),但可配置不同的ip地址。由于所有的虚拟接口共享同个mac地址,因此有些地方需要注意:

2021-05-13 00:13:45 1233

转载 容器网络规范CNM vs. CNI

CNM1 由Docker公司提出,在docker项目下的libnetwork项目中被采用。2 工作流程CNI1 CNI是由CoreOS提出的容器组网规范,被K8s、Mesos、Cloud Foudry、rkt等项目采用,目前也是CNCF的一个重要项目。2 工作流程CNM vs. CNI相同点都支持插件化的组网功能。二者中的许多概念是相似的。比如CNM的sandbox和CNI的container、CNM的network和CNI的network。类似CNM中的endpoint

2021-05-12 17:49:53 489

转载 linux虚拟网络设备--eth, tap/tun, veth-pair(九)

Linux 虚拟网络的背后都是由一个个的虚拟设备构成的。虚拟化技术没出现之前,计算机网络系统都只包含物理的网卡设备,通过网卡适配器,线缆介质,连接外部网络,构成庞大的 Internet。然而,随着虚拟化技术的出现,网络也随之被虚拟化,相较于单一的物理网络,虚拟网络变得非常复杂,在一个主机系统里面,需要实现诸如交换、路由、隧道、隔离、聚合等多种网络功能。而实现这些功能的基本元素就是虚拟的网络设备,比如 tap、tun 和 veth-pair。tap/tuntap/tun 提供了一台主机内用户空间的数

2021-05-12 17:40:57 805

转载 linux虚拟网络设备-- TUN/TAP MACVLAN MACVTAP(八)

TUN 设备TUN 设备是一种虚拟网络设备,通过此设备,程序可以方便得模拟网络行为。先来看看物理设备是如何工作的:所有物理网卡收到的包会交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户程序。下面看看 TUN 的工作方式:普通的网卡通过网线收发数据包,但是 TUN 设备通过一个文件收发数据包。所有对这个文件的写操作会通过 TUN 设备转换成一个数据包送给内核;当内核发送一个包给 TUN 设备时,通过读这个文件可以拿到包的内容。如果我们使用 TUN 设备搭建一

2021-05-12 17:34:12 548

docker存储驱动

docker存储驱动介绍,介绍了aufs、btrfs、devicemapper、overlayfs、zfs、vfs六种存储驱动

2018-05-30

go语言revel安装文件

下载后解压放在$GOPATH路径下的src文件夹中即可,具体搭建过程请见我的另一篇博文:http://blog.csdn.net/qq_20817327/article/details/77587145

2017-08-26

空空如也

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

TA关注的人

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