下向,)在登录如何保证和也能同时登录
第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
第二步:拼接API密钥:
微信支付API接口协议中包含字段nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。
(1)获取API证书(什么是api证书?如何升级?)
微信支付接口中,涉及资金回滚的接口会使用到API证书,包括退款、撤销接口。商家在申请微信支付成功后,收到的相应邮件后,可以按照指引下载API证书,也可以按照以下路径下载:微信商户平台()-->账户中心-->账户设置-->API安全 。证书文件说明如下:
1.证书文件不能放在web服务器虚拟目录,应放在有访问权限控制的目录中,防止被他人下载;
2.建议将证书文件名改为复杂且不容易猜测的文件名;
3.商户服务器要做好病毒和木马防护工作,不被非法侵入者窃取证书文件。
4、商户回调API安全
在普通的网络环境下,HTTP请求存在DNS劫持、运营商插入广告、数据被窃取,正常数据被修改等安全风险。商户回调接口使用HTTPS协议可以保证数据传输的安全性。所以微信支付建议商户提供给微信支付的各种回调采用HTTPS协议。
Facades(一种设计模式,通常翻译为外观模式)提供了一个”static”(静态)接口去访问注册到 IoC 容器中的类。提供了简单、易记的语法,而无需记住必须手动注入或配置的长长的类名。此外,由于对 PHP 动态方法的独特用法,也使测试起来非常容易。
Contract(契约)是 laravel 定义框架提供的核心服务的接口。Contract 和 Facades 并没有本质意义上的区别,其作用就是使接口低耦合、更简单。
思路: 1.(质数筛选定理)n不能够被不大于根号n的任何质数整除,则n是一个质数
2.除了2的偶数都不是质数
推荐篇文章,讲awk实际使用的
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
本函数在安全模式下被禁用。 |
本函数在安全模式下被禁用。 |
(在功能上和 backticks 函数相同) 本函数在安全模式下被禁用。 |
只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。 |
只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。 |
只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。 |
只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。 |
检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (on source and target ) |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target) |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target) |
在安全模式下,以“authorization”(区分大小写)开头的标头将不会被返回。 |
在安全模式下,如果设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该标头的 realm 部分。 |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效) |
检查被操作的文件或目录是否与正在执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与正在执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效) |
在安全模式下不起作用。 |
在安全模式下不起作用。 |
在安全模式下,第五个参数被屏蔽。 |
第一种方案:被动过期+cron,就是用户查看的时候去数据库查有没有支付+定时清理。 第二种方案:延迟性任务,到时间检查订单是否支付成功,如果没有支付则取消订单
//ip2long,把所有城市的最小和最大Ip录进去
283.网页/应用访问慢突然变慢,如何定位问题
内核、程序参数设置不合理 查看有没有报内核错误,连接数用户打开文件数这些有没有达到上限等等
链路本身慢 是否跨运营商、用户上下行带宽不够、dns解析慢、服务器内网广播风暴什么的
程序设计不合理 是否程序本身算法设计太差,数据库语句太过复杂或者刚上线了什么功能引起的
其它关联的程序引起的 如果要访问数据库,检查一下是否数据库访问慢
是否被攻击了 查看服务器是否被DDos了等等
284.如何设计/优化一个访问量比较大的博客/论坛
减少http请求(比如使用雪碧图)
优化数据库(范式、SQL语句、索引、配置、读写分离)
动态内容静态化+CDN
禁止外部盗链(refer、图片添加水印)
使用搭建
相关文章介绍:
为避免错误,理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case
相同点:
XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。
不同点:
XSS是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的 脚本语句被执行。
CSRF是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以 利用用户的Cookie信息伪造用户请求发送至服务器。
SSRF是服务器对 用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
mysql_real_escape_string需要预先连接数据库,并可在第二个参数传入数据库连接(不填则使用上一个连接)
两者都是对数据库插入数据进行转义,但是mysql_real_escape_string转义时,会考虑数据库连接的字符集。
它们的用处都是用来能让数据正常插入到数据库中,并防止sql注入,但是并不能做到100%防止sql注入。
再问:为什么不能100%防止?
答;因为客户端编码以及服务器端编码不同,可能产生注入问题,但是其实这种场景不多见。
继续答:被弃用的原因是官方不再建议使用mysql_xx的数据库操作方式,建议使用pdo和mysqli,因为不管从性能跟安全来看,mysqli都比mysql要好。
衍生出来的问题是mysqli的连接复用(持久化)问题
288.什么是内存泄漏,js内存泄漏是怎么产生的?
内存泄漏是因为一块被分配内存既不能被使用,也不能被回收,直到浏览器进程结束。
产生泄漏的原因是闭包维持函数内局部变量,不能被释放,尤其是使用闭包并存在外部引用还setInterval的时候危害很大。
产生泄漏的原因有好几种:
(1) 页面元素被删除,但是绑定在该元素上的事件未被删除;
(2) 闭包维持函数内局部变量(外部不可控),使其得不到释放;
(3) 意外的全局变量;
(4) 引用被删除,但是引用内的引用,还存在内存中。
从上述原因上看,内存泄漏产生的根本原因是引用无法正确回收,值类型并不能引发内存泄漏。
对于每个引用,都有自己的引用计数,当引用计数归零或被标记清除时,js垃圾回收器会认为该引用可以回收了。
289.什么是原型、原型链、作用域、作用域链、闭包
原型:相当于一个模具,用来生产实例对象。
原型链:原型对象有个指针指向构造函数,实例对象又有一个指针指向原型对象,就形成了一条原型链,最终指向null。
作用域,就是变量或者是函数能作用的范围。
作用率链变量随着作用长辈函数一级一级往上搜索,直到找到为止,找不到就报错,这个过程就是作用域链起的作用。
290.一台电脑配置无限好,可以同时打开多少个网页
291.数据链路层的数据是怎么校验的,有哪些校验方式
常用的几种数据校验方式有奇偶校验、CRC校验、LRC校验、格雷码校验、和校验、异或校验等。
根据被传输的一组二进制代码中“1”的个数是奇数或偶数来进行校验。
使用:通常专门设置一个奇偶校验位,存放代码中“1”的个数为奇数还是偶数。若用奇校验,则奇偶校验位为奇数,表示数据正确。若用偶校验,则奇偶校验位为偶数,表示数据正确。
此时若约定好为奇校验,那么数据表示为正确的,若为偶校验,那么数据传输出错了。
二、CRC校验(循环冗余校验码)
CRC校验是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
e> 重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。
f> 重复第2至第5步直到所有数据全部处理完成。
3. 应用:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。
1. 定义:LRC校验用于ModBus协定的ASCII模式,这各校验比较简单,通讯速率较慢,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据字节迭加后取反加1即可。
格雷码是一种无权码,也是一种循环码。是指任意两组相邻的代码之间只有一位不同,其余为都相同。
校验一组数据项的和是否正确。通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255。
eg. 数据的校验和为a。
BCC校验其实是奇偶校验的一种,但也是经常使用并且效率较高的一种。所谓BCC校验法,就是在发送前和发送后分别把BCC以前包括ETX字符的所有字符按位异或后,按要求变换(增加或去除一个固定的值)后所得到的字符进行比较。相等即认为通信无错误,不相等则认为通信出错。
292.b+树的查询时间复杂度是多少,哈希表是多少,为什么数据库索引用b+树存储,而不是哈希表,数据库索引存储还有其他数据结构吗?
因为哈希表是散列的,在遇到`key`>'12'这种查找条件时,不起作用,并且空间复杂度较高。
备注:b+数根据层数决定时间复杂度,数据量多的情况下一般4-5层,然后用二分法查找页中的数据,时间复杂度远小于log(n)。
一,sizzle的基本原理
sizzle是jquery选择器引擎模块的名称,早在1.3版本就独立出来,并且被许多其他的js库当做默认的选择器引擎。
首先,sizzle最大的特点就是快。那么为什么sizzle当时其他引擎都快了,因为当时其他的引擎都是按照从左到右逐个匹配的方式来进行查找的,而sizzle刚好相反是从右到左找的。
举个简单的例子 “.a .b .c”来说明为什么sizzle比较快。这个例子如果按照从左到右的顺序查找,很明显需要三次遍历过程才能结束,即先在document中查找.a,然后再结果中查找.b,再在.b的结果中查找.c。
采用这种方式,其时间复杂度是 a*b*c,其实也就是时间复杂度 O(n3)。注意这里的O(n3)只算对dom的遍历查找,因为现对于对PO的操作这个是特别耗时。
下面再看看sizzle是怎么做的,sizzle是从右到左查找,也就是直接在页面中查找.c,这时会得到一个候选结果集seed,然后对seed的每一个结果把parents不符合.a .b的结果剔除掉,就是最终结果。这个过程实际上只对dom进行了一次遍历查找,剩下的过滤操作是沿着parent指针直接查找非常快速。可以认为这是一个时间复杂度O(n)的算法。
所以,可以看出只需要遍历查找一次dom的sizzle在理论上是有明显的速度优势的,当然实践检验也证明了这点。
先用字典查找,再尝试暴力破解。使用TB级的海量特征库用数据库存起来,然再分片查找。
会发生fatal错误,因为继承的方法或属性只能维持或放大权限,不能缩小,比如protected重载为public是可行的。
长连接机制,表示keep-alive-timeout时间内,如果连接没有closed,再次传输数据不再需要三次握手了。
298.mysql线上数据库的大表新增字段如何解决
HyperLogLog 主要的应用场景就是进行基数统计。这个问题的应用场景其实是十分广泛的。例如:对于 Google 主页面而言,同一个账户可能会访问 Google 主页面多次。于是,在诸多的访问流水中,如何计算出 Google 主页面每天被多少个不同的账户访问过就是一个重要的问题。那么对于 Google 这种访问量巨大的网页而言,其实统计出有十亿 的访问量或者十亿零十万的访问量其实是没有太多的区别的,因此,在这种业务场景下,为了节省成本,其实可以只计算出一个大概的值,而没有必要计算出精准的值。
HashMap
:算法简单,统计精度高,对于少量数据建议使用,但是对于大量的数据会占用很大内存空间;
BitMap
:位图算法,具体内容可以参考我的这篇文章,统计精度高,虽然内存占用要比 HashMap
少,但是对于大量数据还是会占用较大内存;
HyperLogLog
:存在一定误差,占用内存少,稳定占用 12k 左右内存,可以统计 2^64 个元素,对于上面举例的应用场景,建议使用。
将整个大厦的层数分成x段,在这x段中查找那个临界段,然后在临界段中再一层一层地找临界层。比如可以将大楼分成4段,我们分别在25层、50层、75层投掷棋子,以确定临界段;如果临界段在25层到50层,我们再从26层开始一层一层查找临界层。确定分段数x使棋子投掷的次数最少
由于csdn篇幅不能过长后续文章看
优库云是一个致力于分享学习干货、实用工具、优秀博客、面试宝典、互联网资讯技术、新闻观察、热点资讯、京东淘宝好物、优惠活动的平台。不定时推送,关注置顶公众号不错过任何福利!点击加入组织
python 的语法逻辑完全靠缩进,建议缩进4个空格
如果是顶级代码,必须顶格书写,哪怕只有一个空格也会语法错误
下面实例中,满足if条件要输出两行内容,这两行内容必须都缩进,而且具有相同的缩进级别。
运算符可以分为:算术运算符、比较运算符和逻辑运算符。优先级是:算术运算符>比较运算符>逻辑运算符。不过呢,没记住优先级,最好使用括号,这样不用背,也增加了代码的可读性。
True和False是关键字,区分大小写
python中,单双引号在字符串中使用,没有区别
列表也是序列对象,但它是容器类型,列表中可以包含各种数据,列表可变
元组与列表基本上是一致的,只是元组不可变,列表可变
如果两个类有很多相同之处,使用继承更为合理。
新玩具熊增加了一个跑的行为,其他与原来玩具熊一致。
再考虑以下代码,运行结束后的结果是什么?
比较容易记忆的是用内置的 set:
如果想要保持他们原来的排序:
按执行效率从高到低排列:f2、f1 和 f3。要证明这个答案是正确的,你应该知道如何分析自己代码的性能。Python
中有一个很好的程序分析包,可以满足这个需求。
JavaScript中的typeof其实非常复杂,它可以用来做很多事情,但同时也有很多怪异的表现.本文列举出了它的多个用法,而且还指出了存在的问题以及解决办法.
1.检查一个变量是否存在,是否有值.typeof在两种情况下会返回"undefined":一个变量没有被声明的时候,和一个变量的值是undefined的时候.例如:
还有其他办法检测某个值是否是undefined:
但这种方法如果使用在一个未声明的变量上的时候,就会抛出异常,因为只有typeof才可以正常检测未声明的变量的同时还不报错:
注意:未初始化的变量,没有被传入参数的形参,不存在的属性,都不会出现上面的问题,因为它们总是可访问的,值总是undefined:
问题: typeof在完成这样的任务时显得很繁杂.
解决办法: 这样的操作不是很常见,所以有人觉的没必要再找更好的解决办法了.不过也许有人会提出一个专门的操作符:
或者,也许有人还需要一个检测变量是否被声明的操作符:
解决办法: 不要使用typeof来做这项任务,用下面这样的函数来代替:
另一个可能性是引入一个“默认值运算符”,在myValue未定义的情况下,下面的表达式会返回defaultValue:
其实是下面这条语句的简化:
当你访问一个嵌套的属性时,比如bar,你或许会需要这个运算符的帮助:
如果obj或者obj.foo是未定义的,上面的表达式会抛出异常.一个运算符.??可以让上面的表达式在遍历一层一层的属性时,返回第一个遇到的值为undefined或null的属性:
3.区分对象值和原始值下面的函数用来检测x是否是一个对象值:
问题: 上面的检测比较复杂,是因为typeof把函数和对象看成是不同的类型,而且typeof null返回"object".
解决办法: 下面的方法也经常用于检测对象值:
警告:你也许认为这里可以使用instanceof Object来检测,但是instanceof是通过使用使用一个对象的原型来判断实例关系的,那么没有原型的对象怎么办呢:
obj确实是一个对象,但它不是任何值的实例:
在实际中,你可能很少遇到这样的对象,但它的确存在,而且有它的用途.
译者注:Object.prototype就是一个默认存在的,没有原型的对象
4.原始值的类型是什么?typeof是最好的用来查看某个原始值的类型的方式.
解决办法: 下面的函数可以修复这个问题(只针对这个用例).
更好的解决办法: 实现一个函数getTypeName(),除了可以返回原始值的的类型,还可以返回对象值的内部[[Class]]属性.这里讲了如何实现这个函数(译者注:jQuery中的$.type就是这样的实现)
Function也可以进行这种需求的检测.乍一看,貌似写法还更加优雅.但是,浏览器有一个怪癖:每一个框架和窗口都有它自己的全局变量.因此,如果你将某个框架中的对象传到另一个框架中,instanceof就不能正常工作了,因为这两个框架有着不同的构造函数.这就是为什么ECMAScript5中会有Array.isArray()方法的原因.如果有一个能够跨框架的,用于检查一个对象是否是给定的构造函数的实例的方法的话,那会很好.上述的getTypeName()是一个可用的变通方法,但也许还有一个更根本的解决方案.
6.综述下面提到的,应该是目前JavaScript中最迫切需要的,可以代替一些typeof目前职责的功能特性:
能够跨框架的,检测一个对象是否是指定的构造函数的实例的机制
检查某个变量是否已经被声明这样的需求,可能没那么必要有自己的运算符.
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。