好家伙,
来看看报错
报错如下:
请求发送部分,代码如下:
uni.request({
url: self.serverUrl + "/getRealName",
method: 'GET',
data: {
"code": self.info.code,
},
header: {
"Authorization": uni.getStorageSync('tokenHead') + ' ' + uni.getStorageSync('token')
}
}).then(res => {
console.log("缓存中没有realName-----------", res)
在小程序开发者中接口返回报文正常,
在真机测试和线上版本测试中报错
小程序开发者中:
真机测试:
其中不检验合法域名已开:
使用apifox测试接口
嗯???
正常
05.17
后面排查问题发现,是SSL证书过期了
http://blog.csdn.net/angeljy02323480/article/details/115961277
后面联系后端将SSL证书重新配置一下就可以了
--来自http://blog.csdn.net/angeljy02323480/article/details/115961277
从零开始手写Tomcat的教程8节----加载器Java的类加载器解答一:servlet只能访问指定目录下的类,类加载器如何实现这种隔离访问机制的呢?解决二:类加载器如何实现在项目不重启的情况下,对某个发生变化的类进行热更新呢?Loader接口WebAppLoader类创建类加载器设置仓库设置类路径设置访问权限开启新线程执行类的重新载入WebappClassLoader类类缓存载入类应用程序总结Java的类加载器对classpath不了解的可以看一下这篇文章----Java中令人困惑的classpath和jar到底是什么鬼? 看到这里,提问:为什么要执行这样一个循环呢? 当然,不是直接委托给父类加载器,而是先判断该类型是否已经被当前类加载器所加载,如果没有再委托给父类加载器,即一个类只能被同一个类加载器加载一次,但是可以被多个不同的类加载器加载多次,这也引出一个没说的知识点:类加载器+class对象才能唯一确定一个类这里类加载器指的是两种情况:两个类加载器本身class类型都不同;同一个类加载器的两个实例对象加载出来的类,也被视为不同的类解答一:servlet只能访问指定目录下的类,类
[Docker]是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。如果您计划使用(学习)Docker,但目前还没有安装,且无从下手,小九为您准备了可视化Docker快速安装教程~图文详解,步骤清楚,一起看看吧!初始化安装常规的安装,需要经过前期下载等复杂的步骤。这里我们介绍的是镜像一键部署的安装方法。这个方法比较简单,不容易出现错误影响后续的安装和使用,因此,门槛较低,对小白也更友好。在云服务器上部署docker预装包之后,可以直接参考下面的步骤~检查:在云控制台获取您的服务器公网IP地址如果使用Portainer,请在云控制台安全组中,检查Inbound(入)规则下的TCP:9000端口是否开启Docker初始化向导检测Docker安装使用SSH连接服务器,运行下面的命令,查看Docker的安装信息和运行状态 sudodockerinfosudosy
背景兜兜转转以为做测试不用接触这么多编程,结果不仅要接触py,还要接触java,还有elixir,更有Lua,啊我绝望了太久没玩Java,连导入项目都不会了...特此记录一下侮辱性的时刻问题导入项目之后,只显示项目文件,不显示项目结构解决流程点击file->projectstructure..点击Modules,然后点击右上角+加号-》importModules然后选择你的项目后跟着下图选择,finish页面选择importmodulesfromexternalmodel选择maven,然后一直点击下一步next最后点击完成finished点击OK,主界面正常显示项目结构导入之后如下,如果没有显示项目,加入点击AddContentRoot加入项目路径成功显示项目结构
一年一度的TechoPark开发者大会,来了! TechoPark开发者大会是由腾讯发起的面向全球开发者和技术爱好者的年度盛会,作为一个专注于前沿技术研讨的非商业大会,大会致力于开发者的能力成长和实践创新,逐步通过汇聚全球顶尖行业专家和技术爱好者,建造一个开放,中立,活跃的技术交流平台。为包括行业开发者,ISV,科研机构,高校师生,创业公司和开源社区工程师等在内的所有技术人带来一场前所未有的技术盛宴。本次Techo大会将在12月19日~20日,在北京751D·PARK北京时尚设计广场79罐举办,共打造30+技术论坛,邀请了包括腾讯高级执行副总裁、腾讯云与智慧产业事业群总裁汤道生、腾讯云副总裁王慧星、Linux基金会执行董事JimZemlin、AWSLambda创始人&前总经理TimWagner等行业专家学者在内的200+海内外专家带来精彩的专题演讲。本次大会的主题将围绕当下热点的技术话题展开,包括数据库、5G、人工智能、大数据、虚拟化、计算、存储、网络、Serverless、容器、微服务、DevOps、5G边缘计算、软硬一体化、区块链、物联网等,让各位开发者与时俱进,看到不一样
前言人生没有回溯!我多想回溯啊。(祝你生日快乐)回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。回溯问题胃酸法1:递归解决问题voidfindSolutions(n,otherparams): if(foundasolution)#当找到一个解 solutionsFound=solutionsFound+1#解更新 displaySolution()#显示解 if(solutionsFound>=solutionTarget):#解不满足调节 return for(val=firsttolast):#枚举各种状态 if(isValid(val,n)):#该状态是否合法 applyValue(val,n)#使用该状态 fin
1.健康检查健康检查(HealthCheck)是让系统知道您的应用实例是否正常工作的简单方法。如果您的应用实例不再工作,则其他服务不应访问该应用或向其发送请求。相反,应该将请求发送到已准备好的应用程序实例,或稍后重试。系统还应该能够使您的应用程序恢复健康状态。强大的自愈能力是Kubernetes这类容器编排引擎的一个重要特性。自愈的默认实现方式是自动重启发生故障的容器。除此之外,用户还可以利用Liveness 和 Readiness 探测机制设置更精细的健康检查,进而实现如下需求:零停机部署。避免部署无效的镜像。更加安全的滚动升级。2.探针类型Liveness存活性探针Liveness探针让Kubernetes知道你的应用程序是活着还是死了。如果你的应用程序还活着,那么Kubernetes就不管它了。如果你的应用程序已经死了,Kubernetes将删除Pod并启动一个新的替换它。Readiness就绪性探针Readiness探针旨在让Kubernetes知道您的应用何时准备好其流量服务。Kubernetes确保Readiness探针检测通过,然后允许服务将流量发送到Pod。如果Read
前言距离上一篇文章发布又过去了两周,这次先填掉上一篇秒杀系统文章结尾处开的坑,介绍一下数据库中间件Canal的使用。Canal用途很广,并且上手非常简单,小伙伴们在平时完成公司的需求时,很有可能会用到。举个例子:公司目前有多个开发人员正在开发一套服务,为了缩短调用延时,对部分接口数据加入了缓存。一旦这些数据在数据库中进行了更新操作,缓存就成了旧数据,必须及时删除。删除缓存的代码理所当然可以写在更新数据的业务代码里,但有时候者写操作是在别的项目代码里,你可能无权修改,亦或者别人不愿你在他代码里写这种业务之外的代码。(毕竟多人协作中间会产生各种配合问题)。又或者就是单纯的删除缓存的操作失败了,缓存依然是旧数据。正如上篇文章缓存与数据库双写一致性实战里面所说,我们可以将缓存更新操作完全独立出来,形成一套单独的系统。Canal正是这么一个很好的帮手。能帮我们实现像下图这样的系统:本篇文章的要点如下:Canal是什么Canal工作原理数据库的读写分离数据库主从同步数据库主从同步一致性问题异步复制全同步复制半同步复制Canal实战开启MySQLBinlog配置Canal服务运行Canal服务Jav
本讲会对种子搜索网站的部署过程进行详细的讲解。网站演示:https://bt.mypython.me源码地址:https://github.com/geeeeeeeek/bt项目部署过程系统要求:ubuntu16.04(或以上)环境搭建和配置,必须严格按照以下步骤来安装部署!如有问题可以咨询(微信:java2048)安装部分安装nginxsudoaptinstallnginx复制安装python3和pip3sudoaptinstallpython3 sudoaptinstallpython3-pip复制安装依赖pip3installuwsgi pip3installdjango pip3installpymysql pip3installdjango-ratelimit复制安装mysqlsudoaptinstallmysql-server复制配置部分配置mysql(/etc/mysql/my.cnf)[client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysql] default-charact
饱暖思淫欲,当我们完成基本的业务需求之后,我们就需要去思考一下如何是我们的业务更加的流畅、代码更健壮等等,以下是我在项目中做的一些基本的项目优化工作,小小记录一下一、高频操作的防抖和截流日常页面开发中经常会有一些操作频率较高的js操作,比如touchmove、scroll中的事件处理、click事件的频繁发生等等。这个时候如果每次操作都去处理的话,性能上的开销就会比较大。此时就需要对事件的处理频率做个限制,也就是防抖和截流。比如,watch:{ barNum(to,from){ //一个变动很频繁的变量 this.setDebounce() this.back(this.barNum) } }, methods:{ setDebounce:debounce( function(){ //一个更新视图的操作 this.setDistance() }, 400 ) }复制大家对这两个应该也都比较熟,不了解的同学可以看下《性能提速:debounce(防抖)、throttle(节流/限频)》这个。 具体的实现推荐使用lodash组件库,其中有封装好的Debounce和Throttle组件可以调
在工作中难免遇到自定义View的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累。自定义View实战.前言这个版本主要的任务就是完成环信客服系统的集成,上一篇文章仿IOS下载View也是这个版本开发需求中的一小部分,那今天介绍一下另一个小需求客服好评。客服好评的功能在于用户对客服服务态度和质量的评价,也是作为考核客服服务的标准。相关代码已上传EvaluationCardView看一下预览效果: 整体预览 需求简要说明 默认状态为0星,不可提交星星数量小于等于3,展示差评理由差评理由云控,数量可变差评理由可不选,可多选我将分为3部分进行介绍。 介绍 评级的RatingBar差评理由TagView整体评价的CardViewEvaluationRatingBar介绍Android原生就有这个空间RatingBar,定制型不是很高,所以需要通过自定义来满足特定的产品需求。其实RatingBar的主要用处就在于评级,基本就是对服务进行等级评价,来决定服务的质量如何。需求分析有需求才会有对应的实现,那么有哪些需要控制的属性呢。属性名称属性介绍mStarTotal评级的总数mSe
Header终于到了最后的关头,AndroidArchitectureComponent系列的最后一节内容。今天给大家带来的就是Lifecycle的解析。至于Lifecycle的作用就不过多介绍,简单的来说就是让你自己定义的东西可以感知生命周期。比如你想设计了一个GPS位置监听器,打算在Activity可交互状态下发送地址位置,那么就可以利用Lifecycle来做这件事,这样和Activity的耦合性就减少了很多。废话不多说了,就来看看Lifecycle内部的实现原理吧。LifecyclePart1LifecycleOwner先来看LifecycleOwner接口,这个接口定义就说明了某样东西是具有生命周期的。getLifecycle()方法返回生命周期。publicinterfaceLifecycleOwner{ /** *ReturnstheLifecycleoftheprovider. * *@returnThelifecycleoftheprovider. */ @NonNull LifecyclegetLifecycle(); }复制官方建议除了Activity和Fragme
我们管理CVM服务器的时候经常需要远程登录服务器。直接Telnet已经比较少人用了,大家比较广泛的使用ssh,再配合上证书或者高强度的密码登录,这样虽然安全了很多,但是把ssh端口暴露在外网仍然会召来黑客的探测和攻击,但是不开放接口的话自己都上不去了?很多年前看一部流行的网络小说《我是一个黑客》,里面作者介绍了一个黑客们的小技巧:但是要和其他系统通讯,端口肯定是必须要的。这个有经验的人用端口扫描一扫,一般也能看出多了一个端口。或者系统本来没有开的服务怎么开了等?对付这种技术,曾经废了我很一段脑筋。但是最后我还是想出一个办法。成功的解决了这个问题。其实端口扫描就是和对方建立一个连接,如果连接成功,说明端口开发,否则就是没有开发的。由于普通的网络程序,采用的都是tcp/ip的标准,所以当然你开了端口,程序都能连接。但是我的后门,我拦截了连接函数。并且拦截了数据包。如果数据包不是我特殊的数据。我就知道是普通的扫描软件。我就不响应。于是对方就认为没有开发这个端口。如果是我的程序的话,我是有特殊数据标识的。我的程序就会响应。类似这样的手段其实在10多年前就已经不只是黑客手段,而成为了一种很好的安
技术背景 在git操作中,有时候为了保障线上分支的简洁性,会在.gitignore文件中屏蔽一些关键词,比如可以加一个*.txt来屏蔽掉项目中所有带txt后缀的文件,还可以加上*test*来屏蔽所有的本地测试文件或者目录(当然,这个操作需要谨慎,有时候线上版本也需要同步测试案例)。那么如果想在被屏蔽的文件中找几个特殊案例,传到线上版本去,要如何操作呢? 操作流程 在.gitignore文件中添加屏蔽关键词,比如我们添加一个pdb后缀的屏蔽关键词:*.pdb。 首先我们进入一个空的目录,并创建一个pdb后缀的文件: $ll total8 drwxr-xr-x2dechindechin4096Jun1609:25./ drwxr-xr-x7dechindechin4096Jun1609:25../ $gitstatus Onbranchconstraint Yourbranchisuptodatewith'origin/constraint'. nothingtocommit,workingtreeclean $touchtest.pdb $ll total8 drwxr-xr-x2
射频卡简单来讲就是卡的一种工作方式,通过感应的方式来工作,也能够把全部的感应卡都统称为射频卡。 IC卡的范围比較广。芯片外露的接触式IC卡、芯片内置的感应式IC卡和双界面IC卡都可统称为IC卡。IC卡芯片有分为可加密的逻辑加密卡及仅仅具有存储空间的存储卡。 ID卡全称为身份识别卡,是一种不可写入的感应卡,ID卡出厂的时候芯片内码号就已经固话不可更改,每次使用不过读取ID卡的卡号和相关信息进行关联。ID卡与磁卡一样,都只使用了“卡的号码”而已。卡内除了卡号外,无不论什么保密功能,其“卡号”是公开、裸露的。所以说ID卡就是“感应式磁卡”。 非接触IC卡。又叫 射频卡。感应卡。感应式IC卡。 当中。我们把仅仅读卡(仅仅能通过读卡器读出卡号(ID号),并且卡号是固化的(不能改动),不能往卡的分区再写数据。这样的非接触卡,我们简称ID卡。EM(芯片厂家)的ID卡拥有ID卡绝对的占有率,性价比最好,所以又叫EM卡,或者EM ID卡。 可读写的非接触IC卡。市面上绝大部分产品选用的是&nb
什么是单片机小系统? 单片机小系统,或者称为小应用系统,是指用少的元件组成的单片机可以工作的系统。 单片机小系统的组成 对51系列单片机来说,小系统一般应该包括:单片机、电源、晶振电路、复位电路。 51单片机小系统原理图 51单片机小系统原理图 说明: 复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍. 晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机 特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从
申请流程:官网注册用户(企业/个人)-->软件登记填写资料-->下载登记表-->准备提交材料-->送到版权登记中心--> 登记机构受理申请-->审查-->取得登记证书 一、首先要在中国版权保护中心官网注册账号。 1、可以在进入中国版权保护中心后,点击用户指南-->登记指南-->R11计算机软件著作权登记指南。查看帮助文档,了解办理流程。 2、在线申请登记步骤如下: a.选择办理身份,依据自身情况选 b.软件申请信息,填写软件名称版本等信息 需要注意的是程序、文档的鉴别材料的交存方式:一般交存、例外交存。这里我们只说一般交存的方式: •一般交存需提交:源程序和文档应提交前、后各连续30页,不足60页的,应当全部提交; △△△注意△△△如果你在源程序和提交的软件说明文档上的页眉标注了所申请软件的名称即版本号,切记要和申请表中填写的软件名称和版本号一致。 右上角应标注页码,源程序每页不少于50行,最后一页应是程序的结束页,文档每页不少于30行,有图除外。
一. ⼩程序事件的绑定 ⼩程序中绑定事件,通过bind关键字来实现。如bindtap,bindinput,bindchange等 不同的组件⽀持不同的事件,具体看组件的说明即可。 1.wxml <inputbindinput="handleInput"/> 复制 2.page Page({ //绑定的事件 handleInput:function(e){ console.log(e); console.log("值被改变了"); } }) 复制 3.特别注意 a.绑定事件时不能带参数不能带括号 b. 事件传值通过标签⾃定义属性的⽅式和value <inputbindinput="handleInput"data-item="100"/> 复制 c.事件触发时获取数据 handleInput:function(e){ //{item:100} consol
这是自己用stl实现的一些字符串处理函数和常用的字符串处理技巧,经验正基本无误,可直接使用,若有问题,可相应列出 包括:split stringtoint inttostring join #include<string.h> #include<vector> #include<string> //字符串分割函数,类似python的split vector<string>split(chars[],constchar*delim) { char*token=strtok(s,delim); vector<string>vstr; while(token!=NULL){ stringstmp=token; vstr.push_back(stmp); token=strtok(NULL,delim); } returnvstr; } //若用string调用如下 strings="192.168",sm="."; vector<string>ss=split(const_cast<char*>(s.c
先说一下数据类型。。。数据类型可以分为两大类:基本数据类型和引用类型。 基本数据类型按功能又分为“值类型”,“布尔型”,“字符型”。 引用类型分为“字符串”,“时间日期”。 没图没真相↓面放图。 橙色圈起来的是常用的类型 字符串类型 string 可以定义任意数据,几乎没有长度限制。赋值使必须带引号 stringa=“”;stringaa=null;只有字符串类型可以定义空值。 整形类型 int 只可以定义整数或者负整数。长度为10位数(包含空格)。赋值使不用带引号 长整形 long 与int相同,但是长度几乎没有限制。赋值不用带引号。 小整形byte与中整形short 要记住,看见要认识。 浮点型(小数点型) 常用的是Double(默认) Decimal 赋值时注意 floata=10