FreeSWITCH 之 chat
要把 FreeSWITCH 之 chat 完全研究清楚,似乎不容易
发送,路由,接收
跟哪些模块有关
等等
咱一边查资料,一边整理,不着急
先看看 Kamalio 怎么发 MESSAGE
loadmodule "uac.so"route[uac_send_message] {$uac_req(method) = "MESSAGE";$uac_req(ruri) = "sip:10.0.1.5:5060";$uac_req(furi) = "sip:Emergency Alert";$uac_req(turi) = "sip:thisphone";# $uac_req(callid) = $uac_req(hdrs) = "Subject: Emergency Alert\r\n";$uac_req(hdrs) = $uac_req(hdrs) + "Content-Type: text/plain\r\n";$uac_req(body) = "hi\r\n";$uac_req(evroute) = 1; # fire 路由,成功不成功,在路由块里面可以获取到uac_req_send();
}event_route[uac:reply] {xinfo("===uac reply received, callid = $uac_req(callid), tu = $uac_req(turi), code = $uac_req(evcode)\n");
}
也可以设置 outbound proxy
$uac_req(ouri) = "sip:1.2.3.4:5060";
现在来看看 FS 怎么发送 MESSAGE
当然,首先得加载 mod_sms
local event = freeswitch.Event("CUSTOM", "SMS::SEND_MESSAGE");
event:addHeader("proto", "sip");
event:addHeader("dest_proto", "sip");
event:addHeader("from", "1004@192.168.0.81");
event:addHeader("from_full", "sip:1004@192.168.0.81");
event:addHeader("to", "sip:1001@192.168.31.73:6666");
event:addHeader("subject", "12345678abcd");
event:addHeader("type", "text/plain");
event:addHeader("hint", "the hint");
event:addHeader("replying", "true");
event:addHeader("sip_profile", "internal");
event:addBody("Hi\r\n");freeswitch.consoleLog("info", event:serialize());
event:fire();
如此就可以发送,目的地址是 sip:192.168.31.73:6666, 后者运行的是 MircoSIP, 配置文件里面设置 sourcePort=6666,会自动弹一个框出来,显示 `Hi`
fs_cli -x 'show chat'
show chat
type,name,ikey
chat,GLOBAL_SMS,mod_sms
chat,api,mod_dptools
chat,conf,mod_conference
chat,event,mod_dptools
chat,sip,mod_sofia
chat,verto,mod_verto6 total.
哈哈,很清楚了
dest_proto 如果为 sip,那么 mod_sofia 来处理 chat 发送
dest_proto 如果为 verto,那么 mod_verto 来处理 chat 发送
以此类推,可以发到 会议,会议里面可以 chat, FS 的设计好牛
发送之后怎么看结果呢,怎么看 reply ?
答案是 SMS::DELIVERY_REPORT 子类,主键应该是 subject
下面是二个事件:
RECV EVENT
Event-Subclass: SMS::SEND_MESSAGE
Event-Name: CUSTOM
Core-UUID: b98d6556-a3cb-4b2b-8cca-a83386abbcfd
FreeSWITCH-Hostname: debian12
FreeSWITCH-Switchname: debian12
FreeSWITCH-IPv4: 192.168.31.213
FreeSWITCH-IPv6: ::1
Event-Date-Local: 2025-03-09 19:36:34
Event-Date-GMT: Sun, 09 Mar 2025 11:36:34 GMT
Event-Date-Timestamp: 1741520194385173
Event-Calling-File: switch_cpp.cpp
Event-Calling-Function: Event
Event-Calling-Line-Number: 315
Event-Sequence: 940
proto: sip
dest_proto: sip
from: 1004@192.168.0.81
from_full: sip:1004@192.168.0.81
to: sip:1001@192.168.31.73:6666
subject: 12345678abcd
type: text/plain
hint: the hint
replying: true
sip_profile: internal
skip_global_process: true
dest_proto: sip
Nonblocking-Delivery: true
skip_global_process: true
Content-Length: 4
Content-Length: 4Hi
RECV EVENT
Event-Subclass: SMS::DELIVERY_REPORT
Event-Name: CUSTOM
Core-UUID: b98d6556-a3cb-4b2b-8cca-a83386abbcfd
FreeSWITCH-Hostname: debian12
FreeSWITCH-Switchname: debian12
FreeSWITCH-IPv4: 192.168.31.213
FreeSWITCH-IPv6: ::1
Event-Date-Local: 2025-03-09 19:36:34
Event-Date-GMT: Sun, 09 Mar 2025 11:36:34 GMT
Event-Date-Timestamp: 1741520194385173
Event-Calling-File: mod_sms.c
Event-Calling-Function: send_report
Event-Calling-Line-Number: 48
Event-Sequence: 941
Status: Accepted
Core-UUID: b98d6556-a3cb-4b2b-8cca-a83386abbcfd
FreeSWITCH-Hostname: debian12
FreeSWITCH-Switchname: debian12
FreeSWITCH-IPv4: 192.168.31.213
FreeSWITCH-IPv6: ::1
Event-Date-Local: 2025-03-09 19:36:34
Event-Date-GMT: Sun, 09 Mar 2025 11:36:34 GMT
Event-Date-Timestamp: 1741520194385173
Event-Calling-File: switch_cpp.cpp
Event-Calling-Function: Event
Event-Calling-Line-Number: 315
Event-Sequence: 940
proto: sip
dest_proto: sip
from: 1004@192.168.0.81
from_full: sip:1004@192.168.0.81
to: sip:1001@192.168.31.73:6666
subject: 12345678abcd
type: text/plain
hint: the hint
replying: true
sip_profile: internal
skip_global_process: true
dest_proto: sip
Nonblocking-Delivery: true
skip_global_process: true
请关注 subject 和 Status
另外,我目前测试的结果是,如果要获得准确的 Status,那么需要传 blocking 为 true,但我不确定我的测试结果是否 OK
请参考下面这段代码:
local event = freeswitch.Event("CUSTOM", "SMS::SEND_MESSAGE");
event:addHeader("proto", "sip");
event:addHeader("dest_proto", "sip");
event:addHeader("from", "1004@192.168.0.81");
event:addHeader("from_full", "sip:1004@192.168.0.81");
event:addHeader("to", "sip:1001@192.168.31.73:6666");
event:addHeader("subject", "12345678abcd");
event:addHeader("type", "text/plain");
event:addHeader("hint", "the hint");
event:addHeader("replying", "true");
event:addHeader("sip_profile", "internal");
event:addHeader("blocking", "true"); -- vip
event:addBody("Hi\r\n");
freeswitch.consoleLog("info", event:serialize());
event:fire();
把 MicroSIP 关闭掉
fs_cli
console loglevel 0
/event plain all
运行上面的 lua 程序
过一会就能收到 DELIVERY_REPORT 事件,Status 为 Failure
要怎么设置 proxy呢?
笔者查了半天资料,终于找到了答案,可参考下面这个头:
contact-uri: sip:1002@192.168.0.99:11710;fs_path=sip:192.168.207.156:5060
重点是不要加 `<>`,加了就不好使
我查的资料讲的是发送 SIP NOTIFY 消息,那么发送SIP MESSAGE是否也如此
目前我还没进行测试
或者干脆增加 to_sip_ip 和 to_sip_port 参数
如何处理 chat 接收呢?
回答是 chatplan
我的习惯是先修改 sip profile, 增加一个 auth-messages = false 的配置,不然FS在收到 SIP MESSAGE 请求时会要求SIP 挑战,很麻烦
chatplan 里面能做什么?
mod_sms 有下面几个 app:
show modules mod_sms
type,name,ikey,filename
application,final,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,fire,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,info,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,reply,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,send,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,set,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,stop,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,system,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
application,unset,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
chat,GLOBAL_SMS,mod_sms,/usr/local/freeswitch/mod/mod_sms.so
目前我没有一个一个进行研究
这是自带的 chatplan:
<?xml version="1.0" encoding="utf-8"?>
<include><context name="default"><extension name="demo"><condition field="to" expression="^(.*)$"><!-- <action application="lua" data="test.lua"/> --><action application="reply" data="Hello, you said: ${body}"/></condition></extension></context>
</include>
lua 要怎么写呢?
对象不再是 session, 而是 message, message 有哪些方法呢?
- chat_send
- chat_execute
- setPriority
- addBody
- fire
- getType
- getHeader
- addHeader
- merge
- serialize
- getBody
下面是一个简单的 test.lua:
message:chat_execute("info")
message:chat_execute("final")
消息落地 ,不再转发,回 202
上面讲的是发送对话外 MESSAGE
那么对话内 MESSAGE 要怎么发送呢?
要研究下,除了 uuid_chat 是否还有别的?
mod_dptools 里面有个叫 chat 的 api, 很多资料都讲过了,这里不再赘述
其实弄了半天我发现自己还是没完全搞明白,以后再研究吧
相关文章:
FreeSWITCH 之 chat
要把 FreeSWITCH 之 chat 完全研究清楚,似乎不容易 发送,路由,接收 跟哪些模块有关 等等 咱一边查资料,一边整理,不着急 先看看 Kamalio 怎么发 MESSAGE loadmodule "uac.so"route[uac_send_message] {…...
本地fake server,
C# 制作的系统级tcp 重定向,整个系统只要有访问指定url,返回自定义内容到访问端。不局限在浏览器单一方面。 再者请理解这个图的含金量,服务器down机都可以模拟。 用途那就太多了,当然很多用途都不正当。嘿嘿 如果你很想要源代…...
用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏
大家好!今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括:控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂,适合初学者学习和实践。 游戏功能概述 玩家控制:使用键…...
解析 SQL,就用 sqlparse!
文章目录 解析 SQL,就用 sqlparse!一、背景:为什么你需要 sqlparse?二、什么是 sqlparse?三、如何安装 sqlparse?四、简单易用的库函数1\. parse(sql)2\. format(sql, **options)3\. split(sql)4\. get_typ…...
Flask 全栈学习指南
一、Flask 基础核心 1. 核心概念与启动流程 WSGI 与 Werkzeug Flask 基于 Werkzeug 实现 WSGI 协议,处理 HTTP 请求到响应的全流程。手动实现 WSGI 应用示例:def simple_app(environ, start_response):status 200 OKheaders [(Content-type, text/pla…...
git的使用
1、git的安装(windows10) 网址:Git - Downloading Package全部默认安装就好。在任意文件夹中右击,列表中出现git即为安装成功。 2、git的基本配置 右击打开git bash设置用户信息 git config --global user.name "username…...
MQTT协议下温度数据上报观测云最佳实践
MQTT 介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的、基于发布/订阅模式的消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计,广泛应用于物联网(IoT…...
什么是Flask
Flask是Python中一个简单、灵活和易用的Web框架,适合初学者使用。它提供了丰富的功能和扩展性,可以帮助开发者快速构建功能完善的Web应用程序。 以下是Python Flask框架的一些特点和功能: Flask 是一个使用 Python 编写的轻量级 WSGI 微 Web…...
数字投屏叫号器-发射端python窗口定制
窗口 本系列前章介绍,叫号器的显示端,完成了视频音频的形成和传输的介绍。本章节开始定制小窗口。 最终实现,处于桌面最前端,发送指令,集合前篇即可完成: 处理本地text.txt更新,随之被rtsp采集…...
文本转语音-音画适时推送rtsp并播放
文本语音 rtsp适时播放叫号系统的底层逻辑 发布Linux, unix socket 和window win32做为音频源的 python10下的(ffmpeg version 7.1) 可运行版本. 这两天在弄这个,前2篇是通过虚拟声卡,达到了最简单的一个逻辑,播放文本就从声卡发声࿰…...
clickhouse修改和删除数据
标题:ClickHouse中修改和删除数据的简易指南 在大数据时代,数据库技术的发展日新月异。作为一款专为实时分析设计的列式数据库管理系统,ClickHouse因其高效的查询性能而受到欢迎。照这么推测的话,对于那些习惯于传统SQL操作&…...
2025CSP-J 冲刺训练(1):二分
2025CSP-J 冲刺训练 1 一、二分查找函数1. 头文件2. 前提条件3. 功能函数3.1 lower_bound3.2 upper_bound 二、二分答案模板1. 前提条件2. 模板 三、典型例题1. 寻找固定的和1.1 审题1.2 分析1.3 参考答案 2. Snuke Festival2.1 审题2.2 分析2.3 参考答案 四、拓展例题1. 晒衣服…...
无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战
文章目录 前言1. Windows 开启远程桌面2. Linux安装rdesktop工具3. Win安装Cpolar工具4. 配置远程桌面地址5. 远程桌面连接测试6. 设置固定远程地址7. 固定地址连接测试 前言 如今远程办公已经从一种选择变成了许多企业和个人的必修课,而如何在Linux系统上高效地访…...
Win10 访问 Ubuntu 18 硬盘
目录 方案一:使用Samba共享服务Ubuntu 18 端配置Windows 10 端访问 方案二:使用 SSHFS(需在 Windows 上安装 SSH 客户端)Ubuntu 18 端配置Windows 10 端配置 方案三:使用 FTP 服务Ubuntu 18 端配置Windows 10 端访问 方…...
算法.习题篇
算法 — 地大复试 模拟 while循环和MOD循环计数 1.约瑟夫问题 http://bailian.openjudge.cn/practice/3254 using namespace std;bool isNoPeople(vector<bool> c)//判断当前数组是否一个小孩都没有了 {bool nopeople true;for (bool ival : c){if ( ival true)nop…...
upload-labs文件上传
第一关 上传一个1.jpg的文件,在里面写好一句webshell 保留一个数据包,将其中截获的1.jpg改为1.php后重新发送 可以看到,已经成功上传 第二关 写一个webshell如图,为2.php 第二关在过滤tpye的属性,在上传2.php后使用b…...
一二三应用开发平台——能力扩展:多数据源支持
背景 随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源应运而生。 技术选型 MyBatis-Plus 的官网提供了两种多数据源扩展插件:开源生态的 <font style"color:rgb(53, 56, 65);">dynamic-datasource</fon…...
【Python】整数除法不正确,少1的问题,以及有关浮点数转换的精度问题
1. 问题 今天在做leetcode 不同路径 的时候发现了个问题 对于m53 n4class Solution:def uniquePaths(self, m: int, n: int) -> int:rlt 1for i in range(0, m-1):rlt * (m n - 2 - i)for i in range(0, m-1):rlt / (i 1)return int(rlt)为什么这个结果是 26234class S…...
【贪心算法】简介
1.贪心算法 贪心策略:解决问题的策略,局部最优----》全局最优 (1)把解决问题的过程分成若干步 (2)解决每一步的时候,都选择当前看起来的“最优”的算法 (3)“希望”得…...
狮子座大数据分析(python爬虫版)
十二星座爱情性格 - 星座屋 首先找到一个星座网站,作为基础内容,来获取信息 网页爬取与信息提取 我们首先利用爬虫技术(如 Python 中的 requests 与 BeautifulSoup 库)获取页面内容。该页面(xzw.com/astro/leo/&…...
【商城实战(20)】商品管理功能深化实战
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
YC 孵化项目 Pinch:实时语音翻译视频会议平台;Mistral OCR:能处理多语言多模态复杂文档丨日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 …...
数据库原理6
1.数据是信息的载体 2.数据库应用程序人员的主要职责:编写应用系统的程序模块 3.关系规范化理论主要属于数据库理论的研究范畴 4.数据库主要有检索和修改(包括插入,删除,更新)两大操作 5.概念模型又称为语义模型。…...
深度学习与大模型基础-向量
大家好!今天我们来聊聊向量(Vector)。别被这个词吓到,其实向量在我们的生活中无处不在,只是我们没注意罢了。 1. 向量是什么? 简单来说,向量就是有大小和方向的量。比如你从家走到学校&#x…...
OpenManus:3小时复刻 Manus(OpenManus安装指南)
项目地址:GitHub - mannaandpoem/OpenManus: No fortress, purely open ground. OpenManus is Coming. 安装指南 我们提供两种安装方式。推荐使用方式二(uv),因为它能提供更快的安装速度和更好的依赖管理。 方式一:使…...
2025年渗透测试面试题总结-快某手-安全实习生(一面、二面)(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 快某手-安全实习生 一面 一、Linux操作:查看进程PID的5种方法 二、Elasticsearch&#x…...
【微信小程序】uniapp开发微信小程序
uniapp开发微信小程序 1、上拉加载 下拉刷新 import { onReachBottom, onPullDownRefresh } from dcloudio/uni-app;配置允许下拉刷新: {"path" : "pages/pet/pet","style" : {"navigationBarTitleText" : ""…...
动态规划_最大子数组和
53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组是数组中的一个连续部分。 示例 1:输入:nums [-2,1,-3,4,-1,2,1,-5,4] …...
从零开始的python学习(五)P71+P72+P73+P74
本文章记录观看B站python教程学习笔记和实践感悟,视频链接:【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…...
Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)
目录 一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下) 二、Element-Plus常用组件使用。 (1)el-input。(input输入框) <1>正常状态的el-input。 <2>el-input的disable状态。 <3…...
HarmonyOS学习第18天:多媒体功能全解析
一、开篇引入 在当今数字化时代,多媒体已经深度融入我们的日常生活。无论是在工作中通过视频会议进行沟通协作,还是在学习时借助在线课程的音频讲解加深理解,亦或是在休闲时光用手机播放音乐放松身心、观看视频打发时间,多媒体功…...
多模态融合的分类、跨模态对齐的方法
两者的主要区别 维度扩模态对齐扩模态融合目标对齐模态间的表示,使其语义一致融合模态间的信息,生成联合表示关注点模态间的相似性和语义一致性模态间的互补性和信息整合空间映射到共享的公共语义空间生成新的联合特征空间方法对比学习、共享空间、注意…...
软件高级架构师 - 软件工程
补充中 测试 测试类型 静态测试 动态测试 测试阶段 单元测试中,包含性能测试,如下: 集成测试中,包含以下: 维护 遗留系统处置 高水平低价值:采取集成 对于这类系统,采取 集成 的方式&…...
Uniapp项目运行到微信小程序、H5、APP等多个平台教程
摘要:Uniapp作为一款基于Vue.js的跨平台开发框架,支持“一次开发,多端部署”。本文将手把手教你如何将Uniapp项目运行到微信小程序、H5、APP等多个平台,并解析常见问题。 一、环境准备 在开始前,请确保已安装以下工具…...
【JavaWeb12】数据交换与异步请求:JSON与Ajax的绝妙搭配是否塑造了Web的交互革命?
文章目录 🌍一. 数据交换--JSON❄️1. JSON介绍❄️2. JSON 快速入门❄️3. JSON 对象和字符串对象转换❄️4. JSON 在 java 中使用❄️5. 代码演示 🌍二. 异步请求--Ajax❄️1. 基本介绍❄️2. JavaScript 原生 Ajax 请求❄️3. JQuery 的 Ajax 请求 &a…...
2025-03-10 吴恩达机器学习1——机器学习概述
文章目录 1 监督学习1.1 回归1.2 分类 2 无监督学习2.1 聚类2.2 异常检测2.3 降维 3 使用 Jupyter Notebook 1959 年,Arthur Samuel 将机器学习定义如下: Field of study that gives computers the ability to learn without being explicitly pro…...
Spring Boot整合WebSocket
目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket? ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…...
PostgreSQL - Windows PostgreSQL 下载与安装
Windows PostgreSQL 下载与安装 1、PostgreSQL 下载 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 2、PostgreSQL 安装 启动安装程序 -> 点击 【Next】 指定安装路径 -> 点击 【Next】 默认勾选 -> 点击 【Next】 指…...
【Java面试题汇总】Java面试100道最新合集!
1.说说你对面向对象的理解 得分点 封装,继承,多态、概念、实现方式和优缺点 面向对象的三大基本特征是:封装、继承、多态。 封装:将对象的状态和行为包装在一个类中并对外界隐藏实现的细节,可以通过访问修饰符控制成员的访问权限,…...
【LLM】kimi 1.5模型架构和训练流程
note 推出两个多模态模型,深度思考模型 long-CoT 对标 o1,通用模型 short-CoT 模型对标 gpt-4o。 文章目录 note一、kimi 1.5模型训练流程预训练SFT训练long-CoT SFTRL训练long2short 小结Reference 一、kimi 1.5模型训练流程 推出两个多模态模型&…...
Android Studio 配置国内镜像源
Android Studio版本号:2022.1.1 Patch 2 1、配置gradle国内镜像,用腾讯云 镜像源地址:https\://mirrors.cloud.tencent.com/gradle 2、配置Android SDK国内镜像 地址:Index of /AndroidSDK/...
永洪科技深度分析实战,零售企业的销量预测
随着人工智能技术的不断发展,智能预测已经成为各个领域的重要应用之一。现在,智能预测技术已经广泛应用于金融、零售、医疗、能源等领域,为企业和个人提供决策支持。 智能预测技术通过分析大量的数据,利用机器学习和深度学习算法…...
Pytorch实现之利用CGAN鉴别真假图像
简介 简介:利用生成对抗网络来鉴别是真图像还是假图像。 论文题目:Detection and Identification of Fake Images Using Conditional Generative Adversarial Networks (CGANs) (基于条件生成对抗网络(CGAN)的假图像检测与识别) 会议:16th IEEE International Confer…...
开源模型时代的 AI 开发革命:Dify 技术深度解析
开源模型时代的AI开发革命:Dify技术深度解析 引言:AI开发的开源新纪元 在生成式AI技术突飞猛进的2025年,开源模型正成为推动行业创新的核心力量。据统计,全球超过80%的AI开发者正在使用开源模型构建应用,这一趋势不仅…...
网络DNS怎么更改?
访问速度慢或某些网站无法打开?改变网络DNS设置可能会帮助解决这些问题。本文将详细介绍如何更改网络DNS,包括更改的原因、具体步骤。 一、为什么要更改DNS? 更改DNS的原因有很多,以下是一些主要的考虑因素:某些公共DNS服务器的响应速度比…...
计算机网络篇:基础知识总结与基于长期主义的内容更新
基础知识总结 和 MySQL 类似,我同样花了一周左右的时间根据 csview 对计算机网络部分的八股文进行了整理,主要的内容包括:概述、TCP 与 UDP、IP、HTTP,其中我个人认为最重要的是 TCP 这部分的内容。 在此做一篇目录索引…...
使用miniforge安装python并用pycharm打开使用
1.安装miniforge 参考文章:https://blog.csdn.net/loujiand/article/details/119976302 https://blog.csdn.net/qq_41946216/article/details/129481760 下载地址: 先从github下载miniforge:https://github.com/conda-forge/miniforge 2.使用conda命令…...
如何实现wordpress搜索自字义字段内容
有些网站需要根据自定义段字的内容来做为搜索项,比如,房产中介公司wordpress网站,需要搜索同一区域内容的楼盘,然后展示出内容。 不废话了,在function.php直接加上代码 add_action(posts_search, function($search, …...
【华为OD机考真题】- 星际篮球争霸赛(Java)
1. 题目描述 具体题目描述如下: 在星球争霸篮球赛对抗赛中,最大的宇宙战队希望每个人都能拿到 MVP,MVP 的条件是单场最高分得分获得者。 可以并列,所以宇宙战队决定在比赛中,尽可能让更多队员上场,并且让所有得分的选手…...
LeetCode 376. 摆动序列 java题解
https://leetcode.cn/problems/wiggle-subsequence/description/ 只要不满足摆动条件,就不更新count和prediff 当 prevDiff 取等号时,比如 prevDiff 0,在这种情况下,如果 currDiff > 0,说明从持平状态转变为上升…...