- 博客(106)
- 资源 (1)
- 收藏
- 关注
原创 oracle中 rownum与rowid的理解,一千条记录我查200到300的记录怎么查?
使用`ROWNUM`可以限制查询结果的数量,但需要注意的是,`ROWNUM`是在查询执行后生成的,因此它不能在子查询中使用。2. 内层查询首先对所有记录进行排序(假设按`some_column`排序),并使用`ROWNUM`来限制返回的行数(最多300行)。在Oracle数据库中,`ROWNUM`和`ROWID`是两个非常重要的概念,它们在SQL查询中扮演着不同的角色。- 在某些情况下,如果表中的数据量非常大,使用`ROWNUM`可能会导致性能问题,因为它需要在查询执行后生成行号。
2024-07-20 16:20:49 439
原创 关于Cache(Ehcache,Memcached)
Ehcache是一个纯Java的分布式缓存,它提供了一个内存存储的缓存,并且可以配置为将数据持久化到磁盘。缓存是提高应用性能的重要手段,但也需要合理设计和维护,以避免潜在的问题。- 缓存粒度:确定缓存的粒度大小,如全表缓存、行缓存或字段缓存。- 缓存失效策略:选择合适的缓存失效策略,如超时失效、LRU等。- 使用合适的缓存库和工具,根据应用需求选择合适的缓存解决方案。- 缓存穿透:处理查询不存在的数据,避免对后端系统的压力。- 监控缓存的命中率和性能,根据实际情况调整缓存策略。
2024-07-20 16:18:40 406
原创 Java内存泄漏
内存泄漏是指程序在申请内存后,无法释放已申请的内存空间,导致这些内存无法被垃圾回收器(GC)回收。- 使用具有未正确实现(或根本不存在)的自定义equals()和hashCode()方法的对象,以及使用哈希检查重复项的集合,可能导致内存泄漏。如果这些内部类的实例在应用程序中传递并保持活动,它们可能无意中使它们的外部类实例也保留在内存中。然而,如果缓存的对象在不再需要时没有被适当地清除,它们可能占用大量内存,导致内存泄漏。- 如果这些监听器在不再需要时没有注销,它们可能阻止对象被垃圾回收,从而导致内存泄漏。
2024-07-18 20:32:05 556
原创 final字段总结
当final用于对象引用时,该引用一旦指向一个对象,就不能再指向其他对象,但对象本身是可以被修改的(除非对象的所有字段都是final)。- 在Java 8及更高版本中,lambda表达式可以捕获外部的局部变量,但这些变量必须被声明为final或实际上不可变。- 如果final变量在编译时就已经确定其值,则该变量的值会在编译时被替换为实际的常量值,从而提高运行时的效率。- 在匿名内部类中,外部类的局部变量必须被声明为final,才能在匿名内部类中访问。- 一旦被初始化,final变量的值就不可改变。
2024-07-18 20:29:58 495
原创 介绍threadlocal
线程复用:在使用线程池时,线程可能会被复用,这可能会导致 ThreadLocal 的值被错误地共享。- 数据隔离:通过 ThreadLocal 存储的数据是线程隔离的,即每个线程只能访问和修改自己的数据副本。- 日志记录:每个线程可能会产生不同的日志信息,使用 ThreadLocal 可以避免日志信息的混淆。在这个示例中,每个线程都会获取和更新自己的 ThreadLocal 变量副本,而不会影响其他线程的值。- 线程局部变量:每个线程可以访问自己的 ThreadLocal 变量,而不会与其他线程冲突。
2024-07-17 16:17:15 410
原创 实际项目中JVM调优
使用工具如VisualVM、JConsole、JProfiler等监控JVM的内存使用、CPU使用率、垃圾回收等。- 使用合适的JVM参数来优化性能,如-XX:+UseStringDeduplication来减少字符串的内存占用。- 调整垃圾回收器的参数,如Survivor区的比例(-XX:SurvivorRatio)、老年代的回收策略等。- 根据应用的特点选择合适的垃圾回收器,如Serial、Parallel、CMS、G1、ZGC等。- 调整堆大小(-Xms和-Xmx参数)以适应应用的内存需求。
2024-07-17 16:14:57 398
原创 对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理
5. Web层:使用`@RestController`和`@RequestMapping`注解处理HTTP请求,并返回响应。- 控制反转:是一种设计原则,它将对象的创建和它们之间的依赖关系交由外部容器来管理,而不是由对象自身来管理。3. 业务逻辑:在服务层中,使用`@Autowired`注解自动注入数据访问层的Bean,并调用其方法。1. 业务逻辑层:使用Spring的IoC容器来管理业务逻辑层的Bean,实现依赖注入。- 基于JDK的代理:使用Java的动态代理机制,要求目标对象实现一个接口。
2024-07-16 16:22:41 710
原创 Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入
1. 使用PreparedStatement: 通过使用参数化查询,可以确保应用程序发送的SQL语句的结构是固定的,只有参数值会变化,从而避免SQL注入。SQL注入是一种安全漏洞,攻击者可以通过在Web应用的输入字段中插入恶意SQL代码,来影响后台的SQL语句执行,从而获取、篡改或删除数据库中的数据。- `PreparedStatement` 是 `Statement` 的子接口,它代表了带有输入参数的预编译SQL语句。通过采取这些预防措施,可以显著降低SQL注入攻击的风险,提高Web应用的安全性。
2024-07-16 16:19:29 342
原创 redirect, forward区别
重定向是一种HTTP协议的机制,通过发送一个状态码给客户端(通常是浏览器),指示客户端需要向另一个URL发起请求。- 请求次数: 重定向需要两次请求(客户端到服务器,然后服务器给出重定向响应,客户端再次请求新的URL),而转发是一次请求。- 转发是服务器端的一种页面跳转机制,它在服务器内部将请求从一个页面转发到另一个页面,对客户端是透明的。- 安全性: 转发可以转发到应用内部的任何页面,而重定向只能重定向到客户端可以访问的页面。- 转发是一次请求,客户端不会感知到转发的发生,因此转发比重定向更快。
2024-07-15 09:55:44 428
原创 ConcurrentHashMap和HashTable的区别
由于 `Hashtable` 性能较差且不允许 `null` 值,通常推荐使用 `ConcurrentHashMap` 或 `Collections.synchronizedMap` 包装一个 `HashMap` 来提供线程安全性。- `Hashtable` 不允许键或值为 `null`,如果尝试插入 `null` 值,会抛出 `NullPointerException`。- `Hashtable` 的迭代器不是弱一致的,对 `Hashtable` 的迭代需要进行外部同步。
2024-07-14 11:38:36 517
原创 HASHTABLE, HASHMAP,TreeMap区别
使用 `Hashtable` 当你需要一个线程安全的键值对映射,但请注意,`Hashtable` 已经不推荐使用,因为它的性能通常不如 `HashMap`,并且可以通过使用 `Collections.synchronizedMap()` 方法来手动同步任何映射。- `TreeMap` 提供了有序的键值对,但可能在某些操作上比基于哈希表的 `HashMap` 和 `Hashtable` 慢。- `HashMap` 在大多数情况下提供了比 `Hashtable` 更好的性能,特别是在单线程环境中。
2024-07-14 11:36:39 362
原创 VECTOR,ARRAYLIST, LINKEDLIST的区别是什么?
使用 `Vector` 当你需要一个线程安全的列表,但请注意,`Vector` 已经不推荐使用,因为它的性能通常不如 `ArrayList`,并且可以通过使用 `Collections.synchronizedList()` 方法来手动同步任何列表。`Vector` 和 `LinkedList` 在随机访问上比 `ArrayList` 慢。- `Vector` 是 `java.util` 包中的一个类,继承自 `java.util.AbstractList` 类,并实现了 `List` 接口。
2024-07-13 23:10:05 631
原创 String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?
然而,如果只是需要连接或操作少量的字符串,使用 `String` 连接操作符(`+`)通常足够高效,尤其是在Java 6及以后的版本中,因为编译器和JVM会对字符串连接进行优化。- 因为 `String` 是不可变的,所以每次对 `String` 对象进行修改操作时,实际上都会创建一个新的 `String` 对象。- 与 `StringBuffer` 不同,`StringBuilder` 不是线程安全的,它的方法是异步的,因此在单线程环境中性能更优。为什么 `String` 是不可变的?
2024-07-13 23:08:20 407
原创 MySQL慢查询日志(Slow Query Log)
使用`long_query_time`参数设置慢查询的阈值,单位是秒。- 可以通过`log_output`参数指定慢查询日志的输出方式,可以是文件(`FILE`)、表(`TABLE`)或者两者(`FILE, TABLE`)。- 慢查询日志默认是关闭的,可以通过设置`my.cnf`或`my.ini`配置文件中的`slow_query_log`参数为`ON`来启用。- 当`log_output`设置为`FILE`时,`slow_query_log_file`参数指定了日志文件的路径和文件名。
2024-07-12 11:09:20 803
原创 REST简介
RESTful API通过使用一组受限的预定义操作来对资源进行操作,通常包括GET(读取资源)、POST(创建资源)、PUT(更新资源)、DELETE(删除资源)等。RESTful API通常用于构建Web服务,使得客户端可以通过网络与服务器交互,并操作或获取服务器上的资源。- 在REST架构中,所有的事物都是资源,每个资源都有一个唯一的资源标识符(URI)。- 服务器提供的响应应该包含超媒体链接,这些链接指向其他资源,允许客户端发现所有可用的动作。- 简单性:使用标准的HTTP方法,易于理解和实现。
2024-07-12 11:06:23 597
原创 Spring 的核心注解
一系列用于开启特定功能的注解,如`@EnableTransactionManagement`、`@EnableWebMvc`等。- 用于创建RESTful web服务的控制器,是`@Controller`和`@ResponseBody`的组合。- 特定于数据访问层的`@Component`注解,表示一个仓库组件,通常用于标记DAO类。- 特定于表现层的`@Component`注解,用于标记Spring MVC的控制器类。- 用于标记类作为配置类,可以包含多个`@Bean`注解的方法。
2024-07-11 10:16:00 1210
原创 Spring设计模式
用于创建可以以树状结构组合的对象,Spring中的JdbcTemplate和Node,以及Spring MVC中的视图解析器使用此模式。- 通过一个统一的接口来提供一个复杂系统的简化入口,例如,Spring的JdbcTemplate提供了数据库操作的门面。- 用于确保一个类的接口与另一个类的接口不兼容时,仍然可以一起工作,Spring的ORM支持使用了此模式。- Spring的AOP通过适配器模式连接不同的接口,例如,将不同的日志框架适配到Spring的日志抽象。
2024-07-11 10:13:11 784
原创 maven如何处理依赖冲突的问题?
使用`<dependencyManagement>`标签可以定义项目中所有依赖的版本号,确保整个项目中使用一致的依赖版本。- 如果一个依赖项带来了你不想要的子依赖,你可以在该依赖的配置中使用`<exclusions>`标签排除特定的子依赖。- 如果依赖的正式版本(verson)存在问题,可以尝试使用该依赖的SNAPSHOT版本,这通常是开发中的版本。- Maven会根据依赖的声明顺序来解析,即在`pom.xml`中后声明的依赖会覆盖先前声明的相同依赖。
2024-07-10 12:33:49 746 1
原创 redis中的事务和mysql中的事务有什么区别?
Redis:单个命令在Redis中是原子性执行的,但是Redis的事务并不保证整体的原子性,即事务中的命令要么全部执行,要么在遇到错误时不执行,但没有回滚机制。总的来说,MySQL的事务功能更为全面和强大,适用于需要保证数据强一致性的场景,而Redis的事务则更简单,适用于对一致性和持久性要求不高的高性能场景。- MySQL:事务具有原子性,即事务中的所有操作要么全部成功,要么全部失败,如果中途出现错误,整个事务将回滚到开始之前的状态。- MySQL:在事务中遇到错误可以回滚到事务开始前的状态。
2024-07-10 12:30:34 618
原创 comet实现原理
2. **HTTP流(Streaming)**:通过在页面中嵌入一个隐藏的iframe,将这个iframe的src属性设置为一个长连接请求,服务器就可以持续不断地向客户端发送数据。这种方式在浏览器中会显示为一个持续加载的状态,但可以通过一些技术手段解决这个问题。一旦客户端接收到响应,它会立即发送另一个请求,以保持与服务器的连接,实现连续的数据流。在实际开发中,需要注意一些问题,比如不要在同一客户端同时使用超过两个HTTP长连接,控制信息和数据信息使用不同的HTTP连接,以及服务器端的性能和可扩展性等。
2024-07-09 13:20:11 447
原创 进程与线程的区别
**线程**:线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程自身基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。- **进程**:进程是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的实例。- 线程是依赖于进程的,同一进程中的线程共享相同的内存空间,因此一个线程的崩溃可能影响到整个进程。- 线程是程序执行的最小单元,线程间的切换比进程快,因为线程共享同一进程的内存空间。
2024-07-09 13:17:58 689
原创 python深拷贝和浅拷贝之间的区别是什么?
在这个例子中,shallow_copied_list中的修改反映在original_list中,因为它们共享了子列表的引用。- 对于原始对象中的可变数据类型(如列表、字典、集合),浅拷贝只是复制了指向这些可变对象的引用,而不是复制这些对象本身。了解深拷贝和浅拷贝的区别对于编写涉及对象复制的Python程序非常重要,尤其是在处理包含复杂嵌套结构的对象时。- 浅拷贝创建一个新对象,但它只是复制了原始对象中元素的引用(对于可变对象)。- 修改原始对象或深拷贝对象中的元素,不会影响到另一个对象。
2024-07-08 15:50:40 498
原创 Linux 中什么是平均负载
在Linux系统中,平均负载(Load Average)是一个重要的性能指标,用来衡量系统在特定时间间隔内处理进程负载的能力。2. 等待运行的进程(Runnable):等待CPU资源的进程,即已经准备好运行但尚未分配到CPU时间的进程。- 如果平均负载低于CPU核心数,通常认为系统有足够的资源来处理当前的进程负载。- 15分钟平均负载:显示了过去15分钟内系统的平均活跃进程数。- 1分钟平均负载:显示了过去1分钟内系统的平均活跃进程数。- 5分钟平均负载:显示了过去5分钟内系统的平均活跃进程数。
2024-07-08 15:48:39 556
原创 什么是区块链的“智能合约”
区块链的“智能合约”是一种存储在区块链上的计算机协议,它能够自动执行合约条款,并在满足预设条件时自动执行相关操作。总结来说,智能合约作为区块链技术的重要组成部分,极大地增强了合约执行的自动化和可信度,适用于多种行业和场景。2. 部署合约:将智能合约部署到区块链网络上,通常需要支付一定的交易费用(如以太坊上的Gas费)。1. 编写合约:使用智能合约编程语言(如Solidity)编写合约代码,定义合约条款和触发条件。3. 不可篡改性:一旦部署到区块链上,智能合约无法被篡改,确保合约内容的可靠性和安全性。
2024-07-07 11:03:50 1688 1
原创 VirtualBox虚拟机网络设置(四种方式)
适用场景:适合多个虚拟机之间需要进行通信但不需要访问主机或外部网络的场景,如构建私有的测试环境。- Host-Only Adapter:适用于需要与主机通信但不需访问外部网络的虚拟机。- 工作原理:虚拟机直接连接到物理网络,与主机处于同一网络中,拥有独立的IP地址。- 适用场景:适合需要简单上网或访问外部网络的虚拟机,不需要外部设备访问虚拟机。- 工作原理:虚拟机与其他处于相同内部网络的虚拟机之间通信,完全隔离于外部网络。- 适用场景:适合需要虚拟机与主机进行直接通信但不需要访问外部网络的场景。
2024-07-07 11:02:06 3083
原创 GET方法与POST方法的区别
2. 数据长度限制:由于URL的长度限制,GET请求能够传递的数据量相对较小,一般不超过2048个字符。5. 幂等性:POST请求不是幂等的,即多次请求可能会导致不同的结果,通常用于提交表单或上传文件等操作。1. 数据传输位置:GET请求的数据通过URL传递,数据被附加在URL的末尾,以键值对的形式出现。1. 数据传输位置:POST请求的数据放在HTTP请求的主体部分(body),不会显示在URL中。5. 幂等性:GET请求是幂等的,即多次请求同一个资源,结果是相同的,不会有副作用。
2024-07-06 16:47:52 538
原创 什么是幂等性
在数学中,一个函数 \( f \) 是幂等的,如果对于所有输入 \( x \),有 \( f(f(x)) = f(x) \)。例如,绝对值函数 \( f(x) = |x| \) 是幂等的,因为 \( f(f(x)) = ||x|| = |x| \)。换句话说,一个操作是幂等的,如果执行一次与执行多次的效果是一样的。- DELETE 请求是幂等的,因为删除同一个资源一次和多次的结果是相同的,即该资源被删除。- PUT 请求是幂等的,因为它用于创建或更新资源,多次发送同样的数据不会产生不同的效果。
2024-07-06 16:45:39 597
原创 linux初始化一个文件系统
在 Linux 系统中,初始化一个文件系统包括创建分区、格式化分区以及挂载分区。这行表示将 `/dev/sdX1` 分区挂载到 `/mnt/mydisk`,使用 ext4 文件系统。使用 `fdisk` 或 `parted` 工具来创建新的分区。使用 `mkfs` 命令来格式化新分区。其中 `/dev/sdX1` 是你创建的新分区的设备文件。- `w`:写入分区表并退出。- `e`:创建扩展分区。- `n`:创建新分区。- `p`:创建主分区。- `d`:删除分区。
2024-07-05 12:33:55 590
原创 Linux 6种日志查看方法
journalctl --since "2023-07-01" --until "2023-07-02" 查看特定时间段的日志。- 示例:tail -n 50 /var/log/syslog 显示最后 50 行日志。- 示例:head -n 50 /var/log/syslog 显示前 50 行日志。- tail -f /var/log/syslog 实时跟踪日志更新。- 示例:less /var/log/syslog。- 示例:more /var/log/syslog。
2024-07-05 12:31:33 6916
原创 javascript判断是否是数字或者小数的方法
isNaN 函数可以用来判断一个值是否是 NaN(不是数字)。但它对一些非数字值(如字符串)也会返回 true,因此需要结合 typeof 操作符使用。如果解析结果是一个数字,并且字符串的内容完全可以解析为一个数字,就认为它是一个有效的数字或小数。在 JavaScript 中,可以使用几种不同的方法来判断一个值是否是数字或小数。Number 函数可以将一个值转换为数字。如果转换结果不是 NaN,则该值是一个有效的数字。使用正则表达式可以更精确地匹配数字和小数。2. 使用 parseFloat 函数。
2024-07-04 13:30:39 1348
原创 javascript url 传递参数中文乱码问题解决方案
在 JavaScript 中,传递 URL 参数时,如果参数包含中文字符,可能会出现乱码问题。这些函数会对 URL 参数进行编码和解码,确保特殊字符(包括中文字符)能够被正确传递和解析。// 输出:https://example.com?// 输出解码后的参数。// 输出编码后的URL。// 输出:中文测试。// 示例接收参数(假设当前URL包含参数)1. 传递参数(编码)// 获取URL参数。// 获取并解码参数。
2024-07-04 13:28:37 1103
原创 Servlet 3.0 新特性概述
这使得 web.xml 部署描述文件不再是必选的,从而简化了 Web 应用的部署过程。Servlet 3.0 是 Java EE 6 规范体系中的一部分,它在前一版本(Servlet 2.5)的基础上提供了一些新特性,以简化 Web 应用的开发和部署。6. 支持更多的请求方法:Servlet 3.0 支持更多的 HTTP 请求方法,如 GET、POST、PUT、DELETE 等,使得 Web 应用能够更好地处理 REST 风格的 Web 服务。
2024-07-03 10:47:48 427
原创 HTTP状态码302、303和307的故事
这个状态码与302状态码的含义和行为完全相同,唯一的区别在于,浏览器在重定向后,是否需要保持与服务器的连接。这个状态码与302类似,也是用于重定向,但服务器要求浏览器在跳转到新的URL后,依然保持与服务器的连接。通常,这个重定向的URL是临时指定的,浏览器在完成重定向后,就不再需要与服务器保持连接。总的来说,302、303和307这三个状态码都是用于重定向,主要区别在于浏览器在重定向后的行为。HTTP状态码是用于表示服务器响应客户端请求的状态码,其中302、303和307是表示重定向的几个状态码。
2024-07-03 10:46:12 959
原创 EL表达式
EL(Expression Language,表达式语言)是Java EE(现在称为Jakarta EE)中的一部分,主要用于在JSP页面、JSF等环境中进行数据的访问和处理。- `${sessionScope.user}` 会从 session 域中获取 `user` 对象。- `${user.name}` 会尝试获取名为 `user` 的对象的 `name` 属性。- `${user.login()}` 调用 `user` 对象的 `login()` 方法。- `${a + b}` 进行加法运算。
2024-07-02 09:05:07 456
原创 Batch入门学习
以下是 Batch 脚本的基本概念和一些示例,以帮助入门学习。通过学习基本命令、条件语句和循环,可以编写出功能强大的批处理脚本。1. 批处理文件:以 .bat 或 .cmd 为扩展名的文本文件,包含一系列 Windows 命令。3. 注释:使用 REM 或 :: 添加注释,注释内容不会被执行。2. 命令提示符:运行 Batch 脚本的环境,也称为 CMD。- @:在行首使用,表示不显示该行的命令回显。- cls:清屏,清除命令提示符窗口中的内容。- :::另一种添加注释的方式。- REM:添加注释。
2024-07-02 09:01:57 530
原创 彻底理解cookie,session,token
理解 Cookie、Session 和 Token 的工作原理及其各自的优缺点,有助于在 Web 开发中选择合适的技术,确保应用的安全性和性能。- 安全性: 由于存储在客户端,容易被篡改,安全性较低。定义: Session 是存储在服务器上的用户会话数据,通过唯一的会话标识(Session ID)来管理。定义: Cookie 是存储在用户浏览器中的小块数据,由服务器发送,并在后续请求中回传给服务器。- 存储位置: Cookie 和 Token 存储在客户端,Session 存储在服务器。
2024-07-01 10:16:35 392
原创 Junit测试原则
使用 @Before 和 @After:在测试方法执行之前进行必要的设置(Setup),在测试方法执行之后进行清理(Teardown)。JUnit 是一个流行的 Java 测试框架,用于编写和运行可重复的测试。- 确保测试的可重复性:测试应该在任何时候、任何环境下都能得到相同的结果。- 测试一个方法、一个行为:每个测试方法应只测试一个方法或一个行为。- 测试边界条件和异常情况:不仅要测试正常情况,还要测试边界条件和异常情况,以确保代码的健壮性。- 清晰性:测试方法命名清晰明了,描述了具体的测试内容。
2024-07-01 10:06:20 452
原创 Java对象为什么要实现serializable接口
在Java中,实现Serializable接口的对象可以被序列化和反序列化。这意味着对象的状态可以转换为字节流,以便存储或传输,之后可以通过反序列化恢复对象的状态。在上述示例中,Person类实现了Serializable接口,使其可以被序列化和反序列化。序列化使得对象可以通过网络传输,并在另一端进行反序列化,恢复成原来的对象。通过将对象序列化为字节流,然后再反序列化,可以创建一个独立的副本,而不是简单的引用复制。- 缓存:在某些情况下,将对象序列化并存储在缓存中,可以提高系统的性能。
2024-06-30 10:42:12 468
原创 Java 反射以及动态代理
Java 反射是一种允许程序在运行时获取关于类的信息并对类进行操作的机制。通过反射,你可以在运行时获取类的结构信息(如类名、方法、字段、构造器等),并可以动态调用方法和访问字段。- invoke(Object proxy, Method method, Object[] args):代理实例的方法调用逻辑。- 动态代理:用于在运行时创建代理类,实现接口的实例,并可在方法调用前后执行额外的逻辑。- getDeclaredMethods():获取类中所有声明的方法。3. Method类:提供了调用方法的方法。
2024-06-30 10:40:11 692
原创 系统运行缓慢CPU飙高等问题的排查思路
在Linux系统中,检查/var/log目录下的日志文件(如syslog、messages、dmesg)以获取系统级别的错误和警告信息。- 使用ps命令(Linux/Unix)或任务管理器的详细信息(Windows)来获取进程的详细信息。- 使用df命令(Linux/Unix)或磁盘管理工具(Windows)查看磁盘使用情况。- 使用netstat或iftop命令(Linux/Unix)查看网络连接和流量情况。- 使用iostat命令(Linux/Unix)查看磁盘I/O负载。
2024-06-29 09:40:05 616
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人