- 博客(493)
- 资源 (2)
- 收藏
- 关注
原创 懒加载优化分页是一种提高大数据量列表渲染性能的有效技术。以下是一些实现懒加载优化分页的策略:
懒加载+分页:用户每次只加载能看见的数据,当滚动到底部时再去加载下一页的数据。延迟关联优化:先通过索引筛选出符合条件的主键值,然后再通过主键关联查询所需的其他字段,减少不必要的数据读取,提高查询性能。Lozad.js:一个轻量级的懒加载库,提供了简单而强大的懒加载功能。优点:减少初次加载时所需的网络带宽和时间,提高页面的响应速度和用户体验,避免在用户未查看的情况下加载不必要的内容。子查询优化法:通过子查询先确定起始的范围,再往后取 N 条记录,减少扫描的记录数,显著降低查询的时间复杂度。
2024-12-03 11:19:50 284
原创 需要实现一个数据处理系统,该系统需要处理2.2亿条数据
需要实现一个数据处理系统,该系统需要处理2.2亿条数据,并且有特定的输入条件(机构、日期),考虑索引失效场景,数据实时更新和界面查询的需求,以及是否使用独立数据库、去掉分页效果采用懒加载、按科目编号排序对性能的影响、表清空再灌入以及后期性能优化等需求。懒加载:懒加载可以减少初始加载的数据量,提高页面加载速度。实时更新:对于实时更新的数据,可以考虑使用消息队列(如Kafka)来处理数据流,然后异步更新数据库。独立数据库:如果数据量非常大,可以考虑使用独立的数据库来存储这些数据,以避免对其他系统的性能影响。
2024-12-03 09:30:02 406
原创 重构RuoYi(若依)项目,这是一个基于Spring Boot的快速开发平台,可以遵循以下步骤:
重构是一个持续的过程,需要团队的协作和不断的反馈。在重构过程中,保持代码的稳定性和项目的连续性是非常重要的。- 理解RuoYi项目的结构和代码组织,包括模块划分、数据库设计、服务层、控制层等。- 对现有代码进行审查,识别出需要改进的地方,如代码冗余、性能瓶颈、不清晰的命名等。- 对重构后的代码进行单元测试、集成测试和性能测试,确保重构没有引入新的问题。- 根据功能将代码划分为更小的模块和组件,以提高代码的可维护性和可重用性。- 根据测试结果和代码审查的反馈,逐步重构代码。
2024-11-28 22:31:13 303
原创 重构JEECGBOOT可以分为几个步骤,以下是根据搜索结果得出的一些关键步骤和建议:
例如,如果前端Vue页面的实际路径是`src/views/erp/demo2/CcTouSuList.vue`,则配置菜单组件路径为:去掉前缀`src/views/`和后缀`.vue` => `erp/demo2/CcTouSuList`。这包括理解其模块划分、数据库设计、API设计等。- 如果选择生成代码目录,可以直接选择到生成到那个模块,这样Java代码不需要再手工调整,只需要将前端代码复制到前端Vue项目中。- 在重构过程中,需要不断进行测试和验证,确保新的架构和代码能够正常工作,并且满足项目需求。
2024-11-28 22:28:42 129
原创 总账系统确实是会计信息系统的基础和核心,它不仅记录和汇总了企业所有的财务交易,还为管理层提供了决策支持。以下是您提到的总账系统主要功能的进一步详细说明:
一、区别(一)功能定位总账系统 总账系统主要侧重于对企业日常经济业务进行账务处理。它是一个以记账凭证为起点,对每一笔经济业务进行记录、分类、汇总的系统。例如,企业采购原材料,支付货款,总账系统就会记录这笔业务涉及的科目(如原材料增加、银行存款减少)以及金额,按照借贷记账法进行账务处理,最后汇总各科目的发生额和余额。 其核心功能包括凭证的录入、审核、记账,以及总账、明细账的查询和打印等。它是对会计核算过程的详细记录,是财务数据的 “收集站” 和 “初加工中心”。 财务报表系统 财务
2024-11-26 21:17:21 681
原创 贷款业务是银行的核心业务之一,涉及到资金的借贷和风险管理。贷款业务的全流程通常包括以下几个主要步骤
整个贷款业务流程需要银行内部多个部门的协作,包括信贷部门、风险管理部门、法律部门、客户服务部门等,以确保贷款业务的合规性、风险控制和客户满意度。- 贷款批准后,银行与客户签订贷款合同,明确贷款金额、利率、期限、还款方式等条款。- 客户还清贷款本金和利息后,银行解除抵押或担保,贷款合同终止。- 客户对贷款产品感兴趣后,会向银行咨询详情并表达贷款意向。- 银行对贷款的使用情况进行监控,确保贷款用于约定的用途。- 制定贷款政策,包括贷款条件、利率、期限、还款方式等。- 银行将贷款资金发放到客户指定的账户。
2024-11-22 23:10:55 248
原创 银行核心业务框架
**公共**:可能指的是银行内部的公共资源或服务。- **客户管理**:管理企业客户的信息和信用状况。- **贷后管理**:监督贷款的使用情况和回收情况。- **客户管理**:管理个人客户的信息和信用状况。- **负债**:管理银行的负债,如存款、债券等。- **资产**:管理银行的资产,如贷款、投资等。- **合同管理**:管理贷款合同的签订和执行。- **贷后管理**:监督个人贷款的使用和回收。- **产品配置**:配置贷款产品的特性和条款。- **业务配置**:配置贷款业务的流程和规则。
2024-11-22 22:51:18 269
原创 在Spring AOP中,拦截器(Interceptor)和外层拦截器(Outer Interceptor)以及内层拦截器(Inner Interceptor)的概念与Web开发中的拦截器有所不同。
在Spring AOP中,拦截器(Interceptor)和外层拦截器(Outer Interceptor)以及内层拦截器(Inner Interceptor)的概念与Web开发中的拦截器有所不同。- 内层拦截器在AOP的上下文中可能指的是环绕通知(Around Advice),它能够包围目标方法的执行,允许在方法执行前后添加逻辑,并且可以控制是否执行目标方法。- 环绕通知是拦截器链中的最后一层,它可以直接调用`proceed()`方法来继续执行拦截器链中的下一个拦截器,或者完全替换目标方法的执行。
2024-11-20 12:12:24 313
原创 Spring AOP中代理创建和拦截器链的工作流程。以下是对图片中各个组件的解释:
AOP代理,是ProxyFactory创建的代理对象的外层拦截器。- 调用者拦截器,作为拦截器链的最后一层拦截器,触发`invoke(MethodInvocation)`方法。- 方法调用,是InvocationHandler中的`invoke()`方法处理的具体方法调用对象。- 方法调用实现,每次方法调用都会生成新的实例,并调用`proceed()`方法。- 调用处理器,实现了`invoke()`方法,用于处理代理对象的方法调用。- 拦截器,是拦截器链中的一个节点,可以包含具体的拦截逻辑。
2024-11-20 12:07:30 377
原创 ProxyFactory 和 AOPProxy 在 Spring AOP 中都是用来创建代理对象的,但它们在实现和使用上有一些区别:
总结来说,ProxyFactory 是一个具体的类,用于配置和创建代理对象,而 AOPProxy 是一个接口,它定义了代理对象的创建和行为。- ProxyFactory 更像是实际生产代理对象的工厂,它提供了更简单、更统一的方法来创建代理对象,并且可以脱离 Spring 容器独立使用。- AOPProxy 可以最终生成实际的代理对象,它是一个半成品,实际的代理对象中包括了这个半成品 AOPProxy。- AOPProxy 是 Spring AOP 中的一个接口,它定义了创建代理对象的方法。
2024-11-20 12:02:35 336
原创 `InvocationHandler` 接口在 Spring AOP 中扮演着核心角色,它主要用于 Java 动态代理的实现,为代理对象提供处理方法调用的能力。
4. **与 `MethodInterceptor` 的关系**:虽然 `InvocationHandler` 和 `MethodInterceptor` 都是用于实现动态代理的工具,但它们在实现方式、应用场景以及效率上有所不同。2. **核心方法 `invoke`**:`InvocationHandler` 接口包含一个 `invoke` 方法,该方法在代理对象的方法被调用时被触发。开发者可以在 `invoke` 方法中添加额外的逻辑,比如在方法调用前后添加日志记录或其他横切关注点。
2024-11-20 11:53:44 250
原创 Go语言中的`template`包提供了一种强大的模板机制,允许开发者通过预声明模板和传入自定义数据来灵活定制各种文本。
tmpl, err := template.New("test").Parse("Name: {{.Name}}, Age: {{.Age}}") // 模板字符串。这个模板使用了`if`条件语句,如果`Condition`为`true`,则输出`True`,否则输出`False`。在这个例子中,`{{.Name}}`和`{{.Age}}`会被结构体`Person`的相应字段值替换。在这个例子中,模板字符串中的`{{ .Name }}`会被`data`中的`Name`字段的值替换。### 5. 嵌套模板。
2024-11-19 12:58:22 336
原创 在Go语言中,切片(Slice)、映射(Map)和通道(Channel)是三种非常重要的内置数据结构,它们各自有不同的用途和特点
这些数据结构在Go语言中扮演着重要的角色,切片用于处理动态长度的数据序列,映射用于存储和检索键值对,而通道则用于在goroutine之间安全地传递数据。- **定义与初始化**:通道是Go语言中用于goroutine间通信的机制,它保证了数据在goroutine之间的安全传递。- **定义与初始化**:映射是一个无序的键值对集合,类似于其他语言中的字典或哈希表。- **定义与初始化**:切片是一个可变长度的序列,它是基于数组的一种更加灵活的数据结构。这将返回一个空的映射,可以存储字符串键和整型值的键值对。
2024-11-19 11:21:38 373
原创 切换Go模块代理源的方法
表示如果代理无法访问时,直接从原始源下载。同样,这里提供了使用七牛云作为代理的例子。找到并编辑Go的配置文件(通常位于。在终端中执行以下命令来设置环境变量。你也可以在Go的配置文件中手动修改。
2024-11-19 05:04:20 241
原创 Go语言实现雪花算法(Snowflake Algorithm),该算法用于生成唯一的64位ID,这些ID在分布式系统中保持唯一性和时间顺序性。
雪花算法是由Twitter开发的,用于生成64位的唯一ID。时间戳:41位,表示自某个特定时间点(通常是1970年1月1日)以来的毫秒数。数据中心ID:5位,用于区分不同的数据中心。工作节点ID:5位,用于区分数据中心内的不同节点。序列号:12位,同一毫秒内的序列号,确保同一毫秒内的ID唯一。
2024-11-19 04:50:52 319
原创 Maroto 确实是一个对于 Go 语言开发者来说非常有用的库,特别是在需要生成 PDF 文件的场景中。你已经很好地介绍了 Maroto 的基本概念、优势以及如何使用它来创建 PDF 文件。
通过上述的介绍和示例,你应该能够开始使用 Maroto 来解决实际问题,并为你的项目添加专业的 PDF 生成功能。4. **测试**:编写单元测试来验证 PDF 生成的逻辑,确保在代码更改后生成的 PDF 文件仍然符合预期。2. **性能考虑**:对于生成大量 PDF 文件的场景,考虑性能优化,比如缓存常用的字体或图片。1. **代码组织**:将 PDF 生成逻辑封装在函数或方法中,使得代码更加模块化和可重用。3. **安全性**:确保处理用户输入时考虑到安全性,避免例如路径遍历等安全问题。
2024-11-19 04:02:52 179
原创 以下是一个简单的Go语言程序,它使用了net/http标准库来创建一个简单的HTTP服务器,并在浏览器中显示“Hello, World!“。
将代码保存为`.go`文件,例如`hello.go`,然后在命令行中运行`go run hello.go`。5. 使用`http.ListenAndServe`启动服务器,它接受两个参数:一个是服务器监听的地址和端口,另一个是处理所有HTTP请求的处理器。当然,下面是一个使用Go语言的`net/http`标准库创建的简单HTTP服务器的示例代码,它会在浏览器中显示"Hello, World!1. 导入必要的包:`fmt`用于格式化输出,`log`用于日志记录,`net/http`用于HTTP服务。
2024-11-19 03:54:48 426
原创 ETCD是一个分布式、一致性键值存储系统,它主要用于共享配置和服务发现
这意味着即使在部分节点失败的情况下,ETCD也能保持数据的一致性。8. **观察者模式**:ETCD提供了观察者模式,允许客户端订阅特定键的变化,一旦键的值发生变化,ETCD会通知所有订阅的客户端。4. **简单性**:ETCD提供了一个简单的API,基于HTTP协议和JSON格式,使得客户端可以轻松地与ETCD交互。7. **动态配置**:ETCD支持动态配置更新,这意味着系统配置可以在不停机的情况下进行更新。10. **社区支持**:作为一个开源项目,ETCD拥有活跃的社区,不断有新功能和改进被加入。
2024-11-19 03:51:11 185
原创 OpenWRT是一个为嵌入式设备(通常是无线路由器)开发的高扩展度的GNU/Linux发行版
1. **功能和扩展性**:OpenWRT提供了高度模块化和自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性。6. **版本选择**:OpenWRT有许多不同的版本和分支,如Lean、ImmortalWRT、Lienol和iStoreOS等,它们都是在OpenWrt源码的基础上进行修改和定制的,拥有更好的本地化适配和适合国内环境的软件功能。4. **社区和文档**:OpenWRT有着活跃的社区和丰富的文档资源,用户可以在OpenWrt Forum上找到关于安装、使用、配置和故障排除的讨论和帮助。
2024-11-18 15:39:09 349
原创 Kubernetes(简称K8S)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序
**API Server**:Kubernetes API的前端,负责接收和处理所有的RESTful请求,是系统内部各组件通信的核心。- **Etcd**:一个轻量级、分布式的键值存储系统,保存了整个Kubernetes集群的状态,包括集群中的所有数据。- **Kubelet**:负责维护容器的生命周期,同时也是Node与Master通信的桥梁。- **弹性**:自动重启失败的容器,复制Pods以替换失败的Pods,以及自动扩展Pods。- 根据CPU使用率或其他选择的指标自动扩展Pod的数量。
2024-11-18 13:39:27 518
原创 KubeEdge是一个开源系统,旨在将容器化应用的编排和设备管理扩展到边缘节点。
**EdgeHub**:作为WebSocket客户端,负责与Cloud Service进行交互以进行边缘计算,包括将云侧资源更新同步到边缘,并将边缘侧主机和设备状态变更报告给云。- **EdgeController**:Kubernetes的扩展控制器,用于管理边缘节点和Pod的元数据,以便可以将数据定位到对应的边缘节点。- **边缘计算**:在Edge上运行业务逻辑,减少边缘和云之间的网络带宽需求和消耗,提高响应速度,降低成本并保护客户的数据隐私。
2024-11-18 13:36:16 431
原创 KubeSphere 是一款基于 Kubernetes 构建的开源容器混合云平台,它为企业提供了在 Kubernetes 之上的分布式应用管理的全栈化解决方案,以下是关于它的详细介绍:
KubeSphere 是构建在 Kubernetes 之上的,它依赖于 Kubernetes 提供的容器编排、资源管理等核心功能。Kubernetes 作为底层的容器编排引擎,负责管理容器的生命周期、调度和资源分配等基础操作。而 KubeSphere 则在 Kubernetes 的基础上,增加了更多的功能和特性,如可视化界面、多租户管理、应用生命周期管理、微服务治理等,为用户提供了一个更加完整和易用的容器云平台解决方案。
2024-11-15 12:45:29 668
原创 云原生Go语言
**云原生技术栈**:《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)》、《云原生架构:从技术演进到最佳实践》等。- **技术基础学习**:包括软件开发基础技术栈、中间件技术栈、Go语言技术栈、云原生技术栈。- **云原生实战营**:提供实战项目教学和编程实战,涵盖Go开发技术栈和云原生技术栈。- **开发实战课程**:Go语言开发实战课和Kubernetes开发实战课。- **Go语言编程基础**:《Go程序设计语言》、《Go语言编程》。
2024-11-13 16:17:08 185
原创 Istio 是一个开源的服务网格(Service Mesh),它提供了一种统一和有效的方式来保护、连接和监控微服务。
1. **流量管理**:Istio 允许简单的规则配置和流量路由,控制服务之间的流量和 API 调用过程。2. **安全**:Istio 提供底层的安全通信通道,并为大规模的服务通信管理认证、授权和加密。3. **可观察性**:Istio 提供健壮的追踪、监控和日志特性,让您能够深入了解服务网格部署。- **Istiod**:在 Istio 1.5 版本中,控制平面由原来分散的、独立部署的几个组件整合为一个独立的 istiod,变成了一个单进程、多模块的组织形态。### Istio 核心功能。
2024-11-13 16:09:29 273
原创 Volcano 是一个在 Kubernetes 上运行高性能工作负载的容器批量计算引擎
它支持几乎所有的主流计算框架,包括 Mindspore、TensorFlow、Kubeflow、MPI、PyTorch、飞浆、Spark、HOROVOD 等。4. **面向高性能负载的性能优化**:例如 scalability, throughput, network, runtime。1. **面向高性能负载的调度策略**:例如 fair-share, gang-scheduling。3. **支持多种异构硬件**:例如 GPU, FPGA。
2024-11-13 15:58:17 215
原创 Karmada-io 是一个由华为开源的云原生多云容器编排平台,旨在让开发者能够像使用单个 Kubernetes 集群一样使用多个 Kubernetes 集群
支持 `Push` 和 `Pull` 两种集群注册模式,`karmada-agent` 部署在每个 `Pull` 模式的成员集群上,负责将工作负载清单从 Karmada 控制平面同步到成员集群,并同步成员集群状态到 Karmada 控制平面。- **开箱即用**:针对场景内置策略集,如 `Active-active`、`Remote DR`、`Geo Redundant` 等,实现跨集群应用程序自动伸缩、故障转移和负载均衡。- **集中式管理**:位置无关的集群管理,支持公有云、本地或边缘上的集群。
2024-11-13 15:53:25 468
原创 KubeEdge是一个开源系统,旨在将容器化应用程序的编排功能扩展到边缘计算领域。以下是KubeEdge的核心技术解析:
**DeviceController**:扩展的Kubernetes控制器,用于管理边缘IoT设备,实现设备元数据/状态数据在云端与边缘端的同步。- **EdgeHub**:WebSocket客户端,负责与云端服务交互,同步云端资源更新到边缘端,并将边缘端主机和设备状态变更报告到云端。- **EdgeController**:扩展的Kubernetes控制器,用于管理边缘节点和Pod的元数据。- **EventBus**:MQTT客户端,用于与MQTT服务器交互,为其他组件提供发布和订阅功能。
2024-11-13 15:50:21 538
原创 在 Vue 前端项目中去掉登录验证通常意味着你想要允许用户无需登录即可访问应用的某些部分。以下是一些可能的步骤来实现这个目的:
如果你的项目是为了演示或开发目的而移除登录验证,确保在生产环境中重新启用这些安全措施。如果你的项目使用了 Vue Router 并且设置了路由守卫(如 `beforeEach`)来进行登录验证,你需要移除或修改这些守卫。// 移除或不再使用 setIsAuthenticated 等与登录验证相关的 mutations。如果你的项目中有 API 调用是用于登录验证的,确保这些调用不再被执行。在移除登录验证后,确保测试应用的所有部分以确认没有遗留的登录验证逻辑。// 移除或注释掉下面的代码。
2024-11-08 09:54:53 450
原创 Tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎所有的 Linux/Unix 系统中都有。
Tcpdump 允许用户捕获和分析经过网络接口的数据包,显示数据包的详细信息,如源地址、目标地址、协议类型等,并将这些信息以易于阅读的格式显示在屏幕上或保存到文件中。Tcpdump 是网络管理员、安全专家以及开发人员不可或缺的工具之一,它以其强大的功能和灵活的截取策略,成为高级系统管理员分析网络、排查问题的重要工具。- `-v`:显示更多的详细信息,可以使用 `-v`, `-vv`, `-vvv` 来增加详细程度。3. **解析**:能够解析捕获的数据包,显示详细信息,如源地址、目标地址、协议类型等。
2024-11-07 21:45:56 343
原创 在Kubernetes中创建静态Pod(Static Pod)的流程如下:
2. **创建Pod定义文件**:在该节点上选择一个目录,通常是`/etc/kubernetes/manifests`,来保存Web服务Pod的定义文件,例如`/etc/kubernetes/manifests/static-web.yaml`。6. **静态Pod的可见性**:kubelet会自动在Kubernetes API服务器上为每个静态Pod创建一个镜像Pod(Mirror Pod),这意味着虽然可以在API服务器上看到这些Pod,但是不能通过API服务器来控制它们。
2024-11-06 15:31:50 209
原创 在Kubernetes(K8S)中,Pod的创建流程大致如下:
7. **kubelet监控Pod状态**:节点上的kubelet进程通过API Server,查看etcd数据库监听到kube-scheduler产生的Pod绑定事件后获取对应的Pod清单,然后调用本机中的容器运行时接口初始化volume、分配IP、下载image镜像,创建容器并启动服务。6. **节点上创建Pod的容器并启动**:一旦Node接受调度请求,它会在其上创建Pod的容器并启动它们。5. **节点接受调度请求**:被选中的Node会接受调度请求,并准备在其上创建Pod。
2024-11-06 15:30:50 164
原创 Apache Kafka 是一个分布式流处理平台,它主要用于构建实时数据管道和流式应用程序。在 Kafka 中,ZooKeeper(简称 zk)扮演着至关重要的角色。
因此,Kafka 社区正在努力减少对 ZooKeeper 的依赖,例如在 Kafka 2.8 版本中引入的 KRaft 协议,旨在减少 Kafka 对 ZooKeeper 的依赖,提高系统的稳定性和性能。- ZooKeeper 存储 Kafka 集群的元数据信息,包括 broker 信息、topic 信息、分区信息和副本信息等。- 当 Kafka 的某个分区的领导者 broker 宕机时,ZooKeeper 会帮助进行领导者选举,确保分区的高可用性。
2024-11-06 15:28:32 242
原创 在Linux中,你可以使用`find`命令来查找特定日期之前创建或修改的文件。如果你想要查找三天之前修改的名为`1.txt`的文件,可以使用以下命令:
`-mtime +3`:这个选项查找最后修改时间在3天之前的文件。`mtime`表示文件内容最后修改时间,`+3`表示超过3天。请注意,`-mtime`参数是以24小时为单位的,所以`+3`实际上意味着文件最后修改时间超过72小时(3天)。- `/path/to/search`:这是你想要搜索的目录的路径。你需要将其替换为你实际想要搜索的目录。- `-name "1.txt"`:这个选项指定你正在查找的文件名是`1.txt`。这里的`ctime`表示文件状态最后改变时间,通常包括文件的创建时间。
2024-11-06 15:25:46 254
原创 VUE项目中集成swagger页面和druid数据库连接池监控页面
:这行代码导入了一个名为`iFrame`的组件,该组件位于项目的`components`目录下的`iFrame`文件夹中。- `<i-frame :src="url" />`:这是一个自定义组件`i-frame`的使用,它接收一个名为`src`的属性,该属性的值绑定到组件的`data`中的`url`属性。- `<i-frame :src="url" />`:这是一个自定义组件`i-frame`的使用,它接收一个名为`src`的属性,该属性的值绑定到组件的`data`中的`url`属性。
2024-11-06 15:10:59 502
原创 JVM参数来设置新生代和老年代的大小:
`-XX:NewSize=256m` 和 `-XX:MaxNewSize=256m` 设置了新生代的初始大小和最大大小为256MB。- `-XX:MaxNewSize=<size>`:设置新生代的最大大小,通常与`-Xmx`和`-Xms`一起使用。- 通常不直接设置老年代的大小,而是通过设置整个堆内存大小(`-Xmx`)和新生代大小(`-Xmn`)来间接控制。- `-Xms1024m` 和 `-Xmx1024m` 分别设置了JVM的初始堆内存和最大堆内存为1024MB。
2024-11-06 09:29:00 456
原创 分配逻辑卷(LV)的步骤通常包括以下几个主要环节:
使用 `lvcreate` 命令在卷组上创建逻辑卷。- 使用 `vgcreate` 命令创建卷组,并将一个或多个物理卷添加到卷组中。- 在逻辑卷上创建文件系统,例如使用 `mkfs.xfs` 命令:`mkfs.xfs /dev/oraclevg/lvoracle`。- 创建挂载点并挂载逻辑卷,例如:`mount /dev/oraclevg/lvoracle /oracle/`。- 使用 `df -h` 命令查看逻辑卷的挂载情况和使用状态。- 使用 `lvs` 命令查看逻辑卷的详细信息。
2024-11-06 09:27:04 133
原创 当线程堆栈出现 “lock wait”(锁等待),这通常意味着线程在等待获取一个被其他线程占用的锁。
当线程堆栈出现 “lock wait”(锁等待),这通常意味着线程在等待获取一个被其他线程占用的锁。方法,就会进入锁等待状态,直到。
2024-11-06 09:24:58 593
Java并发编程与高并发解决.zip
2020-01-29
Python高级编程书籍
2017-11-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人