首页 > 编程语言 >freeswitch对接移动IMS参数指定和源码修改

freeswitch对接移动IMS参数指定和源码修改

时间:2023-02-27 16:46:01浏览次数:52  
标签:网关 sofia 对接 FreeSWITCH IMS 源码 external freeswitch

freeswitch对接移动IMS参数指定和源码修改

 

因为移动的IMS对接都是注册的模式对接的,所以废话不多说,直接上gateway配置数据

<include>
<gateway name="8610xxxxxxx"> //此处的格式为86+区号+号码(区号不带0)
<param name="realm" value="ims.gd.chinamobile.com"/> //运营商提供的域名
<param name="register-transport" value="udp"/>
<param name="username" value="[email protected]"/>
<param name="password" value="123456"/>
<param name="from-domain" value="ims.gd.chinamobile.com"/>
<param name="register-proxy" value="10.0.0.0"/> //运营商地址
<param name="proxy" value="ims.gd.chinamobile.com"/>
<param name="register" value="true"/>
<param name="extension-in-contact" value="true"/>
<param name="extension" value="+8610xxxxxxx"/>
<param name="from-user" value="+8610xxxxxxx"/>
<param name="expire-seconds" value="3600"/>
<param name="caller-id-in-from" value="false"/>
</gateway>
</include>

至此网关处就已对接完毕,一个号码一个gateway,新增gateway可用sofia profile external rescan进行生效,若号码注销需要删除可用sofia profile external killgw 8610xxxxxxx进行删除。

跟移动对接需开启100rel功能,并将invite中的fmtp:101 0-16修改为0-15否则会导致通话接起秒断的现象。此处的修改在源码下./src/switch_core_media.c文件,进入文件搜索0-16

 

 

 

 

 

 

将上图两个地方的0-16修改为图中的0-15即可。

再将invite中的Supported: precondition,去掉,否则会导致通话异常。此处修改源码中的./src/mod/endpoints/mod_sofia/sofia.c文件搜索precondition,大致在3055行。去掉precondition即可,以上两个操作均需重新编译源码,并重启FS进程方可生效。

谢谢~

 

==================================================================

freeswitch与各种设备对接的成功配置,需要的请参考,有错误的地方请指导。

1、对接华为softco

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

--加拨9至softco softco侧配置对端SIP端口为5080

2、对接网络电话提供商

中继配置

\sip_profiles\external\

<include>
<gateway name="sip_isp">
<param name="username" value="username"/>
<param name="password" value="password"/>
<param name="realm" value="$${local_ip_v4}"/>
<param name="from-domain" value="sip.isp.com"/>
</gateway>
</include>

拨号规则

\conf\dialplan\default\

<include>
<extension name="sip_isp_outbound">
<condition field="destination_number" expression="^(1\d{10})$">
<action application="bridge" data="sofia/gateway/sip_isp/$1"/>
</condition>
</extension>
</include>

3、电信IMS对接

中继配置

\sip_profiles\external\

<include>
<gateway name="gd_ims">
<param name="username" value="+8675512345678"/>
<param name="from-user" value="+8675512345678"/>
<param name="realm" value="$${local_ip_v4}"/>
<param name="auth-username" value="[email protected]"/>
<param name="proxy" value="gd.ctcims.cn"/>
<param name="from-domain" value="gd.ctcims.cn"/>
<param name="register-proxy" value="116.31.226.17"/>
<param name="outbound-proxy" value="bac01.sz.gd.ctcims.cn"/>
<param name="password" value="password"/>
<param name="register" value="true"/>
<param name="expire-seconds" value="3600"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
<param name="context" value="public"/>
<param name="sip-ip" value="$${local_ip_v4}"/>
</gateway>
</include>


<!-- realm:域名 -->
<!-- username:认证的用户名 -->
<!-- password:认证的密码 -->
<!-- from-user:指定在SIP消息中的源用户信息,没有配置则默认和username相同 -->
<!-- from-domain:是指定域,它们会影响SIP中的“From”头域。 -->
<!-- regitster-proxy:表示注册的地址 -->
<!-- outbound-proxy:表示呼出时指向的地址,这里其实和注册地址是一致的 -->
<!-- register:是否注册 -->
<!-- expire-seconds:注册的间隔时间 -->
-----------------------------------

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

<include>
<extension name="gd_ims_out">
<condition field="destination_number" expression="^(0\d{11}|0\d{10}|1\d{10}|\1d{2}|1\d{4}|[2-8]\d{7}|9\d{4}|9\d{5})$"> <!--出局-->
<action application="start_dtmf_generate"/> <!-- 解决不能二次拨号,深圳电信只支持inband收号方式-->
<action application="set" data="effective_caller_id_number=+8675512345678"/><!-- 主叫号码 -->
<action application="set" data="effective_caller_id_name=eSpace7950"/> <!-- 主叫设备名 -->
<action application="bridge" data="sofia/gateway/gd_ims/[email protected]"/> <!-- 在openwrt需要添加“@目的IP(域名可能不行)”-->
</condition>
</extension>
</include>

拨号规则

入局

\conf\dialplan\public\

<include>
<extension name="ims_in_1">
<!-- 转接不成功转语音信箱 -->
<condition field="destination_number" expression="8675512345678$">
<action application="set" data="call_timeout=30"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="transfer" data="1002 XML default"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} 1002"/>
</condition>
</extension>
</include>

4、对接华为UAP6600

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

FreeSWICTCH —-> 语音网关 —-> 运营商 —-> 手机或固话

配置信息

中继配置
conf\sip_profiles\external

二、配置外呼

首先你要有某个运营商提供的sip账号,该SIP账号(或提供该账号的设备)在 FreeSWITCH 中称为SIP网关(Gateway)。添加一个网关只需要在 conf/sip_profiles/external/中创建一个XML文件:内容是:SIP服务器地址,可以是IP或IP:端口号 SIP用户名 密码

<gateway name="gw1">
<param name="realm" value="SIP服务器地址,可以是IP或IP:端口号"/>
<param name="username" value="SIP用户名"/>
<param name="password" value="密码"/>
</gateway>

重启FS,使修改生效

或者指令freeswitch> sofia profile external rescan

显示一下网关的注册状态:

freeswitch> sofia status
如果显示 gateway gw1 的状态是 REGED,则表明已正确地注册到了网关上。你可以先用命令试一下网关是否工作正常:

freeswitch> originate sofia/gateway/gw1/xxxxxx &echo
3.5.1 从某一分机上呼出

修改拨号计划,创建一个新的XML文件— conf/dialplan/default/call_out.xml,内容如下:


<include>
<extension name="call out">
<condition field="destination_number" expression="^0(\d+)$">
<action application="bridge" data="sofia/gateway/gw1/$1"/>
</condition>
</extension>
</include>
其中,“^0(d+)$”为正则表达式,“(d+)”匹配 0 后面的所有数字并存到变量$1中。然后通过bridge程序通过网关gw1打出该号码。当然,建立该XML后需要在控制台中执行reloadxml使之生效

3.5.2 呼入电话处理

创建以下XML文件并放到 conf/dialplan/public/my_did.xml中:

<include>
<extension name="public_did">
<condition field="destination_number" expression="^(你的DID)$">
<action application="transfer" data="1000 XML default"/>
</condition>
</extension>
</include>

在FreeSWITCH中执行reloadxml使之生效。上述配置会将来话直接转接到分机 1000 上

4、总结:

FreeSWITCH的外呼场景主要通过配置网关注册、拨号计划来实现,实际上外呼中的呼叫、转接、会议都要用到这两个技术

网关如果在同一网段或者网关在FreeSWITCH的外网的话(实际上就是说FreeSWITCH可以直接访问到网关),就采用FreeSWITCH注册到网关或者指向网关的方式,这也是常用的方式。 如果网关在内网,而FreeSWITCH在外网的话,就只能采用内网网关注册到FreeSWITCH的方式。

拨号计划是 FreeSWITCH 中至关重要的一部分。它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表)。说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该做什么。当然,实际上,它所能做的比你想象的要强大的多。

对接移动公司IMS:
移动的IMS对接都是注册的模式对接的,所以废话不多说,直接上gateway配置数据

<include>
<gateway name="8610xxxxxxx"> //此处的格式为86+区号+号码(区号不带0)
<param name="realm" value="ims.gd.chinamobile.com"/> //运营商提供的域名
<param name="register-transport" value="udp"/>
<param name="username" value="[email protected]"/>
<param name="password" value="123456"/>
<param name="from-domain" value="ims.gd.chinamobile.com"/>
<param name="register-proxy" value="10.0.0.0"/> //运营商地址
<param name="proxy" value="ims.gd.chinamobile.com"/>
<param name="register" value="true"/>
<param name="extension-in-contact" value="true"/>
<param name="extension" value="+8610xxxxxxx"/>
<param name="from-user" value="+8610xxxxxxx"/>
<param name="expire-seconds" value="3600"/>
<param name="caller-id-in-from" value="false"/>
</gateway>
</include>

至此网关处就已对接完毕,一个号码一个gateway,新增gateway可用sofia profile external rescan进行生效,若号码注销需要删除可用sofia profile external killgw 8610xxxxxxx进行删除。

跟移动对接需开启100rel功能,并将invite中的fmtp:101 0-16修改为0-15否则会导致通话接起秒断的现象。此处的修改在源码下./src/switch_core_media.c文件,进入文件搜索0-16

将上图两个地方的0-16修改为图中的0-15即可。

再将invite中的Supported: precondition,去掉,否则会导致通话异常。此处修改源码中的./src/mod/endpoints/mod_sofia/sofia.c文件搜索precondition,大致在3055行。去掉precondition即可,以上两个操作均需重新编译源码,并重启FS进程方可生效。
————————————————
版权声明:本文为CSDN博主「irizhao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/irizhao/article/details/115007756

 

==================================================================

 

freeswitch与各种设备对接的成功配置,需要的请参考,有错误的地方请指导。

1、对接华为softco

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

--加拨9至softco softco侧配置对端SIP端口为5080

2、对接网络电话提供商

中继配置

\sip_profiles\external\

<include>
<gateway name="sip_isp">
<param name="username" value="username"/>
<param name="password" value="password"/>
<param name="realm" value="$${local_ip_v4}"/>
<param name="from-domain" value="sip.isp.com"/>
</gateway>
</include>

拨号规则

\conf\dialplan\default\

<include>
<extension name="sip_isp_outbound">
<condition field="destination_number" expression="^(1\d{10})$">
<action application="bridge" data="sofia/gateway/sip_isp/$1"/>
</condition>
</extension>
</include>

3、电信IMS对接

中继配置

\sip_profiles\external\

<include>
<gateway name="gd_ims">
<param name="username" value="+8675512345678"/>
<param name="from-user" value="+8675512345678"/>
<param name="realm" value="$${local_ip_v4}"/>
<param name="auth-username" value="[email protected]"/>
<param name="proxy" value="gd.ctcims.cn"/>
<param name="from-domain" value="gd.ctcims.cn"/>
<param name="register-proxy" value="116.31.226.17"/>
<param name="outbound-proxy" value="bac01.sz.gd.ctcims.cn"/>
<param name="password" value="password"/>
<param name="register" value="true"/>
<param name="expire-seconds" value="3600"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
<param name="context" value="public"/>
<param name="sip-ip" value="$${local_ip_v4}"/>
</gateway>
</include>


<!-- realm:域名 -->
<!-- username:认证的用户名 -->
<!-- password:认证的密码 -->
<!-- from-user:指定在SIP消息中的源用户信息,没有配置则默认和username相同 -->
<!-- from-domain:是指定域,它们会影响SIP中的“From”头域。 -->
<!-- regitster-proxy:表示注册的地址 -->
<!-- outbound-proxy:表示呼出时指向的地址,这里其实和注册地址是一致的 -->
<!-- register:是否注册 -->
<!-- expire-seconds:注册的间隔时间 -->
-----------------------------------

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

<include>
<extension name="gd_ims_out">
<condition field="destination_number" expression="^(0\d{11}|0\d{10}|1\d{10}|\1d{2}|1\d{4}|[2-8]\d{7}|9\d{4}|9\d{5})$"> <!--出局-->
<action application="start_dtmf_generate"/> <!-- 解决不能二次拨号,深圳电信只支持inband收号方式-->
<action application="set" data="effective_caller_id_number=+8675512345678"/><!-- 主叫号码 -->
<action application="set" data="effective_caller_id_name=eSpace7950"/> <!-- 主叫设备名 -->
<action application="bridge" data="sofia/gateway/gd_ims/[email protected]"/> <!-- 在openwrt需要添加“@目的IP(域名可能不行)”-->
</condition>
</extension>
</include>

拨号规则

入局

\conf\dialplan\public\

<include>
<extension name="ims_in_1">
<!-- 转接不成功转语音信箱 -->
<condition field="destination_number" expression="8675512345678$">
<action application="set" data="call_timeout=30"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="continue_on_fail=true"/>
<action application="transfer" data="1002 XML default"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="bridge" data="loopback/app=voicemail:default ${domain_name} 1002"/>
</condition>
</extension>
</include>

4、对接华为UAP6600

中继配置

\sip_profiles\external\

拨号规则

出局

\conf\dialplan\default\

FreeSWICTCH —-> 语音网关 —-> 运营商 —-> 手机或固话

配置信息

中继配置
conf\sip_profiles\external

二、配置外呼

首先你要有某个运营商提供的sip账号,该SIP账号(或提供该账号的设备)在 FreeSWITCH 中称为SIP网关(Gateway)。添加一个网关只需要在 conf/sip_profiles/external/中创建一个XML文件:内容是:SIP服务器地址,可以是IP或IP:端口号 SIP用户名 密码

<gateway name="gw1">
<param name="realm" value="SIP服务器地址,可以是IP或IP:端口号"/>
<param name="username" value="SIP用户名"/>
<param name="password" value="密码"/>
</gateway>

重启FS,使修改生效

或者指令freeswitch> sofia profile external rescan

显示一下网关的注册状态:

freeswitch> sofia status
如果显示 gateway gw1 的状态是 REGED,则表明已正确地注册到了网关上。你可以先用命令试一下网关是否工作正常:

freeswitch> originate sofia/gateway/gw1/xxxxxx &echo
3.5.1 从某一分机上呼出

修改拨号计划,创建一个新的XML文件— conf/dialplan/default/call_out.xml,内容如下:


<include>
<extension name="call out">
<condition field="destination_number" expression="^0(\d+)$">
<action application="bridge" data="sofia/gateway/gw1/$1"/>
</condition>
</extension>
</include>
其中,“^0(d+)$”为正则表达式,“(d+)”匹配 0 后面的所有数字并存到变量$1中。然后通过bridge程序通过网关gw1打出该号码。当然,建立该XML后需要在控制台中执行reloadxml使之生效

3.5.2 呼入电话处理

创建以下XML文件并放到 conf/dialplan/public/my_did.xml中:

<include>
<extension name="public_did">
<condition field="destination_number" expression="^(你的DID)$">
<action application="transfer" data="1000 XML default"/>
</condition>
</extension>
</include>

在FreeSWITCH中执行reloadxml使之生效。上述配置会将来话直接转接到分机 1000 上

4、总结:

FreeSWITCH的外呼场景主要通过配置网关注册、拨号计划来实现,实际上外呼中的呼叫、转接、会议都要用到这两个技术

网关如果在同一网段或者网关在FreeSWITCH的外网的话(实际上就是说FreeSWITCH可以直接访问到网关),就采用FreeSWITCH注册到网关或者指向网关的方式,这也是常用的方式。 如果网关在内网,而FreeSWITCH在外网的话,就只能采用内网网关注册到FreeSWITCH的方式。

拨号计划是 FreeSWITCH 中至关重要的一部分。它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表)。说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该做什么。当然,实际上,它所能做的比你想象的要强大的多。

对接移动公司IMS:
移动的IMS对接都是注册的模式对接的,所以废话不多说,直接上gateway配置数据

<include>
<gateway name="8610xxxxxxx"> //此处的格式为86+区号+号码(区号不带0)
<param name="realm" value="ims.gd.chinamobile.com"/> //运营商提供的域名
<param name="register-transport" value="udp"/>
<param name="username" value="[email protected]"/>
<param name="password" value="123456"/>
<param name="from-domain" value="ims.gd.chinamobile.com"/>
<param name="register-proxy" value="10.0.0.0"/> //运营商地址
<param name="proxy" value="ims.gd.chinamobile.com"/>
<param name="register" value="true"/>
<param name="extension-in-contact" value="true"/>
<param name="extension" value="+8610xxxxxxx"/>
<param name="from-user" value="+8610xxxxxxx"/>
<param name="expire-seconds" value="3600"/>
<param name="caller-id-in-from" value="false"/>
</gateway>
</include>

至此网关处就已对接完毕,一个号码一个gateway,新增gateway可用sofia profile external rescan进行生效,若号码注销需要删除可用sofia profile external killgw 8610xxxxxxx进行删除。

跟移动对接需开启100rel功能,并将invite中的fmtp:101 0-16修改为0-15否则会导致通话接起秒断的现象。此处的修改在源码下./src/switch_core_media.c文件,进入文件搜索0-16

将上图两个地方的0-16修改为图中的0-15即可。

再将invite中的Supported: precondition,去掉,否则会导致通话异常。此处修改源码中的./src/mod/endpoints/mod_sofia/sofia.c文件搜索precondition,大致在3055行。去掉precondition即可,以上两个操作均需重新编译源码,并重启FS进程方可生效。
————————————————
版权声明:本文为CSDN博主「irizhao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/irizhao/article/details/115007756

 

============================================================

FreeSWITCH(二)对接IMS平台

由 ╄→尐↘猪︶ㄣ 提交于 2020-03-25 14:11:16
<include>
  <gateway name="gw1">
    <param name="realm" value="ims.ln.chinamobile.com"/>
    <param name="register-proxy" value="***.***.***.***"/>
    <param name="username" value="8624********@ims.ln.chinamobile.com"/>
    <param name="password" value="password"/>
    <param name="from-user" value="+8624********"/>
    <param name="register" value="true"/>
    <param name="outbound-proxy" value="***.***.***.***"/>
  </gateway>
</include>

说明:

  1. 网关名称,自定义

    <gateway name="gw1">

  2. 域名,IMS平台

    <param name="realm" value="ims.ln.chinamobile.com"/>

  3. 注册代理,IMS的代理平台IP地址

    <param name="register-proxy" value="..."/>

  4. 注册用户名,格式 “86”+区号+电话号码

    <param name="username" value="86**@ims.ln.chinamobile.com"/>

  5. 注册密码,IMS平台提供的密码

    <param name="password" value="password"/>

  6. 来源,格式 “+86”“区号+电话号码

    <param name="from-user" value="+8624****"/>

  7. 是否注册

    <param name="register" value="true"/>

  8. outbound-proxy,IMS的代理平台IP地址

    <param name="outbound-proxy" value="..."/>

    亲测,成功对接辽宁移动IMS平台。

==========================================================================

 

FreeSWITCH 对接移动 IMS ,实现 IMS 落地。FreeSWITCH 与移动 IMS 核心网对接,可实现自己的个性需求,如外呼,彩铃,IVR,话务量批发等。

公司联网使用的是联通专线,电话使用的是移动 IMS,FreeSWITCH 服务器上还有内部管理系统,所以将 FS 服务器配置成了双网卡,移动 IMS 数据走 网卡1,内网走 网卡2,两个网卡分别进行ip设置,唯一不同的就是 网卡1 设置了网关。(两个网卡不能同时连接 移动IMS和联通外网,暂时没有解决)。网络联通后,进行FreeSWITCH 相关的配置。

1、配置 FreeSWITCH 接移动 IMS 网关,测试的为河北移动 IMS。在 /etc/freeswitch/sip_profiles/external/ 中添加 xml 网关文件,将星号部分改为自己的信息,包括网关名称,注册的服务器ip 用户名和密码等。

<include>
<gateway name=”75*****“>
<param name=”realm” value=”ims.he.chinamobile.com”/>
<param name=”register-proxy” value=”111.*.*.5″/>
<param name=”username” value=”8633575*****@ims.he.chinamobile.com”/>
<param name=”password” value=”*****“/>
<param name=”from-user” value=”+8633575*****“/>
<param name=”register” value=”true”/>
<param name=”outbound-proxy” value=”111.*.*.5″/>
</gateway>
</include>

因为是双网卡,还需要设置 /etc/freeswitch/sip_profiles/internal.xml 文件 97行左右,将$${local_ip_v4} 设置成自己的内网ip

<param name=”rtp-ip” value=”$${local_ip_v4}”/>
<param name=”sip-ip” value=”$${local_ip_v4}”/>

重新加载 FreeSWITCH 配置信息(在 fs_cli 中),执行下面命令,按 F5 即可看到网关是否能成功注册

sofia profile external restart

2018082408040871

显示 REGED ,为注册成功,配置好 呼入呼出路由即可实现通话了

配置呼出路由 在/etc/freeswitch/dialplan/default/ 下增加 call_out.xml 文件,号码前+9 进行外呼,${caller_id_number} 为网关名称,测试时设置为,真实电话号码及FreeSWITCH的用户名

<include>
<extension name=”call out”>
<condition field=”destination_number” expression=”^9(\d+)$”>
<action application=”bridge” data=”sofia/gateway/${caller_id_number}/$1″/>
</condition>
</extension>
</include>

配置呼入路由 在 /etc/freeswitch/dialplan/public/ 中增加 call_in.xml,配置红色字符部分即可,测试电话号为秦皇岛号码 区号 335, 75开头的7位号马

<include>
<extension name=”call_in”>
<condition field=”destination_number” expression=”^86335(75[0-9]{5})@ims.he.chinamobile.com$”>
<action application=”transfer” data=”$1 XML default”/>
</condition>
</extension>
</include>

标签:网关,sofia,对接,FreeSWITCH,IMS,源码,external,freeswitch
From: https://www.cnblogs.com/wendaozhe/p/17160295.html

相关文章

  • 【优分享】JMeter源码解析之结果收集器
    本文作者优测性能测试专家高源。简介:本文以最新的JMeter5.5版本源代码为例详细介绍了单机模式和分布式模式下结果收集器的工作原理。通篇干货,还不快来了解一下! 一、JMete......
  • app直播源码,利用原生JS实现回到顶部以及吸顶效果
    app直播源码,利用原生JS实现回到顶部以及吸顶效果  <style>    .box1{      width:1200px;      height:800px;      ......
  • vue源码分析-动态组件
    前面花了两节的内容介绍了组件,从组件的原理讲到组件的应用,包括异步组件和函数式组件的实现和使用场景。众所周知,组件是贯穿整个Vue设计理念的东西,并且也是指导我们开发的......
  • vue源码分析-响应式系统(一)
    从这一小节开始,正式进入Vue源码的核心,也是难点之一,响应式系统的构建。这一节将作为分析响应式构建过程源码的入门,主要分为两大块,第一块是针对响应式数据props,methods,da......
  • slate源码解析(二)- 基本框架与数据模型
    源码架构首先来看下最核心的slate包下的目录:可以看到,作为一个开源富文本库,其源码是相当之少。在第一篇文章中说过,Slate没有任何开箱即用的功能,只提供给开发者用于构建富......
  • 【转】如何阅读源码
    为何要阅读源码在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因:最直接的原因,就是面试需要,面试喜欢问源码,读完源码才可以跟面试官battle......
  • 【RocketMQ】Dledger日志复制源码分析
    消息存储在【RocketMQ】消息的存储一文中提到,Broker收到消息后会调用CommitLog的asyncPutMessage方法写入消息,在DLedger模式下使用的是DLedgerCommitLog,进入asyncPutMess......
  • 【Mybatis】【配置文件解析】【四】Mybatis源码解析-mappers的解析一
    1 前言这节我们分析一个大头,也是我们平时写的最多的,就是我们写的增删改查了,我们来看下它的解析。既然MyBatis的行为已经由上述元素配置完了,我们现在就要来定义SQL......
  • python flask就业分析可视化系统(课设、毕设、学习、源码下载)
    pythonflask就业分析可视化系统基于Pythonflask职业可视化系统基于Pythonflask工作大数据可视化系统后端:python3 flask数据库:MySQL前端:html css js主要功能......
  • python Django智慧气瓶管理系统(课设、毕设、学习、源码下载)
    pythonDjango智慧气瓶管理系统PythonDjango智慧煤气燃气管理平台PythonDjango医院氧气管理系统 后端:python3 django数据库:MySQL前端:html css js主要功能:数......