自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 实际应用评测!用国产大模型出一年级暑假作业是什么体验?

暑假到了,数学老师布置了孩子的作业,每天做一套100以内加减法的数学练习题。但我作为一个前不知名程序员,以及现在的某国产大模型的项目运营经理来说,似乎有点浪费资源的感觉。我是一个执行力很强的人,先用大模型试试,现写一套提示词让大模型完成一次内容生成的任务,效果一般,调试了十分钟左右,试了几个国产大模型,实在没耐心了继续。请出100以内加减法的数学练习卷,一套练习卷有50个题目。第二,每一行要放2个题目,这2个题目,在第1题空8个空格之后,再写下一个题目。第二,每套题目求得的结果要随机,不能有规律。

2024-06-30 17:31:35 339

原创 Linux syslog的个性化配置方法

一、修改syslog.conf文件。二、业务服务日志配置。

2023-03-29 16:08:07 835

原创 SIP事务中定时器的讨论

VoIP场景的协议解析

2022-11-22 17:47:49 488

原创 OpenSIPS B2BUA实现介绍

通信

2022-11-04 13:35:44 685

原创 SIP松散路由机制漫谈(以OpenSIPS为例)

严格路由定义松散路由定义实例讲解

2022-05-14 17:05:24 567

原创 Vuex之state学习(Vue3)

Vuex的初体验,结合文档的学习,输出一个demo讲解

2022-05-04 22:46:19 801

原创 Vue 父子组件、父子传参, 自定义指令和响应式侦听

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title></title></head><body> <div id="app"> {{message}} <father id="fa"></father> </div> <script src="https://cdn.js.

2022-04-25 08:58:48 816

原创 RPM安装OpenSIPS 的方法介绍

以CentOS系统为例。1. 登陆OpenSIPS官网,获取rpm包的yum源并安装。选择我需要的OS系统版本和OpenSIPS版本。然后在服务器上执行:yum installhttps://yum.opensips.org/3.2/releases/el/7/x86_64/opensips-yum-releases-3.2-6.el7.noarch.rpm...

2022-01-21 13:35:24 1158

原创 FreeSWITCH 挂机hook处理通用处理方案

dialpla.xml中会话路由如下示例:<extension name="local_route"> <condition field="destination_number" expression="^([rd]3.*)$"> <action application="set" data="api_hangup_hook=lua testHook.lua"/> <action application="lua" ...

2022-01-21 13:19:02 1319

原创 OpenSIPS 核心函数

cache_fetch(storage_id, attribute_name, result_pvar)此函数用于从类内存缓存的存储系统中获取属性值。属性名称可能包含伪变量。结果(如果有)将存储在 result_pvar 指定的伪变量中。如果找到属性并且返回其数值,那么函数返回值是 true。cache_fetch("local", "my_attr", $var(result));或者:modparam("cachedb_redis", "cachedb_url", "redis:

2021-12-17 09:55:01 1800

原创 OpenSIPS 核心变量(Core Variables)概述

OpenSIPS提供了路由脚本(routing script)中使用的多种类型的变量。变量类型之间的差异来自(1)变量的可见性(当变量可见时),(2)变量所附加的内容(变量所在的位置)(3)变量的读写状态(某些类型的变量是只读的)(4)多个值(对于同一个变量)的处理方式。OpenSIPS变量可以很容易地在脚本中识别,因为它们的所有名称(或符号)都以美元符$开头。语法:伪变量的完整语法为:$(<context>name(subname)[index]{transformation}

2021-11-23 11:19:23 578

原创 Golang 交叉编译

Golang 在Mac操作系统上交叉编译的命令CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

2021-08-29 21:31:52 112

原创 正则表达式之手机号脱敏

找到数据源:(\d{3})\d*(\d{4})替换=:$1****$2

2021-08-20 14:31:55 653

原创 ICE浅谈:(一)ICE概览

注:本文内容以RFC 5245文档记载内容为主,中文翻译有不当之处请见谅。概述ICE是Interactive Connectivity Establishment的简称,一般的定义是:ICE = STUN + TURN + 协商机制 +协商路径实时音视频通信的场景中,会话双方可能都在NAT网络后面,直接协商的网络接口地址可能无法直接通信。ICE的目的是发现何种候选地址配对可以工作。基本的ICE工作理念是:针对传输协议(这里重点讨论UDP协议)每个agent都有各种候选地址(绑

2021-07-27 17:03:17 1798

原创 Spring服务理解浅谈---注解@Autowired 、注解@Bean和MQ的注解

@Autowired 注解,对类成员变量、方法和构造函数进行标注、完成自动装配的工作。通过@Autowired的使用来消除setget方法。在使用@Autowired之前,我们对一个bean配置属性时,是这样用的:<property name="属性名" value=" 属性值"/>通过@Autowired自动装配方式,从IoC容器中去查找定义过的接口(interface)类,并返回给该属性。 @Component 一旦使用关于Spring的注解出现在...

2020-11-10 18:53:47 166

原创 Promtail + Loki + Grafana 构建日志监控告警系统(一)

一、前言日志监控告警系统,我所了解的较为流行的有两种技术栈。一种是Elasticsearch 、Logstash和Kibana核心套件构成,简称ELK。另外一种是Promtail + Loki + Grafana核心组件构成,简称PLG。其中,ELK的技术栈方案,久经考验,很多大公司的团队在使用。相比之下,PLG开源不久,是一股新兴的力量,目前较多的小团队在使用。经过衡量和思考,考虑到Loki轻量(ELK很多复杂的功能项目上没有使用需求)、低成本(容易实现)、操作简单等特性,以及计划使用..

2020-08-30 23:15:46 6256 2

原创 golang使用mux实现http自定义路由

最近在做坐席管理的服务,其中需要对上层业务提供外部的REST接口,去对坐席、坐席组、租户域进行增删改查操作。采用了gorilla开发的mux实现自定义路由。package地址如下:github.com/gorilla/muxGolang中http的设计非常轻量,且具有很高的扩展性,上手非常简单。参考gorilla给出的wiki就可以轻易设计出自定义的路由功能。这对于像我这样的c语言开发者而言,是非常友善的。下面直接上代码,讲述一下。我设计了以下三种URL分别定位三种资源(域、组、坐席

2020-07-03 23:33:03 1040

原创 DFS最佳实践之MongoDB-GridFS存储通话录音

一、引言由于业务需求的井喷,对于系统服务的要求越来越高,为了满足系统稳定性、可靠性和可扩展上的发展,以及大量录音数据的分布式存储,为此开发Recdumper录音文件转储服务,将本地磁盘文件上传至MongoDB文件系统GridFS进行存储。Recdumper可配置工作目录,也就是存放录音的根目录。Recdumper会定时扫描该目录,将指定后缀的录音文件上传至MongoDB数据库。另外Recdumper提供Restful接口供系统使用,目的是告知Recdumper需要上传数据库的本地录音文件绝对路径。注

2020-06-15 18:29:58 456

原创 WebRTC通话INCOMPATIBLE_DESTINATION问题排查、verto与STUN协议

一个功能完整的WebRTC应用需要: 使用GetUserMedia API控制麦克风和摄像头 使用一种会话协议和可能的外部辅助服务器定位对方端点并建立会话 使用ICE(和STUN和TURN)确定网络路径 使用RTCPeerConnection传输音/视频媒体流 问题记录:脱机环境,没有连接公网。网页电话建立后,立即挂断。SIP报错信息:488 Not Acceptable Here (INCOMPATIBLE_DESTINATION)...

2020-05-20 18:08:57 5289 2

原创 OpenSIPS Dispatcher 模块 使用指南

便于大伙学习,翻译了官方文档。如有不妥之处,请见谅,望联系。目录表:1.管理指南1.1 概况1.2依赖1.3导出参数(ExportedParameters)1.4导出函数(ExportedFunction)1.5导出MI函数1.6导出事件1.7安装和运行2. 高频提问3. 贡献者3.1按提交统计3.2按提...

2020-04-10 12:14:41 1774

原创 unimrcp源码窥探及task异步架构的学习(二)(MRCP Client)

Framework Agent创建过程中,虚方法表中的方法都实现了。在启动task的过程中,会触发on_start_complete事件。MRCP Client正是在这个事件中创建的。所以让我们来看看这个事件中完成了哪些工作。一、创建mrcpclient 首先创建mrcpclient客户端堆栈,即得到mrcp_client_t结构。 unimrcp_client...

2020-03-19 14:48:54 1374

原创 unimrcp源码窥探及task异步架构的学习(一)(Framework Agent)

设置日志DEBUG级别,对照日志从main函数进入处理流程。必要时候用gdb工具单步执行调试。一、task分析了解task的一切,从task创建开始。先来了解一下,apt_task_t这个结构体中包含了哪些数据。 父task链表节点(注释的说法是这样的)link 说明,环(ring)是一种双向链表,可以在不知道其头部在哪里的情况下进行操作。APR中的环的介绍,...

2020-03-09 20:35:17 1098

原创 APR学习-消息池的设计与使用

一、任务消息的抽象池,用于从中分配任务消息/** Abstract pool of task messages to allocate task messages from */struct apt_task_msg_pool_t {void (*destroy)(apt_task_msg_pool_t *pool);apt_task_msg_t* (*ac...

2020-03-06 11:57:36 531

原创 uniMRCP编译时libtool报错:CURRENT `XXXX' must be a nonnegative integer

在编译uniMRCP的阿里插件时,使用到了一个自定义封装的动态库,libtool链接时报了如下错误:libtool: link: CURRENT `-L/usr/local/lib/aly-speech/lib' must be a nonnegative integerlibtool: link: `-L/usr/local/lib/aly-speech/lib' is not valid...

2020-03-01 17:15:18 1105

原创 freeswitch源码分析之进程调度策略、进程调度优先级设置

sched_setscheduler()函数sched_setscheduler()函数将pid所指定进程的调度策略和调度参数分别设置为param指向的sched_param结构中指定的policy和参数。sched_param结构中的sched_priority成员的值可以为任何整数,该整数位于policy所指定调度策略的优先级范围内(含边界值)FreeSWITCH对进程调度相关处理目前,...

2019-05-07 16:36:52 1000

原创 docker容器高效部署FreeSWITCH实践

1.用commit命令构建镜像缺点是反复构建,多次commit提交以后,导致镜像越来越大。2.用dockerfile文件构建镜像3.容器与宿主机的通信。使用firewall的端口转发或者docker的端口映射,但是docker的端口映射比较消耗资源。我把10000个UDP端口号映射到宿主机,导致因为内存消耗过高宿主机shutdown问题。所以可以结合使用,比如信令端...

2019-04-12 15:12:39 6626

原创 FreeSWITCH源代码分析之录音模块

record_callback

2019-04-09 10:29:13 888

原创 C程序员基础知识总结

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用M...

2019-04-08 20:17:02 426

原创 FreeSWITCH源码分析和分享之ASR解析

asr_interface的工作流程注册监听处理,注册监听回调函数。监听回调函数中初始化时启动一个线程A。A线程中执行一个死循环,等待条件变量被唤醒。当条件变量被唤醒后,动作就是检查当前session的内存池中是否有识别结果数据。这个检查动作比较迷惑人,即便没有识别结果,但只要vad检测到状态是activity的,检查结果也是成功的。检查结果成功的话。创建freeswitch的事件,并发...

2019-03-28 17:33:54 1868

原创 FreeSWITCH环境日志优化和管理

概述:FreeSWITCH在大量呼叫的情况下,会产生大量的日志文件,占用许多磁盘空间,影响环境运行效率,因此需要进行日志管理。以下简述方法。以freeswitch的日志模块为基础,借助linux自启动、logrotate和cron来实现和完善。一、FreeSWITCH控制台日志:配置文件默认的路径: /usr/local/freeswitch/conf/autoload_configs/l...

2019-03-28 16:28:02 2907

原创 FreeSWITCH通过luasocket发送http请求,导致进程退出

现象高并发呼叫时FreeSWITCH通过lua发出http请求,发生段错误后进程退出。debug时最深可追踪到:inet_tryconnect () from /usr/lib64/lua/5.1/socket/core.so环境描述FreeSWITCH版本号: 1.8.1luasocket版本号: luasocket-2.0.2原因2.0.x版本问题。解决办法升级安装luas...

2019-03-28 16:20:11 2253 1

原创 FreeSWITCH中dtmf信号

FreeSWITCH中dtmf信号DTMF的相关定义关于DTMF信号的时间间隔,CCITT对DTMF信号规定的指标是,传送/接收率为每秒10个数字,即每个数字100ms。代表数字的音频信号必须持续至少45ms,但不超过55ms。100ms内其他时间为静音,以便区别连续的两个按键信号。FreeSWITCH中的运用拨号计划中执行:可以在日志中看到相关内容。2019-02-26 11:4...

2019-03-28 16:10:22 2119

转载 epoll的使用

#include #include #include #include #include #include #include #include #include #define MAX_EVENTS 500typedef struct myevent{int   fd;void  (*call_back)(int fd, int

2017-03-03 16:54:42 156

空空如也

空空如也

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

TA关注的人

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