以一问一答的形式学习java工具Q:检查内存泄露的工具有?A: jmap生成dump转储文件,jhat可视化查看。Q:某进程CPU使用率一直占满,用什么工具可以排查?A:top -Hp pid找到最占CPU的线程然后jstack来查找那个线程此时所处的堆栈,确定问题发生位置。§ jstack全称: JVM Stack Trance作用: 查看某个java进程的堆栈情况, 可用于确认死锁、IO等待、
1. 共享内存共享内存技术是功能最强、应用最广的进程间通信技术。其原理是多个进程共享相同的物理内存区,一个进程对该内存区的任意修改,可以被其它进程立即看到。 通过共享内存区,进程之间可以交换任意长度的数据,且交换过程无需经过内核转发,在进程的用户空间内就可以完成,所以数据的传输速率就非常高。参与通信的进程只是修改了自己的某个特定线性地址的数据而已。2. 底层实现回想进程内存布局,进程访问的地址是自
选择了存储过程,就意味着牺牲了可移植性和灵活性,换来的确是安全性和稳定性和高性能以及特定数据库的特性。不过事情往往都是相对的,正是由于plsql的灵活多变实现一个目标往往可以有很多种途径而导致说想要写出安全稳定高效并重的存储过程也不是一件容易的事。我个人觉得存储过程最方便的地方在于传统方式可能需要几次交互的信息,丢给存储过程一次就可以搞定。维护存储过程也比
缓存选型目前的互联网项目中,很少不使用缓存服务,不管是为了应对性能的不均匀,还是保护底层数据库。目前缓存上的最主流的当属 memcache 和 redis 。当然redis 还有其他很多功能,但是一说到redis 第一印象还是缓存功能。当业务需要缓存是,我们该如何根据业务的特点和场景决定技术选型?下面我对两者的功能做了一些对比。1. 源代码可读性从可读性上说,redis代码性小,结构清晰;memc
# 用Java实现硬盘代替内存 ## 引言 在开发过程中,有时我们需要存储大量数据,而内存可能不足以满足需求。这时,我们可以使用硬盘来存储数据,从而实现“硬盘代替内存”。在Java中,实现这一功能通常可以通过文件I/O操作。本文将详细介绍如何实现这个过程。 ## 流程概述 在开始之前,我们先来看看整个实现的流程。下面是一个简单的流程表: | 步骤 | 描述
原创 11月前
51阅读
文章目录1. 概述2. 直接缓冲与非直接缓冲2.1 非直接缓冲2.2 直接缓冲3. 直接内存的OOM4.总结 1. 概述JDK8及之后方法区的实现变成了元空间,元空间不再使用JVM内存,而是直接使用系统内存,故称为直接内存。对于元空间来说,它具有如下的特点:元空间不再位于运行时数据区,也不是Java虚拟机规范中定义的区域元空间直接使用系统内存空间访问直接内存的效率更高,读写性能更好元空间的思想来
转载 2023-09-30 10:23:42
46阅读
这里再切入本例将使用的场景模拟:商品秒杀,或者说高并发下,对于商品库存扣减操作。我用一个SpringBoot小项目模拟一下该操作。 本例用到的技术栈:SpringBoot Redis etcd 在正式肝代码之前,先来对etcd分布式锁实现的机制和原理做一个了解。etcd分布式锁实现的基础机制Lease机制 租约机制(TTL,Time To Live),etcd 可以为存储的 key-value 对
转载 2023-11-16 19:27:43
104阅读
Redis:数据结构:Redis支持丰富的数据结构,包括字符串、哈希表、列表、集合、有序集合等,使其具备多种应用场景。内存数据库:Redis将数据存储在内存中,以实现极高的读写性能,适用于对性能要求较高的场景。持久化:Redis提供了RDB(快照)和AOF(日志)两种持久化方式,用于在重启后恢复数据。发布/订阅:Redis通过发布/订阅模式实现消息传递,可以方便地进行实时消息推送和事件处理。缓存:
转载 2024-06-30 14:34:05
15阅读
在这篇博文中,我将探讨如何解决“代替Redis”这一问题。在当今的系统架构中,缓存技术的选择至关重要,由于Redis的流行,很多公司开始寻找合适的替代方案。本篇博文旨在提供一系列对比分析和技术细节,帮助你理解替代Redis的实现过程及其逻辑。 ## 协议背景 在深入讨论之前,我们首先了解下该项技术的背景。在历时的协议演变中,缓存解决方案从早期的本地存储逐渐演化为分布式缓存系统。为了更直观地理解
原创 7月前
39阅读
1、web后台对大批量的繁重的io任务需要解耦使用分布式异步技术,否则会使接口阻塞,并发延迟,一般就选celery好了。此篇的取代主要是针对取代celery的worker模式。没有涉及到周期和定时模式。 2、对我来说celery提供了  分布式,任务路由,超时杀死,任务过期丢弃,任务限速,并发模型选择,并发池大小这些功能。 3、此篇除了并发模型固定为了线程模式,其余的
转载 2023-10-10 20:08:21
62阅读
Redis 的角色是“缓存”,MySQL 的角色是具备 ACID 特性的“关系型数据库”。“缓存”存在的意义是提高读写性能(内存操作),但所存储的数据相对不是那么重要,可忍受丢失,而 MySQL 存在的意义是持久化储存数据,所以 Redis 的读写能力要远高于 MySQL,而对持久化的要求并不高。如果把 MySQL 类比为电脑“硬盘”,那 Redis 就可以类比为电脑“内存”。所以它们的使用场景是
转载 2023-06-13 15:36:30
112阅读
现如今,随着互联网的快速发展,数据量越来越大,数据的存储和查询变得越来越重要。在Java中,ConcurrentHashMap是一个线程安全的哈希表,用于在多线程环境中存储数据。然而,随着并发量的增加,ConcurrentHashMap也面临一些性能瓶颈。而Redis则是一种高性能的内存数据库,可以代替ConcurrentHashMap来存储数据,提高并发读写的性能。 ### Concurren
原创 2024-07-01 06:47:52
50阅读
本篇将使用Linux集群,如果没有的可以看我的集群安装文档,见博客。首先是Redis,我们用它二次提升首页的效率,将栏目这个基本不发生变化的数据放在Redis中。第一步我们要配置Redis的Spring文件<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche
# Redis代替MySQL的探索 在现代应用开发中,选择合适的数据存储方案至关重要。随着对高性能、高可用性需求的日益增强,Redis逐渐成为一种强有力的选择,甚至在某些场景中可以替代MySQL。本文将探讨Redis的优势,并提供代码示例,帮助您更好地理解如何使用Redis。 ## Redis与MySQL的比较 在决定使用Redis或MySQL时,了解两者之间的主要区别是非常重要的。以下是R
原创 10月前
15阅读
 适合处理一般量数据,安全, 银行的钱 应用:内容缓存,主要用于处理大量数据的高访问负载Redis替代MongoDB  Redis应用场景:1.关系型数据库的缓存作用 2.任务队列 3.大量数据运算 ps -ef | grep -i redis  Redis使用的是键值对 保存数据。hashmapKey:全
转载 11月前
6阅读
Redis冷知识前言1、Redis测试性能2、 基础的知识3、Redis为什么这么快4、Redis 为什么单线程还这么快? 前言提示:本文章是日常学习内容的总结,并非全部原创;仅供大家参考借鉴,并无其他商业用途。1、Redis测试性能redis-benchmark 是一个压力测试工具! 官方自带的性能测试工具! redis-benchmark 命令参数!序号选项描述默认值1-h指定服务器主机名1
转载 2024-10-13 19:30:31
14阅读
分布式锁用 Redis 还是 Zookeeper?为什么用分布式锁?基于Redis实现分布式锁小结基于zookeeper实现分布式锁zk小结两种方案的优缺点比较小结建议 为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所
详解MapReduce(Spark和MapReduce对比铺垫篇)mp.weixin.qq.com 本来今天是不打算写MapReduce的,但是考虑到目前很多公司还都在用这个计算引擎,以及后续要讲的Hive原生支持的计算引擎也是MapReduce,并且为Spark和MapReduce的对比做铺垫,笔者今天详细阐述一下MapReduce。鉴于Hadoop1.X已过时,
一,概述    java虚拟机运行时数据区模型图:      主要包括:程序计数器,java虚拟机栈,本地方法栈,java 堆,方法区(元空间)。线程共享的数据区;程序计数器,java虚拟机栈,本地方法栈是线程隔离的数据区。 二,程序计数器    程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指
目录PC Register介绍作用两个常见问题 PC Register介绍JVM的程序计数寄存器(Program Counter Register)中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能运行。 这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的
  • 1
  • 2
  • 3
  • 4
  • 5