网络延迟

网络延迟测试工具

依然范特西╮ 提交于 2020-03-19 17:31:48
3 月,跳不动了?>>> 全球PING延时测试SuperPing: http://www.super-ping.com/ 全球PING延时测试:http://ping.chromefans.org/ 全球PING延时测试:https://tools.keycdn.com/ping 比较全面的ping\port\dns\http全球延时测试:http://check-host.net/check-ping 网页延时测试:https://www.dotcom-tools.com/website-speed-test.aspx 来源: oschina 链接: https://my.oschina.net/AnnaWu/blog/3198237

防止表单重复提交

人盡茶涼 提交于 2020-02-06 17:13:53
一、防止表单重复提交一    网络延迟,在网络延迟时间内,频繁的提交表单   只能提交一次,监控表单的提交事件,通过一个boolean类型的变量来区分已经点击过还是没有点击,如果已经点击过,表单就不提交,没有点击过再提交 1、目录展示    2、导入依赖    3、form.jsp <%-- Created by IntelliJ IDEA. User: zheng Date: 2020/2/6 Time: 15:55 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>解决表单重复提交案例</title> <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> <script type="text/javascript"> //创建一个变量 false代表没有点击过,true代表已经点击过 var flag=false; function formSubmit() { if(!flag){ //取反值为false flag=true;

Python 3 并发编程多进程之进程同步(锁)

早过忘川 提交于 2020-01-20 23:55:56
Python 3 并发编程多进程之进程同步(锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,竞争带来的结果就是错乱,如何控制,就是加锁处理。 1、多个进程共享同一打印终端 from multiprocessing import Process import os,time def work(): print('%s is running' %os.getpid()) time.sleep(2) print('%s is done' %os.getpid()) if __name__ == '__main__': for i in range(3): p=Process(target=work) p.start() 并发运行,效率高,但竞争同一打印终端,带来了打印错乱 from multiprocessing import Process,Lock import os,time def work(lock): lock.acquire() print('%s is running' %os.getpid()) time.sleep(2) print('%s is done' %os.getpid()) lock.release() if __name__ == '__main__': lock=Lock() for i in

区块链入门学习(二)

不打扰是莪最后的温柔 提交于 2020-01-17 04:00:41
特性 去中心化。 这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就发布,这需要有人来跟你一起玩。 数据防篡改。 所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可以解决人类的信任问题,这个并不一定。) 固定的发行量。 不会像国家中央银行那样乱印钞票,造成通货膨胀。 比特币 区块链技术 工作量证明共识机制 区块链 真正的数据。 自己的地址(或是 ID)。 前一个数据块的地址。 比特币哈希算法 Version,Previous Block Hash,Merkle Root,Timestamp,Difficulty Target 和 Nonce 这六个数据字段是区块链的区块数据协议头 以太坊Merkle Root树 一个是用来做交易 hash 的 Merkle Root。 一个是用来表示状态 State 的。 还有一个是用来做交易收据的。 UTXO(Unspent Transaction Output) 需要进行交易处理 一般的挖矿流程如下。 (1)从网络上取得之前的区块信息。 (2)从 " 待记账区 " 中获取一组交易数据(有优先级,比如成长时间、矿工小费等)。 (3)形成区块头(计算 Merkle

python 13---17

大兔子大兔子 提交于 2020-01-15 07:07:09
第十三章 一. 匿名函数 匿名函数 lambda,也叫一句话函数。 现在有一个需求:你们写一个函数,此函数接收两个int参数,返回和值。 def func(a,b): return a+b print(func(3,4)) 那么接下来我们用匿名函数完成上面的需求: func = lambda a,b: a+b print(func(3, 4)) # 7 我们分析一下上面的代码: 语法: 函数名 = lambda 参数:返回值 1)此函数不是没有名字,他是有名字的,他的名字就叫做lambda 2)lambda 是定义匿名函数的关键字,相当于函数的def. 3)lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行。 func = lambda a,b,*args,sex= 'alex',c,**kwargs: kwargs print(func(3, 4,c=666,name='alex')) # {'name': 'alex'} # 所有类型的形参都可以加,但是一般使用匿名函数只是加位置参数,其他的用不到。 4)返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型。(但是想要返回多个元素要以容器的形式返回) 5)匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据 接下来做几个匿名函数的小题: 写匿名函数:接收一个可切片的数据

python 14 装饰器

最后都变了- 提交于 2019-12-27 00:00:28
今日内容大纲 90。自我。 调整自己,适当听取一些其他人的意见。 承受压力的能力一定要有所提高。 昨天内容回顾以及作业讲解 匿名函数:一句话函数。 多于内置函数,列表推导式结合。 内置函数: *** 加key的。min,max,sorted,map,reduce,filter 闭包: 内层函数对外层函数非全局变量的使用。 一定要存在嵌套函数中。 作用:保证数据安全。自由变量不会再内存中消失,而且全局还引用不到。 今日内容 开放封闭原则: 装饰器:装饰,装修,房子就可以住,如果装修,不影响你住,而且体验更加,让你生活中增加了很多功能:洗澡,看电视,沙发。 器:工具。 开放封闭原则: 开放:对代码的拓展开放的, 更新地图,加新枪,等等。 封闭:对源码的修改是封闭的。闪躲用q。就是一个功能,一个函数。 别人赤手空拳打你,用机枪扫你,扔雷.....这个功能不会改变。 装饰器:完全遵循开放封闭原则。 装饰器: 在不改变原函数的代码以及调用方式的前提下,为其增加新的功能。 装饰器就是一个函数。 装饰器的初识: 版本一: 大壮 写一些代码测试一下index函数的执行效率。 import time # def index(): # '''有很多代码.....''' # time.sleep(2) # 模拟的网络延迟或者代码效率 # print('欢迎登录博客园首页') # # def dariy(

Linux模拟网络延迟、丢包等

百般思念 提交于 2019-12-10 17:45:46
1.netem netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。 使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian等等 2.tc tc是Linux 系统中的一个工具,全名为traffic control(流量控制)。 tc可以用来控制netem的工作模式,也就是说,如果想使用netem,需要至少两个条件,一个是内核中的netem 功能被包含,另一个是要有tc. 需要注意的是:本文介绍的流控只能控制发包动作,不能控制收包动作,同时,它直接对物理接口生效,如果控制了物理的eth0,那么逻辑网卡(比如eth0:1)也会受到影响,反之,如果您在逻辑网卡上做控制,该控制可能是无效的。(注:虚拟机中的多个网卡可以在虚拟机中视为多个物理网卡) 二、命令使用说明、模拟延迟传输 tc qdisc add dev eth0 root netem delay 100ms 该命令将 eth0 网卡的传输设置为延迟100毫秒发送。 更真实的情况下,延迟值不会这么精确,会有一定的波动,我们可以用下面的情况来模拟出带有波动性的延迟值: tc

模拟网络延迟抖动测试

孤街浪徒 提交于 2019-12-08 04:36:28
##以下配置对所有ip 生效 网络异常,可通过以下命令在接口服务端服务器设置(记住测试完删除命令否则一直生效) 1.tc qdisc add dev eth0 root netem delay 100ms 该命令将 eth0 网卡 的传输设置为延迟 100 毫秒发送。 2.tc qdisc del dev eth0 root netem delay 100ms 该命令将删除 eth0 网卡 的传输设置为延迟 100 毫秒发送。 3.tc qdisc add dev eth0 root netem delay 100ms 10ms 该命令将 eth0 网卡 的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。 4.tc qdisc add dev eth0 root netem delay 100ms 10ms 30% 该命令将 eth0 网卡 的传输设置为 100ms ,同 时,大约有 30% 的包会延迟 ± 10ms 发送。 5.tc qdisc add dev eth0 root netem loss 1% 该命令将 eth0 网卡 的传输设置为随机丢掉 1% 的数据包 6. tc qdisc add dev eth0 root netem loss 1% 30% 该命令将 eth0 网卡 的传输设置为随机丢掉 1% 的数据包,成功率为

LeetCode 网络延迟时间(图的最短路径问题)

匿名 (未验证) 提交于 2019-12-02 23:32:01
版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/qq_41855420,未经博主允许不得转载。 https://blog.csdn.net/qq_41855420/article/details/89786066 问题描述: 有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们向当前的节点 K 发送了一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。 注意: N 的范围在 [1, 100] 之间。 K 的范围在 [1, N] 之间。 times 的长度在 [1, 6000] 之间。 所有的边 times[i] = (u, v, w) 都有 1 <= u, v <= N 且 0 <= w <= 100。 思路分析: 首先我们应该明白,从k传输到所有的的时间 = max (从k到点1所需要的最少时间,从k到2所需要的最少时间 … 从k到n所需要的最少时间),因为传输的过程是同时的。所以这道题就转换为图的最短路径求解问题。 请翻阅 图的最短路径:Floyd、DisjKstra、SPFA算法

python redis pipline

匿名 (未验证) 提交于 2019-12-02 22:51:30
Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。 一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。 设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次。如果能一次性将100个请求提交给redis server,执行完成之后批量的获取相应,只需要向redis请求1次,然后批量执行完命令,一次性结果,性能是不是会好很多呢? 答案是肯定的,节约的时间是客户端client和服务器redis server之间往返网络延迟的时间。这个时间可以用ping命令查看。 网络延迟高:批量执行,性能提升明显 网络延迟低(本机):批量执行,性能提升不明显 某些客户端(java和python)提供了一种叫做pipeline的编程模式用来解决批量提交请求的方式。 测试用例 # -*- coding:utf-8 -*- import redis import time from concurrent.futures import ProcessPoolExecutor r = redis.Redis(host='10.93.84.53', port=6379, password='bigdata123') def try_pipeline()