自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 动态高并发时为什么推荐ReentrantLock而不是Synchronized?

前言碎语    Synchronized 和 ReentrantLock 大家应该都不陌生了,作为java中最常用的本地锁,最初版本中 ReentrantLock 的性能是远远强于 Synchronized 的,后续java在一次次的版本迭代中对 Synchronized 进行了大量的优化,直到 jdk1.6 之后,两种锁的性能已经相差无几,甚至 Synchronized 的自动释放锁会更好用。   在面试时被问到 Synchronized

2020-12-11 14:34:40 1178 6

原创 面试官问我:Object o = new Object() 占用了多少个字节?

小小面试一下前言蜜语最近马师傅火的不要不要的,虽然没有抢到耗子尾汁的商标注册权,但是必须得蹭一波马师傅的热度,下面就是闪电五连鞭的教学环节,你准备好了吗!在正式内容开始前先甩两篇关于类加载机制和内存布局的文章,因为今天的内容多少与这两篇文章有直接的联系,对这方面还比较薄弱的朋友可以先看看,地址我放在下面。jvm┃java内存区域,跳槽大厂必会知识点!moon不讲武德!!!一个类加载机制给面试官说蒙了!!今天本文的内容就针对刚刚模拟面试两个问题1.对象的创建过程2.对象的内存布局对象的创建

2020-12-05 13:01:16 369 1

原创 moon不讲武德!!!一个类加载机制给面试官说蒙了!!

正文约: 2900字预计阅读时间: 8分钟目录文章目录目录1 前言2 类加载机制2.1 什么是类加载机制2.2 案例2.3 类加载的过程3 类加载器3.1 什么是类加载器3.2 双亲委派模型3.3 破坏双亲委派模型4 结语1 前言    距离上次发表文章已经一周了,本来是打算早点肝出来的,但是由于不可抗力因素,年终了,需求急剧增加,再加上moon得给自己留出点学习时间,这篇文章也就拖到了现在,羞愧羞愧。    今天我

2020-11-25 11:21:07 359 5

原创 接口的幂等性的多重考虑,你会了吗?

目录文章目录目录前言正文1 接口幂等性1.1 案例2 解决方案2.1 token机制2.2 去重表2.3 redis 的 SETNX键值2.4 状态机幂2.5 乐观锁(更新操作)2.6 悲观锁(更新操作)结语前言    今天的主题:接口幂等性的解决方案。本来是想把对象的存储过程和内存布局肝出来的,但是临时产生了变化,哈哈,这部分内容我们留在下一期吧,有句话说的好,好事多磨,对吧。    在实际项目开发中接口是我们在开发中

2020-11-17 17:17:04 1982 13

原创 这次 moon 要把网络 I/O 一网打尽

微号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]文章目录前言什么是 I/O ?网络 I/O 又是什么?为什么会有网络 I/O 模型?I/O 模型阻塞 I/O非阻塞 I/O异步 I/O信号驱动模型I/O 多路复用selectpollepoll结语前言大家好,我是 moon,上一次和大家聊了一下 socket(这次 moon 要把 socket 玩的明明白白),相信大家对 socket 有了一定的认识,对于 socket.

2022-05-19 11:05:22 393 1

原创 这次 moon 要把 socket 玩的明明白白

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]文章目录前言Socket 是什么?Socket 运行流程基于 TCPServerClient基于 UDPSocket TCP 是如何建立连接的三次握手发生在 socket 的哪几个函数中Socket TCP 是如何断开连接的第四次挥手后为何要等待 2MSL前言一说到网络,大家必然会想到 TCP、UDP、Http、三握四挥等,但是一说 Socket,大家可能会有点模.

2022-05-12 15:04:42 542 1

原创 《面试八股文》之网络19卷

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]文章目录@[toc]1.TCP/IP 网络模型有几层?分别有什么用?2.介绍一下 HTTP 协议吧3.GET 和 POST有什么区别?4.PING 的作用?5.常见的 HTTP 状态码有哪些6.HTTP1.1 和 HTTP1.0 的区别有哪些?7.HTTPS 和 HTTP 的区别是什么?8.HTTP2 和 HTTP1.1 的区别是什么?9.HTTP3 和 HTTP2.

2021-09-09 15:54:17 439 1

原创 女朋说:我想要我自己的注解~

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]女朋友:我想要我自己的注解,你教我!moon:诶?你怎么突然想要自己的注解了?女朋友:关你什么事!分手!moon:别别别别别!我教!moon:看好了,我的宝~,你spring学的不错,那我先带你参观下Autowired吧~@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.P.

2021-08-11 23:28:22 130 2

原创 《面试八股文》之 Redis 16卷

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]大家好,我是 moon。redis 作为我们最常用的内存数据库,很多地方你都能够发现它的身影,比如说登录信息的存储,分布式锁的使用,其经常被我们当做缓存去使用。可是,用了这么久的reids,你懂它吗?其他《面试八股文》系列文章文章目录1.什么是 redis?它能做什么?2.redis 有哪八种数据类型?有哪些应用场景?3.redis为什么这么快?4.听说.

2021-07-26 16:49:23 435

原创 《面试八股文》之kafka21卷

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]大家好,我是moon,最新一篇面试八股文系列 kafka 篇也出炉了,大家还不卷起来吗?其他《面试八股文》系列文章文章目录1.什么是消息中间件?2.kafka 是什么?有什么作用?3.kafka 的架构是怎么样的?4.Kafka Replicas是怎么管理的?5.如何确定当前能读到哪一条消息?6.生产者发送消息有哪些模式?7.发送消息的分区策略有哪些?8.K.

2021-07-09 17:11:26 435 3

原创 不使用第三个变量,怎么交换两个变量的值?

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]才华横溢+玉树临风 VS 腰缠万贯大家好,我是1,我长的非常帅又很有才华我有一个好兄弟,它叫8,这家伙豪气的不得了,是一个富二代但是由于我的才华和英俊的外表,他还是认我做了大哥我们都很羡慕对方,我想过有钱的日子,但是他想变成我这样有才华且帅的男人总的来说,我想变成他,他想变成我!于是,我们开始翻阅各种武学宝典,功夫不负有心人!终于让我找到了!----&g.

2021-06-11 17:39:05 91

原创 《面试八股文》之Dubbo17卷

微信公众号:moon聊技术关注选择“ 星标 ”, 重磅干货,第一 时间送达![如果你觉得文章对你有帮助,欢迎关注,在看,点赞,转发]前言虽然金三银四过了,但是金九银十马上就要到了,还不快快准备起来?今天就开启《面试八股文》系列的第一版-RPC王者Dubbo,moon 在后续的《面试八股文》系列还将继续推出mysql,spring,并发,redis,kafka,zookeeper等一系列文章。当然大家有什么好的建议也可以通过公众号或者个人微信和我交流。每天一个知识点不要背,要理解,大.

2021-05-02 12:58:01 403 2

原创 redis内存满了怎么办?让你玩懂8种内存淘汰策略

微信公众号:moon聊技术本文约5300字,完整阅读大概会花费你13分钟左右的时间[如果你觉得文章对你有帮助,欢迎关注,点赞,转发]简介我们知道redis是一个非常常用的内存型数据库,数据从内存中读取是它非常高效的原因之一,那么但是如果有一天,redis分配的内存满了怎么办?遇到这个面试题不要慌,这种问题我们分为两角度回答就可以:redis会怎么做?我们可以怎么做?增加redis可用内存这种方法很暴力,也很好用,我们直接通过增加redis的可用内存就可以了,有两种方式通过配置文.

2021-03-13 11:35:01 1114

原创 七种分布式事务的解决方案,一次讲给你听

微信公众号:moon聊技术本文约5300字,完整阅读大概会花费你13分钟左右的时间[如果你觉得文章对你有帮助,欢迎关注,点赞,转发]什么是分布式事务分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。一个大的操作由N多的小的操作共同完成。而这些小的操作又分布在不同的服务上。针对于这些操作,要么全部成功执行,要么全部不执行。为什么会有分布式事务?举个例子:转账是最经典的分布式事务场景,假设用户 A 使用银行 app 发起一笔跨行转.

2021-03-01 16:36:13 847 2

原创 妹妹10分钟就玩懂了零拷贝和NIO,也太强了

微信公众号:moon聊技术本文约3500字,完整阅读大概会花费你「10分钟」左右的时间[如果你觉得文章对你有帮助,欢迎关注,点赞,转发]前言'零拷贝'这个词大家应该不陌生了,也算是大厂面试中的一个高频考点,玩过 NETTY 的朋友应该对此相当熟悉了,NETTY 的「高并发」很大程度上都是因为 NIO,而 NIO 的核心就是零拷贝技术了,今天就让你十分钟玩懂零拷贝。传统的IO模型是怎么样的?我们来看一张图,让我们看看一个文件从磁盘传输到网卡究竟要经历什么样的磨难:「第一步」:将文件通过 .

2021-02-09 17:59:32 331

原创 redis持久化怎么选?成年人从来不做选择...

前言面试官:你知道 redis 是的怎么做持久化的吗?我:我知道 redis 有两种方式,一种是 RDB,一种是 AOF。面试官:那这两种方式具体是怎么做的,它们的区别是什么,生产环境中到底应该怎么选择??我:嗯。。。。。。这个我不知道。面试官:出门左拐,不送。嗯。。。以上场景很真实,都说面试造火箭,入职拧螺丝,今天我们就让面试官再问到这个问题时,把他按在地上摩擦!redis的持久化有哪些?我们简单的说明一下什么是 redis 的持久化:用通俗的语言来说.redis 的持久化就是将内存中的

2021-01-18 11:49:24 117 1

原创 主从哨兵集群终于给你说明白了

文章首发于微信公众号:moon聊技术本文约5000字,完整阅读大概会花费你十分钟左右的时间[如果你觉得文章对你有帮助,欢迎关注,点赞,转发]前言碎语说起 Redis 应该没有人会陌生了吧,作为开发中最最最最最最最常用的 nosql,它的重要性不言而喻。Redis有三种集群模式,第一个就是主从模式,第二种“哨兵”模式,第三种是 Cluster 集群模式。今天就和大家细细聊聊这三种模式。主从复制当其中一台服务器更新之后,服务器会自动的将这台更新的数据同步到另外一台服务器上。通过持久化的功能,

2021-01-04 14:57:13 329

原创 两个周末整理的垃圾回收知识,我要吐血了

唠唠叨叨今天的肝货来了,作者已经肝吐血了,看书查资料整理了万字的垃圾回收相关知识,虽然很长,但是看完相信你一定会有很大的收货,诶,周末又没有了,心好痛。「面试必问」的垃圾回收,我们直接进入正题,读完你会学到以下的所有知识,「包括但不限于」:垃圾是怎么找到的?OopMap有什么作用?为什么需要STW?记忆集有什么作用?常用的7种垃圾回收器都有哪些??三色标记算法?CMS为什么会产生碎片化?G1居然会引起Full GC?…垃圾对象是怎么找到的?引用计数算法就是给对象添加一个计数器

2020-12-20 22:09:26 272 1

原创 mysql┃一篇文章让你搞懂mysql 的三种锁

正文约: 2200字预计阅读时间: 6分钟文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注前言锁的重要性想必不用多说了吧,作为面试造火箭中最重要的一个点之一,可谓是不得不会,说出来都是一把辛酸泪,什么悲观锁,乐观锁,自旋锁,偏向锁等等等等,虽然说在我们平常写代码的时候很少会用到它们,但是实现的思想是很需要我们去研究的。之前和大家聊过分布式锁的实现方式以及其解决的问题。那么今天moon就和大家聊聊mysql中的锁,读完这篇文章你将会学到:正文全局锁全局锁就是说对整个数据库进行加锁。

2020-11-30 11:51:04 205 1

原创 mysql┃多个角度说明sql优化,让你吊打面试官!

目录目录前言正文1.表结构优化●1.1拆分字段1.2字段类型的选择1.3字段类型大小的限制1.4合理的增加冗余字段1.5新建字段一定要有默认值2.索引方面●2.1索引字段的选择2.2利用好mysql支持的索引下推,覆盖索引等功能2.3唯一索引和普通索引的选择3.查询语句方面●3.1避免索引失效3.2合理的书写where条件字段顺序3.3小表驱动大表3.4可以使用force index()防止优化器选错索引4.分库分表●结语前言mysql的优化是我们经常都

2020-11-22 01:00:23 176 1

原创 jvm┃java内存区域,跳槽大厂必会知识点!

​正文约: 2000字预计阅读时间: 6分钟文章首发于我的微信公众号:哪儿来的moon,欢迎大家关注目录前言正文1.程序计数器2.虚拟机栈3.本地方法栈4.堆5.方法区6.直接内存结语前言在java的使用过程当中,我们会发现java的内存是自己释放的,并不像C、C++代码那样,每一块儿内存都需要程序员自己去维护,但是在如此便捷的同时可能也会出现很多问题,比如内存溢出,内存泄漏更不好排查了,所以今天的文章中,moon会带大家先了解java的内存区域的到底是怎样的,以及各个组件的作用

2020-11-21 00:13:05 126 4

翻译 深入mysql (一)

执行流程1,连接连接管理模块,接收请求;连接进程和用户模块,通过,连接线程和客户端对接2,查询查询缓存 Query Cache分析器,内建解析树,对其语法检查,先from,再on,再join,再where…;检查权限,生成新的解析树,语义检查(没有字段k在这里)等优化器,将前面解析树转换成执行计划,并进行评估最优执行器,获取锁,打开表,通过meta数据,获取数据3,返回结果返回给...

2019-07-26 13:53:56 451

原创 算法之求最大公约数

以下方法就拿30 和18 这两个数来举例子方法一:质因子分解30 = 2 * 3 * 518 = 2 * 3 * 3故它们的最大公约数是2*3=6方法二:辗转相除法第一步把 30 当做a把 18 当做b30 / 18 = 1 余 12第二步把 18 当做a把 上一步的余数12当做b18 / 12 = 1 余 6第三步把 12 当做a把 上一步的余数6当做b12 ...

2019-05-13 16:50:33 224

原创 手动配置阿里云服务器java环境(CentOs)

使用xshell工具完成和阿里云服务器的链接第一步在https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载jdk安装包下载好了在linux端输入cd /usrmkdir java创建好文件夹后cd java进入文件夹把我们下载好的jdk拖进去使用命令t...

2019-04-04 15:59:57 431

转载 linux常用的20个命令

玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要...

2019-03-20 10:49:23 143

原创 关于idea项目打成jar包的问题

这个问题搞了我一下,现在来记录下第一步第2步第三步第四步记住要修改mf文件,把自己写好的mf文件内容复制一下,拷贝到这个新的mf文件第五步第六步第七步此时项目就打包好了,那么打包好的文件在哪里呢在前面设置的这个文件夹里此时一般情况下酒没有问题的,但是我这个项目是第一次导入到idea中,会导致有些文件没有进行打包,这样打包的文件在服务器上没有日志输出,经过一天...

2019-03-18 17:50:54 881

原创 java -谈谈我对面向对象的理解,private的意义

万物皆对象,在我们生活中,一个水杯,一个枕头,都可以把它当做一个对象.java面向对象有三个特性,封装,继承,多态,如果再加一个,那就是抽象我们来举个例子我是上帝,我要开始造人了,我会先想,人是由什么构成的? 好了,我知道了,人是由灵魂和肉体构成的(抽象就相当于定义了模板)我想好了用什么来构成人,那我就开始造人了,我造着造着发现,太多了,我造着很累,每次都要一个一个来造,那么我自己就做了一...

2019-03-15 10:28:29 4713 2

转载 多线程中静态方法的线程安全问题

在多线程中使用静态方法是否有线程安全问题类的成员分为两类,静态成员(static member)和实例成员(instance member)。静态成员属于类,实例成员则属于对象,即类的实例。简单讨论一下在一个类中使用静态字段(static field)和静态方法(static method)是否会有线程安全问题。 我们在知道, 静态字段(static field)和静态方法(static ...

2019-03-15 09:18:42 673

原创 redis的三种部署方式和数据读取方式

redisredis的三种部署方式1:主从复制,就是每台机器都是一样的,这种部署方式每台服务器都会向主服务器同步自己的数据,所以其中的数据内容是相同的工作机制:从服务器连接到主服务器发送SYNC命令,主服务器接收命令,开始执行BGSAVEE命令申城RDB文件并使用缓冲区域记录伺候执行的所有写命令,主服务器的BGSAVE命令执行完成后,向所有服务器发送快照文件,并继续记录执行的写命令,从服务器...

2019-03-13 17:41:20 3738 1

转载 阻塞和非阻塞,同步和异步

阻塞和非阻塞,同步和异步1 例子故事:老王烧开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。老王想了想,有好几种等待方式1.老王用水壶煮水,并且站在那里,不管水开没开,每隔一定时间看看水开了没。-同步阻塞老王想了想,这种方法不够聪明。2.老王还是用水壶煮水,不再傻傻的站在那里看水开,跑去寝室上网,但是还是会每隔一段时间过来看看水开了没有,水没有开就走人。...

2019-03-13 09:44:00 105

转载 关于redis整体介绍

1,redis是什么redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。 2,支持的语言 3,redis的应用...

2019-03-12 17:01:31 100

原创 关于Threadlocal的源码分析和其与synchronized的选择

先简单介绍下Threadlocal,Threadlocal就是为每一个线程独立创建一个私有的本地变量,把原先的公共变量作用域范围缩小到了每个线程本身,这样在高并发的情况下就会更安全,这是和synchronized不同的地方,synchronized本质上操作的还是一个变量我们先举个例子,来简单了解一下Threadlocal总共有三个线程对变量a进行累加,测试下结果乍一看好像是正确的,并且...

2019-03-11 10:43:02 107

原创 mybatis延迟加载

延迟加载也被称为懒加载,也就是当你真正需要数据的时候,才会发出sql语句进行查询,mybatis运行时期的属性配置,在主配置文件中的中mybatis是默认禁用了延迟加载的,会很积极的去查询关联对象,mybatis在缺省的情况下调用equals,clone,toString,hashcode都会出发延迟加载,一般我们会保留clone,调用many方对象的equals,toString,hashc...

2019-02-18 22:40:08 148

原创 mapper接口原理

mapper的实现原理是动态代理那什么是动态代理呢?动态代理就是在程序运行期间由jvm通过反射等机制动态生成的,所以不会存在代理类的字节码文件,故我们在mybatis中使用mapper接口的时候没有它的实现类,代理对象和真实对象的关系是由运行时期才决定的,由于jvm通过字节码的二进制信息加载类的,如果我们在运行期系统中,遵循java编译系统组织的class文件的格式和结构,生成相应的二进制数据...

2019-02-16 19:10:42 2790

转载 mybatis常见面试题(转)

Mybatis常见面试题(转)Mybatis技术内幕系列博客,从原理和源码角度,介绍了其内部实现细节,无论是写的好与不好,我确实是用心写了,由于并不是介绍如何使用Mybatis的文章,所以,一些参数使用细节略掉了,我们的目标是介绍Mybatis的技术架构和重要组成部分,以及基本运行原理。博客写的很辛苦,但是写出来却不一定好看,所谓开始很兴奋,过程很痛苦,结束很遗憾。要求不高,只要读者能从系列博...

2019-02-15 13:16:48 185

转载 GETPOSTPUTDELETE请求区别

1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次...

2019-02-12 16:04:20 2293

转载 springboot中的thymeleaf配置

链接:https://www.jianshu.com/p/0cb218be0e7a

2019-02-11 12:20:03 602

原创 sql实战练习题(3)

1.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE employees (emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT N...

2019-02-10 18:14:44 492

原创 sql实战练习题(2)

1.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date=‘9999-01-01’。结果第一列给出当前员工的emp_no,第二列给出其manager对应的manager_no。CREATE TABLE dept_emp (emp_no int(11) NOT NULL,dept_no char(4) NOT NULL,from_date ...

2019-02-09 16:47:34 204

原创 sql实战练习题(1)

1,.查找最晚入职员工的所有信息CREATE TABLE employees (emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_date date NO...

2019-02-08 19:42:33 357

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除