自定义博客皮肤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网络编程

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

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

2020-02-13 17:30:16 610 0

原创 初识Lua语言

Lua语言从一开始就被设计为能与c/c++及其他常用语言开发的软件集成在一起使用的语言。Lua语言作为一门胶水语言,支持组件化的软件开发方式,通过整合已有的高级组件可以轻松构建新的应用。在软件中台化开发模型中,Lua势必会扮演十分重要的角色。 当然,Lua还有其他特性和优点, Lua的运用场合也有...

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

原创 欢迎关注我的个人公众号

欢迎关注我的个人公众号,在号内我会分享我的成长感悟,跟你们一起瞎扯心得。 哈哈,快来关注。 PS: 好久输出博文了,主要是太忙了。接下来在在公众号内我会持续分享之外,还是会继续在CSDN输出技术总结的文章。 ...

2019-05-12 15:00:36 334 0

原创 域名的结构

通常我们称形如"www.sina.com.cn"是一个域名,但从严格意义上讲,"sina.com.cn"才被称为域名(全球唯一),而"www"是主机名。 "主机名.域名"称为完全限定域名(FQDN)。一个域名下可以有多...

2019-01-31 15:15:11 5667 0

原创 Linux系统上的rsyslog服务

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

2019-01-30 11:32:55 856 0

原创 IP编址和子网划分

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

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

原创 常见的DoS攻击

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

2019-01-26 17:06:24 9141 0

原创 system函数与信号

使用在写在2019年来临前的倒数0.5小时的system_test()函数来调用如下loop_echo程序: #include <stdio.h> #include <string.h> #include <signal.h&a...

2019-01-16 19:23:46 459 0

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

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

2018-12-31 23:43:36 1108 4

原创 Linux系统调用的原子性

1、原子(atomicity)操作的概念 执行流程所要完成的各个动作是不可中断的操作就叫原子操作。所有系统调用都是以原子操作方式执行的,内核保证了某系统调用中所有步骤作为独立操作而一次性执行完毕,中间不会被其它线程、进程所中断。 2、竞争状态 竞争状态是指操作共享资源的两个进程或线程,其结果取决于...

2018-12-01 20:55:26 1697 0

原创 UNIX/Linux历史简介

今天是2018年12月01日,我正式住入新租的房子。陆陆续续搬了一个星期的东西,倒不是因为东西多,只是太纵容自己的惰性了,这不能够!新的住处间隔旧住处只是差了一条街道,走楼梯8楼,虽然出入辛苦点,但是光线还算充足,性价比差强人意吧。 今天还是公司研发部门每季度团建的日子,我们去爬了深圳塘朗山,还不...

2018-12-01 20:39:19 1467 0

原创 Linux策略路由

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

2018-10-07 20:00:05 1019 0

原创 Linux上静态路由

网络环境如下: PC机192.168.10.12/32要往192.168.80.11/32发送数据包,中间经过两个中转路由器,分别为路由器1和路由器2。每个路由器有两个网卡,分别连通两个不同的子网。路由器采用centos7代替。 要想实现PC1和PC2的通信畅通,需要: 1 两台linux设备...

2018-09-24 23:53:01 1116 0

原创 路由是什么

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

2018-09-24 17:59:52 16306 4

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

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

2018-09-24 14:59:48 196 0

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

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

2018-09-23 21:32:48 727 0

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

1. string类的初始化 string s1 = "abcd"; string s2("abcd"); string s3 = s2; //通过调用s3...

2018-09-18 00:14:13 139 0

原创 MAC地址

在上文我们知道了IP地址是什么,接下来来了解Mac地址。 在Linux命令ip addr(简写ip a)的输出结果中(以eth0为例),在link/ether后的00:0c:29:2e:67:cf即为Mac地址,它是一张网卡的物理地址,用十六进制数表示,占据6字节大小。 Mac地址号称全球唯一...

2018-09-11 23:00:09 310 0

原创 IP地址

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

2018-09-11 00:02:33 168 0

原创 VRRP协议基础

VRRP(Virtual Router Redundancy Protocol)即和可靠,它是一种容错协议,它保证当用户设备的下一跳路由器失效时,可以及时的由另一台路由器来替代,从而保持通讯的连续和可靠。 VRRP通过交互报文的方法将多台路由器模拟成一台虚拟路由器,网络上的主机与虚拟路由器进...

2018-08-28 23:26:23 3176 0

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

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

2018-08-27 23:37:29 257 0

原创 iptables四表五链

如下是具有双网卡的Linux服务器,数据入口网卡是eth0,数据出口网卡是eth1: 而Linux**防火墙**的工作区域为下图中的绿色阴影部分(防火墙的概念这里不赘述): Linux系统中防火墙功能的两大角色:iptables和netfilter。iptables是Linux系统下应...

2018-07-20 10:44:44 4779 0

原创 登录oracle的几种方法

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

2018-06-12 17:32:15 2457 0

原创 oracle的体系结构

1、oracle的体系结构 oracle的体系结构的详细文章在网上有许多,推荐https://blog.csdn.net/sinat_33363493/article/details/51782609。这里只是简单粗略介绍,只适合初学者。 oracle体系由数据库文件(db file)、实例(...

2018-06-12 16:30:10 715 0

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

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

2018-06-12 13:54:56 235 0

原创 线程同步(Linux系统)

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

2018-06-04 23:31:17 285 0

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

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

2018-06-01 15:45:51 474 0

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

基于前面的环境及工程构建解决方案:主程序 + 静态库 + 动态库,并在主程序中调用静态库和动态库的函数。(参照文章https://www.cnblogs.com/dongc/p/6599461.html和http://www.mamicode.com/info-detail-1983443.htm...

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

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

环境 Windows10_x64 CentOS7_64(虚拟机) 1、 Windows系统中安装VisualStudio2017 2、 Linux系统中安装gcc、g++和gdbserver 3、 创建Linux/c++项目 3.1创建app_test解决方案 ...

2018-05-11 18:01:46 4025 1

原创 popen函数代替system函数

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

2018-04-27 16:46:02 1791 1

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

说明:文章代码整理自网上资料。 1. 获取cpu使用率 #include <stdio.h> #include <unistd.h> /* cpu_info_t结构体存放cpu相关信息 */ typedef struct _cp...

2018-04-19 14:44:34 1160 3

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

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

2018-04-19 14:30:45 160 0

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

参考文章Linux下/var/run目录下的pid文件作用。 linux系统中/var/run/目录下的*.pid文件是一个文本文件,其内容只有一行,即某个进程的PID。.pid文件的作用是防止进程启动多个副本,只有获得特定pid文件(固定路径和文件名)的写入权限(F_WRLCK)的进程才能正常...

2018-04-10 08:55:16 2159 0

原创 gdb调试的常用命令

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

2018-03-15 10:12:44 227 0

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

1. 库的引入   c/c++项目的源码文件的组成一般为.c/.cpp和.h文件,可能你写的函数要供其他人使用,但你不能把你写的源码提供给别人,库就很好的解决了这个问题。gcc的-c编译选项可以将c/c++源文件只编译不链接,即生成.o文件。.o文件和.c/.cpp文件实际上都是源代码文件,只是...

2018-03-06 09:49:48 332 0

原创 队列(c++实现)

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

2018-03-01 14:41:28 693 0

原创 栈(c++实现)

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

2018-03-01 10:57:31 5933 0

原创 移植Linux内核链表

  Linux内核源码中的链表是一个双向循环链表,该链表的设计具有优秀的封装性和可扩展性。本文将从2.6.39版本内核的内核链表移植到Windows平台的visual studio2010环境中。链表的源码位于内核源码的include/linux/list.h中。移植的步骤如下:   (1)去除...

2018-02-07 16:53:13 382 0

原创 offsetof和container_of

背景:在项目中,我将设备的配置信息封装在一个结构体中,并用一个unsigned int的变量上的某些位标志来对应某些配置项,该结构体需要被保存在本地配置文件中,程序启动时需要加载配置文件上记录的该结构体的配置信息,若不存在则将该结构体默认配置信息写入文件。在程序运行期间,若用户改变了某些配置,标志...

2018-02-04 17:00:29 330 0

原创 双向链表(c++实现)

单向链表的缺点:逆序访问单向链表中的数据元素,效率低下。   若从头节点开始依次访问单向链表的元素,可使用m_current游标,但是逆序访问,只能通过下面代码实现访问: int main(void) { LinkListint> ll; for (int i = 0;...

2018-02-02 18:14:36 1578 0

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