人们非常关心下载速度,对于使用非包月宽带以及使用付费CDN的用户而言,这是典型的拿钱买时间的行为,我支付的费用越高,希望的下载速度越快,所使用的累积带宽越大。关于各种测速方法也是汗牛充栋了,本文介绍一下TCP传输的测速。

TCP速率概述

首先,TCP速率受到多方面时延的影响,其中包括:

1.本机以及对端机器的处理时延

这部分指的是发送端和接收端主机由于操作系统调度,中断,网卡数据包调度等处理引入的时延,基本属于操作系统的范畴,如果一个TCP数据包可以发送(窗口足够容纳),但是由于此时CPU被操作系统切换到了另外一个进程造成了延迟,或者说该数据包确实已经被发送了,但是由于网卡性能很低,需要将数据包的内容逐字节的拷贝,这也会引入额外的延迟,这部分时间就应该算到主机处理时延中。

2.中间网络设备的处理时延

这是中间设备的“主机处理时延”,与端主机的处理时延类似,所不同的是,这部分时延大多数是排队时延,相比较排队时延,路由器或者交换机的处理时延可以忽略,当前骨干
网设备的pps线速都是超高的,如果你想优化那些设备的转发表,路由查找等逻辑,那是没找对地方,如今都是线卡硬件快速转发,交换网络处理都是纳秒级的,如果想优化路由转发等,那就去华为做光猫的部门谋份职位吧,那里会让你大展才华(绝非广告!)。再次重申,中间网络设备的处理时延主要是指排队时延。

3.中间网络的传输时延

这部分就不多说了,我们知道,光速很快,但也是有个值的,也就是说,光从一个地方到达另一个地方也是需要时间的,因此数据在载波中通过介质从一个主机到达另一个主机或者中间节点也是需要时间的,这部分时间就是网络传输时间,它主要受到串扰,折射率,光色散等物理因素的影响。
        知道了上述的因素,那么我们如果想测量一条TCP连接的数据传输速率,该怎么办呢?
        理论非常简单但却很苍白!总数据量除以时间。然而问题是,我在哪个层面上去测量速率,我需要什么样的精度。如果说我想知道我的主机的处理速率,那么时间就是指本机的处理时延,数据量就是在该时延内通过的数据量,更一般的,如果我想知道一个文件从一个WEB服务器上下载下来的速率,我就需要用总文件大小除以下载完成需要的时间,这部分时间包括上述三种时延的总和。
        这就涉及到了打点采样的问题了,本质上是两个问题,第一,在哪里开始打点采样,在哪里结束打点采样,第二,如何采样。

应用层下载测速

1.瞬时速度的移动指数平均

打开浏览器,下载一个文件,各种下载工具或者浏览器自带的下载器上会显示一个下载速度以及剩余时间,这些值是怎么得到的呢?非常简单,下载工具或者浏览器本身也是一个应用程序,它可以在内部进行数据采样,比如固定间隔打点,然后统计这段间隔收到的数据量,二者相除得到速率,至于是剩余时间,一般通过协议获取,比如HTTP协议的响应中一般会有该信息,然后用剩余大小除以当前速率就是剩余时间。就是这么简单!
        问题是当前速率真的就是用固定采样间隔的数据量除以时间间隔这么简单吗?非也!事实上,大部分的下载工具以及浏览器使用的都是移动指数平均算法,据我所知,早期的IE没有使用该算法,而是使用瞬时采样值直接除以时间这种,你会看到用早期的IE下载文件,剩余时间的抖动特别大,一会儿是几分钟,一会儿就是几小时。
        公式我就不写了,挺麻烦的,一提到数学公式,懂的人不答理你,不懂的人说你装,也挺头大。

2.平均速度的精确测量

上面说的是瞬时速度的测量方法,如果想统计一次下载的平均速度呢?事实上更简单,这个统计由于是下载完成后做的,因此此时我已经有了足够的信息去计算这个平均速度,下载文件的总大小我是有的,总时间我可以通过HTTP协议统计出来,二者相除就是最终答案。
        一般而言,像HTTP协议这样的,响应头里都会有文件的大小字节数,应用程序收到这么多字节就结束打点采样,就能统计到下载这么多数据所使用的时间。这完全是像HTTP协议这样的应用层协议的功劳,它告诉了我足够的信息。
        在内核协议栈里面统计这些就难了!因为内核看到的只有一条TCP流,除非收到FIN,否则不知道什么时候会结束,也不会在一开始就知道后续数据的传输量...

协议栈传输测速

前段时间遇到一个需求,说是能不能在网卡层面统计到达某一个端口的流量,我说不能...我没有撒谎,即便能做到,我也不想做。

1.瞬时速度的移动指数平均

下载工具的瞬时速度是让人看的,人们更关注通过这个瞬时速度计算出来的剩余时间,让人们有个预期,好安排在一部电影下载完成之前是不是有时间去楼下便利店买几罐啤酒。TCP要这个速度有什么用呢?
        TCP协议栈层面的瞬时速度是指导TCP发送策略本身用的,我们知道TCP是一个把全世界都卷进来的反馈系统(把它看作全世界范围的受蝴蝶效应影响的混沌系统也行),它需要网络的反馈来指导它未来的行为。之前我曾经不厌其烦的说ACK时钟如何影响TCP对拥塞的感应等等,诚然那些并没有错,但是在本文中,我们上升一个层面,来看一下ACK所确认的数据量和RTT的共同作用。这个作用所反应的就是TCP传输速率。我们需要一个速率可以代表一个趋势,然后用这个趋势去指导TCP拥塞窗口的调整,这就需要平滑掉该速率的噪点,于是又一次我们遇到了移动指数平均!
        我们先看一下瞬时速度怎么测量。

        可以使用和用户态的方法一样的算法,固定间隔内统计收到的数据量,但是在协议栈,我们有更好的算法,这是因为我们可以借助于ACK。我们通过下图来描述算法:



假设ACK匀速平滑到达,我们需要证明的是:

这个证明是很容易的:

证明了上面的等式后,我们同时也就有了计算瞬时速率的方法:
1.任意取一点设为T1,获取当时发送出去但是尚未得到确认的数据量以及相关序列号

2.在收到ACK的时候,记为T2,计算此ACK确认的数据量,用第一步的数据量减去本次确认的数据量

3.每次收到ACK时迭代上述过程,做移动指数平均


好了,我们通过ACK时钟流简单的搞定了瞬时速率值的计算。用这个可以指导很多事情,但不属于本文的范围。


2.平均速率的精确测量

上一节我们搞定了瞬时速度,但是由于做了移动指数平均平滑了噪点,所以我们丢失了部分信息,如果说我们需要一个精确的平均速度该怎么办呢?
        话说瞬时速度是指导连接内行为的,这个瞬时值的变化趋势可以在连接内被学习到,同时反作用于后续的速率调整,它反应了当前的网络状态以及该TCP连接对网络状态的反应,然而平均速率反应的是一种长期行为,比如我们可以通过对平均速率的分析了解链路的普遍状况等。这个平均值对于长期的机器学习行为更有统计上的意义。
和应用层的平均速度测量一样,它比瞬时值的测量要更简单,但是我们要换一种思路,因为没有人事先告诉你有多少数据要下载。在TCP中,这个我们可以事后统计到,用FIN时的序列号减去连接初始时的序列号,就是发送的字节数。总的来讲,测试平均速度就是计算两个量,一个是数据总量,一个是时间总量,然而二者相除:




请注意,分母是一个小段小段的时间加和,而不是直接取一个时间段,这是为什么呢?因为对于TCP而言,它有没有数据可发送是应用程序决定的,很多应用程序仅仅是保持一个TCP连接而已,然后在适当的时候传输一部分数据,这段中间的idle区间,是不应该算进传输时间的。现在的问题是如何算出各自的那一段段的数据量。我们一个一个来。
首先,计算分子的加和是简单的,无非就是FIN的时候将序列号减去SYN-ACK时的初始序列号,难点在于分母的时间片加和。其实也不难,如果仅仅是理论分析,我想已经可以结束了,然而我们必须实现它的时候,难点就在于你对协议栈代码的理解深度了,如果熟悉代码,那也是三下五除二的事,但是不要走偏,不要让他人影响你的判断,很简单的事情很多人一讨论就无解了。我先给出答案:
1).应用层数据进入TCP发送队列的时候判断
如果此时队列长度为0,开始新一轮打点计时,否则什么都不做。
2).ACK到来清除TCP发送队列的时候判断
如果该ACK清空了发送队列,结束上一轮的计时,统计时间差,累加时间差。
然后我们看一下代码如何实现,非常简单的不超过20行的代码,除却DEBUG信息,更少!代码如下:

TCP客户端scocket创建的时候,初始化字段

我在tcp_sock结构体中添加了几个字段,就不贴代码了,直接给出函数吧。
struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,struct request_sock *req,struct dst_entry *dst)
{...inet_csk(newsk)->icsk_ext_hdr_len = 0;
#if 1// 初始化时间片差字段newtp->vstamp = ktime_set(0, 0);// 初始化时间累加和字段newtp->pvstamp = ktime_set(0, 0);// 记录第一个序列号newtp->first_seq = newtp->snd_nxt;
#ifdef REAL_TIME_DEBUG// 为了比较纯传输时间和连接时间的差异,引入一个字段记录连接时间开始newtp->first = 1;// 以下两个字段为了确认“入队/清空”的守恒newtp->pri1 = 0;newtp->pri2 = 0;
#endif
#endif...
}

在数据进入发送队列的时候计时

TCP数据统一通过skb_entail进入发送队列
static void skb_entail(struct sock *sk, struct sk_buff *skb)
{...tcb->flags   = TCPCB_FLAG_ACK;tcb->sacked  = 0;
#if 1// 如果发送队列为空,则开始新一轮计时if (tcp_write_queue_head(sk) == NULL) {tp->vstamp = ktime_get_real();
#ifdef REAL_TIME_DEBUGtp->pri1 ++;// 如果是首次发送数据,则记录时间if (tp->first == 1) {tp->bstamp = tp->vstamp;tp->first = 0;
#endif}}
#endif...
}

在收到ACK的时候,检测发送队列是否已经清空

TCP数据的ACK统一通过tcp_clean_rtx_queue进行清理
static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,u32 prior_snd_una)
{...while ((skb = tcp_write_queue_head(sk)) && skb != tcp_send_head(sk)) {}               
#if 1   // 如果队列已经清空,统计从第一个数据包入队到队列清空之间的时间差,并累加到计数器上。if (tcp_write_queue_head(sk) == NULL && tp->vstamp.tv64 != 0) {ktime_t delta = net_timedelta(tp->vstamp);tp->pvstamp = ktime_add(tp->pvstamp, delta);tp->vstamp = ktime_set(0, 0);
#ifdef REAL_TIME_DEBUGtp->pri2++;
#endif}         
#endif...
}

4.在TCP关闭连接的时候,输出结果

我觉得目前这个东西没有什么用,所以只是简单printk出来看看即可,所以就不穿皮鞋了:
void tcp_v4_destroy_sock(struct sock *sk)
{struct tcp_sock *tp = tcp_sk(sk);
#if 1struct inet_sock *inet = inet_sk(sk);u32 delta_seq = tp->snd_nxt - tp->first_seq - 1;// tsval是纯数据传输的用时struct timespec tsval = ktime_to_timespec(tp->pvstamp);// ttot则是TCP连接中从数据传输开始到连接结束的总用时struct timespec ttot = ktime_to_timespec(ktime_sub(ktime_get_real(), tp->bstamp));
#ifdef REAL_TIME_DEBUGprintk("saddr:%pI4 sport:%u  dport:%u   tot_byte:%#x  time:%lu %09lu  [%lu %09lu], %u %u\n",&inet->saddr,ntohs(inet->sport),ntohs(inet->dport),delta_seq,(unsigned long)tsval.tv_sec,(unsigned long)tsval.tv_nsec,(unsigned long)ttot.tv_sec,(unsigned long)ttot.tv_nsec,tp->pri1,tp->pri2);
#endif
#endif
}

好了,我们来看一下测试效果。

测试

如果你用curl,ab,wget去自己搭建的WEB服务器上下载一个文件:

客户端:
[root@localhost ~]# curl http://1.1.1.2/big10 >/dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9765k  100 9765k    0     0  1210k      0  0:00:08  0:00:08 --:--:-- 1210k

WEB服务器上dmesg信息:
saddr:1.1.1.2 sport:80  dport:60463   tot_byte:0x989783  time:8 061474566  [8 062002622], 2 2
可以看出,客户端统计的信息,服务端的连接时长,传输时长三者都是相同的,然而用浏览器下载这个big10试一下,我同样给出WEB服务器的dmesg输出:
saddr:192.168.44.100 sport:80  dport:61023   tot_byte:0x9897bc  time:8 110491001  [15 156020871], 4 4
为什么连接时间和数据传输时间会差这么多?我想这部分就是所谓的浏览器的动作所消耗的时间吧。为了确认一下,我修改了ab.c,在write_request函数之前加了个sleep(5)
得到的结果跟浏览器访问的结果一样。为了用一种更加优雅的方式确认,我还特意请教了前公司的同事(WEB高手,高性能服务器专家,PHP高手,感兴趣的可以联系我),他告诉我一个很好用的测试方法:
[root@localhost ~]# curl http://1.1.1.2/{big10,sleep.php,big10} >/dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9765k  100 9765k    0     0  1214k      0  0:00:08  0:00:08 --:--:-- 1213k
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0
100 9765k  100 9765k    0     0  1215k      0  0:00:08  0:00:08 --:--:-- 1213k

命令中的sleep.php如下:
<?php
sleep(5);
?>
服务端dmesg输出如下:
saddr:1.1.1.2 sport:80  dport:53362   tot_byte:0x1312fb2  time:16 067200380  [21 069762118], 5 5
可以看出连接时间正好比传输时间多了5s,这是一个可控的测试。事后我想让他再帮我写一个更猛的PHP,他就不理我了...估计是觉得太简单了吧,真是术业有专攻,隔行如隔山。

写在最后

够了,现在已经基本完成了本文,后面谁看到想用就用吧。很多事情需要你自己去思考,而不是大家一起讨论,讨论的前提是你已经有了哪怕是0.1版本,如果没有,讨论就是扯淡!
        虽然我比较喜欢数学,物理等理论性的东西,但我更喜欢show me the code,而不是document。你不懂,我不懂,他也不懂,大家在一起一唠嗑,大家就都懂了,这是鬼话。明确的说吧,以上写的东西都是大家讨论时被否掉的,但是事后冷静一想,不对呀,测试表明一切OK啊,到底谁错了,我不想让想法付之东流,就写了这篇...我不反对头脑风暴,但是更加认同专家型的头脑风暴,不然的话,大家都是满怀着激动的心,事事处处想挑战别人,见缝插针,我想这不是恶意,而是氛围所导致。
        本无意参与的人只是提一点小意见,结果就引发了所有人开始狂喷啊狂喷,毫无意义,毫无结果,理智在消退,胜利才是关键,只要有人提出一个方案,就会有人否定,什么都不对,什么都不妥,但是事实其实并没有这么恶劣。各国的领导人在记者招待会的表现我想大家都看到过,最佳的方式就是闭口不言,不然会被愤怒者扔鞋。在某种意义上,“挑战”是一个贬义词,它会扰乱你的思考,混淆你的视听,让你为了应对挑战举手投足而错乱,然后散会后,80%的人在整理好自己的思路后会发现自己并没有错。

        最后我想说几点关于规避挑战的问题,如果有人对你所述的细节不理解,那么就会有人追问,如果你面对他时没有气场,那你无疑会被引入他的思路,然后你就彻底乱了,大家都有过这样的经历,我试举出几例:
1.面试的时候
如果你再某方面你不是专家,就不要胡扯,不然被问起来会非常尴尬。面试官就在你面前,可能他也不懂,但是就是气场比你强,你怎么办呢?
2.对待项目先斩后奏的时候
我切身的体会,几年前我觉得领导的方法不对,我按着自己的想法做事,幸运的是,我成功了。但是成功的秘诀就是快速拿出你的1.0版本,而不是去跟他讨论方案。皇帝让将军开会讨论如何擒敌,将军逃避会议,并且不辞而别杳无音信,最好的办法就是,带敌将的头回来,一切都好说。
3.被老婆查手机的时候
也是我切身的体会。被查手机的时候,即便什么都没有发生,我依然觉得很慌张,这种神情被老婆看到,不断的挑战就开始了,其实我什么都没有做,但是回答起来还是略微的语无伦次,这是为什么?难道我错了吗?没有!关键在气场!气场不足,没错也变有错了,对方会说,没有问题你干嘛紧张!
4.跟别人借钱的时候
这个话题不多说,借一次钱你就明白了。
最后的最后,现在是2016/06/25 07:53,我从凌晨3点多开始写这个,到了现在,中间有一些演算的过程,还拉了一脬屎。我为什这么早起来,其实我本来想5点半起床的,无奈昨晚女儿狂蹿我三脚,一脚在肚子,一脚在太阳穴,一脚在肋骨...我无法忍受,只能半夜爬起来写点东西了...爆炸!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. android开发中使用GZIP压缩传输

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML ,CSS,Javascript , Text ,它可以节省 40% 左右的流量。更为重要的是,它可以对动态生成的,…...

    2024/4/20 23:35:32
  2. spring boot + nginx 实现负载均衡 配置

    在项目中创建3个配置文件application-dev.yml 端口:8090application-test.yml 端口:8091application-prod.yml 端口:8092maven编译jar包cmd 启动3个项目命令分别为java -jar 项目.jar --spring.profiles.active=testjava -jar 项目.jar --spring.profiles.active=devjava -…...

    2024/5/6 8:33:26
  3. 19个综合编程学习教程网站

    综合编程学习教程网站:1.[菜鸟教程](http://www.runoob.com/) 介绍:对新手很友好的学习各类编程语言的免费网站,可能是新手用的最多的。 评分:❤❤❤❤❤2.[极客学院wiki](http://wiki.jikexueyuan.com/) 介绍:这个wiki比菜鸟教程更加专业,学院课程收费,但wiki上教程免费…...

    2024/5/4 12:56:37
  4. 关于Windows Mobile手机视听电脑视音频的程序实现(一)

    心情不好,突然想写博客了,嘿嘿!其实这一个程序是差不多一年前实现的,那时正好着手一个项目,同时后来也因为这一个项目买了一款多普达手机,呵呵!这一个项目大概实现这么一个功能:电脑(服务器端)安装一个用于抓取摄像头与麦克风的数据,Windows Mobile手机客户端通过无…...

    2024/4/20 23:35:28
  5. 微信公众平台使用的富文本编辑器(ueditor)

    2019独角兽企业重金招聘Python工程师标准>>> 微信公众平台UEditor微信公众平台所使用的富文本编辑器也是ueditor,只是微信在上面做了一些样式修改和功能扩展,微信所使用的样式比官方的更简洁好看。这两天把微信所使用的样式做成了ueditor的扩展主题(微信是直接修…...

    2024/4/28 3:54:17
  6. 微服务网关Zuul负载均衡

    一、基本环境搭建一个EurekaServer一个zuul网关三个消费者 二、创建消费者05-consumer-8080(1)创建项目(2)依赖<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht…...

    2024/4/20 8:31:31
  7. 少儿编程入门教程合集

    原文:https://www.kidscoding8.com/425.html 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验 少儿编程Scratch第二讲:奇妙的接球小游戏 少儿编程Scratch第三讲:宇宙大战.枪战游戏 少儿编程Scratch第四讲:射击游戏的制作,克隆的奥秘 少儿编程第五讲:Scratc…...

    2024/4/25 22:45:17
  8. 利用字蛛FontSpider压缩webfont字体演示

    WebFont 技术可以让网页使用特殊字体,它通过 CSS 的 @font-face 语句引入字体资源,使用CSS 选择器指定运用字体的文本,在通常的前端开发工作中,由于中文字体文件普遍都好几M,尤其像是移动端项目,加载完整的字体文件不太现实,考虑到性能问题,可以选择使用font-spider对字…...

    2024/5/6 12:25:22
  9. 心动网络的前世今生

    前几天在知识星球里发了几张照片,12月12日,见证了心动网络港股上市的历程。请忽略裤脚的问题,想想也值得说几句。心动网络创始人黄一孟,戴云杰,如果从网上的交流开始来算,认识大概超过15年,如果从现实交流来说,也应该有14年左右的历史。最早他们的产品是电驴的中文版本…...

    2024/4/20 23:35:23
  10. nginx与IIS服务器搭建集群实现负载均衡(二)

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan【前言】在《架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)》中小编简单的讲解了Nginx的原理!俗话说:光说不练假把式。接下来,小编就和大家一起来做个小Demo来体会一下Nginx的神奇之处。【准…...

    2024/4/20 23:35:22
  11. 自学编程教程大全

    编程教程自学编程网(zxbcw.cn)提供了最全的编程技术基础教程, HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。回复关键词,即可获取相应教程链接哦。关键字回复内容sqlSQL 教程mysql MySQL 教程ajaxAjax 教程appmlAppML 教程phpPHP教程…...

    2024/5/6 6:55:56
  12. 基于已有项目整合webpack配合babel支持es6转码压缩

    需求:在已有的项目基础上整合webpack,babel支持es6转码压缩想要单独使用请参考1.单独使用webpack压缩代码[https://segmentfault.com/a/1190000005742037](https://segmentfault.com/a/1190000005742037)2.单独使用babel进行es6转码es5[http://www.cnblogs.com/yuanbo88/p/63…...

    2024/4/20 23:35:20
  13. 编程 视频教程

    1,2018 最新C++全套视频 从入门到高级 链接:https://pan.baidu.com/s/18wytI3MfSwMFMOfcVVvdCg 密码:qy6q 链接:专用播放器https://pan.baidu.com/s/1SwINdYU2JhQmpY07T4iQew 密码:lte2 2,2018 java全套视频 从入门到高级 链接:https://pan.baidu.com/s/1ChAXvE4vfeyk4e…...

    2024/4/20 23:35:19
  14. Apache实现负载均衡

    在某些场景中,我们需要在前端放置一个Apache作为负载均衡器,后台有若干台Apusic或者其它的类似于Tomcat/WebLogic等应用服务器,客户端发送到Apache的请求,将被分配到后台的这些真正完成请求的服务器上。本文描述如何使用Apache作为负载均衡器的方法。我们假设Apahce安装在 …...

    2024/5/4 15:03:21
  15. 前端技巧(一)-----Chrome修改别人网站上的js并执行(仅限未压缩的js)

    应用场景有时候我们需要对别人的网页 或者 自己已经发布的网页进行 一些js调试。这时候我们是无法修改源代码运行的。但是在Chrome的console中是可以修改运行的。(仅限未压缩的js)步骤F12 在Sources里面找到你的JS文件 这个时候直接在js文件里修改 保存是没有用的,无法生效。…...

    2024/5/6 12:11:15
  16. Paper之ICASSP&IEEEAUDIOSPE:2018~2019年ICASSP国际声学、语音和信号处理会议&IEEE-ACM T AUDIO SPE音频、语音和语言处理期刊最佳论文简介及其解读

    Paper之ICASSP&IEEEAUDIOSPE:2018~2019年ICASSP国际声学、语音和信号处理会议&IEEE-ACM T AUDIO SPE音频、语音和语言处理期刊最佳论文简介及其解读目录ICASSP国际声学、语音和信号处理会议&IEEE-ACM T AUDIO SPE音频、语音和语言处理期刊简介...

    2024/5/6 5:23:24
  17. 编程视频资源教程汇总

    本人整理了一些编程视频资源,方便大家查询和学习,本篇会持续更新,内容横跨前端,后端,包括但不限于数据结构,Python,Java,redis,Kafka,Javascript,C++等等。感兴趣的可以收藏下~原文地址,也就是我的个人博客~上面有很多分享链接,可以上去看下:https://darylliu.…...

    2024/4/25 3:52:28
  18. 简单理解集群、分布式和负载均衡的概念

    集群概念集群通信系统是一种用于集团调度指挥通信的移动通信系统,主要应用在专业移动通信领域。该系统具有的可用信道可为系统的全体用户共用,具有自动选择信道功能,它是共享资源、分担费用、共用信道设备及服务的多用途、高效能的无线调度通信系统。是指一组独立的计算机系…...

    2024/4/20 21:17:47
  19. 常见的图像文件格式 无损压缩

    常见的图像文件格式 一、BMP格式 BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格 式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的 Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是 包含的图像信…...

    2024/5/5 14:11:02
  20. 免费提供各种编程语言视频教程资料!(福利!)

    免费提供各种编程语言视频教程资料!(福利!)如何上手一门新的语言,学习一门新的技术,无论你的方法是什么,我相信很多人都跟着视频教程学习过,视频教程有种泛娱乐的形式,所以比较适合入门,我们也更容易接受,一套好的视频教程能让我们快速入门并且学到我们想要的知识!…...

    2024/4/20 23:35:17

最新文章

  1. SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

    若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…...

    2024/5/6 16:03:00
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. 整理的微信小程序日历(单选/多选/筛选)

    一、日历横向多选&#xff0c;支持单日、双日、三日、工作日等选择 效果图 wxml文件 <view class"calendar"><view class"section"><view class"title flex-box"><button bindtap"past">上一页</button&…...

    2024/5/5 8:50:30
  4. [实战经验]Mybatis的mapper.xml参数#{para}与#{para, jdbcType=BIGINT}有什么区别?

    在MyBatis框架中&#xff0c;传入参数使用#{para}和#{para, jdbcTypeBIGINT}的有什么区别呢&#xff1f; #{para}&#xff1a;这种写法表示使用MyBatis自动推断参数类型&#xff0c;并根据参数的Java类型自动匹配数据库对应的类型。例如&#xff0c;如果参数para的Java类型是Lo…...

    2024/5/4 11:09:35
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/6 9:21:00
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57