- opencv借助ffmpeg读取sdp文件进行rtp拉流 20231019
诗筱涵
rtsp用简单代码实现功能OpenCVrtp
20231019ffmpeg装起来很快编译命令g++rtp_ffmpeg_test.cpp-ooutput$(pkg-config--libsopencv4)代码如下#include#include#include#includeusingnamespacestd;usingnamespacecv;intmain(intargc,char**argv){cout>frame;if(frame.em
- ROS安装以及程序运行问题总结
niuTaylor
ROS装机&刷机linux
1.总教程https://blog.csdn.net/qq_41450811/article/details/99079041sudosh-c'./etc/lsb-release&&echo"debhttp://mirrors.ustc.edu.cn/ros/ubuntu/$DISTRIB_CODENAMEmain">/etc/apt/sources.list.d/ros-latest.list'
- 【PX4】Ubuntu20.04安装PX4教程
davidson1471
PX4git无人机linuxubuntu
*建议早上安装*1.下载以往版本从github上clone源码gitclonehttps://github.com/PX4/PX4-Autopilot.git进入PX4-Autopilot文件夹cdPX4-Autopilot查看当前分支,位于origin/maingitstatus查看所有远程分支,带release的gitbranch-r|grep"release"切换到发行分支v1.12gitc
- 【Go语言圣经1.1】
Pyroyster
golang开发语言后端
目标学习Go的编译方式、包的组织方式以及工具链的统一调用方式概念与定义packageGo语言通过包来组织代码。包类似于其它语言的库librarries或模块modules,每个包通常对应一个目录,目录中的所有.go文件都属于同一个包。特殊的main包:当代码使用packagemain声明时,表示这是一个可独立执行的程序而非一个库。程序的执行入口就是main函数import通过import语句,编译
- C++ time(0)函数
宁玉AC
c学习
time(0)函数返回当前格林尼治标准时间与格林尼治标准时间1970年0分0秒的时间间隔。头文件#include//问题:得到当前时间。#include#includeusingnamespacestd;intmain(){inttotalSeconds=time(0);intcurrentSeconds=totalSeconds%60;inttotalMinutes=totalSeconds/6
- python学习第三天
Leo来编程
Python学习python开发语言
条件判断条件判断使用if、elif和else关键字。它们用于根据条件执行不同的代码块。#条件判断age=18ifage0:#也可以写if(s>0)但是没必要因为python给个提示建议去掉保证代码的按照缩进来进行更加规范print("这个数字是大于0的数字!")#这行代码属于if语句的代码块elifs==0:print("这个数字是等于0的数字!")#这行代码属于elif语句的代码块else:pr
- java ik分词器
大波V5
java开发语言
org.apache.lucenelucene-core7.4.0org.apache.lucenelucene-analyzers-common7.4.0com.github.mageseik-analyzer8.5.0publicstaticvoidmain(String[]args)throwsException{Stringtext="今天是个好日子";//创建一个StringReader
- llama.cpp编译
1nv1s1ble
llama
llam.cpp编译1.下载&编译gitclonehttps://github.com/ggml-org/llama.cppcmake-S.-Bbuild2.下载模型验证#下载地址https://huggingface.co/filipealmeida/open-llama-7b-v2-open-instruct-GGUF/blob/main/ggml-model-Q4_0.gguf#验证./ll
- C语言--正弦、余弦函数
坚持学习每一天
刘汝佳--算法竞赛入门经典c语言
#include#include#includeintmain(){constdoublepi=acos(-1.0);intn;scanf("%d",&n);printf("%lf%lf",sin(n/180.0*pi),cos(n/180.0*pi));}sin()函数和cos()函数的参数是弧度原型:doublesin(doublex);doublecos(doubley);
- Day08-综合练习
坚持学习每一天
Java基础java算法排序算法
importjava.util.Random;publicclasstest3{/*定义方法实现随机产生一个5位的验证码验证码格式:长度为s前四位是大写字母或者小写字母最后一位是数字*///方法://在一堆没有什么规律的数据中随机抽取//可以先把这些数据放到数组当中//再随机抽取一个索引publicstaticvoidmain(String[]args){char[]chs=newchar[52]
- 一学就会的深度学习基础指令及操作步骤(6)迁移学习
小圆圆666
深度学习迁移学习人工智能卷积神经网络
文章目录迁移学习模型准备数据增强模型训练模型微调和预测检查预测结果迁移学习迁移学习是将一个任务中学到的知识应用到另一个相关任务上,以提高新任务的学习效率和性能。优势:节省训练时间,提高模型性能,尤其在小数据场景下效果显著。核心是利用源域的知识来帮助目标域任务,比如在ImageNet上预训练的模型用于医疗影像分类。源域(SourceDomain):已有知识的领域(如ImageNet图像库)。目标域(
- Python学习总结
serve the people
巨人的肩膀python开发语言
第一个python程序print("HelloWorld")#缩进一般4个空格键或者1个tab键,但是所有代码块语句必须是相同的缩进,这个必须严格执行,不同的缩进会导致程序不能运行,不能混用空格和tabifTrue:print("True")else:print("False")python注释符单行注释(行注释)#print("HelloWorld")多行注释(块注释)'''print("Hel
- c++计算n的阶乘(用循环和递归)
Absinthe_苦艾酒
c/c++c++算法数据结构
1.循环//计算阶乘#includeusingnamespacestd;intfct(int*p){intsum=1;while(*p>=2){sum*=((*p)--);}returnsum;}intmain(){cout>n;coutusingnamespacestd;//使用递归计算阶乘intfct(intn){if(n==1)return1;elsereturnn*fct(n-1);}in
- 19_map
芦苇King
05_Go_01golang
packagemainimport("fmt""math/rand""sort""time")funcmain(){//初始化mp1:=make(map[int]string,8)mp1[0]="a1"fmt.Println(mp1)//ap[0:a1]fmt.Println(mp1[0])//a1fmt.Printf("typeofa1:%T\n",mp1)//map[int]string//声
- Java-增强for循环遍历,用顿号、拼接
ZHOU_VIP
MACjavapython开发语言
在Java中使用增强for循环(foreach)遍历数组并用顿号拼接元素的示例:importjava.util.Arrays;publicclassMain{publicstaticvoidmain(String[]args){//1.定义待遍历的数组String[]fruits={"苹果","香蕉","橘子"};//2.使用StringJoiner实现高效拼接(Java8+)Stringresu
- Vue懒加载
充气大锤
前端性能优化vue.js前端javascript学习笔记前端框架性能优化
一、什么是懒加载在Vue中实现懒加载(LazyLoading)通常是为了优化应用的性能,尤其是在加载大型应用或组件时。懒加载可以帮助减少初始加载时间,只在用户需要时才加载特定的代码块或组件。二、懒加载的几种方式方法1:使用动态导入(DynamicImports)你可以使用JavaScript的动态导入语法来懒加载组件。例如,如果你想懒加载一个名为MyComponent的组件,你可以这样做://在组
- DeepSeek源码解析(1)
白鹭凡
deepseekai
下载github的DeepSeek-V3-main源码,目录如下文章适合入门小白学习,因为我也是小白,本来作为一名前端开发,因为行业不好混所以跑来学ai的。初步看它的代码并不多,主要是inference目录,convert.py#1.导入标准库importos#os是Python的标准库之一,提供了与操作系统交互的功能,比如文件路径操作、环境变量管理等。importshutil#shutil也是P
- 简单递归计算字符串长度
huangdou666
c++
#include#include//编写函数不允许创建临时变量,求字符串的长度intmy_strlen(char*str){if(*str!='\0')//不是("\0"),更不是("\0"){return1+my_strlen(str+1);//是str,不是arr}else{return0;}}intmain(){chararr[]="abc";//不是("abc")intlen=my_str
- 嵌套子fragment内使用recyclerview无法获取数据
geniusNMRobot专家
android
我的主Mainactivity里面使用了bottomnavigationview.这个会调用到一个fragment,然后这个fragmen会调用另外一个fragmentB,最后在这个fragmentB里面我使用了recyclerView,但是我发现这个时候recyclerview没有数据,经过仔细的查看我发现已经从服务器获取了数据,但是不知道什么原因这个recyclerview的一些本应该被回调的
- C语言-函数指针,指针与函数传参_c语言指针函数传参
2401_84010457
程序员c语言开发语言
2.指针与函数传参(1)普通变量作为函数形参voidfunc1(intb){//在函数内部,形参b的值等于实参aprintf("b=%d.\n",b);printf("infunc1,&b=%p.\n",&b);}intmain(void){inta=4;printf("&a=%p.\n",&a);//&a=0x7ffc3826c2f4.func1(a);//b=4,infunc1,&b=0x7f
- Java编程中的分支结构:if-else、switch-case详解与实战应用
学习编程的小羊
javajavapython开发语言
在Java编程中,分支结构是控制程序流程的重要工具,它允许程序根据不同的条件执行不同的代码块。Java提供了两种主要的分支结构:if-else和switch-case。本文将详细介绍这两种结构的工作原理、语法规则以及实战应用,帮助读者更好地理解和使用它们。一、if-else分支结构if-else结构是Java中最基本的分支结构,它根据指定的条件表达式来决定执行哪个代码块。if-else结构的语法如
- C语言学习日记--循环,分支语句
梦想成为大牛呀
c语言学习开发语言
C语言学习日记--循环分支语句题目一1.题目展示2.完成题目的过程中问题的出现(1)怎么多组输入3.代码展示4.问题的解决(1)关于多组输入此博客为学习记录,还请看官点点赞为我加油呀~~题目一1.题目展示2.完成题目的过程中问题的出现(1)怎么多组输入3.代码展示#includeintmain(){intn=0;while(scanf("%d",&n)!=EOF){if(n>=3&&n<=20){
- 从0开始的操作系统手搓教程46——实现wait和exit
charlie114514191
从0开始的操作系统教程驱动开发学习教程文件系统内核操作系统
目录作点基础工作改进一下pidc分配完成线程最后的一些功能实现wait和exitexit和wait是成对使用的,通常在父子进程的管理中起到关键作用。exit是用来结束进程运行的系统调用。当一个进程执行完它的任务后,通常会调用exit来主动终止自己的执行。即使程序员没有显式调用exit,在程序的主函数(如main)执行完毕后,C运行库也会自动调用exit来结束进程。exit的主要作用是使进程退出并将
- W: Target Packages (main/binary-amd64/Packages) is configured multiple times in /etc/apt/sources.lis
NoBarLing
BUGubuntuchrome
W:TargetPackages(main/binary-amd64/Packages)isconfiguredmultipletimesin/etc/apt/sources.list.d/google-chrome错误提示如下:Readingpackagelists...DoneW:TargetPackages(main/binary-amd64/Packages)isconfiguredmul
- 字符设备驱动开发与杂项开发
Charary
linux驱动开发
驱动驱动,即操作系统用来操作硬件的逻辑代码Linux下的驱动特点底层驱动要配合应用层才能完成对底层硬件的获取/操作流程向内核插入驱动xxx.ko->生成一个设备文件/dev/xxx->执行应用层代码的可执行程序main--->实现对硬件设备的操作设备文件本质内核驱动需要生成设备文件作为上层应用与底层的桥梁。底层需要一直编写接口,以便于上层的操作。在Linux下,一切皆文件。==所有设备在Linux
- 【一维数组】数组元素输出
cdjjskwk
算法数据结构
题目描述输入n个数,要求程序按输入时的逆序把这n个数打印出来。也就是说,请你按输入相反顺序打印这n个数。输入第一个n,表示元素的个数。第二行:n个整数,数值之间用一个空格隔开。输出倒序后的结果,相邻数据之间用一个空格隔开,行末不要出现多余的空格。样例输入复制1012345678910样例输出复制10987654321提示nusingnamespacestd;inta[10001];intmain(
- Voice Translation of Audio Files into Different Languages Using Gpt-4o
开发者每周简报
ffmpeg人工智能
openai-cookbook/examples/voice_solutions/voice_translation_into_different_languages_using_GPT-4o.ipynbatmain·openai/openai-cookbook·GitHub您是否曾经想将播客翻译成您的母语?翻译和配音音频内容可以使其更便于全球观众理解。借助GPT-4o的全新音频输入和音频输出模式
- 每日一题蓝桥杯P8772 [蓝桥杯 2022 省 A] 求和 题解c++
wen__xvn
洛谷蓝桥杯蓝桥杯c++职场和发展
#includeusingnamespacestd;intmain(){intt;intn;cin>>n;longlongsum=0;longlonghpf=0;longlongpfh=0;for(inti=0;i>t;pfh+=t*t;hpf+=t;}hpf=hpf*hpf;sum=(hpf-pfh)/2;cout<<sum<<endl;return0;}
- linux循环之for循环
小黑要上天
linux小常识linux服务器运维
1.循环介绍循环就是迭代(重复)一些命令的代码块,如果循环控制条件不满足的话,就结束循环2.for循环语法for循环控制条件docommandsdone#当“循环控制条件”不满足条件,结束for循环3.for循环样例[root@kibana~]#catfor-1.sh#!/bin/bashforplanetin"Mercury1""Venus3""Earth5""Mars7""Jupiter9"d
- Linux CentOS 终端关闭后 Python程序仍然运行设置方法
Think Spatial 空间思维
ITpython开发语言语法
服务器:CentOS8安装Pythonsudodnfinstallpython3查看Versionpython3--version安装pippipinstall--upgradepip后台运行python程序原本运行命令为pythonmain.py后台运行的命令直接执行nohuppython3main.py将输出放到main.log文件中nohuppython3main.py>main.log查看
- 统一思想认识
永夜-极光
思想
1.统一思想认识的基础,才能有的放矢
原因:
总有一种描述事物的方式最贴近本质,最容易让人理解.
如何让教育更轻松,在于找到最适合学生的方式.
难点在于,如何模拟对方的思维基础选择合适的方式. &
- Joda Time使用笔记
bylijinnan
javajoda time
Joda Time的介绍可以参考这篇文章:
http://www.ibm.com/developerworks/cn/java/j-jodatime.html
工作中也常常用到Joda Time,为了避免每次使用都查API,记录一下常用的用法:
/**
* DateTime变化(增减)
*/
@Tes
- FileUtils API
eksliang
FileUtilsFileUtils API
转载请出自出处:http://eksliang.iteye.com/blog/2217374 一、概述
这是一个Java操作文件的常用库,是Apache对java的IO包的封装,这里面有两个非常核心的类FilenameUtils跟FileUtils,其中FilenameUtils是对文件名操作的封装;FileUtils是文件封装,开发中对文件的操作,几乎都可以在这个框架里面找到。 非常的好用。
- 各种新兴技术
不懂事的小屁孩
技术
1:gradle Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。
现在构建系统常用到maven工具,现在有更容易上手的gradle,
搭建java环境:
http://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/
搭建android环境:
http://m
- tomcat6的https双向认证
酷的飞上天空
tomcat6
1.生成服务器端证书
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 36
- 托管虚拟桌面市场势不可挡
蓝儿唯美
用户还需要冗余的数据中心,dinCloud的高级副总裁兼首席营销官Ali Din指出。该公司转售一个MSP可以让用户登录并管理和提供服务的用于DaaS的云自动化控制台,提供服务或者MSP也可以自己来控制。
在某些情况下,MSP会在dinCloud的云服务上进行服务分层,如监控和补丁管理。
MSP的利润空间将根据其参与的程度而有所不同,Din说。
“我们有一些合作伙伴负责将我们推荐给客户作为个
- spring学习——xml文件的配置
a-john
spring
在Spring的学习中,对于其xml文件的配置是必不可少的。在Spring的多种装配Bean的方式中,采用XML配置也是最常见的。以下是一个简单的XML配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.or
- HDU 4342 History repeat itself 模拟
aijuans
模拟
来源:http://acm.hdu.edu.cn/showproblem.php?pid=4342
题意:首先让求第几个非平方数,然后求从1到该数之间的每个sqrt(i)的下取整的和。
思路:一个简单的模拟题目,但是由于数据范围大,需要用__int64。我们可以首先把平方数筛选出来,假如让求第n个非平方数的话,看n前面有多少个平方数,假设有x个,则第n个非平方数就是n+x。注意两种特殊情况,即
- java中最常用jar包的用途
asia007
java
java中最常用jar包的用途
jar包用途axis.jarSOAP引擎包commons-discovery-0.2.jar用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法.jaxrpc.jarAxis运行所需要的组件包saaj.jar创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法. w
- ajax获取Struts框架中的json编码异常和Struts中的主控制器异常的解决办法
百合不是茶
jsjson编码返回异常
一:ajax获取自定义Struts框架中的json编码 出现以下 问题:
1,强制flush输出 json编码打印在首页
2, 不强制flush js会解析json 打印出来的是错误的jsp页面 却没有跳转到错误页面
3, ajax中的dataType的json 改为text 会
- JUnit使用的设计模式
bijian1013
java设计模式JUnit
JUnit源代码涉及使用了大量设计模式
1、模板方法模式(Template Method)
定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以在子类中完成。
 
- Linux常用命令(摘录)
sunjing
crondchkconfig
chkconfig --list 查看linux所有服务
chkconfig --add servicename 添加linux服务
netstat -apn | grep 8080 查看端口占用
env 查看所有环境变量
echo $JAVA_HOME 查看JAVA_HOME环境变量
安装编译器
yum install -y gcc
- 【Hadoop一】Hadoop伪集群环境搭建
bit1129
hadoop
结合网上多份文档,不断反复的修正hadoop启动和运行过程中出现的问题,终于把Hadoop2.5.2伪分布式安装起来,跑通了wordcount例子。Hadoop的安装复杂性的体现之一是,Hadoop的安装文档非常多,但是能一个文档走下来的少之又少,尤其是Hadoop不同版本的配置差异非常的大。Hadoop2.5.2于前两天发布,但是它的配置跟2.5.0,2.5.1没有分别。 &nb
- Anychart图表系列五之事件监听
白糖_
chart
创建图表事件监听非常简单:首先是通过addEventListener('监听类型',js监听方法)添加事件监听,然后在js监听方法中定义具体监听逻辑。
以钻取操作为例,当用户点击图表某一个point的时候弹出point的name和value,代码如下:
<script>
//创建AnyChart
var chart = new AnyChart();
//添加钻取操作&quo
- Web前端相关段子
braveCS
web前端
Web标准:结构、样式和行为分离
使用语义化标签
0)标签的语义:使用有良好语义的标签,能够很好地实现自我解释,方便搜索引擎理解网页结构,抓取重要内容。去样式后也会根据浏览器的默认样式很好的组织网页内容,具有很好的可读性,从而实现对特殊终端的兼容。
1)div和span是没有语义的:只是分别用作块级元素和行内元素的区域分隔符。当页面内标签无法满足设计需求时,才会适当添加div
- 编程之美-24点游戏
bylijinnan
编程之美
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
public class PointGame {
/**编程之美
- 主页面子页面传值总结
chengxuyuancsdn
总结
1、showModalDialog
returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个IE的模式窗口时,用于返回窗口的值
主界面
var sonValue=window.showModalDialog("son.jsp");
子界面
window.retu
- [网络与经济]互联网+的含义
comsci
互联网+
互联网+后面是一个人的名字 = 网络控制系统
互联网+你的名字 = 网络个人数据库
每日提示:如果人觉得不舒服,千万不要外出到处走动,就呆在床上,玩玩手游,更不能够去开车,现在交通状况不
- oracle 创建视图 with check option
daizj
视图vieworalce
我们来看下面的例子:
create or replace view testview
as
select empno,ename from emp where ename like ‘M%’
with check option;
这里我们创建了一个视图,并使用了with check option来限制了视图。 然后我们来看一下视图包含的结果:
select * from testv
- ToastPlugin插件在cordova3.3下使用
dibov
Cordova
自己开发的Todos应用,想实现“
再按一次返回键退出程序 ”的功能,采用网上的ToastPlugins插件,发现代码或文章基本都是老版本,运行问题比较多。折腾了好久才弄好。下面吧基于cordova3.3下的ToastPlugins相关代码共享。
ToastPlugin.java
package&nbs
- C语言22个系统函数
dcj3sjt126com
cfunction
C语言系统函数一、数学函数下列函数存放在math.h头文件中Double floor(double num) 求出不大于num的最大数。Double fmod(x, y) 求整数x/y的余数。Double frexp(num, exp); double num; int *exp; 将num分为数字部分(尾数)x和 以2位的指数部分n,即num=x*2n,指数n存放在exp指向的变量中,返回x。D
- 开发一个类的流程
dcj3sjt126com
开发
本人近日根据自己的开发经验总结了一个类的开发流程。这个流程适用于单独开发的构件,并不适用于对一个项目中的系统对象开发。开发出的类可以存入私人类库,供以后复用。
以下是开发流程:
1. 明确类的功能,抽象出类的大概结构
2. 初步设想类的接口
3. 类名设计(驼峰式命名)
4. 属性设置(权限设置)
判断某些变量是否有必要作为成员属
- java 并发
shuizhaosi888
java 并发
能够写出高伸缩性的并发是一门艺术
在JAVA SE5中新增了3个包
java.util.concurrent
java.util.concurrent.atomic
java.util.concurrent.locks
在java的内存模型中,类的实例字段、静态字段和构成数组的对象元素都会被多个线程所共享,局部变量与方法参数都是线程私有的,不会被共享。
- Spring Security(11)——匿名认证
234390216
Spring SecurityROLE_ANNOYMOUS匿名
匿名认证
目录
1.1 配置
1.2 AuthenticationTrustResolver
对于匿名访问的用户,Spring Security支持为其建立一个匿名的AnonymousAuthenticat
- NODEJS项目实践0.2[ express,ajax通信...]
逐行分析JS源代码
Ajaxnodejsexpress
一、前言
通过上节学习,我们已经 ubuntu系统搭建了一个可以访问的nodejs系统,并做了nginx转发。本节原要做web端服务 及 mongodb的存取,但写着写着,web端就
- 在Struts2 的Action中怎样获取表单提交上来的多个checkbox的值
lhbthanks
javahtmlstrutscheckbox
第一种方法:获取结果String类型
在 Action 中获得的是一个 String 型数据,每一个被选中的 checkbox 的 value 被拼接在一起,每个值之间以逗号隔开(,)。
所以在 Action 中定义一个跟 checkbox 的 name 同名的属性来接收这些被选中的 checkbox 的 value 即可。
以下是实现的代码:
前台 HTML 代码:
- 003.Kafka基本概念
nweiren
hadoopkafka
Kafka基本概念:Topic、Partition、Message、Producer、Broker、Consumer。 Topic: 消息源(Message)的分类。 Partition: Topic物理上的分组,一
- Linux环境下安装JDK
roadrunners
jdklinux
1、准备工作
创建JDK的安装目录:
mkdir -p /usr/java/
下载JDK,找到适合自己系统的JDK版本进行下载:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
把JDK安装包下载到/usr/java/目录,然后进行解压:
tar -zxvf jre-7
- Linux忘记root密码的解决思路
tomcat_oracle
linux
1:使用同版本的linux启动系统,chroot到忘记密码的根分区passwd改密码 2:grub启动菜单中加入init=/bin/bash进入系统,不过这时挂载的是只读分区。根据系统的分区情况进一步判断. 3: grub启动菜单中加入 single以单用户进入系统. 4:用以上方法mount到根分区把/etc/passwd中的root密码去除 例如: ro
- 跨浏览器 HTML5 postMessage 方法以及 message 事件模拟实现
xueyou
jsonpjquery框架UIhtml5
postMessage 是 HTML5 新方法,它可以实现跨域窗口之间通讯。到目前为止,只有 IE8+, Firefox 3, Opera 9, Chrome 3和 Safari 4 支持,而本篇文章主要讲述 postMessage 方法与 message 事件跨浏览器实现。postMessage 方法 JSONP 技术不一样,前者是前端擅长跨域文档数据即时通讯,后者擅长针对跨域服务端数据通讯,p