- 博客(124)
- 收藏
- 关注

原创 Kafka原理详细介绍
Kafka Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。1.前言 消息队列的性能好坏.
2022-03-24 11:05:35
25021
4

原创 Linux常用命令大全
Linux常用命令大全(非常全!!!)最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考:系统信息arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dm...
2018-10-20 18:30:20
86179
25

原创 SpringMVC框架介绍
史上最全最强SpringMVC详细示例实战教程SpringMVC学习笔记----一、SpringMVC基础入门,创建一个HelloWorld程序1.首先,导入SpringMVC需要的jar包。2.添加Web.xml配置文件中关于SpringMVC的配置 springmvc org.springframework.web.servlet.Dispatche...
2018-09-19 17:25:34
144260
43
原创 【浅谈设计模式】装饰器模式篇
装饰器模式(Decorator Pattern) 也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。装饰器模式的核心是功能扩展,使用装饰器模式可以透明且动态地扩展类的功能。大白话一点:有点像是 组合, 就是 我不动原先的业务东西,但是 又想给这个业务东西 加点额外的职责东西。
2022-11-30 15:38:23
364
原创 【MySQL运行原理篇】InnoDB整体架构
InnoDB主要由后台线程、内存池和磁盘文件三个部分组成。后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据,此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。
2022-11-22 10:22:34
907
原创 【MySQL运行原理篇】底层运行结构
MySQL底层其实就相当于一个web应用结构。例如:用户前端通过点击按钮发起ajax请求到java后台,后台接收到请求后将用户操作进行业务处理后,通过orm持久层框架(将业务实体与数据表联合)连接mysql,并将封装后的sql语句发送给mysql,mysql接收到sql后进行解析,优化,缓存。接着调用存储引擎的增删改查接口,对磁盘的database进行操作。
2022-11-22 10:09:59
837
2
原创 MYSQL索引查询问题质疑
我们在写mysql查询语句的时候,尤其是经验不足的同学肯定会想要怎么使用索引加快查询,或是我这样写到底会不会命中索引。那么现在我就列举几个常见的索引查询问题进行简单说明一下。(欢迎互怼!)
2022-11-14 10:48:26
512
原创 【HashMap篇】JDK1.7多线程下resize()导致最终产生循环链表的原因
HashMap在JDK1.7产生循环链表,导致cpu100%的原因!
2022-10-20 15:05:55
766
1
原创 【Spring依赖循环】提前曝光,直接曝光到二级缓存已经可以解决循环依赖问题了,为什么一定要三级缓存?
Spring解决依赖循环为什么一定要使用三级缓存??
2022-10-12 16:15:58
1737
2
原创 【分布式锁篇】Redisson详解
一个基于Redis实现的分布式工具,有基本分布式对象和高级又抽象的分布式服务,为每个试图再造分布式轮子的程序员带来了大部分分布式问题的解决办法。
2022-08-02 13:20:06
3415
原创 【PageHelper篇】深入源码分析PageHelper何时执行select count(0) from xxx查询?(结论+源码Debug分析)
pageHelper的原理pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句。所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将
2022-05-16 14:04:06
2022
1
原创 Xtrabackup工作原理
前言Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。 Xtrabackup优点1)备份速度快,物理备份可靠2)备份过程不会打断正在执行的事务(无需锁表)3)能够基于压缩等功能节约磁盘空间和流量4)自
2022-04-21 15:38:30
2459
原创 【Redis篇】主从,哨兵架构实现、持久化方式有哪些?
前言想成为一名优秀的java打螺丝选手,肯定要了解Redis底层原理,至于为什么非要了解呢?是因为面试官要问啊!,所以我们就要学!问:redis的主从架构模式,如何搭建?redis的主从架构模式其实是用一个redis节点来做写操作(主节点),多个redis节点来做读操作(从节点),主节点会将写入的数据同步给从节点,以保证从从节点读取的数据是最新的数据搭建方式:主节点不用修改任何配置,从节点修改redis.conf配置文件 配置主节点的ip端口:replicaof(代表从节点从哪个主节点同步
2022-04-06 16:50:35
400
原创 【Zookeeper面试篇】zookeeper集群搭建
问:zookeeper集群有哪些模式zookeeper集群无非有三种搭建方式,一是单机模式、二是伪分布模式、三是分布式模式。问:zookeeper集群中都有哪些角色有三种角色,一是Leader角色,可以处理读写请求,集群中只能有一个Leader角色,二是Follower角色,只能处理读请求,同时也是Leader的候选节点,如果Leader节点挂了,Follower节点就可以选举为Leader节点,三是Observer节点,该节点只能处理读请求,不能参与Leader的选举。问:zookeepe.
2022-04-06 16:09:40
2052
原创 【Zookeeper面试篇】什么是羊群效应,公平锁怎么实现
问:zookeeper羊群效应是怎么回事吗,如何避免呢zookeeper用来实现分布式锁的时候,如果有一个客户端A拿到了锁,那么客户端B、C、D都会监听A有没有变化,如果A处理完业务释放了锁,那么这个时候B、C、D都监听到了消息,都会去抢锁,假如有一百个正在等待的,那么就会有100个上去抢锁,像羊群一样蜂拥而至。这样的话就会造成资源的浪费,因为这么多节点被惊动了,但是拿到锁的只有一个节点,为何不只惊动一个节点呢。这里的话我们就要使用zookeeper的公平锁了。问:zookeeper公平锁怎么实现
2022-04-06 16:02:36
2351
2
原创 【Jenkins篇】向GitHub提交代码时触发Jenkins自动构建
当我们提交代码到GitHub后,可以在Jenkins上执行构建,但是每次都要动手去执行略显麻烦,今天我们就来实战Jenkins的自动构建功能,每次提交代码到GitHub后,Jenkins会进行自动构建;原文地址:http://blog.youkuaiyun.com/boling_cavalry/article/details/78943061前期准备工作进行本章的实战前,推荐您参照《docker下的Jenkins安装和体验》做安装和体验的实战,以便对Jenkins服务有初步了解;重要前提GitHub收到提交
2022-04-02 14:40:27
2279
2
原创 【Spring源码篇】IoC之ApplicationContext中refresh过程
前言上篇讲到【Spring源码篇】事件监听机制(@EventListener实现方式)https://blog.youkuaiyun.com/Number_oneEngineer/article/details/123889743有提到过首先Ioc容器启动的时候,ApplicationContext的refresh模板方法中??refresh,来咱们开始来巴拉巴拉源码瞧瞧,它里面都做了些什么操作。refresh()该方法是 Spring Bean 加载的核心,它是 ClassPathXmlApplicati
2022-04-01 12:16:52
359
原创 【Spring源码篇】事件监听机制(@EventListener实现方式)
前言项目里多出用到了spring的事件监听机制,然后今天无聊就翻了翻源码,看看spring底层是如何实现的。先梳理一下,首先Ioc容器启动的时候,ApplicationContext的refresh模板方法中,initApplicationEventMulticaster()方法中那个初始化了SimpleApplicationEventMulticaster。发送事件还是使用 applicationContext.publishEvent(或者applicationEventPublisher.pub
2022-04-01 10:21:06
1087
原创 浅谈TCP三次握手,四次挥手
什么是“3次握手,4次挥手”?TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接。 .
2022-03-31 14:14:08
250
原创 【Caffeine进阶】Redis+Caffeine 两级缓存实战,性能爆缸
往期回顾博主前面发过一篇【缓存框架Caffeine】初级篇,主要介绍了Caffeine的入门级使用!地址https://blog.youkuaiyun.com/Number_oneEngineer/article/details/123328014?spm=1001.2014.3001.5501本文主要介绍Caffeine以注解的方式来操作缓存,将原本全手动操作方式,改进为本地缓存交给spring管理Caffeine基于切面操作,自定义注解的方式来操作缓存前面两种方式搭配Redis实现两级缓存实战.
2022-03-31 12:33:50
4965
2
原创 java中如何查询一个指定的子字符在字符串中出现的所有or指定次数的下标索引
最近刷到一道很常见的算法题,题目不难,实现方式很多,就看时间复杂度哪种最低了。话不多说,看题:【问】 已知字符串str1=“ABABCDBADBCDBABCDBADBBADBBCCDBABCDBADBBCCDBADBBCCDBABCD”, str2=“ABCD”,如何快速高效的找出str2在str1中出现的所有下标索引以及第三次出现的下标索引?笔者一看:哇喔,这不是so easy 嘛??1、indexof public static void main(String[] args) { .
2022-03-30 16:02:02
1643
1
原创 10秒内插入亿量级数据,我滴妈,真牛逼...
一、前言相信很多小伙伴都遇到过大数据量导入DB,或者说数据库分表带来的数据批量插入,这时候会遇到个问题就是插入效率低的问题,例如博主前段时间在导入几千万条万条数据时,过程耗时***秒,具体多少?反正没有继续等,直接崩溃。于是乎对代码做了点优化,最后做到了10s内!!!开始表演,mock下过程原始写法,用的正常mybatisplus插入:public void insertMore() { long beginTime = System.currentTimeMillis();.
2022-03-25 15:20:16
6316
4
原创 什么是神经网络计算机
许多新型电子计算机不仅拥有高速的计算功能,而且还能模拟人脑的某种思维活动,就是说,拥有某些智能化的功能。然后,如果严格来鉴定一下,它们离真正的人脑思维功能实在差得太远了,而且有许多本质的差异。主要表现在人脑拥有高度的自我学习和联想、创造的能力,以及更高级的寻找最优方案和各种理性的、情感的功能。 神经网络计算机就是通过人工神经网络,模仿人的大脑判断能力和适应能力、可并行处理多种数据功能的计算机。它可以判断对象的性质与状态,并能采取相应的行动,而且可同时并行处理实时变化的大量数据,并引出结论。
2022-03-23 16:00:12
1156
原创 【Caffeine入门】浅谈缓存框架Caffeine
Caffeine是一个基于Java8的高性能缓存框架,号称趋于完美。Caffeine受启发于Guava Cache的API,使用API和Guava是一致的。它借鉴了Guava Cache和ConcurrentLinkedHashMap的设计经验。在Springboot中使用Caffeine在工程的pom文件引入caffeine的依赖,如下:<dependency> <groupId>com.github.ben-manes.caffeine</gr
2022-03-07 13:24:48
2118
原创 Spring AOP 基于注解实现通用日志打印
前言我们在日常开发中,项目里日志是必不可少的,一般有业务日志,数据库日志,异常日志等,主要用于帮助程序猿后期排查一些生产中的bug。有时候程序猿们在做代码调优的时候需要关注每个接口的响应速度,所以需要打印接口调用时间,如果在接口中每次写这段代码实在恶心,故基于Spring AOP面向切面编程使用注解解决该问题。1.定义注解value为对应的接口名称,默认为BaseController@Target(ElementType.METHOD)@Retention(RetentionPolicy.R
2022-03-03 16:42:22
723
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人