自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 RabbitMQ 延迟消息

指那些无法被正常路由到队列的消息,或者在队列中无法被消费者正常消费的消息。:队列通过 dead-letter-exchange属性指定了一个死信交换机,当消息变成死信时,RabbitMQ 会自动将消息发送到配置的死信交换机。当消息或队列的存活时间超过设定的 TTL 值时,消息将被自动删除或队列将被自动清除。死信交换机(Dead-Letter Exchange,简称 DLX)是 RabbitMQ 中的一个高级功能,它用于处理成为死信的消息。(2).消息是一个过期的消息,已经超时,无法消费。

2024-10-02 00:38:05 142

原创 RabbitMQ MQ的可靠性及消费者的可靠性

消息持久化是确保 RabbitMQ 中的消息在服务器重启或崩溃后不会丢失的重要机制。通过持久化消息,可以将消息存储在磁盘上,而不仅仅是内存中。3.6.0版本开始,RabbitMQ引入了惰性队列模式,这种模式下,消息会直接存储到磁盘而不是内存中,这样可以减少内存消耗,尤其适用于消息量特别大的场景。(可选):虽然交换器的持久化不是必需的,但建议也将其设置为持久化,以确保交换器的配置在服务器重启后能够恢复。开启持久化和生产者确认时,RabbitMQ只有在消息持久化完成后才会给生产者返回ACK回执。

2024-10-01 00:53:02 255

原创 RabbitMq生产者可靠性

通过持久化消息,可以将消息存储在磁盘上,而不仅仅是内存中。生产者确认需要额外的网络和系统资源的开销,尽量不要使用,如果一定要使用,无需开启Publisher-Return机制,因为一般路由失败是自己业务问题,对于nack消息可以有限次数重试,依然失败则记录异常消息。RabbitMQ生产者可靠性主要涉及确保消息能够可靠地发送到RabbitMQ服务器,并且在出现故障时能够进行适当的处理。(可选):虽然交换器的持久化不是必需的,但建议也将其设置为持久化,以确保交换器的配置在服务器重启后能够恢复。

2024-09-30 00:16:33 367

原创 缓存与数据库如何保持一致及MySQL和Redis的使用场景以及区别

在更新数据库数据后,先删除缓存中的数据,再进行数据库更新操作,这样可以保证在数据库更新期间,缓存中的数据已被删除,下一次查询时会从数据库中读取最新数据,并更新缓存。双写一致性是指在更新数据库数据之前,先更新缓存数据,确保缓存和数据库中的数据保持一致。MySQL可以处理大量的结构化数据,适用于数据量较大的应用,如数据分析、报表生成等。当数据库中的数据发生变化时,需要及时更新缓存,可以采用主动更新和被动更新两种策略。是在下一次查询缓存时,发现缓存已过期,重新从数据库中读取最新数据,并更新缓存。

2024-09-24 14:05:39 644

原创 Redis的分布式部署

在分布式Redis系统中,为了协调多个节点的并发操作,常常需要引入分布式锁(如Redis的RedLock算法)。Redis 主从复制是最简单的分布式部署方式,主要通过将一个Redis实例设置为主节点(Master),其他实例设置为从节点(Slave),实现数据的读写分离。Redis Cluster 是Redis官方提供的分布式架构,支持数据的自动分片和节点间的故障转移,适合大规模的分布式系统。在集群模式中,每个主节点有自己的从节点作为备份,形成主从关系,同时实现数据分片和高可用。

2024-09-23 16:23:05 1023

原创 Redis的过期删除策略

Redis 定期删除策略并不会遍历删除每个过期键,而是采用随机抽取的方式删除过期键,同时为了保证过期扫描不影响 Redis 主业务,Redis 的定期删除策略中还提供了最大执行时间,以保证 Redis 正常并高效的运行。Redis 的过期删除策略主要用于管理具有过期时间的键,确保在键过期后适时清除以释放内存。Redis 会定期随机抽取一部分设置了过期时间的键,检查它们是否过期,并删除过期的键。通过结合惰性删除、定期删除和内存淘汰策略,Redis 能在不同场景下灵活管理键的过期和删除,保证内存的高效利用。

2024-09-23 13:55:05 514

原创 Redis 持久化数据

即在重写 AOF 文件时,Redis 将同时生成一个 RDB 快照,并将最近的操作记录追加到 AOF 中。Redis 支持两种主要的持久化方式:RDB (Redis DataBase)和AOF (Append Only File),用于将内存中的数据持久化到磁盘上,以避免数据在服务器重启或意外故障时丢失。因此,它能恢复最近的所有操作,数据丢失的风险更小。:RDB 只能在设定的快照时间点恢复数据,因此可能会丢失快照之后的一些数据。:AOF 提供更高的数据一致性,因为它记录了每一次操作,几乎不会丢失数据。

2024-09-22 14:16:09 1059

原创 为什么Redis这么快及可以实现的功能

Redis 提供了多种持久化机制,如 RDB、AOF 和混合持久化机制,这些机制运行都非常高效,可以在不影响性能的情况下保证数据的安全。Redis 提供了多种高效的数据结构,如哈希表、有序集合等,这些数据结构能够快速地进行插入、删除、查找和排序等操作。Redis 的数据存储在内存中,而内存的读写速度远远快于硬盘。Redis 的灵活性使得它可以用于缓存、消息队列、分布式锁、计数器、会话管理等多种场景。Redis 是单线程的,因此可以避免线程切换和锁竞争等问题,提高了 CPU 的利用率和性能。

2024-09-21 13:56:52 587

原创 Redis 命令:

1.通用键命令set key value:设置指定键的值。 get key:获取指定键的值。 del key [key ...]:删除一个或多个键。 expire key seconds:设置键的过期时间(以秒为单位)。 ttl key:查看键的剩余存活时间。 exists key:检查指定键是否存在。2. 字符串(String)incr key:将键的整数值加 1。 decr key:将键的整数值减 1。 append key value:将值追加到键对应的现有值之后。

2024-09-20 14:39:26 582

原创 Redis 事务

Redis 事务(Redis Transactions)允许将一组命令按照顺序执行,并且保证这些命令在事务中要么全部执行成功,要么全部不执行。Redis 事务适合用于需要将多个操作捆绑在一起的场景,但需要注意事务并不能保证与 SQL 数据库类似的严格隔离性或回滚特性。如果这些键在事务执行前被修改,则事务不会执行,而是返回空结果(类似乐观锁机制)。(4).一致性的概念有分歧,假设在一致性的核心是约束的语意下,Redis 的事务可以保证一致性。后,所有接下来的命令都会进入一个队列,等到执行。

2024-09-20 14:20:01 505

原创 Linux 命令

tar -cvf archive.tar /path/to/dir # 创建 tar 包。zip archive.zip file1 file2 # 创建 zip 压缩包。find /path -name "*.txt" # 查找所有 .txt 文件。tail -n 20 file.txt # 显示最后20行。head -n 20 file.txt # 显示前20行。gunzip file.txt.gz # 解压 `.gz` 文件。

2024-09-18 17:13:21 825

原创 操作系统的进程

信号量是一种用于进程同步的计数器,常用于控制对共享资源(如共享内存)的访问,防止多个进程同时访问导致数据不一致。进程可以通过映射同一块内存段来实现通信,是所有IPC机制中最快的一种,因为进程之间无需进行数据拷贝。进程是操作系统分配资源的基本单位,也是竞争计算机系统资源的基本单位线程是最小的执行单元,是进程内部调度的基本单位。多进程要比多线程健壮,一个进程崩溃之后,不会对其他进程产生影响,但是一个线程崩溃之后, 整个进程都会崩溃。线程共享进程的地址空间,而进程之间的空间是相互独立的。

2024-09-18 15:04:27 491

原创 Tcp三次握手四次挥手和SSL/TLS

由于TCP连接是全双工的(即双方可以同时发送和接收数据),每一方都需要单独关闭各自的数据传输通道,确保连接的安全终止。它们提供了一种在客户端(如浏览器)和服务器之间建立安全通信的方式,确保数据传输的保密性、完整性和真实性。确保客户端和服务器都能够确认对方准备好建立连接,并且可以同步初始序列号,以保证数据传输的有序性和完整性。:在应用层和传输层之间执行,通常在TCP三次握手完成后进行,用于建立安全的加密通信。此时,客户端和服务器之间的连接已经建立,可以开始进行数据的传输。客户端在收到服务器的FIN后,进入。

2024-09-18 14:27:02 882

原创 http和https的区别及get和post请求的区别

GET 请求的数据是通过 URL 传递的,即将数据拼接到 URL 的后面,以?分隔,参数之间以 & 符号分隔。因此, GET 请求对于传输的数据大小是有限制的,通常在几千个字符之内。而 POST 请求则是将数据放在 HTTP 请求的请求体中进行传输,没有大小限制,可传输较大的数据量。(HyperText Transfer Protocol Secure,安全超文本传输协议)是用于网络数据传输的协议,它们的区别主要体现在安全性上。get是幂等的而post是不幂等的(不幂等就是多次执行相同操作,结果不同)

2024-09-18 13:44:51 554

原创 URL的执行流程

URL(统一资源定位符,Uniform Resource Locator)的执行流程是指当你在浏览器中输入一个URL并按下回车键时,从输入URL到最终在浏览器中显示网页的完整过程。URL 中包含了一个域名或 IP 地址,浏览器需要解析这个域名或 IP 地址,将其转换为 IP 地址。URL中可以包含端口号,如果没有指定端口号,浏览器会默认使用协议的默认端口号。当浏览器解析完 URL 之后,就会向服务器发送请求,请求相应的资源。URL中包含了资源的路径,浏览器会向服务器请求这个路径对应的资源。

2024-09-15 14:50:49 288

原创 TCP和UDP

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是两种常见的网络通信协议,属于传输层协议,负责在网络设备之间传输数据。数据以字节流的方式发送,传输过程中数据是连续的,TCP会将数据分割为小块传输。:面向数据报的传输。:由于需要建立连接、维护连接状态、数据确认和重传机制,TCP的数据传输效率相对低,但可靠性高。:由于无需建立连接、没有确认机制,UDP的数据传输效率高,适合实时性要求高的应用,但可靠性低。

2024-09-15 14:37:22 1007

原创 Mysql 视图&存储过程&触发器

在 MySQL 中,视图(View)、存储过程(Stored Procedure)和触发器(Trigger)是用于管理和操作数据库的高级功能。因此,视图可以用于简化复杂的查询,并提高代码的可读性和可维护性。触发器是当数据库中的某个事件(如插入、更新或删除)发生时自动执行的 SQL 代码。存储过程是预编译的 SQL 语句集合,存储在数据库中,并可以重复调用。在这个例子中,当插入员工记录时,如果工资为负数,则触发器会阻止插入操作并抛出错误。这些工具在数据库管理中可以大大简化操作、提高性能并确保数据的准确性。

2024-09-14 14:15:37 609

原创 Mysql 的查询过慢如何排查以及优化

(2).在MySQL中,可以使用EXPLAIN关键字来分析查询语句的执行计划,以帮助优化查询性能。EXPLAIN语句返回一个描述查询执行计划的结果集,包括了查询的操作顺序、使用的索引、表之间的连接方式等信息。性能:count(字段)

2024-09-13 14:42:36 593

原创 Mysql 索引

索引类似于书的目录,通过建立索引,可以快速找到数据在表中的位置,而无需扫描整个表。Hash 索引工作原理: 哈希索引基于哈希表实现,将索引字段的值通过哈希函数转换为一个特定的地址,查找速度很快。独立于表的物理存储方式,可以包含多个索引,查询效率相对于聚簇索引较低,但对插入、更新和删除操作的影响较小。如果索引列的数据类型与查询条件的类型不匹配,MySQL会进行隐式类型转换,从而导致索引失效。(3).普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。如果查询条件不从索引的最左边列开始,索引将失效。

2024-09-12 21:51:37 1047

原创 Mysql 存储引擎

回滚未提交的事务则使用Undo Log。InnoDB是MySQL的默认存储引擎,具有高可靠性和高性能,支持事务处理、行级锁定和外键约束。InnoDB的底层实现非常复杂,包括了存储结构、事务机制、锁机制、缓存机制等多个方面。InnoDB将存储空间分成称为“页”(Page)的最小存储单元,每个页的默认大小为16KB。InnoDB中的页类型主要有数据页、索引页、Undo页、系统页等。InnoDB实现了行级锁定机制,主要包括共享锁(S锁)和排它锁(X锁),以及多粒度锁定的意向锁(Intent Lock)。

2024-09-11 14:18:02 1058

原创 了解可重入锁

(Reentrant Lock),又称递归锁(Recursive Lock),是一种在多线程编程中使用的锁机制。:可重入锁内部通常维护一个计数器,记录当前线程获取锁的次数。:许多可重入锁实现允许设置“公平”策略,按请求锁的顺序(FIFO)分配锁。非公平锁通常会更高效,因为它减少了上下文切换的次数,但可能导致线程饥饿。:如果一个线程已经获得了锁,再次请求该锁时不会被阻塞,而是允许其成功获取锁并进入同步代码块。都在同一线程中调用,同一线程可以多次获取同一把锁。,使用更复杂且容易出错(需要显式获取和释放锁)。

2024-09-10 14:05:46 317

原创 乐观锁和悲观锁

CAS(Compare and Swap,即比较并交换)是一种用于实现多线程并发的无锁操作机制,常用于解决并发问题,确保多线程环境下的数据一致性。否则,说明数据已被其他事务修改,操作失败,需要重试。悲观锁假设数据冲突的可能性较大,因此对数据的操作采取“悲观”态度,读取数据时直接加锁,以防止其他事务修改数据。:假设冲突很少发生,不在操作前加锁,而是操作完成后通过版本号或时间戳来检测是否有冲突,适用于读多写少的场景。:假设冲突经常发生,操作前加锁,确保同一时刻只有一个事务能操作数据,适用于写多冲突高的场景。

2024-09-09 14:17:11 763

原创 什么是死锁,如何避免死锁

死锁通常发生在计算机系统中的多线程或多进程环境下,当每个进程都在等待其他进程释放某些资源时,系统就会出现死锁。例如,可以规定所有进程按照从低到高的顺序请求资源,这样就不会出现环路等待的情况。进程在申请资源之前,必须释放自己当前占有的资源,然后重新申请所需资源。一旦检测到死锁,通过终止进程或撤销部分进程的资源请求来恢复系统。:当一个进程已经占有了一些资源但无法获得新的资源时,它必须释放已经占有的资源。这样可以避免死锁的情况。存在一个进程—资源的循环链,其中的每个进程都在等待下一个进程持有的资源。

2024-09-08 14:05:43 179

原创 synchronized

变量的值会被加载到线程的工作内存中,但此时还未赋值到线程工作内存的副本中。偏向锁使得一个线程对一个对象的锁有偏向,默认情况下,锁会偏向于第一个获取它的线程。并发编程时,当一个线程对共享变量操作一半时,另外的线程也可能开始对共享变量进行操作,从而干扰前一个线程的操作。将读取到的变量值从线程的工作内存赋值给工作内存的变量副本中。依然会发生重排序,但有同步代码块,可以保证一个线程执行同步代码块中的代码,保证有序性。是Java中一种基本的同步机制,通过锁的升级过程和一系列的优化手段,可以适应不同的并发场景。

2024-09-07 14:57:30 793

原创 JVM 垃圾回收

垃圾回收(Garbage Collection, GC)是自动内存管理的一种机制,用于回收程序运行过程中不再使用的对象所占用的内存空间。它是一个较为昂贵的操作,会对整个堆(包括年轻代和老年代)进行垃圾回收,通常会导致较长的"Stop-The-World"(STW)暂停时间,因此开发者往往会尽量避免频繁的Full GC。在JDK 8之前,永久代存储类的元数据,PermGen满了可能会触发Full GC。应用程序的执行通常会暂停,这可能会导致较长的停顿时间(长时间的停顿会影响应用程序的响应性能)。

2024-09-06 14:30:55 941

原创 JVM 的类加载机制和双亲委派机制

在Java虚拟机(JVM)中,类加载机制是其核心组成部分之一,它负责将类(.class文件)加载到JVM的方法区内,并在需要时初始化这些类。JVM 的类加载机制和双亲委派机制为 Java 提供了灵活和安全的类加载方式,确保应用程序的稳定和高效运行。当一个类加载器去加载另一个类的时候,当前的类加载器会委托给其父类加载器查找是否加载过,如果加载过就直接返回,如果一直到最顶层加载器找不到,再由自顶向下进行加载。应用程序类加载器的父类为扩展类加载器,扩展类加载器的父类为启动类加载器。

2024-09-05 14:33:41 601

原创 什么是JVM

它是Java编程语言的核心部分,负责将Java字节码(bytecode)解释或编译成计算机可以执行的机器码,从而实现Java程序的跨平台特性。JVM负责管理程序运行时的内存分配和回收,包括堆(Heap)、栈(Stack)、方法区(Method Area)、本地方法栈(Native Method Stack)和程序计数器(Program Counter)。(1).JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码的文件,作用是为了跨平台的特性。解释执行字节码的指令。

2024-09-05 14:00:47 774

原创 Spring MVC

它是一个强大且灵活的Web框架,遵循经典的MVC设计模式,将Web应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。Spring MVC是企业级Java Web开发的一个强大框架,它不仅提供了灵活的配置和易于扩展的特性,还能够很好地集成Spring生态系统中的其他模块(如Spring Security、Spring Data等),使得开发过程更加高效和便捷。是处理用户请求的主要组件。是Spring MVC的核心,它是一个Servlet,负责处理所有传入的请求。

2024-09-04 14:19:09 796

原创 Spring Boot详解

它与 Spring 的其他项目如 Spring Data、Spring Security、Spring Batch、Spring Cloud 等无缝集成。提供了很多开箱即用的功能,如安全(Spring Security)、数据访问(Spring Data)、消息传递(Spring Messaging)等。Spring Boot 提供了一系列的默认配置,简化了 XML 和注解的配置,极大地降低了初学者的学习成本。提供了诸如健康检查、度量监控、应用程序信息和日志访问等一系列功能,以支持应用程序的运行和管理。

2024-09-03 14:06:38 1217

原创 什么是Spring

通过依赖注入,Spring 容器会自动将一个对象(即 bean)所依赖的其他对象注入到其构造函数、方法或字段中,开发者不需要自己手动创建这些依赖对象。它最初是作为一个依赖注入框架出现的,但经过多年发展,它已经成为了一个涵盖了各个层面的大型框架生态系统,包括核心容器、数据访问、事务管理、模型视图控制器(MVC)、AOP(面向切面编程)等。Spring 是一个轻量级的开源框架,旨在解决企业级应用开发中的复杂性。Spring 提供了全面的基础架构支持,使开发者能够专注于业务逻辑的实现。

2024-09-01 17:27:02 327

原创 IOC 容器

IOC(Inversion of Control,控制反转)容器的原理基于一种设计模式,其中对象的创建和依赖关系的管理由容器负责,而不是在代码中手动创建对象和管理依赖。IOC容器通过依赖注入(DI)机制实现这一原理。通过这些技术的有机结合,IOC容器能够动态地管理对象的创建和依赖关系,实现应用程序的松耦合设计,提高代码的可维护性和可扩展性。)和CGLIB(Code Generation Library)代理被广泛用于AOP和拦截器功能,允许容器在运行时为对象创建代理并增强其功能(如事务管理、日志记录等)。

2024-09-01 00:25:11 406

原创 Spring Aop

AOP是面向切面编程,它是对某一类事情的集中处理,它是一种思想,而Spring AOP是对这个思想的具体实现。Around Advice(环绕通知):在目标方法执行之前和之后执行,还可以选择不执行目标方法。Before Advice(前置通知):在目标方法执行之前执行,不能阻止目标方法的执行。After Returning Advice(返回后通知):在目标方法正常完成后执行。:切面是一个模块,它封装了多个类所共同关注的功能,比如日志记录、安全性和事务管理。:程序执行的某个点,比如方法的执行或异常的处理。

2024-08-31 16:16:12 284

原创 Java 反射

Java中的反射是指在运行时动态地获取类的信息并操作类的成员(字段、方法、构造函数等)。使用 getConstructors()、getDeclaredConstructors() 获取公共和所有声明的构造函数。使用 getMethods()、getDeclaredMethods() 获取公共和所有声明的方法。反射是 Java 提供的强大工具,特别适用于需要动态操作的场景,如框架开发和调试工具,但也需要谨慎使用以避免潜在的性能和安全问题。使用 Field.get(对象) 获取字段的值。

2024-08-29 22:40:50 395

原创 Java 重载和重写

(4)返回值:重写的时候我们的返回值可以相同也可以是类返回类型的子类,重载的时候在参数类型或者个数不同的情况下可以是任何返回类型。重写是指子类提供了与父类在方法名、参数列表、返回类型都相同的方法,以实现不同的功能。(1)方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行的多态性。(4) 重写方法可以抛出更少或更具体的异常(不能抛出新的、比父类方法声明的异常更宽泛的异常)。(5) 修饰权限:重写的访问权限是不能比父类更加的严格的,重载的访问权限修饰符可以是任意的。

2024-08-29 00:53:32 411

原创 Java面向对象编程三大特性:封装,继承,多态

父类的引用可以指向子类的对象,通过父类的引用调用同名的方法时,根据实际的对象类型确定调用哪个类的方法。继承是指一个类可以继承另一个类的属性和方法。被继承的类称为父类或超类,继承的类称为子类或派生类。子类可以重写父类的方法,实现自己的逻辑。(2)setter 方法用于修改属性的值,同时可以在 setter 方法中加入逻辑以控制数据的合法性。(2)Java 不支持多重继承,即一个类只能有一个直接父类,但可以通过接口实现类似的效果。(3)子类可以重用父类的代码,并可以扩展或修改父类的行为。注解重写父类的方法。

2024-08-29 00:21:22 435

原创 Mysql常用语句

MySQL将数据保存在不同的表中,‌增加了访问速度并提高了灵活性。‌它提供了丰富的数据操作功能,‌包括数据定义、‌数据操作、‌数据查询和数据控制等。这些是 MySQL 中一些最常用的语句,能够帮助你进行数据库的创建、查询、更新、删除等操作。

2024-08-26 21:22:20 176

原创 Git详解

‌它易于学习,‌占用空间小,‌性能极快,‌并具有廉价的本地库、‌方便的暂存区域和多个工作流分支等特性。‌如果更改了Git的安装位置,‌则需要手动配置Git的路径。‌然后,‌在IntelliJ IDEA中配置Git路径:打开“File”菜单,‌选择“Settings”(‌Windows/Linux)‌或“Preferences”(‌macOS)‌。如果你不想保留当前的更改,可以使用 VCS > Git > Revert,或者在项目窗口中右键点击文件选择 Revert 来回滚未提交的文件更改。

2024-08-25 20:09:11 844

原创 Java与Selenium进行Web自动化测试时常见报错和使用放法

‌它能够模拟真实用户在浏览器中的各种操作,‌对Web应用的功能、‌性能、‌用户界面等方面进行全面的测试。‌Java作为一种广泛使用的编程语言,‌与Selenium结合使用,‌可以充分利用Selenium的核心功能,‌如页面操作模拟、‌元素定位与操作、‌浏览器控制等。在实际应用中,‌Java开发者可以使用Selenium WebDriver API编写自动化测试脚本,‌通过JUnit、‌TestNG等测试框架组织和管理测试用例,‌实现跨浏览器和跨平台的Web自动化测试‌12。如果使用Gradle,可以在。

2024-08-24 13:02:31 357

原创 Fiddler详解

(3).配置远程连接(‌可选)‌‌:‌如果需要在手机上抓取HTTPS请求,‌还需在Fiddler中配置允许远程连接,‌并在手机上设置代理服务器指向Fiddler所在的电脑IP和端口,‌同时安装Fiddler证书到手机中。Fiters 是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。(2).重启Fiddler和浏览器‌:‌安装证书后,‌重启Fiddler和浏览器,‌以确保配置生效。取消断点 命令行直接输bpu。

2024-08-23 01:12:59 298

原创 01背包问题

0-1 背包问题(0-1 Knapsack Problem)是经典的动态规划问题之一,常用于解决资源分配的最优化问题。当放入物品时:dp[i][j]=dp[i-1][j-weight[i]]+value[i]当放入物品时:dp[j]=dp[j-weight[i]]+value[i]当不放物品的时候:dp[i][j]=dp[i-1][j]当不放物品的时候:dp[j]=dp[j]

2024-08-21 13:33:53 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除