FreeSWITCH Record

news2024/9/22 21:27:56

1概述

FreeSWITCH https://signalwire.com/freeswitch是一个开源的电话交换平台。官方给它的定义是–世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台。由这个定义我们可以得出以下几点:

  • FreeSWITCH是跨平台的。它能原生地运行于Windows、MaxOSX、Linux、BSD 及Solaris等诸多32/64位平台(甚至,也有人成功地将它应用于Linksys NLS2平台及Raspberry Pi 上)。

  • FreeSWITCH具有很强的可伸缩性。FreeSWITCH从一个简单的软电话客户端到运营商用级的软交换设备几乎无所不能。

  • FreeSWITCH是免费的。它采用MPL1.1协议授权,意味着任何人都可以免费使用并获取源代码,任何人都可以修改、发布甚至出售自己的应用。

  • FreeSWITCH 支持 SIP、H323、Skype、Google Talk 等多种通信协议,并能很容易地与各种开源的 PBX系统(如 sipXecs、Call Weaver、Bayonne、YATE及 Asterisk 等通信,它也可以与商用的交换系统(如华为、中兴的交换机或思科、Avaya的交换机等)互通。

在这里插入图片描述

  • FreeSWITCH可以用作一个简单的交换引擎、一个PBX、一个媒体网关或媒体支持IVR的服务器,或在运营商的IMS网络中扭当CSCF或ApplicationServer
  • FreeSWITCH遵循相关RFC并支持很多高级的SIP特性,如Presence、BLF、SLA以及TCP、TLS和SRTP等。它也可以用作一个SBC进行透明的SIP代理(proxy)以支持其他媒体,如T.38等。
  • FreeSWITCH 支持宽带及窄带语音编码,电话会议桥可同时支持8、12、16、24、32及48kHz的语音。
  • 从技术上讲,FreeSWITCH是一个B2BUA9,它作为一个背靠背的用户代理用来帮助通信的双方进行实时的语音视频通信。

在这里插入图片描述

1.1模块说明

  1. mod_abstraction:用于创建新的API命令,可以基于原有API创建别名或快捷方式 。
  2. mod_avmd:高级语音邮件检测,是mod_vmd的高级版 。
  3. mod_commands:提供大部分系统的命令API 。
  4. mod_conference:支持多人语音和视频会议 。
  5. mod_directory:允许用户通过姓名进行呼叫 。
  6. mod_distributor:帮助将呼叫分发到不同的网关 。
  7. mod_dptools:提供大部分系统的App 。
  8. mod_easyroute:根据号码进行路由,适用于大规模DID 。
  9. mod_enum:通过ENUM查询找到用户的SIP地址,并提供enum Dialplan 。
  10. mod_esf:提供通过Multicast方法进行组拨的功能 。
  11. mod_esl:实现两个FreeSWITCH间的ESL对接 。
  12. mod_expr:提供表达式计算 。
  13. mod_fifo:先进先出队列,适用于呼叫中心排队 。
  14. mod_lcr:最省钱的路由模块,根据数据库配置的路由信息和费率找到最省钱的路由 。
  15. mod_limit:用于系统资源限制 。
  16. mod_memcache:与Memcache交互,类似于远程的Memcache数据库 。
  17. mod_mongo:与MongoDB交互,类似于mod_memcache 。
  18. mod_sms:处理文本消息,如收发SIP MESSAGE消息等 。
  19. mod_xml_curl:从远程HTTP服务器获取XML配置 。
  20. mod_xml_ldap:从远程LDAP服务器获取XML配置 。

此外,还有一些模块提供自动语音识别及语音合成的功能,例如:

  • mod_cepstral:使用Cepstral语音库支持TTS 。
  • mod_flite:使用Festival Lite库支持TTS,但只支持英文 。
  • mod_pocketsphinx:使用pocketsphinx库支持语音识别 。
  • mod_unimrcp:通过uniMRCP协议与其他ASR/TTS产品对接 。

这些模块共同构成了FreeSWITCH的核心功能,使其能够灵活地适应各种电话和通信需求。

在这里插入图片描述

1.2配置文件

FreeSWITCH的配置文件主要位于conf/目录下,由一系列XML格式的配置文件组成。以下是一些重要的配置文件及其说明:

  1. freeswitch.xml:作为最顶层的配置文件,它通过include语句引入其他XML文件,组合成一个大的XML配置文件。
  2. vars.xml:包含一些常用的全局变量,这些变量可以在配置文件中通过$${var}来使用。
  3. dialplan/default.xml:这是默认的拨号计划,用于定义呼叫路由和处理规则。
  4. directory/default/*.xml:包含SIP用户的配置信息,通常每个用户都有自己的XML配置文件。
  5. sip_profiles/internal.xmlsip_profiles/external.xml:分别用于配置内部和外部的SIP用户代理(UA),监听不同的端口,用于不同网络环境的SIP通信。
  6. autoload_configs/modules.conf.xml:决定FreeSWITCH启动时自动加载哪些模块,而autoload_configs/目录下的其他*.xml文件通常用于模块的配置。
  7. ivr_menus目录:存放一些默认的IVR菜单示例。
  8. mrcp_profiles目录:包含与第三方语音合成和语音识别系统对接的相关配置。

在进行配置时,可以通过执行reloadxml命令或使用快捷键F6来使新的配置生效。此外,还可以通过API命令如global_getvar来获取全局变量的值。

这些配置文件共同工作,使FreeSWITCH能够适应各种电话和通信需求。如果需要对FreeSWITCH进行特定的配置,如添加SIP网关、配置呼入呼出规则等,可以在相应的配置文件中进行设置,并使用上述方法使配置生效。

freeswitch的配置文件非常重要,几乎所有的功能都离不开配置文件

默认安装路径为:C:\Program Files\FreeSWITCH
配置文件路径:C:\Program Files\FreeSWITCH\conf

conf/目录和文件 说明
——vars.xml 基本的配置
——autoload_configs/ 目录,存放各个模块的配置文件
——modules.conf.xml 配置FreeSWITCH启动时装载的模块
——*.xml 基本上每个模块都有相应的一个配置文件
——dialplan/ 拨号计划
——default.xml 用于内部用户路由的拨号计划配置
——public.xml 外部来话路由的拨号计划配置
——directory/ 用户目录
——default/ 默认的用户目录配置
——*.xml SIP用户,每个用户都有一个配置文件
——sip_profiles/ SIP配置文件
——internal.xml 一般SIP profile,或称作一个SIP-UA,监听在本地IP及端口
——external.xml 另一个SIP-UA,用作外部连接
——freeswitch.xml freeswitch.xml 引入各个配置文件,整合

1.3运行

1.3.1Linux

FreeSWITCH的启动方式通常有以下几种:

  1. 默认启动

    • 在安装FreeSWITCH后,通常可以通过系统的服务管理工具来启动。例如,在基于Systemd的系统上,可以使用以下命令:
      sudo systemctl start freeswitch
      
  2. 手动启动

    • 可以直接通过命令行手动启动FreeSWITCH。首先,需要定位到FreeSWITCH的安装目录,然后执行可执行文件:
      ./bin/freeswitch
      
  3. 后台启动

    • 有时候可能需要让FreeSWITCH在后台运行,可以通过添加-b参数来实现:
      ./bin/freeswitch -b
      
  4. 调试模式启动

    • 如果需要在开发或调试过程中启动FreeSWITCH,可以使用-nc参数来关闭控制台日志,以便在控制台中直接与FreeSWITCH交互:
      ./bin/freeswitch -nc
      
  5. 配置文件指定

    • 如果需要使用特定的配置文件启动FreeSWITCH,可以使用-c参数指定配置文件的路径:
      ./bin/freeswitch -c /path/to/custom.conf
      
  6. 日志级别设置

    • 可以通过-v参数后跟日志级别来设置FreeSWITCH的日志详细程度,例如:
      ./bin/freeswitch -v 3
      
  7. 使用脚本来启动

    • 在某些情况下,FreeSWITCH的安装可能包含一个启动脚本,该脚本可能位于/usr/local/bin/或其他自定义的可执行路径下,可以通过以下命令启动:
      sudo freeswitch start
      
  8. 使用环境变量

    • 在某些操作系统上,可以通过设置环境变量来指定FreeSWITCH的运行方式,例如,使用FREESWITCH_ARGS来添加启动参数。

确保在启动FreeSWITCH之前,你已经根据需要配置好了所有必要的设置,并且检查了系统防火墙和网络设置,以避免任何潜在的连接问题。如果FreeSWITCH是作为服务安装的,通常还会有相应的命令来停止、重启或查看服务状态。

1.3.2Windows

在Windows环境下启动FreeSWITCH通常有以下几个步骤:

  1. 下载安装包:首先需要从FreeSWITCH的官方网站下载适用于Windows的安装包,选择适合自己系统的版本(32位或64位)。

  2. 安装FreeSWITCH:下载完成后,运行安装程序,按照提示完成安装。默认情况下,FreeSWITCH会安装在C:\Program Files\FreeSWITCH路径下。

  3. 配置文件修改:安装完成后,可能需要修改配置文件,例如vars.xml中的密码和本地IP地址设置,以确保FreeSWITCH可以正确运行。

  4. 启动FreeSWITCH:可以通过双击桌面上的快捷方式或通过命令行启动FreeSWITCH。在命令行中,可以使用以下命令来启动FreeSWITCH:

    cd C:\Program Files\FreeSWITCH
    FreeSwitchConsole -nonat
    

    其中-nonat参数用于关闭自动NAT检测,适用于内网环境。

  5. 使用控制台:启动后,可以使用FreeSWITCH的控制台fs_cli来管理FreeSWITCH。控制台客户端fs_cli允许用户输入命令来控制或查询FreeSWITCH的状态。

  6. 注册SIP客户端:安装并启动FreeSWITCH后,可以使用SIP客户端软件(如MicroSIP)注册到FreeSWITCH,并进行呼叫测试。

  7. 服务化运行:在Windows上,还可以将FreeSWITCH注册为Windows服务,以实现开机自启动和后台运行的功能。

请注意,以上步骤可能会根据FreeSWITCH的具体版本和Windows系统环境有所不同。如果需要更详细的安装和配置指导,可以参考FreeSWITCH的官方文档或社区提供的教程。

1.3.3常用命令

一般来说,FreeSWITCH不需要任何命令行参数就可以启动,但在某些情况下,你需要以一些特殊的参数启动。使用freeswitch-h或freeswitch-help或freeswitch --help会显示以下信息:

#freeswitch -help

也可以采用fs_cli连接FreeSWITCH服务。

  • 查看注册用户
sofia status profile internal reg

1.4API与APP

在FreeSWITCH中,API(应用程序接口)和APP(应用程序)是两个不同的概念,但它们共同协作以实现呼叫处理和通信任务。下面是对这两个概念的基本理解:

1.4.1API(Application Programming Interface)

  • 定义:API是一组预定义的函数、协议和工具,用于构建软件应用。在FreeSWITCH中,API允许开发者通过编程方式与FreeSWITCH服务器交互,执行各种操作,如发起呼叫、挂断、转接等。
  • 用途:API使得开发者可以远程控制FreeSWITCH的行为,实现复杂的呼叫流程和业务逻辑。
  • 类型:FreeSWITCH提供了多种API接口,包括但不限于CLI(命令行界面)、ESL(Event Socket Library,一种轻量级的协议,用于在FreeSWITCH和外部应用程序之间传输事件和命令)、HTTP API等。
  • 实现方式:API可以通过各种编程语言实现,如Python、PHP、Java等,只要能够发送请求到FreeSWITCH服务器并解析响应。

1.4.2APP(Application)

  • 定义:在FreeSWITCH的上下文中,APP指的是内建于FreeSWITCH的模块或应用程序,它们实现了特定的呼叫处理逻辑或功能。例如,answer APP在呼叫进入时自动应答呼叫,playback APP用于播放音频等。
  • 用途:APP用于执行具体的任务,如录音、播放、转接、会议等,它们是FreeSWITCH处理呼叫的基本单元。
  • 自定义:除了内建的APP,开发者也可以根据需要编写自定义APP来实现特定的业务逻辑。
  • 执行:APP通常通过拨号计划(Dialplan)中的指令或API调用来执行。例如,在Dialplan中使用app::answer来自动应答来电。

1.4.3理解它们的关系

  • 协作:API和APP在FreeSWITCH中共同工作。API允许外部系统或开发者控制FreeSWITCH的行为,而APP是FreeSWITCH内部执行具体任务的模块。
  • 控制与执行:API更多关注于控制层面,即告诉FreeSWITCH要做什么;APP则关注于执行层面,即实际执行API所触发的任务。
  • 灵活性:通过API,开发者可以灵活地控制FreeSWITCH的行为,而APP提供了执行这些控制的手段。

理解这两个概念有助于更好地使用FreeSWITCH构建通信应用程序,无论是通过编程接口实现高级的呼叫控制,还是通过内建或自定义的应用程序模块来处理具体的呼叫任务。

1.5目录结构

FreeSWITCH是一个开源的软PBX和会议软件,其目录结构设计得相对模块化,以便于开发者和系统管理员理解和使用。以下是FreeSWITCH的典型目录结构,以及每个目录的基本功能:

freeswitch/
├── bin/            # 包含可执行文件和脚本
│   ├── console       # FreeSWITCH命令行界面(fs_cli)的启动脚本
│   ├── freeswitch    # FreeSWITCH主服务启动脚本
│   └── ...           # 其他脚本和工具
├── conf/           # 配置文件目录
│   ├── autoload_configs/  # 用于存放自动加载的配置文件
│   ├── directory/    # 目录服务配置
│   ├── dialplan/     # 拨号计划配置文件
│   ├── ivr/          # IVR(Interactive Voice Response)配置
│   ├── sip_profiles/ # SIP配置文件
│   └── ...           # 其他配置文件
├── docs/           # 文档目录
│   ├── api/          # API文档
│   ├── html/         # HTML格式的文档
│   └── ...           # 其他文档
├── lib/            # 库文件目录
│   ├── mod/          # FreeSWITCH模块
│   └── ...           # 其他库文件
├── logs/           # 日志文件输出目录
│   ├── cdrb/         # CDR(呼叫详细记录)数据库日志
│   ├── diamond/     # 钻石路由日志
│   ├── switch.log    # 主日志文件
│   └── ...           # 其他日志文件
├──录  src/           # 源代码目录
│   ├── mod/          # 模块源代码
│   └── ...           # 其他源代码
├── sounds/         # 系统提示音目录
│   ├── en/           # 英文提示音
│   └── ...           # 其他语言提示音
├── scripts/        # 脚本目录
│   ├── autoprovision/ # 自动配置脚本
│   ├── cli/          # 命令行界面脚本
│   └── ...           # 其他脚本
└── sql/            # SQL脚本目录
    ├── cdrb/         # CDR数据库脚本
    └── ...           # 其他SQL脚本

请注意,这个目录结构可能会根据FreeSWITCH的不同版本和安装方式有所不同。此外,用户在安装和配置FreeSWITCH时可能会根据自己的需求添加或修改目录。

系统管理员和开发者通常会频繁与bin/conf/logs/scripts/等目录交互,因为这些目录包含了启动脚本、配置文件、日志记录和辅助脚本等重要组件。而src/目录则包含了FreeSWITCH的源代码,对于希望对FreeSWITCH进行修改或贡献代码的开发者来说非常重要。

1.6Linux(Ubuntu/Centos7)安装FreeSWITCH

Centos7部署FreeSWITCH参考文档https://github.com/lyjlyx/study-note/blob/7a5f942a10d19764315ad05af358af98f62549ca/FreeSwitch%E5%AD%A6%E4%B9%A0/Freeswitch%E5%AE%89%E8%A3%85%2B%E6%93%8D%E4%BD%9C%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB.md?plain=1#L52

1.6.1更新软件包列表

首先,打开终端,以管理员权限运行以下命令来更新软件包列表:

sudo apt update
sudo apt upgrade 
********************************************************************************************************************************
sudo yum update

1.6.2安装依赖包

FreeSWITCH的编译安装需要一系列依赖包。运行以下命令来安装这些依赖包:

sudo apt install -y build-essential autoconf automake libtool wget python3-dev libjpeg-dev libncurses5-dev libsqlite3-dev libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libopus-dev liblua5.3-dev libsndfile1-dev libedit-dev yasm libtiff-dev libavformat-dev libswscale-dev libavresample-dev libpq-dev libreadline-dev lua5.2 lua5.2-doc liblua5.2-dev libspandsp-dev
********************************************************************************************************************************
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel libatomic

以下所有安装都在/usr/local/src目录下执行

  • 安装cmake

    wget https://cmake.org/files/v3.17/cmake-3.17.2.tar.gz
    tar vzxf cmake-3.17.2.tar.gz
    cd cmake-3.17.2
    ./configure
    make -dj
    make install
    ************************************************************************************************************
    wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
    tar -zxvf cmake-3.7.2.tar.gz
    cd cmake-3.7.2
    ./bootstrap --prefix=/usr/local
    make
    make install
    /usr/local/bin/cmake --version
    
  • 安装libuuid(手机热点)

    wget --no-check-certificate https://jaist.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz
    tar -zxvf libuuid-1.0.3.tar.gz
    cd libuuid-1.0.3
    ./configure 
    make 
    make install # 重新执行libks的 cmake . #### 问题解决。然后执行libks的 make make instal
    
  • 安装libks

    注意:这里有个坑,使用fs.1.10.2版本的libks安装需要使用里面v1.x版本的,而不是直接下载源码使用,原因是该通信包源码中master分支里头的版本是libks2.o的,会导致fs解析不到这个东西,导致安装https://www.cnblogs.com/wuchangsoft/p/16730896.html

    git clone https://github.com/signalwire/libks.git
    cd libks
    git checkout v1.x
    cmake .
    make -dj
    make install
    
  • 安装signalwire-c

    注意这里也有个坑,同上面libks一样的问题,需要切到v1.x版本的源码

    git clone https://github.com/signalwire/signalwire-c.git
    cd signalwire-c/
    git checkout v1.x
    cmake .
    make -dj
    make install
    ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc
    
  • 安装x264

    git clone http://git.videolan.org/git/x264.git
    ./configure
    make -dj
    make install
    

    注意:这一步Centos7会出现问题

    Found no assembler
    Minimum version is nasm-2.13
    If you really want to compile without asm, configure with --disable-asm.
    

    因为他需要更加高级的编译器,所以我们这边手动下载安装最新的nasm。

    wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
    tar -zxvf nasm-2.13.03.tar.gz
    cd nasm-2.13.03
    ./configure
    make
    sudo make install
    nasm -v
    

    编译安装mod_av模块

    wget http://download1.rpmfusion.org/free/el/updates/7/x86_64/x/x264-libs-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
    wget http://download1.rpmfusion.org/free/el/updates/7/x86_64/x/x264-devel-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
    rpm -hiv x264-libs-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
    rpm -hiv x264-devel-0.148-24.20170521gitaaa9aa8.el7.x86_64.rpm
    cd /usr/local/src
    git clone https://gitee.com/nwaycn/libav.git
    cd libav
    ./configure --enable-pic --enable-shared  --enable-libx264 --enable-gpl --extra-libs="-ldl"
    make                                                       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2055352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算几何,CF 993A - Two Squares

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 A - Two Squares 二、解题报告 1、思路分析 由于数据量很小,可…

《Redis核心技术与实战》学习笔记5——内存快照RDB:宕机后,Redis如何实现快速恢复?

文章目录 给哪些内存数据做快照?快照时数据能修改吗?可以每秒做一次快照吗?小结 大家好,我是大白。 上篇文章记录了 Redis 避免数据丢失的 AOF 方法。这个方法的好处,是每次执行只需要记录操作命令,需要持久化的数据量…

11.4k star! 部署清华开源的ChatGLM3,用私有化大模型无缝替换openai

转自AI技术实战 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的第三代开源模型,对话流畅、部署门槛低,测评显示其基础模型ChatGLM3-6B-Base 具有在 10B 以下的基础模型中最强的性能,同时…

ESP32CAM人工智能教学19

ESP32CAM人工智能教学19 Udp socket服务器 本课的工作模式,正好是第十四课工作模式的相反:第十四课中,ESP32Cam是客户端,运行在PC中的Python程序是服务器,就收到了摄像头数据后,调用openCV组件显示图像。而本课的ESP32Cam是服务器,Python是客户端,正好掉了个个,目的就…

蓝桥杯编程题讲解

给定一个正整数 N ,然后将 N 分解成 3 个正整数之和。 计算出共有多少种符合要求的分解方法。 要求: 分解的 3 3 3个正整数各不相同; 分解的 3 3 3个正整数中都不含数字3和7. 如:N为8,可分解为 ( 1 , 1 , 6 ) (1,1,6) (1,1,6)、 ( 1 , 2 ,…

位图与布隆过滤器 —— 海量数据处理

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 位图 一: 🔥 位图概念 二: 🔥 位图的实现思路及代码实现三: 🔥 位图的应用四:…

云原生系列 - Nginx(基础篇)

前言 学习视频:尚硅谷Nginx教程(亿级流量nginx架构设计)本内容仅用于个人学习笔记,如有侵扰,联系删学习文档: 云原生系列 - Nginx(基础篇) 1、简介 1.1、背景介绍 Nginx(enginex)是一个高性能的HTTP和…

SpringBoot教程(二十四) | SpringBoot集成日志AOP切面

SpringBoot教程(二十四) | SpringBoot集成日志AOP切面 (一)AOP 概要1. 什么是 AOP ?2. 为什么要用 AOP?3. AOP一般用来干什么?4. AOP 的核心概念 (二)Spring AOP1. 简述2…

【芯智雲城】UDStore定制化存储模组和技术解决方案

一、方案详情: UDStore芯宇存储专注行业应用,根据不同应用场景,为客户提供包括车规级、工业级、工规宽温及高耐久型的存储模组产品和技术解决方案,可提供的产品和解决方案类型包括如下: 二、关键技术: 1&…

WLAN DNS proxy settings (Win 10)

WLAN DNS proxy settings (Win 10) 114.114.114.114 8.8.8.8

Ubuntu 22.04 安装 MySQL 8

Ubuntu 22.04 安装 MySQL 8 本文描述了Ubuntu安装MySQL 8的方法 CentOS7 的安装方法点击此处跳转 Windows 的安装方法点击此处跳转 Docker 的安装方法点击此处跳转 正文开始: 在一切开始之前,建议先切换到root #输入下方名,然后输入当…

【JavaSec】Java反射知识点补充

0x03反射-补充零散知识点 文章目录 0x03反射-补充零散知识点Runtime类setAccessible(true)三种命令执行的方法static变量赋值 前面学过 就不多说final变量赋值InDirect final间接赋值static final 向大佬致敬: https://drun1baby.top Runtime类 Runtime 类中有 …

JAVA itextpdf 段落自动分页指定固定行距打印

JAVA itextpdf 段落自动分页指定固定行距打印 前言:公司有个需求,打印的合同模板左上角要加上logo的图标。但是itext pdf 自动分页会按照默认的顶部高分页打印内容的,导致从第二页开始logo图标就会把合同的内容给覆盖掉了。然后尝试了挺多方法…

Electron31-ViteAdmin桌面端后台|vite5.x+electron31+element-plus管理系统Exe

原创自研Vue3Electron31ElementPlus桌面端轻量级后台管理Exe系统。 基于最新前端技术栈Vite5.x、Vue3、Electron31、ElementPlus、Vue-I18n、Echarts实战开发桌面端高颜值后台管理模板。内置4种布局模板,支持i18n国际化、动态权限路由,实现了表格、表单、…

基于Spring Boot的大学校园生活信息平台的设计与实现pf

TOC springboot523基于Spring Boot的大学校园生活信息平台的设计与实现pf 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关…

记录阿里云服务器购买和域名绑定解析的流程

购买阿里云域名和服务器 因为App备案的原因,需要购买域名和服务器,这篇文章介绍在阿里云上购买相关服务的流程。 注册阿里云的流程比较简单这里不再赘述了。请参考我之前写的 阿里云账号注册详细教程 购买顺序:一般是先购买阿里云服务器&…

【乐吾乐大屏可视化组态编辑器】事件交互-场景交互

场景交互 在线使用:https://v.le5le.com/ 乐吾乐大屏可视化可以实现大屏页面与内嵌2d/3d场景相互通信,底层原理是利用了iframe通过postMessage发送消息。 下面以2d场景为例,实现步骤如下: 1. 首先配置场景2(被嵌入…

Postman接口测试项目实战

第 1 章 什么是接口测试 1.1、为什么要进行接口测试 目前除了特别Low的公司外,开发都是前后端分离的,就是说前端有前端的工程师进行编码,后端有后端的工程师进行编码,前后端进行数据基本都是通过接口进行交互的。 1.2、接口测…

ant design 的 tree 如何作为角色中的权限选择之一

这种功能如何弄呢&#xff1f; 编辑的时候要让权限能选中哦。 <ProForm.Item name"permissions" label{intl.formatMessage({ id: permission_choose })}><Spin spinning{loading}><TreecheckableonExpand{onExpand}expandedKeys{expandedKeys}auto…

StringJoiner以及字符串小练习

概述 String Joiner跟String Builder一样&#xff0c;亦可以看成是一个容器&#xff0c;创建之后iu里面的内容是可变的 作用 提高字符串的操作效率&#xff0c;而且代码编写特别简洁&#xff0c;但是目前市场上很少有人用 JDK8 package stringdemo;import java.util.String…