js统一公共请求处理与常用工具封装

         一个完整的前端项目往往会进行一些必要的抽取公用代码进行封装,这里记录js常用工具及统一的公共请求的封装。

一  2017年 第一版web管理后台在用

   web后台管理页面用

/*** Created by hua on 2017/8/24.*/
var requestResult={success :0,failure:1,failureMsg:2
}jx={reqAjax:function (isSync,url,fnSuccess,fnFailure) {$.ajax({type: "post",dataType:"json",async: isSync||true,url: url,success: function (data) {console.log(data);if (data.code ==requestResult.success ){if ( jQuery.isFunction( fnSuccess ) ) {fnSuccess.call();}else{alert("操作成功。");}}else{if (data.code ==requestResult.failure){alert("操作失败!");}if (data.code ==requestResult.failureMsg){if (data.errMsg!=''){alert(data.errMsg);}else{alert("操作失败,返回信息异常!")}}if ( jQuery.isFunction( fnFailure ) ) {fnFailure.call();}}},error:function(err){alert("系统请求错误,请联系管理员!");}});},req:function (url,fnSuccess) {jx.reqAjax(false,url, fnSuccess,null);},createNativeRequest: function createRequest(){var xmlHttp;try{// Firefox, Opera 8.0+, SafarixmlHttp=new XMLHttpRequest();}catch (e){// Internet Explorertry{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){alert("您的浏览器不支持登陆!");return false;}}}return xmlHttp;},nativeReq:function (async,url,param,fuSccess,fuFail) {console.log('using native ajax.');var xmlhttp= jx.createNativeRequest();console.log('create native xmlhttp');console.log(xmlhttp);xmlhttp.open("POST",url,async||false);// 为空时同步xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");if (!async){xmlhttp.send(param);var result= xmlhttp.responseText;console.log(result);return result;}else{xmlhttp.onreadystatechange=function state_Change() {if (xmlhttp.readyState==4){// 4 = "loaded"if (xmlhttp.status==200) {if (fuSccess && typeof(fuSccess) == "function") {fuSccess();}}else{if (fuFail && typeof(fuFail) == "function") {fuFail();}}}};xmlhttp.send(param);}}};jxCookie={setCookie:function (name,value){   var Days = 7;var exp = new Date();exp.setTime(exp.getTime() + Days*24*60*60*1000);document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();},getCookie:function (name){var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]);elsereturn null;},delCookie:function (name){var exp = new Date();exp.setTime(exp.getTime() - 1);var cval=getCookie(name);if(cval!=null)document.cookie= name + "="+cval+";expires="+exp.toGMTString();}
}/**按钮等待进度   使用方法: jxProcess.run(butid, txtid, 1,30,'已发送成功(_sec_)')    说明:butid 和 txtid 为Input元素对象ID,1 代表每隔几秒刷新次数, 30代表等待30秒,最后的参数为等时间显示到按钮的字体动态显示参数 _sec_      **/
var jxProcess={cur:60,jqElemBut:undefined,jqElemTxt:undefined,normalButLabel:undefined,dyTimeLabel:undefined,t:undefined,startWait:function () {if (jxProcess.cur > 0){var label= jxProcess.dyTimeLabel.replace("_sec_",jxProcess.cur);jxProcess.cur--;jxProcess.jqElemBut.html(label);}else{jxProcess.runStop();}},getJqueryObjById:function(id){var _id="#"+id;return $(_id);},run:function (butId,txtId,timeSec,sumSec,dyTimeLabel) {var  $elemBut= jxProcess.getJqueryObjById(butId);var  $elemTxt=jxProcess.getJqueryObjById(txtId);$elemBut.attr("disabled",true);$elemTxt.attr("readonly",true);jxProcess.cur = sumSec||60;jxProcess.jqElemBut=$elemBut;jxProcess.jqElemTxt=$elemTxt;jxProcess.normalButLabel=$elemBut.html();jxProcess.dyTimeLabel=dyTimeLabel||'请耐心等待_sec_秒.'jxProcess.t  = window.setInterval('jxProcess.startWait()',timeSec*1000||1000);},runStop:function () {if (jxProcess.t!=undefined){jxProcess.jqElemBut.attr("disabled",false);if (jxProcess.jqElemTxt){jxProcess.jqElemTxt.attr("readonly",false);}jxProcess.jqElemBut.html(jxProcess.normalButLabel);window.clearInterval(jxProcess.t);console.log("clearInterval");jxProcess.t=undefined;}}}

二  2018年,在微信小程序在使用,项目要求加密请求要用rc4算法加密。


//引用配置文件
const cfg = require('../config.js');//打印调试信息
function tag(obj,msg) {console.log(new Date());console.log("==========begin("+msg+")===========")try {console.log(obj);} catch (e) {console.log('print err !!!');}console.log("==========end("+msg+")===========")
}//封包
function getPackage(data){var data_str='';if(data){data_str=JSON.stringify(data);}var pack={appKey:'123456',version:'1.0.0',isEncrypt:'N',data:data_str}return pack;
}//取得用户openid
function getOpenid(){var openid = getCache("openid");if (openid) {return openid;}wx.login({//获取codesuccess: function (res) {var code = res.code //返回codevar url = cfg.config.getOpenIdUrl+'&js_code=' + code + '&grant_type=authorization_code';tag(url,"get openid url");wx.request({url: url,data: {},header: {'content-type': 'application/json'},success: function (res) {if (res.data.openid){setCache("openid", res.data.openid);}}})}});return openid;}function setCache(key, value) {if (key != null && value != null) {try {wx.setStorageSync(key, value);tag(value, "保存缓存成功 key=" + key);return true;} catch (e) {tag(e, "保存到缓存失败 key=" + key + " value=" + value);}}return false;
}function getCache(key) {var obj = null;if (key) {try {obj = wx.getStorageSync(key);tag(obj, "从缓存取 key=" + key);} catch (e) {tag(e, "从缓存取数据失败 key=" + key);}}return obj;
}function isMobile(mobile) {var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;return myreg.test(mobile);}//显示成功信息
function show(title,icon){wx.showToast({title: title||'JX信息提示',icon:icon||'success',duration: 1500});
}//显示错误信息
function showErr(title){show(title,'loading');
}function getLoginToken(){return getCache('loginToken');
}function setLoginToken(loginToken) {return setCache('loginToken', loginToken);
}//原始处理,不对外开发
function reqPackOrg(reqUrl, pack, fnSuccess, fnFail) {wx.request({method: 'POST',url: reqUrl,data: pack,header: {'content-type': 'application/x-www-form-urlencoded','Cookie': 'loginToken='+getLoginToken()},success: function (result) {tag(result, "结果处理");if (fnSuccess) {fnSuccess.call(result);} else {show("操作成功");}},fail: function (result) {tag(res, "调用API submit fail");if (fnFail) {fnFail.call(result);} else {showErr("操作失败!");}},complete: function (result) {tag(result, "调用API结果submit complete");}});}//结合后台业务处理,统一调用
function reqPack(reqUrl, pack, fnSuccess, fnFail, fnComplete){wx.request({method: 'POST',url: reqUrl,data: pack,header: {'content-type': 'application/x-www-form-urlencoded'},success: function (result) {var pack= result.data;tag(pack, "结果处理");if (pack.resultCode==200){var busData = pack.data;if (typeof busData== 'string') {busData = busData.replace(/\ufeff/g, "");//重点var jsonObj = JSON.parse(busData);pack.data = jsonObj;}if (fnSuccess) {if (fnSuccess.length == 1){fnSuccess.call(this, pack);}else{fnSuccess.call();}} else {show("操作成功");}}else{if (fnFail) {fnFail.call(result);}else{if (pack.resultCode && pack.resultMsg) {showErr( pack.resultMsg + "[" + pack.resultCode + "]");} else {showErr("处理错误!");}}} },fail: function (result) {tag(res, "调用API submit fail");if (fnFail) {fnFail.call(result);}else{showErr("操作失败!");}},complete: function (result) {tag(result, "调用API结果submit complete");if (fnComplete){fnComplete.call();}}});}function reqData(api, jsonData, fnSuccess, fnFail,fnComplete) {var reqUrl=cfg.config.jx_url+api;var pack = getPackage(jsonData);reqPack(reqUrl, pack, fnSuccess, fnFail, fnComplete);}function req(api, fnSuccess, fnFail) {var reqUrl = cfg.config.jx_url + api;var pack = getPackage(null);reqPack(reqUrl, pack, fnSuccess, fnFail,null)}let curUserInfo = 'curUserInfo';function setUserInfoCache(userInfo) {var memberInfo = {nickName: userInfo.nickName,org: userInfo};setCache(curUserInfo, memberInfo)}function getUserInfo(){return getCache(curUserInfo);}//每个业务页面初始化处理function init(){var token=getLoginToken();tag(token,"检测在线标识状态");if(!token){wx.redirectTo({url: cfg.config.loginUrl});}}module.exports = {getPackage: getPackage,tag: tag,getOpenid: getOpenid, isMobile: isMobile,reqData: reqData,req:req, setUserInfoCache: setUserInfoCache,show: show, showErr: showErr,getLoginToken: getLoginToken,setLoginToken: setLoginToken,getUserInfo: getUserInfo,init: init}

三  2019年后,公司开始接很多的项目,小程序项目基本都用uni-app框架开发,再优化一点,根据使用情况对function request(method, reqUrl, pack, fnSuccess)去掉了失败函数传参。

"use strict";
//TestServer
//var baseUrl = 'http://192.168.22.193:8092'//外网地址
var baseUrl = 'http://47.xx.xx.57:8063'//线上
// var baseUrl = 'https://xcx.xxx.xxx'//封包
function getPackage(data) {let data_str = '';if (data) {data_str = JSON.stringify(data);}let pack = {language:1,isEncrypt: 'N',data: data_str}return pack;
}function request(method, reqUrl, pack, fnSuccess) {pack = getPackage(pack);uni.request({method: method || 'POST',url: baseUrl + reqUrl,data: pack,header: {'Content-Type': 'application/x-www-form-urlencoded','Authorization': getCache("token")? getCache("token") : ""},success: function(result) {let pack = result;if (fnSuccess) {if (fnSuccess.length == 1) {fnSuccess.call(this, pack);} else if (fnSuccess.length == 2) {fnSuccess.call(this, pack, pack.data.data);} else {fnSuccess.call();}} else {showToast("操作成功");}},fail: function(result) {try {if (result.errMsg.indexOf('request:fail') != -1) {alert("似乎已断开与互联网的连接");} else {alert("操作失败!");}} catch (e) {alert("操作失败!");}}})
}function navigateTo(url) {uni.navigateTo({url: url});
}function switchTab(url) {uni.switchTab({url: url});
}function redirectTo(url) {uni.redirectTo({url: url});
}function showToast(title, icon) {uni.showToast({title: title || '出错了',icon: icon || 'success',duration: 2000});
}
// alert
function alert(msg, title, success) {uni.showModal({title: '温馨提示' || title,content: msg,showCancel: false,confirmColor: "#000",success: success || {}})
}
//设置缓存
function setCache(key, value) {if (key != null && value != null) {try {uni.setStorageSync(key, value);// console.log('设置缓存' + key + '=' + value);} catch (e) {console.log(e, "保存缓存失败")}}
}
//取出缓存
function getCache(key) {var obj = null;if (key) {try {obj = uni.getStorageSync(key);// console.log("取出缓存", obj)} catch (e) {console.log(e, "取出缓存失败")}}return obj;
}
//分享页面
function onShareAppMessage(title,url) {return {title: title || '',path: 'pages/home/home'||url}
}
// 手机验证
function isMobile(mobile) {// 最新正则var myreg = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;return myreg.test(mobile);
}
// 身份证验证
function isId(isId) {var myreg = /\d{17}[\d|x]|\d{15}/;return myreg.test(isId);
}
// 邮箱验证
function iseMail(iseMail) {var myreg = /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/;return myreg.test(iseMail);
}
// QQ验证
function isQQ(isQQ) {var myreg = /^[1-9]\d{4,9}$/;return myreg.test(isQQ);
}//补全时间两位数
function prefixZero(n, m) {var _a = (Array(m).join(0) + n).slice(-m)return _a}
module.exports = {request: request,navigateTo: navigateTo,switchTab: switchTab,redirectTo:redirectTo,showToast: showToast,alert:	alert,setCache: setCache,getCache: getCache,onShareAppMessage:onShareAppMessage,baseUrl:baseUrl,isMobile:isMobile,isId:isId,iseMail:iseMail,isQQ:isQQ,prefixZero:prefixZero
}

这几年间公司加入专开发小程序的同事,这里太忙了我也没有时间怎么去关注了,后面发现他们具然所有的小程序项目都在用,而且连引用的文件名都没有改,如图:

四  2023年后小程序项目基本开始外包,查看了被外包修改后的代码,发现还是变化不大。

"use strict";//TestServer
//var baseUrl = 'http://192.168.22.193:8888'
//外网地址
var baseUrl = 'https://xx.xx.xx.xx'//线上// var baseUrl = 'https://xx.xx.xx'
//封包
function getPackage(data) {let data_str = '';if (data) {data_str = JSON.stringify(data);}let pack = {language:1,isEncrypt: 'N',data: data_str}return pack;
}
//8d2df462-b665-4441-8ed5-f216c8babf53
function addImgFun(tempFilePaths,fun){for(var i=0;i<tempFilePaths.length;i++){uni.uploadFile({url:baseUrl+'/api/v1/file/uploadImgs', //仅为示例,非真实的接口地址filePath: tempFilePaths[i],header:{'Authorization': getCache("token")? getCache("token") : ""},name: 'files',success: (uploadFileRes) => {console.log(JSON.parse(uploadFileRes.data).data[0]);fun(JSON.parse(uploadFileRes.data).data[0])}});}
}//xx测试账号
setCache("token",'9d307453-f0b1-4f7f-9a8c-41c1f803de73');// setCache("token",'cccf7a52-855b-42d8-b5cf-d48eb7f678c2');
// setCache("token",'74bc8184-ac49-424f-9029-273cfcbfdd62');// setCache("token",'fdd31cad-e9ce-4ad0-afc8-8c3ad42e0dc9');
function request(method, reqUrl, pack, fnSuccess,err) {// setCache("token",'8d2df462-b665-4441-8ed5-f216c8babf53');// console.log(baseUrl + reqUrl)if(!pack.noShowLoading){uni.showLoading({title: '加载中'});delete pack.noShowLoading;}pack = getPackage(pack);uni.request({method: method || 'POST',url: baseUrl + reqUrl,data: pack,header: {'Content-Type': 'application/x-www-form-urlencoded','Authorization': getCache("token")? getCache("token") : ""},success: function(result) {uni.hideLoading();let pack = result;console.log("pack+++++++++",JSON.stringify(pack))if(pack.data.code==400){showToast(pack.data.msg);if(pack.data.failReason==1||pack.data.failReason==2||pack.data.failReason==3){setCache("token","");setTimeout(function(){uni.navigateTo({url:"/pages/home/home"})},2000)}else if(pack.data.failReason==26){setTimeout(function(){uni.reLaunch({url:"../charge/charge"})},2000)}else if(pack.data.failReason==12){setTimeout(function(){uni.navigateTo({url:"../order/order"})},2000)}else if(pack.data.failReason==13){setTimeout(function(){uni.navigateBack({delta:1})},2000)}if(err){err(pack);}return false;}else if (pack.data.code&&pack.data.code==200&&fnSuccess) {if (fnSuccess.length == 1) {fnSuccess.call(this, pack);} else if (fnSuccess.length == 2) {fnSuccess.call(this, pack, pack.data.data);} else {fnSuccess.call();}}else{showToast(pack.data.msg);} // else {// 	showToast("操作成功");// }},fail: function(result) {uni.hideLoading();try {if (result.errMsg.indexOf('request:fail') != -1) {// alert("似乎已断开与互联网的连接");} else {// alert("操作失败!");}} catch (e) {// alert("操作失败!");}}})
}function navigateTo(url) {uni.navigateTo({url: url});
}function switchTab(url) {uni.switchTab({url: url});
}function redirectTo(url) {uni.redirectTo({url: url});
}function showToast(title, icon) {uni.showToast({title: title || '出错了',icon: icon || 'none',mask:true,duration: 2000});
}
// alert
function alert(msg, title, success) {uni.showModal({title: '温馨提示' || title,content: msg,showCancel: false,confirmColor: "#000",success: success || {}})
}
//设置缓存
function setCache(key, value) {if (key != null && value != null) {try {uni.setStorageSync(key, value);// console.log('设置缓存' + key + '=' + value);} catch (e) {console.log(e, "保存缓存失败")}}
}
//取出缓存
function getCache(key) {var obj = null;if (key) {try {obj = uni.getStorageSync(key);// console.log("取出缓存", obj)} catch (e) {console.log(e, "取出缓存失败")}}return obj;
}
//分享页面
function onShareAppMessage(title,url) {return {title: title || '',path: 'pages/home/home'||url}
}
// 手机验证
function isMobile(mobile) {// 最新正则var myreg = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/;return myreg.test(mobile);
}
// 身份证验证
function isId(isId) {var myreg = /\d{17}[\d|x]|\d{15}/;return myreg.test(isId);
}
// 邮箱验证
function iseMail(iseMail) {var myreg = /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/;return myreg.test(iseMail);
}
// QQ验证
function isQQ(isQQ) {var myreg = /^[1-9]\d{4,9}$/;return myreg.test(isQQ);
}//补全时间两位数
function prefixZero(n, m) {var _a = (Array(m).join(0) + n).slice(-m)return _a}//补全时间两位数
function login(fun) {if(getCache("token")){if(fun){fun();}}else{setCache("token",'')uni.login({provider: 'weixin',success: function(loginRes) {var data = {code: loginRes.code}request("POST", "/api/v1/common/wxLogin", data, (res) => {// if (res.data.ret_code == 200) {setCache("token", res.data.data.token)setCache("memberId",res.data.data.user.id)if(res.data.data.user.plateNo){setCache("memberPlateNo",res.data.data.user.plateNo);}if(fun){fun();}// } else {// 	comm.showToast(res.data.ret_msg, "none")// }})}})}
}
module.exports = {request: request,navigateTo: navigateTo,switchTab: switchTab,redirectTo:redirectTo,showToast: showToast,alert:	alert,setCache: setCache,getCache: getCache,onShareAppMessage:onShareAppMessage,baseUrl:baseUrl,isMobile:isMobile,isId:isId,iseMail:iseMail,isQQ:isQQ,prefixZero:prefixZero,addImgFun:addImgFun,login:login,
}

小程序引入调用部分

	import comm from '../../static/data/commFunc.js'//方法区let that = thisuni.showLoading({title:"加载中"})//参数var data = {current: that.current}//调用comm.request("POST","/app/v200801/member/order/list",data,(res) => {console.log("res",res)that.data = res.data.data.recordsthat.list = that.list.concat(res.data.data.records)that.total = res.data.data.totaluni.hideLoading()})

 

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

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

相关文章

Ubuntu上使用node搭建本地静态http服务器

1.搭建步骤 1.安装Node.js。首先确保你的Ubuntu系统已经安装了Node.js。如果没有安装&#xff0c;可以通过以下命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nodejs #安装nodejs 2.安装npm。npm是Node.js的包管理器&#xff0c;一般会随着Node.js一…

Minio部署在服务器上,分享图片等文件提示,签名不对

问题描述: 上传没问题 下载没问题 就是分享有问题,签名有问题 找了很多解释,什么nginx代理问题啊,什么端口问题啊 什么防火墙问题啊 都是扯淡,一点用没有 最后发现,我的分享链接是127.0.0.1的地址,并不是我的服务器本机的地址 我访问图片都是要把ip改了再去访问,但是一开始并没…

HttpSession的使用

1 HttpSession 概述 在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内&#xff0c;单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中&#xff0c;客户可能会多次请求访问同一个网页&#xff0c;也有可能请求访问各种不同…

【JavaSE】P1~P32 进制,字节,Java代码规范,常量,变量,运算符

目录 IDEA常用快键键和快捷用法一、需要复习的重难点概念1 进制、字节、DOS操作命令语句进制及转化字节DOS系统命令提示符 2 Java 常用代码规范3 常量及常量的打印4 变量数据类型及取值范围变量的概念和使用数据类型转换ASCII码表&#xff08;128种&#xff09;基本数据类型极其…

显示所有中国城市需要多少个汉字?

显示所有中国城市需要多少个汉字呢&#xff1f; 需要3678个汉字&#xff0c;看看我怎么知道的。 第一步&#xff1a;先找到中国的所有城市的名称 去哪里找到中国的所有城市的名称呢&#xff1f; 进入中国天气网&#xff1a;http://www.weather.com.cn/ 使用 F12 打开浏览器的调…

Excelize 入选“2023开源创新榜”优秀开源项目

近日&#xff0c;由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办&#xff0c;CSDN 承办的 2023 开源创新榜专家评审会在国家科技传播中心成功举办。Excelize 电子表格文档开源基础库入选“2023开源创新榜”优秀开源项目。 评审委员…

SwiftUI 打造一款可收缩的 HStack(二):对齐+ZStack

概览 在上篇 SwiftUI 打造一款可收缩的 HStack(一):“原汤化原食” 博文里,我们讨论了如何用 HStack 自身来实现可收缩的“HStack”。 而在本篇中,我们将尝试利用 SwiftUI 对齐 + ZStack 的方式完成相同的功能。 在本篇博文中,您将学到以下内容: 概览1. SwiftUI 中的对…

商业综合体能源管理系统功能有哪些?能够为企业带来哪些价值?

随着IT行业的迅猛发展&#xff0c;仅仅实现智能控制已无法满足当前绿色低碳发展的要求&#xff0c;随着智能设备的增多&#xff0c;同时也产生了越来越多的信息孤岛。通过信息技术构建能源管理系统&#xff0c;可以实现先进、智能、经济、可行的商业综合体能源管理解决方案。 …

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 使用技术&#xff1a;HTMLCSSJS 主要内容&#xff1a;对学校官网的结构进行模仿&#xff0c;对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

解析为什么Go语言要使用[]rune而不是string来表示中文字符

众所周知&#xff0c;Go语言中有以下这些数据类型。但rune32这个go语言特有的数据类型&#xff0c;比较有意思却经常遭到忽视。所以今天探索学习一下这个数据类型的功能、用法。 Go基本数据类型 布尔&#xff1a;bool 字符串&#xff1a;string 整数&#xff1a; int int8 …

GitHub项目推荐:IDE-3D

项目地址 GitHub - MrTornado24/IDE-3D: [SIGGRAPH Asia 2022] IDE-3D: Interactive Disentangled Editing For High-Resolution 3D-aware Portrait Synthesisx 项目简述 这是一个交互式的3D画图工具。无论是改图还是成图&#xff0c;都能使用。是一个很有意思的项目。 项目…

安卓和Android是两种不同的操作系统?

实际上&#xff0c;安卓和Android并不是同一种操作系统&#xff01; Android是由Google开发并维护更新的一款操作系统&#xff0c;目前仅能运行在Pixel手机上。 Google Pixel 与 iPhone手机&#xff1a;哪个更好&#xff1f;Google Pixel 与 Apple iPhone哪个手机才是性价比最…

(1)(1.13) SiK无线电高级配置(一)

文章目录 前言 1 监控链接质量 2 诊断范围问题 3 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 &#xff01;Tip 大多数用户只需要 SiK Radio v2 中提供的基本…

74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…

三段式电流保护与自动重合闸MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 前加速、后加速的区别&#xff1a; 前加速是保护装置不判别是永久性故障还是瞬时故障&#xff0c;直接跳闸&#xff0c;然后经重合闸装置来纠正&#xff1b;后加速是保护装置是先判别故障类型有选择性跳闸 …

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品&#xff5c;极新&#xff06;北京电子商务协会 直播电商在经过爆发式增长后&#xff0c;从业者不断涌入&#xff0c;竞争日趋激烈&#xff0c;行业发展必然将会进入到一个缓慢增长阶段。直播…

MySQL自定义时间间隔抽稀

MySQL自定义时间间隔抽稀 表设计数据如下按分钟抽稀按小时抽稀按天抽稀 表设计 create table monitor (tid varchar(255) not null,save_date datetime not null,tlevel decimal(10, 2) null,primary key (tid, save_date) );数据如下 按分钟抽稀 SELECT t2…

D50|单调栈

739.每日温度 初始思路&#xff1a; 暴力解法但是会超时。 class Solution {public int[] dailyTemperatures(int[] temperatures) {int[] answer new int[temperatures.length];for(int i 0;i<temperatures.length;i){for(int j i;j<temperatures.length;j){if(te…

FS4412系统移植及开发板启动过程

FS4412是基于samsung的arm Cortex-A9的Exynos4412的板子&#xff0c;Exynos4412采用了32nm HKMG工艺&#xff0c;是samsung的第一款四核芯片。 Windows装机过程&#xff1a; 1、准备Windows系统镜像、U盘启动盘 2、进入BIOS选择启动方式&#xff08;U盘启动&#xff09; 3、…

使用valgrind 分析缓存命中

使用valgrind 分析缓存命中 char transpose_submit_desc[] "Transpose submission"; void transpose_submit(int M, int N, int A[N][M], int B[M][N]) { int i,j,tmp;int bsize 8;unsigned long long addrA;unsigned long long addrB;unsigned long long setin…