Year: 2018

  • 锡林郭勒盟大中专毕业学生查询档案方法

    锡林郭勒盟大中专毕业学生查询档案方法

    登陆http://www.xmpta.com.cn/ 找到档案查询的地址: http://61.134.97.222/xbdpq/cx/login.asp 输入姓名和身份证号即可。

  • ibm thinkpad 联想lenovo笔记本电脑如何关闭触摸板

    ibm thinkpad 联想lenovo笔记本电脑如何关闭触摸板

    如题,联想的笔记本关闭不了触摸板,给输入带来干扰,太烦人了。研究了一下原因,原来是没有安装相应驱动导致,过程记录下来,希望对大家有帮助。 第一步:到官网找驱动: 第二步:输入主机编号,或者点击下面的更多,找到你的型号: 第三步:选择操作系统版本和type前4位(在你的电脑背面找) 第四步:找到鼠标那一栏的驱动,一个是驱动程序,一个是辅助程序,也不知道是哪个,把两个都下载安装。安装过程忽略。。。 第五步:上一步安装完成后最好重启一下电脑,然后进入控制面板,找到鼠标,点开弹出属性窗口,你会发现多出了一个“UltraNav”标签,把“启用TouchPad” 勾掉就ok了。

  • ubuntu 内核升级到Linux 4.4.0-121-generic x86_64 后安装docker到18.03.0-ce

    ubuntu 内核升级到Linux 4.4.0-121-generic x86_64 后安装docker到18.03.0-ce

    安装基本按照官方文档: https://docs.docker.com/install/linux/docker-ce/ubuntu/ 但是如果有些问题不顺利可能会重装,删除旧的docker 要注意的地方: rm -rf /var/lib/docker/ 如果改过bridge的名字,注意这个地方/etc/docker/daemon.json: {   “bridge”: “docker0” } 如果docker 起不来,检查 /etc/systemd/system/docker.service.d 下的脚本,可以删除。 apt install docker-ce 的时候有可能会遇到 libseccomp2 版本的问题 下载要求的版本进行安装即可 dpkg -i libseccomp2_2.3.1-2.1ubuntu2_16.04.1_amd64.deb 最终实现: # uname -msr Linux 4.4.0-121-generic x86_64 # docker version Client:  Version:       18.03.0-ce  API version:   1.37  Go version:    go1.9.4  Git commit:    0520e24  Built: Wed…

  • ubuntu 内核升级与降级

    ubuntu 内核升级与降级

    升级linux内核,普遍使用系统提供的功能 sudo apt-get dist-upgrade 降级就比较麻烦了,需要我们自己手动安装。 下面老蔡以Ubuntu 14.04为例,从内核版本linux-headers-3.13.0-44降级到linux-headers-3.13.0-24为例,来演示下怎么降级linux内核。 sudo aptitude install -y linux-image-3.13.0-24-generic \ linux-headers-3.13.0-24 grep submenu /boot/grub/grub.cfg   看到父选项 Advanced options for Ubuntu grep menuentry /boot/grub/grub.cfg 看到子选项 Ubuntu, with Linux 3.13.0-24-generic 其他版本也可以从执行结果中选取相应的。 然后修改/etc/default/grub文件 sudo vim /etc/default/grub 将其中 GRUB_DEFAULT=0 改为 GRUB_DEFAULT=”Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-24-generic” #GRUB_DEFAULT=”Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-117-generic” #GRUB_DEFAULT=0 然后执行…

  • 蚂蚁金服开放平台企业支付宝SFTP服务调用方式升级提醒

    蚂蚁金服开放平台企业支付宝SFTP服务调用方式升级提醒

    近期,我们发现部分合作商户采用了“绑定IP”的方式来调用我方的sftp服务(规范的方式应该是通过域名 sftp.alipay.com来访问)。为确保相关商户的服务稳定性,请各商户内部自查,原110.75.149.86和  110.75.144.86将只提供服务至2018年1月31日,请将采用了“绑定IP”方式的商户优化为“捆绑域名”的方式。 “绑定IP”的定义及优化方案: 1、程序代码中直接写了IP,而非域名。 解决方法:程序代码中改成域名sftp.alipay.com(当然需要确保贵方网络环境内部能解析这个域名)。 2、系统hosts文件或网络环境中将域名sftp.alipay.com绑了IP。 解决方法:建议删除系统hosts文件或网络中的此配置。若合作方相关安全规则或者技术手段上只能如此,则请将 sftp.alipay.com域名绑成IP:45.113.40.175 和 110.75.228.31。 3、防火墙上仅开放了110.75.149.86或者110.75.144.86的白名单。 解决方法:建议不要做此白名单的限制。若合作方相关安全规则或者技术手段上只能如此,则请将白名单改成当前 sftp.alipay.com域名解析的IP,即:45.113.40.175 和 110.75.228.31。 蚂蚁金服开放平台 2018/01/26

  • dns常见解析类型

    dns常见解析类型

    A: 地址记录,将域名指向一个IPv4地址。(如:8.8.8.8) AW: 带权重的A记录,DNS云服务私有记录类型,当需要配置A记录的负载权重功能时,使用该类型记录。 AAAA: 地址记录,将域名指向一个IPv6地址。(如:2401:8d00:4::1) AAAAW: 带权重的AAAA记录,DNS云服务私有记录类型,当需要配置AAAA记录的负载权重功能时,使用该类型记录。 CNAME: 别名记录,将域名指向另外一个域名,再由另外一个域名解析到IP地址。 CNAMEW: 带权重的CNAME记录,DNS云服务私有记录类型,当需要配置CNAME记录的负载权重功能时,使用该类型记录。 XW: 带权重的A或CNAME记录,DNS云服务私有记录类型,当需要配置A和CNAME记录同时存在负载权重功能时,使用该类型记录。 LNAME: 和CNAMEW类似,为最低优先级别名记录 DNAME: 和CNAME类似,将域名指向另外一整个域,而不是一个域名。 CAA: 证书颁发机构授权记录,允许域名的所有者指定哪所证书颁发机构(CA)为其网站颁发证书 TXT/SPF: 纯文本格式的记录,可以填写任意字符,长度限制255字节。通常用做反垃圾邮件验证。 MX: 邮件交换记录,如果要配置本域名下的邮件服务,需要添加MX记录。 NS: 域名服务器记录,要把某个子域名授权给其他解析平台去解析,需要添加NS记录。 SRV: 服务记录,通常用于Microsoft的活动目录以及office 365等服务 TRANS: 带权重的IPv4(CNAME)/IPv6记录,云服务私有记录类型,可以按照查询源地址自适应地返回对应记录(IPv4地址查询返回IPv4/CNAME记录,IPv6地址查询返回IPv6记录)。

  • systemctl 命令详解

    systemctl 命令详解

    systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本。systemd 的特性有:支持并行化任务;同时采用 socket 式与 D-Bus 总线式激活服务;按需启动守护进程(daemon);利用 Linux 的 cgroups 监视进程;支持快照和系统恢复;维护挂载点和自动挂载点;各服务间基于依赖关系进行精密控制。 任务 旧指令 新指令 使某服务自动启动 chkconfig –level 3 httpd on systemctl enable httpd.service 使某服务不自动启动 chkconfig –level 3 httpd off systemctl disable httpd.service 检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-enabled httpd.service (仅显示是否 Active) 显示所有已启动的服务 chkconfig –list systemctl list…

  • docker proxy TLS handshake timeout.

    docker proxy TLS handshake timeout.

    docker 设置代理后下载镜像的时候会报错: TLS handshake timeout. 解决办法: /etc/systemd/system/docker.service.d# cat http-proxy.conf  [Service]  Environment=”HTTP_PROXY=http://192.168.50.165:6500/” “NO_PROXY=localhost,127.0.0.1,hostname” Environment=”HTTPS_PROXY=http://192.168.50.165:6500/” 注意加的 “NO_PROXY=localhost,127.0.0.1,hostname” 起作用。 重启system的服务: systemctl daemon-reload 验证下配置是否正常加载:systemctl show –property=Environment docker 重启docker:systemctl restart docker

  • 利用squidman在mac上搭建代理服务作为ubuntu的apt源

    利用squidman在mac上搭建代理服务作为ubuntu的apt源

    软件地址:http://squidman.net/squidman/ 打开后修改端口号,点击开始即可。 场景:如果有服务器不能上网的话,可以连过来,比如ubuntu 的apt 源。 新建文件: /etc/apt/apt.conf 内容: Acquire::http::Proxy “http://192.100.50.15:61500”;

  • 北京通管局网站备案规则

    北京通管局网站备案规则

    企业用户: 1. 企业须使用营业执照办理备案。 2. 负责人填写的手机号归属地应为北京地区。 仅接受常见的域名后缀备案,如.com/.net等;不能备案域名如:.hk/.tw/.aisa/.jp/.co/.io/.info/.xyz/.me/.win等和国别域名;境外域名注册商注册的域名必须转入到国内域名注册商后才可在北京申请备案。 4. 网站成功办理备案前不得开通访问。 5. 香港公民作为负责人办理备案必须使用护照作为个人身份证件,不得使用回乡证或香港居民身份证。 6. 域名持有者须与主办单位一致。 7. 企业要求上传最新营业执照副本彩色扫描件,以工商系统中查询到的最新证件为准。如果已更新为社会统一代码证件的均不接受原证件的申请。 8. 主办单位通信地址:请勿用符号表示。如1-2-3,请用文字叙述方式填写。如:1单元2层3号。 9. 备案的域名需实名认证且在有效期内。 10. 域名所有者与备案信息一致性规则:域名所有者认证信息要与备案单位或主体负责人信息一致。(对比信息:单位名称、证件类型、证件号码) 个人用户: 1. 负责人填写的手机号归属地应为北京地区。 2. 仅接受常见的域名后缀备案,如.com/.net等;不能备案域名如:hk/.tw/.aisa/.jp/.co/.io/.info/.xyz/.me/.win等和国别域名;境外域名注册商注册的域名必须转入到国内域名注册商后才可在北京申请备案。 3. 网站成功办理备案前不得开通访问。 4. 香港公民办理备案必须使用护照作为个人身份证件,不得使用回乡证或香港居民身份证。 5. 域名持有者须与主办人一致。 6. 主办单位通信地址:请勿用符号表示。如1-2-3,请用文字叙述方式填写。如:1单元2层3号。 7. 备案的域名需实名认证且在有效期内。 8. 域名所有者与备案信息一致性规则:域名所有者认证信息要与备案主办人信息一致。(对比信息:姓名、证件类型、证件号码)

  • 【高危漏洞预警】Ubuntu 16.04 内核本地提权漏洞

    【高危漏洞预警】Ubuntu 16.04 内核本地提权漏洞

    受影响范围: Ubuntu 16.04 4.14 – 4.4 系列内核 阿里云解决方案: 1.缓解止血方案: 建议用户在评估风险后,通过修改内核参数缓解漏洞影响。 运行命令:#echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled 完成缓解方案后,建议根据自身业务情况,再执行彻底解决方案。 2.彻底解决方案:   添加 xenial-proposed 源,可以按如下操作:             经典网络环境下添加源:                         # echo “deb http://mirrors.aliyuncs.com/ubuntu/ xenial-proposed main restricted universe multiverse” >> /etc/apt/sources.list             VPC网络环境下添加源:…

  • CentOS/RHEL 6/7 升级PHP版本 version 5.4 到 5.6

    CentOS/RHEL 6/7 升级PHP版本 version 5.4 到 5.6

    For CentOS/RHEL 7: # rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm For CentOS/RHEL 6: # rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm For CentOS/RHEL 5: # rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm After installing Webtatic yum repository, you have to remove the old version of php-common package. It will also delete it dependencies packages. # yum remove php-common yum install -y php56w…

  • 有用的firewall-cmd命令备忘

    有用的firewall-cmd命令备忘

    remove public zone service: firewall-cmd –zone=public –remove-service=ssh –permanent firewall-cmd –reload add ip range to trusted zone and add ssh service to trusted zone firewall-cmd –permanent –zone=”trusted” –add-source=”123.51.11.2/32″ firewall-cmd –permanent –zone=”trusted” –add-service=”ssh” firewall-cmd –zone=public –add-port=7788/tcp –permanent firewall-cmd –reload firewall-cmd –list-all-zones add anthor ip range to trusted zone firewall-cmd –permanent –zone=”trusted” –add-source=”172.30.30.0/24″ firewall-cmd –reload firewall-cmd –list-all-zones 一、centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld…

  • centos7下安装php的Imagick扩展

    centos7下安装php的Imagick扩展

    yum install php-pear php-devel yum install ImageMagick ImageMagick-devel yum install pcre-devel wget http://pecl.php.net/get/imagick-3.2.0RC1.tgz tar -xvf imagick-3.2.0RC1.tgz cd imagick-3.2.0RC1/ phpize ./configure make make test make install Remember to turn on the extension in the php configuration file. vim /etc/php.ini extension = imagick.so

  • 得到服务器出口ip的n个方法

    得到服务器出口ip的n个方法

    curl ifconfig.mecurl ip.bsd-unix.netcurl icanhazip.comcurl ipinfo.io/ipwget -qO- ipinfo.io/iplynx -source ipinfo.io/ipwget -O – -q icanhazip.comcurl -s http://whatismyip.akamai.com/curl -s https://4.ifcfg.me/nc 4.ifcfg.me 23 | grep IPv4 | cut -d’ ‘ -f4telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d’ ‘ -f4echo close | ftp 4.ifcfg.me | awk ‘{print $4; exit}’ 下面是个测试各种方法的速度脚本,最后有排名:wget https://moneyslow.com/bin/externalip-benchmarkchmod a+x externalip-benchmark./externalip-benchmark 测试结果: 其他文章: 1、Windows 浏览器常用方式访问  1、http://www.ip138.com/  2、http://tool.chinaz.com/  3、在百度搜索框内输入 ip…

  • centos7 开机自启动程序设置

    centos7 开机自启动程序设置

    修改开机脚本添加文件的权限  chmod +x /etc/rc.d/rc.local vi 这个rc.local 可以添加要开机自启动的脚本: systemctl start xxx.service 通过以上操作,就可以像CentOS6一样添加开机脚本了

  • 全站https技术要点及注意事项

    全站https技术要点及注意事项

    HSTS(HTTP Strict Transport Security) 通过Web服务器上的设置,在收到HTTP访问请求时,返回的header里带有Strict-Transport-Security字段,告知浏览器必须使用HTTPs进行访问。 但是,HSTS并不能避免首次跳转时遇到的劫持。要彻底解决这个问题,可以申请加入Preload List(预加载列表)。 Preload List是由Google Chrome维护的“HTTPs站点列表”,Chrome, Firefox, Safari, Edge, IE 11均在使用。一旦浏览器发现要访问的站点在Preload List上,默认就会发起HTTPs链接。这样,就避免了HSTS的首次跳转被劫持的隐患。 SSL卸载 采用F5来做负载均衡,F5应付单纯的L4和L7的流量是没有问题的,但进行SSL卸载时性能往往会急剧降低,F5可以提供专门的加速卡来解决这个问题,但价格不便宜。所以,还需要专门环节来进行SSL卸载,常见的Nginx和HAProxy都可以执行这个任务。 客户端证书 与浏览器不同的是,C#信任的根证书在localmachinestore或者currentuserstore中,Java信任的根证书在JDK安装目录下的cacerts目录中,iOS和Android的证书管理又有不同。 浏览器的证书在使用中又可以持续更新,用户往往感知不到,如果“想当然”认为浏览器验证通过就万事大吉,很可能会出问题。比如国内有不少网站使用WoSign签发的证书,但老版本的JDK并不信任WoSign的根证书,用浏览器浏览没问题的网站,程序就会报错,除非手动导入证书。Android的信任列表是随固件更新而更新的,4.2以后才内置WoSign的信任。因为WoSign行为不端,前几天Firefox, Chrome, Safari等主流浏览器又取消了对它的信任,也就意味着WoSign证书有安全风险,所以已经内置WoSign根证书的程序也应当做对应的设置。 服务器端证书 用浏览器验证没有问题的HTTPs站点,用程序访问就有问题。这是为什么? 在服务器上证书配置错误,只有最终证书,而缺少中级证书的情况。通常,最终证书里包含了中级证书相关的信息,所以如果缺少中级证书,浏览器为了建立证书链,会做一次耗时的操作来获取中级证书,而且这一切都发生在HTTPs连接真正建立之前。更糟糕的是,不少浏览器为了“表现更好”,会想办法绕过这个问题。所以缺少中级证书的情况一直存在,一直不会被发现,而程序调用的速度总是上不去,甚至有一定几率报错。 证书大小: 如果把证书链配置完全,还要注意证书链的大小。有一些网站的完整证书异乎寻常地大,达到若干kb甚至几十kb,也就是说,在建立连接之前,就必须先传输这么多的数据。如果做单纯的PC网页浏览,或许不会有问题。但对于移动端和程序调用来说,这就是一场灾难。最好的办法,是用OpenSSL配合WireShark之类的工具,自己动手来测试。如果你熟悉TCP相关的知识,往往可以得到更好的优化方案。 OCSP和CRL也不可忽略。这两项技术用来保证撤回证书(让证书失效)的有效性。如果你仔细观察,会发现证书里都指定了对应的OCSP或者CRL的URL,用来检查证书是否失效。按道理说,在每次建立HTTPs连接时,都应当进行OCSP或CRL检查。返回结果通常在1k左右,如果请求非常频繁,这个因素也应当考虑。 SNI 大家都熟悉“虚拟主机”的概念,它可以让多个域名对应到同一个IP,让同一台服务器服务多个站点。在HTTP时代,可以在header中通过host来指定需要访问的域名,一切看起来都那么完美。 但是在HTTPs时代,却没有这样的好事,传统的HTTPs服务很难让多个域名对应到同一个IP。在进行到HTTP通讯之前,必须先建立验证证书建立连接。如果一个IP上绑定了多个域名,这个阶段服务器根本没法知道请求对应的是哪个域名,无疑会造成极大的不便。 为了解决这种问题,SNI(Server Name Identification)应运而生了。这种技术说起来复杂,大家可以把它简单理解为“建立SSL/TLS通讯时的host header”,这样就解决了一个IP只能配单张证书的问题。 然而SNI的诞生历史并不长,许多客户端的支持都存在奇怪的问题。比如JDK7支持SNI,但是JDK8的支持又有bug。而且这种支持往往需要调用原生的API才可以实现,Resteasy之类的类库并不支持。如果对SNI的支持有问题,即便配置正确也可能无法建立连接,因为服务端并不能识别此请求需要的证书。 CDN CDN已经是业界流行的技术了,对稍微大一点的网站来说,没有CDN几乎是不可想象的。HTTP时代的CDN方案相当成熟,HTTPs的情况则不是如此。 要使用HTTPs的CDN服务,就要决定是否将证书交给CDN提供商。基于中国目前的商业信誉水平,把证书交给CDN提供商的风险不可不考虑。恶意揣测,别有用心的人一旦拿到证书,可以很方便地通过DNS劫持发起中间人攻击,而完全不被感知到。 另外,HTTP时代大家都喜欢将资源分散到多个不同的域名,因为建立连接的成本很低,而同一个域名的并发连接数有限。在HTTPs环境下,每次建立连接的成本高了很多,频繁下载和验证证书对移动设备和移动网络影响很大(尤其是证书很大的情况)。如果域名非常分散,影响就更加显著。所以在HTTPs时代,把域名收缩集中反而是更好的办法。 内容及其它 因为HTTPs的内容中无法引用HTTP的资源,所以应当保证网页中资源文件的链接都是HTTPs的。遗留的许多系统很可能并不注意这些事情,资源都采用绝对地址的形式,这样改起来工作量很大。如果要修改,最好一步到位,直接改成“协议相对URL”。 绝对地址URL:http://www.a.com/b.css 协议相对URL://www.a.com/b.css 这样浏览器就可以根据当前的协议,自动生成资源的绝对地址,无论是HTTP还是HTTPs,都可以自由切换。 如果资源都是自有的,切换HTTPs就相对容易。如果存在外部,尤其是UGC的资源,切换到HTTPs就很麻烦。如果是超链接,通常采用专门的跳转服务,也就是下面这样: https://link.my.com/target=www.you.com 如果是图片这类资源,可以设定专门的程序将其抓取过来存放在自己的服务器上,再将地址替换掉即可。但是,这样做很可能要自己承担流量压力,同时还要承担恶意程序攻击的风险。 如果是视频、游戏等富文本、交互复杂的资源,如果源站没有提供HTTPs的服务,多半只能忍痛割爱,放弃内嵌展现的形式了。

  • word里怎么在方框里打勾

    word里怎么在方框里打勾

    很简单,插入高级字符,选择wingdings 2 字体,找到那个字符即可。

  • openssl 证书查看

    openssl 证书查看

    生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输, # 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护 > openssl genrsa -des3 -out selfsign.key 4096 # 使用上面生成的key,生成一个certificate signing request (CSR) # 如果你的key有密码保护,openssl首先会询问你的密码,然后询问你一系列问题, # 其中Common Name(CN)是最重要的,它代表你的证书要代表的目标,如果你为网站申请的证书,就要添你的域名。 > openssl req -new -key selfsign.key -out selfsign.csr # 生成Self Signed证书 selfsign.crt就是我们生成的证书了 > openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt # 另外一个比较简单的方法就是用下面的命令,一次生成key和证书 > openssl req -x509 -nodes -days…

  • 网站为什么要备案?

    网站为什么要备案?

    根据工信部《互联网信息服务管理办法》(国务院 292 号令),网站在未完成备案之前,不能指向大陆境内服务器开通访问。如果您的网站托管在中国大陆节点服务器,或者开通 CDN 服务,就必须申请 ICP(互联网内容提供商)备案。若网站服务器为非中国大陆节点,则不用申请备案。 ICP 包含两种类型: ICP 备案: 对于单纯的资讯性并且不涉及直销的网站,需要申请 ICP 备案。ICP 备案可通过网站托管服务器提供商或网络空间服务商(如电信、移动、联通等)进行申请。 经营性 ICP 许可证: 对于商品或服务的在线平台或第三方卖方,需获得商用许可证。要申请经营性 ICP 许可证,您必须先有一个有效的 ICP 备案号。经营性备案需用户自己到当地管理局相关部门进行办理,服务商可协助提供资质以及接入协议。具体办理要求需您登录当地经营性备案网站进行查看。 注意:根据 2016 年最新要求,网站在工信部备案成功后,需在网站开通之日起 30 日内提交 公安备案申请。 您可以在服务器提供商的备案系统提交 ICP 备案申请。

  • mac下快速新建一个空的文本文件

    mac下快速新建一个空的文本文件

    1、实用工具中找到‘脚本编辑器’,输入: tell application “Finder” to make new file at (the target of the front window)as alias 2、随便命名如NewText,保存为app,放置在application文件夹中,拖入桌面dock 这样在打开一个文件夹后,点击桌面我们新建的图标就可以新建文档了。

  • 微信支付中意外情况发生的函数处理:幂等

    微信支付中意外情况发生的函数处理:幂等

    什么是幂等(Idempotency)?简单来说,一个操作如果具有任意多次执行所产生的影响均与一次执行的影响相同,我们就称之为幂等。 这样说来,似乎很容易理解。但要知道,这样的定义,其实是一个语义范畴对行为结果的定义。如何用语法和规则去确保行为能达到这个结果,往往需要很谨慎的设计和实现。实际系统中,幂等是一个极为重要的概念。无论是在大型互联网应用还是企业级架构中,我们都见到 REST API 被越来越多的采用。而正确实现幂等,往往是 API 中最难的技术点之一。 先说为什么重要。举一个简单易懂的例子。 比如你要处理一次电商网站收款或者付款的交易。当你给微信支付发送这个付款请求后,一个顺利的场景,是没有任何错误发生,微信支付收到你的付款请求,处理所有转账,然后返回一个 HTTP 200 消息表示交易完成。 那如果发出请求后,有个请求超时,你再也没有收到关于这个请求是成功还是失败的的回执,又该如何呢? 这里就有很多种可能情况: 这个请求在到达微信支付端前就已经发生超时,微信支付从来没有收到这样的请求。 这个请求到达微信支付端,但是支付交易失败,这时发生超时,微信支付收到这样的请求,但没有处理成功。 这个请求到达微信支付端,并且支付交易成功,这时发生超时,微信支付收到这样的请求,处理成功,但是没有回执。 这个请求到达微信支付端,并且支付交易成功,并且发回回执,然而因为网络原因回执丢失,客户端超时,微信支付收到这样的请求,处理成功,发出回执,但是客户没有收到。 很直观的一个想法,也是现实中用户最常见的做法,是重新提交一次支付请求。但是这样就有一个潜在的问题:请求超时是上面的哪一种情况?会不会引发多次支付的可能性? 这就涉及到系统中的幂等是如何实现的了。 那么幂等又该如何实现呢?“多次执行所产生的影响均与一次执行的影响相同”,简而言之,我们需要一个 Dedup(去重)的机制。这往往有很多不同的实现方法,但是有两个很关键的因素: 一是Idempotency Key(幂等令牌)。也就是客户端和服务器端通过什么来识别这实际上是同一个请求,或是同一个请求的多次 retry(尝试)。这往往需要双方又一个既定的协议。往往是类似账单号或者交易 token(令牌)这样一个可以唯一标识同一个请求意愿的元素。通常由客户端生成。 二是Uniqueness Guarantee(确保唯一性)。服务器端用什么机制去确保同一个请求一定不会被处理两次,也就是微信支付怎么确保同一笔交易不会因为客户端发送两次请求就被处理多次。最通常的做法是利用数据库。比如把幂等令牌所在的数据库表的 Column(列)作为 unique indexed。这样,当你试图存储两个含有同样令牌的请求时,必定有一个会报错。注意,简单的读检查并不一定行,因为读与读之间会有 Race Condition(竞争条件),因此还是有可能出错。 如果一个系统可以正确的处理和实现上面的两个要素,那么基本就能达到幂等的需求。那么现实系统中常见的问题都出在哪里呢? 一是幂等令牌什么时候产生,怎么产生?这一点很重要。拿上面的例子来说。就算微信支付可以保证每一个请求对应的支付交易一定只会被处理一次。但是这个请求的多次重复,一定要共有某一个微信可以识别的标识。假如客户端对同一笔交易的多次请求,产生的幂等令牌并不相同,那不论你别的地方多么完美,都没有可能保证 “一个操作如果具有任意多次执行所产生的影响均与一次执行的影响相同”。 二是有没有令牌被误删的可能。这是上面的问题的一个特殊情况。幂等令牌是由客户端生成的。那么如果生成的令牌在被使用后(一次微信支付请求中使用了),不小心因为 DB rollback 等原因被删除了。那么客户端就不知道自己其实已经发过一次请求。就有可能生成一个新的账单,并产生全新的令牌,而服务端将对此一无所知。 三是各种竞争条件。上面说的用 DB 读来确保唯一性经常因为竞争而不工作。其实一个需要幂等的系统中,保证唯一性的各个环节和实现,都要考虑 Race Condition。 四是对请求 Retry 的处理。这大部分是服务器端要做的。一个常见的方法是区分正在处理的请求、和处理成功、处理失败的请求。这样当客户端重试的时候,根据情况或者直接返回,或者再次处理。就好像前面说的微信支付的例子。微信支付服务上,需要知道每一笔交易的处理情况,才能正确处理在此转账请求时,是不是需要进行任何动作。 五是一个系统中需要多层幂等。什么意思呢?A 发送请求给 B,B 处理的一部分是要发送请求给另一个系统 C,C 在处理的过程中还可能需要发请求给另一个系统 D………

  • mac下如何强制退出应用程序

    mac下如何强制退出应用程序

    1、使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+Esc 这样按住一两秒钟,就可以强制退出当前程序了,算是最方便的一种方法。 2、打开强制退出程序窗口 使用快捷键:Command+Option+Esc 来打开“强制退出应用程序”的窗口,然后选中你需要退出的程序,再点右下方的“强制退出”即可。 3、从Dock中强制退出程序 按住Option然后右键点击程序在Dock中的图标,可以看到“强制退出”的选项,选择即可。 4、从左上角苹果菜单中强制退出程序 这个有些类似第二条,从左上角的菜单中选择“强制退出”,不过有些时候程序当机,点击菜单会出现没反应的情况。 5、使用“活动监视器”强制退出程序 在 应用程序-实用工具 中找到“活动监视器”,找到程序的名字然后选择左上方红色按钮强制退出程序,这个就有些类似Windows中的任务管理器了。如果上面的方法都不奏效,那么可以尝试这个方法。 6、使用终端命令强制退出程序 这个应该算是重启电脑之前的最后办法了,在终端中输入如下命令 killall [程序名称]

  • 狗日的markmonitor是干什么的

    狗日的markmonitor是干什么的

    也许你查询某个大型公司域名whios信息时,常常会发现很多这些大型公司的域名都在一家名为MarkMonitor的公司注册,那么markmonitor是家什么样的公司呢?

  • 发票真伪查询方法

    发票真伪查询方法

    2017年7月1日国家“史上最严发票规定”正式实施,近段时间国家税务局又相继发布有关发票管理新规,公司《财务制度》中一直有明确规定:报销人对所报销费用的真实性、准确性、合法性负责,单据及附件应合规。以下提供发票真伪的查询方法: 一、增值税发票(包括专用发票、增值税普通发票、增值税电子普通发票、机动车销售统一发票)查询方法(国家税务总局负责) 登录国家税务总局全国增值税发票查验平台进行查询:https://inv-veri.chinatax.gov.cn/ 二、非增值税的普通发票查询方法 1、北京市国税发票真伪查询方法: 登录北京市国家税务局网站查询:http://www.bjsat.gov.cn/ptfp/fpindex.jsp 报销出租车票时,除查询北京国税网址结果外,还需要登录:“微信-钱包-城市服务-出租车”查询或者进入“支付宝-城市服务-出租车信息查询”输入出租车号牌或驾驶员证号,若两次查询结果一致,则发票为真,若两次查询结果不一致,发票为假。 2、上海国税发票真伪查询方法: 登录上海市国家税务局网站查询:https://www.tax.sh.gov.cn/xbwz/wzcx/WSBSptFpCx_loginsNewl.jsp 3、广东省国税发票真伪查询方法: 登录广东省国家税务局网站查询:http://gs.etax-gd.gov.cn/xxmh/html/index.html?forw=gzcx-fpcy 4、其他省(市)国税发票真伪查询方法: 登录各省市国家税务局网站―网上办税服务厅―我要查询―发票查询 三、其他发票查询网址方法: 除上述查询网址外,还可通过友商网进行查询:http://fapiao.youshang.com/

  • 微信登录 wechat-login.html 403 Forbidden

    微信登录 wechat-login.html 403 Forbidden

    discuz设置微信登陆,遇到403问题。 一般情况下,全局-seo设置里要先确定现有的seo策略生效,点击 你的域名/admin.php?action=checktools&operation=rewrite&frame=no 会有相应的rewrite规则,将其和你自己的配置进行比对,将插件的rewrite规则靠前即可。

  • 请先升级 UCenter 到 1.6.0 以上版本。 如果使用为Discuz! X自带UCenter,请先下载 UCenter 1.6.0, 在 utilities 目录下找到对应的升级程序,复制或上​

    请先升级 UCenter 到 1.6.0 以上版本。 如果使用为Discuz! X自带UCenter,请先下载 UCenter 1.6.0, 在 utilities 目录下找到对应的升级程序,复制或上​

    错误提示”请先升级 UCenter 到 1.6.0 以上版本。 如果使用为Discuz! X自带UCenter,请先下载 UCenter 1.6.0, 在 utilities 目录下找到对应的升级程序,复制或上。。。。。“   解决办法: 先确认uc版本是否1.6,如果是还出现请先升级 UCenter 到 1.6.0 以上版本,按如下方法解决: 方法有两种: 第一、http://你的域名/install/update.php?step=prepare 直接输入 第二、在updata.php文件中 查找代码 if(version_compare($version, ’1.5.2′) <= 0) {  将代码修改为:if(version_compare($version, ’1.5.2′) >= 0) { 就可以跳过检查了!! 接下来哗哗哗一顿表升级乱闪,大概260个表后,显示如下: 数据库升级工具 升级开始 数据库结构添加与更新 数据更新 数据库结构删除 升级完成 恭喜,数据库结构升级完成! 升级完成。

  • Visual Studio Code 快捷键 Mac 版

    Visual Studio Code 快捷键 Mac 版

    Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == Delete ⌦ == 向前删除键(Fn+Delete) ↑ == 上箭头 ↓ == 下箭头 ← == 左箭头 → == 右箭头 ⇞ == Page Up(Fn+↑) ⇟ == Page Down(Fn+↓) Home == Fn + ← End == Fn + → ⇥ == 右制表符(Tab键) ⇤ == 左制表符(Shift+Tab) ⎋ == Escape (Esc) ⏏ == 电源开关键 常用 Mac 快捷键 介绍 ⇧⌘P, F1 显示命令面板 ⌘P 快速打开 ⇧⌘N 新建 窗口/实例 ⌘W 关闭 窗口/实例 基本编辑 Mac 快捷键 介绍 ⌘X 剪切 ⌘C 复制 ⌥↓ /…