- 博客(21)
- 资源 (8)
- 收藏
- 关注
原创 kafka的一些概念
kafkakafka消费组:一个消费组里包含一个或者多个消费者,一个patition只能被一个消费组里的一个消费组消费消费者消费patition时是根据offerset来顺序消费的,这个offerset在旧版里是保存在zookeeper,在新版是保存在kafka内部当消费组内的consumer启动时,第一个启动的consumer会成为消费组的coordinator消费组里的消费者会跟消费组里的coordinator发送hearthbeat,以保持consumer自己在线当消费组内的consum
2022-03-14 16:12:48 2825
原创 一篇文章带你揭开 Java Instrumentation 的原理
文章目录一、前言二、热部署初识三、Java Instrumentation四、Java Instrumentation 静态代码示例五、Java Agent 示例 —— attach的使用一、前言日常开发中避免不了,修改了代码重新启动应用去验证问题,如果没有热部署,则需要每次修改完就去编译代码再启动,这样子的操作看似简单,但很耗时,特别电脑配置不高,或者项目比较大的情况二、热部署初识热部署其实就是在代码运行时去加载我们动态现在修改过的代码到服务器上,诸如 SpringBoot的devtools插
2021-10-28 22:47:49 1890
原创 最新Elastic search7.13.1 Java API创建索引并且设置分词
1.# 系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Maven依赖引入二、创建ElasticSearch配置客户端三、创建索引四、ik分词器详解五、查看效果前言随着大数据的兴起,搜索越来越重要,ElasticSearch也越来越多人使用提示:以下是本篇文章正文内容,下面案例可供参考一、Maven依赖引入mav
2021-06-22 23:06:55 2947 1
原创 Mysql一条select语句的执行过程
mysql的执行流程:query Cache:是缓存sql结果集的内存缓冲区,是将sql的hash值作为key,结果集作为value存放,目的是提高查询效率,但如果query cache中关联的表的数据或结构发生变化,则query cache中关于这张表的数据都会被清空,这个过程会占用服务器的资源,如果表的数据量大,则占的资源也会多,mysql在version8中已经去掉这个功能。详细介绍SQL解析器:sql解析器 会将sql按照关键字打碎成一段段的语句,比如 select * from a这条
2021-05-06 14:07:30 334
原创 MySql的缓存技术,query_cache
mysql执行流程query-cache -> 解析器 -> 预处理器 -> 优化器 -> 执行计划 -> 执行器 -> 返回结果query-cache原理当mysql接受到一条sql时,query-cache处理器会对这条sql做hash计算得到一个hash值,然后将这个hash值去query-cache容器去匹配,如果匹配的上,则直接返回匹配的结果,如果匹配不上,则会将hash值 和 执行器执行sql的结果存进query-cache容器里,以及这条sql相关的信
2021-04-27 12:27:08 501
原创 CountDownLatch秒杀实现
CountDownLatch是什么?CountDownLatch是一个发令枪,并发控制器,可以阻塞线程,使一个线程等待其他线程执行完再去执行原理:CountDownLatch是JUC包中的一员,将阻塞里的线程都封装成一个Node节点 加入到AQS队列中,使用的是一个共享锁当调用countDownLatch.await()方法时,都会将当前线程加入到这个AQS队列中,AQS队列的作用是存放需要获取锁的线程,利用的是一个state状态 去管理锁的状态的秒杀小例子 //使用AtomicInte
2021-02-04 10:50:41 372 1
原创 Volatile关键字的原理
Volatile关键字的原理Java内存模型的3大特性Volatile关键字的原理Java内存模型的3大特性Java 内存模型的3大特性分别是 : 原子性、可见性、有序性原子性:世界上最小的单元是原子,不可再分割比如:a=1,这个操作就是最小的单元,不可以再分割,这个就是一个原子操作再比如:a++,等同于 a=a+1,这个操作可以拆分为3个步骤,第一步是获取变量a的值,第二步是将变量a 加 1得到结果值,第三步是将结果值赋值给a,这个这是一个非原子操作,非原子操作都是有线程安全,存在线程安全问题的
2021-02-01 22:42:31 380 2
原创 idea一键部署插件 - Cloud Toolkit 安装及使用教程
插件安装:1、在idea插件市场 搜索 cloud-toolkit ,找到Alibaba cloud Toolkit安装,安装完成需要重启idea2、在工具栏 能看到Alibaba Cloud就证明插件已安装成功3、填写邀请码:1FTNZS配置cloud toolkit 部署信息:提示:这里可以添加要学的内容例如:1、 搭建 Java 开发环境2、 掌握 Java 基本语法3、 掌握条件语句4、 掌握循环语句配置服务器安放程序包的路径和启动程序的命令:提示:这里可以添
2020-08-31 12:53:58 1182
原创 redis分布式锁实现原理
数据结构redis提供了5种数据结构,分别是String,Hash,List,Set,Sorted-Set其中,能实现分布式锁的有String具体实现原理:插入String数据的命令是set k v,这个命令是无论k是否存在都会插入到redis,而如果k存在,则会覆盖前一个value的值这个set命令 还可以传其他参数,譬如 set k v Ex [second] NX,其中[second]是传入的秒数,表示当前k的过期时间,NX是表示如果k不存在,则插入到redis,同时返回1如果key存在,则
2020-08-09 11:44:23 234
原创 关于Mysql中Innodb与Myiasm自增主键的计数问题
假设:innodb的自增主键的计数是保存在内存中,myiasm则是保存于硬盘中验证:下面两张表,第一张t_ask是innodb引擎的,第二张是myisam的这时按照mysql自增的规律,插入一条新数据,id会叠加,新的id在t_ask是8,t_mysam_test_table中是9现在我们分别删除两张表的最后一条数据,然后停止mysql,然后再启动,再分别插入一条新数据...
2019-03-13 15:11:05 727 2
原创 JWT使用教程
JWT是json web token的简写,意为json格式的token。(官网)使用场景常用于web项目的token校验,用户校验,权限校验等,也可以用于信息的加密传输。由于http的无状态的,所以我们通常会使用session cookie来保存用户的状态,随着微服务的兴起,session cookie无法在分布式环境下达到保存用户状态的目的,所以我们需要寻找另外的途径来保存用户的状态...
2019-03-12 14:13:32 2745 2
原创 Java对大文件实现延时下载策略
Java对大文件实现延时下载我想文件下载这个同学们在项目是经常有的功能,当项目初期,数据量并不大的时候,下载功能要下载的文件一般都不会大,在页面点下载按钮可以达到秒下载的响应但随着时间的推移,业务可能会越做越大,数据量也会迅速飙升,这时我们的下载功能可能就达不到初期的秒响应的速度,有可能点下载按钮后要等几分钟甚至十几分钟才会响应,这时我们不能让用户去干等这个下载的响应,我们让这个下载文件的命令...
2019-03-07 11:32:34 2071
原创 Mysql索引的最左匹配原则原理
总所周知,mysql的索引遵循的是最左匹配原则那最左匹配原则在mysql里是怎么玩的?假设我们在表中有2个字段,一共有6条数据,其中id的索引树见上图假设我们现在要查id=6的数据...
2019-03-02 15:39:59 5953 1
原创 MySql引擎
Mysql的引擎有好几种,其中Innodb和Myiasm最为常用存储引擎在mysql里是插拔式的,什么是插拔式?所谓的插拔式就是可以配置的,我们在建表的时候,可以在建表语句上加上一句Enginee=Myiasm,就表示要建的表使用的存储引擎为Myiasm从上面一点可以看出,mysql的存储引擎是表级别的,存储引擎是可以由第三方公司来开发,自mysql5.5以后,mysql默认的存储引擎为i...
2019-03-01 21:31:50 189
原创 MySQL为什么要选择B+树来作为索引的数据结构
二叉树的结构出发 首先从二叉树的结构来说,二叉树的结构是从它的第一个元素开始定根节点,往后插入的数据会跟根节点的值做比较,如果值比根节点的值大则会放到右边,成为右子节点,反之,则插入到左边,成为左子节点结论 从上面二叉树的结构可以得到以下结论:如果第一个插入的数据的值比较小,往后插入的数据的值都比第一个插入的数据的值要大,则二叉树会转变成为一颗斜树,斜树的时间复杂度为O(n),效率极低...
2019-03-01 15:56:37 1141
原创 数据结构-树结构
数据结构:树:二叉树:1、最大的度为22、二叉树的子树有左右之分,次序不能颠倒斜树:1、只有左子树的二叉树叫左斜树,只有右子树的二叉树叫右斜树2、其实斜树就是线性表结构满二叉树:1、所有的叶子节点都在最下面一层2、非叶子节点的度一定是23、同样深度的二叉树,满二叉树的结点数最多,叶子结点也是最多完全二叉树:1、叶子结点只能出现在最下两层2、最下层叶子在左部是连续的,也就...
2019-02-28 23:09:53 1341
原创 Tomcat性能优化-线程池编
Tomcat线程池Tomcat性能优化-线程池编Tomcat性能优化-线程池编Tomcat是一个JavaEE的服务器,仅支持符合javaEE规范的项目。1、当Tomcat在接收到一个请求后,会做些什么呢?每接收到一个请求需要将这个请求委托给线程处理,假设每接收到一个请求就开启一个线程来处理,如果请求数量过多,开启的线程就会过多,服务器的资源是有限的,线程过多,很可能会拖垮服务器。那要怎么做...
2019-02-18 18:53:47 316
原创 java的4种引用类型
StrongReference(强引用)写法:Test test = new Test() 这是最常见的引用类型,也是最牢固的引用类型,当jvm发生gc时,对象被引用不会被gc回收,jvm内存满了将要发生OOM(out of memory)的时候,强引用类型也不会被回收SoftReference(软引用)写法:SoftReference<String> softRefer...
2018-08-08 16:44:26 1338
原创 mybatis源码分析
mybatis的mapper.xml加载mybatis启动会先加载mybatis-config.xml这个总的配置文件然后找到mybatis-config.xml上mapper这个子节点,获取mapper节点上namespace的值,namespace这个值配的就是当前mapper.xml映射的mapper.java的路径然后将这个namespace的值的class加载到jvm然后以c...
2018-08-03 11:48:12 115
Dism++10.1.1000.100_2d2bf466baca088c4b35248f5a7316f4e00cac0b.zip
2021-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人