一个axios的简单教程

首先要明白的是axios是什么:axios是基于promise(诺言)用于浏览器和node.js是http客户端。 axios的作用是什么呢:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能。 特点:支持浏览器和node.js 支持promise 能拦截请求和响应 能转换请求和响应数据 能取消请求 自动转换JSON数据 浏览器支持防止CSRF(跨站请求伪造) 这里你一定会想promise是什么东西,以下是promise的个人理解: promise是什么:是一个对象用来传递异步操作的信息,它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的api,可供进一步的处理。 promise的作用:Promise的出现主要是解决地狱回调的问题,比如你需要结果需要请求很多个接口,这些接口的参数需要另外那个的接口返回的数据作为依赖,这样就需要我们一层嵌套一层,但是有了Promise 我们就无需嵌套。 promise的本质是什么:分离异步数据获取和业务 基本使用方法: axios执行GET请求 GET 请求方法 执行POST请求 POST请求方法 执行多个并发请求 多个并发请求 get和post都是基于promise的所以写法上很相似,是用then和catch,使用这种方法来进行发送请求。 还有一个axios重要的知识点就是拦截器 拦截器 在请求或响应被 then 或 catch 处理前拦截它们(拦截器可以做什么:在请求或者响应时拦截下来进行处理) 拦截器分为请求拦截器和响应拦截器 请求拦截器(interceptors.requst)是指可以拦截每次或指定HTTP请求,并可修改配置项。 响应拦截器(interceptors.response)可以在每次HTTP请求后拦截住每次或指定HTTP请求,并可修改返回结果项。 拦截器的写法 拦截器的工作流程: 拦截器工作流程 移除拦截器 移除拦截器 自定义 axios 实例添加拦截器 添加拦截器 取消 使用 cancel token 取消请求 可以使用 CancelToken.source 工厂方法创建 cancel token 参考资料:axios中文文档   from:https://www.jianshu.com/p/13cf01cdb81f

龙生   10 Oct 2019
View Details

如何快速搭建VPN,六款VPN服务器上最好的自由和开源工具,轻松搭建个人VPN

个人外贸企业需要访问国外的网络,怎么办?如果您想尝试建立您自己的 VPN,但是不确定从哪里开始,那么您来对地方了,我将比较 6 个在您自己的服务器上搭建和使用 VPN 的最好的自由和开源工具。不管您是想为您的企业建立站点到站点的 VPN,还是只是想创建一个远程代理访问以解除访问限制并对 ISP 隐藏你的互联网流量,都可以通过 VPN 来达成。 根据您的需求和条件,并参考您自己的技术特长、环境以及您想要通过 VPN 实现的目标。需要考虑以下因素: •VPN 协议 •客户端的数量和设备类型 •服务端的兼容性 •需要的技术专业能力 Algo Algo 是从下往上设计的,可以为需要互联网安全代理的商务旅客创建 VPN 专用网。它“只包括您所需要的最小化的软件”,这意味着为了简单而牺牲了可扩展性。Algo 是基于 StrongSwan 的,但是删除了所有您不需要的东西,这有另外一个好处,那就是去除了新手可能不会注意到的安全漏洞。 作为额外的奖励,它甚至可以屏蔽广告! Algo 只支持 IKEv2 协议和 Wireguard。因为对 IKEv2 的支持现在已经内置在大多数设备中,所以它不需要像 OpenVPN 这样的客户端应用程序。Algo 可以使用 Ansible 在 Ubuntu (首选选项)、Windows、RedHat、CentOS 和 FreeBSD 上部署。 使用 Ansible 可以自动化安装,它会根据您对一组简短的问题的回答来配置服务。卸载和重新部署也非常容易。 Algo 可能是在本文中安装和部署最简单和最快的 VPN。它非常简洁,考虑周全。如果您不需要其他工具提供的高级功能,只需要一个安全代理,这是一个很好的选择。请注意,Algo 明确表示,它不是为了解除地理封锁或逃避审查,主要是为了加密。 Streisand Streisand 可以使用一个命令安装在任何 Ubuntu 16.04 服务器上;这个过程大约需要 10 分钟。它支持 L2TP、OpenConnect、OpenSSH、OpenVPN、Shadowsocks、Stunnel、Tor bridge 和 WireGuard。根据您选择的协议,您可能需要安装客户端应用程序。 在很多方面,Streisand 与 Algo 相似,但是它提供了更多的协议和定制。这需要更多的工作来管理和维护,但也更加灵活。注意 Streisand 不支持 IKEv2。因为它的多功能性,我认为 Streisand 在某国和土耳其这样的地方绕过审查制度更有效,但是 Algo 的安装更容易和更快。 使用 Ansible 可以自动化安装,所以不需要太多的专业技术知识。通过向用户发送自定义生成的连接指令,包括服务器 SSL 证书的嵌入副本,可以轻松添加更多用户。 卸载 Streisand 是一个快速无痛的过程,您也可以随时重新部署。 OpenVPN OpenVPN 要求客户端和服务器应用程序使用其同名的协议建立 VPN 连接。OpenVPN […]

龙生   10 Oct 2019
View Details

php7.1以上 mcrypt_generic_open is deprecated 报错处理

php7.1以上. mcrypt_generic_open is deprecated 这个错误, 就是因为mcrypt扩展,在php7.1以上被废弃,服务器不设置报错等级的话, 这个错误会被框架拦截,然后报出微信demo里的40007错误, 具体解决方案,所有 mcrypt扩展的代码,全部加上 错误抑制符 ,例如 //使用BASE64对需要解密的字符串进行解码 原来的代码

  修改的代码

  然后我的问题就解决了。 我的问题主要出在微信的加解密函数上,遇到的坑有几个 1.文档给的class默认有的是小写, 2.一个文件有多个class得拆开 3.构造函数获取的变量名称不对得修改… 这些用断点调试都可以进行解决 还有一种方案是, 我听我朋友说可以用 openssl代替mcrypt扩展的方案(mcrypt编码,openssl解码), 得重写编写微信demo里的代码,虽然我没成功…   from:https://blog.csdn.net/qq_38686693/article/details/81388329

龙生   08 Oct 2019
View Details

vue 页面跳转传参

页面之间的跳转传参,正常前端js里写 window.location.href="xxxxx?id=1" 就可以了; 但是vue不一样 需要操作的是路由history,需要用到 VueRouter, 示例: 常用的场景是:列表页点击“查看”按钮,跳转到详情页。 在列表页(list.vue)按钮点击事件里写上

运行时浏览器地址栏展示: http://localhost:8080/#/orders/detail?id=31 在详情页(detail.vue)里写上

即可获取到参数id了。 解析 先看看 route是什么,在vscode f12后 看到

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。 VueRouter官网 传送门 route是一个跳转的路由对象,每一个路由都会有一个route对象,是一个局部的对象,可以获取对应的name,path,params,query等   其中 params {}对象,包含路由中的动态片段和全匹配片段的键值对 用来实现 /order.detail/1 query {}对象,包含路由中查询参数的键值对。 用来实现 /order/detail?id=1   from:https://www.jianshu.com/p/45163cb031be

龙生   06 Oct 2019
View Details

curl: (60) SSL certificate problem: unable to get local issuer certificate 错误

参考地址:http://blog.csdn.net/sanbingyutuoniao123/article/details/71124655   关于“SSL证书问题:无法获取本地颁发者证书”错误。很明显,这适用于发送CURL请求的系统(并且没有服务器接收请求) 1)从https://curl.haxx.se/ca/cacert.pem下载最新的cacert.pem 2)将以下行添加到php.ini(如果这是共享托管,并且您无法访问php.ini,那么可以在public_html中添加到.user.ini) curl.cainfo=/path/to/downloaded/cacert.pem     from:https://www.cnblogs.com/haoxuanchen2014/p/8067484.html

龙生   01 Oct 2019
View Details

ThinkPHP5.0(六)PHP处理excel文件流程,PHPExcel

##从前台获取文件: 前台代码

前台获取文件为3个input框: 第一个type=“text”,用来显示获取到文件的路径; 第二个type="button"点击按钮; 第三个type="file"隐藏的获取文件的表单。 流程: 当button 触发click事件,则调用$(’#i-file’).click();触发file,当file类型的input获取到值(文件路径),则change事件将路径值显示在location。 jQuery的 .val() – 设置或返回表单字段的值。 ##后台接收文件: 获取: 通过调用request对象的file()方法获取。

移动(上传): 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展。

其中validata()是一个格式验证,传入参数为最大字节size和限定的后缀ext;

move 方法成功的话返回的是一个 \think\File 对象,你可以对上传后的文件进行后续操作, move方法如果只传入一个路径则默认会在目录下生成时间目录,且文件名为自动生成的。 例如:20180926\bbc624371e90924a8483b5421acc2e43.xlsx 时间目录20180926下的这个文件 如果不想生成时间目录,且用原始文件名,则通过传入其他参数。 原始文件名采用:move($file_url,")

  后续操作: 对move()方法获取到的返回值$info可以执行: getExtension()获得扩展名(后缀名) getSaveName()域名 getFilename()文件名 好的可以获取文件地址通过:

  注意:在文档中查到 getSaveName 方法返回的是图片的服务器文件地址,并不能直接用于图片的URL地址,尤其在 windows平台上必须做转换才能正常显示图片。 所以正确的获取路径的方法为:

  getSaveName()得到的其实就是文件名加后缀名,要得到的file_url为可用的URL地址。则 $file_url .= "\\" . $url其中 **.=**为连接符 ,双斜杠为转义字符,本意为单斜杆。 则将**$file_url**传入到真正的文件文件处理的方法中,这里是import()方法。 上述过程完整代码:

  ##处理文件: 我处理的为Excel文件,经过上述步骤将一个Excel的URL地址,和其扩展名传入了处理函数import()。 一.PHPExcel的安装和引用: 注意在处理之前必须采用使用composer安装PHPExcel。 教程 Git地址 use一下全套服务:

  或者:

  就完成了引用! 二.开始处理: 1.通过实例化的PHPExcel_IOFactory对象调用createReader()方法获得Reader对象;

  2.Reader对象的load方法调用URL地址获取到存放文件内容的PHPExcel;

  3.通过PHPExcel的getActiveSheet方法获取sheet当前工作sheet sheet可以存在多个,通过索引getActiveSheet(0)

 

  4.将sheet转化为数组进行处理,则Excel中的内容就变成了一个二维数组,方便处理了。 […]

龙生   30 Sep 2019
View Details

利用PHPExcel 实现excel数据的导入导出(源码实现)

在开发过程中,经常会遇到导入导出的需求,利用phpexcel类实现起来也是比较容易的,下面,我们一步一步实现 提前将phpexcel类下载,并放在扩展目录中,如图所示 一、Excel导出 导出功能,相对复杂,复杂就复杂在设置导出的excel文件的样式以及内容如何循环赋值,而且导出之后的处理结果,一般是直接在通过浏览器下载到本地,或者发送邮件,在此,以下载到本地为例,下面是源码实现 1、首先是获取待导出的数据,这一步比较简单

  2、设置Excel导出文件的样式以及为每个单元格赋值,这一步是导出最重要最复杂的一步,好在我都做了注释

  3、设置完之后,将生成的excel文件,通过浏览器下载到本地

  4、也可以在服务器上生成excel文件,然后发送到用户邮箱

二、Excel导入 相比导出,导入就简单多了,废话不多说,直接上源码   1、利用form表单获取上传的excel文件

  2、然后,读取excel文件里面的数据,这里是边读取边处理,或者全部读取出来再处理

多学、 多记、 多练、 from:https://www.cnblogs.com/cyfblogs/p/10115541.html

龙生   30 Sep 2019
View Details

php读取excel文件数据的导入和导出

在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是: 1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度,高度,边框颜色…)不能自定义; 2.生成的文件虽然可以打开,但是兼容性很差,每次打开,都会报一个警告: 今天使用一个第三方的SDK(PHPExcel)实现Excel文件的导入和导出。 准备工作: 1.下载PHPExcel的SDK,下载地址:https://github.com/PHPOffice/PHPExcel。 2.将SDK解压之后的Class文件拷贝到自己的项目。 一.Excel文件读取

  或者:

 

两种方法均可将表格数据转化为数组,然后哦再进行相关的操作就简单了。   二.Excel文件导出

    导出文件,还可以设置模板

    先弄一个excel模板 然后使用该模板导出数据 from:https://www.jianshu.com/p/f7c07763a16e

龙生   30 Sep 2019
View Details

CentOS6.5将shell脚本设置为服务和开机启动的方法

第一种开机执行命令法: 直接修改/etc/rc.d/rc.local文件 编辑文件/etc/rc.d/rc.local vi /etc/rc.d/rc.local 比如要将zookeeper添加为开机自启动就在最后加上“/usr/local/zookeeper-3.4.5/bin/zkServer.sh start” 配置好之后,重启centos,会发现命令被执行了。前提条件是当前机器环境变量中有java命令即$JAVA_HOME/bin的路径,否则zookeeper也启动不了。 Bash

  第二种服务自启动法: 这次换个jetty吧 1、进入到/etc/rc.d/init.d目录下,新建一个jetty脚本 Bash

将以下脚本写入文件中,可以看出这是一个case语句判断,当我们使用"service jetty start"启动服务的时候"start"参数就会变成$1传入下面的脚本,从而做出对应的操作。 # chkconfig: 345 99 99 (这个比较有意思,345代表在设置在那个level中是on的,如果一个都不想on,那就写一个横线"-",比如:chkconfig: – 99 99。后面两个数字当然代表S和K的默认排序号啦,基本都写99,排后面启动安全保险) Bash

  2、最后保存jetty文件后别忘了设置文件的执行权限 Bash

  3、至此服务已经创建好了,可以用"service jetty start"来启动jetty了,但我们要设置自启动还需要添加到chkconfig来管理 Bash

  看到3是启动状态就说明在文本界面启动方式下该服务已经设置为自启动了,5是图形化界面 如果不是启动状态需要用命令开启自启动 Bash

这样就没问题了。 from:https://blog.csdn.net/e_wsq/article/details/79885180

龙生   24 Sep 2019
View Details

CentOS7添加自定义脚本服务

一、CentOS7添加自定义脚本服务说明 在CentOS7下,已经不再使用chkconfig命令管理系统开机自启动服务和条件自定义脚本服务了,而是使用管理unit的方式来控制开机自启动服务和添加自定义脚本服务。在/usr/lib/systemd/system目录下包含了各种unit文件,有service后缀的服务unit,有target后缀的开机级别unit等。这里介绍自定义脚本服务,如果想把自定义的脚本变成服务进程,都需要写对应的service配置文件,这样才能被unit所管理(注意:自定义开机自启动服务的.service配置文件必须放在/usr/lib/systemd/system这个目录下面)。服务类别又分为服务又分为系统服务(system)和用户服务(user)。 系统服务:开机不登陆就能运行的程序(常用于开机自启)。 用户服务:需要登陆以后才能运行的程序。 二、编写.service配置文件说明 1、[unit]区块:设置管理启动顺序与依赖关系 Description=服务描述 给出当前服务的简单描述 Documentation=路径或url 给出文档位置 After=服务.target或服务.service 定义在某些服务之后启动。例如sshd服务启动必须在network.target sshd-keygen.service服务开启之后才能启动,可以使用如下命令查看sshd服务的配置 cat  /usr/lib/systemd/system/sshd.service Before=服务.target 定义在某些服务之前启动 Wants=服务.service 弱依赖,表示等号填写服务启动或失败,不影响此配置文件服务的启动 Requires=服务.service 强依赖,表示等号填写服务启动或失败,那么此配置文件的服务将启动失败 注意:如果After、Before、Wants、Requires等号后面需要填写多个服务可以用空格隔开。After和Before字段只涉及启动顺序,不涉及依赖关系。Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。 2、[Service]区块:设置启动行为 •启动命令 ExecStart=命令 定义启动进程时执行的命令 ExecReload=命令 重启服务时执行的命令 ExecStop=命令 停止服务时执行的命令 ExecStartPre=命令 启动服务之前执行的命令 ExecStartPost=命令 启动服务之后执行的命令 ExecStopPost=命令 停止服务之后执行的命令 所有的启动设置之前,都可以加上一个连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行。例如:ExecStop=-/bin/sh /server/scripts/xx.sh •启动类型  Type字段定义启动类型。它可以设置的值如下: simple(默认值) ExecStart字段启动的进程为主进程 forking ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行) oneshot 类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务 dbus 类似于simple,但会等待 D-Bus 信号后启动 notify 类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务 idl 类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 •重启行为  KillMode字段,定义Systemd如何停止服务,它可以设置的值如下 control-group(默认值) 当前控制组里面的所有子进程,都会被杀掉 process 只杀主进程 mixed 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 none 没有进程会被杀掉,只是执行服务的 stop 命令 Restart字段,定义了服务退出后,Systemd的重启方式,它可以设置的值如下 no(默认值) 退出后不会重启 on-success 只有正常退出时(退出状态码为0),才会重启 on-failure 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 on-abnormal 只有被信号终止和超时,才会重启 on-abort 只有在收到没有捕捉到的信号终止时,才会重启 on-watchdog 超时退出,才会重启 always 不管是什么退出原因,总是重启 •service区块的其他一些字段 […]

龙生   24 Sep 2019
View Details
1 148 149 150 414