param

php 文件操作类

自古美人都是妖i 提交于 2020-03-01 17:40:21
1 class fileInit { 2 3 /** 4 * 创建空文件 5 * @param string $filename 需要创建的文件 6 * @return 7 */ 8 public function create_file($filename) { 9 if (file_exists($filename)) return false; 10 $this->create_dir(dirname($filename)); //创建目录 11 return @file_put_contents($filename,''); 12 } 13 14 /** 15 * 写文件 16 * @param string $filename 文件名称 17 * @param string $content 写入文件的内容 18 * @param string $type 类型,1=清空文件内容,写入新内容,2=再内容后街上新内容 19 * @return 20 */ 21 public function write_file($filename, $content, $type = 1) { 22 if ($type == 1) { 23 if (file_exists($filename)) $this->del_file($filename); //删除文件 24 $this-

php通过经纬度计算直线距离

本秂侑毒 提交于 2020-03-01 10:52:45
<?php /** * php通过经纬度计算直线距离 方法一 * @param $latitudeA * @param $longitudeA * @param $latitudeB * @param $longitudeB * @return float */ function getDistanceA ($latitudeA, $longitudeA, $latitudeB, $longitudeB) { // 将角度转为狐度 $radLat1 = deg2rad($latitudeA);// deg2rad()函数将角度转换为弧度 $radLat2 = deg2rad($latitudeB); $radLng1 = deg2rad($longitudeA); $radLng2 = deg2rad($longitudeB); $a = $radLat1 - $radLat2; $b = $radLng1 - $radLng2; $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137; //返回值距离单位:千米 return $s; } /** * php通过经纬度计算直线距离 方法二 * @param $latitudeA

如何添加或更新查询字符串参数?

谁说胖子不能爱 提交于 2020-02-29 22:16:58
使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值? 我正在使用jquery进行客户端开发。 #1楼 我已经扩展了该解决方案,并将其与我发现的另一个解决方案结合在一起,可以根据用户输入并考虑url锚点来替换/更新/删除querystring参数。 不提供值将删除该参数,提供一个将添加/更新该参数。 如果没有提供URL,它将从window.location中获取。 function UpdateQueryString(key, value, url) { if (!url) url = window.location.href; var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"), hash; if (re.test(url)) { if (typeof value !== 'undefined' && value !== null) { return url.replace(re, '$1' + key + "=" + value + '$2$3'); } else { hash = url.split('#'); url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); if (typeof hash[1]

RabbitMQ Python 入门教程之HelloWorld

流过昼夜 提交于 2020-02-29 21:56:59
你好,世界 介绍 RabbitMQ是消息代理: 它接收并转发信息。举个例子: 小明从淘宝买了商品,配送员将快递投递到了快递柜, 小明再根据取件码去快递柜取快递。快递柜就相当于消息队列,快递员是生产者,小明是消费者。 生产者意味着发送, 所以发送信息的程序是生产者(Producer)。 尽管消息流经RabbitMQ和您的应用程序之中,但它们只能存储在队列之中, 甲队列仅由主机的存储器和磁盘限制和约束, 它本质上是一个大的消息缓冲器。许多生产者可以发送消息到同一个队列中,许多消费者可以尝试从一个队列中接收数据, 表示队列的方式。 消费与接收有相似的含义。消费者是一个程序,主要是等待接收信息。 生产者,消费者,消息队列不必位于同一主机上。一个应用程序既可以是消费者,也可以是生产者。 你好, 世界! 本部分内容中, 使用python编写两个小程序, 分别实现生产者和消费者。生产者进行数据发送,消费者进行数据接收并将其打印出来。 如图, P是生产者, 红色矩形相等于消息队列, C是消费者。 生产者将 hello 发送到队列中, 消费者从队列中接收 hello 。 RabbitMQ库 RabbitMQ使用多种协议。本教程使用AMQP 0-9-1,这是一种开放的通用消息传递协议。RabbitMQ有 许多不同语言 的客户。在本教程系列中,我们将使用 Pika 1.0.0

Linux C字符串替换函数

余生颓废 提交于 2020-02-29 19:35:03
#include <stdio.h> #include <string.h> #include <stdlib.h> /** * * @author: cnscn@163.com * @reference: lovesnow1314@http://community.csdn.net/Expert/TopicView3.asp?id=5198221 * * 用新子串newstr替换源字符串src中的前len个字符内所包含的oldstr子串 * * @param char* dest 目标串,也就是替换后的新串 * @param const char* src 源字符串,被替换的字符串 * @param const char* oldstr 旧的子串,将被替换的子串 * @param const char* newstr 新的子串 * @param int len 将要被替换的前len个字符 * * @return char* dest 返回新串的地址 * */ char *strreplace(char *dest, char *src, const char *oldstr, const char *newstr, size_t len) { //如果串相等,则直接返回 if(strcmp(oldstr, newstr)==0) return src; //子串位置指针 char

区分escape、encodeURI和encodeURIComponent

淺唱寂寞╮ 提交于 2020-02-29 16:38:45
1.escape: escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。 编码之后的效果是%XX或者%uXXXX这种形式。 其中 ASCII字母、数字、@*/+ ,这几个字符 不会 被编码,其余的都会。 最关键的是,当你需要对URL编码时,请忘记这个方法,这个方法是针对字符串使用的,不适用于URL。 事实上,这个方法我还没有在实际工作中用到过,所以就不多讲了。 2.encodeURI和encodeURIComponent 对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。 它们都是编码URL,唯一区别就是编码的字符范围,其中 encodeURI方法 不会 对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+' encodeURIComponent方法 不会 对下列字符编码 ASCII字母、数字、~!*()' 所以encodeURIComponent比encodeURI编码的范围更大。 实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。 3.最重要的,我该什么场合用什么方法:     1、如果只是编码字符串,不和URL有半毛钱关系,那么用escape。 2、如果你需要编码整个URL,然后需要使用这个URL

瞬间几千次的重复提交,我用SpringBoot+Redis 扛住了

扶醉桌前 提交于 2020-02-29 11:56:14
在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等! 我们来解释一下幂等的概念: 任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是对数据库的影响只能是一次性的,不能重复处理。 如何保证其幂等性,通常有以下手段: 1、数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据2、token机制,每次接口请求前先获取一个token,然后再下次请求的时候在请求的header体中加上这个token,后台进行验证,如果验证通过删除token,下次请求再次判断token3、悲观锁或者乐观锁,悲观锁可以保证每次for update的时候其他sql无法update数据(在数据库引擎是innodb的时候,select的条件必须是唯一索引,防止锁全表)4、先查询后判断,首先通过查询数据库是否存在数据,如果存在证明已经请求过了,直接拒绝该请求,如果没有存在,就证明是第一次进来,直接放行。 redis实现自动幂等的原理图: image.png 一、搭建redis的服务Api 1、首先是搭建redis服务器。 2、引入springboot中到的redis的stater,或者Spring封装的jedis也可以,后面主要用到的api就是它的set方法和exists方法

微信公众号群发消息java

試著忘記壹切 提交于 2020-02-28 19:50:16
首先贴上官方文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 私以为这份文档写的还是很不错的,在开发的时候没有给我造成多大的困扰,比微信支付的文档好的不要太多。当然也可能是因为我调用的功能太少,没有碰上坑。 接下来进入正题。 这里会分步介绍代码所实现的功能,在文章最后会附上完整的类以及用到的其他类。 1. 获取AccessToken access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 HttpConnection conn = new HttpConnection(); StringBuilder sb = new StringBuilder("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"); sb.append("&appid="+PropertiesUtil.getInstance().getPropMap().get("wx.AppKey"));

python 类型注解

不想你离开。 提交于 2020-02-28 13:53:26
函数定义的弊端 python 是动态语言,变量随时可以被赋值,且能赋值为不同类型 python 不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x,y): return x+y print(add(4,5)) print(add('hello','world')) print(add(4,'hello')) #报错,TypeError: unsupported operand type(s) for +: 'int' and 'str' 难发现:由于不做任何类型检查,直到运行期问题才显现出来,或者线上运行时才能暴露出问题 难使用:函数的使用者看到函数的时候,并不知道你的函数的设计,并不知道应该传入什么类型数据 如何解决这种动态语言定义的弊端呢? 增加文档Docmentation String 这是一个惯例,不是强制标准,不能要求程序员一定为函数提供说明文档 函数定义更新了,文档未必同步更新 def add(x,y): """ :param x:int :param y:int :return:int """ return x+y print(help(add)) 函数注解 python3.5引入 对函数的参数进行类型注解 对函数的返回值进行类型注解 只对函数参数做一个辅助说明,并不对函数参数进行类型检查 提供给第三方工具

JavaSE_注解(一)

落爺英雄遲暮 提交于 2020-02-28 11:03:46
注解 注解也就是注释,这是代码级别的注释,用代码给代码注释. 注解有三部分组成 ① 声明注解,定义注解 在软件开发过程中一般都是定义好的注解 ②使用注解 ③读取注解信息 我们吧读取注解信息的代码称为注解信息处理流程(一般也是定义好的) 读取信息的代码需要用到反射. 常见的注解 一.系统预定义的三个最基本的注解 1.@Override 它是由JDK的核心类库定义,读取它是由编译器,例如javac.exe. 作用:注释这个方法是一个重写的方法,让编译器对这个方法的签名进行格式检查,是否满足重写的要求. 2.Java中的注释, ①单行注释 ②多行注释 ③用于文档的注释 用于文档的注释 /** @author Leiyu @date 2020-2-28 @param args String [] 命令行参数 */ /** *@param (1)必须该方法有形参,才能写,有几个形参就写几个 (2)@param 形参名 形参类型 解释 *@return (1)必须方法有返回值而不是void类型,一个方法@return最多有一个 (2)@return 返回值类型 解释 @throws (1)必须方法throws异常 ,有几个写几个 (2)@throws 类型 解释 *@param a int 其中一个整数 *@param b int 其中一个整数 @return int 返回a,b中的较大者