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

39 - 安全技术与防火墙

39、安全技术和防火墙

一、安全技术

入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默看着你(监控)。

入侵防御系统:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断。

在判断攻击行为后会立即阻断。主动的防御(所有数据在进入本机之前,必须要通过的设备或者是软件)

在这里插入图片描述

二、防火墙

防火墙:隔离,工作在网络或者主机的边缘,内网和外网的中间。

对网络或者主机的数据包基于一定的规则进行检查。匹配到的规则。

放行,拒绝(数据包将会被丢弃)。

只开放允许访问的策略。(白名单机制,拒绝所有,允许个别)

防水墙:是一种防止内部信息泄露的产品。对外有防火墙的功能,对内是透明模式工作。类似监控。事前,事中,事后都知道。

2.1、防火墙类型及优缺点:

iptables这个linux自带的防火墙,一般用于内部配置。对外一般不使用(对外都使用专业的)。

firewalld linux自带的防火墙,centos7以后默认的防火墙。

包过滤防火墙(数据包进行控制)

网络层对数据包进行选择,选择的依据是防火墙设置的策略。

策略:ip地址,端口,协议。

优点:处理速度快,易于维护。

缺点:无法检查应用数据,病毒无法进行处理。

应用层防火墙:在应用层对数据进行检查,比较安全。

优点:更安全,问题可以精准定位。

缺点:所有数据都会检查,增加防火墙和负载。

2.2、iptables

iptables:工作在网络层,针对数据包实施过滤和限制。包过滤防火墙。

2.3、通信的要素:五大要素和四大要素

1、五大要素:源ip 目的ip 源端口 目的端口 协议(TCP/UDP)

2、四大要素:源ip 目的ip 源端口 目的端口

内核态和用户态:

内核态:设计到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码。

开发人员更关注内核态。

数据如果是内核态处理,速度相对较快。

iptables的过滤规则就是由内核态进行控制的。

用户态:

应用层软件层面,人为控制的一系列操作,使用功能。

运维人员只考虑用户态。

数据只通过用户态处理,速度比较慢的。

三、面试题—iptables的配置和策略:

3.1、四表五链:

3.1.1、iptables的四个表:

  1. **raw表:**用于控制数据包的状态,跟踪数据包的状态
  2. **mangle表:**修改数据包的头部信息
  3. **NAT表:**网络地址转换。可以改变数据包的源地址和目的地址。
  4. **filter表:**也是iptables的默认表,不做声明,默认就是filter表,过滤数据包,控制数据包的进出,以及接收和拒绝数据包。

3.1.2、五链(大写):

  1. PREROUTING链:处理数据包进入本机之前的规则(NAT表)

  2. INPUT链:数据包进入本机的规则(filter表,是否允许数据包进入)

  3. OUTPUT链:处理本机发出的数据包的规则,或者是数据包离开的本机的规则(filter表,一般不做设置。)

  4. FORWARD链:处理数据包转发到其他主机的规则,或者是否允许本机进行数据包转发。

  5. POSTROUTING链:处理数据包离开本机之后的规则(NAT表)

表里面有链,链里面有规则。

在这里插入图片描述

在这里插入图片描述

管理选项:在表的链中插入,增加,删除,查看规则。

匹配的条件:数据包的ip地址,端口,协议。

控制类型:允许,拒绝,丢弃。

3.1.3、注意事项:

1、不指定表名,默认就是filter表。

2、不指定链名,默认就是所有链(禁止范围)。一定要指定链。

3、除非设置了链的默认策略,否则必须执行匹配条件的(一般都是指定匹配条件的)。

4、选项,链名和控制类型都是大写,其余都是小写。

3.2、控制类型:

  • ACCEPT:允许数据包通过。

  • DROP:直接丢弃数据包,没有任何回应信息。

  • REJECT:拒绝数据包通过,数据包也会丢弃,但是会有一个响应的信息。

  • SNAT:修改数据包的源地址

  • DNAT:修改数据包的目的地址

3.3、管理选项(大写):

  • -t 指定表名 [-t 表名]

  • -A 在链中添加一条规则,在链尾添加。

  • -I 指定位置插入一条规则。

  • -P 指定默认规则 链的规则一般都是设置成拒绝(默认是允许。)

  • -D 删除规则

  • -R 修改规则(慎用)

  • -vnL:v是显示详细信息,n是以数字形式展示内容,L是才是真正的查看。

  • –line-numbers:显示规则编号,和查看一起使用

  • -F:清空链中的所有规则(慎用)

  • -X:清除自定义链中的规则

3.4、匹配条件:

  • -p:指定协议类型–tcp—icmp

  • -s:指定匹配的源ip地址

  • -d:指定匹配的目的ip地址

  • -i:指定数据包进入本机的网络设备(ens33)

  • -o:指定数据包离开本机的网络设备

  • –sport:指定源端口

  • –dport:指定目的端口

3.5、iptables的命令格式:

yum -y install iptables iptables-services ##安装防火墙服务
iptables [-t 表名] 管理选项 链名(大写) 匹配条件 [-j 控制类型]

所有控制类型前面都是:-j

1、iptables -vnL ##查看防火墙情况

[root@test1 opt]# iptables -A INPUT -s 192.168.168.10 -p tcp --dport 80 -j REJECT
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 REJECT     tcp  --  *      *       192.168.168.10       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

2、iptables --line-numbers -vnL 查看规则以及显示规则编号

[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 65 packets, 3996 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     tcp  --  *      *       192.168.168.10       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachableChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 41 packets, 3836 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

3、iptables -A 添加规则

1、80端口拒绝连接

iptables -A INPUT -s 192.168.168.20 -p tcp --dport 80 -j REJECT   ##20主机拒绝连接本机80端口[root@test2 ~]# curl 192.168.168.10
curl: (7) Failed connect to 192.168.168.10:80; 拒绝连接curl 测试nginx是否连接

2、拒绝所有其他主机ping主机

[root@test1 opt]# iptables -A INPUT -p icmp -j REJECT

3、允许所有其他主机ping主机

[root@test1 opt]# iptables -A INPUT -p icmp -j ACCEPT
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 26 packets, 1604 bytes)pkts bytes target     prot opt in     out     source               destination         24  2352 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

每个链中规则都是从上到下的顺序匹配,匹配到之后就不再向下匹配。

如果链中没有规则,则执行链的默认策略。

4、iptables -F----清空规则

5、iptables -I INPUT # 把策略放到指定位置#

[root@test1 opt]# iptables -I INPUT 1 -p icmp -j ACCEPT
[root@test1 opt]# iptables -I INPUT 2 -i ens33 -s 192.168.168.20 -p tcp --dport 80 -j REJECT 
[root@test1 opt]# iptables -I INPUT 1 -p icmp -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target     prot opt in     out     source               destination         2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           96  8064 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destination         Chain OUTPUT (policy ACCEPT 6 packets, 584 bytes)pkts bytes target     prot opt in     out     source               destination   

6、拒绝192.168.168.20主机–icmp到本机

[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p icmp -j REJECT    ##显示ping不通From 192.168.168.10 icmp_seq=329 Destination Port Unreachable

7、控制类型为-j DROP,丢弃192.168.168.20,192.168.168.30主机–icmp到本机的数据包

iptables -A INPUT -s 192.168.168.20,192.168.168.30 -p icmp -j DROP64 bytes from 192.168.168.10: icmp_seq=367 ttl=64 time=0.524 ms
##直接无反应,停止 

8、iptables -D删除策略,接着上面的策略,删除20icmp控制类型为-j DROP,丢弃192.168.168.20,主机–icmp到本机的数据包

[root@test1 opt]# iptables -D INPUT -s 192.168.168.20 -p icmp -j DROP

9、iptables -R INPUT #修改第#条策略

[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.20 -p icmp -j REJECT

10、-p tcp --dport 22增加规则–协议在前,端口在后

[root@test1 opt]# iptables -A INPUT -p tcp --dport 22 -j REJECT  #协议在前,端口在后

到终端清空规则,xshell即可重新连接

iptables -F

或者重新启动systemctl reatart iptables/iptales.servers

临时规则重启之后会重置

[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p tcp --dport 22 -j REJECT
##拒绝20通过22ssh端口访问10,但是10可以访问20[root@test2 ~]# ssh root@192.168.168.10
ssh: connect to host 192.168.168.10 port 22: Connection refused[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p tcp --dport 22 -j REJECT
[root@test1 opt]# ssh root@192.168.168.20
root@192.168.168.20's password: 
Last login: Wed Jun 26 11:26:06 2024 from 192.168.168.11
[root@test2 ~]# [root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 22 -j REJECT[root@test3 ~]# ssh root@192.168.168.10
ssh: connect to host 192.168.168.10 port 22: Connection refused[root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 22 -j REJECT
[root@test1 opt]# ssh root@192.168.168.30
root@192.168.168.30's password: 
Last failed login: Wed Jun 26 11:44:49 CST 2024 from 192.168.168.10 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Jun 26 11:33:04 2024 from 192.168.168.11
[root@test3 ~]# 

11、nginx端口为80

systemctl restart nginx
vim /usr/share/nginx/html/index.html  ##编辑nginx的访问页面

12、限制30主机访问80端口

[root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 80 -j REJECT[root@test3 ~]# curl 192.168.168.10
curl: (7) Failed connect to 192.168.168.10:80; 拒绝连接[root@test2 ~]# curl 192.168.168.10
curl是一个功能强大的命令获取和发送数据curl www.baidu.comcurl 192.168.168.10获取网页内容并且输出-O下载文件到本地-o 将文件下载到指定的路径-x 发送post请求-i 可以获取web软件的版本(服务端没有隐藏版本号)

13、删除INPUT下的规则

iptables -D INPUT 序号
[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 163 packets, 13930 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        1    60 REJECT     tcp  --  *      *       192.168.168.20       0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable
2        1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable[root@test1 opt]# iptables -D INPUT 1
[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 22 packets, 1356 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

14、修改INPUT下的策略

iptables -R INPUT #序号
[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.30 -p tcp --dport 80 -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 ACCEPT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80
@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 283 packets, 17564 bytes)pkts bytes target     prot opt in     out     source               destination         1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable0     0 DROP       tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.30 -p tcp --dport 80 -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 ACCEPT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:800     0 DROP       tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80

15、修改INPUT链本身默认的规则

iptables -P INPUT DROP   ##默认ACCEPT改为DROP
iptables -R INPUT 1 -p tcp --dport 22 -j ACCEPT 
iptables -vnL
Chain INPUT (policy DROP 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destination         0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
systemctl restart iptables.service  ##重启服务
[root@test1 ~]# systemctl restart iptables.service 
[root@test1 ~]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       85  5220 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

16、iptables -A INPUT -i设置设备

iptables -A INPUT -i ens33 -s 192.168.168.10 -p tcp -dport  80 -j REJECT

网络设备:

首先手动添加网卡设备(网络适配器)[root@test1 opt]# cd /etc/sysconfig/network-scripts/
[root@test1 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@test1 network-scripts]# vim ifcfg-ens36   ##改ip地址
[root@test1 network-scripts]# ifup ens36
[root@test1 network-scripts]# ifconfig 

17、拒绝整个网段连接到本主机

[root@test1 opt]# iptables -A INPUT -s 192.168.168.0/24 -p tcp --dport 80 -j REJECT

18、一次性对多个端口进行操作

yum -y install mariadb-server  #安装数据库
iptables -A INPUT -p tcp --dport 80:3306 -j REJECT   #端口从小到大写
iptables -A INPUT -p tcp --dport 22:80:3306 -j REJECT   ##最多写两个
iptables v1.4.21: invalid port/service `80:3306' specified
Try `iptables -h' or 'iptables --help' for more information.

19、-m 扩展模块,可以一次性禁止多端口,ip范围,指定mac地址。

iptables -A INPUT -p tcp -m multiport --dport 80,22,3306 -j REJECT
iptables -A INPUT -p tcp -m iprange --src-range 192.168.60.30-192.168.60.40 --dport 80 -j REJECT
--src-range 源地址池--dst-range 目的地址池-m multiport --sport 源端口池-m multiport --dport  目的端口池-m iprange --src-range  源地址池-m iprange --dst-range  目的地址池

20、mac地址

[root@test1 opt]# iptables -A INPUT -p tcp -m mac --mac-source MAC地址 -j DROP
ip + 协议 + 端口

相关文章:

39 - 安全技术与防火墙

39、安全技术和防火墙 一、安全技术 入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默看着你(监控)。 入侵防御系统:透明模式工作,数据包,网络监控…...

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…...

python中类的继承详解

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展 (1)在类的继承中,存在父类跟子类,子类可以继…...

社交风潮塑造者:探索用户在Facebook的影响力

在当今数字化社会中,Facebook不仅是人们社交互动的主要平台,更是塑造社交风潮和文化趋势的重要力量。本文将从另一个角度深入探讨用户在Facebook上的影响力,探索其如何通过个人行为和互动,影响和改变社会的各个方面。 个人表达和内…...

Kotlin设计模式:代理模式详解

Kotlin设计模式:代理模式详解 在软件开发中,设计模式是解决常见问题的一种优雅方法。本文将介绍Kotlin中的代理模式(Proxy Pattern),其应用场景,以及如何通过实例代码实现这一模式。 代理模式的目的 代理…...

PostgreSQL逻辑备份-pg_dump

1.pg_dump备份恢复 pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份, 它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时,给数据库打了一个快照,且在 pg_dump 运行过程 中发生…...

UG_NX11.0之Windows11中安装出错及解决方法

UG_NX11.0之Windows11中安装出错及解决方法 文章目录 UG_NX11.0之Windows11中安装出错及解决方法1. 安装出错2. 解决方法1. 设置以兼容性模式运行2. 配置环境变量 3. 再次安装问题解决4. 安装后可删除配置的环境变量(可选) 1. 安装出错 以管理员身份运行Launch.exe,如下 点击D…...

android view 设置过 transalationY/X 后 marginTop/marginStart/Left 不变

在 Android 开发中,当你对一个视图(View)设置了 translationY 属性后,这个视图的 marginTop 属性实际上并不会改变。这是因为 translationY 只会影响视图的绘制位置,而不会改变视图的布局参数。换句话说,translationY 是一个运行时…...

解释在Android中如何实现本地存储,包括SQLite数据库和SharedPreferences。

在Android开发中,本地存储是不可或缺的一部分,它允许应用程序在用户的设备上保存和检索数据。两种常见的本地存储方式是SQLite数据库和SharedPreferences。下面我将从技术难点、面试官关注点、回答吸引力和代码举例四个方面来详细解释如何在Android中实现…...

鸿蒙开发 之 健康App案例

1.项目介绍 该项目是记录用户日常饮食情况,以及针对不同食物摄入营养不同会有对应的营养摄入情况和日常运动消耗情况,用户可以自己添加食品以及对应的热量。 1.1登陆页 1.2饮食统计页 1.3 食物列表页 2.登陆页 2.1自定义弹框 import preferences from oh…...

umi3项目axios 请求参数序列化参数

由于get 请求中有一个日期参数 dates 是一个数组类型。 未处理参数时请求地址是这样的:/api/list?page1&pageSize10&keyWord&dates[]2024-06-10&dates[]2024-06-24 会发现dates后面有中括号,所以前端需要将参数格式处理变成如下:/api…...

js实现数据去重合并

应用场景,一个list,包含已经选择的数据和未选择的数据,新增数据到已选择的数据中。 要考虑到二次选择的数据和已经选择的数据有重复的可能,所以,第一步先从二次选择的数据中进行去重,然后再将两个list进行数…...

[ios逆向]查看ios安装包ipa签名证书embedded.mobileprovision解密 附带解密环境openssl

openssl smime -inform der -verify -noverify -in embedded.mobileprovision 解密embedded.mobileprovision文件 链接:https://pan.baidu.com/s/1UwNOWONKV1SNj5aX_ZZCzQ?pwdglco 提取码:glco –来自百度网盘超级会员V8的分享 可以使用everything 查看…...

tr、cut、split、grep -E

目录 tr命令:替换和删除 cut命令:快速裁剪 split命令:文件拆分 文件合并 面试题 1.现在有一个日志文件,有5个G,能不能快速的打开 2.cat合并和paste合并之间的区别? 3.统计当前主机的连接状态&#…...

《分析模式》漫谈08-单继承不是“唯一继承”

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 《分析模式》第2章这一段: 划线处的single inheritance,2004中译本的翻译: 翻译为“单继承”,是正确的。 2020中译本的翻译&#xff1a…...

c++字典

在C中,“字典”通常指的是std::map或std::unordered_map,它们是标准库中提供的关联容器,用于存储键值对。以下是一些常见的操作示例,包括插入、访问、删除和遍历元素。 使用 std::map std::map 是一种有序的关联容器,键…...

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err...

构建个人文件上传服务:Python Flask实现上传和下载完整指南

介绍 在本教程中,我们将学习如何使用Python Flask框架将文件上传到服务器,并使用SQLite数据库来跟踪上传的文件。我们将提供后端代码和一个示例项目的Git链接,以便您可以轻松地跟随本教程。 准备工作 首先,您需要安装Python和F…...

瓦罗兰特新赛季更新资讯 瓦罗兰特新赛季免费加速器

瓦罗兰特新赛季来喽,这是一款由拳头开发的免费第一人称射击游戏,游戏凭借其独特的玩法和丰富的英雄选择吸引了大量玩家。 我们可以在游戏中选择自己喜欢的角色出场与敌人进行对战,而且每一个角色都有自己独特的道具以及技能,使用好…...

希尔排序的实现

引言 排序在我们生活中十分常见,无论是购物软件中的商品推荐还是名次、排名都与排序算法息息相关。希尔排序是排序中较快的一种,而希尔排序实现的基础是插入排序。 排序的实现 插入排序(以升序为例) 插入排序的原理是从第二个数…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

基于 TAPD 进行项目管理

起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...