自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

echo_bright_的博客

计算机网络基础/ Linux网络编程

  • 博客(223)
  • 资源 (2)
  • 收藏
  • 关注

原创 Docker 是什么

本文首发自公众号「LinuxOK」,ID为:Linux_ok,关注公众号第一时间获取更新,分享记录的职场开发过程中所见所感。Docker 是一个用 GO 语言实现的开源项目,它可以将应用程序和程序的依赖打包成一个镜像,镜像交付到用户手里可以直接运行,成为一个容器。每个容器都是一个瘦身过后的简易版本的 Linux,它相当于集装箱。容器所处的环境(操作系统以及操作系统底层)相当于货船,程序的表现只跟容器有关,相当于集装箱内的东西只跟集装箱有关,跟集装箱所处的货船无关。1、Docker 解决了什么问题.

2022-05-26 23:25:20 417 1

原创 Linux 进程状态

Linux 进程状态是平时排查问题、程序稳定性测试的基础知识,查看进程状态的常用工具有 top 和 ps。以 top 的输出为例:S 列(Status)表示进程的状态,图中可见 D、R、S 状态,实际工作中,你会遇到的状态还会很多,它们及代表意义如下:R:Running / Runnable,表示进程在 CPU 的就绪队列中,正在运行或正等待运行;D:Dick sleep,表示不可中断睡眠状态(Uninterruptible sleep),一般说明进程正跟硬件交互中,交互过程不允许被其他进程中断;

2022-05-12 08:00:00 1938

原创 Linux 平均负载

平均负载?如何理解?

2022-05-07 23:24:06 1934

原创 Linux CPU 使用率

CPU 使用率指的是以百分比的形式表示的单位时间内 CPU 使用情况。那它具体是怎么计算出来的,有哪些相关指标,这还得从 Linux 系统的时间片轮说起。1、Linux 时间片轮Linux 在宏观上可以在同时执行多个程序,但是从微观上看,一个 CPU 同一时问内是只能处理一个程序,那么在存在多个待执行程序的当下,系统如何公平处理?这就需要时间片轮来使得每个程序轮流执行。简单来说,时间片就是 CPU 分配给各个程序的时间,使得各个程序从表面上看是同时进行的。那一个时间片是多久,如何衡量呢?这就需要引入节拍

2022-04-27 20:47:48 3174

原创 字符串和字符串标准库

1、简介编码方式计算机的视角,世间万物不过是一串又一串的二进制字节流,以人类认识的字符为例,每一个字符串就必须有与之对应一个二进制码,这就叫做编码。然而在发明计算机时,发明者们只考虑到计算机处理的是小写字母和大写字母,以及一些特殊字符,这些加起来不超过128个,所以采用1字节(0-255)空间大小来编码绰绰有余,这就是经常听到的ASCII码;‘a’对应的ASCII码为97,‘b’对应的ASCII...

2020-02-13 17:30:16 1669

原创 初识Lua语言

Lua语言从一开始就被设计为能与c/c++及其他常用语言开发的软件集成在一起使用的语言。Lua语言作为一门胶水语言,支持组件化的软件开发方式,通过整合已有的高级组件可以轻松构建新的应用。在软件中台化开发模型中,Lua势必会扮演十分重要的角色。当然,Lua还有其他特性和优点, Lua的运用场合也有其他,这里就不再赘述,接下来进入正题。1、Lua解析器学习Lua语言还是从helloworld开始...

2020-02-13 17:12:34 8091 7

原创 域名的结构

通常我们称形如"www.sina.com.cn"是一个域名,但从严格意义上讲,"sina.com.cn"才被称为域名(全球唯一),而"www"是主机名。"主机名.域名"称为完全限定域名(FQDN)。一个域名下可以有多个主机,域名全球唯一,那么"主机名.域名"肯定也是全球唯一的。以"sina.com.cn"域名为例,一般管理员在命名其主机的时候会根据其主机的功能而命名,比如网站的是www

2019-01-31 15:15:11 21421

原创 Linux系统上的rsyslog服务

项目中运用到了syslog的远程打印,初次接触,抽空了解如下。Linux中用来实现日志功能的服务为rsyslog,在centOS5及更早版本中使用的是syslog,rsyslog是syslog的增强版本。rsyslog一般默认都会安装且设置为自动启动。服务控制命令为:$ service rsyslog restart(或start、stop)rsyslog的配置文件为/etc/rsyslo...

2019-01-30 11:32:55 3702

原创 IP编址和子网划分

早,今天是农历十二月二十四,小年到了。上班路上明显感觉人少了很多,公车一点都不挤了,爽!稍微总结了下子网划分相关,很基础的东西了。IPv4地址空间被分为了不同的的类型,以划分不同的地址空间。如下图所示:实际上只有A、B、C类地址才真正被互联网使用,D类地址常用于组播,E类地址则是试验性的、未分配的地址范围。下面看3个特殊的IP地址:(1)网络地址0网络地址0不作为IPv4可路由地址。在...

2019-01-29 09:08:17 1226 1

原创 常见的DoS攻击

拒绝服务攻击DoS(Denial of Service):使系统过于忙碌而不能执行有用的业务并且占尽关键系统资源。它是基于这样的思想:用数据包淹没本地系统,以打扰或严重阻止捆绑本地的服务响应外来合法的请求,甚至使本地系统崩溃。实现Dos攻击,常见的方式有:TCP SYN泛洪(SYN Flood),ping泛洪(ping-Flood),UDP泛洪(UDP-Flood),分片炸弹(fragmentat...

2019-01-26 17:06:24 64173 3

原创 system函数与信号

使用在写在2019年来临前的倒数0.5小时的system_test()函数来调用如下loop_echo程序:#include <stdio.h>#include <string.h>#include <signal.h>#define BUFSZ 1024static void handler(int sig){ printf("<.q&...

2019-01-16 19:23:46 1098

原创 写在2019年来临前的倒数0.5小时

本来这篇文章是晚饭前要发表的,想完整的把system()函数和Linux系统上的信号梳理清晰,不料傍晚有点事情离开了一会儿,回来后又在楼下换了个新发型,耽误了好多时间,回来时已经是11点了。迅速洗澡洗衣服,把中午写到一段落的这篇文章发表出来:这是2018年最后1篇博文,先把system()基础梳理清晰,然后2019的第1篇文章就继续system()和信号的关系。匆匆2018年就这样要过去了,...

2018-12-31 23:43:36 1662 5

原创 Linux系统调用的原子性

1、原子(atomicity)操作的概念执行流程所要完成的各个动作是不可中断的操作就叫原子操作。所有系统调用都是以原子操作方式执行的,内核保证了某系统调用中所有步骤作为独立操作而一次性执行完毕,中间不会被其它线程、进程所中断。2、竞争状态竞争状态是指操作共享资源的两个进程或线程,其结果取决于一个无法预期的顺序,即这两个进程或线程获得CPU使用权的先后顺序。两个例子说明原子操作的重要性:3...

2018-12-01 20:55:26 3581

原创 UNIX/Linux历史简介

今天是2018年12月01日,我正式住入新租的房子。陆陆续续搬了一个星期的东西,倒不是因为东西多,只是太纵容自己的惰性了,这不能够!新的住处间隔旧住处只是差了一条街道,走楼梯8楼,虽然出入辛苦点,但是光线还算充足,性价比差强人意吧。今天还是公司研发部门每季度团建的日子,我们去爬了深圳塘朗山,还不错,这是我在深圳继莲花山、梧桐山后爬的第3座山,适合慵懒的程序员。晚饭就去吃佛山烧仙鸡、烤鱼等等,还不...

2018-12-01 20:39:19 1984

原创 Linux策略路由

前面讲的路由规则都是基于目标IP地址为匹配依据设置的路由规则,策略路由则更加灵活,它可以根据多个参数来配置路由。假设如下的使用场景:在192.168.10.0子网中,除了主机192.168.10.123要访问因特网时是通过电信运营商(192.168.20.0/24)之外,其他主机都使用移动运营商(192.168.30.0/24)。这就需要:(1)在路由器Route3配置普通路由,使得数据包从...

2018-10-07 20:00:05 2166

原创 Linux上静态路由

网络环境如下:PC机192.168.10.12/32要往192.168.80.11/32发送数据包,中间经过两个中转路由器,分别为路由器1和路由器2。每个路由器有两个网卡,分别连通两个不同的子网。路由器采用centos7代替。要想实现PC1和PC2的通信畅通,需要:1 两台linux设备启动linux的路由转发功能默认情况下linux系统是不器用转发功能的,即它只能发送/接收数据包,而...

2018-09-24 23:53:01 1850

原创 路由是什么

中秋节公司放假3天,第一天去公司加班,第二天宅了一天,今天第三天,也是中秋节,还是继续宅着…言归正传,本文站在初学者的角度,尽量通俗的讲解什么是路由,它有什么作用。如下网络拓扑图,交换机0所在的网段为192.168.1.0/24,交换机1所在网段为192.168.2.0/24,且各自有2台主机:假设192.168.1.10/32的PC0要跟192.168.2.11/32的PC4通信,如何实...

2018-09-24 17:59:52 38678 12

原创 STL典型使用总结--deque类模板

deque即双端队列,同样采用模板类实现,支持在头部/尾部插入和删除元素:deque.push_back(elem); //在容器尾部添加一个元素deque.push_front(elem); //在容器头部插入一个元素deque.pop_back(elem); //删除容器最后一个元素 deque.pop_front(); //删除容器第一个元素示例:#include...

2018-09-24 14:59:48 655

原创 STL典型使用--vector类模板

vector是将元素放在一个动态数组中加以管理的容器,vector可以随机存取元素(用[]操作符或at()直接存取),也支持迭代器存取元素;vector在尾部添加或移除元素十分高效,但是在中间或者头部插入/移除元素会比较费时。1. 增加/删除vector内的元素vector采用类模板实现,从而实现了算法和数据类型的分离,因此vector可以存放任何类型的元素(一个vector里的元素只能是一种...

2018-09-23 21:32:48 1913

原创 STL典型使用总结 - string类

1. string类的初始化string s1 = "abcd";string s2("abcd");string s3 = s2; //通过调用s3的拷贝构造函数来初始化对象s3string s4 = (3, 'a'); //s4 = "aaa"2. string类的遍历s

2018-09-18 00:14:13 301

原创 MAC地址

在上文我们知道了IP地址是什么,接下来来了解Mac地址。在Linux命令ip addr(简写ip a)的输出结果中(以eth0为例),在link/ether后的00:0c:29:2e:67:cf即为Mac地址,它是一张网卡的物理地址,用十六进制数表示,占据6字节大小。Mac地址号称全球唯一,即不存在两个网卡有相同的Mac地址,网卡自生产后就带着该地址。这时或许有人会问,既然如此,网络通信全...

2018-09-11 23:00:09 1070

原创 IP地址

工作原因,需要有扎实的网络基础知识,所以接下来总结关于计算机网络的相关知识,分享给各位有需要的初学者。首先从IP 地址说起…Linux 操作系统上有两个命令可查看IP地址:ifconfig和ip addr。前者数是属于net-tool,这类工具原先起源于BSD TCP/IP工具箱,旨在配置老式Linux内核的网络功能。自2001年以后,它在Linux社区的发展就止步不前了: 后者则属...

2018-09-11 00:02:33 531

原创 VRRP协议基础

VRRP(Virtual Router Redundancy Protocol)即和可靠,它是一种容错协议,它保证当用户设备的下一跳路由器失效时,可以及时的由另一台路由器来替代,从而保持通讯的连续和可靠。VRRP通过交互报文的方法将多台路由器模拟成一台虚拟路由器,网络上的主机与虚拟路由器进行通讯。一旦VRRP组中的某台物理路由器失效,其它路由器自动接替工作。1、VRRP相关概念 (1) ...

2018-08-28 23:26:23 13384 1

原创 c++11的一些新特(持续补充)

1. auto关键字在c语言中,auto用于修饰局部变量,也称之为自动变量:void func(){ auto int a; //等价于int a}在c++11中,auto根据用户的初始化内容自动推导其类型:#include <iostream>#include <string>#include &am

2018-08-27 23:37:29 492

原创 iptables四表五链

如下是具有双网卡的Linux服务器,数据入口网卡是eth0,数据出口网卡是eth1: 而Linux**防火墙**的工作区域为下图中的绿色阴影部分(防火墙的概念这里不赘述): Linux系统中防火墙功能的两大角色:iptables和netfilter。iptables是Linux系统下应用层内置控制防火墙的工具,netfilter则是防火墙功能的具体实现,是内核空间的功能模块。所谓的ip...

2018-07-20 10:44:44 24115 2

原创 登录oracle的几种方法

1、在oracle服务端登录oracle的方法 oracle的登录工具是sqlplus。安装了oracle服务端,默认是会将服务端和客户端的登录工具sqlplus都安装的。 (1)管理员登录$ sqlplus / as sysdba在这里不需要输入密码,因为在安装oracle时,oracle的管理员用于就是当前登录的用户。 (2)scott用户登录$ sqlplus sc...

2018-06-12 17:32:15 31261 1

原创 oracle的体系结构

1、oracle的体系结构 oracle的体系结构的详细文章在网上有许多,推荐https://blog.csdn.net/sinat_33363493/article/details/51782609。这里只是简单粗略介绍,只适合初学者。 oracle体系由数据库文件(db file)、实例(instance)、客户端软件(client)组成。基本结构为: 一般情况,一个数据库由一个实例...

2018-06-12 16:30:10 973

转载 ubuntu14.04上(32bit)安装oracle 11g

参照Morphling0809的文章https://blog.csdn.net/bible1/article/details/52933438?locationNum=7&fps=1 参照蓝色封印的文章http://blog.sina.com.cn/s/blog_4f02f6020102v049.html 参照OscarChen的文章:https://blog.csdn....

2018-06-12 13:54:56 449

原创 线程同步(Linux系统)

线程同步中的“同步”并不是指步调或者节奏一致,而是谁先执行、谁后执行的概念。CPU对多线程的调度,使得线程同步在多线程访问共享资源时尤为重要,线程同步也是多线程编程中的难点所在。在Linux系统中线程同步的主要实现手段有:互斥锁、读写锁、条件变量、信号量。1. 互斥锁互斥锁是线程同步最常见的技术手段,它也被称为互斥量,实质上它就是一个pthread_mutex_t类型的变量。相关的使用...

2018-06-04 23:31:17 437

原创 ubuntu1404上搭建c++和MySQL开发环境

MySQL数据库编程技术是Linux c++程序员必备技能。本文将在虚拟机的ubuntu1404环境上搭建MySQL的开发环境,内容涉及: MySQL服务端和客户端安装 MySQL编程的简单测试 参考文章: https://my.oschina.net/u/3818901/blog/1785667 https://blog.csdn.net/qq_25730711/...

2018-06-01 15:45:51 821

原创 使用VisualStudio2017开发Linux/c++程序(下)

基于前面的环境及工程构建解决方案:主程序 + 静态库 + 动态库,并在主程序中调用静态库和动态库的函数。(参照文章https://www.cnblogs.com/dongc/p/6599461.html和http://www.mamicode.com/info-detail-1983443.html)一、创建解决方案1、右键解决方案->添加->新建项目 2、 右键stat...

2018-05-14 11:48:11 4317 3

原创 使用VisualStudio2017开发Linux/c++程序(上)

环境 Windows10_x64 CentOS7_64(虚拟机)1、 Windows系统中安装VisualStudio2017 2、 Linux系统中安装gcc、g++和gdbserver 3、 创建Linux/c++项目 3.1创建app_test解决方案 3.2 添加新建项目main 这样vs2017会自动生成main.cpp文件。点击“生成”-...

2018-05-11 18:01:46 6440 3

原创 popen函数代替system函数

system()函数的原型为:int system(const char *command);函数的返回值表示system()函数调用的执行结果,成功返回0,失败返回-1并设置errno为错误代码。需要注意的是该函数并不能获取command命令的执行结果。tmp.txt的内容为:helloworld#include <stdlib.h>#include &...

2018-04-27 16:46:02 4276 3

转载 编程获取cpu、内存和硬盘的使用率

说明:文章代码整理自网上资料。1. 获取cpu使用率#include <stdio.h>#include <unistd.h>/* cpu_info_t结构体存放cpu相关信息 */typedef struct _cpu_info{ char name[20]; unsigned int user; unsigned int...

2018-04-19 14:44:34 3051 5

转载 编程以获取/设置Linux系统的网络信息

说明:文章代码整理自网上其它资料。1. 获取IP地址、子网掩码地址、Mac地址、广播地址#include <stdio.h>#include <string.h>#include <net/if.h>#include <sys/ioctl.h>#include <arpa/inet.h>#include <...

2018-04-19 14:30:45 325

原创 Linux下/var/run/目录下的pid文件

参考文章Linux下/var/run目录下的pid文件作用。linux系统中/var/run/目录下的*.pid文件是一个文本文件,其内容只有一行,即某个进程的PID。.pid文件的作用是防止进程启动多个副本,只有获得特定pid文件(固定路径和文件名)的写入权限(F_WRLCK)的进程才能正常启动并将自身的进程PID写入该文件,其它同一程序的多余进程则自动退出。编程实现: 调用fcntl...

2018-04-10 08:55:16 5152

原创 gdb调试的常用命令

gcc a.c b.c -o app -g -g:会保留函数名和变量名于app中1、 启动gdb调试功能 (1)gdb app (2)给程序传参:set args xx1 xx22、 查看代码(list/l) (1)查看当前文件:ll 行号l 函数名(2)查看非当前文件:l 文件名:行号l 文件名:函数名(3)设置显示的行数set ...

2018-03-15 10:12:44 597

原创 Linux环境下静态库和动态库

1. 库的引入  c/c++项目的源码文件的组成一般为.c/.cpp和.h文件,可能你写的函数要供其他人使用,但你不能把你写的源码提供给别人,库就很好的解决了这个问题。gcc的-c编译选项可以将c/c++源文件只编译不链接,即生成.o文件。.o文件和.c/.cpp文件实际上都是源代码文件,只是前者是二进制格式的(人眼无法识别其内容),后者是文本格式的(人眼可以识别其内容),对于计算机来说前者后...

2018-03-06 09:49:48 566

原创 队列(c++实现)

  队列的特点是先进先出,跟栈的c++实现类似,队列的c++实现同样有两种方式:   Queue是一个接口类,封装了队列相关的所有操作://Queue.h#ifndef __QUEUE_H__#define __QUEUE_H__#include <exception>template<typename T>class Queue{public:...

2018-03-01 14:41:28 1307

原创 栈(c++实现)

  栈是一种特殊的线性表, 线性表是具有相同类型的n(n>=0)个数据元素的有序(中间不能空位置)有限序列。  对栈的操作(增/删/读)只能通过栈的一端进行,允许操作的一端称之为栈顶,不允许操作的一端称为栈底。栈的特性为先进后出。c++实现栈,可采用如下的设计思路:   Stack是一个接口类,封装了栈的所有操作://Stack.h#ifndef __STACK_H...

2018-03-01 10:57:31 11351 1

Linux内核链表(移植完成)

linux内核链表设计的得十分巧妙,代码将其从内核代码总移植出来,可适用于应用程序软件。

2018-02-07

空空如也

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

TA关注的人

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