自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小柒的秃头之路

十年编程两茫茫,工期短需求长。千行代码,Bug何处藏!

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

原创 freeswitch-02

拨号计划是freeswitch中至关重要的一部分,主要作用是对电话进行路由,决定和影响通话的流程。系统默认提供的配置文件包含三个Context,分别是default、features和public。default是默认的Diaplan,注册用户用来通电话。public用于接收外来呼叫。

2023-09-26 16:28:56 409

原创 freeswitch-01

用户设备与端局交换机之间,以及交换机与交换机之间需要进行通信。包含信息有用户、中继线状态、主叫号码、被叫号码、中继路由的选择等。消息即信令。信令主要传输一些控制信号,而通信双方需要听到的是对方的语音数据,这些语音数据就称为媒体。基于IP网提供语音及多媒体业务的网络体系架构。

2023-09-26 16:28:06 182

原创 Linux:文件传输(2)

(3)为了防止客户端和服务器端不能交互,所以当每次执行命令时候,客户端给服务器端发送"ok#…(1)ls命令执行:服务器端执行ls命令,服务器端fork复制产生子进程,在把子进程替换成ls(exec),服务器端发给客户端。(4)无名管道:子进程把输出信息写入无名管道中,父进程从无名管道中把信息读出来,然后发送给客户端,客户端在打印出来。(5)服务器端:输入客户端发送过来的命令,然后解析命令。先创建管道,在复制一下,管道就会被自动复制到子进程中。(2)rm命令执行:fork客户端发给服务器端。

2023-09-26 16:27:30 292

原创 Linux项目:文件传输

文件传输:在两台计算机之间进行文件的传递客户端与服务器连接,客户端与服务器端不在同一个主机之上,要求客户端可以查看服务器端有哪些文件,删除文件,移动文件,归类文件,增添文件夹;下载文件;上传文件,断点续传。...

2023-09-26 16:27:08 1149

原创 C++:线上课程2_12(多态和虚函数)

文章目录@[TOC](文章目录)一、多态1.多态定义2.多态分类2.1编译时的多态2.2运行时的多态二、虚函数1.定义2.读入数据总结一、多态1.多态定义多态性是面向对象程序设计的关键技术之一。若程序设计语言不支持多态性,不能称为面向对象的语言。利用多态性技术,可以调用同一个函数名的函数,实现完全不同的功能。2.多态分类2.1编译时的多态(早期绑定)名字粉碎技术实现通过函数的重载和运算符的重载来实现的示例:int Max(int a, int b){ return a > b ?

2023-09-26 16:26:16 166

原创 Linux 15:IO复用方法

文章目录1. I/O复用方法1.1 I/O复用方法图示1.2 使用I/O复用技术条件2. select2. poll系统调用2.1 pollfd结构体定义3. epoll3.1 epoll特点1. I/O复用方法I/O复用使得程序能同时监听多个文件描述符,这对提高程序性能至关重要。1.1 I/O复用方法图示1.2 使用I/O复用技术条件TCP服务器同时要处理监听套接字和连接套接字。服务器要同时处理TCP请求和UDP请求。程序要同时处理多个套接字。客户端程序要同时处理用户输入和网络连接。

2023-09-26 16:25:37 224

原创 C++项目:游客黑名单系统

实现语言:c/c++服务模型:client – server第三方库:libevent,json,mysql客户端模型:分布式协同处理+多线程服务器模型:半同步半异步+MVC游客黑名单项目用于记录各个景区内出现不文明行为的游客信息。当游客需要进入景区时候需要进行验证是否存在于黑名单之上,如果已被列入黑名单,景区有权拒绝该游客进入。项目客户端主要负责黑名单信息的增删改查操作,获取到操作指令之后将指令发送给服务器。

2023-09-26 16:24:37 87

原创 C语言 6:例题

定义的大小为100的整型数组,使用随机函数给数组元素赋值,数值的范围是1-100,并且不允许重复。定义数组:<类型>数组名【<元素数量>】,必须为>0的整型常量表达式。2.数组:元素类型+元素数量(开辟空间大小)4.判断是否为闰年,并且输出每个月的天数。方法二:switch语句。

2023-09-26 16:23:47 73

原创 安装opensips-03

安装opensips

2023-09-26 16:17:46 336 1

原创 opensips-02

opensips是一种开源的,GPL的,多用途的SIP服务器,能够执行大量与SIP相关的功能,诸如sip服务器、sip代理/路由器、即时消息服务器、存在服务器、SIP重定向服务器、SIP负载平衡器或SIP调度器、SIP背对背用户代理、呼叫排队系统、SIP IP网关、SIP媒体控制器、SIP应用服务器等。通过以下三个功能进行自我定义:(1)性能:有巨大的吞吐量(2)功能丰富:提供与SIP协议、SQL或NoSQL DB操作、AAA集成、路由算法、管理和控制等。

2023-03-30 10:51:33 1309 1

原创 opensips-01

会话发起协议,应用层的信令控制协议,独立于传输层。SIP是一种基于文本的协议,它的语法和消息非常类似于HTTP协议,不同之处在于SIP不仅可以用TCP,也可以用UDP封装。

2023-03-30 10:31:16 1436

原创 算法与数据结构:二叉树的遍历

文章目录1. 二叉树的前序遍历(144)1.1 题目1.2 算法思想2. 二叉树的中序遍历(94)2.1 题目2.2 算法思想3. 二叉树的后序遍历3.1 题目3.2 算法思想1. 二叉树的前序遍历(144)1.1 题目给你二叉树的根节点 root ,返回它节点值的前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root

2022-11-09 10:34:54 307

原创 Linux 15:基于C/S架构——微云盘

基于C/S架构模型——微云盘(2)项目环境:Linux,vim,gcc上传功能:将文件从客户端上传到服务器,显示百分比,实现文件校验,秒传下载功能:将文件从服务器端下载到客户端,显示下载文件百分比,断点续传,文件校验断点续传:当文件在下载中中断,下次可接着上次中断地方继续下载秒传:当服务器已经存在某个文件时,当别的用户再次上传时,服务器直接返回下载成功一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。

2022-11-04 13:50:19 867

原创 C++ 15:虚表,虚函数,多态,指针

virtual函数系动态绑定,而缺省参数值确是静态绑定公有继承+虚函数+引用/指针 产生了动态联编,调用的是子类的fn函数,有同名覆盖,但是函数重写参数并没有进行重写,如果没有在主函数进行传递参数,则参数不变。代码示例public :} };Child c;return 0;}运行结果多重继承也会产生动态联编;非虚函数不需要重新定义虚函数是一个类的成员函数:virtual 返回类型 函数名 (参数表)关键字virtual 指明该成员函数为虚函数。...

2022-08-10 22:36:24 1496 1

原创 Linux 14:HTTP协议与web服务器

浏览器与web服务器在应用层通信使用的是HTTP协议,而HTTP协议在传输层使用的是TCP协议。那么浏览器需要和web服务器三次握手建立连接后,才可以发送HTTP请求报文,服务器收到请求报文后,向浏览器回复HTTP应答报文。浏览器服务器建立连接后,如果两次以上的请求复用同一个TCP连接,则称之为长连接。如果浏览器发送一次请求报文,服务器回复一次应答就断开连接,下次交互再重新进行三次握手建立连接,那么就被称作短连接。使用长连接更好,可以减少网络中的同步报文,也使得服务器的响应速度变快。......

2022-08-08 19:28:45 675

原创 Linux 13:TCP编程 / UDP编程

所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。UDP会独立发送报文,而且服务器端和客户端没有建立连接,udp发送报文每次要填入目的地的客户和端口,不能确保两次目的地相同,所以不能合并两次报文,udp允许丢包,TCP是一对一建立连接,可靠,但是系统开销较大,电话,发邮件等等,udp不可靠,但是传输速度快,开销较小,视频等等,tcp不允许丢包。◼ 拥塞避免“加法增大”..

2022-08-08 14:10:49 531

原创 Linux 12:TCP编程

connect()方法一般由客户端程序执行,需要指定连接的服务器端的IP地址和端口。该方法执行后,会进行三次握手,建立连接。理论上应该输出5个ok,但是由于时间原因,只接收一个,其他4个存入缓冲区,下一次执行recv时候才会输出。三次握手发生在客户端执行connect()的时候,该方法返回成功,则说明三次握手已经建立。TCP提供的是面向连接的、可靠的、字节流服务。从键盘输入的数据先存入缓冲区,等到recv开始执行时候,才开始接收数据。...

2022-08-03 19:50:04 733

原创 Linux 11:网络

网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、路由器等设备。网络设备有:交换机、路由器、集线器传输介质有:双绞线、同轴电缆、光纤网络示意图多个网络的连接,目前最大的互联网就是我们常说的因特网。互联网示意图。.........

2022-08-02 22:10:25 1051 4

原创 Linux 10:生产者消费者问题

生产者/消费者问题,也被称作有限缓冲问题。可以描述为两个或者更多的线程共享同一个缓冲区,其中一个或多个线程作为“生产者"会不断地向缓冲区中添加数据,另一个或者多个线程作为"消费者"从缓冲区中取走数据。生产者和消费者必须互斥的使用缓冲区缓冲区空时,消费者不能读取数据缓冲区满时,生产者不能添加数据。...

2022-07-28 16:25:41 469

原创 C++ 14:继承构造顺序,static继承问题,继承顺序问题,同名隐藏,菱形继承,final关键字

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构。体现了由简单到复杂的认识过程。class派生类名virtual访问限定符基类类名{...};class派生类名访问限定符virtual基类类名{...}virtual关键字只对紧随其后的基类名起作用代码示例public};运行结果代码图解httpshttpshttps。...

2022-07-28 16:23:14 379 1

原创 C语言 5:bool类型,关系表达式,逻辑表达式,分支语句,函数调用机制,break,continue,goto,return/exit跳转语句

switch循环中只有break才能跳出循环否则一直执行下一个break语句例题输入学生成绩,求学生成绩取值");case'A'break;//A,B,C,D,E均为常量case'B'break;case'C'break;case'D'break;case'E'break;defaultbreak;return0;}}

2022-07-27 14:18:40 1294 2

原创 C语言 4:汇编语言指令介绍

数字指令介绍1EAX“累加器”(accumulator),它是很多加法乘法指令的缺省寄存器。2EBX“基地址”(base)寄存器,在内存寻址时存放基地址。3ECX计数器(counter),是重复(REP)前缀指令和LOOP指令的内定计数器。4EDX则总是被用来放整数除法产生的余数ESI/EDI分别叫做“源/目标索引寄存器”(source/destinationindex),因为在很多字符串操作指令中,DSESI指向源串,而ESEDI指向目标串。EBPPOP。...

2022-07-27 13:44:40 471

原创 C语言 3:常量和变量,顺序语句,选择语句,循环语句,作用域和生存期

1.编写程序的步骤以及过程(适合初学者)(1)需求:提出自己对于代码的需求,即提出问题(2)分析:对提出的问题需求进行分析(3)设计:即对代码的算法进行设计(4)实施:程序代码的实施,即编码的实现(5)测试:对自己编写代码的代码模块进行测试2.问题提出:输入三个数字,求输出中间值。算法实现:冒泡排序,输入三个值,先将三个值进行排序,在输出中间值,即为所求数字。(1)代码冗余,未注意代码书写规范#include<stdio.h>int main(){ int a = 0,

2022-07-27 13:25:29 725

原创 C++ 13:面向对象,继承,1-100相加

由继承而来的派生类对象,是能够调用父类的函数,但不能调函数也不能调用析构函数。封装(Encapsulation)是面向对象程序设计最基本的特性,把数据(属性)和函数(方法,操作)合成一个整体,这在计算机世界中是用类与对象实现的。在面向对象程序设计中,继承和派生是构造出新类型的过程,呈现类型设计的层次结构,体现了程序设计人员对现实世界由简单到复杂的认识过程。基类的指针可以引用派生类对象,可以用派生类给基类赋值,但是基类不能给派生类赋值(不安全,多态,强制类型转化)私有成员在类内能被继承,不能被访问。.....

2022-07-26 21:11:07 765

原创 C++ 12:函数模板,模板函数,类模板

在编译main()函数中,由编译函数模板(functrontemplate)而生成的函数,称为模板函数(templatefunction).这两个概念须分清楚。

2022-07-26 13:39:05 420

原创 C语言 2:求三数字最大值,求三数字中间值,编写程序步骤

输入三个值,先将三个值进行排序,在输出中间值,即为所求数字。(1)需求提出自己对于代码的需求,即提出问题。(5)测试对自己编写代码的代码模块进行测试。(4)实施程序代码的实施,即编码的实现。(2)分析对提出的问题需求进行分析。(3)设计即对代码的算法进行设计。输入三个数字,求其中最大的数字。输入三个数字,求输出中间值。...

2022-07-24 23:49:40 3590

原创 C语言 1:计算机软硬件基础,数据类型和关键字,进程

1.一个C语言源程序可以由一个或多个源文件组成。2.每个源文件可由一个或多个函数组成。3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。4.源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。5.每一个说明,每一个语句都必须以分号结尾。6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。程序的一次执行过程,且是随时间流逝的。...

2022-07-24 23:46:51 446

原创 Linux 9:线程

线程是进程内部的一条执行序列或执行路径,一个进程可以包含多条线程;线程是资源调度的基本单位。进程一个正在运行的程序,进程是资源分配的基本单位。

2022-07-24 22:49:48 217

原创 C++ 11:对象与对象的关系,类模板

用一个带箭头的虚线表示,描述一个对象在运行期间会用到另一个对象的关系;临时性关系,随着运行时的变化,依赖关系也可能发生变化;依赖也有方向单向依赖,双向依赖,保持单向,杜绝双向关联关系是用一条直线表示,描述不同类的对象之间的结构关系,是一种静态关系,通常与运行状态无关,一般由常识等因素来决定一般用来定义对象之间的静态的、天然的结构,所以关联关系是一种“强关联”关系;关联关系默认不强调方向,表示对象间相互知道;关联对象通常是以成员属性(对象)或引用的形式实现;弱关联无生存期限制强关联。......

2022-07-22 17:10:14 821

原创 C++ 10:对象池

提前保存大量的资源,以备不时之需以及重复使用,池化技术应用广泛,如内存池,线程池,连接池(网络链接池,数据库链接池)等等。由于在实际应用当做分配内存、创建进程、线程都会设计到一些系统调用,系统调用需要导致程序从用户态切换到内核态,是非常耗时的操作。因此,当程序中需要频繁的进行内存申请释放,进程、线程创建销毁等操作时,通常会使用内存池、进程池、线程池技术来提升程序的性能。池化对连接或线程的复用,并对复用的数量、时间等进行控制,从而使得系统的性能和资源消耗达到最优状态。不完美转发完美转发。.........

2022-07-22 11:05:00 2026 2

原创 C++ 9:友元,范围for,静态成员

友元friend机制允许一个类授权其他的函数访问类产生对象的非公有成员。友元声明以关键字friend开头,它只能出现在类的声明中,它们不受其在类体中的public,private和protected区的影响。友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符"."加对象成员名。但友元函数可以访问类产生对象的所有成员,一般函数只能访问类中的公有成员。友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。某类的友元函数的作用域并非该类作用域。......

2022-07-20 16:40:53 203

原创 C++ 8:MyString(柔性数组,写时拷贝)

数组大小声明为0,或者不给出大小,称之为柔性数组。注意全局数组和局部数据不能这样定义柔性数组是一种数组大小待定的数组。在c语言中,可以使用结构体产生柔性数组,结构体的最后一个元素可以是大小未知的数组。data是标识符,不占用存储空间。//柔性数组structStrNode{intref;//引用个数intlen;//字符串长度intsize;//字符串空间大小chardata[];};.........

2022-07-18 14:52:36 593 2

原创 C++ 7:深拷贝和浅拷贝,,值类型,构造函数和拷贝构造函数,函数重载,移动构造函数和移动赋值函数

1.3 怎么判断是否为内核资源?1.4 深拷贝构造函数1.5 为什么使用深拷贝构造函数?防止自赋值1.左值和将亡值合称泛左值,纯右值和将亡值合称右值。2.函数执行时生成将亡值,函数结束将亡值死亡。3.严格来讲,“左值"是表达式的结果的一种属性,但更为普遍地,我们通常用"左值"来指代左值表达式。所谓左值表达式,就是指求值结果的值类别为左值的表达式。通常我们无需区分"左值"指的是前者还是后者,因为它们表达的是同一个意思,不会引起歧义。在后文中,我们依然用左值指代左值表达式。对于纯右值和将亡值,亦然

2022-07-06 13:28:20 354

原创 Linux 8:mybash的实现和进程间通信

文章目录一、bash是什么?1.内置命令二、使用步骤1.2.字体 颜色 大小一、bash是什么?1.内置命令内置命令不可以通过fork+exec方式实现,所以不能用bashcd改变当前工作路径exit二、使用步骤1.2.字体 颜色 大小在这里放入需要修改颜色的语句............................................................

2022-06-23 09:35:11 795

原创 Linux 7:信号

文章目录一、信号——exec1. 信号的基本概念二、使用步骤1.2.字体 颜色 大小一、信号——exec1. 信号的基本概念信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作。 与信号有关的系统调用在“signal.h”头文件中有声明常见信号的值,及对应的功能说明:二、使用步骤1.2.字体 颜色 大小 在这里放入需要修改颜色的语句............

2022-06-06 09:16:35 781

原创 C++ 6:MVC日历系统(项目)

文章目录1. 日历系统1. 日历系统获得当前时间#include<iostream>#include<time.h>//time_t tm#include<string.h>using namespace std;class CDateTime{private: //年 月 日 时 分 秒 int year; int month; int day; int hour; int min; int sec;public: CDateTi

2022-06-01 16:50:34 242

原创 C++ 5:malloc和new,对象成员方法,实现整型栈,拷贝构造函数,运算符重载,数组名,缺省函数

1.数组名【类型(类型推演)和大小(替换)】int main(){ int ar[10] = { 12,23,34,45,56,67,78,89,90,100 }; sizeof(ar);//代表整个数组 int(*p)[10] = &ar;//整个数组地址 int(&br)[10] = ar;//引用数组}2.模板(1)模板函数在编译的时候进行实例化,实例化时候进行模板推演规则void Print_Ar(Type(&br)[N]){

2022-05-19 15:50:47 960

原创 Linux 6:进程替换,exec系列方法,malloc

文章目录1. 进程替换1.12. exec系列替换方法2.1 execl2.2 execlp2.3 execle2.3.1 自定义环境变量2.4 execv2.5 execvp2.6 execve3. 申请内存(malloc)1. 进程替换fork+exec是系统创建新进程的一种方式。exec替换之后子进程的id号不变,父进程也不变,PCB也不变,只替换了进程实体。1.12. exec系列替换方法2.1 execlint execl(const char *pathname,const

2022-05-17 21:02:07 476

原创 Linux 5:bash,僵死进程,写时拷贝,文件描述符(系统调用)

文章目录1. Linux1.1 Linux内核1.2 bash命令解释器1.3 内存空间2. 僵死进程(僵尸进程)2.1 僵死进程的产生2.2 僵死进程定义2.3 僵死进程及处理方法2.4 如何获取僵死进程退出码?1. Linux1.1 Linux内核Linux内核代码是C语言编写的,fork复制进程先复制PCB,在复制进程实体,父子进程并发执行。系统通过双向链表管理进程,节点数量就是进程数量,1.2 bash命令解释器当执行某个命令,比如./main命令,./main命令本质上是一个可执行

2022-05-10 20:47:27 962

原创 Linux 4:进程,主函数参数,计算机组成,内存管理,fork复制进程

1.查找bin下面是否有“pwd”这个命令

2022-05-08 22:58:04 568 1

MyString.cpp

模拟实现mystring类,C++语言撰写,Mystring类的代码全部,可以适用于各种大作业报告,有需要的人可自行取用,如有疑问私信本人即可,@何小柒~

2022-07-18

MVC日历系统(C++语言编写)

此代码为日历系统,可以完整打印日历,C++语言编写

2022-06-01

空空如也

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

TA关注的人

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