自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linux知识积累

C/C++ linux

  • 博客(29)
  • 收藏
  • 关注

转载 双网卡绑定-bond

下述操作均在centos7.6系统下测试。

2023-10-18 23:01:45 94

转载 网络访问控制(四)--Radius协议

RAIDUS是一个承载认证、鉴权的协议,配置希望认证链路的网络访问服务和认证服务器之间的信息。1)RADIUS遵循远程认证拨号用户服务2)RADIUS是应用的AAA协议,例如:网络访问和IP移动性3)可在本地和移动下工作4)使用PAP、CHAP和EAP协议认证用户5)文本文件、LDAP服务、鉴权数据库方式查看6)在认证之后,服务参数传回给NAS7)当会话开始和结束时通知。数据将用于账单或统计目的8)SNMP用于远程监控9)可以作用代理。

2023-10-16 22:59:40 371

转载 网络访问控制(三)--wpa-supplicant

(3)“l2_packet.h”和“l2_packet_linux.c”主要用于实现PF_PACKET socket接口,通过该接口,wpa_supplicant可以直接将802.1X packet发送到L2层,而不经过TCP/IP协议栈。该接口主要在文件”wpa_ctrl.h”,“wpa_ctrl.c”,“ctrl_iface_unix.c”,“ctrl_iface.h”和“ctrl_iface.c”实现。wpa_driver_nl80211_event_receive函数。

2023-10-16 22:58:19 150

转载 网络访问控制(二)-EAP和EAPOL协议

当认证系统工作于中继方式时,认证系统与认证服务器之间也运行EAP协议,EAP帧中封装认证数据,将该协议承载在其它高层次协议中(如 RADIUS),以便穿越复杂的网络到达认证服务器;当认证系统工作于终结方式时,认证系统终结EAPoL消息,并转换为其它认证协议(如 RADIUS),传递用户认证信息给认证服务器系统。如果认证失败,则流程到此结束;802.1x协议在实现整个认证的过程中,其三个关键部分(客户端、认证系统、认证服务器)之间是通过不同的通信协议进行交互的,其中认证系统和认证服务器之间是EAP报文。

2023-10-16 22:52:05 613

转载 访问控制和认证协议--802.1X(一)

在设定重传时间的时候,考虑网络的实际环境,通常会认为Authenticator和Supplicant之间报文丢失的几率较低且传送延迟低,因此一般通过一个超时计数器来设定,默认重传时间为30秒。Authenticator在收到Supplicant发送的EAPOL-Start报文后,会发送EAP-Request/Identity报文响应用户请求,要求用户发送身份标识,这样就启动了一个认证过程。如果端口状态为已认证状态,则当Authenticator发起重新认证时,若通过认证,则该端口的状态保持不变;

2023-10-16 22:47:54 86

转载 Linux安全机制

通过替换安全服务器,可以支持不同的安全策略。强制访问控制(MAC,Mandatory Access Control)是一种由系统管理员从全系统的角度定义和实施的访问控制,它通过标记系统中的主客体,强制性地限制信息的共享和流动,使不同的用户只能访问到与其有关的、指定范围的信息,从根本上防止信息的失泄密和访问混乱的现象。● 抗攻击,防火墙系统直接暴露在非信任网络中,对外界来说,受到防火墙保护的内部网络如同一个点,所有的攻击都是直接针对它的,该点称为堡垒机,因此要求堡垒机具有高度的安全性和抵御各种攻击的能力。

2023-10-15 22:07:33 109

转载 【无标题】

刚参加工作时,参与的项目代码量比较大,涉及到多进程,多线程等内容,所以在使用GDB时,主要还是分析程序在发生crush时产生的core文件,通过core文件可以定位程序发生crash时的堆栈信息,并且,对于程序的死锁,用GDB定位特别方便。前段时间,写一个不是太大的程序,写一个不是太大程序,并且没有涉及太多线程或多进程之间的处理,对于程序出现的问题,还是使用加log和查看core文件的方法,偶然间发现用GDB运行调试程序,效率特别高,所以记录了一些运行调试的基本使用方法。运行程序,run命令简写。

2023-10-13 23:04:05 22

转载 Linux的nm查看动态和静态库中的符号

功能列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。使用nm [option(s)] [file(s)]有用的options:-A 在每个符号信息的前面打印所在对象文件名称;-C 输出demangle过了的符号名称;-D 打印动态符号;-l 使用对象文件中的调试信息打印出所在

2016-07-10 20:58:13 15422

转载 GDB动态库搜索路径

笔记:当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实际上,set sysroot是set solib-

2016-07-10 11:15:52 4415 1

转载 solib-absolute-prefix 和solib-search-path的区别

solib-absolute-prefix 和solib-search-path是 gdb比较常用的选项,用来设置符号文件的位置。那么,它们有什么区别呢?solib-absolute-prefix设置的是被搜索文件路径的前缀,solib-search-path设置的是被搜索文件的路径。solib-search-path可以有多个路径,中间按用:隔开, solib-absol

2016-07-10 10:58:31 571

转载 Linux系统调用--getrlimit()与setrlimit()函数详解

功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include int getrlimit(int resource, s

2016-07-10 10:49:59 411

转载 linux比较两个文件是否一样(linux命令md5sum使用方法)

1、简介MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。 在linux或Unix上,md5sum是用来计算和校验

2016-07-07 21:37:40 9815

转载 采用dlopen、dlsym、dlclose加载动态链接库【总结】

1、前言  为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系,需要进一

2016-07-07 21:30:49 286

转载 Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so

1、nm [options] file    列出file中的所有符号    [option]     -c   将符号转化为用户级的名字     -s   当用于.a文件即静态库时,输出把符号名映射到定义该符号的模块或成员名的索引     -u   显示在file外定义的符号或没有定义的符号     -l   显示每个符号的行号,或为定义符号的重定义项 2、ar {d

2016-07-07 21:24:45 375

转载 MPEG2相关原理概述

MPEG是运动图像专家组(Moving Picture Experts Group)的简称,其实质上的名称为国际标准化组织(ISO)和国际电工委员会(IEC)联合技术委员会(JTC)1的第29 分委员会的第11工作组,即ISO/IEC JTC1/SC29/WG11,成立于1988年。其任务是制定世界通用的视音频编码标准。因为,广播电视数字化所产生的海量数据对存储容量、传输带宽、 处理能力及频谱资源

2016-06-10 21:40:39 1121

转载 C++虚基类的实现机制:笔记

在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成

2016-05-19 23:05:47 334

转载 C++虚基类的作用

虚基类的作用     当一个基类被声明为虚基类后,即使它成为了多继承链路上的公共基类,最后的派生类中也只有它的一个备份。例如:class CBase { };class CDerive1:virtual public CBase{ };class CDerive2:virtual public CBase{ };class CDerive12:public CDerive1

2016-05-19 22:04:44 280

转载 编译生成静态库文件

Lunix下编译静态库文件:.o后缀文件:编译生成的中间代码文件;.a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大;.so后缀文件:动态库文件,只是一个指向,不会合到可执行程序中,当要调用函数库的时候才使用; 用一个简单的例子阐述下在lunix环境下生成静态库文件的过程:一.   源码文件:so_test.h:void test_a();voi

2016-05-16 21:54:18 788

转载 编译生成动态库文件(方式二)

Lunix下生成动态库文件:         之前已经介绍了依靠makefile文件实现可执行文件,下面说下在源文件中指定加载的动态库文件; 一.   源码文件:datetime.h:  #ifndef __DATETIME_H #define __DATETIME_H /* 日期结构 */ typedef struc

2016-05-16 21:52:28 346

转载 编译生成动态库文件

Lunix下生成动态库文件:         之前已经介绍了.o,.a,.so文件类型的含义,.so后缀的文件是动态库文件。        下面介绍在编译过程中链接到动态库文件的方法:一.   源码文件:so_test.h:void test_a();void test_b();void test_c(); test_a.c:

2016-05-16 21:46:15 515

转载 vector容器与iterator迭代器

vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class t

2016-05-05 07:51:44 413

转载 C++模板

模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。  模板是一种对类型进行参数化的工具;  通常有两种形式:函数模板和类模板;  函数模板针对仅参数类型不同的函数;  类模板针对仅数据成员和成员函数类型不同的类。  使用模板的目的就是能够让程序员编写与类型无关的代码

2016-05-04 21:29:33 151

转载 C++分离式编译模式

1.分离编译模式的定义编辑一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件连接起来形成单一的可执行文件的过程。[1] 2.分离编译模式的由来编辑分离编译模式是C/C++组织源代码和生成可执行文件的方式。在实际开发大型项目的时候,不可能把所有的源程序都放在一个头文件中,而是分别由不同的程序员开发不同的模块,再将这

2016-04-25 21:14:48 767

转载 C++ try catch 用法

一、简单的例子首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:1    #include                                 //包含头文件2    #include3    double fuc(double x, double y)                        //定义函数4    {5   

2016-04-25 20:48:36 10125

原创 范围for语句

其形式是for(declartion: expression)statement;一个简单的实例如下:#include  #include using namespace std;using std::string;int main(){string s="hello world!";int i=0;for(auto c:s)i++;

2016-04-11 07:15:29 296

原创 String 相关的一些内容

因为某些历史的原因,也为了与C兼容,所以C++语言中的字符串字面值并不是标准库类型string的对象,切记,字符串字面值与string是不同类型。处理string中的字符可以使用其中的cctype头文件中的定义的函数。

2016-04-11 07:14:23 261

原创 nullptr介绍

#include  using namespace std; int main(){  int *p1=nullptr;int *p2=NULL;cout    return 0;  }  nullptr是C++11 新保准,相当于空指针,地址为零,和NULL相同效果。需要注意的是能将0常量赋值给指针,却不能将int  变量赋值给指针。

2016-03-31 23:06:34 1184

原创 变量定义域以及嵌套的作用域

#include  using namespace std; int main(){  int i=10;{i++;int yy=0;}cout    return 0;  }  如上程序会出现yy未定义的错误,C++中变量的作用域以大括号相隔。#include  using namespace std; int i=10;i

2016-03-31 22:54:17 526

转载 C++中extern关键字使用

chapter 1 . extern关键字的作用    extern是一个关键字,它告诉编译器存在着一个变量或者一个函数,如果在当前编译语句的前面中没有找到相应的变量或者函数,也会在当前文件的后面或者其它文件中定义,来看下面的例子。   [cpp] view plain copy// extern.cpp : Defines the 

2016-03-30 22:41:26 256 1

空空如也

空空如也

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

TA关注的人

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