初识Dubbo学习,一文掌握Dubbo基础知识文集(4)-程序员宅基地

技术标签: Java专栏  Dubbo专栏  微服务  java  dubbo  服务器  服务发现  系统架构  Docker专栏  分布式  

在这里插入图片描述

作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
欢迎 点赞评论收藏

Dubbo 领域知识

链接 专栏
Dubbo 专业知识学习一 Dubbo专栏
Dubbo 专业知识学习二 Dubbo专栏
Dubbo 专业知识学习三 Dubbo专栏
Dubbo 专业知识学习四 Dubbo专栏

一、 Dubbo 知识文集学习(4)

01. RPC 使用了哪些关键技术,动态代理?

在这里插入图片描述

RPC(远程过程调用)使用了多个关键技术来实现远程调用过程,其中包括动态代理。

  1. 动态代理:RPC框架中的动态代理是一种实现客户端与服务端通信的技术。通常情况下,RPC框架会定义一个服务接口,并由客户端进行调用。客户端并不直接访问远程的服务,而是通过动态代理生成一个服务代理对象。客户端调用服务代理对象的方法时,实际上是调用代理对象的方法,并将方法调用封装成请求传递给服务端。动态代理隐藏了底层通信的细节,使得远程调用看起来像是本地调用。

  2. 序列化/反序列化:在RPC过程中,客户端需要将参数数据序列化成二进制数据,然后通过网络传输给服务端。服务端接收到请求后,需要将接收到的二进制数据反序列化成可用的数据。序列化和反序列化过程使得数据在网络中的传输变得可能。常见的序列化方式有JSON、XML、Protobuf等。

  3. 网络通信:RPC依赖于底层的网络通信来实现远程调用。客户端和服务端通过网络传输数据,而网络通信扮演了数据传输的角色。RPC框架会封装底层的网络通信细节,提供方便的API来进行数据的发送和接收。

  4. 服务注册与发现:RPC框架通常需要依赖服务注册与发现机制。服务提供者在启动时将自己的服务注册到注册中心,而服务消费者在调用服务前会从注册中心获取可用的服务地址。服务注册与发现机制可以实现动态的服务发现和负载均衡。

  5. 线程池管理:RPC框架通常会使用线程池来管理并发请求。当有多个请求同时到达时,线程池可以有效地管理和调度线程资源,提高系统的并发处理能力。

这些关键技术共同作用,使得RPC框架能够在分布式环境中实现跨网络的服务调用。每个RPC框架可能在实现细节上有所差异,但其基本原理和关键技术大致相似。

02. RPC 使用了哪些关键技术,RMI?

在这里插入图片描述

RPC(远程过程调用)使用了多个关键技术来实现远程调用过程,其中包括RMI(远程方法调用)。

RMI是一种支持远程调用的Java API,它允许在不同Java虚拟机之间进行远程通信,实现远程方法的调用和参数传递。下面是RPC中使用的一些关键技术,其中包括RMI:

  1. Stub和Skeleton:RMI使用Stub和Skeleton来实现远程方法调用。客户端通过Stub调用远程对象,并将请求发送到服务器端。Skeleton在服务器端接收请求,并将请求路由到适当的远程对象。

  2. 序列化/反序列化:在RMI过程中,参数和返回值需要被序列化和反序列化,以便在网络中进行传输。RMI使用Java序列化来实现对象的序列化和反序列化,将对象转换为字节流进行网络传输。

  3. 动态代理:在RMI中,客户端实际上是通过动态代理来实现远程方法的调用。当客户端需要调用远程对象的方法时,它实际上是通过动态代理生成的代理对象来进行调用。

  4. 注册表:类似于其他RPC框架中的服务注册与发现机制,RMI也需要一个注册表来实现服务的注册和客户端的查找。在Java RMI中,使用RMI注册表(Registry)来注册和查找远程对象。

  5. 网络通信:RMI依赖于底层的网络通信来实现远程调用。客户端和服务端通过网络传输数据,而网络通信扮演了数据传输的角色。

这些关键技术共同作用,使得RMI能够在Java环境中实现跨网络的远程方法调用。RMI提供了一种方便的方式来实现远程通信,并且能够与Java的面向对象特性无缝集成。

03. RPC 使用了哪些关键技术,序列化?

在这里插入图片描述

RPC 使用了序列化(Serialization)来实现在网络上传输数据的过程。序列化是将对象转换为字节流的过程,以便在网络上传输或者进行持久化存储。在 RPC 中,序列化的关键技术包括以下几点:

  1. 数据序列化:在 RPC 过程中,客户端需要将数据(如参数、返回值)序列化成字节流,并通过网络传输给服务端。服务端在接收到字节流后,需要将其反序列化成可用的数据。序列化技术使得对象能够在网络上进行传输,克服了不同系统、不同平台之间的数据兼容性问题。

  2. 序列化协议:RPC 框架通常会选择一种序列化协议,例如 JSON、XML、Protobuf、Avro 等来进行数据的序列化。不同的序列化协议具有不同的特点,如数据格式、性能、压缩比等,开发人员可以根据实际需求选择合适的序列化协议。

  3. 性能优化:对于大规模的 RPC 调用,序列化的性能尤为重要。因此,在选择序列化协议时,需要考虑其性能表现,包括序列化和反序列化的速度、序列化后数据大小等方面的性能指标。

  4. 版本兼容性:在进行 RPC 调用时,由于服务端和客户端可能存在不同的代码版本,因此序列化需要考虑版本兼容性的问题,以保证不同版本之间的数据兼容性。

总的来说,序列化是 RPC 中的关键技术之一,它确保了数据在网络中的传输和解析过程,同时也对性能、版本兼容性等方面提出了挑战。因此,在 RPC 的实践中,合理选择和使用序列化技术至关重要,以确保系统的性能和稳定性。

04. Dubbo 使用过程中都遇到了些什么问题?

在 Dubbo 使用过程中,一些常见的问题可能包括但不限于以下几个方面:

  1. 配置错误:Dubbo 涉及到大量的配置,包括服务提供者和消费者的配置、注册中心的配置、协议的配置等。配置错误可能导致服务无法注册、调用失败、网络通信异常等问题。

  2. 网络通信问题:Dubbo 作为RPC框架,依赖于网络通信来进行远程调用,可能会受到网络延迟、丢包、连接超时等问题影响。这些问题可能导致服务调用延迟增加、连接异常、甚至服务不可用。

  3. 性能问题:在高并发场景下,Dubbo 可能面临性能瓶颈、服务调用过慢、资源不足等问题。这可能需要对Dubbo的配置、线程池、负载均衡等方面进行调优。

  4. 版本兼容性:当服务提供者和服务消费者的 Dubbo 版本不一致时,可能会出现兼容性问题,导致服务调用失败或者数据转换出错。

  5. 容错和负载均衡:Dubbo 的容错机制和负载均衡策略对系统的稳定性和性能有重要影响。错误的容错策略或负载均衡配置可能导致服务调用异常或者负载不均衡。

  6. 服务治理:在一个复杂的分布式系统中,Dubbo 的服务治理(Service Governance)变得非常重要。服务的动态上下线、服务的依赖关系、服务监控等问题都可能影响系统稳定性。

  7. 监控和调试:对 Dubbo 的服务调用进行监控和调试也是一个常见的挑战。包括对服务调用链的追踪、性能指标的收集、日志的记录等。

解决这些问题需要对 Dubbo 框架有深入的了解,也需要对分布式系统、网络通信、性能优化等有一定的经验。此外,Dubbo 团队也在不断改进 Dubbo 框架,提供更好的文档、工具和支持,以应对这些问题。

05. Dubbo 的默认集群容错方案?

Dubbo 默认的集群容错方案是Failover Cluster(故障转移集群)。

在 Dubbo 中,集群容错是处理服务调用失败的机制。当服务消费者发起调用时,如果出现失败(如网络异常、连接超时、服务提供者异常等),Dubbo 默认使用 Failover Cluster 进行容错处理。Failover Cluster 会在调用失败时自动切换到下一个可用的服务提供者进行重试。

具体的容错逻辑如下:

  1. 服务消费者通过负载均衡策略从多个服务提供者中选择一个进行调用。

  2. 如果调用失败(如连接超时、服务提供者返回异常),Failover Cluster 会触发重试机制。

  3. Failover Cluster 会根据配置的重试次数和失败策略,自动选择下一个可用的服务提供者进行重试,直到达到最大重试次数或者成功调用为止。

  4. 在 Failover Cluster 中,默认的重试次数为 2 次。

  5. 如果所有服务提供者都调用失败,Failover Cluster 会将异常抛给服务消费者,由消费者自行处理。

Failover Cluster 是 Dubbo 默认的容错方案,适用于大多数场景下的服务调用。它在容错和可用性方面提供了一定程度的保障,并且可以通过 Dubbo 的配置文件进行调整和扩展,以满足不同的需求。

06. Dubbo 使用的是什么通信框架?

Dubbo 使用的是Netty作为其默认的通信框架。

Netty 是一个基于 Java NIO 的网络通信框架,它提供了高性能、异步、事件驱动的网络编程能力,适合于开发高性能、可靠性要求较高的网络应用。Dubbo 使用Netty作为底层的通信框架,用于处理服务提供者和消费者之间的远程调用、通信和数据传输。

通过利用Netty,Dubbo能够实现以下特性:

  1. 高性能的网络通信:Netty采用异步、事件驱动的网络编程模型,能够更高效地处理并发连接、网络IO等操作,为Dubbo提供了高性能的网络通信能力。

  2. 多种协议支持:Netty支持多种网络协议,包括TCP、UDP等,这使得Dubbo可以实现对不同协议的支持,满足不同场景下的需求。

  3. 可靠性和稳定性:Netty内置了很多网络通信相关的功能,比如连接管理、超时处理、心跳检测等,这些功能可以增强Dubbo在通信上的可靠性和稳定性。

  4. 跨平台性:Netty提供了良好的跨平台支持,可以在不同的操作系统上运行,这使得Dubbo可以在不同的环境中部署和应用。

总之,Dubbo使用Netty作为其通信框架,充分利用了Netty在高性能、可靠性、跨平台等方面的优势,为Dubbo提供了强大的网络通信能力。

07. Dubbo telnet 命令能做什么?

Dubbo 的 telnet 命令提供了一种基于 telnet 协议的交互式命令行工具,可以用于远程调试和管理 Dubbo 服务。通过 telnet 命令,可以实现以下功能:

  1. 查看服务列表:可以通过 telnet 命令查看当前 Dubbo 注册中心上注册的所有服务列表,包括服务接口、版本、分组、提供者信息等。

  2. 查看服务的详细信息:可以查看特定服务的详细信息,包括服务接口、版本、分组、提供者信息,以及服务的配置参数、调用统计等。

  3. 动态调整服务配置:可以通过 telnet 命令动态修改服务的配置参数,如超时时间、负载均衡策略、集群容错模式等。

  4. 触发服务方法调用:可以通过 telnet 命令手动触发特定服务的方法调用,用于测试和调试服务提供方和消费方的交互情况。

  5. 查看服务负载情况:可以查看特定服务提供者的负载情况,包括连接数、调用次数、成功次数、失败次数等,帮助监控服务的健康状态。

  6. 查看服务调用统计:可以查看服务的调用统计信息,包括调用次数、平均响应时间、成功率、失败率等,用于性能分析和监控。

总的来说,Dubbo 的 telnet 命令提供了一种简单而有效的远程管理和调试手段,可以帮助开发人员和运维人员进行 Dubbo 服务的监控、调试、管理等操作。这为 Dubbo 提供了很好的灵活性和可管理性。

08. Dubbo 支持哪些序列化方式?

Dubbo 支持多种序列化方式,其中包括以下几种常见的序列化方式:

  1. Hessian:Hessian 是一种基于 HTTP 的轻量级二进制序列化协议,适合跨语言的数据传输。Dubbo 默认提供了对 Hessian 序列化方式的支持。

  2. Java 默认序列化:Dubbo 也支持使用 Java 原生的序列化方式,即通过 Java 的 ObjectOutputStream 和 ObjectInputStream 进行对象的序列化和反序列化。这种方式比较通用,但性能一般。

  3. JSON:Dubbo 支持使用 JSON 格式进行数据的序列化和反序列化。JSON 是一种轻量级的数据交换格式,适合在 Web 开发中使用。

  4. FST:FST 是一种 Java 序列化库,Dubbo 支持使用 FST 进行高性能的序列化和反序列化操作。

  5. Protobuf:Dubbo 也可以支持使用 Protobuf(Protocol Buffers)进行序列化和反序列化。Protobuf 是一种 Google 开发的高效、灵活、扩展性好的序列化框架。

以上是 Dubbo 常见的几种序列化方式, Dubbo 也提供了扩展机制,用户可以根据自己的需求扩展相应的序列化方式。通过配置文件可以灵活选择和切换不同的序列化方式,满足各种场景下的需求。

09. 说说 Dubbo 核心的配置有哪些?

在这里插入图片描述

Dubbo 核心的配置主要包括以下几个方面:

  1. 提供者配置:用于配置 Dubbo 服务的提供者(Provider),包括服务接口、实现类、版本号、分组、暴露的协议、端口号等。

  2. 消费者配置:用于配置 Dubbo 服务的消费者(Consumer),包括服务接口、版本号、分组、引用的协议、超时时间、负载均衡策略、集群容错模式等。

  3. 注册中心配置:用于配置 Dubbo 的注册中心,包括注册中心的地址、协议、认证信息、超时时间等。Dubbo 支持多种注册中心,如 ZooKeeper、Redis、Consul 等。

  4. 协议配置:用于配置 Dubbo 服务的协议,包括协议名称、端口号、传输方式(如 TCP、HTTP、RMI)、线程模型、线程池等。

  5. 集群配置:用于配置 Dubbo 服务的集群容错机制,包括集群容错模式(如 Failover、Failfast、Failsafe)、重试次数、并行调用数等。

  6. 服务提供方限流配置:用于配置 Dubbo 服务提供方的限流策略,可以设置最大并发数、tps 限制、负载均衡策略等。

  7. 服务消费方限流配置:用于配置 Dubbo 服务消费方的限流策略,可以设置最大并发数、tps 限制、负载均衡策略等。

  8. 监控配置:用于配置 Dubbo 的监控中心,包括监控中心的地址、协议、认证信息、连接超时时间等。Dubbo 支持多种监控中心,如 Dubbo 自带的监控中心、Prometheus、Elasticsearch 等。

以上是 Dubbo 核心的配置项,通过对这些配置项的设置和调整,可以实现服务的注册与发现、协议的选择与配置、容错与负载均衡、限流与监控等功能,满足不同场景下的需求。

10. Dubbo 中服务调用是阻塞的吗?

Dubbo 中的服务调用默认情况下是阻塞的。即,当服务消费方发起 Dubbo 服务调用时,会等待服务提供方的响应,并且在等待响应时会阻塞当前线程,直到调用完成或超时。

然而,Dubbo 也提供了异步调用的方式,使得服务调用可以以非阻塞的方式进行。通过异步调用,服务消费方可以发起调用后立即获得一个 Future 对象,之后可以通过 Future 对象来获取调用的结果或处理调用完成的通知。

总体来说,Dubbo 中的服务调用既支持阻塞调用,也支持异步调用,可以根据业务需求来选择合适的调用方式。通过灵活运用阻塞和异步调用,可以更好地满足不同业务场景下的需求。

11. 如何解决服务调用链过长的问题?

服务调用链过长可能会引发一些问题,包括系统性能下降、调试困难、故障排查复杂等。为了解决服务调用链过长的问题,可以考虑以下几种方式:

  1. 服务拆分:根据业务功能和领域边界,将原本的大型服务拆分为多个小型服务。这样可以减少服务之间的依赖关系,缩短调用链长度,提高系统的可维护性和可扩展性。

  2. 异步调用:将一些非关键的、耗时较长的调用改为异步调用。通过异步调用可以将阻塞调用转换为非阻塞调用,减少对调用方的等待时间,提高系统的并发能力和响应速度。

  3. 使用消息队列:将一些耗时的操作和通知类的业务通过消息队列进行异步处理。调用方只需将消息发送到消息队列,而不需要等待结果返回。消息队列可以实现削峰填谷的效果,将服务解耦,减少调用链长度。

  4. 缓存数据:对于一些重复性的请求,可以使用缓存数据来减少对后端服务的调用。合理使用缓存技术可以降低调用链长度,提高系统的响应速度。

  5. 使用服务网关:通过引入服务网关,将一部分共性的逻辑和处理提前到网关层进行,避免服务之间的过长调用链。服务网关可以做请求路由、限流、鉴权等功能,减少服务之间的耦合度。

  6. 微服务治理:使用微服务治理框架,如Dubbo、Spring Cloud等,可以对服务进行注册、发现、负载均衡等管理和控制。通过良好的服务治理,可以优化服务调用链,提高系统的可用性和可靠性。

通过上述的方法,可以有效地解决服务调用链过长的问题,提升系统的性能、可扩展性和可维护性。同时,需要根据具体的业务场景和需求选择合适的解决方案。

12. 你还了解别的分布式框架吗?

在这里插入图片描述

当然,我对其他一些常见的分布式框架也有了解。以下是几个常见的分布式框架:

  1. Apache Kafka:Kafka 是一个分布式的流处理平台,主要用于处理高容量的实时数据流。它支持消息的持久化、发布与订阅、批量处理和流式处理等功能,具有高吞吐量、可扩展性和可靠性。

  2. Apache ZooKeeper:ZooKeeper 是一个开源的分布式协调服务,用于管理和维护分布式系统的配置信息、命名服务、分布式锁等。它提供了高性能的文件系统、通知机制和分布式数据一致性的保障。

  3. Spring Cloud:Spring Cloud 是一个开源的微服务框架,基于 Spring Boot 构建。它提供了一套完整的解决方案,包括服务注册与发现、负载均衡、远程调用、断路器、配置管理等,以简化分布式系统开发和维护的复杂性。

  4. etcd:etcd 是一个分布式的键值存储系统,提供了高可用性和可靠性的服务发现和配置存储功能。它支持分布式事务、分布式锁和集群管理等功能,被广泛应用于容器编排系统和服务发现框架中。

  5. Netflix OSS:Netflix OSS(Open Source Software)是 Netflix 开源的一系列分布式系统开发工具包,包括 Eureka、Hystrix、Ribbon、Feign 等。这些工具包提供了服务注册与发现、负载均衡、容错保护、客户端服务调用等功能,用于构建高可用的分布式系统。

以上列举的分布式框架只是其中的一部分,每个框架都有其特点和适用场景。根据实际需求和系统架构的复杂度,选择合适的框架可以提高分布式系统的稳定性和可扩展性。

13. Dubbo 中服务读写推荐的容错策略是怎样的?

在 Dubbo 中,服务的读写推荐使用不同的容错策略:

  1. 读操作:对于读操作,通常会推荐使用 Failover 容错策略。Failover 是 Dubbo 的默认容错策略,它会在调用失败时自动切换到下一个可用的服务提供者进行重试。例如,如果一个服务有多个提供者实例,当调用其中一个失败时,Dubbo 会自动切换到下一个可用的提供者进行重试,直到调用成功或达到最大重试次数。

  2. 写操作:对于写操作,通常会推荐使用 Failfast 容错策略。Failfast 是一种快速失败的方式,当调用失败时会立即返回异常,不会进行重试。这是因为写操作通常具有对数据的修改或更新行为,必须保证数据的强一致性和完整性。

需要注意的是,以上是一种常见的推荐策略,实际采用的容错策略应根据具体的业务需求和场景进行选择。Dubbo 还提供了其他的容错策略,如 FailbackFailsafeFailover 等,可以根据具体需求进行配置。

此外,Dubbo 还支持自定义容错策略,可以根据特定的业务需求实现自己的容错逻辑。通过合理选择和配置容错策略,可以提高服务的可用性、性能和稳定性。

14. Dubbo 是什么通信框架,还有别的选择吗?

Dubbo是一种高性能Java RPC框架,它用于提供分布式服务的远程调用和通信。Dubbo提供了服务治理、负载均衡、容错处理、RPC通信等功能,是一个完整的分布式服务框架。

除了Dubbo之外,还有其他一些常见的Java通信框架,包括:

  1. Spring Cloud:Spring Cloud是一套基于Spring Boot的分布式系统开发工具集,提供了众多分布式系统的基础设施,如服务注册与发现、服务调用、负载均衡、断路器、网关等,是构建微服务架构的首选框架之一。

  2. gRPC:gRPC是由Google开源的高性能、开源的RPC框架,基于HTTP/2协议,支持多种编程语言,可以自动生成客户端和服务端的代码,提供高效的远程调用和通信。

  3. Thrift:Thrift是Apache开源的跨语言的RPC框架,可以定义和生成多种语言的接口定义文件,支持多种数据序列化协议,提供高性能的通信和跨语言的支持。

  4. RSocket:RSocket是一个新兴的跨语言的、异步的、流式的通信协议,支持多种通信模型和语言。RSocket提供了良好的性能和灵活的通信模式,适用于构建高性能的分布式系统。

以上列举的通信框架只是其中的一部分,在实际项目中,选择通信框架时需要根据具体的业务需求、技术栈和团队技术能力来进行综合考量,以选择最适合的框架。

15. Dubbo 在安全机制方面如何解决的?

在这里插入图片描述

Dubbo 在安全机制方面解决安全问题的方式主要包括以下几个方面:

  1. 通信加密:Dubbo 支持通过 SSL/TLS 协议对通信进行加密,确保在网络传输过程中数据的机密性和完整性。通过配置 SSL/TLS 证书和加密算法,可以保障 Dubbo 服务之间的通信安全。

  2. 身份认证:Dubbo 提供了多种身份认证机制,包括基于用户名密码的认证、基于 Token 的认证、基于数字证书的认证等。通过这些认证方式,可以确保服务提供者和消费者的身份合法性,防止未授权的访问和调用。

  3. 授权访问:Dubbo 支持对服务方法进行精确的访问控制,可以通过配置文件或代码方式限制特定用户或角色对某些服务或方法的访问权限,以保障服务的安全性。

  4. 防止攻击:Dubbo 可以配置一些防御机制来防止常见的网络攻击,比如限制并发访问数、防止 DDos 攻击、保护系统免受恶意请求等。

除了上述方面,Dubbo 还支持与其他安全技术集成,比如与 Spring Security、Shiro 等安全框架进行整合,提供更全面的安全解决方案。同时,在更高级的安全场景下,Dubbo 还可以与分布式安全管理系统进行集成,确保在复杂的多系统、多环境的分布式安全管理需求下能够提供一致的安全保障。

16. Dubbo 服务负载均衡策略是什么?

在这里插入图片描述

Dubbo 提供了多种服务负载均衡策略,可以根据业务需要进行配置。以下是 Dubbo 中常用的服务负载均衡策略:

  1. Random Load Balance(随机负载均衡):随机选择一个可用的服务提供者进行调用,每次请求都随机选择一个服务提供者,适用于服务提供者之间性能差异不大的情况。

  2. Round Robin Load Balance(轮询负载均衡):按照轮询的方式依次选择可用的服务提供者进行调用,每次请求按照顺序选择下一个可用的服务提供者,适用于服务提供者之间的性能相对均衡。

  3. LeastActive Load Balance(最少活跃调用数负载均衡):根据每个服务提供者的活跃调用数选择负载最小的服务提供者进行调用,适用于服务提供者性能不均衡或处理能力有限的情况。

  4. ConsistentHash Load Balance(一致性哈希负载均衡):利用一致性哈希算法将相同参数的请求分发到同一个服务提供者,适合缓存场景,可以保证同一参数的请求始终落到同一台提供者上,减少缓存更新时的并发压力。

  5. Weighted Load Balance(加权负载均衡):根据服务提供者配置的权重来进行负载均衡,权重高的服务提供者会获得更多的请求,适用于不同服务提供者性能差异较大的情况。

通过合理选择和配置负载均衡策略,可以根据服务提供者的特点和环境的变化来优化资源利用、提高系统性能和稳定性。Dubbo 还支持自定义负载均衡策略,可以根据具体业务需求实现自己的负载均衡逻辑。

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_50308467/article/details/135033677

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签