FreeSWITCH 异常重启后会话快速恢复

news/2025/3/28 14:00:09/文章来源:https://www.cnblogs.com/TalkSoCheap/p/18792768

FreeSWITCH 异常重启后会话快速恢复

配置

会话追踪

sip_profiles/*.xml

<param name="track-calls" value="true"/>

(官方文档描述会有轻微性能影响)

存储恢复数据、修改数据库位置

重要

fs默认使用sqlite进行恢复数据的存储,也可以正常使用,但此处改为odbc,使得数据易见。

autoload_configs/switch.conf.xml

<param name="core-db-dsn" value="odbc://dsn:用户名:密码"/>

本质是将会话信息存储到数据库,恢复时读取关键信息用以恢复。

表名:recovery

例:

表数据一览:

image

关键信息:

<cdr core-uuid="7f083c47-c818-44f4-97c7-17a7a1a09066" switchname="localhost.localdomain"><channel_data><state>CS_CONSUME_MEDIA</state><direction>outbound</direction><state_number>7</state_number><flags>0=1;1=1;2=1;22=1;26=1;39=1;45=1;46=1;50=1;55=1;59=1;88=1;89=1;100=1;107=1;113=1;114=1;143=1;160=1;166=1</flags><caps>1=1;2=1;3=1;4=1;5=1;6=1;8=1;9=1;10=1</caps></channel_data><call-stats><audio><inbound><raw_bytes>0</raw_bytes><media_bytes>0</media_bytes><packet_count>0</packet_count><media_packet_count>0</media_packet_count><skip_packet_count>0</skip_packet_count><jitter_packet_count>0</jitter_packet_count><dtmf_packet_count>0</dtmf_packet_count><cng_packet_count>0</cng_packet_count><flush_packet_count>0</flush_packet_count><largest_jb_size>0</largest_jb_size><jitter_min_variance>0.00</jitter_min_variance><jitter_max_variance>0.00</jitter_max_variance><jitter_loss_rate>0.00</jitter_loss_rate><jitter_burst_rate>0.00</jitter_burst_rate><mean_interval>0.00</mean_interval><flaw_total>0</flaw_total><quality_percentage>100.00</quality_percentage><mos>4.50</mos></inbound><outbound><raw_bytes>0</raw_bytes><media_bytes>0</media_bytes><packet_count>0</packet_count><media_packet_count>0</media_packet_count><skip_packet_count>0</skip_packet_count><dtmf_packet_count>0</dtmf_packet_count><cng_packet_count>0</cng_packet_count><rtcp_packet_count>0</rtcp_packet_count><rtcp_octet_count>0</rtcp_octet_count></outbound></audio><video><inbound><raw_bytes>0</raw_bytes><media_bytes>0</media_bytes><packet_count>0</packet_count><media_packet_count>0</media_packet_count><skip_packet_count>1</skip_packet_count><jitter_packet_count>0</jitter_packet_count><dtmf_packet_count>0</dtmf_packet_count><cng_packet_count>0</cng_packet_count><flush_packet_count>0</flush_packet_count><largest_jb_size>0</largest_jb_size><jitter_min_variance>0.00</jitter_min_variance><jitter_max_variance>0.00</jitter_max_variance><jitter_loss_rate>0.00</jitter_loss_rate><jitter_burst_rate>0.00</jitter_burst_rate><mean_interval>0.00</mean_interval><flaw_total>0</flaw_total><quality_percentage>100.00</quality_percentage><mos>4.50</mos></inbound><outbound><raw_bytes>1030</raw_bytes><media_bytes>1030</media_bytes><packet_count>7</packet_count><media_packet_count>7</media_packet_count><skip_packet_count>0</skip_packet_count><dtmf_packet_count>0</dtmf_packet_count><cng_packet_count>0</cng_packet_count><rtcp_packet_count>0</rtcp_packet_count><rtcp_octet_count>0</rtcp_octet_count></outbound></video></call-stats><variables><direction>outbound</direction><is_outbound>true</is_outbound><uuid>8dc21c06-a91c-467a-88c5-fd0a5dafa406</uuid><session_id>5</session_id><sip_profile_name>internal-video</sip_profile_name><sip_destination_url>sip%3A990005%40192.168.4.18%3A55867%3Btransport%3Dudp%3Bfs_nat%3Dyes%3Bfs_path%3Dsip%3A990005%40192.168.4.18%3A55867%3Btransport%3Dudp</sip_destination_url><dialed_user>990005</dialed_user><dialed_domain>192.168.2.22</dialed_domain><sip_invite_domain>192.168.2.22</sip_invite_domain><presence_id>990005%40192.168.2.22</presence_id><sip_nat_detected>true</sip_nat_detected><sofia_profile_name>internal-video</sofia_profile_name><recovery_profile_name>internal-video</recovery_profile_name><sofia_profile_url>sip%3Amod_sofia%40192.168.2.22%3A5060</sofia_profile_url><endpoint_disposition>ANSWER</endpoint_disposition><record_stereo>true</record_stereo><default_gateway>example.com</default_gateway><default_areacode>918</default_areacode><transfer_fallback_extension>operator</transfer_fallback_extension><toll_allow>domestic,international,local</toll_allow><accountcode>990005</accountcode><user_context>default</user_context><outbound_caller_id_name>FreeSWITCH</outbound_caller_id_name><outbound_caller_id_number>0000000000</outbound_caller_id_number><callgroup>techsupport</callgroup><max_forwards>68</max_forwards><originator_video_codec>H264%4090000h%400i</originator_video_codec><originator_codec>G729%408000h%4020i,H264%4090000h%400i</originator_codec><originator>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</originator><export_vars>RFC2822_DATE</export_vars><RFC2822_DATE>Mon,%2024%20Mar%202025%2015%3A18%3A32%20%2B0800</RFC2822_DATE><originate_early_media>true</originate_early_media><originating_leg_uuid>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</originating_leg_uuid><originate_endpoint>user</originate_endpoint><recovered>true</recovered><sip_handle_full_from>%22990003%22%20%3Csip%3A990003%40192.168.2.22%3E%3Btag%3Da1ctQKmK945jS</sip_handle_full_from><sip_handle_full_to>%3Csip%3A990005%40192.168.4.18%3A55867%3Btransport%3Dudp%3E%3Btag%3DeFcJB51</sip_handle_full_to><video_media_flow>disabled</video_media_flow><text_media_flow>disabled</text_media_flow><channel_name>sofia/internal-video/990005%40192.168.4.18%3A55867</channel_name><sip_invite_call_id>8dc21c06-a91c-467a-88c5-fd0a5dafa406</sip_invite_call_id><sip_route_uri>sip%3A(null)%40192.168.4.18%3A55867</sip_route_uri><rtp_use_codec_name>G729</rtp_use_codec_name><rtp_use_codec_fmtp>annexb%3Dyes</rtp_use_codec_fmtp><rtp_use_codec_rate>8000</rtp_use_codec_rate><rtp_use_codec_ptime>20</rtp_use_codec_ptime><rtp_use_codec_channels>1</rtp_use_codec_channels><rtp_last_audio_codec_string>G729%408000h%4020i%401c</rtp_last_audio_codec_string><read_codec>G729</read_codec><original_read_codec>G729</original_read_codec><read_rate>8000</read_rate><original_read_rate>8000</original_read_rate><write_codec>G729</write_codec><write_rate>8000</write_rate><audio_media_flow>sendrecv</audio_media_flow><video_read_codec>H264</video_read_codec><video_read_rate>90000</video_read_rate><video_write_codec>H264</video_write_codec><video_write_rate>90000</video_write_rate><rtp_last_video_codec_string>H264%4090000h</rtp_last_video_codec_string><rtp_use_video_codec_name>H264</rtp_use_video_codec_name><rtp_use_video_codec_fmtp>profile-level-id%3D42801F</rtp_use_video_codec_fmtp><rtp_use_video_codec_rate>90000</rtp_use_video_codec_rate><rtp_use_video_codec_ptime>0</rtp_use_video_codec_ptime><local_media_ip>192.168.2.22</local_media_ip><local_media_port>16496</local_media_port><advertised_media_ip>192.168.2.22</advertised_media_ip><rtp_use_timer_name>soft</rtp_use_timer_name><rtp_use_pt>18</rtp_use_pt><rtp_use_ssrc>1476670368</rtp_use_ssrc><rtp_2833_send_payload>101</rtp_2833_send_payload><rtp_2833_recv_payload>101</rtp_2833_recv_payload><local_video_ip>192.168.2.22</local_video_ip><local_video_port>29646</local_video_port><rtp_use_video_pt>102</rtp_use_video_pt><rtp_use_video_ssrc>605291748</rtp_use_video_ssrc><rtp_local_sdp_str>v%3D0%0D%0Ao%3DFocustarCC%201742784243%201742784245%20IN%20IP4%20192.168.2.22%0D%0As%3DFocustarCC%0D%0Ac%3DIN%20IP4%20192.168.2.22%0D%0At%3D0%200%0D%0Am%3Daudio%2016496%20RTP/AVP%2018%20101%0D%0Aa%3Drtpmap%3A18%20G729/8000%0D%0Aa%3Dfmtp%3A18%20annexb%3Dno%0D%0Aa%3Drtpmap%3A101%20telephone-event/0%0D%0Aa%3Dfmtp%3A101%200-15%0D%0Aa%3Dptime%3A20%0D%0Aa%3Dsendrecv%0D%0Am%3Dvideo%2029646%20RTP/AVP%20102%0D%0Ab%3DAS%3A3072%0D%0Aa%3Drtpmap%3A102%20H264/90000%0D%0Aa%3Dfmtp%3A102%20profile-level-id%3D42801F%0D%0Aa%3Drtcp-fb%3A102%20ccm%20fir%0D%0Aa%3Drtcp-fb%3A102%20ccm%20tmmbr%0D%0Aa%3Drtcp-fb%3A102%20nack%0D%0Aa%3Drtcp-fb%3A102%20nack%20pli%0D%0A</rtp_local_sdp_str><sip_outgoing_contact_uri>%3Csip%3A990005%40192.168.2.22%3A5060%3E</sip_outgoing_contact_uri><sip_req_uri>990005%40192.168.4.18%3A55867%3Btransport%3Dudp</sip_req_uri><sip_local_network_addr>192.168.2.22</sip_local_network_addr><sip_reply_host>192.168.4.18</sip_reply_host><sip_reply_port>55867</sip_reply_port><sip_network_ip>192.168.4.18</sip_network_ip><sip_network_port>55867</sip_network_port><sip_user_agent>Linphone-Desktop/5.2.6%20(work)%20windows/10%20Qt/5.15.2%20LinphoneSDK/5.3.72</sip_user_agent><sip_allow>INVITE,%20ACK,%20CANCEL,%20OPTIONS,%20BYE,%20REFER,%20NOTIFY,%20MESSAGE,%20SUBSCRIBE,%20INFO,%20PRACK,%20UPDATE</sip_allow><sip_recover_contact>%3Csip%3A990005%40192.168.4.18%3A55867%3Btransport%3Dudp%3E%3Bexpires%3D60%3B%2Borg.linphone.specs%3D%22lime%22</sip_recover_contact><sip_full_via>SIP/2.0/UDP%20192.168.2.22%3Brport%3Bbranch%3Dz9hG4bKvZ89jcXZ9ejZH</sip_full_via><sip_recover_via>SIP/2.0/UDP%20192.168.2.22%3Brport%3Bbranch%3Dz9hG4bKvZ89jcXZ9ejZH</sip_recover_via><sip_from_display>990003</sip_from_display><sip_full_from>%22990003%22%20%3Csip%3A990003%40192.168.2.22%3E%3Btag%3Da1ctQKmK945jS</sip_full_from><sip_full_to>%3Csip%3A990005%40192.168.4.18%3A55867%3Btransport%3Dudp%3E%3Btag%3DeFcJB51</sip_full_to><sip_from_user>990003</sip_from_user><sip_from_uri>990003%40192.168.2.22</sip_from_uri><sip_from_host>192.168.2.22</sip_from_host><sip_to_params>transport%3Dudp</sip_to_params><sip_to_user>990005</sip_to_user><sip_to_port>55867</sip_to_port><sip_to_uri>990005%40192.168.4.18%3A55867</sip_to_uri><sip_to_host>192.168.4.18</sip_to_host><sip_contact_params>transport%3Dudp</sip_contact_params><sip_contact_user>990005</sip_contact_user><sip_contact_port>55867</sip_contact_port><sip_contact_uri>990005%40192.168.4.18%3A55867</sip_contact_uri><sip_contact_host>192.168.4.18</sip_contact_host><sip_to_tag>eFcJB51</sip_to_tag><sip_from_tag>a1ctQKmK945jS</sip_from_tag><sip_cseq>96846577</sip_cseq><sip_call_id>8dc21c06-a91c-467a-88c5-fd0a5dafa406</sip_call_id><switch_r_sdp>v%3D0%0D%0Ao%3D990005%203440%20498%20IN%20IP4%20172.16.100.124%0D%0As%3DTalk%0D%0Ac%3DIN%20IP4%20172.16.100.124%0D%0At%3D0%200%0D%0Am%3Daudio%207078%20RTP/AVP%2018%0D%0Aa%3Dfmtp%3A18%20annexb%3Dyes%0D%0Aa%3Dsendrecv%0D%0Am%3Dvideo%209078%20RTP/AVP%20102%0D%0Aa%3Drtpmap%3A102%20H264/90000%0D%0Aa%3Dfmtp%3A102%20profile-level-id%3D42801F%0D%0Aa%3Dsendrecv%0D%0Aa%3Drtcp-fb%3A*%20trr-int%201000%0D%0Aa%3Drtcp-fb%3A*%20nack%0D%0Aa%3Drtcp-fb%3A*%20ccm%20tmmbr%0D%0Aa%3Drtcp-fb%3A102%20nack%20pli%0D%0Aa%3Drtcp-fb%3A102%20ccm%20fir%0D%0A</switch_r_sdp><ep_codec_string>mod_bcg729.G729%408000h%4020i%408000b,mod_av.H264~profile-level-id%3D42801F</ep_codec_string><rtp_use_codec_string>G729%408000h%4020i,H264%4090000h%400i,PCMA,PCMU,G729,VP8,H264</rtp_use_codec_string><remote_text_media_flow>inactive</remote_text_media_flow><remote_audio_media_flow>sendrecv</remote_audio_media_flow><remote_media_ip>172.16.100.124</remote_media_ip><remote_media_port>7078</remote_media_port><rtp_audio_recv_pt>18</rtp_audio_recv_pt><dtmf_type>info</dtmf_type><remote_video_media_flow>sendrecv</remote_video_media_flow><video_possible>true</video_possible><remote_video_ip>172.16.100.124</remote_video_ip><remote_video_port>9078</remote_video_port><rtp_video_fmtp>profile-level-id%3D42801F</rtp_video_fmtp><rtp_video_pt>102</rtp_video_pt><rtp_video_recv_pt>102</rtp_video_recv_pt><rtp_remote_video_rtcp_port>9079</rtp_remote_video_rtcp_port><bridge_channel>sofia/internal-video/990003%40192.168.2.22</bridge_channel><bridge_uuid>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</bridge_uuid><signal_bond>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</signal_bond><original_destination_number>990005</original_destination_number><original_caller_id_name>990003</original_caller_id_name><original_caller_id_number>990003</original_caller_id_number><transfer_history>1742800739%3A56fb6621-8f08-4cff-b350-c1dc53731a4f%3Auuid_br%3A5a4c45ba-6c22-4e21-bce8-fde0e06139f3</transfer_history><transfer_source>1742800739%3A56fb6621-8f08-4cff-b350-c1dc53731a4f%3Auuid_br%3A5a4c45ba-6c22-4e21-bce8-fde0e06139f3</transfer_source><switch_m_sdp>v%3D0%0D%0Ao%3D990003%202049%20942%20IN%20IP4%20192.168.2.24%0D%0As%3DTalk%0D%0Ac%3DIN%20IP4%20192.168.2.24%0D%0At%3D0%200%0D%0Am%3Daudio%2056067%20RTP/AVP%2018%0D%0Aa%3Dfmtp%3A18%20annexb%3Dyes%0D%0Aa%3Dsendrecv%0D%0Am%3Dvideo%2056069%20RTP/AVP%2096%0D%0Aa%3Drtpmap%3A96%20H264/90000%0D%0Aa%3Dfmtp%3A96%20profile-level-id%3D42801F%0D%0Aa%3Dsendrecv%0D%0Aa%3Drtcp-fb%3A*%20trr-int%201000%0D%0Aa%3Drtcp-fb%3A*%20nack%0D%0Aa%3Drtcp-fb%3A*%20ccm%20tmmbr%0D%0Aa%3Drtcp-fb%3A96%20nack%20pli%0D%0Aa%3Drtcp-fb%3A96%20ccm%20fir%0D%0A</switch_m_sdp><call_uuid>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</call_uuid><bridge_to>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</bridge_to><last_bridge_to>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</last_bridge_to></variables><callflow dialplan="XML" unique-id="56fb6621-8f08-4cff-b350-c1dc53731a4f" clone-of="9f842aa3-92f3-4319-a55f-2c52b236b21f" profile_index="2"><caller_profile><username>990003</username><dialplan>XML</dialplan><caller_id_name>990003</caller_id_name><caller_id_number>990003</caller_id_number><callee_id_name>Outbound Call</callee_id_name><callee_id_number>990005</callee_id_number><ani>990003</ani><aniii></aniii><network_addr>192.168.4.18</network_addr><rdnis>990005</rdnis><destination_number>990005</destination_number><uuid>8dc21c06-a91c-467a-88c5-fd0a5dafa406</uuid><source>mod_sofia</source><transfer_source>1742800739:56fb6621-8f08-4cff-b350-c1dc53731a4f:uuid_br:5a4c45ba-6c22-4e21-bce8-fde0e06139f3</transfer_source><context>default</context><chan_name>sofia/internal-video/990005@192.168.4.18:55867</chan_name><originator><originator_caller_profile><username>990003</username><dialplan>XML</dialplan><caller_id_name>990003</caller_id_name><caller_id_number>990003</caller_id_number><callee_id_name>Outbound Call</callee_id_name><callee_id_number>990005</callee_id_number><ani>990003</ani><aniii></aniii><network_addr>192.168.2.24</network_addr><rdnis>990005</rdnis><destination_number>990005</destination_number><uuid>5a4c45ba-6c22-4e21-bce8-fde0e06139f3</uuid><source>mod_sofia</source><context>default</context><chan_name>sofia/internal-video/990003@192.168.2.22</chan_name></originator_caller_profile></originator></caller_profile><times><created_time>1742800739483601</created_time><profile_created_time>1742800739571897</profile_created_time><progress_time>1742800712911708</progress_time><progress_media_time>0</progress_media_time><answered_time>1742800716231627</answered_time><bridged_time>1742800739611835</bridged_time><last_hold_time>0</last_hold_time><hold_accum_time>0</hold_accum_time><hangup_time>0</hangup_time><resurrect_time>0</resurrect_time><transfer_time>0</transfer_time></times></callflow><callflow dialplan="XML" unique-id="9f842aa3-92f3-4319-a55f-2c52b236b21f" profile_index="1"><caller_profile><username>990003</username><dialplan>XML</dialplan><caller_id_name>990003</caller_id_name><caller_id_number>990003</caller_id_number><callee_id_name>Outbound Call</callee_id_name><callee_id_number>990005</callee_id_number><ani>990003</ani><aniii></aniii><network_addr>192.168.4.18</network_addr><rdnis>990005</rdnis><destination_number>990005</destination_number><uuid>8dc21c06-a91c-467a-88c5-fd0a5dafa406</uuid><source>mod_sofia</source><context>default</context><chan_name>sofia/internal-video/990005@192.168.4.18:55867</chan_name><originator><originator_caller_profile><username>990003</username><dialplan>XML</dialplan><caller_id_name>990003</caller_id_name><caller_id_number>990003</caller_id_number><callee_id_name></callee_id_name><callee_id_number></callee_id_number><ani>990003</ani><aniii></aniii><network_addr>192.168.2.24</network_addr><rdnis>990005</rdnis><destination_number>990005</destination_number><uuid></uuid><source>mod_sofia</source><context>default</context><chan_name></chan_name></originator_caller_profile></originator></caller_profile><times><created_time>1742800739483601</created_time><profile_created_time>1742800712531680</profile_created_time><progress_time>1742800712911708</progress_time><progress_media_time>0</progress_media_time><answered_time>1742800716231627</answered_time><bridged_time>0</bridged_time><last_hold_time>0</last_hold_time><hold_accum_time>0</hold_accum_time><hangup_time>0</hangup_time><resurrect_time>1742800739483595</resurrect_time><transfer_time>1742800739571897</transfer_time></times></callflow>
</cdr>

多节点配置

主从模式

配置主机与从机的switchname相同,当切换到从机时,确保从机ip与主机相同

autoload_configs/switch.conf.xml

<param name="switchname" value="freeswitch01"/>

多节点模式(分布式)

实测不同节点配置不同的switchname,另一个节点也会尝试恢复会话,当尝试恢复失败(bind ip 端口失败)时会将记录删除,可能会导致异常节点恢复时无法正常恢复会话。

暂不明确是设计还是缺陷。

暂不推荐在此模式下使用。


会话恢复

手动恢复

fs_cli -x 'sofia recover'
or
fs_cli -x 'fsctl recover'

fs启动时自动恢复

<X-PRE-PROCESS cmd="set" data="api_on_startup=fsctl recover"/>
or
<X-PRE-PROCESS cmd="set" data="api_on_startup=sofia recover"/>

结果验证

总共测试三项,echo,bridge,conference均能正常恢复会话,语音恢复较快,视频恢复较慢(与编解码相关,实际rtp恢复速度与语言相近)。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringSecurity5(10-动态权限管理)

Spring Security动态权限管理通过实时更新权限配置,支持按需调整用户权限,实现灵活的访问控制。结合注解、表达式等方式,能够动态加载和检查用户权限,无需重启系统,确保应用在复杂业务场景下的安全性与可扩展性,提升用户体验与管理效率。授权流程SpringSecurity 的授权流…

【2025年企业必备】这款跨网跨域传输软件 支持多达6种传输方式!

在全球化经济的推动下,企业的业务范围不断扩展,跨网跨域的数据传输需求日益增长。无论是跨国企业的内部协作,还是与合作伙伴之间的数据交换,高效、安全、可靠的跨网跨域传输软件已成为企业运营不可或缺的一部分。 传统的文件传输方式,如电子邮件附件、FTP服务器、甚至是物…

2025年-AI工具发展记录

时间:2025-03-06豆包: Kimi: 讯飞星火: 通义千问: DeepSeek: 总结:截止2025年3月6号,各类AI工具相较于2024年最大的变化时,都新增了自家的推理功能!这可以说是新年的一次重大更新!

模型的泛化性能度量:方法、比较与实现

在机器学习领域,模型的泛化性能度量是评估模型在未知数据上表现的关键环节。 通过合理的性能度量,不仅能了解模型的优劣,还能为模型的优化和选择提供科学依据。 本文将深入探讨泛化性能度量的重要性、各种度量方法、它们之间的区别与适用场景,并通过scikit-learn代码示例来…

掌握设计模式--访问者模式

访问者模式(Visitor Pattern) 访问者模式(Visitor Pattern)是一种行为设计模式,它允许你将操作(方法)封装到另一个类中,使得你可以在不修改现有类的情况下,向其添加新的操作。 核心思想是将数据结构和对数据的操作分离,通过访问者对象来对数据进行操作,而不是将操作…

双向广搜-BiDirectional BFS

双向广搜 文章目录 前言前言 复习acwing算法提高课的内容,本篇为讲解算法:双向广搜 一、双向广搜 双向广搜其实就是两个bfs,我们知道bfs是一种暴力的做题方法,搜索树长下图所示:我们会发现搜索树越来越宽,每一层的搜索量增加,如果数据范围很大的话,显然是会TLE的,那么…

读DAMA数据管理知识体系指南31参考数据和主数据概念(上)

读DAMA数据管理知识体系指南31参考数据和主数据概念(上)1. 业务驱动因素 1.1. 满足组织数据需求1.1.1. 组织中的多个业务领域需要访问相同的数据集,并且他们都相信这些数据集是完整的、最新的、一致的1.2. 管理数据质量1.2.1. 数据的不一致、质量问题和差异均会导致决策错误…

生成式 AI 和 LLM 简介 起源 历史记录

领域 年份 定义人工智能 (AI) 1956 计算机科学领域,旨在创造能够复制或超越人类智能的智能机器。机器学习 (Machine Learning) 1997 人工智能的子集,使机器能够从现有数据中学习并根据这些数据进行决策或预测。深度学习 (Deep Learning) 2012 一种机器学习技术,通过使用多层…

拿到代理对象,如何调用增强方法

步骤1 前面已经创建了MathCal的代理对象了,我们在调用方法时加一个断点这里返回的确实是代理对象,这个对象中保存了详细信息(增强器,原始对象等),我们进入bean.add(2, 10) 中,来到 org.springframework.aop.framework.CglibAopProxy.DynamicAdvisedInterceptor.intercept(…

如何保证消息队列的消息只能被消费一次

如何保证消息队列的消息只能被消费一次,首先先保证消息不会丢失 首先先生产者到消费者到消费者有哪些场景会消息丢失一、问题场景 场景一、生产者发送到消息队列失败 场景二、消息队列接受到消息磁盘化失败 场景三、消费者接受到消息消费失败 二、场景原因,如何解决 1、场景一…

Day22_java方法

Java方法 方法重载 package com.xiang.method;public class Demo02 {public static void main(String[] args) {int max = max(20, 100, 10);System.out.println(max);}// 比大小public static int max(int num1,int num2){int result = 0;if (num1 == num2){System.out.printl…