git远程库操作

git远程库

一、远程库操作

1
2
3
4
5
6
1. 查看远程库信息(仓库地址)
git remote -v
2. 本地库与远程库解除绑定
git remote rm origin
3. 修改本地关联的远程仓库地址
git remote set-url origin [new_remote_repository_address]

二、撤销已经push到远程的commit

1
2
3
4
5
6
7
1. 本地回退到相应的版本
git reset --hard <版本号>
注意:使用 --hard 参数会抛弃当前工作区的修改,使用 --soft 参数回退到之前的版本,但是保留当前工作区的修改,可以重新提交
2. 然后提交当前的版本
git push origin <分支名>
会提示本地版本落后于远程的版本,直接覆盖远程的版本信息,使远程的仓库也回退到相应的版本,加上参数 --force
git push origin <分支名> --force

三、同步操作

1
2
3
4
5
6
7
8
9
10
11
1. 查看远程分支
git branch -r
2. 拉取远程分支并创建本地分支
方法一(采用此种方法建立的本地分支会和远程分支建立映射关系):
git checkout -b 本地分支名 origin/远程分支名
方法二(使用该方法会在本地新建分支,但是不会自动切换到该本地分支,需要手动checkout,且本地分支不会和远程分支建立映射关系)
git fetch origin 远程分支名 : 本地分支名

注意:
git chekcout -b branch_name // 基于当前分支新创建一个 branch_name 分支
git checkout -b branch_name origin/branch_name // 拉取远程分支 branch_name 到本地

查看更多

go语言单元测试

go语言单元测试

1. go test 工具

  • go test 运行整个项目的测试文件
  • go test math_test.go math.go 只运行某个测试文件。(math_test.go、math.go是一对,缺一不可,前后顺序可对调)
  • go test -v math_test.go math.go 加上 -v 可以查看详细的结果
  • go test -v -run=’TestAdd’ 只测试某个函数,-run 支持正则
查看更多

Mysql trigger 详解

mysql触发器

触发器是自动执行的存储程序,以响应特定事件,例如,在表中发生的插入,更新或者删除等

1. 触发器简介

可以定义触发器在 insert、update、delete 语句更改数据之前或者之后调用。在Mysql5.7.2版本之前,可以定义最多六个触发器

  • BEFORE INSERT - 在将数据插入表格之前激活。
  • AFTER INSERT - 将数据插入表格后激活。
查看更多

scanf函数使用注意

使用 scanf 函数需要注意的点

  1. 缓冲区问题
    scanf 在使用的时候,回车符也会留在缓冲区,因此在用 %c 的时候可能会读到回车符。可以加上 fflush(stdin) 刷新缓冲区

  2. 空白符问题

    scanf("%d\n",&a); 这种 scanf 会跳过空白符去读下一个字符。空白符号包括:空格、制表符、换行符、回车符和换页符。

查看更多

go语言Web学习

Go Web

1. Go http 代码分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
"fmt"
"net/http"
)

type MyMux struct {
}

func (p *MyMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
sayhelloName(w, r)
return
}
http.NotFound(w, r)
return
}

func sayhelloName(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello myroute!")
}

func main() {
mux := &MyMux{}
http.ListenAndServe(":9090", mux)
}

首先调用 Http.HandleFunc

按顺序做了几件事:

1 调用了 DefaultServeMux 的 HandleFunc

查看更多

/proc/stat解析

linux 中/proc/stat 解析

1. CPU时间

时间单位为:jiffies

查看更多

vim查找字符串

vim中查找字符串的时候一般有3中需求:

  • 普通查找
    命令模式下,按’/’或’?’,然后输入要查找的字符,Enter。

    /和?的区别是,一个向前(下)找,一个向后(上)。

  • 全词匹配
    如果你输入 “/int”,你也可能找到 “print”。
    要找到以 “int” 结尾的单词,可以用:

查看更多

系统TCP/UDP占用同一端口

TCP/UDP 占用同一端口

TCP/UDP 可以共用同一个端口
1、tcp的端口不是物理概念,仅仅是协议栈中的两个字节
2、TCP和UDP的端口完全没有任何关系,完全有可能又有一种XXP基于IP,也有端口的概念,这是完全可能的。
3、TCP和UDP传输协议监听同一个端口后,接收数据互不影响,不冲突。因为数据接收时时根据五元组{传输协议,源IP,目的IP,源端口,目的端口}判断接受者的。

端口是什么

端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。
应用程序(即进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写原语访问之。
类似于文件描述符,每个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不同端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,如TCP有一个255号端口,UDP也可以有一个255号端口,二者并不冲突。

一个端口可以建立多少连接

一个TCP连接需要由四元组来形成,即(src_ip,src_port,dst_ip,dst_port)。假设有客户端建立了连接(src_ip1,src_port1,dst_ip1,dst_port1),那么,如果我们还有listen在(src_ip1,src_port1),那么当(dst_ip1,dst_port1)发送消息过来,系统应该把消息给谁?所以就说明了客户端占用了某一端口时,该端口就不能被其它进程listen了。
那么,对于有些童鞋,可能还有这样的疑问,是否一台机器就只能建立65535个连接了(端口16位限制)?非也,一个连接由四元组(src_ip,src_port,dst_ip,dst_port)形式,那么当(src_ip,src_port)一定时,变化的(dst_ip,dst_port)就可以建立更多连接了。
所以一台机器可以建立最多65535个连接是大错特错的。所有的一切都可以用四元组原理来分析即:一个TCP连接需要由四元组来形成,即(src_ip,src_port,dst_ip,dst_port),只要四个元素的组合中有一个元素不一样,那就可以区别不同的连接。

ftp端口的占用

FTP服务器有两个端口,其中21端口用于连接,20端口用于传输数据.
进行FTP文件传输中,客户端首先连接到FTP服务器的21端口,进行用户的认证,认证成功后,要传输文件时,服务器会开一个端口为20来进行传输数据文件。
也就是说,端口20才是真正传输所用到的端口,端口21只用于FTP的登陆认证。我们平常下载文件时,会遇到下载到99%时,文件不完成,不能成功的下载。其实是因为文件下载完毕后,还要在21端口再行进行用户认证,而下载文件的时间如果过长,客户机与服务器的21端口的连接会被服务器认为是超时连接而中断掉,就是这个原因。解决方法就是设置21端口的响应时间。

VM0和VM8和VM1的区别

VM0和VM8和VM1的区别

vmnet0,实际上就是一个虚拟的网桥

vmnet0,实际上就是一个虚拟的网桥,这个网桥有很若干个端口,一个端口用于连接你的Host,一个端口用于连接你的虚拟机,他们的位置是对等的,谁也不是谁的网关。所以在Bridged模式下,你可以让虚拟机成为一台和你的Host相同地位的机器。

vmnet1,这是一个Host-Only网络模式

vmnet1,这是一个Host-Only网络模式,这是用于建立一个与世隔绝的网络环境所用到的,其中vmnet1也是一个虚拟的交换机,交换机的一个 端口连接到你的Host上,另外一个端口连接到虚拟的DHCP服务器上(实际上是vmware的一个组件),另外剩下的端口就是连虚拟机了。虚拟网卡 “VMWare Virtual Ethernet Adapter for VMnet1”作为虚拟机的网关接口,为虚拟机提供服务。在虚拟机启动之后,如果你用ipconfig命令,你会很清楚的看到,你的默认网关就是指向 “VMWare Virtual Ethernet Adapter for VMnet1”网卡的地址的。(实际上它并不能提供路由,这是VMware设计使然,它是干了除了提供路由之外的一些事情——实际上是我也不知道它干了什 么事情),这里没有提供路由主要表现在没有提供NAT服务,使得虚拟机不可以访问Host-Only模式所指定的网段之外的地址。

vmnet8,这是一个NAT方式,最简单的组网方式了

vmnet8,这是一个NAT方式,最简单的组网方式了,从主机的“VMWare Virtual Ethernet Adapter for VMnet8”虚拟网卡出来,连接到vmnet8虚拟交换机,虚拟交换机的另外的口连接到虚拟的NAT服务器(这也是一个Vmware组件),还有一个口 连接到虚拟DHCP服务器,其他的口连虚拟机,虚拟机的网关即是“VMWare Virtual Ethernet Adapter for VMnet8”网卡所在的机器,废话,这肯定就是你的Host机器啦。同样,用ipconfig也可以看出来,你的虚拟机的默认网关也指向了你的 “VMWare Virtual Ethernet Adapter for VMnet8”虚拟网卡地址。相比之下,可以看出来,NAT组网方式和Host-Only方式,区别就在于是否多了一个NAT服务。

host-only与wmnet1虚拟网卡进行通信

NAT模式与VMnet8虚拟网卡进行通信

查看更多
cpu指标