自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (1)
  • 收藏
  • 关注

原创 Freeswitch介绍+demo

FreeSwitch是一个开源的多协议电话交换平台,支持跨平台部署,提供灵活的电话交换功能。它通过SIP协议实现语音、视频等多媒体通信,核心概念包括分机号、B2BUA呼叫模型、拨号计划等。平台采用模块化设计,Sofia模块负责SIP协议处理,支持内部/外部网络配置。FreeSwitch提供ESL接口用于外部程序交互,支持录音、AI语音集成等功能。配置文件采用分层结构,包括拨号计划、SIP配置、ACL访问控制等。典型应用场景包括点对点呼叫、群呼转接、智能外呼系统等,可与MRCP协议结合实现语音识别与合成功能。

2025-06-30 22:11:31 405

原创 Linux部署Freeswitch

本文介绍了在Ubuntu 20.04.6系统上安装FreeSWITCH的详细步骤。主要内容包括:1)更新系统并安装基础工具;2)下载FreeSWITCH源代码;3)安装关键依赖库如SQLite3、spandsp、sofia-sip等;4)配置编译环境并执行多线程编译安装;5)创建systemd服务单元文件并设置开机启动;6)配置环境变量和验证服务运行状态。整个过程涵盖了从环境准备到服务部署的全流程,并提供了详细的命令行操作指引。

2025-06-30 21:57:52 442

原创 后端服务集成Loki日志聚合系统

本文详细介绍了使用SpringBoot+Loki+Loki4j+Grafana搭建轻量级日志系统的完整流程。主要内容包括:1)Loki的下载安装与配置;2)创建Loki服务并启动;3)Grafana的配置与连接;4)Promtail的安装配置(可选);5)SpringBoot项目集成Loki的配置方法;6)在Grafana中查看日志的步骤。系统通过动态配置实现了日志采集的可控性,采用异步方式提高日志传输效率,最终构建了一个高效的日志监控解决方案。

2025-06-30 21:45:37 619

原创 记录一次TDengine的SQL查询报错排查

摘要:接口从TDengine腾讯云版(3.2)迁移到集群版(3.3)后出现SQL语法错误。排查发现查询语句中的"pi"字段在3.3版本中成为保留关键字(圆周率函数)。解决方法是通过反引号转义字段名,将"sum(pi) as pi"修改为"sum(pi) as pi"。该问题表明不同版本间的关键字兼容性差异需要特别注意,字段名使用保留字时应进行转义处理。

2025-06-30 21:40:43 292

原创 nacos服务配置和环境

Spring Boot通过Profile实现多环境配置隔离,支持yml/properties文件按环境拆分。配置读取遵循优先级规则:命令行参数>环境变量>Profile专属文件>通用文件。与Nacos配置中心集成时,通过spring.profiles.active指定环境,自动匹配对应命名空间和配置文件名(如hgtc-device-server-dev.yaml),实现各环境配置完全隔离。这种机制确保开发、测试、生产环境的配置独立管理且互不干扰。

2025-06-30 21:39:45 1215

原创 Minio部署

minio支持单节点单硬盘、单节点多硬盘、多节点多硬盘部署方式。本文介绍单节点单硬盘和多节点多硬盘方式。查看日志文件:/root/minio/logs/minio.log,如果打印下面的端口列表说明启动成功。创建日志文件:touch /root/minio/logs/minio.log。创建脚本:touch /root/minio/startup.sh。使用命令创建目录:mkdir /root/minio/logs。直接使用脚本启动:/root/minio/startup.sh。浏览器访问ip:9003。

2025-06-30 21:38:00 305

原创 Linux设置后端服务自动重启

在打开nacos/bin目录中的startup.sh脚本,去掉最后几个代码的最开始的。打开minio目录的startup.sh脚本,去掉最后一行代码的最开始的。脚本,linux启动后会自动执行该脚本,可以把重启脚本写在里面。创建下面的脚本文件,放到。创建下面的脚本文件,放到。

2025-06-30 21:35:16 84

原创 Http请求Content-Type和接口的关系

通常不是必需的,因为GET请求的数据通常通过URL的查询字符串传递。是一个请求头(Request Header),它告诉服务器端,客户端发送给服务器的数据是什么格式。服务器需要知道客户端发送的数据格式,以便正确解析请求体中的数据。这种格式的数据通常用于GET请求,但也可以用于POST请求。进行数据验证,确保接收到的数据符合预期的格式。指定的格式,服务器会使用相应的解析器来解析请求体中的数据。与实际发送的数据格式不匹配,可能会导致解析错误或数据丢失。,服务器就知道请求体中的数据是JSON格式的。

2025-06-30 21:33:58 275

原创 记录一次Gateway内存溢出问题排查

但释放数据缓冲区的代码写在了参数解密filter里面,且只有post的json和urlecode请求才会走获取参数清理缓冲区的方法,导致不需要数据加密的post请求(如登录请求、文件上传请求、白名单中的请求),就会跳过释放DataBufferUtils缓冲区的方法,久而久之就导致了DataBufferUtils中设置的缓冲区巨大。线上运行一段时间的gateway服务网关会莫名其妙的“崩掉”,请求不通,看日志每个请求都报错,报错的大致意思是分配内存的时候,超过项目设置的最大内存。

2025-06-30 21:31:45 358

原创 Gateway实现对接口参数加密

在微服务架构中,API网关(Gateway)是系统对外的统一入口,它不仅负责请求的路由分发,还承担着安全控制、流量控制等重要职责。参数加密是保障数据传输安全的重要手段之一,我们可以让客户端负责加密参数,网关负责在请求到达各服务端之前进行解密,然后将明文参数请求分发给对应服务。此文将介绍一个基于Spring Cloud Gateway实现的参数加密和解密的原理及其实现。

2025-06-30 21:30:18 638

原创 Gateway实现登录验证

在微服务架构中,API网关(Gateway)是系统对外的统一入口,它不仅负责请求的路由分发,还承担着安全控制、流量控制等重要职责。此文将介绍一个基于Spring Cloud Gateway实现的登录验证机制。

2025-06-30 21:26:22 177

原创 Springboot中使用多个AMQ

1.当springboot程序只用一个amq时,只需要在配置文件里面简单配置相关连接项(配置项名字不能改),得益于springboot的自动装配功能,我们不需要写额外的配置类就能在程序里面轻松使用。2.当springboot程序需要连接多个amq时,就需要手动编写jms的配置类了,这里两个mq(18mq,19mq) packagecom.brilliant.ecserver.config; importorg.apache.activemq.ActiveMQCon..

2022-02-05 16:30:48 1364

原创 钉钉群机器人接入

内容摘要1.简单接入群机器人,主要用于在群里发送通知信息2.官方API文档:什么是机器人 - 钉钉开放平台1.创建一个钉钉群,按照下面步骤添加自定义机器人,设置时选择“加签”,创建好之后会得到机器人的webhook2.机器人工作方式其实就是用程序发送http请求到钉钉官方服务器,服务器通过webhook来识别你的机器人,然后控制机器人发送消息到它所在的群。(所以如果要在生产环境使用这个功能,程序服务器必须要能够访问外网)核心代码就这四部分,加密...

2022-02-05 16:30:42 4317

原创 使用intellij idea跑eclipse项目

点击project Structure的modules中的“+”,添加模块(项目)在libraries中点“+”,将项目的lib目录导入进去,可以将lib重命名下,便于区分再去Modules中将刚刚添加的lib包加入项目的sourse列表中勾选,建议把tomcat的lib也加进去,顶部可以更改当前模块(项目)使用的jdk版本(很多老项目的jar包和代码可能需要低版本的jdk才能运行)Paths设置中可以自定义项目的class文件输出路径,选第一个表示用P...

2022-02-05 16:30:35 1507 1

原创 Oracle查询结果根据in中的数据排序

遇到个SQL问题,查询单条数据:希望的结果为:即俩字段中数据位置需要一一对应(id为几,就对应几号)。 id name 3,5,4,2,1,6 三号,五号,四号,二号,一号,六号 但实际的结果为:俩字段中id和name的位置对应不上 id name 3,5,4,2,1,6 一号,二号,三号,四号,五号,六号 具体SQL如下所示:(出问题的位置标红了)selectm."poin

2022-02-04 16:48:19 2461

原创 JS判断图片链接是否存在

遇到个bug,排查出来原因是图片链接失效,导致后面代码执行错误。解决这个bug只需要在执行中判断图片链接是否存在即可。要判断图片链接是否有效,我们首先创建一个Image对象,然后把链接设置在Image对象上,如果能正常加载,则代表链接有效。因为图片是异步加载的,所以我们需要Promise来处理。创建一个处理函数,如下代码:function checkImgExists(imgurl) { return new Promise(function(resolve, reject) {

2022-02-04 16:47:00 1574

原创 JWT鉴权实现

1.JWT构成头部(header) 有效载荷(Payload) 签名(signature)2.header(header是一段json,经过base64编码变成一段字符串,编码前后对比图如图所示:)typ:token的类型,这里固定为JWT alg:使用的hash算法,例如:HMAC SHA256或者RSA3.payload存储需要传递的信息,如用户ID、用户名等 还包含元数据,如过期时间、发布人等 与header不同,payload可以加密4.signature.

2022-02-04 16:46:14 1340

原创 Nacos整合分布式事务框架seata

内容摘要1.nacos:1.1.4版本2.seata:1.42版本3.springcloud:H.R1版本4.seata使用nacos作为配置中心和注册中心5.示例使用的AT模式seata官网地址:Seata最近看了b站尚硅谷的微服务视频,里面用的seata是0.8的老版本,整合方式和现在新版本还是的有点区别,分享下1.42版本的整合方式。示例代码放这:示例代码.zip1.去官网下载Seata解压后目录如下2.seata配置步骤..

2022-02-04 16:44:36 865

原创 3.x和4.x版本arcgis服务Token验证

当我们发布的arcgis server服务设置为公开或者发布到外网时,这样所有人都可以访问,如果我们只想对部分人进行开放并且限定时间的使用,而不希望其他人员访问我们的服务。那就需要对该服务设置权限对服务的请求进行验证,这样服务就无法被所有人访问,将服务设置为私有,给使用者创建用户和分配角色并生成token,相当于先进行验证,验证成功再响应服务请求。首先通过ajax请求去获取Token获取到Token之后,如果项目使用的是arcgis 4.x版本,可以直接用它自带的"esri.

2022-02-04 16:36:56 1828

原创 Nginx处理跨域问题

xx项目有个需求,我们的web项目首页需要展示“实时天气”,但提供天气数据的接口是来自业主那边的一个独立项目,且部署在其他服务器上。现场环境项目地址:http://10.5.11.19:8089/AVMS天气服务接口地址:http://10.5.15.8:8080/dam/service/weather?token=QdSEhR2d&appKey=ff808081783a60d001785da57230003d&endtime=202106221614如果我们在前端直接发

2022-02-04 16:35:55 2395

原创 Oracle中not in ()语法问题

最近遇到一个SQL,where条件中用了is not in (子查询)的语法来过滤数据,但整个SQL执行时一直查不到东西排查了下,最后定位到问题出在这个is not in ()条件中,于是将括号里面的子查询执行了下,发现他查询的字段中有一条数据为null值刚开始没看出有啥问题,百度一波后发现,如果is not in ()子查询返回值中有null值,那这个条件始终会返回false,导致整个SQL啥都查询不到。所以修复的方法就是在子查询中过滤掉空值,子查询后加上 "w..

2022-02-04 16:34:10 3013

原创 Oracle数据库迁MySQL经验分享

由于某项目需要从Oracle改为Mysql服务器,涉及到数据库迁移问题,这里分享下操作流程。1、用navicat将Oracle表结构和数据迁移到MySQL选工具-数据传输如图选择传输对象,再点击选项,建议把“遇到错误继续勾选”,否则有时候1、2张表报错,会导致整个传输中断。选择需要传输的表,这里直接选“运行期间的全部”即可,点击“下一步”开始传输传输结束后记得看看日志,是哪几张表报错,可以根据表结构手动去创建。2、项目改成用MySQL...

2022-02-04 16:32:50 4585 1

原创 基于springboot的邮件任务demo

1.QQ邮箱开启POP3/SMTP服务获取授权码(自行百度)2、maven创建springboot项目(略)3、pom.xml中导入邮件任务的依赖<!--javax.mail--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></depen

2022-02-04 16:27:20 404

原创 checkbox多选框单选和多选serializeObject()取值问题

最近做了个需求,需要将选择的星期入库保存,效果如下我决定将选择的日期转为一个长字符串存入数据库的一个字段中,例如“w1,w2,w3,w6”我们都知道,当checkbox多选的时候,用serializeObject()去获取表单对象的属性,获取到的值是一个数组这个时候用.join()方法就可以得到长字符串但当我们只选择一个的时候,获取到的值就直接变成了一个字符串除此之外还有一种情况,当我们什么都不选的时候,获取到的form表...

2022-02-04 16:22:29 1243

空空如也

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

TA关注的人

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