每天一个linux命令(42):kill命令 - peida

Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的...阅读全文

博客园 2012-12-20 09:02 博客园

java golang tcp socket导致线上服务器出现大量close_wait的完整示例

tcp断开连接的四次挥手 先说说tcp的四次挥手,这里假定A端为主动发起关闭端,B端为被动接收关闭请求端。A把tcp的数据包中标识位FIN置为1,seq为一个随机数,发送这个包给B端,自己进入FIN_WAIT_1状态;B端收到了马上给A端回复ack(A端收到ack进入FIN_WAIT_2状态),然后自己进入CLOSE_WAIT状态。然后这个时候需要业务代码处理,把自己需要发给客户端的数据发送完,然后业务代码主动调用相应语言库函数提供的close函数,来触发关闭操作:给A端发送FIN seq的数据...阅读全文

www.allocmem.com 2019-05-21 12:33 www.allocmem.co 等

深入理解Golang Channel

Golang使用Groutine和channels实现了CSP(Communicating Sequential Processes)模型,channles在goroutine的通信和同步中承担着重要的角色。在GopherCon 2017中,Golang专家Kavya深入介绍了 Go Channels 的内部机制,以及运行时调度器和内存管理系统是如何支持Channel的,本文根据Kavya的ppt学习和分析一下go channels的原理,希望能够对以后正确高效使用golang的并发带来一些启发...阅读全文

Golang map 的底层实现

在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实现,以解答这些疑惑。 基于Golang 1.8.3 1. 数据结构及内存管理 hashmap的定义位于 src/runtime/hashmap.go 中,首先我们看下hashmap和bucket的定义...阅读全文

简书 2017-12-10 19:34 简书

解剖Go语言map底层实现

map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫bmap(a bucket for a Go map,通常叫其bucket)。这两种结构的样子分别如下所示:hmap: 图中有很多字段,但是便于理解map的架构,你只需要关心的只有一个,就是标红的字段:bucket...阅读全文

RyuGou的博客 2018-08-26 00:00 RyuGou的博客

理解 Go make 和 new 的区别

new 和 make 都可以用来分配空间,初始化类型,但是它们确有不同。 new(T) 返回的是 T 的指针new(T) 为一个 T 类型新值分配空间并将此空间初始化为 T 的零值,返回的是新值的地址,也就是 T 类型的指针 *T,该指针指向 T 的新分配的零值。 123456789p1 := new(int)fmt.Printf("p1 --> %#v \n ", p1) //(*int)(0xc42000e250) fmt.Printf("p1 point to --> %#v \n ", ...阅读全文

三月沙 2019-05-15 19:18 三月沙

Linux下的21个ss命令使用示例详解 – 任我乐

简介: Socket Statistics(ss)命令类似于netstat,它用于显示各种有用的网络套接字信息。 长时间看,已经注意到netstat这个命令程序已经过时了。从而代替netstat的是ss命令。一个全新的ss命令使用起来必定有些陌生,不过ss许多选项与netstat使用的选项类似,但我们还会看到一些差异。 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。 一般来说,网络套接字是由IP地址,传输协议和端口来定义的。这种组合构成了双向连接的一个方面。...阅读全文

renwole.com 2017-12-13 00:00 renwole.com

Go语言TCP Socket编程

Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的。 网络编程方面,我们最常用的就是tcp socket编程了,在posix标准出来后,socket...阅读全文

Tony Bai 2015-11-18 00:00 Tony Bai

WebSocket与http长连接的区别 - 我只是个前端AI

前言 事先说明这是鄙人看了一点入门文章总结的粗浅的知识, 并不保证理解完全正确,用来给自己知识梳理用。 websocket连接过程概述 WebSocket 建立连接需要先通过一个 http 请求进行和服务端握手。握手通过后连接就建立并保持了。浏览器先发送请求: GET / HTTP/1.1 Host: localhost:8080 Origin: [url=http://127.0.0.1:3000]http://127.0.0.1:3000[/url] Connection: Upgrade ...阅读全文

SegmentFault 思否 2018-05-31 00:00 SegmentFault 思否 等

istio 可视化工具 kiali 部署体验

Kiali 为网格管理和可观察性提供了良好的用户体验的可视化工具;Kiali 为我们提供了查看相关服务与配置提供了统一化的可视化界面,并且能在其中展示他们的关联;同时他还提供了界面让我们可以很方便的验证 istio 配置与错误提示;官方功能介绍大致如下:目前官方没有提供能够方便用户一键部署的 yaml 配置文件,需要 clone 项目代码并运行 make k8s-deploy进行部署,为了部署方便我整理了一份部署 yaml 如下;将该配置复制保存为文件然后运行 kubectl apply -f ...阅读全文

基于 kubernetes 的工作流任务调度工具 argo

前言argo 是一个基于 kubernetes CRD 实现的一个 Workflow(工作流) 工具,基于 kubernetes 的调度能力实现了工作流的控制和任务的运行,同时提供了一个 UI 来方便我们查看任务的进程和详情等等;因为基于 kubernetes CRD 来进行 Workflow 的配置,所以我们使用标准的 kubernetes 来进行相关的配置,并可以直接 kubectl 来进行管理;在 argo 配置 Workflow 的实现中,template 是一个重要的概念,他是我们配置...阅读全文

深信服ssl

ps: 原本我是写得比较详细的,写了一大堆,结果突然有道云笔记网页版自动给我刷新了,关键是刷新过后之前写的内容啥都没有。我目前先把安装过程的简略笔记放出来吧,如果有疑问,可以下面评论给我留言,我看到就会回复。 安装坑爹 ssl easyconnect 的公司vpn踩坑记录 目前去我们那个下载页面,发现是老版本,不支持这个easyconnect linux的客户端,于是只能走浏览器的applet了。 现在多数主流浏览器为了安全已经废弃并禁止了applet在浏览器上的运行。被迫选择firefox降级...阅读全文

vpn在linux ubunt16.04中安装实测笔记 2018-07-21 11:00 vpn在linux ubunt 等

ubuntu 16.04 解决有线网卡驱动Exec format error问题

前言 ubuntu 16.04的工作本,有线网卡总是出一些比较坑的问题,比如有时候能用有时候突然又不能用了,有时候开机没问题正常使用,有时候开机完全找不到有线连接,同时,个人使用习惯会经常休眠,而休眠唤醒过后,有线网就肯定不能用了.原本比较少用有线网络,这个工作本的有线网络也没有怎么管它.另外这个本也有好几年了,原本以为是网卡接口接触不良,最近公司的无线网络越来越难用,越来越慢,于是就好好看了下这个有线网卡的问题. 驱动问题 稍做检查,发现是ubuntu在安装的时候,默认装的驱动居然不是最适配的...阅读全文

www.allocmem.com 2018-05-14 12:22 www.allocmem.co 等

我理解的Linux IO模式及select,poll,epoll

前言 本文是在本人查阅部分资料,并综合了众多博客分析后,于此阐述的个人理解。若有错误,欢迎指正。 基本概念 用户空间和内核空间 操作系统核心-内核负责处理用户程序和硬件之间的驱动交互。内核是在用户程序(进程)和硬件之间一个中枢。目地:专门负责用户进程和硬件之间的交互,用户程序必须使用内核才能和计算机底层硬件进行交流。为了保证内核的安全,于是将内存划分开,比如针对linux 4G的内存空间,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空间,而将较低...阅读全文

www.allocmem.com 2018-04-21 13:30 www.allocmem.co 等

在kubernetes集群上使用istio遇到的问题

前言 按照官方文档安装完成,并检查安装好以后。部署官方示例bookInfo,以及插件grafana,zipkin,promeuthes。本以为后面的使用会十分顺畅,结果不尽人意,发现把测试环境的一个用户中心微服务交给istio管理的之后,居然其他微服务和此为服务之间完全无法相互调用了。后面发现了三个坑。 QA istio的微服务如果需要调用外部的http或者grpc等服务,需要使用Egress(意思是出口流量管理的允许),这种情况可参考https://zhuanlan.zhihu.com/p/3...阅读全文

www.allocmem.com 2018-04-20 18:33 www.allocmem.co 等

kubernetes下搭建harbor企业级docker仓库

前言 harbor是由vmware开源的企业级docker repository,提供私有仓库,安全认证,权限管理,漏洞扫描及仓库复制等多种功能,因为之前搭建的harbor在线上环境存在各种各样的问题(之前搭建的方式目前发现已被官方宣布弃用https://github.com/vmware/harbor/blob/master/docs/kubernetes_deployment.md,如ui显示不正常,权限认证不正常),于是近期抽空用官方推荐的helm方式对harbor进行重新部署,并替换掉线...阅读全文

www.allocmem.com 2018-03-27 22:33 www.allocmem.co 等

[转]Kubernetes环境下的各种调试方法

作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源。 本文介绍在Kubernetes环境下的调试方法 启动单个容器 不使用Pod或Replication Controller,启动单个容器: $ kubectl run webserver --image=nginx 想更改镜像,又不想升级版本? 每次修改之后,需要更新镜像的版本也好烦人啊。每次构建出新的镜像,Push到Docker Registry时,可以使用一个固定的...阅读全文

www.allocmem.com 2018-03-03 10:33 www.allocmem.co 等