当前位置: 首页 > news >正文

【网络教程】Iptables官方教程-学习笔记6-IPTABLES TARGETS

一、IPTABLES TAGRETS

本章节介绍Iptables 的目标和跳转(targets and jumps),目标和跳转负责告诉规则如何处理与规则匹配部分完全匹配的包。“ACCEPT”和“DROP”是一对基础目标,他们是首先处理的。在学习目标是如何完成之前,我们先看下跳转是如何完成的。

跳转跟目标类似,但是跳转是在同一个表的链之间进行跳转。要跳转到一个特定的链,前提是该链已存在。通过“-N”命令创建一个用户定义的链,如下所示:

iptables -N tcp_packets

设置一个跳转目标如下所示:

iptables -A INPUT -p tcp -j tcp_packets

表示我们将从INPUT链跳转到tcp_packets链,并开始遍历tcp_packets链。当我们到达该tcp_packets链的末端,我们就会回到INPUT链,数据包开始从它跳转到另一个链(tcp_packets),按接下来的规则进行遍历。如果一个数据包在一个子链中被接受,它将在超集链中也被接受,并且它将不再遍历任何超集链。但是,请注意,包将以正常方式遍历其他表中的所有其他链。更多信息参考: Traversing of tables and chains【网络教程】IPtables官方教程–学习笔记3

目标(targets)是指要对有问题的包采取的操作。例如,基于我们的需求,我们可以接受或丢弃数据包。跳转到目标的操作可能会导致不同的结果,某些目标可以将导致包停止遍历上面所述的特定链和上级链,比如DROP和ACCEPT。被停止的规则将不会在链中或更高级的链中通过接下来的任一规则。其他目标可能对数据包采取行动,之后数据包将继续通过其余的规则。一个很好的例子是LOG、ULOG和TOS目标。这些目标可以记录数据包,破坏它们,然后将它们传递给同一组链中的其他规则。例如,我们可能希望这样做,以便我们还可以同时破坏特定包/流的TTL和TOS值。一些目标将接受额外的选项(使用什么TOS值等),而其他目标不一定需要任何选项——但如果我们愿意,我们可以包括它们(日志前缀,伪装到端口等)。

下面就让我们来看看有IPTABLES有哪些目标。

1.1 ACCEPT target

这个目标不需要更多的选项。一旦完全满足数据包的匹配规范,并且指定ACCEPT为目标,则接受该规则,并且不再继续遍历当前链或同一表中的任何其他链。但是请注意,在一个链中接受的数据包仍然可能通过其他表中的链传输,并且仍然可能被丢弃。ACCEPT目标没有任何特别之处,它不需要也不可能向目标添加选项。要使用这个目标,只需指定-j ACCEPT。

注意:适配于Linux 内核2.3, 2.4, 2.5, 2.6

1.2 CLASSIFY target

分类目标可以被用于分类包的方式,可以被一对不同的qdisc(queue disciplines)使用。例如,atm、cbq、dsmark、pfifo_fast、htb和prio qdisc。更多请参考: Linux Advanced Routing and Traffic Control HOW-TO

分类目标仅在mangle表的POSTROUTING 链中有效

Option–set-class
Exampleiptables -t mangle -A POSTROUTING -p tcp --dport 80 -j CLASSIFY --set-class 20:10
ExplanationThe CLASSIFY target only takes one argument, the --set-class. This tells the target how to class the packet. The class takes 2 values separated by a coma sign, like this MAJOR:MINOR. Once again, if you want more information on this, check the Linux Advanced Routing and Traffic Control HOW-TO webpage.

1.3 CLUSTERRIP target

CLUSTERIP目标用于以轮询方式创建响应相同IP和MAC地址的简单节点集群。这是一种简单的集群形式,您在参与集群的所有主机上设置一个Virtual IP (VIP),然后在每个应该响应请求的主机上使用CLUSTERIP。CLUSTERIP匹配不需要特殊的负载平衡硬件或机器,它只是在机器集群的每个主机部分上执行它的工作。它是一个非常简单的集群解决方案,不适合大型和复杂的集群,它也没有内置心跳处理,但加心跳处理也可以用脚本实现。

集群中的所有服务器都为一个虚拟IP使用一个通用的多播MAC,然后在CLUSTERIP目标中使用一个特殊的散列算法来确定哪些集群参与者应该响应每个连接。多播MAC是指以01:00:5e作为前24位的MAC地址。一个多播MAC的例子是01:00:5e:00:00:20。虚拟IP可以是任何IP地址,但在所有主机上也必须是相同的。

记住,CLUSTERIP可能会破坏SSH等协议。连接将正常进行,但是如果您尝试同一时间再次连接到同一主机,您可能连接到集群中的另一台计算机,使用不同的秘钥集,因此您的ssh客户机可能拒绝连接或给您错误。由于这个原因,这在某些协议中不能很好地工作,添加可用于维护和管理的单独地址可能是一个好主意。另一种解决方案是在参与集群的所有主机上使用相同的SSH密钥。

集群可以使用三种哈希模式进行负载平衡。第一个是只有源IP (sourceip),第二个是源IP和源端口(sourceip-sourceport),第三个是源IP、源端口和目的端口(sourceip-sourceport-destport)。第一个可能是一个好主意,你需要记住连接之间的状态,例如一个web服务器的购物车保持连接之间的状态,这种负载平衡可能会变得有点不平衡——不同的机器可能比其他机器获得更高的负载,等等——因为来自同一源IP的连接将到相同的服务器。sourceip-sourceport散列可能是一个好主意,如果您希望负载平衡稍微均匀一点,并且不必在每个服务器上的连接之间保存状态。例如,一个大型信息网页加上一个简单的搜索引擎可能是一个好主意。第三种也是最后一种散列模式sourceip-sourceport-destport可能是个好主意,因为您的主机上运行着多个服务,不需要在连接之间保留任何状态。例如,这可能是同一主机上的一个简单的ntp、dns和www服务器。因此,到每个新目的地的每个连接都将被“重新协商”——实际上没有进行任何协商,它基本上只是一个轮询系统,每个主机接收一个连接。

每个CLUSTERIP 集群在/proc/net/ipt_CLUSTERIP路径下都有一个单独的文件,文件基于虚拟IP来存放。如果虚拟IP是192.168.0.5,我们可以cat /proc/net/ipt_CLUSTERIP/192.168.0.5 来查看该相应哪个节点。为了让这台机器为另一台机器应答,我们设节点2,使用echo “+2” >>/proc/net/ipt_CLUSTERIP / 192.168.0.5。要删除它,运行echo “-2” >>/proc/net/ipt_CLUSTERIP / 192.168.0.5。

Option–new
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new …
ExplanationThis creates a new CLUSTERIP entry. It must be set on the first rule for a VIP, and is used to create a new cluster. If you have several rules connecting to the same CLUSTERIP you can omit the --new keyword in any secondary references to the same VIP.
Option–hashmode
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 443 -j CLUSTERIP --new --hashmode sourceip …
ExplanationThe --hashmode keyword specifies the kind of hash that should be created. The hashmode can be any of the following three.
sourceip
sourceip-sourceport
sourceip-sourceport-destport
The hashmodes has been extensively explained above. Basically, sourceip will give better performance and simpler states between connections, but not as good load-balancing between the machines. sourceip-sourceport will give a slightly slower hashing and not as good to maintain states between connections, but will give better load-balancing properties. The last one may create very slow hashing that consumes a lot of memory, but will on the other hand also create very good load-balancing properties.
Option–clustermac
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 …
ExplanationThe MAC address that the cluster is listening to for new connections. This is a shared Multicast MAC address that all the hosts are listening to. See above for a deeper explanation of this.
Option–total-nodes
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --total-nodes 2 …
ExplanationThe --total-nodes keyword specifies how many hosts are participating in the cluster and that will answer to requests. See above for a deeper explanation.
Option–local-node
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --total-nodes 2 --local-node 1
ExplanationThis is the number that this machine has in the cluster. The cluster answers in a round-robin fashion, so once a new connection is made to the cluster, the next machine answers, and then the next after that, and so on.
Option–hash-init
Exampleiptables -A INPUT -p tcp -d 192.168.0.5 --dport 80 -j CLUSTERIP --new --hashmode sourceip --clustermac 01:00:5e:00:00:20 --hash-init 1234
ExplanationSpecifies a random seed for hash initialization.

该目标违反了[ RFC 1812 - Requirements for IP Version 4 Routers]要求,因此要警惕可能出现的任何问题。具体来说,3.3.2节规定了一个路由器绝对不能信任另一个声称它正在使用多播mac的主机或路由器

1.4 CONNMARK target

ONNMARK目标用于在整个连接上设置标记,其方式与mark目标非常相似。然后,它可以与连接标记匹配一起使用。例如,假设我们在报头中看到一个特定的模式,我们不想只标记那个包,而是标记整个连接。在这种情况下,CONNMARK目标是一个完美的解决方案。CONNMARK目标在所有链和所有表中都可用,但请记住,nat表只由连接中的第一个包遍历,因此如果您试图将它用于这里的第一个包之后的后续包,那么CONNMARK目标将没有任何作用。它可以采用以下四种不同的选项之一。

Option–set-mark
Exampleiptables -t nat -A PREROUTING -p tcp --dport 80 -j CONNMARK --set-mark 4
ExplanationThis option sets a mark on the connection. The mark can be an unsigned long int, which means values between 0 and 4294967295l is valid. Each bit can also be masked by doing --set-mark 12/8. This will only allow the bits in the mask to be set out of all the bits in the mark. In this example, only the 4th bit will be set, not the 3rd. 12 translates to 1100 in binary, and 8 to 1000, and only the bits set in the mask are allowed to be set. Hence, only the 4th bit, or 8, is set in the actual mark.
Option–save-mark
Exampleiptables -t mangle -A PREROUTING --dport 80 -j CONNMARK --save-mark
ExplanationThe --save-mark target option is used to save the packet mark into the connection mark. For example, if you have set a packet mark with the MARK target, you can then move this mark to mark the whole connection with the --save-mark match. The mark can also be masked by using the --mask option described further down.
Option–restore-mark
Exampleiptables -t mangle -A PREROUTING --dport 80 -j CONNMARK --restore-mark
ExplanationThis target option restores the packet mark from the connection mark as defined by the CONNMARK. A mask can also be defined using the --mask option as seen below. If a mask is set, only the masked options will be set. Note that this target option is only valid for use in the mangle table.
Option–mask
Exampleiptables -t mangle -A PREROUTING --dport 80 -j CONNMARK --restore-mark --mask 12
ExplanationThe --mask option must be used in unison with the --save-mark and --restore-mark options. The --mask option specifies an and-mask that should be applied to the mark values that the other two options will give. For example, if the restored mark from the above example would be 15, it would mean that the mark was 1111 in binary, while the mask is 1100. 1111 and 1100 equals 1100.

1.5 CONNSECMARK targe

CONNSECMARK目标将SELinux安全上下文标记设置为包标记或从包标记中设置。有关SELinux的更多信息,请阅读安全增强Linux主页。该目标仅在mangle表中有效,并与SECMARK目标一起使用,其中SECMARK目标用于设置原始标记,然后使用CONNSECMARK在整个连接上设置标记。SELinux超出了本文的范围,但基本上它是对Linux的强制访问控制的一个补充。这比大多数Linux和Unix安全控件的原始安全系统更细粒度。每个对象都可以有连接到它的安全属性或安全上下文,然后在允许或拒绝执行特定任务之前,将这些属性相互匹配。此目标将允许在连接上设置安全上下文。

Option–save
Exampleiptables -t mangle -A PREROUTING -p tcp --dport 80 -j CONNSECMARK --save
ExplanationSave the security context mark from the packet to the connection if the connection is not marked since before.
Option–restore
Exampleiptables -t mangle -A PREROUTING -p tcp --dport 80 -j CONNSECMARK --restore
ExplanationIf the packet has no security context mark set on it, the --restore option will set the security context mark associated with the connection on the packet.

1.6 DNAT target

DNAT目标用于进行目的网络地址转换(Destination Network Address Translation)。如果一个数据包被匹配,并且这是规则的目标,那么该数据包以及同一流中的所有后续数据包将被翻译,然后路由到正确的设备、主机或网络。这个目标可以是非常有用的,例如,当你有一个主机在局域网内运行你的web服务器,但没有真正的IP给它可以在互联网上工作。然后你可以告诉防火墙将所有的数据包转发到它自己的HTTP端口上,到局域网内的真正的web服务器上。我们也可以指定一个完整的目的IP地址范围,DNAT机制将为每个流随机选择目的IP地址。因此,通过这样做,我们将能够处理一种负载平衡。注意,DNAT目标仅在nat表中的PREROUTING和OUTPUT链中可用,以及从这些列出的链中调用的任何链中可用。注意,包含DNAT目标的链不能从任何其他链中使用,例如POSTROUTING链。

Option–to-destination
Exampleiptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.1-192.168.1.10
ExplanationThe --to-destination option tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. The above example would send on all packets destined for IP address 15.45.23.67 to a range of LAN IP’s, namely 192.168.1.1 through 10. Note, as described previously, that a single stream will always use the same host, and that each stream will randomly be given an IP address that it will always be Destined for, within that stream. We could also have specified only one IP address, in which case we would always be connected to the same host. Also note that we may add a port or port range to which the traffic would be redirected to. This is done by adding, for example, an :80 statement to the IP addresses to which we want to DNAT the packets. A rule could then look like --to-destination 192.168.1.1:80 for example, or like --to-destination 192.168.1.1:80-100 if we wanted to specify a port range. As you can see, the syntax is pretty much the same for the DNAT target, as for the SNAT target even though they do two totally different things. Do note that port specifications are only valid for rules that specify the TCP or UDP protocols with the --protocol option.

由于DNAT需要做很多工作才能正常工作,所以我决定对如何使用它做一个更详细的解释。让我们举一个简单的例子来说明事情通常是如何进行的。我们想通过我们的互联网连接发布我们的网站。我们只有一个IP地址,HTTP服务器位于我们的内部网络。我们的防火墙有外部IP地址INETIP,我们的HTTP服务器有内部IP地址INET_IP,我们的HTTP服务器有内部IP地址INETIPHTTPIPHTTP_IP,最后防火墙有内部IP地址$LAN_IP。首先要做的是在nat表的PREROUTING链中添加以下简单的规则:

iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT \
--to-destination $HTTP_IP

现在,所有从互联网发送到我们防火墙80端口的数据包都被重定向(或DNAT)到我们的内部HTTP服务器。如果您从互联网上进行测试,那么一切都应该非常完美。那么,如果您尝试从与HTTP服务器相同的本地网络上的主机进行连接,会发生什么情况呢?这根本行不通。这是路由的一个问题。我们从剖析正常情况下发生的事情开始。外部盒子有IP地址$EXT_BOX,以保持可读性。

  1. 数据包离开连接的主机到INETIP和源INET_IP和源INETIPEXT_BOX。
  2. 数据包到达防火墙
  3. 防火墙DNAT数据包,并输送数据通过所有的链
  4. 数据包离开防火墙并传输到$HTTP_IP。
  5. 数据包到达HTTP服务器,HTTP框通过防火墙返回,如果路由数据库输入该框作为$EXT_BOX的网关的话。通常,这将是HTTP服务器的默认网关。
  6. 防火墙的Un-DNAT再次对数据包进行了处理,因此数据包看起来就像是从防火墙本身返回的。
  7. 回复包像往常一样返回到客户端$EXT_BOX。

现在,我们将考虑如果包是由与HTTP服务器本身在同一网络上的客户机生成的会发生什么。客户端拥有IP地址$LAN_BOX,而其余计算机保持相同的设置。

  1. 数据包离开LANBOX到LAN_BOX到LANBOXINET_IP。
  2. 数据包抵达防火墙
  3. 数据包被DNAT处理,并执行所有其他所需的操作,但是,该包没有SNAT处理,因此在包上使用相同的源IP地址。
  4. 数据包离开防火墙并到达HTTP服务器
  5. HTTP服务器尝试响应数据包,并在路由数据库中看到数据包来自同一网络上的本地框,因此尝试直接将数据包发送到原始的源IP地址(现在变成了目的IP地址)。
  6. 数据包到达客户端,客户端会感到困惑,因为返回的数据包不是来自它发送原始请求的主机。因此,客户端丢弃应答包,等待“真正的”应答。

这个问题的简单解决方案是SNAT所有进入防火墙并离开的数据包,我们知道我们对其进行了DNAT。例如,考虑上面的规则。我们SNAT数据包进入我们的防火墙,是注定HTTPIP端口80,这样他们看起来就像他们来自HTTP_IP端口80,这样他们看起来就像他们来自HTTPIP80LAN_IP。这将迫使HTTP服务器将包发送回我们的防火墙,防火墙对包进行Un-DNAT处理并将它们发送到客户端。规则看起来是这样的:

iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \
--to-source $LAN_IP

请记住,POSTROUTING链是在链的最后处理的,因此一旦到达特定的链,数据包就已经被DNAT处理了。这就是我们根据内部地址匹配数据包的原因。

这是最后一条将严重损害您的日志记录的规则,因此建议不要使用此方法,但整个示例仍然是有效的。将会发生的事情是这样的,数据包来自互联网,经过SNAT和DNAT,最后到达HTTP服务器(例如)。HTTP服务器现在只看到请求,就像它来自防火墙一样,因此记录所有来自internet的请求,就像它们来自防火墙一样。

这也可能产生更严重的影响。以LAN上的SMTP服务器为例,它允许来自内部网络的请求,并设置防火墙将SMTP通信转发给它。您现在已经有效地创建了一个开放中继SMTP服务器,但日志记录非常糟糕!

这个问题的一个解决方案是简单地使SNAT规则在匹配部分更加具体,并且只对来自我们的LAN接口的数据包起作用。换句话说,还要在整个命令中添加–src $LAN_IP_RANGE。这将使规则只对来自LAN的流有效,因此不会影响源IP,所以日志看起来是正确的,但来自我们的LAN的流除外。

换句话说,解决这些问题最好是为LAN设置一个单独的DNS服务器,或者实际设置一个单独的DMZ,如果有钱,最好是后者。

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT \
--to-destination $HTTP_IP

添加最后一条规则应该可以让一切正常运行。所有与HTTP服务器不在同一网络上的独立网络将顺利运行,所有与HTTP服务器在同一网络上的主机将能够连接,最后,防火墙也将能够进行正确的连接。现在一切正常,应该不会出现问题了。

每个人都应该意识到,这些规则只影响数据包如何正确地进行DNAT和SNAT。除了这些规则之外,您可能还需要在筛选表(FORWARD链)中添加额外的规则,以允许数据包也遍历这些链。不要忘记所有数据包都已经经过PREROUTING链,因此它们的目的地址应该已经被DNAT重写。

1.7 DROP target

DROP目标所做的就是它所说的,它将包丢弃而不进行任何进一步的处理。一个数据包完美匹配一个规则,然后被丢弃将被阻塞。注意,这个操作在某些情况下可能会产生不必要的效果,因为它可能在任意一台主机上留下死套接字。在可能出现这种情况的情况下,更好的解决方案是使用REJECT目标,特别是当您想阻止端口扫描器获取太多信息时,例如关于过滤端口的信息等等。还要注意,如果一个包在子链中被执行了DROP操作,则该包将不会在当前表或任何其他表的任何主链中被处理。换句话说,数据包已经完全死亡。正如我们前面看到的,目标不会向任何方向发送任何类型的信息,也不会发送到路由器等中介。

适用于:Linux内核 2.3, 2.4, 2.5, 2.6

1.8 DSCP target

用来改变包内DSCP(Differentiated Services Field)标记目标,DSCP目标可以在TCP报文中设置任何DSCP值,这是一种告诉路由器报文优先级的方式。更多请参考:RFC 2474 - Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers

基本上,DSCP是一种将不同的服务划分为不同的类别,并以此为基础通过路由器给它们不同的优先级的方法。通过这种方式,您可以为交互TCP会话(如telnet、SSH、POP3)提供一个非常高速的连接,这可能不太适合大型批量传输。另一方面,如果连接是一个低重要性的连接(SMTP,或任何您分类为低优先级的连接),您可以通过一个延迟比另一个网络更差的大型网络发送它,这比使用更快和更低延迟的连接更便宜。

Option–set-dscp
Exampleiptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp 1
ExplanationThis sets the DSCP value to the specified value. The values can be set either via class, see below, or with the --set-dscp, which takes either an integer value, or a hex value.
Option–set-dscp-class
Exampleiptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp-class EF
ExplanationThis sets the DSCP field according to a predefined DiffServ class. Some of the possible values are EF, BE and the CSxx and AFxx values available. You can find more information at Implementing Quality of Service Policies with DSCP site. Do note that the --set-dscp-class and --set-dscp commands are mutually exclusive, which means you can not use both of them in the same command!

1.9 ECN target

如果使用方法正确,这个目标可以很好。简单地说,ECN目标可以用于从IPv4报头重置ECN位,或者正确地说,至少将它们重置为0。由于ECN在网络上是一个相对较新的事物,它存在一些问题。例如,它使用在原始RFC中定义的2位,使TCP协议为0。一些路由器和其他互联网设备将不转发这些位设置为1的数据包。如果您想从您的主机至少利用ECN的部分功能,您可以将ECN位重置为0,例如,对于您知道由于ECN而无法到达的特定网络。

请注意,根据RFC的规定,我们不能在流中间打开ECN的,无论如何这是不可能的。流的两个端点都必须协商ECN。如果我们打开它,那么其中一个主机就不会意识到它,并且不能正确地响应ECN通知。

Option–ecn-tcp-remove
Exampleiptables -t mangle -A FORWARD -p tcp --dport 80 -j ECN --ecn-tcp-remove
ExplanationThe ECN target only takes one argument, the --ecn-tcp-remove argument. This tells the target to remove the ECN bits inside the TCP headers. Read above for more information.

1.10 LOG target options

LOG目标是专门为记录数据包的详细信息而设计的。例如,这些可能被认为是非法的。或者,日志记录可以纯粹用于错误查找和错误查找。LOG目标将返回包的特定信息,例如大多数IP头和其他被认为感兴趣的信息。它通过内核日志记录工具(通常是syslogd)来实现这一点。然后,可以通过dmesg直接读取该信息,或者从syslogd日志中读取,或者通过其他程序或应用程序读取。这是一个用于调试规则集的极好目标,这样您就可以看到哪些包去了哪里,哪些规则应用于哪些包。还要注意,当您在生产防火墙上测试不是100%确定的规则时,使用LOG目标而不是DROP目标可能是一个非常好的主意,因为规则集中的语法错误可能会给用户带来严重的连通性问题。还需要注意的是,如果您正在使用非常广泛的日志记录,那么ULOG目标可能会很有趣,因为ULOG目标支持直接记录到MySQL数据库等。

注意,如果你不需要直接记录到控制台,这不是iptables或Netfilter的问题,而是由你的syslogd配置引起的问题——最有可能的是/etc/syslog.conf。有关这类问题的更多信息,请阅读man syslog.conf。

您可能还需要调整dmesg设置。Dmesg命令用于更改应该在控制台上显示的内核错误。Dmesg -n 1应该防止所有消息显示在控制台上,恐慌消息除外。dmesg消息级别与syslogd消息级别完全匹配,而且它只适用于来自内核工具的日志消息。更多信息,请参见man dmesg。

LOG目标目前有五个选项,如下表所示:

Option–log-level
Exampleiptables -A FORWARD -p tcp -j LOG --log-level debug
ExplanationThis is the option to tell iptables and syslog which log level to use. For a complete list of log levels read the syslog.conf manual. Normally there are the following log levels, or priorities as they are normally referred to: debug, info, notice, warning, warn, err, error, crit, alert, emerg and panic. The keyword error is the same as err, warn is the same as warning and panic is the same as emerg. Note that all three of these are deprecated, in other words do not use error, warn and panic. The priority defines the severity of the message being logged. All messages are logged through the kernel facility. In other words, setting kern.=info /var/log/iptables in your syslog.conf file and then letting all your LOG messages in iptables use log level info, would make all messages appear in the /var/log/iptables file. Note that there may be other messages here as well from other parts of the kernel that uses the info priority. For more information on logging I recommend you to read the syslog and syslog.conf man-pages as well as other HOWTOs etc.
Option–log-prefix
Exampleiptables -A INPUT -p tcp -j LOG --log-prefix “INPUT packets”
ExplanationThis option tells iptables to prefix all log messages with a specific prefix, which can then easily be combined with grep or other tools to track specific problems and output from different rules. The prefix may be up to 29 letters long, including white-spaces and other special symbols.
Option–log-tcp-sequence
Exampleiptables -A INPUT -p tcp -j LOG --log-tcp-sequence
ExplanationThis option will log the TCP Sequence numbers, together with the log message. The TCP Sequence numbers are special numbers that identify each packet and where it fits into a TCP sequence, as well as how the stream should be reassembled. Note that this option constitutes a security risk if the logs are readable by unauthorized users, or by the world for that matter. As does any log that contains output from iptables.
Option–log-tcp-options
Exampleiptables -A FORWARD -p tcp -j LOG --log-tcp-options
ExplanationThe --log-tcp-options option logs the different options from the TCP packet headers and can be valuable when trying to debug what could go wrong, or what has actually gone wrong. This option does not take any variable fields or anything like that, just as most of the LOG options don’t.
Option–log-ip-options
Exampleiptables -A FORWARD -p tcp -j LOG --log-ip-options
ExplanationThe --log-ip-options option will log most of the IP packet header options. This works exactly the same as the --log-tcp-options option, but instead works on the IP options. These logging messages may be valuable when trying to debug or track specific culprits, as well as for debugging - in just the same way as the previous option.

1.11 MARK target

MARK目标用于设置与特定包相关联的Netfilter标记值。此目标仅在mangle表中有效,在此表之外无效。MARK值可以与Linux中的高级路由功能一起使用,通过不同的路由发送不同的包,并告诉它们使用不同的队列规程(qdisc)等。更多信息请参考:[Linux Advanced Routing and Traffic Control HOW-TO](https://www.lartc.org/。注意,标记值不是在实际的包中设置的,而是在内核中与包相关联的值。换句话说,您不能为一个包设置一个MARK,然后期望该MARK仍然存在于另一个主机上。如果这是你想要的,你最好使用TOS目标,它会破坏IP头中的TOS值。

Option–set-mark
Exampleiptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2
ExplanationThe --set-mark option is required to set a mark. The --set-mark match takes an integer value. For example, we may set mark 2 on a specific stream of packets, or on all packets from a specific host and then do advanced routing on that host, to decrease or increase the network bandwidth, etc.

1.12 MASQUERADE target

MASQUERADE目标的使用方式与SNAT目标基本相同,但它不需要任何–to–source选项。这是因为MASQUERADE目标是用来处理拨号连接或DHCP连接的,它们在连接到相关网络时获得动态IP地址。这意味着您应该只对动态分配的IP连接使用MASQUERADE目标,而我们始终不知道IP连接的实际地址。如果您有一个静态IP连接,您应该使用SNAT目标。

当您伪装一个连接时,这意味着我们设置在特定网络接口上使用的IP地址,而不是–to-source选项,并且IP地址会自动从有关特定接口的信息中获取。MASQUERADE目标还有一个效果,即当一个接口停止运行时,连接将被忘记,如果我们(例如)终止一个特定的接口,这是非常好的。如果我们使用SNAT目标,我们可能会留下许多旧的连接跟踪数据,这些数据将被放置数天,吞噬有用的连接跟踪内存。通常情况下,这是在处理每次可能被分配不同IP的拨号线路时的正确行为。万一我们被分配到一个不同的IP,连接无论如何都会丢失,保留条目多少有点愚蠢。

即使你有一个静态IP,仍然可以使用MASQUERADE目标而不是SNAT,然而,这并不好,因为它会增加额外的开销,而且将来可能会出现不一致的情况,这会阻碍你现有的脚本,使它们“不可用”。

注意,MASQUERADE目标只在nat表中的POSTROUTING链中有效,就像SNAT目标一样。MASQUERADE目标接受下面指定的一个选项,这是可选的。

Option–to-ports
Exampleiptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
ExplanationThe --to-ports option is used to set the source port or ports to use on outgoing packets. Either you can specify a single port like --to-ports 1025 or you may specify a port range as --to-ports 1024-3000. In other words, the lower port range delimiter and the upper port range delimiter separated with a hyphen. This alters the default SNAT port-selection as described in the SNAT target section. The --to-ports option is only valid if the rule match section specifies the TCP or UDP protocols with the --protocol match.

1.13 MIRROR target

注意:MIRROR 目标很危险,只是作为新的连接和NAT代码的示例代码开发的。它会导致危险的事情发生,如果使用不当,很严重的DDoS/DoS将可能发生。不惜一切代价避免使用它!已从2.5和2.6内核中删除了,因为它的安全性很差!

MIRROR目标只是一个实验和演示目标,并且警告您不要使用它,因为它可能导致非常糟糕的循环,从而导致严重的拒绝服务(Denial of Service)。MIRROR目标用于颠倒IP报头中的源和目的字段,然后重传数据包。这可能会产生一些非常有趣的效果,我敢打赌,多亏了这个目标,到目前为止,不止一个红着脸的爆竹已经打破了自己的盒子。至少可以说,使用这个目标的效果是明显的。假设我们为计算机a的80端口设置了一个镜像目标。如果主机B来自yahoo.com,并试图访问主机a的HTTP服务器,那么镜像目标将返回雅虎主机自己的网页(因为这是请求的来源)。

注意,MIRROR目标只在INPUT、FORWARD和PREROUTING链以及从这些链调用的任何用户定义链中有效。还要注意,从MIRROR目标发出的数据包不会被过滤器、nat或mangle表中的任何正常链看到,这可能会导致循环和其他问题。这可能会使目标成为不可预见的头痛的原因。例如,一个主机可能向另一个使用MIRROR命令的主机发送一个欺骗数据包,该数据包的TTL为255,同时欺骗它自己的数据包,使它看起来像是来自使用MIRROR命令的第三个主机。数据包将不断地来回弹跳,以确定要完成的跳数。如果只有1跳,则报文来回跳240 ~ 255次。换句话说,对于一个黑客来说,发送1500字节的数据并消耗掉您连接的380kbyte已经很不错了。请注意,这是破坏者或脚本小子(不管我们想叫他们什么)的最佳情况。

1.14 NETMAP target

NETMAP是SNAT和DNAT目标的一种新实现,它不改变IP地址的主机部分。它提供了标准SNAT和DNAT功能所没有的全网1:1 NAT功能。例如,假设我们有一个包含254个使用私有IP地址的主机的网络(一个/24网络),我们刚刚得到一个新的/24公共IP网络。我们可以简单地使用NETMAP目标,如-j NETMAP -to 10.5.6.0/24,而不是四处走动并更改每个主机的IP,然后瞧,所有主机都被视为10.5.6。当它们离开防火墙时X。例如,192.168.0.26将变成10.5.6.26。

Option–to
Exampleiptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j NETMAP --to 10.5.6.0/24
ExplanationThis is the only option of the NETMAP target. In the above example, the 192.168.1.x hosts will be directly translated into 10.5.6.x.

Linux 2.5 2.6 有效

1.15 NFQUEUE target

NFQUEUE目标的使用方式与QUEUE目标非常相似,基本上是它的扩展。NFQUEUE目标允许为单独的和特定的队列发送包。队列由16位id标识。

这个目标需要nfnetlink_queue内核支持才能运行。更多详情参考"QUEUE target"

Option–queue-num
Exampleiptables -t nat -A PREROUTING -p tcp --dport 80 -j NFQUEUE --queue-num 30
ExplanationThe --queue-num option specifies which queue to use and to send the queue’d data to. If this option is skipped, the default queue 0 is used. The queue number is a 16 bit unsigned integer, which means it can take any value between 0 and 65535. The default 0 queue is also used by the QUEUE target.

Linux 2.6.14及以后版本有效

1.16 NOTRACK target

此目标用于关闭所有匹配此规则的包的连接跟踪。目标只在原始表内部有效。Linux 2.6版本有效

1.17 QUEUE target

QUEUE目标用于对用户域程序和应用程序的数据包进行队列。它与与iptables无关的程序或实用程序一起使用,例如,与网络计费一起使用,或用于代理或过滤包的特定和高级应用程序。我们将不深入讨论这个目标,因为此类应用程序的编码超出了本教程的范围。首先,它会花费太多的时间,其次,这样的文档与Netfilter和iptables的编程方面没有任何关系。

1.18 REDIRECT target

REDIRECT目标用于将包和流重定向到机器本身。例如,这意味着我们可以在我们自己的主机上将所有发送到HTTP端口的包重定向到一个HTTP代理,比如squid。本地生成的报文映射到127.0.0.1地址。换句话说,这将为转发的包或类似的东西将目的地址重写到我们自己的主机。当我们需要时,REDIRECT目标非常适合使用,例如,透明代理,LAN主机根本不知道代理。

注意,REDIRECT目标只在nat表的PREROUTING和OUTPUT链中有效。它在只从这些链调用的用户定义链中也有效,而在其他任何地方都无效。REDIRECT目标只接受一个选项,如下所述。

Option–to-ports
Exampleiptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
ExplanationThe --to-ports option specifies the destination port, or port range, to use. Without the --to-ports option, the destination port is never altered. This is specified, as above, --to-ports 8080 in case we only want to specify one port. If we would want to specify a port range, we would do it like --to-ports 8080-8090, which tells the REDIRECT target to redirect the packets to the ports 8080 through 8090. Note that this option is only available in rules specifying the TCP or UDP protocol with the --protocol matcher, since it wouldn’t make any sense anywhere else.

1.19 REJECT target

REJECT目标的工作原理与DROP目标基本相同,但它也向发送被阻塞的包的主机发送回一个错误消息。到目前为止,REJECT目标只在INPUT、FORWARD和OUTPUT链或它们的子链中有效。毕竟,这将是唯一有意义的链,把这个目标。注意,所有使用REJECT目标的链只能由INPUT、FORWARD和OUTPUT链调用,否则它们将不起作用。目前只有一个选项可以控制这个目标如何工作的本质,尽管这反过来可能需要大量的变量。如果您具有TCP/IP的基本知识,那么它们中的大多数都相当容易理解。

Option–reject-with
Exampleiptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
ExplanationThis option tells the REJECT target what response to send to the host that sent the packet that we are rejecting. Once we get a packet that matches a rule in which we have specified this target, our host will first of all send the associated reply, and the packet will then be dropped dead, just as the DROP target would drop it. The following reject types are currently valid: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited and icmp-host-prohibited. The default error message is to send a port-unreachable to the host. All of the above are ICMP error messages and may be set as you wish. You can find further information on their various purposes in the appendix ICMP types. Finally, there is one more option called tcp-reset, which may only be used together with the TCP protocol. The tcp-reset option will tell REJECT to send a TCP RST packet in reply to the sending host. TCP RST packets are used to close open TCP connections gracefully. For more information about the TCP RST read RFC 793 - Transmission Control Protocol. As stated in the iptables man page, this is mainly useful for blocking ident probes which frequently occur when sending mail to broken mail hosts, that won’t otherwise accept your mail.

1.20 RETURN target

RETURN目标将导致当前数据包在它命中规则的地方停止通过链。如果它是另一条链的子链,数据包将继续通过上级链,就像什么都没有发生过一样。如果链是主链,例如INPUT链,则包上将采用默认策略。默认策略通常设置为ACCEPT、DROP或类似的策略。

例如,假设一个数据包进入INPUT链,然后遇到它匹配的规则,该规则告诉它–jump EXAMPLE_CHAIN。然后,包将开始遍历EXAMPLE_CHAIN,突然它匹配一个特定的规则,该规则设置了–jump RETURN目标。然后它将跳转回INPUT链。另一个例子是数据包在INPUT链中命中了–jump RETURN规则。然后,就像前面描述的那样,它将被丢弃到默认策略中,在此链中不再执行任何操作。

Linux 2.3 2.4 2.5 2.6有效

1.21 SAME target

同一个目标的工作方式几乎与SNAT目标相同,但它们仍然不同。基本上,同一目标将试图始终使用相同的传出IP地址的所有连接发起在您的网络上的一台主机。例如,假设您有一个/24网络(192.168.1.0)和3个IP地址(10.5.6.7-9)。现在,如果192.168.1.20第一次通过.7地址发出,防火墙将尝试保持该计算机始终通过该IP地址发出。

Option–to
Exampleiptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j SAME --to 10.5.6.7-10.5.6.9
ExplanationAs you can see, the --to argument takes 2 IP addresses bound together by a - sign. These IP addresses, and all in between, are the IP addresses that we NAT to using the SAME algorithm.
Option–nodst
Exampleiptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j SAME --to 10.5.6.7-10.5.6.9 --nodst
Explanation Under normal action, the SAME target is calculating the followup connections based on both destination and source IP addresses. Using the --nodst option, it uses only the source IP address to find out which outgoing IP the NAT function should use for the specific connection. Without this argument, it uses a combination of the destination and source IP address.

Linux 2.5 2.6 有效

1.22 SECMARK target

SECMARK目标用于在单个数据包上设置安全上下文标记,这是由SELinux和安全系统定义的。

简单地说,SELinux是一个新的改进的安全系统,它将强制访问控制(MAC)添加到Linux中,由NSA实现,作为概念验证。SELinux基本上为不同的对象设置安全属性,然后将它们匹配到安全上下文中。SECMARK目标用于在包上设置安全上下文,然后可以在安全子系统中使用该上下文进行匹配。

该目标仅在mangle表有效

Option–selctx
Exampleiptables -t mangle -A PREROUTING -p tcp --dport 80 -j SECMARK --selctx httpcontext
ExplanationThe --selctx option is used to specify which security context to set on a packet. The context can then be used for matching inside the security systems of linux.

1.23 SNAT target

SNAT目标用于进行源网络地址转换,这意味着该目标将重写包的IP头中的源IP地址。例如,当多个主机必须共享一个Internet连接时,这就是我们想要的。然后我们可以在内核中打开ip转发,并编写一个SNAT规则,它将从我们本地网络发出的所有数据包转换为我们自己的Internet连接的源ip。如果不这样做,外部世界将不知道在哪里发送应答包,因为我们的本地网络大多使用IANA指定的IP地址,这些地址是分配给LAN网络的。如果我们这样转发这些数据包,互联网上没有人会知道它们实际上来自我们。SNAT目标完成完成这类工作所需的所有转换,让所有离开局域网的数据包看起来好像来自同一个主机,这个主机就是我们的防火墙。

SNAT目标只在nat表中、在POSTROUTING链中有效。换句话说,这是您可以在其中使用SNAT的唯一链。SNAT只处理连接中的第一个包,之后使用同一连接的所有未来包也将被捕获。此外,POSTROUTING链中的初始规则将应用于同一流中的所有信息包。

Option–to-source
Exampleiptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000
ExplanationThe --to-source option is used to specify which source the packet should use. This option, at its simplest, takes one IP address which we want to use for the source IP address in the IP header. If we want to balance between several IP addresses, we can use a range of IP addresses, separated by a hyphen. The --to–source IP numbers could then, for instance, be something like in the above example: 194.236.50.155-194.236.50.160. The source IP for each stream that we open would then be allocated randomly from these, and a single stream would always use the same IP address for all packets within that stream. We can also specify a range of ports to be used by SNAT. All the source ports would then be confined to the ports specified. The port bit of the rule would then look like in the example above, :1024-32000. This is only valid if -p tcp or -p udp was specified somewhere in the match of the rule in question. iptables will always try to avoid making any port alterations if possible, but if two hosts try to use the same ports, iptables will map one of them to another port. If no port range is specified, then if they’re needed, all source ports below 512 will be mapped to other ports below 512. Those between source ports 512 and 1023 will be mapped to ports below 1024. All other ports will be mapped to 1024 or above. As previously stated, iptables will always try to maintain the source ports used by the actual workstation making the connection. Note that this has nothing to do with destination ports, so if a client tries to make contact with an HTTP server outside the firewall, it will not be mapped to the FTP control port.

1.24 TCPMSS target

TCPMSS目标可以用来改变防火墙看到的TCP SYN包的MSS(最大段大小)值。MSS值用于控制特定连接的数据包的最大大小。在正常情况下,这意味着MTU(最大传输单元)值的大小减去40字节。这是用来克服一些ISP和服务器阻止ICMP分片所需的数据包,这可能会导致非常奇怪的问题,主要可以描述为:从您的防火墙/路由器所有工作都很完美,但在防火墙后面的本地主机不能交换大数据包。这可能意味着邮件服务器能够发送小邮件,但不能发送大邮件;web浏览器可以连接,但在没有接收到数据的情况下挂起;ssh可以正常连接,但scp在初始握手后挂起。换句话说,所有使用大数据包的程序都将无法工作。

TCPMSS目标能够通过改变通过连接发出的数据包的大小来解决这些问题。请注意,我们只需要设置SYN包上的MSS,因为在此之后主机将处理MSS。目标接受两个参数。

Option–set-mss
Exampleiptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss 1460
Explanation The --set-mss argument explicitly sets a specific MSS value of all outgoing packets. In the example above, we set the MSS of all SYN packets going out over the eth0 interface to 1460 bytes – normal MTU for ethernet is 1500 bytes, minus 40 bytes is 1460 bytes. MSS only has to be set properly in the SYN packet, and then the peer hosts take care of the MSS automatically.
Option–clamp-mss-to-pmtu
Exampleiptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --clamp-mss-to-pmtu
ExplanationThe --clamp-mss-to-pmtu automatically sets the MSS to the proper value, hence you don’t need to explicitly set it. It is automatically set to PMTU (Path Maximum Transfer Unit) minus 40 bytes, which should be a reasonable value for most applications.

1.25 TOS target

TOS目标用于在IP报头中设置服务类型字段。TOS字段由8位组成,用于帮助路由报文。这是可以在iproute2及其子系统中直接用于路由策略的字段之一。值得注意的是,如果您处理几个独立的防火墙和路由器,这是在这些路由器和防火墙之间的实际包中传播路由信息的唯一方法。如前所述,MARK目标—设置与特定包相关联的MARK—仅在内核中可用,不能与包一起传播。如果您觉得需要为特定的包或流传播路由信息,那么应该设置TOS字段,该字段是为此开发的。

目前互联网上有很多路由器在这方面做得很糟糕,所以到目前为止,在将包发送到互联网之前尝试对TOS进行篡改可能是有点无用的。路由器最多不会注意到TOS字段。在最坏的情况下,他们将查看TOS字段并做错误的事情。然而,如上所述,如果您有一个具有多个路由器的大型广域网或局域网,那么TOS字段绝对可以得到很好的利用。实际上,您可以根据数据包的TOS值为它们提供不同的路由和首选项——即使这可能局限于您自己的网络。

该目标仅在mangle table内有效,并且外部无法使用,它只有一个选项

Option–set-tos
Exampleiptables -t mangle -A PREROUTING -p TCP --dport 22 -j TOS --set-tos 0x10
ExplanationThe --set-tos option tells the TOS mangler what TOS value to set onpackets that are matched. The option takes a numeric value, either in hex or in decimal value. As the TOS value consists of 8 bits, the value may be 0-255, or in hex 0x00-0xFF. Note that in the standard TOS target you are limited to using the named values available (which should be more or less standardized), as mentioned in the previous warning. These values are Minimize-Delay (decimal value 16, hex value 0x10), Maximize-Throughput (decimal value 8, hex value 0x08), Maximize-Reliability (decimal value 4, hex value 0x04), Minimize-Cost (decimal value 2, hex 0x02) or Normal-Service (decimal value 0, hex value 0x00). The default value on most packets is Normal-Service, or 0. Note that you can, of course, use the actual names instead of the actual hex values to set the TOS value; in fact this is generally to be recommended, since the values associated with the names may be changed in future. For a complete listing of the “descriptive values”, do an iptables -j TOS -h.

1.26 TTL target

TTL目标用来修改IP报头中的Time to Live字段。它的一个有用的应用是将所有的Time to Live值更改为所有传出包的相同值。这样做的一个原因是,如果你有一个强大的ISP,它不允许你有多台机器连接到同一个互联网连接,并且积极地追求这一点。将所有TTL值设置为相同的值,将有效地使它们更难注意到您正在这样做。然后,我们可以将所有传出数据包的TTL值重置为一个标准化的值,例如Linux内核中指定的64。

该目标仅在mangle table 有效

Option–ttl-set
Exampleiptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
ExplanationThe --ttl-set option tells the TTL target which TTL value to set on the packet in question. A good value would be around 64 somewhere. It’s not too long, and it is not too short. Do not set this value too high, since it may affect your network and it is a bit immoral to set this value to high, since the packet may start bouncing back and forth between two mis-configured routers, and the higher the TTL, the more bandwidth will be eaten unnecessarily in such a case. This target could be used to limit how far away our clients are. A good case of this could be DNS servers, where we don’t want the clients to be too far away.
Option–ttl-dec
Exampleiptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 1
ExplanationThe --ttl-dec option tells the TTL target to decrement the Time To Live value by the amount specified after the --ttl-dec option. In other words, if the TTL for an incoming packet was 53 and we had set --ttl-dec 3, the packet would leave our host with a TTL value of 49. The reason for this is that the networking code will automatically decrement the TTL value by 1, hence the packet will be decremented by 4 steps, from 53 to 49. This could for example be used when we want to limit how far away the people using our services are. For example, users should always use a close-by DNS, and hence we could match all packets leaving our DNS server and then decrease it by several steps. Of course, the --set-ttl may be a better idea for this usage.
Option–ttl-inc
Exampleiptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
ExplanationThe --ttl-inc option tells the TTL target to increment the Time To Live value with the value specified to the --ttl-inc option. This means that we should raise the TTL value with the value specified in the --ttl-inc option, and if we specified --ttl-inc 4, a packet entering with a TTL of 53 would leave the host with TTL 56. Note that the same thing goes here, as for the previous example of the --ttl-dec option, where the network code will automatically decrement the TTL value by 1, which it always does. This may be used to make our firewall a bit more stealthy to trace-routes among other things. By setting the TTL one value higher for all incoming packets, we effectively make the firewall hidden from trace-routes. Trace-routes are a loved and hated thing, since they provide excellent information on problems with connections and where it happens, but at the same time, it gives the hacker/cracker some good information about your upstreams if they have targeted you. For a good example on how this could be used, see the Ttl-inc.txt script.

1.27 ULOG target

ULOG目标用于提供匹配数据包的用户空间日志记录。如果匹配到报文并设置了ULOG目标,则通过netlink套接字将报文信息与整个报文一起进行多播。然后,一个或多个用户空间进程可以订阅各种多播组并接收数据包。换句话说,这是一种更完整、更复杂的日志记录工具,到目前为止只被iptables和Netfilter使用,它包含了更好的日志包记录工具。这个目标使我们能够将信息记录到MySQL数据库和其他数据库,使搜索特定数据包和对日志条目进行分组变得更加简单。

Option–ulog-nlgroup
Exampleiptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-nlgroup 2
ExplanationThe --ulog-nlgroup option tells the ULOG target which netlink group to send the packet to. There are 32 netlink groups, which are simply specified as 1-32. If we would like to reach netlink group 5, we would simply write --ulog-nlgroup 5. The default netlink group used is 1.
Option–ulog-prefix
Exampleiptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-prefix "SSH connection attempt: "
ExplanationThe --ulog-prefix option works just the same as the prefix value for the standard LOG target. This option prefixes all log entries with a user-specified log prefix. It can be 32 characters long, and is definitely most useful to distinguish different log-messages and where they came from.
Option–ulog-cprange
Exampleiptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-cprange 100
ExplanationThe --ulog-cprange option tells the ULOG target how many bytes of the packet to send to the user-space daemon of ULOG. If we specify 100 as above, we would copy 100 bytes of the whole packet to user-space, which would include the whole header hopefully, plus some leading data within the actual packet. If we specify 0, the whole packet will be copied to user-space, regardless of the packets size. The default value is 0, so the whole packet will be copied to user-space.
Option–ulog-qthreshold
Exampleiptables -A INPUT -p TCP --dport 22 -j ULOG --ulog-qthreshold 10
ExplanationThe --ulog-qthreshold option tells the ULOG target how many packets to queue inside the kernel before actually sending the data to user-space. For example, if we set the threshold to 10 as above, the kernel would first accumulate 10 packets inside the kernel, and then transmit it outside to the user-space as one single netlink multi part message. The default value here is 1 because of backward compatibility, the user-space daemon did not know how to handle multi-part messages previously.

二、参考

iptalbes tutorial

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-3824747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

第十四周作业

第十四周作业1.简述CGI与FASTCGI区别2.编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构3.通过loganalyzer展示数据库中的日志1.简述CGI与FASTCGI区别 CGI:收到请求,会fork一个新的进程进行处理;在处理数据方面&#xff0…...

SQL中的Exists 用法解释

exists的实例解析 现有两个表 a: b: 现有sql语句如下 select * from a where exists (select 1 from b where b.b_id a.id);执行结果如下: 含义解析:exists 的意思是用于检查子查询是否至少会返回一行数据,该子查询实际上并…...

exists 用法

/****** Script for SelectTopNRows command from SSMS ******/SELECT * FROM [MyDB].[dbo].[LbShops] where biz_type 1 and not exists ( SELECT shop_strid FROM [MyDB].[dbo].[shop_sell] where shop_strid [LbShops].shop_strid ) 速度很快 转载于:https://www.cnblogs.…...

git提交报husky > commit-msg hook failed (add --no-verify to bypass)的错

记录一下这次报错,报错信息主要如下: husky > commit-msg hook failed (add --no-verify to bypass) 问了一下leader,是因为项目之前更新了依赖,我重新拉下来的没有装最新的依赖 解决方法:重装依赖 npm i 重新…...

第二十章《Java Swing》第8节:选择器

在Swing体系中有文件选择器和颜色选择器,它们分别用来帮助用户选择文件和颜色,这些选择操作是可视化桌面应用程序常用的操作,本小节将详细讲解这两种选择器的使用方式。 20.8.1文件选择器JFileChooser 文件选择器用于选择文件或文件夹。当用户打开一个文件时需要用文件选择…...

自动驾驶领域常见英文缩写及其中文含义(不断完善中)

英文缩写英文全称中文全称ABSantilock brake system防抱死制动系统ACCAdaptive Cruise Control自适应巡航ADASAdvanced Driver Assistance System高级驾驶辅助系统AEBAutonomous Emergency Braking自动紧急制动APSAutomated Parking System自动泊车辅助BCWBlind Collision Warn…...

k3s+traefik+cert-manager+letsencrypt实现web服务全https

1. 简介 随着 HTTPS 不断普及,越来越多的网站都在从 HTTP 升级到 HTTPS,使用 HTTPS 就需要向权威机构申请证书,需要付出一定的成本,如果需求数量多,也是一笔不小的开支。cert-manager 是 Kubernetes 上的全能证书管理工…...

Java开发热门前沿知识!跳槽面试大厂被拒

前言 当前我们都会说SpringBoot是Spring框架对“约定优先于配置理念的最佳实践的产物,一个典型的SpringBoot应用本质上其实就是一个基于Spring框架的应用,而如果大家对Spring框架已经了如指掌,那么,在我们一步步揭开SpringBoot微…...

杰和的NAS新定义:网络+应用+存储的三者融合

6月15日 昨日,杰和科技发布新一代NAS服务器,对NAS进行了重新定义,杰和认为,NAS不只是网络附属存储 (Network Attached Storage),而是网络应用存储的三者融合。杰和同时展示的还有NAS全系列产品方案和存储管理的新系统…...

html里的底部c怎么打出来,版权所属符号-网站底部版权符号怎么打出来

Emoji 的表情符号是否有版权归属,如果是在word中输入。点击 插入>符号>特殊字版权所有者使用快捷键Ctrl Alt C。在FrontPage、Dreamweaver中与Word类在程序中,版权符号©等同于©在记事本中显示。按住Alt键不放,再利用小键盘输…...

在Linux下查看HBA卡的速率和状态

平时在Linux下映射存储,都是映射哪台就给哪台插线,然后在存储端扫描WWPN,简单粗暴,没技术含量。当然,光交下也可以看。 1,查看当前卡的品牌,常用的卡有两种,Emulex和Qlogic。 lspc…...

杰和G330整合博锐技术 优化企业IT的管理和安全

企业级用户,尤其是大中型企业,办公电脑数量需求庞大,如何节约后续成本?同时企业数据安全又得到保障?企业IT环境始终保持健康、良性发展,在方案整合上对硬件平台技术要求特别高。 英特尔vPro博锐技术是针对企…...

基于javaweb的企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

基于javaweb的企业绩效考核管理系统(javassmjspbootstrapjquerymysql) 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 …...

听说H2O能让大家都会用机器学习?

https://www.toutiao.com/a6684846840065556995/ 各行业中的人工智能技术已经逐渐落地,为了社会和经济的稳定发展,普及人工智能越来越重要。 H2O是一个开源分布式内存机器学习平台。关于H2O的研究和实验,本文作者已经有丰富的经验&#xff0c…...

Qt入门-文件读写

二进制文件的读写文件可以使用QFile类、QStream 文本文件的读写建议使用QTextStream类,它操作文件更加方便。 打开文件时,需要参数指定打开文件的模式: Constant Value Description QIODevice::NotOpen 0x0000 The device is not open. QIO…...

macos技巧[设置快捷键和window差不多]

设置快捷键和window差不多 macOS的键盘和window有很大的差别,造成了期快捷键和windows差别也很大,目前发现调换ctrl和com建比较适合window的用法,设置前的快捷键配置: 设置后的快捷键配置: 其他快捷键配置&#xff1…...

QIODevice 类学习笔记

QIODevice 类学习笔记 Isaaccwoo 2015年12月10日 一、 简介 QIODevice用于对输入输出设备进行管理。输入设备有两种类型,一种是随机访问设备(Random-accessdevices),如文件、缓冲区等;另一种是时序设备&#x…...

h2o包 常见问题

问题一之安装 当我们正常安装H2O时,经常出现如下问题: install.packages("h2o") Installing package into ‘C:/Users/gyk/Documents/R/win-library/3.6’ (as ‘lib’ is unspecified) 试开URL’https://cran.rstudio.com/bin/windows/cont…...

python环境安装H2O

H2O平台介绍 概括来说是一个做分布式机器学习深度学习的平台。 H2Ocloud是它的云平台,可以在线建模,管理模型,管理App,用MLOP和AppStore这两个模块。 H2O HT是云平台建模的版块,主要是机器视觉和自然语言处理。 Dr…...

Windows 11 版本介绍

Windows 11-微软公司于2021年发布的桌面端操作系统 Windows 11百科 Windows 11是由微软公司(Microsoft)开发的操作系统,应用于计算机和平板电脑等设备 。于2021年6月24日发布 ,2021年10月5日发行 。 Windows 11提供了许多创新功…...

IBM P570 更换风扇

IBM P570 更换风扇过程 前提:停止应用再操作 1 查看错误日志 通过命令查看错误 LABEL: SCAN_ERROR_CHRP IDENTIFIER: BFE4C025 Date/Time: Sun Apr 18 11:22:48 BEIST 2010 Sequence Number: 12788 Machine Id: 00CBF25C4C00 Node…...

onTaskFailed: Failed Loading plugin Pipeline: Stage View Plugin v2.13 (pipeline-stage-view)解决方法

【现象】 2020-02-28 07:50:23.8420000 [id30] SEVERE jenkins.InitReactorRunner$1#onTaskFailed: Failed Loading plugin Pipeline: Stage View Plugin v2.13 (pipeline-stage-view) java.io.IOException: Failed to load: Pipeline: Stage View Plugin (2.13) - Plugi…...

SQL学习:not exists用法

SQL学习:not exists用法 与 not in 的效果一样, 但这个效率相对高一点 例如: a1表:id name 1 张三 2 李四 a2表:id name 1 张三 2 李四 刚使用的新手用法可能是这样子的, 以为跟 not in 一样,但是下面这样写达不到预期效果 select * fro…...

杰和N60E-O荣获德国Hardwareinside金牌奖

“不断超越,只为更好”2016年11月3日,杰和 N60E-O凭借优异的整体性能和极高的性价比,在德国知名媒体Hardwareinside的评测中荣获金牌奖。 杰和科技作为服务器行业的后起之秀,顺势推出一系列备受好评的服务器产品及解决方案。目前&…...

Elasticsearch嵌套式对象Nested分析

原文请参考: https://www.felayman.com/articles/2017/11/10/1510292946325.html nested结构是Elasticsearch提供关系存储的一种特殊的结构,是NOSQL的一种高级特性,在传统的关系型sql中,很难做到一行记录中存储某个实体以及附属的内容,比如某个用户下评论数据&…...

JAVA智能推荐的卫生健康系统计算机毕业设计Mybatis+系统+数据库+调试部署

JAVA智能推荐的卫生健康系统计算机毕业设计Mybatis系统数据库调试部署 JAVA智能推荐的卫生健康系统计算机毕业设计Mybatis系统数据库调试部署本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技…...

JQuery实现图片切换(自动切换+手动切换)

学习JS的时候本来积攒了很多有趣的小例子,但是苦于没有找到一些好的平台来展示这些JS效果。今天发现了RunJS这个分享代码的平台,迫不及待得想跟大家分享。 在浏览各大商城网站的时候,或者某些网站的首页,都会展示与本网站相关的一…...

远程控制桌面计算机怎么填写,如何远程控制电脑,使用电脑的远程桌面功能?...

通过远程桌面功能我们可以实时的操作这台计算机,在上面安装软件,运行程序,所有的一切都好像是直接在该计算机上操作一样。那么该如何远程控制电脑,使用电脑的远程桌面功能呢?下面一起来看一下。操作方法01首先我们鼠标…...

语音识别框架speechbrain---speaker-recognition说话人识别/声纹识别:模型评价(2)

EER 与 minDCF计算—基于自己数据的模型(cosine) (1)构建验证verification文件 def create_veri_file(data_folder, save_file):"""生成验证txt文件"""dev_save_path = []with open(save_file, "w") as f...

linux复制文件夹中前N个文件到其他目录下

linux复制文件夹中前N个文件到其他目录下 方法一:指令 指令需要在源文件夹路径下运行 ls |head -n N |xargs -i cp {} /data/bertram/test 注:N指前n行 如果目录下还有其他文件夹,则需递归方式(-r)进行拷贝&#x…...

linux 复制文件夹 命令

CP命令 格式: CP [选项] 源文件或目录 目的文件或目录 选项说明: -b 同名,备分原来的文件   -f 强制覆盖同名文件   -r 按递归方式保留原目录结构复制文件 例: cp -r /home/test /tmp...

VC++编写远程控制软件

VC编写远程控制软件 1.远程控制软件编写之一界面设计 2.远程控制软件编写之二套接字操作 3.远程控制软件编写之三密码验证1 4.远程控制软件编写之四密码验证2 5.远程控制软件编写之五密码验证3 6.远程控制软件编写之六2密码验证4 7.远程控制软件编写之七磁盘显示1 8.远程控制软…...

一文读懂「TTS语音合成技术」

有没有发现,我们与机器的对话正变得愈发灵动与自然?人机交互越来越广泛地应用在我们的生活中,而这些都离不开语音合成技术的与时俱进。 语音合成,即TTS,是语音数据采集的重要方式。本期澳鹏干货,我们将带你…...

mysql 数据库字符集转换_字符集介绍及mysql数据库编码转换

一、字符集介绍:1、ASCIIASCII是英文American Standard Code for Information Interchange的缩写,美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的…...

常见的语音交互平台的简介和比较

语言识别已经成为越来越普遍的应用场景了。现在可以基于一些语音平台进行二次开发。 1.概述 最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同,一个是windows下…...

elasticsearch数据类型--nested

前面写到了object数据类型,这里来说说nested。按照官方文档的说法,nested是特殊的object类型,弥补了object对象不能单独作为整体进行检索的缺陷。为了达到这个目的,nested在es内部是作为隐藏文档存储的。下面来详细说明。 先来看…...

高性能linux构建Cf游戏,构建CF卡Linux系统的几个常见难题

关于如何在cf卡上构建linux ,从网上可以找到很多文章,如:许德新 《嵌入式Linux在PC104平台上的构建与实现》等等。这里主要介绍我在cf卡上构建linux系统中碰到的问题和 解决方法。采用硬件是:板子是研祥 104-1621CLDN,…...

navigator.language 代表的是浏览器的语言?

navigator.language 代表的不是浏览器的语言,而是用户更喜欢的语言,也就是各浏览器优先语言排行榜的第一名,但是chrome这回让我们失望了,火狐是可以的?手机端在设置 里面改变语言,也就改变了浏览器的优先语…...

Kali浏览器显示无法连接服务器,kali 中安装Chromium Web Browser并解决浏览器无法启动问题...

首先运行以下命令安装chromiumapt install updateapt install chromium在安装过程中可能会出现E:sub-process /usr/bin/dpkg returned an error code(1)的报错,解决方法如下:cd /var/lib/dpkg/mv info/ info_bakmkdir infoapt updateapt -f installmv in…...

java es nested,Nested

Nested嵌套数据类型nested类型是一种对象类型的特殊版本,它允许索引对象数组,独立地索引每个对象。如何使对象数组变扁平内部类对象数组并不以你预料的方式工作。Lucene没有内部对象的概念,所以Elasticsearch将对象层次扁平化,转化…...

从零到一搭建基础架构(3)-base模块搭建上篇

前后端交互结构混乱,response中业务code定义没有一个统一的规范PO、DTO、BO、VO傻傻分不清楚工具类泛滥,同一工程中StringUtil的引用有外部引入,有内部jar包引入还有自己定义的异常定义混乱,导致在Spring统一response拦截的地方区…...

开源的远程桌面软件RustDesk

本文是应网友 figo 的要求写的 什么是 RustDesk ? RustDesk 是一款开源的远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。可以使用官方的注册/中继服务器, 或者自己架设。 今天我们要做的就是…...

linux 复制文件夹下的所有内容到目标文件夹

在linux 下可以使用cp 命令去复制内容例如 #复制到目录文件夹* 和 . 代表目录下的所有文件 cp ~/temp/* ~/text/ cp ~/temp/. ~/text/ #复制到当前文件夹 cp ~/temp/* ./ cp ~/temp/. ./但是如果被复制的的文件夹下还有文件夹的话,则需要加上 -r #这样就会将该目录下的所有文…...

nested查询

包装另一个查询以搜索nested字段。 nested查询搜索nested字段对象,就好像将它们作为单独的文档进行索引一样。如果对象匹配搜索,nested查询返回根父文档。 示例 索引设置 要使用nested查询,索引必须包含nested字段映射。例如: PUT /my-i…...

Linux cp复制文件或文件夹

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录&#xff0…...

白话Elasticsearch58-数据建模实战_基于nested object实现博客与评论嵌套关系

文章目录概述官网示例Object datatype让ES自动创建索引,插入一条数据查看mapping需求: 被年龄是28岁的黄药师评论过的博客查询结果不对原因分析Nested datatype解决object查询不对的问题修改mapping,将comments的类型从object设置为nested写入…...

第五代TTS语音芯片SYN8086性能再突破

自SYN8086TTS芯片诞生以来,经过不断优化调试,其性能目前已经达到最佳工作状态。相比上一代TTS芯片而言,SYN8086不但继承了SYN6658语音芯片的全部优势,其它各项指标更是领跑业内同类产品。精巧体积 QFN40封装,体积5*5M…...

百度 tts 语音合成前端无法播放问题解决

看官网示例 修改返回值 返回值是 base 64 格式。 将 返回值中的 audio/x-mpeg 修改为 audio/wav 即可 <p>继续加油</p> <audio controls"controls" src"data:audio/wav;base64,//MoxAALMGZYAHiGKEOBaPzyyjQKxjQqowkwRqJIKHwq1iEvaoyIxrkCi7LE…...

ghost备份怎么分卷ghost.exe -split=2048

...

java 笛卡尔积_笛卡尔乘积-java代码

好久没摸过程序了&#xff0c;重新捡起java写了个笛卡尔乘积算法。自我感觉非常精简通用&#xff0c;这算是码力不减&#xff0c;码刀不老?package my.table;import java.util.Arrays;public class Descates {int[] sizes;int[] indexs;public Descates(int[] sizes) {this.si…...

Windows下卸载Oracle

用Oracle自带的卸载程序不能从根本上卸载Oracle&#xff0c;从而为下次的安装留下隐患&#xff0c;那么怎么才能完全卸载Oracle呢&#xff1f; 那就是直接注册表清除&#xff0c;步骤如下&#xff1a; 1、 开始&#xff0d;>设置&#xff0d;>控制面板&#xff0d;>管…...

Elasticsearch Nested类型深入详解

0、概要 在Elasticsearch实战场景中&#xff0c;我们或多或少会遇到嵌套文档的组合形式&#xff0c;反映在ES中称为父子文档。 父子文档的实现&#xff0c;至少包含以下两种方式&#xff1a; 1&#xff09;父子文档 父子文档在5.X版本中通过parent-child父子type实现&#xff0…...

【Elasticsearch教程13】Mapping字段类型之nested

Elasticsearch Mapping字段类型之nested一、简介二、插入测试数据1 创建nested字段的mapping2 插入2个班级的数据三、nested 查询1 Query DSL2 Java API四、nested 排序五、nested 聚合1 Query DSL2 Java API六、nested的应用一、简介 在上一篇博客Mapping字段类型之object中&…...

ES嵌套(Nested)文档使用

1、nested介绍 nested&#xff1a;嵌套对象,&#xff0c;用于数组中的元素是对象的[{}, {}]&#xff0c;该nested类型是object数据类型的专用版本&#xff0c;它允许可以彼此独立地查询它们的方式对对象数组进行索引。 其他相关ES操作及介绍请参考《ElasticSearch6.5.4快速入门…...

前端开发——浏览器插件推荐

文章来自公众号&#xff1a;前端学海 前言 之前的一篇文章&#xff1a;前端开发——在线工具推荐 受到很多童鞋的喜爱&#xff0c;让我发现还是有很多前端开发同学需要工具推荐的&#xff0c;所以今天就推荐一下我在前端开发中用到的谷歌浏览器插件。 谷歌插件需要安装 vpn&…...

【HTML + CSS】笔记

页面设计 1.HTML&#xff1a;结构框架 2.CSS 3.JS HTML&#xff1a;超文本标记语言 <...>&#xff1a;标签/元素 <!DOCTYPE html>&#xff1a;解释文档类型为html head区域常用标签 <base> 使用后浏览器不再使用当前文档的URL&#xff0c;而使用指定的…...

卸载Oracle 12c

完全卸载Oracle 12c前言1. 停止服务Oracle服务2. 删除Oracle软件3. 删除Orcale安装文件4. 删除注册表项5. 删除环境变量前言 你好&#xff01; 卸载Oracle和卸载普通软件不一样&#xff0c;本文主要简述如何完全卸载Oracle 12c。主要分以下5个步骤&#xff1a; 1. 停止服务Or…...

使用浏览器作为代理从公网攻击内网

介绍在 Forcepoint&#xff0c;我们不断寻求改善我们产品所提供的防护。为此&#xff0c;我们经常研究不寻常或潜在新颖的攻击技术。最近的一个研究课题是从公网发起的针对 localhost 和内网的攻击。虽然不是新的攻击&#xff0c;但在安全研究社区之外&#xff0c;恶意 JavaScr…...

向日葵如何远程桌面Linux,最快的远程桌面向日葵软件

【IT168信息】远程桌面是网络管理员或软件销售商进行主机远程维护&#xff0c;操作演示所必需的工具. 但是&#xff0c;远程桌面的平滑度将直接影响效率&#xff0c;甚至影响用户对软件的购买. 那么如何确保远程桌面连接畅通无阻呢&#xff1f;第一步是确保网络平滑稳定. 尝试使…...

国产ETL工具 BeeDI 产品“实时同步“之 高阶 功能组件

BeeDI 提供“ 实时”企业数据集成。实时组件通过实时处理和传输业务数据的能力&#xff0c;增强了BeeDI的批处理功能。为满足当下复杂的业务需求&#xff0c;IT部门需要实时集成以加快核心业务流程和信息流。使用实时功能&#xff0c;IT部门可以使用统一界面&#xff0c;从BeeD…...

WPS----excel找到重要数据(条件格式,排序,筛选)学习笔记(小白)

条件格式&#xff0c;排序&#xff0c;筛选———找到重要的数据 1.条件格式 突出显示单元格规则 突出显示呢&#xff0c;就是为了帮你找到你想要的重要数据&#xff0c;这一项功能&#xff0c;最基本的就是可以用你想要的格式突出显示大于&#xff0c;小于或等于某个数的值&…...

excel或者wps怎么样将一个表的某列查找到另外一个表的对应列,excel或WPS根据身份证号或手机号在另一个表中自动查找填充完善信息。VLOOKUP函数最详细用法解读。

最近因为疫情&#xff0c;被派去支援数据处理&#xff0c;特分享一个excel/wps的使用小技巧。 需求如下&#xff1a; 表1为接种人员名单&#xff0c;缺少姓名等信息&#xff0c;只有一个身份证号码&#xff08;此处为避免隐私泄露&#xff0c;将身份证号码加了星号&#xff0…...

WPS增加正则处理函数,简直如虎添翼

在2020年时&#xff0c;我在《自加载宏让你的Excel支持正则处理函数》一文中演示了给office的Excel增加正则处理函数&#xff0c;文本处理瞬间变得记得简单。VBA的宏要在WPS中使用&#xff0c;也只需要安装wps对应的vba库即可&#xff0c;上面的文章中有下载链接。 上一篇我也…...

室内设计专业最好考全国计算机几级,室内设计专业最好考全国计算机几级

室内设计专业最低考全国计算机2级室内设计的概念自古至今&#xff0c;人类生活在大自然和人类自身所“设计”的世界中。随着科学技术的发展&#xff0c;更改变了大自然及人类社会的面貌。人们是越来越生活在“人为”、“人技”设计的世界之中。设计是连接精神文明与物质文明的桥…...

【Python基础系列】Part1. 基本数据类型与变量

一、变量与简单数据类型 1.Hello World hello_world.py中输入&#xff1a; print("Hello World")运行&#xff0c;然后会看到一下输出&#xff1a; Hello World具体流程&#xff1a;运行hello_world.py时&#xff0c;末尾的.py表明这是一个python程序&#xff0c…...

室内设计中的灯光学习教程

室内设计中的光 你会学到什么 了解如何在室内设计项目中设置和使用Vray灯 学习光处理的基础知识 学习室内设计中的灯光调节原则 了解光线在Vray中的工作原理 持续时间2小时 30分 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;云桥网络 机译&#xff09; 大小解压…...

2022 新版UI界面 影视微信小程序源码 附教程

2022 新版UI界面 影视微信小程序源码 附教程源码简介源码演示源码下载源码简介 2022 新版UI界面 影视微信小程序源码 附教程 环境PHP7.0 — fileinfo–Redis–SG11 MySQL5.5 Apache2.4 添加站点php7.0—-创建ftp—-上传后端文件《后端文件修改&#xff0c;/maccms/wxapi/confi…...

微信小程序抓包与逆向+微信小程序反编译教程+解包教程+解包工具

免责声明 做视频的初衷是为了学习交流&#xff0c;是想让自己在分享过程中学习到更多的东西 本人发布的视频、环境、软件、脚本、文章、资料等&#xff0c;都只用于学习交流安全技术&#xff0c;请不要用于任何非法用途, 否则后果自付 部分技术来源于技术网站&#xff1a;www.…...

微信小程序入门:在小程序中播放视频和发送弹幕

《移动软件开发》实验3 实验介绍&#xff1a; **本实验来自于周文洁老师的《微信小程序开发实战》第六章。**主要内容是使用小程序媒体API制作一个视频播放小程序&#xff0c;视频素材来自于某高校档案馆的《口述校史》栏目&#xff0c;它录制了多位耄耋之年的老教工回忆工作…...

微信小程序开发入门教程(三)

背景 上一篇文章我们主要介绍了微信小程序的几个配置&#xff0c;其中app.json是对于微信小程序全局的配置&#xff0c;page.json是对于小程序页面的配置&#xff0c;project.config.json是对于小程序开发工具的配置,sitemap.json是用于配置小程序和页面是否可以被微信检索。这…...

微信小程序授权登录教程(附视频教程)

微信官方文档&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/api/ B站视频教程地址&#xff1a; https://www.bilibili.com/video/BV1MV411y7cH 说到微信小程序&#xff0c;不可避免会触及到微信账号的授权登录&#xff0c;现在来说说一下哈&#xff01; 首先…...

408 考研《操作系统》第一章第二节:操作系统的发展与分类和操作系统的运行机制与体系结构

文章目录教程1. 操作系统的发展与分类1.1 手工操作阶段1.2 批处理阶段1.2.1 单道批处理系统1.2.2 多道批处理系统1.3 分时操作系统1.4 实时操作系统1.5 其他几种操作系统1.6 总结教程 操作系统的发展与分类https://www.bilibili.com/video/BV1YE411D7nH/?p4&share_source…...

嵌入式开发学习路线 及书籍推荐

嵌入式学习是一个循序渐进的过程&#xff0c;如果是希望向嵌入式软件方向发展的话&#xff0c;目前最常见的是嵌入式Linux方向&#xff0c;关注这个方向&#xff0c;大概分3个阶段&#xff1a; 1、嵌入式linux上层应用&#xff0c;包括QT的GUI开发 2、嵌入式linux系统开发 3…...

什么人适合学习嵌入式开发?

近些年&#xff0c;随着智能硬件的火热&#xff0c;嵌入式开发逐渐成为IT行业从业者择业的新宠儿。然而大家都知道&#xff0c;嵌入式开发是一个高门槛行业&#xff0c;并不是所有人都适合从事这项工作。这也是为什么经常有网友咨询&#xff1a;到底什么专业的人适合学嵌入式&a…...

openNI2-kinect2编译

参考&#xff1a;https://blog.csdn.net/zzu_seu/article/details/88322319 1.首先编译XnLib&#xff0c;在XnLib处右键->属性->c/c->常规->将警告视为错误->改成否 否则编译不通过 2.编译OpenNI&#xff0c;同样的道理&#xff0c;将警告视为错误关闭 3.编译…...

openni帧同步

在使用openni2时报错 Traceback (most recent call last): File “C:/Users/asus/Desktop/相机标定/test.py”, line 142, in dev.set_depth_color_sync_enabled(True) File “C:\Users\asus\AppData\Roaming\Python\Python38\site-packages\openni\openni2.py”, line 352, i…...

Keras生成式学习(五)

生成式深度学习 生成式学习即创造学习&#xff0c;深度学习开始创造 一、使用LSTM 生成文本 给定前面的标记&#xff08;token&#xff0c;通常是单词或字符&#xff09;&#xff0c;能够对下一个标记的概率进行建模的任何网络都叫作语言模型&#xff08;language model&…...

OpenNI2关于不能显示depth image问题

我们都知道OpenNI2与OpenCV可以通过Kinect获取深度与彩色图像。 但区别是OpenCV更强大满足需求更多&#xff0c;但是只能一帧一帧的保存。 而OpenNI2有一个videostream对象可以以视频类型保存数据。 因为我需要以视频类型保存数据&#xff0c;所以我选择OpenNI2来获取深度和彩…...

由于找不到openni2_Kinect开发教程八:OpenNI2显示深度、彩色及融合图像

在《Kinect开发教程二&#xff1a;OpenNI读取深度图像与彩色图像并显示》中&#xff0c;小斤介绍了OpenNI读取深度与彩色图像数据的方法&#xff0c;并且借助OpenCV进行显示。OpenNI2在接口上与OpenNI有了较大变化&#xff0c;具体更新可以查看《OpenNI Migration Guide》。从获…...

OpenNI2 内存管理

OpenNI2中主要涉及到内存管理部分的主要是(Depth, IR, Color)Frame buffer 部分&#xff0c;应用层通过OpenNI API可以获取到底层硬件传感器的各种数据&#xff0c;主要还是深度数据&#xff0c;红外图像数据&#xff0c;彩色图像数据。这其中就涉及到内存分配&#xff0c;引用…...

openni_grabber

openni_grabber.cpp #include <pcl/io/openni_grabber.h>#include <pcl/visualization/cloud_viewer.h>#ifdef _WIN32# define sleep(x) Sleep((x)*1000)#endifclass SimpleOpenNIViewer{public:SimpleOpenNIViewer () : viewer ("PCL OpenNI Viewer")...

安装OpenNI

前一段时间调Bug重装了下Eigen&#xff0c;结果回来再跑ORB-SLAM2的时候发现报错&#xff1a; make[2]: *** No rule to make target /usr/lib/libOpenNI.so, needed by ../lib/libORB_SLAM2.so。 停止。 CMakeFiles/Makefile2:178: recipe for target CMakeFiles/ORB_SLAM2.d…...

基于Openni 获取深度图像

from openni import openni2 import numpy as np import cv2openni2.initialize() # can also accept the path of the OpenNI redistributiondev openni2.Device.open_any() print(dev.get_device_info())depth_stream dev.create_depth_stream() color_stream dev.cr...

openni+linux+arm,OpenNI

OpenNI (Version 1.5.4.0 - May 7th 2012)---------------------------------------Website: http://www.primesense.comForum: http://groups.google.com/group/openni-devWiki: http://wiki.openni.orgBinaries are available at:http://www.openni.org/Downloads/OpenNIMod...

参加seo培训的一些建议

接下来我们就为大家进行一些建议&#xff1a;参加培训之前&#xff1a;对于一些白鼠朋友们&#xff0c;我们什么东西都不知道&#xff0c;我们如何才能够才能加seo培训呢或者是我们如何进行seo培训呢&#xff1f;其实我们一些新手朋友并不需要急于去参加seo培训&#xff0c;而是…...

npm vue 路由之一级路由(npm默认已经集成了vue)

npm vue 路由之一级路由&#xff08;npm默认已经集成了vue&#xff09; 文档https://v3.router.vuejs.org/zh/installation.html npm install vue-router3.5.2 --save 1.在App.vue上面添加 <router-view></router-view>2.在main.js上面添加 import VueRouter fro…...

谈谈培训机构的-骗局-给新人一些建议

前言 本文只谈"骗局"&#xff0c;不谈其他&#xff0c;绝不引战&#xff0c;如有错误&#xff0c;希望指出我会及时改正&#xff0c;想要讨论的可以在留言区写下你的观点和经历。 为什么要写这篇文章呢&#xff0c;近些年培训这个话题也比较火&#xff0c;很多在看这…...

给部分培训学生的建议

声明&#xff1a;本文观点只代表作者本人观点。本文没有歧视培训学校学生的意思&#xff0c;只是从一个招聘招聘者的角度来描述在招聘过程中遇到的一种现象&#xff0c;以及我对这种现象的一些思考&#xff0c;还有对培训学校学生的一些建议。 这里的“部分培训学生”&#xf…...

测试工具培训的一些建议

测试工具培训的一些建议现在越来越多的公司都购买或开始使用自动化测试工具以期来提高测试工作的效率。然而尽管购买到了适合自己公司或产品的测试工具&#xff0c;却并没有收到预期的效果。这是为什么呢&#xff1f;着其中有很多的原因&#xff0c;本文主要针对在培训中出现的…...

【给小公司培训的6个建议】

【给小公司培训的6个建议】1&#xff09;对新员工熟悉工作流程&#xff08;要有制度化为基础&#xff09;的引导&#xff1b;2&#xff09;引入新的管理流程&#xff08;ISO9001或其他管理方法&#xff09;提升员工的工作能力&#xff1b;3&#xff09;推行老带新&#xff08;即…...

关于软件组织培训的几个值得提倡的建议

1&#xff0c;培训课程要做到标准化&#xff0c;不因为老师的不同&#xff0c;而使培训主要内容发生过大变化。2&#xff0c;培训要有记录&#xff0c;包括学生的记录和老师的记录。3&#xff0c;培训要有计划&#xff0c;要根据培训需求来安排培训。4&#xff0c;值得安排一个…...

骨传导耳机怎么样

骨传导耳机还挺区分使用人群的&#xff0c;如果你是个音质发烧友&#xff0c;那估计是不能满足你的使用需求&#xff0c;但如果你是个喜欢边运动边听歌、边走路边听歌的人的话&#xff0c;那相信骨传导耳机对你来说是非常有用&#xff0c;不需要入耳佩戴设计&#xff0c;可以有…...

蓝牙耳机啥牌子好?发烧友总结热销蓝牙耳机排行榜

当前手机上的3.5mm音频接口少之又少&#xff0c;出门想听听歌&#xff0c;没有个真无线耳机还真不行&#xff0c;耳机作为作为手机的周边配件&#xff0c;是个必不可少的存在&#xff0c;下面由我推荐几款当前热销的蓝牙耳机&#xff0c;具体往下看看吧&#xff01; TOP1:南卡…...

Seq2Seq+Attention代码

import tensorflow as tf import matplotlib.pyplot as plt import numpy as nptf.reset_default_graph() # S: Symbol that shows starting of decoding input # E: Symbol that shows starting of decoding output # P: Symbol that will fill in blank sequence if current...

新手选择蓝牙耳机要注意什么?双11发烧友疯狂推荐五款蓝牙耳机

TWS蓝牙耳机就是我们所说的真无线蓝牙耳机&#xff0c;因为无线、便捷的优势得到了众多消费者的喜爱。这一两年销量十分之火爆&#xff0c;几乎已经人手必备。但现在市面上蓝牙耳机品牌众多&#xff0c;而且质量层次不齐&#xff0c;一不小心可能就上当受骗了。正逢双十一即将到…...

蓝牙耳机音质真的不好吗?初级发烧友应该选择什么样式蓝牙耳机

随着蓝牙技术的广泛普及&#xff0c;蓝牙耳机的价格也普遍走低。虽然低价蓝牙耳机常见&#xff0c;但那些高配却超低价的蓝牙耳机是否真的值得买呢&#xff1f; 首先我们需要从蓝牙耳机的原理上了解&#xff0c;其实蓝牙耳机工作大致分为四个步骤&#xff1a; 1.首先是手机或…...

平价实惠蓝牙耳机有哪些品牌?为什么发烧友都喜欢TWS蓝牙耳机

蓝牙耳机的出现给我们带来了极大地方便&#xff0c;就拿最流行的听歌来说&#xff0c;有了它你就不用再担心有线的蓝牙耳机携带不方便的问题了&#xff0c;解除了有线蓝牙耳机耳机线的牵绊。大街上随处可见戴着蓝牙耳机的人&#xff0c;玩游戏&#xff0c;打电话&#xff0c;听…...

小米手机用什么耳机音质好?发烧级音质蓝牙耳机推荐

小米品牌在我们日常生活中经常见到&#xff0c;蓝牙耳机作为现代人的必需品&#xff0c;使用人数一直都是递增的&#xff0c;市面上的蓝牙耳机品牌众多&#xff0c;但很多人不知道哪个牌子音质更好&#xff0c;作为一位耳机发烧友&#xff0c;近几天也是整理了几款音质表现出色…...

发烧友走心推荐五款高音质蓝牙耳机,佩戴舒适高性价比蓝牙耳机

耳机&#xff0c;相信大家对它并不陌生&#xff0c;只要是听歌就会用到它了。不过随着技术的发展&#xff0c;耳机的形态也发生了翻天覆地的变化&#xff0c;从以前的有线耳机到了现在的蓝牙耳机&#xff0c;而真无线耳机的出现就是蓝牙耳机发展的一个里程碑了&#xff0c;至此…...

哪个品牌蓝牙耳机好?2021发烧友良心推荐高音质蓝牙耳机

蓝牙耳机的出现不仅实现更智能便捷的体验&#xff0c;而且成为了我们生活和工作中的好帮手&#xff0c;不仅在开车的时候让我们轻松接听电话&#xff0c;跑步健身的时候也能带来不间断的音乐享受&#xff0c;更能让我们在工作中更有效率。说了这么多&#xff0c;你也该心动了吧…...

让声音回归本质,畅听天籁之声,KZ ZEX Pro动铁发烧耳机上手实测

虽然说先锋对于耳机这方面不是专业的&#xff0c;但近两年也玩了很多种不同类型的耳机。 头戴式、半/全入耳、骨/气传导&#xff0c;可以用五花八门来说&#xff0c;其中有无线、有线&#xff0c;得出来的结论就是&#xff0c;无线耳机在使用方法较为无拘无束&#xff0c;音质…...

时尚亲民的发烧耳机,无需焊接的模块化设计,小蝙蝠M0体验

这两年各种蓝牙耳机逐渐普及&#xff0c;手机上的3.5mm接口也早被淘汰&#xff0c;但还是有很多朋友想要入坑发烧耳机&#xff0c;不过市面上常见的发烧级耳机产品价格往往动辄上千&#xff0c;更适合骨灰级音频玩家选择&#xff0c;普通玩家想要入坑的话并不合适。不过上个月我…...

jq修复错误图片demo效果示例(整理)

<!doctype html> <html lang"en"> <head><meta charset"UTF-8"><title>修复错误图片</title> </head> <body><img src"error.png" alt"" class"surface_plot" onerror&…...

解决vue中img或元素背景图片无法显示或路径错误问题

1.在给vue中img元素动态绑定图片路径时会显示不出来图片&#xff1a; <span>普通:</span><img src"./video.png" alt"" srcset""> <span>动态绑定:</span><img :src"./video.png" alt"" …...

图片上传时,显示格式错误怎么办?

很多朋友在电脑的某些平台上传图片的时候&#xff0c;会遇到所上传的图片格式不符合要求&#xff0c;&#xff0c;导致图片上传不成功的问题&#xff0c;那么图片格式显示错误&#xff0c;该怎么解决&#xff1f; 我们先看一下还没有处理过的图片素材&#xff0c;格式均为PNG 那…...

img图片路径错误时,显示破图/图片裂开,如何处理?

img图片路径错误时&#xff0c;显示破图/图片裂开&#xff0c;如何处理&#xff1f; 首先我们可以设置img的alt属性&#xff0c;当图片显示不出来的时候就会显示对应的文字&#xff0c;但是此时还会出现一张图片破裂&#xff0c;很不美观。 如下&#xff1a; 一、第一种方式…...

爬虫 一些爬取图片时出现的错误

报错 ** 在爬取大量图片时遇到的报错** 解决方法&#xff1a; IP被封 更换headers或者换代理IP proxies {"http": "http://101.132.111.208:8082"}** 注&#xff1a;代理分为http和https两种&#xff0c;不能用混。** http的连接数超过最大限制。 r…...

Halcon常见错误

记录下平时用halcon时出现的错误 1.read_image读取图片错误 *drawMode:0绘制模式/drawMode:1读取模式 drawMode:1 dev_close_window () dev_set_draw (margin) dev_open_window (0, 0, 640, 480, black, WindowHandle) list_image_files (pic12, bmp, [], ImageFiles)read_im…...

微信小程序图片加载失败渲染层网络层错误

今天学习微信小程序 加载图片出错 Failed to load image /pages/index/image/index.jpg : the server responded with a status of 404 (HTTP/1.1 404 Not Found) 经过排查原来是标签中少了一个斜杠 <image src"image/index.jpg"></image>应该改为 &l…...

fastDFS图片服务器的一些常见错误

错误&#xff1a; getStoreStorage fail, errno code: 2 getStoreStorage fail, errno code: 0 报这些错误基本是上连接服务器错误了&#xff0c;然后1、首先就是查看服务器的IP地址&#xff0c;2、然后查看编译工具中的配置文件是不是错误3、接着就是重启服务&#xff08;可…...

angular 访问图片路径错误

在使用angular img src 指定为 angular 网络请求返回数据时&#xff0c;经常会遇到找不到图片路径问题的错误&#xff0c;导致这种问题的原因是 angular 数据还没有返回&#xff0c;渲染dom 时出错&#xff0c;解决方案为 将img src 更改为 ng-src...

Vue 图片加载错误处理(显示默认图片)

在Vue H5项目中&#xff0c;图片加载错误&#xff0c;需要给图片一个默认的配图&#xff0c;如图&#xff1a; 如果不给默认图片的话会是这样&#xff0c;如图&#xff1a; 这样是不是很丑&#xff0c;哈哈哈哈&#xff01; 那么我们应该怎么处理呢&#xff1f; 上码&#xf…...

微信小程序解决 加载图片出现渲染层网络层错误

在我们加载图片的时候往往会出现一些小问题&#xff0c;例如&#xff1a;明明图片加载成功了&#xff0c;但是控制台还是会报 渲染层网络层错误&#xff0c;找了很多地方&#xff0c;也发现不出来问题。 出现这种情况的原因在于&#xff0c;页面显示加载的时候image里面的值是…...

关于跳转页面报404、500错误设置自定义图片和文字

大家好,我是一名入门的菜鸟,如果你不经意间翻开了我的文章,谢谢您,您的支持是我前进的动力,让我们一起加油!! 由于不是名牌大学,只是一个普普通通的专科生,所以,我想通过自己的努力来获得我想要的,我不会放弃我的梦想,我也曾幻想着我成功的时候在朋友边吹嘘,也曾想象到我失败时…...

微信小程序开发——设置默认图片、错误加载图片

wxml&#xff1a; <image src{{imgArr[index]""?defaultImg:imgList[index]}} binderror"errorFunction" data-errorimg"{{index}}" /> 说明&#xff1a;      imgList: 图片数据源列表&#xff0c;需要在data中定义初始数据&…...

react native 自定义Image实现预加载图片及错误之后图片显示

使用自定义Image直接移步到文章结尾查看使用 需要添加的第三方库&#xff0c;prop-types&#xff0c;添加如下 npm install --save prop-types 我们知道react native 里面的Image组件&#xff0c;预加载图片只实现了ios&#xff0c;android没有。加载错误的图片也没有。不能…...

上传图片预览图片方向错误

上传图片预览图片方向错误 问题描述 ios手机上传竖拍照片会逆时针旋转90度&#xff0c;横拍照片无此问题&#xff1b;Android手机没这个问题。 解决方案 获取到照片拍摄的方向角&#xff0c;对非横拍的ios照片进行角度旋转修正。 利用exif.js读取照片的拍摄信息&#xff1b;…...

Nginx 上传图片500错误

今天写上传图片接口的时候&#xff0c;本地都能上传&#xff0c;把代码放到centos7 Nginx 环境时就报500错误&#xff0c;就连路由地址都不能访问&#xff0c;但是laravel也没有报错。 后来查看nginx错误日志&#xff08;/var/log/nginx/error.log&#xff09;发现以下错误信息…...

Glide4 设置默认图片和错误图片,即设置占位图

一&#xff0c;设置占位图&#xff1a; RequestOptions options new RequestOptions().placeholder(R.drawable.img_default)//图片加载出来前&#xff0c;显示的图片.fallback( R.drawable.img_blank) //url为空的时候,显示的图片.error(drawable.img_load_failure);//图片加…...

Glide异步加载图片,设置默认图片和错误图片

Glide.with(fragment).load(iconUrl).error( R.drawable.error) //异常时候显示的图片.placeholder( R.drawable.default) //加载成功前显示的图片.fallback( R.drawable.blank) //url为空的时候,显示的图片.into(Icon);//在RequestBuilder 中使用自定义的ImageViewTarget...

索尼官方答疑,你关心的PS VR2问题都在这里

随着索尼PS VR2即将开售&#xff0c;索尼在近期也逐渐公布更多关于PS VR2的消息&#xff0c;包括首发阵容&#xff08;2-3月期间&#xff09;共计37款。与此同时&#xff0c;外界对于索尼PS VR2提出了更多担心&#xff0c;彭博社爆料称&#xff1a;因PS VR2的预订量未及预期&am…...

SSM企业权限管理项目(一)

AdminLTE AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具&#xff0c;它提供了一系列响应的、 可重复使用的组件&#xff0c;并内置了多个模板页面&#xff1b;同时自适应多种屏幕分辨率&#xff0c;兼容PC和移动端后台模板框架github获取AdminLTE源码&#…...

C++设计模式(10)——原型模式

亦称&#xff1a; 克隆、Clone、Prototype 意图 原型模式是一种创建型设计模式&#xff0c; 使你能够复制已有对象&#xff0c; 而又无需使代码依赖它们所属的类。 问题 如果你有一个对象&#xff0c; 并希望生成与其完全相同的一个复制品&#xff0c; 你该如何实现呢&…...

uniCloud 云函数/云对象 node版本改变成12或18解决方案

爆红信息 right-hand side of instanceof is not an object 今天卡到一个本地跑好好的云对象部署云端直接报错了。 原因是这样的&#xff01;&#xff01; 1、你去看看你云函数依赖那npm install的插件node版本是不是有要求&#xff0c;博主开github看了尽然是node>12 2、…...

面对元宇宙算力瓶颈,AI算力专家宁畅开出三大秘方

文 | 智能相对论作者 | 沈浪元宇宙这把火&#xff0c;从2022继续烧到了2023。目前来看&#xff0c;资本市场对扎克伯格的元宇宙故事依旧抱以希望。2月1日美股收盘&#xff0c;Meta涨2.79%&#xff0c;报收153.12美元/股&#xff0c;盘后股价一度涨逾19%&#xff0c;市值暴涨将近…...

(考研湖科大教书匠计算机网络)第三章数据链路层-第七节:MAC地址、IP地址和ARP协议

pdf下载&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;MAC地址&#xff08;1&#xff09;概述&#xff08;2&#xff09;IEEE 802局域网的MAC地址A&#xff1a;地址格式B&#xff1a;地址表示方法C&…...

LeetCode刷题模版:273 - 275、278 - 279、283 - 284、287、289 - 290

目录 简介273. 整数转换英文表示【未理解】274. H 指数275. H 指数 II278. 第一个错误的版本279. 完全平方数283. 移动零284. 顶端迭代器287. 寻找重复数289. 生命游戏290. 单词规律结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕ…...

HDFS基本命令

目录 1.上传文件到HDFS文件系统 2.查看HDFS文件系统中的文件 3.查看上传到HDFS文件系统中指定文件的内容 4.从HDFS文件系统下载指定文件&#xff0c;并存放在指定文件中 5.删除HDFS文件系统中的指定文件 6.创建目录 7.创建多级目录 8.递归删除目录下的所有文件 9.删除…...

Java中if结构语句有几种格式?怎样执行?

在一个程序执行的过程中&#xff0c;各条语句的执行顺序对程序的结果是有直接影响的。所以&#xff0c;我们必须清楚每条语句的执 行流程。而且&#xff0c;很多时候要通过控制语句的执行顺序来实现我们想要的功能。流程控制类语句包括顺序、分支、循环三个结构语句。下面就来了…...

百趣代谢组学分享:基于大规模多中心人群的肝癌血清标志物研究

为什么都是多组学发的高分文章&#xff0c;我只想做代谢组学可以发高分吗&#xff1f; 答案当然是 Yes。接下来Lavender就为大家分享由大连物化所许国旺老师课题组发表在HEPATOLOGY上面的一篇文章。 百趣代谢组学文献分享&#xff0c;文章的题目为&#xff1a;A Large-Scale,…...

java面试题(十四)数据库之sql

开启掘金成长之旅&#xff01;这是我参与「掘金日新计划 2 月更文挑战」的第 N 天&#xff0c;点击查看活动详情 1.1 介绍一下数据库分页 参考答案 MySQL的分页语法&#xff1a; 在MySQL中&#xff0c;SELECT语句默认返回所有匹配的行&#xff0c;它们可能是指定表中的每个…...

Java顺序表模拟实现 + ArrayList介绍

文章目录前言一、模拟实现顺序表成员属性成员方法1&#xff0c;构造方法2&#xff0c;add——新增元素&#xff0c;默认在数组末尾新增2.1&#xff0c; isFull——判断顺序表是否已满2.2&#xff0c; expandCapacity——扩容3&#xff0c;add——在 pos 位置新增元素3.1&#x…...

html+css网页练习四

文章目录一、购物网站页面1、要求2、效果图3、index.html4、style.css二、活动页面1、要求2、效果图3、index.html4、style.css三、电商网站页面1、要求2、效果图3、index.html4、style.css四、搜索引擎页面1、要求2、效果图3、index.html3.1、index1.html3.2、index2.html4、s…...

行云洞见|为何行业权威都预测“云原生IDE 将成为常态”?

原文&#xff1a;《The year of the Cloud Development Environment 》 作者&#xff1a;RedMonk创始人 James Governor 最近CNCF在2023年云原生预测中谈到“云原生IDE 成为常态”&#xff0c;让CloudIDE又成为了云原生的焦点&#xff0c;市场上对CloudIDE的态度以及发展趋势讨…...

Fluke ADPT连接器给福禄克万用表插上翅膀

所需设备&#xff1a; 1、Fluke ADPT连接器&#xff1b; 2、Fluke 15B / 17B / 18B 简介 Fluke ADPT连接器允许个人计算机通过串行口与福禄克万用表进行通信。 计算机PC程序通过图形界面来输入数据和命令&#xff0c;与福禄克万用表进行交互。 Fluke ADPT连接器是一款先…...

VUE 年份范围选择器

VUE 年份范围选择器遇到一个需求,需要写一个年份选择器,是范围的年份选择器,比如:xxx年到xxx年 在使用elment UI的时候发现没有这种功能,于是采用el-date-picker 的年份选择器自己后封装了一个年份范围选择器 由于组件使用的地方很多,所以格式化都在组件中处理,回传格式在回传的…...

工业以太网交换机功能测试标准和方法

一、 数据帧过滤&#xff1a;测试被测设备数据帧过滤功能。 a) 测试步骤&#xff1a;1) 按图1搭建测试环境&#xff1b;2) 网络测试仪测试口1向测试口2和测试口3线速发送数据帧&#xff1b;3) 记录网络测试仪测试口2和测试口3数据接收情况&#xff1b;4) 在被测设备上配置端口2…...

Prometheus监控Elasticsearch

1 下载elasticsearch exporterhttps://github.com/prometheus-community/elasticsearch_exporter2 systemd 管理elasticsearch exporter service文件: /usr/lib/systemd/system/es_exporter.service[Unit] Descriptiones_exporter Documentationhttps://prometheus.io Afterne…...

Linux C 中数组名和结构体变量名代表的含义

在linux c 中数组和结构体是常见的数据结构类型&#xff0c;那么他们的标号名称 有代表神魔呢&#xff1f; 比如&#xff1a; int a&#xff0c; a 代表的是一个变量名程&#xff0c;它对应的地址中&#xff08;&a&#xff09;存的是一个整形值&#xff0c; 那么 char buf…...

如何控制Facebook投放广告成本?

一&#xff0c;Facebook广告成本高的原因和常见问题广告的成本很高&#xff0c;因为我们需要扩张正如前几篇文章所说&#xff0c;我们所要做的就是扩大对表现良好的产品和广告的广告。有两种扩展方式&#xff1a;这个过程也是我们的AD优化测试的一部分。因为在扩大规模的过程中…...

LeetCode——1604. 警告一小时内使用相同员工卡大于等于三次的人

一、题目 力扣公司的员工都使用员工卡来开办公室的门。每当一个员工使用一次他的员工卡&#xff0c;安保系统会记录下员工的名字和使用时间。如果一个员工在一小时时间内使用员工卡的次数大于等于三次&#xff0c;这个系统会自动发布一个 警告 。 给你字符串数组 keyName 和 …...

NLP之相似文本搜索

NLP之相似文本搜索相似文本搜索介绍应用场景常见算法1.text2vec流程代码2.gensim流程代码相似文本搜索 介绍 相似文本搜索是一种特殊的文本搜索&#xff0c;它的目的是找到与指定文本最相似的文档。这种技术通常通过计算文本间的相似度来实现&#xff0c;相似度可以通过各种方…...

python数据可视化开发(4):爬取对应地址的pdf文档并分类保存到本地文件夹(爬虫)

系列文章目录 python开发低代码数据可视化大屏&#xff1a;pandas.read_excel读取表格python实现直接读取excle数据实现的百度地图标注python数据可视化开发(1)&#xff1a;Matplotlib库基础知识python数据可视化开发(2)&#xff1a;pandas读取Excel的数据格式处理python数据可…...

Nginx是什么?有哪些优点?

Nginx(“engine x”)一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】&#xff0c;同时也是一个【POP3/SMTP/IMAP代理服务器】&#xff0c;是由伊戈尔赛索耶夫(俄罗斯人)使用C语言编写的&#xff0c;Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一提的是…...

matplotlib在一张图上绘制包含多条折线的多个子图

matplotlib在一张图上绘制包含多条折线的多个子图问题描述解决办法问题描述 实验用了多个数据集&#xff0c;并且用了多种对比实验的方法&#xff0c;想把结果展示在一张图上&#xff0c;就需要在一个图上画多个折线图&#xff0c;并且需要在一张大图上绘制多个小图。 解决办…...

【LeetCode每日一题】【2023/2/7】1604. 警告一小时内使用相同员工卡大于等于三次的人

文章目录1604. 警告一小时内使用相同员工卡大于等于三次的人方法1&#xff1a;哈希表1604. 警告一小时内使用相同员工卡大于等于三次的人 LeetCode: 1604. 警告一小时内使用相同员工卡大于等于三次的人 中等\color{#FFB800}{中等}中等 力扣公司的员工都使用员工卡来开办公室的…...

Arbitrum上首个跨链互操应用开启空投计划!

2月6日消息&#xff0c;波卡生态跨链互操作应用Avault 全链产品正式上线。据悉&#xff0c;该版本代码经由派盾完成审计&#xff0c;并在本周一正式支持Arbitrum网络。这标志着Avault从波卡生态出发&#xff0c;正式升级为区块链世界中第一个严格意义上的一站式跨链收益平台。 …...

浅学persistent

文章目录1. 背景2. 开机自启动流程3. adb kill -9 杀进程后会自动重启4. 小结1. 背景 在应用AndroidManifest文件下添加 android:persistent“true” 关键字&#xff0c;并把Apk预置到system/app目录下&#xff0c;可以给应用实现开机自启动和保活效果。 从以下两个疑问去找答…...

LeetCode题解 动态规划(二):62 不同路径;63 不同路径II

62 不同路径 medium 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&a…...

Flowable涉及的表介绍

文章目录一、ACT_RE_1、介绍2、表1、act_re_model&#xff08;流程模型&#xff09;2、act_re_deployment&#xff08;部署单元信息&#xff09;3、act_re_procdef&#xff08;已部署的流程定义&#xff0c;部署时加载的xml信息&#xff09;二、ACT_RU_1、介绍2、表1、act_ru_e…...

CompletableFuture的使用

文章目录1、Future2、CompletableFuture并行&#xff0c;并发 并发&#xff1a;一个实体上&#xff0c;多个任务有序执行 并行&#xff1a;多个实体上&#xff0c;多个任务同时执行 用户线程 用户线程是系统的工作线程&#xff0c;会完成程序需要完成的业务操作 守护线程 是一…...

【JavaSE】fail-fast与fail-safe源码分析

文章目录1. fail-fast与fail-safe概述2. fail-fast源码分析3. fail-safe源码分析4. 总结1. fail-fast与fail-safe概述 快速失败(fail-fast)&#xff0c;快速失败是Java集合的一种错误检测机制。 出现场景&#xff1a;线程A在使用迭代器遍历一个集合对象的时候&#xff0c;线程…...

LeetCode-127-单词接龙

1、虚拟节点广度优先搜索 为了获得最短转化序列中的单词数目&#xff0c;我们可以假设每个单词是一个节点&#xff0c;可以互相转化的节点之间存在边&#xff0c;这样我们就能将最短转化序列问题转化为图的广度优先搜索问题。考虑到图中可能存在环&#xff0c;因此我们需要额外…...

【pytorch】图片分类问题处理一般数据集,使其满足torchvision.datasets.ImageFolder调用结构

torchvision.datasets.ImageFolder调用结构&#xff1a; 对于简单的图像分类任务&#xff0c;并不需要自己定义一个 Dataset类&#xff0c;可以直接调用 torchvision.datasets.ImageFolder 返回训练数据与标签。 数据集应满足pytorch的格式要求&#xff0c;即将数据集分割为训…...

利用泰克示波器MSO56完成LED行业的测试

1、 测试需求背景LED 是英文 Light Emitting Diode 的简称&#xff0c;是一种具有两个电极的半导体发光器件&#xff0c;让其流过小量电流就会发出可见光。LED的电性能测试特点与其实与开关电源的电性能测试基本相同&#xff0c;但更加侧重电流测试&#xff0c;因为LED是由开关…...

分享106个JS选项卡,总有一款适合您

分享106个JS选项卡&#xff0c;总有一款适合您 106个JS选项卡下载链接&#xff1a;https://pan.baidu.com/s/1kdRJvTgcuZe_TpzrcnmQDQ?pwd0k2d 提取码&#xff1a;0k2d Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj css手风琴效果选项卡 jQ…...

2023年,想要年赚百万必懂的道理?

1.一个人只有经历过风雨沧桑&#xff0c;才会明白一个道理&#xff1a;“这个世界最大的监狱就是人的思维&#xff0c;而越狱最好的方式就是人的觉醒。” 2.人活明白了就会知道&#xff0c;不要拿自己去跟别人比较&#xff0c;后果不是忘记了自己&#xff0c;就是让自己失落。…...

ANTLR4入门学习(三)

ANTLR4入门学习&#xff08;三&#xff09;一、ANTLR快速指南1.1 匹配算数表达式的语言1.2 java测试代码1.3 增加通用模块1.4 使用访问者模式实现计算器1.5 实现带有清除内存的计算器功能1.6 使用监听器构建一个翻译程序&#xff08;暂无&#xff09;二、定制语法分析过程2.1 在…...

Windows 11数据备份软件怎么选?

Windows 11 有数据备份软件吗&#xff1f; 备份和还原&#xff08;Windows 7&#xff09;以及 Windows 10 中的文件历史记录也保留在 Windows 11 中。因此你可以使用它来备份你的用户文件。但是&#xff0c;仅限于此。备份和还原 (Windows 7) 允许你在 Windows 11 中选择其他文…...

第三章.神经网络的学习—损失函数

第三章.神经网络的学习 3.1 损失函数 损失函数是表示神经网络性能“恶劣程度”的指标&#xff0c;即当前神经网络对监督数据在多大程度上不拟合&#xff0c;在多大程度上不一致。 1.均方误差(mean_squared_error) 1).公式&#xff1a; 参数说明&#xff1a; yk&#xff1a;神经…...

10 个最适合开发人员的 GitHub 代码库 ✅

在 GitHub 的帮助下&#xff0c;开发人员可以轻松访问并与他人共享他们的代码。它已成为开发人员在项目上进行协作并了解最新开发趋势的重要工具。对于开发人员而言&#xff0c;GitHub 是寻找最佳存储库以帮助他们完成开发项目的宝贵资源。有这么多可用的存储库&#xff0c;可能…...

C++多态的一些记录

文章目录俩概念例子多态要满足如何实现纯虚函数和抽象类几个黑马的例子虚析构和纯虚析构俩概念 首先记住俩概念&#xff0c;地址的早绑定和晚绑定 静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址 &#xff08;我的理解&a…...

JVM笔记(6)—— JVM运行时问题案例

案例一&#xff1a;CPU占用过多 问题场景&#xff1a;服务器告警CPU占用过高 排查&#xff1a; 用top命令查看哪个进程对cpu的占用过高&#xff0c;获取进程id。可以看到PID为32655的进程此时占用了99.2%的CPU 根据进程id用ps命令进一步定位是哪个线程引起的cpu占用过高&am…...

【单细胞高级绘图】06.feature展示

这个图是前两天刚画的。箱型图、散点图、小提琴图组合在一起&#xff0c;档次瞬间上去了。 最近修稿过程中&#xff0c;审稿人提了一个建议&#xff0c;说是在某一张小提琴图上添加点&#xff0c;可以更好反映数据的分布。我理解他的意思&#xff0c;大概就是&#xff1a; 左图…...

SVN记录

如何查看自己电脑是否已经安装过SVN打开终端&#xff0c;敲入如下命令&#xff1a;svn -version如果有已经安装了svn&#xff0c;那么终端控制台将出现如下信息&#xff1a;svn: invalid option character: eTypesvn help for usage.如果出现如下&#xff0c;则说明当前系统没有…...

Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理

Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理 目录 Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、简单实现步骤 五、关…...

故障分析 | Redis AOF 重写源码分析

作者&#xff1a;朱鹏举 新人 DBA &#xff0c;会点 MySQL &#xff0c;Redis &#xff0c;Oracle &#xff0c;在知识的海洋中挣扎&#xff0c;活下来就算成功… 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请…...

【YBT2023寒假Day6 B】树的计数(贪心)(DP)(拉格朗日插值)

树的计数 题目链接&#xff1a;YBT2023寒假Day6 B 题目大意 定义无标号树的大小是节点个数&#xff0c;权值是最大独立集大小&#xff0c;树的儿子有序&#xff0c;然后给你 n&#xff0c;要你求对于每个 i1~n&#xff0c;j0~n&#xff0c;大小是 i 权值是 j 的不同树的数量…...

动手深度学习笔记(四十四)8. 循环神经网络

动手深度学习笔记(四十四)8. 循环神经网络 8. 循环神经网络8. 循环神经网络 到目前为止,我们遇到过两种类型的数据:表格数据和图像数据。 对于图像数据,我们设计了专门的卷积神经网络架构来为这类特殊的数据结构建模。 换句话说,如果我们拥有一张图像,我们需要有效地利…...

十种“软件滤波“程序,以及特点

1、限副滤波 /* A值可根据实际情况调整 value为有效值&#xff0c;new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter() { char new_value; new_value get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A …...

NLP发展关键模型

文章目录NLP中Bert的进展历史word embeddingELMOGPTBertNLP中Bert的进展历史 从Word Embedding到Bert模型——自然语言处理中的预训练技术发展史 word embedding word embedding:每个单词one-hot编码的向量矩阵&#xff0c;在大语言训练之后&#xff0c;该矩阵可以直接提取出…...

数学,千万别学过火

从网上看到有一本书叫《千万别恨数学》的书&#xff0c;是《千万别学英语》的姊妹篇。作者是韩国尖端技术研究院的博士。他以前对数学反感之极&#xff0c;大学的时候为了赚生活费&#xff0c;开始做家教&#xff0c;辅导高中学生学数学。因为读书的时间长&#xff0c;这种日子…...

leetcode栈和队列系列总结

这一部分其实就是关于这两个结构的特性&#xff0c;栈是先入后出&#xff0c;队列是先入先出&#xff1b; 大部分时候还是用数组和切片来实现的&#xff0c;go中有一个list&#xff0c;可以pushback等&#xff0c;但是主要在二叉树章节会用到&#xff0c;这里不怎么用 20 有效…...

第12章 MongoDB 删除集合教程

第12章 MongoDB 删除集合教程 本章节咱们为大家介绍如何使用 MongoDB 来删除集合。 MongoDB 中使用 drop() 方法来删除集合。 语法格式&#xff1a; db.collection.drop()参数说明&#xff1a; 无 return 值 如果成功删除选定集合&#xff0c;则 drop() 方法return true&…...

【面试题】对象、原型、原型链与继承 ,你了解多少?

前言原型、原型链、类与继承似乎无时无刻的出现在我们身边,无论你是在面试中亦或是平常学习和工作中都有它的身影。那么这个是又是什么东西呢 ? 我曾通过 avaScript高级程序设计、你不知道的JavaScript、MDN文档以及教学视频。但似乎仍是半知半解,但我依然相信能通过这篇文章能…...

js如何实现继承

1&#xff0c;原型链继承 让构造函数的原型&#xff08;prototype&#xff09;是另一个类型的实例&#xff0c;那么该构造函数new出来的实例就具有该实例的属性&#xff1b;缺点&#xff0c;每一个对象实例共享所有的继承和方法&#xff0c;无法向父类传参 function father&a…...

【动态规划】01背包问题(手画图解)

经典dp动规问题&#xff0c;01背包问题关键在于遍历顺序与初始化这两步的推导。 目录 文章目录 一、01背包问题 二、确定dp数组及其下标含义 三、确定递推公式 四、确定初始化 五、确定遍历顺序 六、举例推导dp数组 总结 一、01背包问题 有n件物品&#xff0c;每件的价值…...

JS 闭包

JS 闭包 一、如何产生闭包&#xff1f; 当一个嵌套的内部&#xff08;子&#xff09;函数引用了嵌套的外部&#xff08;父&#xff09;函数的变量&#xff08;函数&#xff09;时&#xff0c;就产生了闭包&#xff1b; 二、闭包到底是什么&#xff1f; 理解一&#xff1a;闭…...

13薪|架构师[北京市 - 朝阳区]-20k-35k

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓【工作内容】1、负责公司千万级数据、用户的产品平台整体技术规划、系统架构设计及优化&#xff1b;2、对设计系统的最终性能和稳定性、扩展性负责&#xff1b;3、参与各种技术方案评审&…...

Windows磁盘克隆软件推荐

把原有硬盘克隆到另一个更大的硬盘&#xff0c;你只需要一个好用的硬盘克隆软件。如果你不知道硬盘克隆软件怎么选&#xff0c;你可以尝试下傲梅轻松备份&#xff0c;这个磁盘克隆软件适用于Windows 11、Windows 8、Windows 7、Windows XP、Windows Vista。以下是它的一些优点&…...