速度优化 - 调谐LINUX网络性能之调谐方法概述

嵌入式FTP服务器性能调优:从11MB/s到73MB/s的实战指南 在嵌入式系统开发中,网络文件传输是连接设备与外界的关键桥梁,其性能直接影响数据交换效率。FTP协议作为经典的应用层协议,因其简单可靠,常被用于嵌入式设备的文件管理。其工作原理基于TCP连接,通过命令和数据通道实现可靠传输。在资源受限的嵌入式环境中,实现高性能FTP服务器的技术价值在于最大化利用硬件潜力,满足工业数据采集、远程固件升级等实时性要求高的应用场景。本文聚焦于在TI-RTOS平台上,通过系统性调优手段,如调整TCP缓冲区大小、配置中断聚合等,将FTP服务器吞吐量从初始的约11MB/s显著提升至73M 阅读详情
网络服务器由于要同时为多个客户提供服务,就必须使用某种方式来支持这种多任务的服务方式。一般情况下可以有三种方式来选 择,多进程方式、多线程方式及异步方式。其中,多进程方式中服务器对一个客户要使用一个进程来提供服务,由于在操作系统中,生成一个进程需要进程内存复制 等额外的开销,这样在客户较多时的性能就会降低。为了克服这种生成进程的额外开销,可以使用多线程方式或异步方式。在多线程方式中,使用进程中的多个线程 提供服务,由于线程的开销较小,性能就会提高。事实上,不需要任何额外开销的方式还是异步方式,它使用非阻塞的方式与每个客户通信,服务器使用一个进程进 行轮询就行了。异步方式下,多个任务之间的调度是由服务器程序自身来完成的,而且一旦一个地方出现问题则整个服务器就会出现问题,不在讨论的范围内。增大 系统线程的数量:限制线程的数量的因素很多,主要有进程数量的限制,内存大小的限制,mutex/semaphore/shm/ipc的限制;一般情况下 先增大进程最大数,再扩充内存,在增大线程最大数,而增大线程最大数的方法很简单,只需改变glibc中两处即可:线程最大数和线程堆栈区的大小;线程最 大数的增加是以进程的异步I/O性能下为代价;所以需要加以平衡。

络配置文件中有用的内容


1. 对于数据库而言,增大共享内存段和信号量的多少,对数据传输效率的提高起到很重要的作用;

方法:只需编辑文件linux/include/linux/sem.h和linux/include/asm-i386/shmparam.h即可。

2. 先增大进程最大数,再扩充内存,再增大线程最大数,而增大线程最大数的方法很简单,只需改变glibc中两处即可:线程最大数和线程堆栈区的大小;

3. 把"/etc/inittab"文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

编辑inittab文件(vi /etc/inittab)把这一行:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now



改为:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now



用下面的命令使改变生效:

[root@deep]# /sbin/init q



4. /etc/host.conf 文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个"/etc/host.conf"的示例:

order bind,hosts :指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询"/etc/hosts"文件(也可以相反)。

可以在该文件后加上以下两句:

multi on:指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。

ospoof on:指不允许对该服务器进行IP地址欺骗,以提高服务器的安全性。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。

可调谐的Linux内核网络参数


ICMP相关内核配置参数

概述:通常我们使用icmp包来探测目的主机上的其它协议(如tcp和udp)是否可用。比如包含"destination unreachable"信息的icmp包就是最常见的icmp包。

(1) icmp_destunreach_rate:设置内容为"Destination Unreachable"icmp包的响应速率。设置值应为整数。

应用实例: 假设有A、B两部主机,首先我们在主机A上执行以下ipchains语句:

ipchains -A input -p icmp -j REJECT



这里的REJECT和DENY不同,DENY会丢掉符合条件的包如同没有接收到该包一样,而REJECT会在丢掉该包的同时给请求主机发回一个"Destination Unreachable"的icmp。

然后在主机B上ping主机A,这时候我们会发现"Destination Unreachable"icmp包的响应速度是很及时的。接着我们在主机A上执行:

echo "1000" > /proc/sys/net/ipv4/icmp_destunreach_rate



也即每10秒钟响应一个"Destination Unreachable"的icmp包。

这时候再从主机B上ping主机A就会发现"Destination Unreachable"icmp包的响应速度已经明显变慢,我很好奇的测试了一下,发现刚好是每10秒响应一次。

(2)icmp_echo_ignore_broadcasts:设置是否响应icmp echo请求广播,设置值应为布尔值,0表示响应icmp echo请求广播,1表示忽略。

注意:windows系统是不响应icmp echo请求广播的。

应用实例:

在我的RedHat6.x和RedHat7上该值缺省为0,这样当有个用户ping我的服务器所在的网段的网络地址时,所有的linux服务器就会响应,从而也能让让该用户得到我的服务器的ip地址,可以执行

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts



来关闭该功能。从而防止icmp风暴,防止网络阻塞。

(3)icmp_echoreply_rate:设置系统响应icmp echo请求的icmp包的响应速度,设置值为整数。

应用实例:

假设有A、B两部主机,首先我们在主机B上ping主机A,可以看到响应很正常,然后在主机A上执行

echo "1000" > /proc/sys/net/ipv4/icmp_echoreply_rate



也即每10秒钟响应一个icmp echo请求包。然后再ping主机A就可以看到响应速度已经变成10秒一次。

最好合理的调整该参数的值来防止icmp风暴。

(4)icmp_echo_ignore_all:设置系统是否忽略所有的icmp echo请求,如果设置了一个非0值,系统将忽略所有的icmp echo请求。其实这是icmp_echoreply_rate的一种极端情况。参数值为布尔值,1:表示忽略,0:表示响应。

(5)icmp_paramprob_rate:当系统接收到数据报的损坏的ip或tcp头时,就会向源发出一个包含有该错误信息的icmp包。这个参数就是用来设置向源发送这种icmp包的速度。当然,在通常情况下ip或tcp头出错是很少见的。参数值为整数。

(6) icmp_timeexceed_rate:数据报在网络上传输时,其生存时间(time to live)字段会不断减少,当生存时间为0时,正在处理该数据报的路由器就会丢弃该数据报,同时给源主机发送一个"time to live exceeded"的icmp包。该参数就是用来设置这种icmp包的发送的速度。当然,这通常用于充当路由器的linux主机。

IP相关内核配置参数

linux内核网络参数中关于ip的配置参数通常是用来定义或调整ip包的一些特定的参数,除此之外还定义了系统的一些网络特性。

(1) ip_default_ttl:设置从本机发出的ip包的生存时间,参数值为整数,范围为0~128,缺省值为64。在windows系统中,ip包的生 存时间通常为128。如果你的系统经常得到"Time to live exceeded"的icmp回应,可以适当增大该参数的值,但是也不能过大,因为如果你的路由坏路的话,就会增加系统报错的时间。

(2) ip_dynaddr:该参数通常用于使用拨号连接的情况,可以使系统能够立即改变ip包的源地址为该ip地址,同时中断原有的tcp对话而用新地址重新 发出一个syn请求包,开始新的tcp对话。在使用ip欺骗时,该参数可以立即改变伪装地址为新的ip地址。该参数的参数值可以是:

1:启用该功能
2:使用冗余模式启用该功能
0:禁止该功能



应用实例:在使用ipchains配置ip欺骗带动局域网共享一个ppp连接上网时,有时会出现刚开时连接一个站点连不通,再次刷新又可以连接的情况,这时候就可以设置该参数的值为1,从而立即改变伪装地址为新的ip地址,就可以解决这类问题。命令为:

echo "1" > /proc/sys/net/ipv4/ip_dynaddr



(3)ip_forward:可以通过该参数来启用包转发功能,从而使系统充当路由器。参数值为1时启用ip转发,为0时禁止ip转发。注意,我们可以在单网卡或双网卡的主机上实现ip转发。

应用实例:

假设我们使用一部装有双网卡的linux主机充当防火墙,这时候我们就必须执行以下命令来打开ip转发功能:

echo "1" > /proc/sys/net/ipv4/ip_forward



(4) ip_local_port_range:设置当本地系统向外发起tcp或udp连接请求时使用的端口范围。设置值为两个整数,缺省为"1024 4999"。

应用实例:

echo "1450 6000" > /proc/sys/net/ipv4/ip_local_port_range



tcp相关内核配置参数

通过tcp配置参数可以控制tcp会话过程中的各个方面。

(1) tcp_fin_timeout:在一个tcp会话过程中,在会话结束时,A首先向B发送一个fin包,在获得B的ack确认包后,A就进入FIN WAIT2状态等待B的fin包然后给B发ack确认包。这个参数就是用来设置A进入FIN WAIT2状态等待对方fin包的超时时间。如果时间到了仍未收到对方的fin包就主动释放该会话。参数值为整数,单位为秒,缺省为180秒。

(2) tcp_syn_retires:设置开始建立一个tcp会话时,重试发送syn连接请求包的次数。 参数值为小于255的整数,缺省值为10。假如你的连接速度很快,可以考虑降低该值来提高系统响应时间,即便对连接速度很慢的用户,缺省值的设定也足够大了。

(3) tcp_window_scaling:设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。Tcp/ip 通常使用的窗口最大可达到65535字节,对于高速网络,该值可能太小,这时候如果启用了该功能,可以使tcp/ip滑动窗口大小增大数个数量级,从而提 高数据传输的能力。

针对每一网络接口的内核网络参数

通过针对每一网络接口的内核网络参数,你可以为诸如eth0、eth1等具体的网络接口指定响应的内核网络参数。注意:/proc/sys/net/ipv4/conf/all/下的参数将应用于所有的网络接口。

(1) accept_redirects:该参数位于/proc/sys/net/ipv4/conf/DEV/accept_redirects(DEV表示 具体的网络接口),如果你的主机所在的网段中有两个路由器,你将其中一个设置成了缺省网关,但是该网关在收到你的ip包时发现该ip包必须经过另外一个路 由器,这时这个路由器就会给你发一个所谓的"重定向"icmp包,告诉将ip包转发到另外一个路由器。参数值为布尔值,1表示接收这类重定向icmp 信息,0表示忽略。在充当路由器的linux主机上缺省值为0,在一般的linux主机上缺省值为1。建议将其改为0,或者使用"安全重定向"(见下文) 以消除安全性隐患。

(2) log_martians:将包含非法地址信息的ip包记录到内核日志。参数值为布尔值。

应用实例:

上面我们讲过rp_filter反向路径过滤参数,同时我们可以执行下面的语句

echo "1" > /proc/sys/net/ipv4/conf/all/log_martians



然后就可以将进行ip假冒的ip包记录到/var/log/messages。

(3) forwarding:启用特定网络接口的ip转发功能。参数值为布尔值,1表示进行记录。

应用实例:

echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding



(4) accept_source_route:是否接受含有源路由信息的ip包。参数值为布尔值,1表示接受,0表示不接受。在充当网关的linux主机上缺省值为1,在一般的linux主机上缺省值为0。从安全性角度出发,建议你关闭该功能。

(5) secure_redirects:前面我们已经提到过"安全重定向"的概念,其实所谓的"安全重定向"就是只接受来自网关的"重定向"icmp包。该参数就是用来设置"安全重定向"功能的。参数值为布尔值,1表示启用,0表示禁止,缺省值为启用。

(6) proxy_arp:设置是否对网络上的arp包进行中继。参数值为布尔值,1表示中继,0表示忽略,缺省值为0。该参数通常只对充当路由器的linux主机有用。

改变有关系统缺省参数限制



1. _SHM_ID_BITS:在/usr/src/linux/include/asm/shmparam.h文件中定义了该值;

作用:定义共享内存段表识的数量;其缺省值为7,变化范围:1-128;

调谐:可将该值增大到9,需重新编译内核;

2. MSGMNI:/proc/sys/kernel/msgmni文件中定义了该值;

作用:该值定义了消息队列的最大长度;要使db2(7.1版)正常运行,其最小值为128;

对于高负荷的DB2服务器,可将该值调整为 >= 1024;

调谐:对于2.4.6版本的内核,其缺省值为16;可用以下三中方法改变该值

(1) bash# sysctl -w kernel.msgmni=128

(2) bash# sysctl -w kernel.msgmni=128

(3) 如果要在系统启动时改变该值,可在/etc/sysctl.conf文件中加入以下几句:

# Sets maximum number of message queues to 128
# Set this to 1024 or higher on production systems
kernel.msgmni = 128



(用ipcs -l 命令来查看当前ipc 参数的各种设置)

3. NR_TASKS:/usr/src/linux/include/linux/tasks.h文件中定义了该

MAX_TASKS_PER_USER被定义为NR_TASKS/2;linux 将DB2的每个实例看作用户,每个连结一般都使用一个进程,而每个实例的最大连结数被限制为NR_TASKS/2;尽管2.4的内核对该值无限制,但有linux该缺省值仍为512;

调谐:>= 1024, 重新编译内核;

4. SEMMNI:/usr/src/linux/include/linux/sem.h 文件中定义了该值;

作用:该值定义了linux所能支持的最大信号量表识;

调谐:其缺省值为128,增大到1024;

从IPV4过渡到IPV6



尽管IPv6比IPv4具有明显的先进性,要想在短时间内将Internet和各个企业网络中的所有系统全部从IPv4升级到 IPv6是不可能的。为此,做为IPv6研究工作的一个部分,IETF制定了推动IPv4向IPv6过渡的方案,其中包括三个机制:兼容IPv4的 IPv6地址、双IP协议栈和基于IPv4通道的IPv6。

兼容IPv4的IPv6地址是一种特殊的IPv6单点广播地址,一个 IPv6节点与一个IPv4节点可以使用这种地址在IPv4网络中通信。这种地址是由96个0位加上32位IPv4地址组成的,例如,假设某节点的 IPv4地址是192.56.1.1,那么兼容IPv4的IPv6地址就是:

0: 0:0:0:0:0:C038:101。



双 IP协议栈是在一个系统(如一个主机或一个路由器)中同时使用IPv4和IPv6两个协议栈。这类系统既拥有IPv4地址,也拥有IPv6地址,因而可以 收发IPv4和IPv6两种IP数据报。也就是用两套,需要使用IPv4的时候就使用IPv4,需要使用IPv6的时候就使用IPv6。

与双IP协议栈相比,基于IPv4通道的IPv6是一种更为复杂的技术,它是将整个IPv6数据报封装在IPv4数据报中,由此实现在当前的IPv4网络 (如Internet)中IPv6节点与IPv4节点之间的IP通信。基于IPv4通道的IPv6实现过程分为三个步骤:封装、解封和通道管理。封装,是 指由通道起始点创建一个IPv4包头,将IPv6数据报装入一个新的IPv4数据报中。解封,是指由通道终结点移去IPv4包头,还原原始的IPv6数据 报。通道管理,是指由通道起始点维护通道的配置信息。IPv4通道有四种方案:路由器对路由器、主机对路由器、主机对主机、路由器对主机。

当进行通信的两个主机都有兼容IPv4的IPv6地址时,数据发送方主机将建立一个主机对主机通道。通道起始点(数据发送方主机)确定数据接收方主机就是 通道终结点,并自动从其兼容IPv4的IPv6地址中抽取后32个地址位以确定通道终结点的IPv4地址,这种类型的通道被称为自动通道 (automated tunneling)。

双IP协议栈和基于IPv4通道的IPv6网络使IPv4网络能够以可控的速度向 IPv6迁移。在开始向IPv6过渡之前,必须设置一个同时支持IPv4和IPv6的新的DNS服务器。有关设置或关于IPv6更多的详细内容可访问 IPv6相关网站。我们在这里仅为在Linux下使用IPV6提供一种简单的理论叙述。
【信息科学与工程学】【数据中心】 第十九篇 MFU的优化提升方法03 等级模块类型子模块子子模块功能描述MFU影响因子优化优先级L0​算术逻辑单元(ALU)标量ALU整数ALU标量整数运算α_int = 0.1-0.3中浮点ALU标量浮点运算α_fp_scalar = 0.2-0.4中向量处理单元(VPU)SIMD单元128-bit SIMD短向量运算β_SIMD128 = 0.3-0.6高256-bit SIMD中向量运算β_SIMD256 = 0.4-0.7高512-bit SIMD长向量运算β_SIMD512 = 0.5-0.8极高矩阵处理单元(MPU)Tensor C 阅读详情

相关推荐

【信息科学与工程学】【运营科学】第二篇 C4信息与通信网络运营 (C4) ——数据中心网络运营06

13 | 司法诉讼 | 原告律师 | 争取和解优势 | 证据披露的序贯博弈 | 策略性证据释放 | 持有证据集E = {强证据e_s, 中证据e_m, 弱证据e_w}。设公众原有认知人格向量为 Pold​​=(p1​,p2​,...,pk​), 其中p_i为负面特质(如“不敬业”)。危机后, 通过行为序列 {At​}和宣传, 将公众认知向新向量 Pnew​​引导, 使得在关键维度上, Pnew​​与 Pold​​的余弦相似度降低, 并与一个正面的、可接受的“原型”(如“浪子回头”、“慈父”)对齐。

weixin_49199313的博客 1483

嵌入式Linux下tc358743的驱动设计

设备树配置的名字得和这个驱动名称一致,就是compatible属性tc358743还是tc358749。总之,这个结构体用于组织和管理TC35874X设备的各种状态信息和控制参数。因为内核已经有了这个官方给的驱动,不需要再折腾,所有直接menuconfig配置上就行了。它包含了一系列成员变量和控件,用于管理并存储TC35874X设备的状态。等,其中一些成员变量与设备的配置、控制、信号处理等相关。最重要的就是probe函数了,基本的初始化配置都是在这里实现的。可以看出tc358743的功能还是很强大的。

huntenganwei的博客 3012

【信息科学与工程学】计算机科学与自动化——第三十五篇 调度理论和调度算法01——资源调度算法

算法逻辑

weixin_49199313的博客 686

linux网络数据包优化,Linux性能优化(八)——网络测试工具

一、ping1、ping简介PING是一个网络工具,用来测试与网络主机俄连通性。PING通过发送ICMP ECHO_REQUEST数据包到网络主机,并显示响应情况,程序会按时间和成功响应的次数估算丢失数据包率。ping命令每秒发送一个ICMP数据包并且为每个接收到的响应打印一行输出。ping命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成后显示一个简要总结。ping命令在程序超时...

weixin_42414213的博客 539

【信息科学与工程学】【通信工程】 第一百四十四篇 城域云网中的数学分析01

(为规模/营收/排名做无商业实质贸易、多层壳、无关多元、低效并购);(中纪委归纳的"利益输送/设租寻租/靠企吃企/影子公司/期权腐败/旋转门"等)。| 1 |​ | 供应链贸易/大宗商贸 | 钢铁/有色/煤炭/化工/粮油/建材等大宗供应链 | 央企二三级贸易平台、地方国企商贸公司 |:国资委(主业核定/经营业绩考核)/集团经营计划:审计/风控/巡视巡察/违规经营投资追责46号令 | 往往是;资金链与注册壳往往集中在"注册便利地" |:主业清单管理+贸易"十不准"+货权/物流/票据"三单匹配"穿透核验。

weixin_49199313的博客 392

Linux-xanmod-cacule-uksm-cjktty:性能与安全优化的内核定制版

XanMod内核是Linux社区中的一个相对较新但发展迅速的内核项目。它起源于开发者对于内核性能和易用性改进的需求,通过在内核中集成最新的补丁和优化来实现更快、更平滑的系统体验。XanMod内核特别注重在保持高度兼容性的同时提升系统的整体性能,尤其是在游戏和多媒体处理方面,吸引了众多希望在日常使用中获得更好性能的用户。自推出以来,XanMod内核通过不断吸收社区贡献和集成最新的稳定版本的Linux内核改进,已成为许多高性能计算和游戏服务器的首选。

weixin_30798867的博客 583

使用ping时遇到 Time to live exceeded

某日出现ping10.172.150.100正常,但是ping10.172.150.254出现Time to live exceeded,原因是网卡2网线断开连接,ping10.172.150.100时,从网关192.168.5.254,该网关属于第三方厂家,不清楚具体规则,但是通过该网关可以路由到10.172.150.100设备,具体原理不甚了解。网卡2路由到网关10.172.150.254,可以ping通该网关下的设备1:10.172.150.100。网卡1地址为192.168.5.100。

daze_scarecrow的博客 6537

【学习体会】Lighttools8.4.0:矩形阵列光源+条形光源的光学仿真分析

在solidworks中设计了条形光源的基本结构: 由32*6个矩形led组成矩形光源阵列,如下所示 另存为step文件后,导入lighttools中,这里要设置模型的光学属性为:吸收体(机械) 因为我们设计的光源模型是一个整体,我们不能单个面的设置光源,比如说, 这样做的话并不会是这个面设置为光源,而是会把做一个模型都变成一个光源,如下 这显然不是我们想要的 那么,我们就在led位置上放置一个矩形面光源, 这样我们就放置好了一个面光源, 但是问题是,还有191...

LeonJin的博客 1万+

Time to live exceeded

当对网络上的主机进行ping操作的时候,本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。当TTL被扣到0时,最后一个经手的路由器就会给源主机发来一个Time to live exceeded的ICMP信息。使用traceroute IP。

qq_42475191的博客 8257

网络调试和分析工具 Proxyman Premium

它支持MacOS、iOS和iPadOS等操作系统,提供丰富的功能,如查看和编辑HTTP/HTTPS请求和响应、设置断点、过滤请求等。Proxyman Premium还支持WebSocket、GraphQL和gRPC等现代网络协议调试,并通过直观且图形化的操作界面,使用户能高效地监控和操纵网络数据流。此外,它还具备多种高级功能,如WebSocket支持、DNS欺骗、自定义SSL证书等,为开发人员提供极大的便利。同时,由于软件版本更新和界面调整,上述步骤可能会有所变化,建议您参考最新版本的官方文档进行操作。

llhf688的博客 2001

Python 驱动 CAD 二次开发:从零搭建自动化绘图环境

本文详细介绍了如何利用Python进行CAD二次开发,实现自动化绘图。通过win32com库建立Python与CAD软件的通信,文章从环境搭建、连接CAD、操作文档到核心绘图与批量处理,提供了完整的实战指南。该方法能显著提升机械设计、建筑绘图等领域的重复性工作效率,将创造力从繁琐劳动中解放出来。

weixin_29093169的博客 1232

调谐LINUX网络性能之调谐方法概述(转)

调谐LINUX网络性能之调谐方法概述(转)[@more@]在《调谐LINUX网络性能之调试工具篇》和《调谐LINUX网络性能之网络配置文件详解》两篇文章中,我们介绍了route、netstat、tcpdump三种网络调谐测试工具...

232

华为OD机试 - 不含101的数(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。小明在学习二进制时,发现了一类不含101的数,也就是:现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?输入的唯一一行包含两个正整数。输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。8 1668 → “1000”

学Java,找哪吒 1250

最近在调整网卡速度,有几篇文章不错,特转贴至此。

如何在Linux下调整网卡的工作模式 linux宝库 收集整理  作者:linux宝库  时间:2007-08-24   现在的网卡一般都是10/100M自适应工作模式,在配置网卡参

为了理想而奋斗 2042

sec_uid

webcast_uid转sec_uid,webcast_uid转uid,webcast_uid转dy号

m0_56967679的博客 4421

电商行业分析爬虫:抓取行业数据,进行行业分析

电商行业数据分析对于市场研究、竞争分析和商业决策至关重要。通过爬取电商平台的数据,我们可以深入了解市场动态、消费者行为和商品销售情况。本文将介绍如何构建一个电商行业分析爬虫,抓取商品信息、销售数据和用户评价等,并进行数据分析。

u014481728的博客 1628

下载速度优化全解析:从带宽原理到实战配置的八步排查法

在计算机网络中,带宽和吞吐量是衡量数据传输能力的基础概念。带宽指理论最大传输速率,而实际吞吐量受延迟、丢包率、协议效率等多重因素影响,往往低于理论值。其技术价值在于帮助用户理解网络性能的瓶颈所在,从而进行有效优化。在实际应用场景中,无论是HTTP/HTTPS的客户端-服务器模式,还是P2P点对点模式,下载速度都受到资源服务器、网络路径、本地硬件及软件配置的综合制约。例如,P2P下载依赖做种者数量和网络质量,而**磁盘IO**和**连接数**设置不当会直接导致吞吐量下降。本文聚焦于通过系统化排查与配置,解决从

weixin_30650039的博客 299

Happycapy深度解析:AI智能体的“iPhone时刻“来了?

从理论到实践深度解析了融合OpenClaw和ClaudeCode优点的超强智能体工具Happycapy

program哲学 457

linux

2004年5月19日   19:53linux系统优化参考资料:linux Debian 参考手册http://qref.sourceforge.net/Debian/reference/reference.zh-cn.html#contents   linux系统性能调谐http://www-900.ibm.com/developerWorks/cn/linux/management/tun

kingsky23的专栏 1176

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SDR++:现代软件定义无线电的终极开源解决方案

在当今数字信号处理技术飞速发展的时代,软件定义无线电(SDR)已经成为无线电爱好者和专业工程师的必备工具。SDR++作为一款跨平台的开源SDR软件,以其简洁高效的架构、强大的硬件兼容性和直观的用户体验,正在重新定义SDR应用的开发和使用标准。无论您是业余无线电爱好者、通信工程师还是学术研究人员,SDR++都能提供从入门到专业级的完整无线电信号处理能力。 ## 为什么SDR++成为无线电爱好者的首

gitblog_00368的博客 874

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

技术揭秘:OpenCore Legacy Patcher如何让老旧Mac重获网络新生

对于2007-2017年间的老旧Mac用户来说,升级macOS后最令人沮丧的莫过于WiFi功能失效——WPA加密网络无法连接、个人热点选项呈灰色、5GHz频段神秘消失。这些网络问题不仅影响日常使用,更让设备在无线世界中成为"数字孤岛"。OpenCore Legacy Patcher(OCLP)作为macOS非官方支持的终极解决方案,通过精巧的软件桥接技术,为这些被遗忘的硬件重新注入网络活力。 #

gitblog_00423的博客 945

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

计算机网络核心:电路、报文与分组交换技术全解析与Linux I/O多路复用实践

数据交换是计算机网络实现设备间高效通信的基础,其核心原理在于通过多路复用技术共享传输路径。电路交换采用面向连接的专线方式,时延低但利用率差;报文交换引入存储转发机制,提升了灵活性却受限于大报文处理;分组交换则将数据分割为固定大小的分组,结合统计复用技术,在灵活性与效率间取得最佳平衡,成为互联网TCP/IP协议的基石。这种细粒度的资源调度思想也深刻影响了高性能编程,例如在Linux系统中,I/O多路复用技术(如select、poll、epoll)正是为了解决单进程高效管理大量并发连接的问题而设计。通过事件驱动

weixin_34068198的博客 452

深入理解ICMP协议

ICMP概述:ICMP使用IP数据报传送。允许主机或路由器报告差错情况和提供有关异常的报告。使IP数据报转发更有效,提高交付成功的机会。 不产生ICMP差错报文的情况: 1)ICMP差错报文(但是,ICMP查询报文可能会产生) 2)目的地址是广播地址或多播地址的IP数据报。 3)作为链路层广播的数据报。 4)不是IP分片的第一片。 5)源地址不是单个主机的数据报。 目的是为了不产生广播

继学先生 6454

ping 外网报错:比如ping百度 From 192.168.0.56 (192.168.0.56) icmp_seq=3 Time to live exceeded

ping 百度正常通的情况显示如下: [root@ecs-a3b8-0206429 ~]# ping baidu.com PING baidu.com (220.181.38.148) 56(84) bytes of data. 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=50 time=27.5 ms 64 by...

wudinaniya的博客 6807
上一篇: Speed Up your Hard Disk on Linux
下一篇: linux查看磁盘空间的好方法
evanever
博客等级 码龄22年 8粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值