Tango's Blog

总之岁月漫长,但却值得等待。

NGINX系列之配置文件

nginx是一款高性能的服务器,其核心配置可配置,存储在nginx.conf文件中,本文简要介绍各参数的含义。 ######Nginx配置文件nginx.conf##### #nginx运行的用户名和用户组 user root root; #nginx工作进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | in...

NGINX系列之进程模型

在上一节中分析了nginx主流程,在mian函数中完成服务器的配置文件解析以及模块初始化工作后,根据系统设置进入单进程或者多进程模式,本文将分析nginx进程模型。 进程模型简介 在web服务中,随着用户基数增长,技术演进的趋势是提高系统的并发性和稳定性,一种方式是通过扩展机器的个数实现负载均衡,通过多台机器的量变引起质变,提高系统的并发性,显然这种方式资源利用率较低,成本较高;第二种方...

NGINX系列之MAIN函数

近期在系统学习Nginx相关源码,针对nginx进程模型、事件处理模型、配置以及扩展开发等诸多方面希望能够沉淀一些东西,故针对上述方面整理一系列博客,既然是源码分析,那就首先从main函数开始吧。 核心数据结构 全局变量cycle数据结构 ngx_cycle_s 变量是nginx中贯穿始终的全局变量,其存储在系统运行过程中的所有信息,包括配置文件信息、模块信息、客户端连接、...

Docker容器之网络模式

四种网络模式简介 docker容器提供四种网络模式,可以在启动容器时通过--net=[模式名]进行指定: host模式 host模式即在创建容器时不进行network namespace隔离,容器与宿主机保持在同一个network namespace中,宿主机IP地址即是容器IP地址,但是其文件系统、进程树等namespace仍然与宿主机环境保持隔离。 比如我们在机器10.1...

Docker容器之Flannel原理

根据官网的描述,flannel是一个专为kubernetes定制的三层网络解决方案,主要用于解决容器的跨主机通信问题。 概况 首先,flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置,其中最主要的内容为设置集群的网络地址空间。例如,设定整个集群内所有容器的IP都取自网段“10.1.0.0/16”。 接着,flannel在每个主机中运行flanneld作...

C++对象内存模型

最近看了《深入理解C++对象模型》,综合学习C++对象的内存布局,本文基于个人理解和程序测试绘制C++对象模型内存布局,如有错误,还请批评指正。 1.前言 首先,相较于C语言,C++语言并没有额外增加内存消耗(确切说,在没有虚函数情况下)。 对于一个C++类对象,每个对象有独立的数据成员(非static),但是内存中成员函数只有一份,该类的所有对象共享成员函数。 static数据成员属于...

C++经典面试题

linux常考命令 抓包工具 # tcpdump 查看进程通信的信号量、共享内存、管道情况 # ipcs/ipcrm 查看cpu信息 # cat /proc/cpuinfo 查看内存信息 # cat /proc/meminfo 查看硬盘信息 # df -lh 更详细的信息 # cat /proc/scsi/scsi 查看网卡信息...

负载均衡原理

最近在学习负载均衡原理,看了大量的文章和相关知识,有很大的收获,做一个简要总结,一来回顾自己所学的知识,二来对所看所学知识整理,供后来者参考借鉴,如有错误的地方,还请指出,学生阶段,考虑的内容尚有欠缺之处。 1.什么是负载均衡 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服...

Linux每日学之命令行常用快捷键

涉及在Linux命令行下进行快速移动光标、命令编辑、编辑后执行历史命令、Bang(!)命令、控制命令等。让basher更有效率。 常用 ctrl+左右键:在单词之间跳转 ctrl+a:跳到本行的行首 ctrl+e:跳到页尾 Ctrl+u:删除当前光标前面的文字 (还有剪切功能) ctrl+k:删除当前光标后面的文字(还有剪切功能) Ctrl+L:进行清屏操作 ...

版本控制之Git常用命令

Git工作空间介绍 工作空间 见名知意,即是我们所编辑文件所在的目录,在使用 git add命令之前所做的修改都是存在于该文件目录下。可以通过命令 git add 命令将工作空间中所做修改存储到暂存区。 暂存区 见名知意,即是暂时存放文件修改记录的目录,存在于.git版本库中,git add命令之后所做的修改都是存在于该文件目录下。 版本库 见名知意,即是代码版本存储目录,在git co...