目录

菠萝🍍的博客

有谁不喜欢吃菠萝呢

Redis高并发分布式锁

怎么实现一个Redis高并发分布式锁,还是依赖于框架直接拿来用?

Redis高可用集群之水平扩展

Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三台机器上,采用三主三从的模式。

Redis缓存高可用集群

Redis缓存高可用集群方案以及选举原理

Redis持久化、主从与哨兵架构详解

Redis持久化、主从与哨兵架构详解

【转载】关于Redis6.0之后的面试题

关于Redis6.0之后的面试题

JVM垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。

JVM内存分配机制与垃圾回收算法

JVM内存分配机制与垃圾回收算法

JVM指令手册

JVM指令手册

JVM内存模型深度剖析

1. JVM整体结构及内存模型 这里从一个类被加载开始说起,当一个类被加载的时候,会被加载到Java的内存区中,也就是运行时数据区。当然 内存区主要分为堆,栈(线程),本地方法栈,方法区(元空间),程序计数器。 1.1 栈(线程) 栈也是一块内存区域,就是当程序开始运行的时候,给运行的这个线程单独开辟的一块内存区域。假如又有新的线程进行产生,也会给新的线程开辟栈空间。 也就说栈是每一个线程进行独享的。 在栈的内部,有栈帧。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。这注意看啊,是给方法进行存储的。例如,当一个main()方法启动时,主线程会先给main()方法分配一个栈帧,而栈帧中又调用了compute()方法,那么主线程又会给compute()方法分配一个栈帧。 而且因为根据栈的数据结构,先进后出,意味着,main()方法在栈的底部,compute()方法在main()方法的上方。当compute()方法执行完成之后,便进行出栈。如上图右侧演示。 在栈帧内部,还有小块内存区域,分别是局部变量表,操作数栈,动态链接,方法出口等。 举个例子: public cl....

类加载机制深度剖析

类加载器和双亲委派机制,以及tomcat为何需要打破Java推荐的双亲委派机制

Tomcat生产环境配置与应用

1. Tomcat各组件认知 Tomcat是一个基于JAVA的WEB容器,其实现了JAVA EE中的 Servlet 与 jsp 规范,与Nginx apache 服务器不同在于一般用于动态请求处理。在架构设计上采用面向组件的方式设计。即整体功能是通过组件的方式拼装完成。另外每个组件都可以被替换以保证灵活性。 1.1 Tomcat 各组件及关系 Server 和Service Connector 连接器 HTTP 1.1 SSL https AJP( Apache JServ Protocol) apache 私有协议,用于apache 反向代理Tomcat Container Engine 引擎 catalina Host 虚拟机 基于域名 分发请求 Context 隔离各个WEB应用 每个Context的 ClassLoader都是独立 Component Manager (管理器) logger (日志管理) loader (载入器) pipeline (管道) valve (管道中的阀) 2. Tomcat server.xml 配置详解 2.1 se....

Mysql锁与事务隔离级别

Mysql锁与事务隔离级别,以及MVCC原理

MySql索引优化大全(下)

做一份最全的MySql索引优化,覆盖到工作的方方面面。

MySql索引优化大全(中)

做一份最全的MySql索引优化,覆盖到工作的方方面面。

MySql索引优化大全(上)

做一份最全的MySql索引优化,覆盖到工作的方方面面。

Lute HTTP安装(解决latex 公式渲染问题)

太久没有使用博客了,写了一两篇后发现有公式,表格渲染不了,在黑客派中找到解决办法,但是不能一步到位,干脆写的再详细点

【转载】MySql中的Explain工具

大多数开发者都使用的是Navicat管理数据库,如果你在进行查询的时候也曾注意到过那个 解释按钮,那么你应该知道Explain工具

Mysql索引

当你有一张一百万数据的表且没有加索引优化的话,查询一条记录的速度为0.5秒 而当你加入索引后,查询一条记录的速度为0.024秒 在创建索引后,发生了什么?为什么添加索引后能产生这么大的变化?

Java中的Unsafe类

这是一个普通类的创建 ... 仅仅只需要一行代码就完成了对象的实例化 这是Unsafe类的创建... 通过一个静态方法的调用,而方法中通过反射的方式创建出来Unsafe对象,为什么它需要通过这样的方式创建出来?

Java中的Atomic

说一说Java中的Atomic