- 博客(31)
- 收藏
- 关注
原创 JMV内存hprof文件分析
文章目录前言一、JVM 参数配置二、伪代码示例三、error log三.hprof文件分析总结前言最近项目并发访问的时候日志有OutOfMemoryError,随即分析一下JVM hprof文件,复刻内存泄漏的问题一、JVM 参数配置-XX:+HeapDumpOnOutOfMemoryError导出内存溢出的堆信息(hprof文件))-XX:HeapDumpPath=导出内存溢出的堆信息(hprof文件))路径1. =./ 相对路径2. =/Users/hjk/IdeaPro
2021-12-16 22:27:08 12789
原创 mysql事务隔离级别和mvcc
文章目录前言一、事务隔离级别二、事务并发执行遇到的问题二、SQL标准中的四种隔离级别二、MySQL中支持的四种隔离级别二、MVCC原理二、版本链二、ReadView二、MVCC小结总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、事务隔离级别MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一
2021-11-28 21:37:14 518
原创 Redisson分布式锁和同步器
文章目录概述一、可重入锁(Reentrant Lock)二、公平锁(Fair Lock)三、联锁(MultiLock)四、红锁(RedLock)五、读写锁(ReadWriteLock)六、信号量(Semaphore)七、闭锁(CountDownLatch)1.引入库2.读入数据总结概述Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set,
2021-08-25 23:02:59 374
原创 SpringBoot整合RabbitMq(消息可靠投递)
文章目录前言一、RabbitMq简介1、为何用RabbitMq,RabbitMq特点,场景应用2、RabbitMq工作流程3、AMQP协议二、创建工程1.spring-boot-starter-amqp注解2.rabbitTemplate使用3.rabbitListener&rabbitHandler接收消息4.消息队列-可靠投递-发送端确认5.消息队列-可靠投递-消费端确认总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开
2021-07-18 21:37:11 1211 2
原创 LRU和LFU算法实现原理
LRU和LFU算法实现原理文章目录LRU和LFU算法实现原理前提一、LRU是什么二、LRU算法的思想二、LRU实现一、LFU是什么二、LFU算法的思想二、LFU实现总结前提(2021-07-6)午休的时候刷了下技术文章,看到有面试考查 LRU和LFU算法。大概看了下原理于是尝试重现一下。一、LRU是什么LRU是一种淘汰算法,全称是Least Recently Used。二、LRU算法的思想算法的思想就是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。所以
2021-07-07 22:08:21 976 1
原创 ThreadLocal源码分析
本文目录ThreadLocal是什么ThreadLocal原理ThreadLocal源码分析ThreadLocal内部属性ThreadLocal内部类ThreadLocalMap三级目录ThreadLocal是什么下面引用ThreadLocal的API注释这个类提供线程局部变量。 这些变量与其正常的对应方式不同,因为访问一个的每个线程(通过其get或set方法)都有自己独立初始化的变量副本。...
2021-06-30 21:41:09 184
原创 ElasticSearch7.6.2 拼音,中文,中音搜索,高亮搜索关键字
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport
2021-06-20 11:57:11 1986 1
原创 java实现十大经典排序算法
文章目录冒泡排序(Bubble Sort)选择排序(Selection sort)插入排序(Insertion Sort)1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导
2021-06-16 23:20:06 315 2
原创 基于Canal和Elasticsearch实现MySQL的Binlog近实时同步
文章目录前言一、Canal的工作原理二、修改mysq配置开启Binlog三、安装和使用Canal四、新建Springboot项目整合Canal和Elasticsearch1.新建项目2.Canal.client连接Canal Server3.通过Canal对Elasticsearch增删改.总结前言随着系统业务增长提高接口响应准备把系统中elasticsearch解耦出来,Canal模拟MySQL Slave的交互协议,伪装自己为MySQL Slave,向MySQL Master发送dump协议,My
2021-04-08 23:41:32 1682 3
原创 docker快速部署mysql和redis丶tomcat
文章目录一、dcoker安装mysql一、docker hub上面查找mysql镜像二、pull mysql镜像三、启动四、外部连接运行在dokcer上的mysql服务五、备份容器内mysql数据二、dcoker安装redis1.拉取镜像2.运行3.进入容器redis-cli,stop容器测试redis-AOF一、dcoker安装tomcat1.拉取镜像2.启动3.发布web服务到宿主机同步更新到容器一、dcoker安装mysql一、docker hub上面查找mysql镜像1.docker se.
2021-03-08 16:43:41 475
原创 docker常用命令,镜像,容器数据卷,dockerFile解析,springboot build镜像
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、docker常用命令1.镜像命令2.容器命令二、docker镜像三、docker容器数据卷四、dockerFile解析五、自定义springboot镜像总结前言Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)
2021-03-04 22:23:17 283 1
原创 使用Redis实现延时消息队列(Sorted Set)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、场景设计二、延时队列实现Sorted Set相关命令三、演示总结一、场景设计1.用户下单15分钟未付款,取消订单恢复库存.二、延时队列实现订单创建的时候,订单ID和当前时间戳分别作为Sorted Set的member和score添加到订单队列Sorted Set中线程通过Sorted Set的命令ZREVRANGEBYSCORE弹出指定数量的订单ID进行处理。项目3Sorted Set相关命令三、演示总结
2021-03-01 17:09:37 2853 8
原创 Redis分布式锁:基于AOP和Redis(RedisConnection)实现分布式锁
文章目录一、注解二、切面的实现@Aspect三、使用RedisConnection实现分布式锁三、使用lua释放锁提示:以下是本篇文章正文内容,下面案例可供参考一、注解注解方式侵入性更低,基本上不需要修改原生代码,只需要加注解就行代码如下(示例):public @interface LockAnnotation { /** * 加锁的key的前缀 * * @return */ String lockPrefix() default "";
2021-02-25 11:52:45 596 2
原创 java 快速失败和安全失败
快速失败(fail-fast):在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的结构进行了修改(增加、删除),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果结构发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expectedmodCount值,是的话就返回遍历;否则
2021-02-24 10:25:22 161
原创 HashMap源码分析(JDK 8)
文章目录前言一、先谈谈hashCode和hash算法1. String 类型的 hashcode 方法2. 为什么大部分 hashcode 方法使用 313. 为什么没要使用hash & (n - 1) 而不直接使用 hashcode & (n - 1) 定位数组下标3. HashMap 的容量为什么建议是 2的幂次方?1.如果不使用 2 的幂次方作为数组的长度会怎么样?二、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如
2021-02-18 16:11:06 839
原创 Java基本类型占用的内存大小 ,运算符笔记
Java基本类型占用的内存大小 ,运算符,计算机存储换算单位笔记文章目录Java基本类型占用的内存大小 ,运算符,计算机存储换算单位笔记一、运算符按位与运算符(&)按位或运算符(|)异或运算符(^)取反运算符(~)左移运算符(<<)右移运算符(>>)二、复合赋值运算符三、 逻辑运算符三、基本类型1.单位换算2.基本类型一、运算符按位与运算符(&) 如果相对应位都是1,则结果为1,否则为0 运算规则:0&0=0; 0&1=0;
2021-01-06 16:32:12 207 1
原创 LinkedList源码分析
文章目录前言一、源码分析1.继承体系2.新增2.删除3.查找4.LinkedList(CRUD性能分析)前言LinkedList底层采用的双向链表结构,实现了List和Deque接口。 和 ArrayList 一样,LinkedList 也支持空值和重复值。由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。通过引用来表示上一个节点和下一个节点的关系。LinkedList 是非线程安全的集合类,如果多个线程同时访问链接列表,并且至少有一个线程在结构上
2020-12-23 15:05:52 100
原创 ArrayList 源码分析
这里写自定义目录标题前言1、源码分析1.1查看继承实习类图1.2构造方法1.3插入1.4删除1.6 ArrayList (CRUD性能分析)前言ArrayList 底层基于数组实现,ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组,所以其可以保证在 O(1) 复杂度下完成随机查找操作。其他方面,ArrayList 是非线程安全类。1、源码分析1.1查看继承实习类图1.2构造方法ArrayList
2020-12-09 22:52:03 112
原创 Spring Data Elasticsearch4.0(整合SpringBoot)
Spring Data Elasticsearch使用简介:创建Demo工程:Spring Data Elasticsearch注解:elasticsearchTemplate索引操作:删除索引:简单的CRUD:高级查询:自定义查询分页查询字段排序聚合关键词高亮简介:Spring Data Elasticsearch是Spring Data项目下的一个子模块。查看 Spring Data的官网:链接Spring Data的使命是为数据访问提供熟悉且一致的基于Spring的编程模型,同时仍保留底层数
2020-12-04 11:43:43 3690 3
原创 elasticsearch分词器词库热更新三种方案
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、本地文件读取方式二、远程扩展热更新 IK 分词三、重写ik源码连接mysql一、本地文件读取方式首先进入elasticsearch目录的plugins目录下,查看目录结构2.进入confg目录下 创建文件mydic.dic 并添加:“我是中国人”3.打开config目录下 IKAnalyzer.cfg.xml配置文件 vim IKAnalyzer.cfg.xml 修改内容如下:4.保存启动es 观察日志加
2020-12-01 13:18:33 5308 4
原创 Linux下安装elasticsearch和kibana
Linux下安装elasticsearch和kibanaElasticsearch介绍和安装安装kibana介绍和安装Kibana是一个基于Node.js的Elasticsearch索引数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。而且还提供了操作Elasticsearch索引数据的控制台,并且提供了一定的API提示,非常有利于我们学习Elasticsearch的语法。安装ik分词器Lucene的IK分词器早在2012年已经没有维护了,现在我们要使用的是
2020-11-27 20:15:52 285
转载 为什么多线程下载能加速(QUIC和TCP)?
答案是TCP拥塞控制不精确。这个问题源于TCP的初始窗口设定、窗口增长策略、带宽探测策略。简单来说,TCP单流很难利用满带宽。初始窗口较小或者减窗过猛都会拉低带宽利用率。1.引言Why QUIC is necessary? 每个接触QUIC的programmer总会这样问。答案也很简单:SPDY、TCP不够好!不过这样说太肤浅了,下面我来分析本质原因【引 1】。基于一条TCP连接的SPDY复...
2020-03-14 17:06:46 715
原创 Java泛型与集合常见陷阱
下面我总结了集合,泛型,数组转集合等一些常见的陷阱一、List ,List<?> 与 List 有区别吗?1、我们先来看看 List 与 List 1、很多可能觉得 List<Object>的用法与 List 是一样的,例如很多人认为: List<Object> list; 与 List list; 这两种定义...
2019-05-28 16:44:47 270
原创 redis读写分离与读写分离重同步
-redis已经发现了这个读写分离场景特别普遍,自身集成了读写分离供用户使用。我们只需在redis的配置文件里面加上一条,【slaveof host port】语句配置过程,启动多个redis节点,修改节点里面的redis.conf配置文件服务器下线导致数据丢失,slave下线之后怎么保证数据的同步?在进行复制的主从服务器双方的数据库将保存相同的数据,概念上将这种现在称为“数据库状态...
2019-05-27 10:48:10 453
原创 Redis深入浅出笔记总结
1.redis五种数据类型和消息订阅1、 Redis String数据结构简介:String是最常用的一种数据类型,普通的key/value存储都可以归为此类 1、set/get 1)设置key对应的值为String类型的value 2)获取key对应的值 2、mget ...
2019-05-20 11:23:03 2287
原创 Tomcat群集共享Session+Nginx负载均衡
最近学习了Tomcat群集共享Session+Nginx负载均衡记录顺便总结一下先下载Tomcat,解压然后建立一个群集文件夹拷贝三个Tomcat然后修改conf里面server.xml对应的端口图的128行的 jvmRoute是给集群的Tomcat 取的名字并放开画圆圈的注释手动的方式在在Tomcat下webapps新建一个文件夹群集的方式实现了就会session同步(默认情况...
2019-05-15 15:25:54 184
原创 mysql语句优化不定期更新
mysql语句优化不定期更新:1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:select id from t w...
2019-05-07 10:12:06 134
原创 使用WebSocket整合spring boot出现造成内存泄漏警告
警告:The web application [ROOT] appears to have started a thread named [lettuce-eventExecutorLoop-1-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:su...
2019-04-26 10:57:58 6132 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人