<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rofth的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/rofth</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; rofth]]></copyright><item><title><![CDATA[【java基础知识】『7』JVM调优参数详解]]></title><link>https://blog.csdn.net/rofth/article/details/113173609</link><guid>https://blog.csdn.net/rofth/article/details/113173609</guid><author>rofth</author><pubDate>Wed, 03 Feb 2021 15:31:10 +0800</pubDate><description><![CDATA[（1）jps显示系统内所有的HotSpot虚拟机进程

option参数

-l: 输出主类全名或jar路径
	-m: 输出JVM启动时传递给main()的参数
示例

  (1.1)# jps -l -m

28920org.apache.catalina.startup.Bootstrapstart

（2）jmap生成指定进程的堆使用情况

   option参数

histo : 显示堆中对象的统计信息
	heap : 显示Java堆详细信息
示例

(2.1)# jma...]]></description><category></category></item><item><title><![CDATA[【java基础知识】『6』java内存屏障&缓存一致性应用&volatile深理解]]></title><link>https://blog.csdn.net/rofth/article/details/110189335</link><guid>https://blog.csdn.net/rofth/article/details/110189335</guid><author>rofth</author><pubDate>Thu, 26 Nov 2020 17:05:45 +0800</pubDate><description><![CDATA[缓存一致性协议：就是任何一个线程更改了数据，都会通知其它线程从主内存获取最新的数据

大家都知道，CPU是计算机的心脏，最终由它来执行所有的运算和程序。主内存是数据（包括代码行）存放的地方。在计算机系统中，CPU高速缓存是用于减少处理器访问内存（主）所需平均时间的部件，当处理器发出内存访问请求时，会先查看缓存是否有请求数据，有：则不访问主内存直接返回该数据；无（失效）：则先把主内存中的相应数据载入缓存，再将其返回处理器。CPU缓存层级分为L1（&lt;=256k，一级缓存）、L2（256k-8m，二级缓存）]]></description><category></category></item><item><title><![CDATA[【kafka】『2』kafka为什么能快速处理海量数据]]></title><link>https://blog.csdn.net/rofth/article/details/110085218</link><guid>https://blog.csdn.net/rofth/article/details/110085218</guid><author>rofth</author><pubDate>Tue, 24 Nov 2020 16:18:32 +0800</pubDate><description><![CDATA[在使用kafka时，我们经常会想，为什么kafka能够达到如此巨大的数据吞吐量？这与kafka的很多设计哲学是分不开的，比如分区并行、ISR机制、顺序写入、页缓存、高效序列化、零拷贝等等，由于kafka的消息存储涉及到海量数据读写，所以利用零拷贝能够显著的降低延迟，提高效率。（linux内核中的函数sendfile()就是零拷贝）

（1）零拷贝的原理


...]]></description><category></category></item><item><title><![CDATA[【Redis】『2』NIO在redis中的应用和演变]]></title><link>https://blog.csdn.net/rofth/article/details/110083615</link><guid>https://blog.csdn.net/rofth/article/details/110083615</guid><author>rofth</author><pubDate>Tue, 24 Nov 2020 16:08:47 +0800</pubDate><description><![CDATA[关于I/O多路复用（事件驱动），首先要理解的是，操作系统为你提供一个功能，当你的某个socket可读或可写的时候，它可以给你一个通知。这样当配合非阻塞的socket使用时，只有当系统通知我哪个描述符可读了，我才去执行read操作，可以保证每次read都能读到有效数据而不做纯返回或无用功，写操作类似，操作系统的这个功能是通过select/poll/epoll/kqueue之类的系统调用函数来实现，这些函数都可以见识多个描述符的读写就绪状况，这样，多个描述符的I/O操作都能在一个线程内并发交替的顺序完成，这就叫]]></description><category></category></item><item><title><![CDATA[【MySQL 】数据库加锁机制分析]]></title><link>https://blog.csdn.net/rofth/article/details/108518406</link><guid>https://blog.csdn.net/rofth/article/details/108518406</guid><author>rofth</author><pubDate>Thu, 10 Sep 2020 17:40:32 +0800</pubDate><description><![CDATA[一、InnoDB模式：

（1）行锁

 (1.1)行锁分类：

共享锁（S）：允许一个事务去读一行，阻止其它事务获得相同数据集的排它锁
	排它锁（X）：允许获得排它锁的事务更新数据，阻止其它事务取得相同数据集的共享锁和排它锁
	意向共享锁（IS）：事务在给一个数据行加共享锁前必须先取得该表的IS锁
	意向排它锁（IX）：事务在给一个数据行加排它锁前必须先取得该表的IX锁 
锁模式的兼容情况
	
			共享锁
			排它锁
			意向共享锁
			意向排它锁
		共享锁
			兼容
			互斥
...]]></description><category></category></item><item><title><![CDATA[【java基础知识】『5』ThreadLocal@Thread@ThreadLocalMap的关系认识&内存泄漏原因分析]]></title><link>https://blog.csdn.net/rofth/article/details/104843945</link><guid>https://blog.csdn.net/rofth/article/details/104843945</guid><author>rofth</author><pubDate>Fri, 13 Mar 2020 16:59:37 +0800</pubDate><description><![CDATA[Thread，ThreadLocal，ThreadLocalMap 关系如下图



通过源码发现，ThreadLocalMap 是Thread的一个类变量，之所以能让线程之间的数据互相不受影响，就是这个原因，如下：



而Entry[]又是ThreadLocalMap的一个成员变量，它是针对一个线程有多个ThreadLocal变量使用的情况，其对象Entry的Key和Value分别是我们的Th...]]></description><category></category></item><item><title><![CDATA[【java基础知识】『4』JVM内存模型之Heap（堆）内存分析]]></title><link>https://blog.csdn.net/rofth/article/details/88556342</link><guid>https://blog.csdn.net/rofth/article/details/88556342</guid><author>rofth</author><pubDate>Fri, 28 Feb 2020 10:41:57 +0800</pubDate><description><![CDATA[JVM内存模型中，Heap区被分为新生代和老年代两个区域，新生代又分为Eden+Survivor1+Survivor2

新生代收集算法主要是使用复制算法，老年代收集算法主要使用标记-清理或标记-整理算法。

堆内存划分如下：



新生代在发生首次YGC的时候，Eden内存活的对象会被复制到S1；再发生YGC的时候，Eden内存活的对象和S1内存活的对象复制到S2，同时清除Eden内的对象和S1...]]></description><category></category></item><item><title><![CDATA[【SpringBoot】SpringBoot aop的execution 表达式详解]]></title><link>https://blog.csdn.net/rofth/article/details/88733415</link><guid>https://blog.csdn.net/rofth/article/details/88733415</guid><author>rofth</author><pubDate>Thu, 15 Aug 2019 10:58:33 +0800</pubDate><description><![CDATA[Aspectj切入点语法定义

在使用spring框架配置AOP的时候，不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"

例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))

execution()是最常用的切点函数，其语法如下所示：

整个表达式可以分为五个部分：

1、execution(): 表...]]></description><category></category></item><item><title><![CDATA[【Docker】Harbor镜像仓库管理搭建以及使用过程（基于CentOS7）]]></title><link>https://blog.csdn.net/rofth/article/details/90742758</link><guid>https://blog.csdn.net/rofth/article/details/90742758</guid><author>rofth</author><pubDate>Sun, 02 Jun 2019 21:22:06 +0800</pubDate><description><![CDATA[1、安装Docker，建议安装最新版的，我安装的是Docker version 18.09.6, build 481bc77156

直接使用阿里云的配置方式(https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.6d5819915Yppt7)


# step 1: 安装必要的一些系统工具
sudo yum install -y y...]]></description><category></category></item><item><title><![CDATA[【SpringBoot】SpringBoot aop的execution 表达式详解]]></title><link>https://blog.csdn.net/rofth/article/details/88733473</link><guid>https://blog.csdn.net/rofth/article/details/88733473</guid><author>rofth</author><pubDate>Fri, 22 Mar 2019 09:53:25 +0800</pubDate><description><![CDATA[Aspectj切入点语法定义

在使用spring框架配置AOP的时候，不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"

例如定义切入点表达式 execution (* com.sample.service.impl..*.*(..))

execution()是最常用的切点函数，其语法如下所示：

整个表达式可以分为五个部分：

1、execution(): 表...]]></description><category></category></item><item><title><![CDATA[【java基础知识】『3』JVM类生命周期过程]]></title><link>https://blog.csdn.net/rofth/article/details/88639344</link><guid>https://blog.csdn.net/rofth/article/details/88639344</guid><author>rofth</author><pubDate>Mon, 18 Mar 2019 16:44:28 +0800</pubDate><description><![CDATA[程序运行时，类的生命周期有加载、验证、准备、解析、初始化五个过程。

（1）、准备

JVM为类变量分配内存以及初始化

 java中的变量有2种类型，分别为类变量（被static修饰的变量）和类成员变量（除了类变量的其它变量）

 在准备阶段，JVM只会为类变量分配内存， 而不会为类成员变量分配内存，到初始化阶段才会为类成员变量分配内存

（1.1）、初始化的类型

 在准备阶段，...]]></description><category></category></item><item><title><![CDATA[【Timescaledb】时序数据库的原理简单介绍&实际操作安装]]></title><link>https://blog.csdn.net/rofth/article/details/86570767</link><guid>https://blog.csdn.net/rofth/article/details/86570767</guid><author>rofth</author><pubDate>Mon, 21 Jan 2019 11:39:38 +0800</pubDate><description><![CDATA[关于Timescaledb 的Hypertable函数的参数，详见https://docs.timescale.com/v1.1/api#create_hypertable有具体的说明

（一）、create_hypertable()函数

timescaledb 官网create_hypertable()函数的参数截图几个重要的参数：

1、chunk_time_interval：块覆盖时间精...]]></description><category></category></item><item><title><![CDATA[【java基础知识】『2』Byte一个字节的数据大小范围为什么是-128~127]]></title><link>https://blog.csdn.net/rofth/article/details/85068798</link><guid>https://blog.csdn.net/rofth/article/details/85068798</guid><author>rofth</author><pubDate>Tue, 18 Dec 2018 16:32:05 +0800</pubDate><description><![CDATA[一个字节是8位，最高位是符号位，最高位为0则是正数。最高位为1则是负数

如果一个数是正数，最大数则为：01111111，转为十进制为127，

如果一个数是负数，按照一般人都会觉得是11111111，转为十进制为-127，

但是：一个+0表示为：00000000，一个-0表示为：1000000，因为符号位不算在里面，所以就会有两个0，所以从一开始发明二进制的时候，就把-0规定为-128，如此二...]]></description><category></category></item><item><title><![CDATA[【Kafka】Consumer均衡、Consumer消费组]]></title><link>https://blog.csdn.net/rofth/article/details/84785531</link><guid>https://blog.csdn.net/rofth/article/details/84785531</guid><author>rofth</author><pubDate>Tue, 04 Dec 2018 11:34:47 +0800</pubDate><description><![CDATA[一、kafka的Consumer均衡算法

有一个topic：topic_test，然后这个topic的partition和他们所在的broker的图如下

1.其中 broker有两个，也就是服务器有两台。

2.partition有6个，分布按照如图所示，按照哈希取模的算法分配。

3.消费者有8个，他们属于同一个消费组。

如果按照如图所示，那么这一个消费组中的消费者会怎么取kafka的数据...]]></description><category></category></item><item><title><![CDATA[【MySql】数据库索引-B-Tree]]></title><link>https://blog.csdn.net/rofth/article/details/81908024</link><guid>https://blog.csdn.net/rofth/article/details/81908024</guid><author>rofth</author><pubDate>Tue, 21 Aug 2018 15:16:33 +0800</pubDate><description><![CDATA[索引

索引的目的：提高查询效率

原理：通过不断的缩小想要获得数据的范围来筛选出最终想要的结果，同时把随机的事件变成顺序的事件，也就是我们总是通过同一种查找方式来锁定数据。

数据结构：B+树

图解B+树与查找过程：



如上图，是一颗b+树，关于b+树的定义可以参见B+树，这里只说一些重点，浅蓝色的块我们称之为一个磁盘块，可以看到每个磁盘块包含几个数据项（深蓝色所示）和指针（黄色所示），如...]]></description><category></category></item><item><title><![CDATA[【SQL语句】灵活SQL语句]]></title><link>https://blog.csdn.net/rofth/article/details/80264852</link><guid>https://blog.csdn.net/rofth/article/details/80264852</guid><author>rofth</author><pubDate>Thu, 10 May 2018 11:20:06 +0800</pubDate><description><![CDATA[1、查询数学成绩排名select stid, name, score, (select count(*) from stuscore s where s.subject='数学' and s.score &amp;gt; score)+1
 from stuscore where subject='数学' order by score灵活点：用一个子查询查询出比当前人成绩大的有多少人，那么有多少人就是第...]]></description><category></category></item><item><title><![CDATA[【Git】常用命令和操作]]></title><link>https://blog.csdn.net/rofth/article/details/80249958</link><guid>https://blog.csdn.net/rofth/article/details/80249958</guid><author>rofth</author><pubDate>Wed, 09 May 2018 13:59:41 +0800</pubDate><description><![CDATA[1、查看远程分支：$ git branch -a2、查看本地分支：$ git branch3、切换分支：$ git checkout branchName4、删除本地分支：$ git branch -d branchName注意事项：[目录上的*代表当前正处于的工作目录]（二）、提交代码git提交代码的五个步骤：1、查看代码的修改状态
2、查看代码的修改内容
3、暂存需要提交的代码
4、提交已暂...]]></description><category></category></item><item><title><![CDATA[【SpringColud】微服务框架 SpringColud]]></title><link>https://blog.csdn.net/rofth/article/details/79723405</link><guid>https://blog.csdn.net/rofth/article/details/79723405</guid><author>rofth</author><pubDate>Wed, 28 Mar 2018 11:01:37 +0800</pubDate><description><![CDATA[SpringColud为开发者提供了在分布式系统（配置管理，服务发现，熔断，路由，微代理，控制总线，一次性token，全局锁，leader选举，分布式session，集群状态）钟快速构建的工具。







先简单阐述下Spring Colud中文社区对四个基础关键组件的描述：



（一）、Spring Colud Config配置中心



Spring Colud Confi...]]></description><category></category></item><item><title><![CDATA[【Maven】常用基础知识整理]]></title><link>https://blog.csdn.net/rofth/article/details/79666186</link><guid>https://blog.csdn.net/rofth/article/details/79666186</guid><author>rofth</author><pubDate>Fri, 23 Mar 2018 13:20:07 +0800</pubDate><description><![CDATA[一个常用的maven项目的pom.xml文件配置如下：&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0http://mave...]]></description><category></category></item><item><title><![CDATA[【Zookeeper】第二期：搭建]]></title><link>https://blog.csdn.net/rofth/article/details/79375989</link><guid>https://blog.csdn.net/rofth/article/details/79375989</guid><author>rofth</author><pubDate>Mon, 26 Feb 2018 13:42:06 +0800</pubDate><description><![CDATA[Zookeeper安装方式有三种，单机模式和集群模式以及伪集群模式。  ■单机模式：Zookeeper只运行在一台服务器上，适合测试环境；  ■伪集群模式：就是在一台物理机上运行多个Zookeeper 实例；  ■集群模式：Zookeeper运行于一个集群上，适合生产环境，这个计算机集群被 称为一个“集合体”（ensemble）Zookeeper通过复制来实现高可用性，只要...]]></description><category></category></item></channel></rss>