• 地图搜索API接口在移动互联网中的应用
    当我们日常出行时,免不了需要搜索一些地点,比如:餐饮、车站。那么地图搜索可以很好地实现搜索功能。地图搜索包括:关键字搜索:通过文本关键字搜索地点信息,文本可以是结构化地址,例如:浙江省杭州市余杭区文一西路890号;也可以是 POI 名称,例如:首开广场;周边搜索:可设置圆心和半径,搜索圆形区域内的地点信息;多边形区域搜索:可设置首尾连接的几何点组成多边形区域,搜索坐标对应多边形内的地点信息;ID搜索:可通过已知的地点 ID(POI ID)搜索对应地点信息,建议结合输入提示接口使用。输入提示:可根据输入的关键词查询返回建议列表。可接入地图搜索API来实现各种地图搜索功能。下面介绍关键字搜索和周边搜索的使用,其他可参见接口文档关键字搜索请求参数名称类型必须说明keywordsString是地点关键字,只支持一个关键字 ,文本总长度不可超过80字符typesString否指定地点类型,可支持传入多个分类,多个类型用 | 分割regionString否搜索区划,增加指定区域内数据返回权重,如需严格限制返回数据在区域内,请搭配使用cityLimit参数,可输入citycode,adcode,cityname,cityname仅支持城市级别和中文,如“北京市”cityLimitString否指定城市数据返回限制,可选值:true/false,为true时,仅返回region对应区域内数据showFieldsString否返回结果控制,showFields用来筛选返回结果中可选字段。例:“children,indoor,business,navi,photos”,未设置时,只返回基础信息类内字段。pageSizeString否当前分页展示的数据条数,取值1-25,默认为10pageNoString否分页,取值1-100,默认为1返回样例{ "msg": "成功",//返回码对应描述 "code": 200,//返回码,详见返回码说明 "taskNo": "202960247220113090298671",//本次请求号 "charge": true,//计费标志 "data": { "count": "10",//总数 "list": [ { "address": "龙井路1号",//详细地址 "location": "120.121282,30.222719",//经纬度 "id": "B023B13L9M",//唯一标识 "name": "杭州西湖风景名胜区",//名称 "pcode": "330000",//所属省份编码 "adcode": "330106",//所属区域编码 "pname": "浙江省",//所属省份 "cityname": "杭州市",//所属城市 "typecode": "110202",//分类编码 "adname": "西湖区",//所属区县 "citycode": "0571",//所属城市编码 "type": "风景名胜;风景名胜;国家级景点",//所属类型 "business": {//商业信息 "opentime_today": "24小时营业",//今日营业时间 "cost": "0.00",//人均消费,目前仅在餐饮、酒店、景点、影院类返回 "keytag": "5A景区",//标签 "rating": "4.9",//评分,目前仅在餐饮、酒店、景点、影院类返回 "business_area": "西湖",//所属商圈 "alias": "西湖景区",//别名 "tel": "0571-89586930",//联系电话 "tag": "面面,鸽子,东坡肉,龙井虾仁,西湖醋鱼,特色小吃",//特色美食内容 "opentime_week": "00:00-24:00"//营业时间描述 }, "photos": [ { "title": "",//图片介绍 "url": "" //图片的下载链接 } ], "children": [//子地点信息 { "typecode": "150904",//分类编码 "address": "南山路与广福里交叉口北80米",//详细地址 "subtype": "停车场",//所属类型 "name": "杭州西湖风景名胜区停车点",//名称 "location": "120.158045,30.241689",//经纬度 "id": "B0H2158T3K" //唯一标识 } ], "navi": {//导航位置相关信息 "navi_poiid": "H51F022001_476398;4093",//对应的导航引导点坐标,一般为各类出入口,方便结合导航、路线规划等服务使用 "entr_location": "120.153345,30.224729",//入口经纬度坐标 "exit_location": "" //出口经纬度坐标 }, "indoor": {//室内相关信息 "indoor_map": "0",//是否有室内地图标志,1为有,0为没有 "floor": "",//楼层索引,一般会用数字表示,例如8;indoor_map为0时不返回 "truefloor": "" //所在楼层,一般会带有字母,例如F8;indoor_map为0时不返回 } } ] } } 周边搜索请求参数名称类型必须说明keywordsString否地点关键字,只支持一个关键字 ,文本总长度不可超过80字符typesString否指定地点类型,可支持传入多个分类,多个类型用 | 分割,当keywords和types均为空的时候,默认指定types为050000(餐饮服务)、070000(生活服务)、120000(商务住宅)locationString是中心点坐标,圆形区域检索中心点,不支持多个点。经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位radiusString否搜索半径,取值范围:0-50000,大于50000时按默认值,单位:米sortRuleString否排序规则,返回结果的排序规则。按距离排序:distance;综合排序:weight,默认distanceregionString否搜索区划,增加指定区域内数据返回权重,如需严格限制返回数据在区域内,请搭配使用cityLimit参数,可输入行政区划名或对应citycode或adcodecityLimitString否指定城市数据返回限制,可选值:true/false,为true时,仅返回region对应区域内数据showFieldsString否返回结果控制,showFields用来筛选返回结果中可选字段。例:“children,indoor,business,navi,photos”,未设置时,只返回基础信息类内字段。pageSizeString否当前分页展示的数据条数,取值1-25,默认为10pageNoString否分页,取值1-100,默认为1返回样例{ "msg": "成功",//返回码对应描述 "code": 200,//返回码,详见返回码说明 "taskNo": "202960247220113090298671",//本次请求号 "charge": true,//计费标志 "data": { "count": "10",//总数 "list": [ { "address": "龙井路1号",//详细地址 "location": "120.121282,30.222719",//经纬度 "id": "B023B13L9M",//唯一标识 "name": "杭州西湖风景名胜区",//名称 "pcode": "330000",//所属省份编码 "adcode": "330106",//所属区域编码 "pname": "浙江省",//所属省份 "cityname": "杭州市",//所属城市 "typecode": "110202",//分类编码 "adname": "西湖区",//所属区县 "citycode": "0571",//所属城市编码 "type": "风景名胜;风景名胜;国家级景点",//所属类型 "business": {//商业信息 "parking_type": "",//停车场类型 "cost": "0.00",//人均消费,目前仅在餐饮、酒店、景点、影院类返回 "keytag": "5A景区",//标签 "rating": "4.9",//评分,目前仅在餐饮、酒店、景点、影院类返回 "business_area": "西湖",//所属商圈 "alias": "西湖景区",//别名 "tel": "0571-89586930",//联系电话 "tag": "面面,鸽子,东坡肉,龙井虾仁,西湖醋鱼,特色小吃"//特色美食内容 }, "photos": [ { "title": "",//图片介绍 "url": "" //图片的下载链接 } ], "children": [//子地点信息 { "typecode": "150904",//分类编码 "address": "南山路与广福里交叉口北80米",//详细地址 "subtype": "停车场",//所属类型 "name": "杭州西湖风景名胜区停车点",//名称 "location": "120.158045,30.241689",//经纬度 "id": "B0H2158T3K" //唯一标识 } ], "navi": {//导航位置相关信息 "navi_poiid": "H51F022001_476398;4093",//对应的导航引导点坐标,一般为各类出入口,方便结合导航、路线规划等服务使用 "entr_location": "120.153345,30.224729",//入口经纬度坐标 "exit_location": "" //出口经纬度坐标 }, "indoor": {//室内相关信息 "indoor_map": "0",//是否有室内地图标志,1为有,0为没有 "floor": "",//楼层索引,一般会用数字表示,例如8;indoor_map为0时不返回 "truefloor": "" //所在楼层,一般会带有字母,例如F8;indoor_map为0时不返回 } } ] } }
  • [技术干货] 快递物流推送-快递订阅API接口的运用
    之前笔者介绍了快递查询API接口,主要是需要输入快递单号主动查询,无论物流状态有无变化,都需要主动查询,有可能多次查询的结果是没有变化的。这种方式有一定的不足:实时性不高,需要每次查询方能知道最新状态。通常按次计费,无论物流状态有无变化,只要发起查询就计费,增加了查询成本。有没有实时性更高的,当物流状态发生变化时,主动通知我的API接口呢?答案是有的,即“快递订阅推送API接口”。与主动查询相比,它有以下优点:提交一次单号,无需频繁手动查询快递状态,提高了获取物流信息的效率和便捷性。减少查询成本(按单计费),提升系统效率不再需要反复请求接口获取最新状态。与快递查询接口类似,快递订阅推送API,同样支持1500+快递公司,与官网同步数据更新。下面来介绍快递订阅推送API接口的使用快递订阅主要分两步:先调用订阅接口,提交单号,发起订阅订阅成功后,当物流状态发生变动时,由接口提供者将当前物流状态推送给使用者详细参阅这里订阅说明请求参数名称类型必须说明expressCodeString否快递公司编号numberString是运单编号mobileString否顺丰速运、中通、跨越速运需要传入收/寄件人手机号或后四位手机号callBackUrlString是物流轨迹推送地址,以https/http协议开头,长度不能大于200推送说明当物流状态发生变动时,接口提供者将当前物流状态数据推送至接入者提供地址为callBackUrl的接口数据结构{ "expressCode":"EMS", // 快递公司编号 详见:快递公司编码对照表 "number":"9796578035309",// 运单编号 "logisticsStatus":"SIGN", // 当前最新物流状态 详见:物流状态编码对照表 "logisticsStatusDesc":"已签收", // 当前最新物流状态描述 "details":[ // 完整的物流轨迹 { "time":1632123146000, // 物流变更时间 "logisticsStatus":"ACCEPT", // 物流状态 详见:物流状态编码对照表 "subLogisticsStatus":"ACCEPT", // 物流子状态 详见:物流状态编码对照表 "desc":"", //物流路由信息描述内容 "areaCode":"CN330100000000", // 路由节点所在地区行政编码 "areaName":"浙江省,杭州市" // 路由节路由节点所在地区 }, { "time":1632140994000, "logisticsStatus":"TRANSPORT", "subLogisticsStatus":"TRANSPORT", "desc":"离开【杭州电商仓配揽投部】,下一站【杭州萧山区东片集散中心】", "areaCode":"CN330100000000", "areaName":"浙江省,杭州市" }, ... ] } 请求格式application/json返回接收结果使用者需要返回接收处理结果返回给接口提供者如果是接收失败,接口提供者会再次推送,最多推送3次//接收成功 { "success":true } // 接收失败 { "success":false, "msg": "接收失败" } 接收示例(java)@PostMapping("callbackUrl") public Map<String,Object> receive(@RequestBody String data, HttpServletRequest request) { log.info("接收到快递物流推送数据: {}", data); ... // 处理自己的业务逻辑 Map<String, Object> result = new HashMap() if (处理成功) { result.put("success",true); } else { result.put("success",false); result.put("msg","接收失败, xxx"); } return result; }
  • 地理编码-逆地理编码-经纬度解析-逆经纬度解析API接口的运用
    移动互联网发展到今天,地图应用已非常广泛,比如:实时定位:打开地图App,它会自动定位你的坐标,并显示出具体地址信息。车辆/资产追踪:监控系统收到一个GPS坐标,需要将其转换为“车辆正在京港澳高速保定段”这样的可读信息,方便管理员理解。地图搜索与导航:用户在导航App中输入目的地地址,App将其转换为坐标后才能进行路径规划。物流与配送:将收件人的地址转换为坐标,用于优化配送路线和跟踪。位置服务注册:为商家或服务地点在线上地图进行标注。照片地理标记:用手机拍摄的照片包含了GPS坐标,相册或社交软件可以通过逆地理编码自动为照片添加地点标签要实现以上功能,采用地理编码、逆地理编码就是最好的解决方法:地理编码,又称经纬度解析,是指将人类可读的地址信息转换为地理坐标(经纬度)逆地理编码,又称经纬度解析,是地理编码的逆向过程,是指将地理坐标(经纬度)转换为人类可读的地址描述的过程地图基于坐标系,目前主流的坐标系有:GCJ02:火星坐标系,国内使用,比如:腾讯、高德WGS84 :国际通用坐标系,比如:手机GPS设备、GoogleBD09:百度坐标系对于开发者,不需要自己建立庞大的地理数据库,而是调用成熟的API服务本文介绍基于火星坐标系的高德地图和百度坐标系的百度地图高德地图地理编码请求参数名称类型必须说明addressString是规则遵循:国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦,如:北京市朝阳区阜通东大街6号。cityString否outputString否可选输入内容包括:JSON,XML。设置 JSON 返回结果数据将会以JSON结构构成;如果设置 XML 返回结果数据将以 XML 结构构成。callbackString否callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效。详细参阅这里返回样例{ "msg": "成功", "success": true, "code": 200, "taskNo": "74848319667949359984", "charge": true, "data": { "count": 1,//返回结果数目 "geocodes": [//地理编码信息列表 { "country": "中国",//国家 "formatted_address": "浙江省杭州市萧山区美哉美城",//格式化的地址 "province": "浙江省",//地址所在的省份名 "city": "杭州市",//地址所在的市区名称 "citycode": "0571",//城市编码 "district": "萧山区",//地址所在的区 "street": "街道",//街道 "number": "门牌",//门牌 "adcode": "330109",//区域编码 "location": "120.256544,30.224111",//经度,纬度 "level": "兴趣点",//匹配级别 } ] } 逆地理编码请求参数名称类型必须说明locationString是传入内容规则:经度在前,纬度在后,经纬度间以“,”分割,经纬度小数点后不要超过 6 位。poitypeString否支持传入POI TYPECODE及名称;支持传入多个POI类型,多值间用"radiusString否搜索半径。radius取值范围在0~3000,默认是1000。单位:米extensionsString否返回结果控制。extensions 参数默认取值是 base,也就是返回基本地址信息; extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。roadlevelString否道路等级。以下内容需要 extensions 参数为 all 时才生效。 可选值:0,1 当roadlevel=0时,显示所有道路 当roadlevel=1时,过滤非主干道路,仅输出主干道路数据outputString否返回数据格式类型。可选输入内容包括:JSON,XML。设置 JSON 返回结果数据将会以JSON结构构成;如果设置 XML 返回结果数据将以 XML 结构构成。callbackString否回调函数。callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效homeorcorpString否是否优化POI返回顺序。以下内容需要 extensions 参数为 all 时才生效。 homeorcorp 参数的设置可以影响召回 POI 内容的排序策略,目前提供三个可选参数: 0:不对召回的排序策略进行干扰。 1:综合大数据分析将居家相关的 POI 内容优先返回,即优化返回结果中 pois 字段的poi顺序。 2:综合大数据分析将公司相关的 POI 内容优先返回,即优化返回结果中 pois 字段的poi顺序。详细参阅这里返回样例{ "msg": "成功", "success": true, "code": 200, "taskNo": "25247068960117401139", "charge": true, "data": { "regeocodes": [{ //逆地理编码列表 "formatted_address": "浙江省杭州市萧山区盈丰街道顺发·美哉美城",//坐标地址 "addressComponent": { //地址元素列表 "country": "中国",//国家 "province": "浙江省",//坐标点所在省名称 "citycode": "0571",//城市编码 "city": "杭州市",//坐标点所在城市名称 "adcode": "330109",//行政区编码 "towncode": "330109015000",//乡镇街道编码 "district": "萧山区",//坐标点所在区 "township": "盈丰街道",//坐标点所在乡镇/街道 "seaArea": "所属海域信息",//所属海域信息 "neighborhood": { //社区信息列表 "name": [],//社区名称 "type": []//POI类型 }, "building": { //楼信息列表 "name": [],//建筑名称 "type": []//类型 }, "streetNumber": { //门牌信息列表 "number": "281号",//门牌号 "distance": "52.8425",//门牌地址到请求坐标的距离 "street": "民和路",//街道名称 "location": "120.257076,30.224231",//坐标点 经度,纬度 "direction": "东"//方向 }, "businessAreas": [//经纬度所属商圈列表 { "businessArea":"",//商圈信息 "name": "宁围",//商圈名称 "location": "120.273765,30.225767",//商圈中心点经纬度 经度,纬度 "id": "330109"//商圈所在区域的adcode } ] }, "roads": [//道路信息列表 请求参数 extensions 为 all 时返回 { "id": "",//道路id "name": "",//道路名称 "distance": "",//道路到请求坐标的距离 米 "direction": "",//方位 "location": ""//坐标点 经度,纬度 } ], "roadinters": [//道路交叉口列表 请求参数 extensions 为 all 时返回 { "distance": "",//交叉路口到请求坐标的距离 米 "direction": "",//方位 "location": "",//路口经纬度 经度,纬度 "first_id": "",//第一条道路名称 "first_name": "",//第二条道路id "second_id": "",//第二条道路名称 "second_name": ""//第二条道路id } ], "pois":[//poi信息列表 { "id": "",//poi的id "name": "",//poi点名称 "type": "",//poi类型 "tel": "",//电话 "distance": "",//该POI的中心点到请求坐标的距离 米 "direction": "",//方向 "address": "",//poi地址信息 "location": "",//坐标点 经度,纬度 "businessarea": ""//poi所在商圈名称 } ], "aois":[//aoi信息列表 { "id": "",//aoi的id "name": "",//aoi点名称 "adcode": "",//所属 aoi 所在区域编码 "location": "",//所属 aoi 中心点坐标 经度,纬度 "area": "",//所属aoi点面积 "distance": ""//输入经纬度是否在aoi面之中 } ] }] } } 百度地图地理编码请求参数名称类型必须说明addressString是待解析的地址。最多支持84个字节。可以输入两种样式的值,分别是:1、标准的结构化地址信息,北京市海淀区上地十街十号【推荐,地址结构越完整,解析精度越高】2、支持“路与路交叉口”描述方式,如北一环路和阜阳路的交叉路口第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回。cityString否地址所在的城市名。用于指定上述地址所在的城市,当多个城市都有上述地址时,该参数起到过滤作用,但不限制坐标召回城市。retCoordtypeString否添加后返回国测局经纬度坐标或百度米制坐标。示例:gcj02(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标)。默认bd09ll。outputString否输出格式为json或者xml,默认jsoncallbackString否将json格式的返回值通过callback函数返回以实现jsonp功能详细参阅这里返回样例{ "charge": true,//计费标志 "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "340833941206534747872156",//本次请求号 "data": { "confidence": 75,//描述打点绝对精度(即坐标点的误差范围)。confidence=100,解析误差绝对精度小于20m;confidence≥90,解析误差绝对精度小于50m;confidence≥80,解析误差绝对精度小于100m;confidence≥75,解析误差绝对精度小于200m;confidence≥70,解析误差绝对精度小于300m;confidence≥60,解析误差绝对精度小于500m;confidence≥50,解析误差绝对精度小于1000m;confidence≥40,解析误差绝对精度小于2000m;confidence≥30,解析误差绝对精度小于5000m;confidence≥25,解析误差绝对精度小于8000m;confidence≥20,解析误差绝对精度小于10000m; "analys_level": "POI",//可以解析地址文本中的最小地址结构,例如问题地址:北京市海淀区北京路百度大厦,analys_level:"POI",能精确理解的地址类型包含: 省 市 区县 乡镇 道路 门址 POI 。 "level": "商务大厦",//可以打点到地址文本中的真实地址结构,例如问题地址:北京市海淀区北京路百度大厦,level:"道路",能精确理解的地址类型,包含:UNKNOWN、国家、省、城市、区县、乡镇、村庄、道路、地产小区、商务大厦、政府机构、交叉路口、商圈、生活服务、休闲娱乐、餐饮、宾馆、购物、金融、教育、医疗 、工业园区 、旅游景点 、汽车服务、火车站、长途汽车站、桥 、停车场/停车区、港口/码头、收费区/收费站、飞机场 、机场 、收费处/收费站 、加油站、绿地、门址 "location": { "lng": 120.00135828539837,//经度值 "lat": 30.287874445189647 //纬度值 }, "precise": 1,//位置的附加信息,是否精确查找。1为精确查找,即准确打点;0为不精确,即模糊打点。 "comprehension": 35 //描述地址理解程度。分值范围0-100,分值越大,服务对地址理解程度越高(建议以该字段作为解析结果判断标准),当comprehension值为以下值时,对应的准确率如下:comprehension=100,解析误差100m内概率为91%,误差500m内概率为96%;comprehension≥90,解析误差100m内概率为89%,误差500m内概率为96%;comprehension≥80,解析误差100m内概率为88%,误差500m内概率为95%;comprehension≥70,解析误差100m内概率为84%,误差500m内概率为93%;comprehension≥60,解析误差100m内概率为81%,误差500m内概率为91%;comprehension≥50,解析误差100m内概率为79%,误差500m内概率为90%,解析误差:地理编码服务解析地址得到的坐标位置,与地址对应的真实位置间的距离。 } } 逆地理编码输入参数名称类型必须说明locationString是根据经纬度坐标获取地址,格式:纬度,经度。例如:120.067824,31.413068。coordtypeString否坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84( GPS经纬度)。默认bd09ll。retCoordtypeString否添加后返回国测局经纬度坐标或百度米制坐标。示例:gcj02(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标)。默认bd09ll。extensionsPoiString否extensions_poi=0,不召回pois数据。extensions_poi=1,返回pois数据(默认显示周边1000米内的poi),并返回sematic_description语义化数据。extensionsRoadString否当取值为true时,召回坐标周围最近的3条道路数据。默认false。extensionsTownString否当取值为true时,行政区划返回乡镇级数据(town),仅国内召回乡镇数据。当取值为false时,行政区划不返回乡镇级数据(town)。默认true。radiusString否以下内容需要 extensionsPoi=1时才生效;poi召回半径,允许设置区间为0-1000米,超过1000米按1000米召回。默认1000。callbackString否将json格式的返回值通过callback函数返回以实现jsonp功能。poiTypesString否以下内容需要 extensionsPoi=1时才生效;可以选择poi类型召回不同类型的poi,例如poiTypes=酒店,如想召回多个POI类型数据,可以languageString否指定召回的行政区划语言类型。 召回行政区划语言list(全量支持的语言见示例)。 当language=local时,根据请求中坐标所对应国家的母语类型,自动选择对应语言类型的行政区划召回。目前支持多语言的行政区划区划包含country、province、city、district。包含:el gu en vi ca it iw sv eu ar cs gl id es en-GB ru sr nl pt tr tl lv en-AU lt th ro fil ta fr bg hr bn de hu fa hi pt-BR fi da ja te pt-PT ml ko kn sk zh-CN pl uk sl mr locallanguageAutoString否当用户指定language参数时,是否自动填充行政区划。1填充,0不填充。填充:当服务按某种语言类别召回时,若某一行政区划层级的语言数据未覆盖,则按照“英文→中文→本地语言”类别行政区划数据对该层级行政区划进行填充,保证行政区划数据召回完整性。详细参阅这里返回样例{ "charge": true,//计费标志 "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "007493807239868764046631",//本次请求号 "data": { "formatted_address": "江苏省无锡市滨湖区",//结构化地址(不包含POI信息)。如果需要标准的结构化地址,比如获取XX路XX号,推荐使用这个参数 "business": "",//坐标所在商圈信息,如 "人民大学,中关村,苏州街"。最多返回3个。 "sematic_description": "梨梨园上草土菜馆客栈西888米",//当前位置结合POI的语义化结果描述。需设置extensionsPoi=1才能返回。 "roads": [ { "name": "",//周边道路名称 "distance": ""//传入的坐标点距离道路的大概距离 } ], "formatted_address_poi": "江苏省无锡市滨湖区马山街道梨梨园上草土菜馆客栈西888米",//结构化地址(包含POI信息)。需设置extensions_poi=1才能返回。如果需要详细的地址描述,推荐使用这个参数。 "location": { "lng": 120.06782399999993,//经度值 "lat": 31.413067895001422 //纬度值 }, "edz": { //所属开发区 "name": "" // }, "poiRegions": [ { "direction_desc": "",//请求中的坐标与所归属区域面的相对位置关系 "name": "",//归属区域面名称 "tag": "",//归属区域面类型 "distance": "",//离坐标点距离 "uid": "",//poi唯一标识 } ], "pois": [ { "zip": "",//邮编 "uid": "60c55c3bd4fbb98c276e98a7",//poi唯一标识 "distance": "888",//离坐标点距离 "poiType": "美食",// "name": "梨梨园上草土菜馆客栈",//poi名称 "tel": "",//电话 "parent_poi": { //poi对应的主点poi(如,海底捞的主点为上地华联,该字段则为上地华联的poi信息。如无,该字段为空),包含子字段和pois基础召回字段相同。 "uid": "",// "distance": "",// "name": "",// "tag": "",// "addr": "",// "point": { "x": 0,// "y": 0 // }, "direction": ""// }, "tag": "美食",//poi类型,如’美食;中餐厅’。tag与poiType字段均为poi类型,建议使用tag字段,信息更详细 "addr": "江苏省无锡市滨湖区马山镇和平村北门环山西路91号",//地址信息 "cp": " ",// "point": { //poi坐标 "x": 120.07520393899887,// "y": 31.410457606202677 // }, "direction": "西"//和当前坐标点的方向 } ], "addressComponent": { //注意,国外行政区划,字段仅代表层级 "city_level": 2,//城市所在级别(仅国外有参考意义。国外行政区划与中国有差异,城市对应的层级不一定为『city』。country、province、city、district、town分别对应0-4级,若city_level=3,则district层级为该国家的city层级) "country": "中国",//国家 "town": "马山街道",//乡镇名,需设置extensions_town=true时才会返回 "distance": "",//区县名 "city": "无锡市",//城市名 "adcode": "320211",//行政区划代码 "country_code_iso": "CHN",//国家英文缩写(三位) "country_code_iso2": "CN",//国家英文缩写(两位) "country_code": 0,//国家编码 "town_code": "320211009",//乡镇id "province": "江苏省",//省名 "street": "",//道路名 "district": "滨湖区",//相对当前坐标点的距离,当有门牌号的时候返回数据 "street_number": "",//道路门牌号 "direction": ""//相对当前坐标点的方向,当有门牌号的时候返回数据 } } }
  • 实时股票查询接口汇总-A股-沪深-报价-排行-成交
    在投资世界里,股票行情的变化是非常频繁的。若要准确抓住投资时机,首要任务是快速、全面的了解股票数据资源,无论是实时交易信息、历史交易记录,还是财务数据、基本面资料,均不可或缺。我们的核心目标,便是从这些海量数据中提炼出有价值的信息,以指引我们的投资决策。如今,无论是个人开发者写个自用看盘小工具,还是机构搭建高频交易系统,都离不开对行情数据的自动化获取。股票行情API 接口希望能为大家助一臂之力。支持范围A股-K线A股-报价A股-排行A股-停牌信息A股-信息拓展沪深-K线沪深-板块成分股排行沪深-板块排行沪深-大盘涨跌数沪深-分时成交沪深-分钟K含均线沪深-股票排行沪深-股票信息接入说明以A股K线为例请求参数名称类型必须说明symbolString是品种代码 如sh000001typeString是k线类型,可选值:1 - 1分钟5 - 5分钟15 - 15分钟30 - 30分钟60 - 60分钟120 - 120分钟240 - 日K1200 - 周K7200 - 月K86400 - 年KpageSizeString否返回条数,默认:10maString否返回ma均线,可选值为:5,10,15,20,25,30,可不传详细参阅这里返回样例{ "code": 200,//返回码,详见返回码说明 "msg": "成功",//返回码对应描述 "taskNo": "649352771175881926901748",//本次请求号 "charge": true,//计费标志 "data": { "list": [ { "volume": "18616401",//当前成交数 "high": "7.050",//当前最高价 "amount": "130814366.1570",//成交量 "low": "7.000",//当前最低价 "day": "2024-07-31 13:30:00",//数据时间 "close": "7.020",//当前收盘价 "open": "7.020",//当前开盘价 "ma_price15": 15.24,//15条均价 "ma_volume15": 1294429 //15条均成交量 } ] } }
  • 快递查询-物流查询-快递物流查询API接口
    目前,电商、货运等行业都需要快递查询API,对运单号的物流轨迹进行跟踪。通过快递查询接口,可以实时查询物流轨迹。支持一千多家快递公司与官网同步数据更新。可以实现将快递查询功能集成到自有的系统中,方便用户实时跟踪物流信息。比如:电商网站,直接在“我的订单”页面内就能看到订单的物流状态。改变订单的状态和交易流程,例如单号变为“已签收”,就能让订单变为可以确认退换货等。物流平台可以自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。评估选择快递公司,根据“已签收”的运单数,可以算出销售人员的业绩,且便于应对货到付款的结算。请求参数名称类型必须说明numberString是运单编号expressCodeString否快递公司编号 例如圆通:YTO。快递公司编号不传时,系统会自动识别快递公司编号,但响应时间会比传递快递编号略长mobileString否顺丰速运、中通、跨越速运需要传入收/寄件人手机号或后四位手机号sortString否物流明细排序,desc:倒序,asc:升序,默认asc详解接入参见如果是需要当物流轨迹发生变化,能实时接收物流轨迹的,也可以用按单订阅成功返回样例{ "code": 200, // 详见code返回码说明 "msg": "成功", // code 对应的描述 "charge": true, // 计费标志 "taskNo": "30853523396532582768", // 本次请求号 "data": { "expressCode": "ZTO", // 快递公司编号 "expressCompanyName": "中通快递", // 快递公司名称 "expressCompanyLogo": "", // 快递公司logo "number": "73171992731469", // 运单编号 "logisticsStatus": "SIGN", // 物流状态,详见:物流状态编码对照表; "logisticsStatusDesc": "已签收", // 物流状态描述 "theLastMessage": "快件已在金华孝顺签收 签收人:本人。如有疑问请电联:15888996643, 投诉电话:0579-82977127, 您的快递已经妥投。风里来雨里去, 只为客官您满意。上有老下有小, 赏个好评好不好?【请在评价快递员处帮忙点亮五颗星星哦~】", // 运单号物流流转当前最新描述 "theLastTime": "2021-11-23 12:24:58", // 运单号物流流转当前最新变更时间 "takeTime": "2天17小时33分", //从揽收到送达所耗时间 "courier": "付村二部傅军", // 快递员 "courierPhone": "15888996643", // 快递员联系方式 "logisticsTraceDetails": [ // 物流明细 { "time":1632123146000, // 物流变更时间 "logisticsStatus":"ACCEPT", // 物流状态 详见:物流状态编码对照表 "subLogisticsStatus":"ACCEPT", // 物流子状态 详见:物流状态编码对照表 "desc":"【杭州电商仓配揽投部】已收寄,揽投员:刘岭,电话:13754324900", //物流路由信息描述内容 "areaCode":"CN330100000000", // 路由节点所在地区行政编码, 未必会返回 "areaName":"浙江省,杭州市" // 路由节路由节点所在地区 }, { "time":1632140994000, "logisticsStatus":"TRANSPORT", "subLogisticsStatus":"TRANSPORT", "desc":"离开【杭州电商仓配揽投部】,下一站【杭州萧山区东片集散中心】", "areaCode":"CN330100000000", "areaName":"浙江省,杭州市" }, ... ] } }
  • 短网址生成-短链接生成-ShortUrl生成-ShortLink生产接口API-永久短网址
    当在互联网上用发送网址(URL)的方式分享内容时,通常会因为URL过长遇到很多限制,比如:短信发送会拆分成多个短信,增加成本;URL可能包含随机字符、参数拼接,用户无法直观判断目标地址,信任度低;有些社区会限制URL的长度,导致无法分享;短网址(Short URL)是指将原始冗长的网址缩短为长度更短的网址,当点击短网址时,可跳转到原始长网址的服务。短网址服务适用场景短信推广:将原始长网址转换短网址后,放到短信中发送,可以短信内容,避免拆分成多个短信,节省成本;社区平台分享:微博、微信、抖音等平台分享式,短网址更易排版,且避免长 URL 被截断;二维码应用:在生成二维码时,如果原始网址过长,可能会导致二维码的复杂度增加,影响扫码成功率。短网址生成接口特色功能短网址域名拦截后可动态替换支持302跳转原始网址和隐藏原始网址两种方式,隐藏原始网址的方式可避免原始网址被拦截请求参数名称类型必须说明targetString是原始地址详细使用参见返回样例{ "code": 200, "msg": "成功",//code对应的描述 "taskNo": "41020892700032664119",//请求号 "charge": true, "data": { "target ":"", //原始链接 "link":"", //短链地址,带https:// "simpleLink":"", //短链地址,不带https:// }
  • 电子税务平台Api接口-发票查验-发票验真-发票核验-发票查验真伪
    随着数字化办公和财税电子化管理日益普及,发票的真实性查验已经成为企业财务、税务审计等业务流程中重要的一环。而不符合规定、虚假的发票,不得作为财务凭证,任何企业和个人有权拒收。发票查验接口即可实现发票真实性查验的功能。如对查验结果有疑议,可持发票原件至当地税务机关进行鉴定。开发者可通过编程方式将发票查验接口集成到自己的系统中,输入发票号码、发票代码、开票金额和开票日期或上传发票版式文件(pdf、ofd或xml),即可实现在线实时查询发票信息,辨别发票真伪等功能。1、支持多种发票类型增值税专用发票普通发票机动车销售发票二手车销售发票通行费发票航空运输电子客票行程单铁路电子客票财政发票区块链发票通用电子发票2、可查验的时间范围可查验最近5年内开具的发票;当日开具的发票当日可进行查验;3、实现方式接入发票查验接口即可实现发票查验功能输入参数名称类型必须说明fpdmString否发票代码 非全电发票必填fphmString是发票号码kprqString是开票日期 格式YYYYMMDDjymString否校验码后 6 位, 增值税普通发票、增值税电子普通发票、增值税普通发票(卷式)、增值税电子普通发票(通行费)必填jeString否增值税专用发票、增值税电子专用发票、机动车销售统一发票输入不含税金额;二手车销售统一发票输入车价合计;全电发票输入价税合计响应示例以增值税专用发票为例{ "code": 200, // 返回码,详见code返回码说明 "msg": "成功", //code对应的描述 "taskNo": "12552230716560623515", // 本次唯一请求号 "charge": true, // 计费标志 "data": { "fplx": "01", // 发票类型,详见发票类型说明 "times": 4, // 查验次数(第几次) "xfsbh":"1522***********K01451", //销方识别号 "gfmc":"东方****有限公司", //购方名称 "gmfyhzh":"工行杭州景江苑支行 12******************36", //购买方银行账号 "xhqdBz":"N", //清单标志:发票明细中是否有清单行(Y清单 N非清单) "dkXsfmc":"马*弟<", //代开销售方名称 "dq":"内蒙古自治区", //地区 "tspzDm": "", // 特殊票种代码,02农产品收购发票 08成品油发票 "xsfdzdh":"乌兰浩特市 1584****535", //销售方地址电话 "se":240, //税额 "kprq":"2022-01-04 00:00:00", //开票日期 "bz":"代开企业税号:15222*****71610 代开企业名称:马*弟<br/>房屋坐落地址:乌兰浩特市爱国小区*号楼", //备注 "kjlx":"2", //开具类型 "fpztDm":"0", //发票状态代码 "sbbh":"661816407119", //设备编号 "gfsbh":"91330********66XE", //购方识别号 "fpdm":"150*****60", //发票代码 "fphm":"00****89", //发票号码 "jym":"69591030500952264929", //校验码 "dkXsfsbh":"152**************610", //代开销售方识别号 "gmfdzdh":"杭州市滨江区****66号 0571-8*****34", //购买方地址电话 "xsfyhzh":"31522***********07111", //销售方银行账号 "jshj":16800, //价税合计 "jshjcn":"壹万陆仟捌佰元整", //价税合计(中文大写) "je":16560, //金额 "xfmc":"国家税务总局乌兰浩特市税务局第一税务分局", //销方名称 "txfbz":"Y",//如果是通行费,则有该字段,Y表示该通行费可抵扣,N表示不可以抵扣 //通行费标识 "tspzDm": "86",//特殊票种,02-农产品收购;03-稀土矿产品发票;04-稀土产成品发票;05-石脑油;06-通行费可抵扣;07-通行费(不可抵扣);08-成品油发票;12-机动车; 76-报废产品收购;77-报废产品收购; 83-建筑服务; 84-货物运输服务; 85-不动产销售; 86-不动产经营租赁服务; 89-旅客运输服务; 92-自产农产品销售; 93-拖拉机按减征税; 96-农产品收购;其它为空; "hwxx":[ //货物信息 { "ggxh":"", //规格型号 "jldw":"套", //计量单位 "dj":"16560.00", //单价 "mxxh":1, //明细序号 "se":240, //税额 "ysse":"240", //原始税额 "mc":"房屋租赁(20220101-20221231)", //名称 "sl":"1", //数量 "je":16560, //金额 "slv":0.015, //税率 "ysslv":"1.5%", //原始税率 "spbm":"" //商品编码 } ] } }
  • [问题求助] 项目接入SDK问题
    https://support.huaweicloud.com/devg-idme/idme_devg_0046.html,按照该文档步骤,引入API代理器提供的JAR包,配置MAVEN,添加配置类,添加扫描。项目编译通过,但启动报错,不知道哪一步少了2026-01-04 17:47:04.764 ERROR 17640 --- [           main] o.s.boot.SpringApplication               : Application run failedorg.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.me.base.myapp.MyAppApplication]; nested exception is java.io.FileNotFoundException: class path resource [jakarta/validation/ConstraintValidator.class] cannot be opened because it does not exist
  • [技术干货] 【赛后分享】🚀 基于昇腾AI平台的轻量化推理优化:让国产大模型跑得更快更稳!
    ✨ 活动主题:技术干货深挖掘 & 备赛心路全记录我们团队参加了年度中国青年揭榜挂帅擂台赛·华为赛道,命题为“推理大模型的训练调优与性能加速助力全栈自主”。本次征文将分享我们在国产化硬件(如昇腾芯片)上实现大模型推理性能突破的实践和经验。我们的目标是:让国产硬件上的大模型跑得快、跑得稳、跑得准。💡 技术干货深挖掘:算子层优化是性能突破的关键本次赛题的核心是探索适配昇腾架构的轻量化推理优化方案,以提升模型在国产算力平台上的运行效率。面对国产AI发展中存在的硬件限制、工具链缺失、架构依赖等行业痛点,我们将技术突破口聚焦在了算子层优化。算子层优化能在不改动模型结构的前提下显著提升性能。1. 核心瓶颈:MatMul与GELU算子优化我们通过分析确定,核心算子如 MatMul(矩阵乘法)和 GELU(激活函数)是影响推理性能的主要瓶颈。MatMul(矩阵乘法)优化实践:我们采用了 Tiling(切分)下发策略,配合 HOST 侧和 Kernel 侧的协同流水计算,实现了大矩阵的分块加载、流水线并行计算与结果写回。这种优化支持高性能、可扩展的批量矩阵乘法,充分释放NPU算力。该 MatMul 算子已在华为香橙派开发板上成功部署,并在 LLaMa 与 Whisper 模型的端到端推理流程中实现了高效加速。GELU(激活函数)优化实践:GELU的实现采用了多项式近似 $\tanh$ 函数,通过优化计算步骤,实现了在保持较高精度的同时,减少计算开销和提升推理速度的双重目标。从性能对比图可以看出,经过优化后,GELU算子在三个测试用例中的执行时间均有所缩短,整体性能得到明显提升。2. 模型选型与最终性能我们以 Qwen2.5-3B 和 DeepSeek-R1-Distill-Qwen-1.5B 作为基准模型进行轻量化推理优化。在两个基准模型中,添加了优化算子后,模型精度得分均有上升,且速度(tokens/s)均提升了约 6%。我们最终选择了精度较高的 Qwen2.5-3B + 算子模型作为最终方案,其精度得分为 49.79,速度为 26.75 tokens/s。虽然 DeepSeek-R1-Distill-Qwen-1.5B + 算子模型速度(60.32 tokens/s)更快,但在精度得分(40.13)上略低。🎯 备赛心路全记录:从算力瓶颈到生态贡献者我们的研究历程是克服国产算力平台挑战,助力全栈自主AI的实践。直面瓶颈: 在国产算力平台部署大模型时,我们发现了推理性能受限、算子适配与生态支持不足的问题,促使我们从算子优化与推理调优入手突破瓶颈。产教融合与协作: 团队与华为深度合作,积极开发高性能算子,并向昇腾CANN算子仓库贡献,获评“昇腾CANN优秀贡献团队”。我们也是国内首个完成华为昇腾算子仓库外部合入的高校科研团队。成果落地与认可: 我们将优化后的技术应用于“基于昇腾的大模型多模态交互式抗压潜能评估系统”案例,有效评估抗压潜能和负向情绪。🎁 总结与建言:将短暂的比赛延伸为长久的影响力我们的经验证明,大模型推理调优与性能加速已成为实现国产全栈自主的重要方向。致未来选手的话:“独木不成林”,国产全栈自主AI的实现,需要一代代开发者的不懈努力。鼓励下一届的学弟学妹们,不仅仅停留在模型调用层面,更要深入底层,积极参与产教融合项目,向算子、框架等基础技术环节渗透。你的每一次分享和贡献,都将成为照亮国产AI技术生态的星光。
  • [校园大使专区] 华为开发者空间“毕业设计加速器”
    在近期举办的“毕业设计加速器”校园活动中,我们作为昆明理工大学人工智能协会的承办方,成功将华为开发者空间的AI与云计算资源引入校园,助力学生解决毕业设计与项目开发中的实际问题。现将组织心得总结如下:一、精准定位,资源对接高效本次活动聚焦学生毕业设计中“算力不足、环境配置难”等痛点,精准推荐华为开发者空间的八大免费权益,并通过现场演示与实操引导,帮助学生快速上手平台功能。我们特别设置了Tokens领取与API调用体验环节,让技术资源从“概念认知”迅速转化为“即拿即用”,极大提升了学生的参与热情和资源使用意愿。    二、学生主导,技术驱动落地由HCSD校园大使及协会核心成员自主策划执行,结合自身在ICT大赛、国家级项目中的实战经验,围绕真实开发场景进行平台演示与技术讲解。通过“以学生教学生”的方式,降低了技术理解门槛,增强了内容的可信度与感染力,也激发了更多同学参与技术实践的信心。    三、线上线下联动,构建技术社群闭环  通过“线上预热—线下引爆—社群留存”的运营策略,活动不仅实现现场500余人次参与、325人成功领取权益,更建立起150+人的“昆工华为开发者交流群”。社群内持续开展技术答疑、资源分享与项目组队,形成了从活动引流到社群沉淀的完整闭环,为学生提供了持续成长的技术土壤。    四、实战演示,提升技术认知现场不仅展示ModelArts平台从数据上传到模型部署的全流程,还设置了图像分类实战案例,带领学生完成从数据标注到模型推理的完整过程。这种“看得见、摸得着”的实操方式,将抽象的“AI开发”转化为可视、可操作的实战过程,有效提升了非计算机专业学生对技术的理解与兴趣。五、展望未来,构建良性技术生态本次活动不仅是资源推广,更是校园技术生态的起点。未来我们将继续依托华为开发者空间,开展系列技术工作坊、项目实战营、竞赛集训等深度活动,推动华为技术与高校课程设计、毕业指导、创新实践的深度融合,持续培养“懂理论、能实战、会创新”的复合型人才,形成“技术学习-项目实践-竞赛输出”的良性循环。 
  • [技术干货] 除了API后端,Serverless还能这么玩?十大实战应用场景盘点
    在云计算领域,Serverless架构早已突破“仅用于API后端”的刻板印象,成为企业降本增效、实现业务创新的核心引擎。本文基于行业权威报告与前沿实践,盘点Serverless在十大场景中的实战价值,直击资源闲置、弹性不足、运维复杂等痛点,为技术选型提供深度参考。  一、实时文件处理:高并发场景下的“秒级响应”引擎 痛点破解:传统架构在处理用户上传的图片、音视频时,需预置资源应对流量高峰,易导致资源浪费或响应延迟。 Serverless方案:通过事件触发函数,自动执行**压缩、格式转换、内容审核**等操作。例如,用户上传图片后,多个函数并行处理,实现毫秒级转码与鉴黄鉴暴。 实践价值:资源利用率提升30%+,且无需管理文件处理集群。 二、数据ETL处理:低成本实现大数据流水线 痛点破解:传统Hadoop/Spark集群成本高,资源闲置严重,且扩缩容缓慢。 Serverless方案:对象存储触发函数执行数据抽取、清洗、转换任务。例如,日志数据存入OSS后,自动触发函数进行实时聚合,并导入分析数据库。 实践价值:按量计费避免资源空置,处理时长缩短60%+。 三、AI推理预测:弹性承载模型服务 痛点破解:AI模型部署需长期占用GPU资源,推理请求波动大,成本可控性差。 Serverless方案:将训练好的模型封装为函数,通过API网关触发推理任务。 实践价值:资源成本降低70%+,且自动伸缩应对流量洪峰。 四、IoT后端:万物互联的“轻量大脑”痛点破解:物联网设备数据量波动大,传统后端易过载或资源浪费。 Serverless方案:设备数据通过MQTT等协议触发函数,实时处理并存储。例如,智能音箱的语音请求由函数解析后返回结果。 实践价值:毫秒级弹性伸缩,支撑亿级设备连接。 五、音视频转码:自适应码率的“智能工厂” 痛点破解:视频平台需为不同终端生成多清晰度文件,转码集群运维复杂。 Serverless方案:上传视频触发函数链,并行生成多规格输出。 实践价值:转码成本下降40%+,且支持4K/8K超高清实时处理。 六、电商边缘定制:大促流量的“隐形护盾” 痛点破解:电商活动期间流量瞬发,中心化架构易崩溃。 Serverless方案:边缘节点运行函数,实现个性化页面渲染、虚拟排队、库存更新等功能。 实践价值:春晚级大促场景下,资源成本降低20%,研发效率提升40%。 七、实时数据处理:流式数据的“即时分析器” 痛点破解:传统消息队列处理流数据时,需维护消费者集群,稳定性差。 Serverless方案:消息触发函数实时清洗、聚合数据。例如,电商点击流实时分析用户行为。 实践价值:数据延迟从分钟级降至秒级,运维效率提升70%。 八、自动化运维:无人值守的“云上SRE”痛点破解:运维脚本需常驻服务器,权限管理复杂,执行记录难追踪。 Serverless方案:通过定时触发器或告警事件执行**日志归档、资源巡检、自动扩容**等任务。 实践价值:运维人力投入减少50%+,且规避脚本环境依赖问题。 九、持续集成/交付:按需供给的“构建工坊”痛点破解:传统CI/CD需维护构建集群,资源利用率低。 Serverless方案:代码提交触发函数动态创建构建环境,完成后自动释放。 实践价值:构建资源成本下降80%,并发任务数无上限。 十、边缘AI与渲染:元宇宙的“算力毛细血管” 痛点破解:XR、云游戏等场景要求低延迟渲染,中心化算力难以满足。 Serverless方案:边缘节点运行函数完成图像渲染、AI推理,结果就近返回。 实践价值:端到端延迟降至50ms内,用户体验显著优化。 场景选择指南:如何匹配业务与Serverless? 根据CNCF总结,Serverless优先适用于以下特征场景: 1. 异步并发——任务可独立拆分并行处理; 2. 流量波动大——突发请求需秒级扩容; 3. 短时任务——单次执行时长在分钟级内; 4. 事件驱动——由存储、消息等事件触发。 结语:Serverless的边界与未来 Serverless正从“单一功能平台”迈向“全栈应用引擎”,在AI、边缘计算、元宇宙领域持续拓展。据Gartner预测,2025年超50%企业将采用Serverless架构。企业需跳出“仅作API后端”的局限,挖掘其在实时处理、弹性算力、成本优化中的核心价值,方能在技术浪潮中抢占先机。
  • 哪个实名认证适合我?
    随着互联网的普及,为保障网络活动的真实可靠,杜绝网络诈骗,网络实名制是目前互联网用户开展活动的前提条件,比如:电子商务、网络游戏、网络直播等,必须用户实名进行。实现网络实名制有效的方法就是实名认证。实名认证方法有多种,一般分为:身份证实名认证、人脸识别、手机号实名认证和银行卡实名认证。身份证实名认证公民在派出所办理户口或身份证时,身份信息就会记录在全国身份证库,身份证库则可以作为身份核实的依据。依据身份证库进行实名认证,最简单的方法就是根据姓名和身份证号去全国身份证库中匹配(也称:身份证二要素),一致则身份核实正确,否则为错误。该方法实现简单直接,但是也有其缺陷:如果身份信息被泄露,自身身份信息就可能被他人利用去进行实名认证,因此,更有效的方法是:人脸识别。人脸识别人脸识别是在身份证二要素的基础上,增加人脸照片,将输入的人脸照片与身份证库中的人脸照片比对,即姓名、身份证号和人脸照片三个要素一致才表示核实正确(也称:人像比对)。那么怎么保证人脸照片是否是本人呢,方法是:活体检测。活体检测是通过多种方式实时采集人脸,确保人脸是本人,再用采集到的人脸照片作为人像比对的输入,以完成人脸识别。活体检测采集人脸方式主要有三种:实时动作配合式活体检测、实时炫彩活体检测、静默活体检测。**实时动作配合式活体检测:**通过实时检测用户眼睛,嘴巴,头部姿态的状态,来判断是否本人实时操作。一般用于手机APP。**实时炫彩活体检测:**通过屏幕上闪烁不同颜色的光线,根据面部反光鉴别判断当前用户是否本人实时操作,一般用于手机APP。**静默活体检测:**无需用户做动作,直接采集摄像头中的人脸,一般用户门禁、闸机有现场采集设备的场景。除了使用身份证库来进行实名认证外,还有常用的方法就是:手机号实名认证和银行卡实名认证。手机号实名认证用户在全国三大运营商办理手机号时需要提供个人信息,包括:姓名和身份证,这部分信息会记录在运营商库。运营商库就可以作为实名认证的依据,主要分为:手机号三要素、手机号二要素。手机号三要素是指根据姓名、手机号和身份证号三要素是否一致,来核实身份信息。手机号二要素是指根据姓名和手机号,或者根据身份证号和手机二要素是否一致,来核实身份信息。银行卡实名认证用户在各大银行办理银行卡时需要提供个人信息,包括:姓名、证件号(可以不是身份证)和手机号,这部分信息会记录在全国银联库。银联库就可以作为实名认证的依据,主要分为:银行卡四要素、银行卡三要素、银行卡二要素。银行卡四要素是指根据姓名、银行卡号、证件号和手机号四要素是否一致,来核实身份信息。银行卡三要素是指根据姓名、银行卡和证件号三要素是否一致,来核实身份信息。银行卡二要素是指根据姓名、银行卡号二要素是否一致,来核实身份信息。
  • [技术干货] 鸿蒙自定义下拉选择组件开发指南
    鸿蒙自定义下拉选择组件开发指南为什么要做这个今天在开发鸿蒙应用时,我遇到了一个棘手的样式定制问题:官方提供的 Select 组件 虽然稳定性和易用性都很出色,但在实际开发中存在限制:官方文档中部分样式属性需要在 API 20 及以上版本才能使用,而我的项目需要兼容更低版本,导致样式定制需求完全无法满足。为解决这个问题,我翻遍了鸿蒙官方文档,却始终没找到适配低版本的解决方案;上网搜索时,相关内容要么是收费教程,要么是基于旧版 API 的过时文章。最终,我决定自己 “手搓” 一个自定义 Select 组件,虽然组件功能和细节可能还有些粗糙,但已能满足基础使用需求。下面我会记录该组件的完整使用教程,也欢迎大家在评论区交流优化思路。如果这份内容能够帮助到你,非常荣幸。原生鸿蒙<select>组件存在两个限制:无法自定义下拉箭头图标无法灵活控制文本样式箭头图标固定:下拉箭头是系统自带的,没法替换成设计稿里的自定义图标,视觉统一性差;通过自定义组件MenuBuilde 完美解决这些问题,实现效果如下:修改前原生组件:修改后效果:核心代码解析@Preview @Component export struct MenuBuilder { // 关键属性定义 @Prop img0: string = '' // 默认箭头图标路径 @Prop img1: string = '' // 激活状态箭头图标路径 @Prop menuItermList: string[] = [''] // 选项数据源 @Prop selectedValue: string = '请选择' // 默认提示文本 // 状态管理 @State private isMenuVisible: boolean = false @State private ischoose: boolean = false @State selectedID: number = -1 // 回调函数 private returnToSelection?: (value: string) => void build() { Row({ space: 10 }) { // 动态文本样式 Text(this.selectedValue) .fontColor(!this.ischoose ? '#dcdcdc' : Color.Black) // 动态切换箭头图标 if (this.ischoose) { Image(this.isMenuVisible ? $r(this.img0) : $r(this.img1)) .size({ width: '20vp', height: '20vp' }) .fillColor(Color.Black) // 已选择状态着色 } else { Image(this.isMenuVisible ? $r(this.img0) : $r(this.img1)) .size({ width: '20vp', height: '20vp' }) } } // 菜单绑定与事件处理 .bindMenu(this.MenuBuilder(this.menuItermList), { onAppear: () => this.isMenuVisible = true, onDisappear: () => this.isMenuVisible = false }) .onClick(() => this.isMenuVisible = !this.isMenuVisible) } // 菜单构建器 @Builder MenuBuilder(itemList: string[]) { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center }) { ForEach(itemList, (item: string, index) => { Row() { Text(item) .layoutConfig({ width: '100%', height: 32 }) .textStyle({ weight: 400, size: 14, color: Color.Black, align: TextAlign.Center }) } // 选中项高亮 .backgroundColor(this.selectedID == index ? '#f1f4f9' : Color.White) .borderRadius(10) .onClick(() => { this.selectedID = index this.ischoose = true this.selectedValue = item this.returnToSelection?.(item) // 执行回调 }) // 添加分隔线 if (index != itemList.length - 1) { Divider().height(10).width('80%').color('#ccc') } }) } .width(100) // 菜单宽度控制 } } 四大核心功能动态图标系统通过img0/img1属性注入自定义图标资源根据isMenuVisible状态自动切换图标示例代码:Image(this.isMenuVisible ? $r(this.img0) : $r(this.img1)) 智能状态管理ischoose标记选择状态selectedID记录当前选中项索引isMenuVisible控制菜单显隐视觉反馈优化未选择时文本置灰 (#dcdcdc)选中项背景高亮 (#f1f4f9)图标点击后黑色填充 (fillColor)数据驱动架构通过menuItermList传入选项数组使用ForEach动态生成菜单项使用教程步骤1:导入组件import { MenuBuilde } from './MenuBuilde' 步骤2:配置参数@Entry @Component struct Example { @State currentVal: string = "苹果" private options: string[] = ["苹果", "香蕉", "橙子"] build() { Column() { MenuBuilde({ img0: "app.media.arrow_up", // 自定义向上箭头 img1: "app.media.arrow_down",// 自定义向下箭头 menuItermList: this.options, selectedValue: this.currentVal }) .onSelectionChange((val) => this.currentVal = val) // 回调绑定 } } } 参数说明表参数名类型必填说明img0string是默认状态图标路径img1string是激活状态图标路径menuItermListstring[]是选项文本数组selectedValuestring否初始选中项(默认"请选择")扩展建议增加图标动画在onClick中添加旋转动画:.onClick(() => { animateTo({ duration: 200 }, () => { this.rotateAngle = this.isMenuVisible ? 180 : 0 }) }) 支持图标尺寸参数化新增@Prop iconSize: number = 20属性替换写死的20vp尺寸值多语言适配将selectedValue绑定资源文件:@Prop selectedValue: Resource = $r('app.string.please_select') 效果对比特性原生Select自定义MenuBuilde图标自定义❌✔️文本样式控制❌✔️选中态反馈基础实现高亮动画回调灵活性有限完全可控源码获取:gitee实际项目中打开即可使用
  • [问题求助] 华为云哪个大模型可以API调用
    华为云中部署模型服务哪个大模型可以使用API成功调用,求教程
  • [知识分享] 不卡顿、不掉线!稳定可靠的体育赛事直播系统源码解析
    在体育和电竞行业,实时直播系统已经成为平台的标配。无论是 OTT、比分直播网站,还是综合类体育社区,用户对直播体验的要求越来越高:不卡顿、不掉线、实时性强。那么,从技术角度出发,一个稳定可靠的 体育赛事直播系统源码,需要注意哪些关键点?一、核心挑战体育赛事直播和普通视频点播(VOD)不同,技术难点主要在于 实时性与并发量:低延迟:用户希望尽可能接近现场,延迟过高(>10s)会导致体验下降。高并发:热门赛事高峰期,可能瞬间涌入百万级用户。稳定性:掉线、卡顿、推流失败,都会直接影响口碑和留存。跨端适配:PC、H5、小程序、App 都要支持。 二、技术架构要点1. 传输协议选择目前主流的直播传输协议有: RTMP:推流常用,兼容性好,但延迟在 3~6s。HLS:基于 HTTP,适合 CDN 分发,但延迟较高(10~30s)。WebRTC:超低延迟(亚秒级),但对带宽和浏览器兼容要求高。SRT:稳定性好,适合跨国传输和弱网环境。👉 实际业务中,常见做法是 推流用 RTMP,播放端用 HLS 或 WebRTC,兼顾兼容性和延迟。2. 架构设计一个典型的直播系统,可以分为三层:采集与推流层采集视频(摄像机 / 采集卡 / OBS)推流到服务器(RTMP/SRT)分发与转码层Nginx-RTMP / SRS(开源流媒体服务器)转码成多码率流,适配不同终端带宽接入 CDN,保证全国/全球覆盖播放与业务层H5 播放器(Video.js、hls.js)App 播放器(ExoPlayer、ijkPlayer)业务逻辑:聊天室、弹幕、比分数据联动3. 数据同步与互动体育直播不仅是“看视频”,还需要与 比分、统计数据 同步。常用方式:WebSocket 实时推送:比分、事件(进球、罚球、击杀)。动画直播(数据信令驱动):节省带宽,延迟低。边看边聊:弹幕 / 聊天室,依赖稳定的 IM 服务。三、源码选型与二次开发独立部署:源码可控,支持私有化部署。可扩展:后期能接入更多功能(比分 API)。二开支持:源码要有清晰的架构和文档,方便二次开发。常见技术栈:后端:Go(SRS)、Node.js、Java前端:Vue/React + H5 播放器数据库:MySQL + Redis消息队列:Kafka / RabbitMQ(处理弹幕、事件推送)四、稳定性优化的几个关键点CDN 边缘节点预热:避免赛事开始瞬间流量洪峰。多路备份推流:主流 + 备用流,推流端断开可秒级切换。断线重连机制:播放器自动重试,保证用户无感知。限流与熔断:防止恶意请求拖垮系统。监控告警:QPS、延迟、卡顿率,实时监控并自动报警。五、总结一个稳定的体育赛事直播系统,远不止“会播视频”这么简单。它是 视频流媒体技术 + 实时数据同步 + 高并发架构 的综合体。对于开发者来说:技术选型时要根据业务需求决定协议和架构。源码选择要看是否能支持二次开发和私有化部署。稳定性优化是上线后的关键,特别是面对大规模用户并发。未来,体育直播系统也会和 AI 分析、实时数据 API、互动玩法 深度结合,成为一个完整的生态。