- 博客(111)
- 收藏
- 关注
原创 Redis底层设计与源码分析---学习笔记
扩容的时候,因为不能卡顿,所以不会一次性把所有hash槽的内容都挪到新的空间,而是渐进地搬运。redis会维护两个HashTable,首先访问老的,如果老的没有会去新的HashTable访问,有新的元素加进来,放到新的HashTable。当HashTable的某个key中链表的节点个数,大于HashTable的size,就会触发扩容。首先,根据数据长度的不同,有很多种sdshdr的实现,从5一直到64,就是bit位数量有区别。而且,每次扩容的时候,假设size从6变成7,那么申请2x7=14的空间,
2023-04-22 19:43:12 837
原创 自己整理的Java面试题(下)
拦截器主要是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
2022-12-18 16:39:48 908
原创 《深入分布式缓存 从原理到实践》笔记
1.数据库缓存:比如Mysql的查询缓存,缓存Mysql query的结果集ResultSet。反向代理可以缓存原始资源服务器的一些资源,帮助客户端以更快的速度获取web资源。解决方法:仲裁机制,比如slave要变成master的时候,让第三方的仲裁节点也ping一下master。脑裂:一个高可用系统中,两个有联系的节点之间断开连接后,两个节点争抢共享资源导致系统混乱的过程。静态页面缓存->动态页面组件缓存->数据库分库分表->分布式缓存。这里讲了这几个分布式系统的中的算法和概念。参考JSR107规范。
2022-11-04 11:24:33 513
原创 看《Effective Java 第三版》记录
一.静态工厂方法来取代构造器例子来自Boolean这个类,这个valueOf方法返回了一个Boolean实例,但是它并不是Boolean的构造方法,这样做有几个好处: public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); }有名称,可以自己定义不用每次都新建一个对象,比如上面这个方法就不是每次都新建一个,是在类的成员变量“缓存”了两个:更灵活,可以返回原本类型的任意一个子类对象,
2022-01-26 13:29:33 175
原创 《深入理解Java虚拟机》 读书记录
一.前言看书记一下关键信息,怕自己忘了,断断续续看了一两遍。二.正文第二部分 自动内存管理机制在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OOM的可能。(p50)HotSpot虚拟机中,对象在内存中的存储分为三部分:对象头Header,实例数据Instance Data和对齐填充Padding。对象头又分为两部分:第一部分存储自身运行时数据包括HashCode,GC分代年龄,锁状态等,这部分叫MarkWord;第二部分是类型指针,虚拟机通过这个指针确定这
2021-10-10 22:04:18 158
原创 Zookeeper基础:特点、数据结构、应用场景
文章目录1.Zookeeper是什么2.Zookeeper的特点示意图3.Zookeeper的数据结构4.应用场景统一命名服务1.Zookeeper是什么Zookeeper从设计模式角度来理解:是一个基 于观察者模式设计的分布式服务管理框架,它负责 存储和管理大家都关心的数据,然后接受观察者的 注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察 者做出相应的反应。2.Zookeeper的特点Zookeeper:一个领导者(Leader
2021-09-20 00:38:05 169
原创 Redis事务和锁机制
文章目录一.定义和基本特性1.redis事务的定义2.redis事务相关命令Multi,Exec,Discard3.事务的错误处理二.redis的锁机制1.乐观锁介绍2.redis命令WATCH key [key....]UNWATCH3.redis事务特性一.定义和基本特性1.redis事务的定义MULTI, EXEC, DISCARD and WATCH are the foundation of transactions in Redis. They allow the execution o
2021-08-15 20:33:01 317
原创 maven如何理解正常版本和Snapshot版本
如何理解正常版本和Snapshot版本开发中maven真是太常用了,但有时候不明白什么时候用release版本,什么时候用snapshot版本,记住了也老忘1.认识maven依赖 <dependency> <groupId>com.test.atomatom98</groupId> <artifactId>xxxxx-api</artifactId> <ver
2021-05-11 11:26:28 1033
转载 Web服务开发--------Tomcat容器,Spring容器,SpringMVC容器之间的关系
一.背景最近研究SpringBoot,SpringBoot内置了Tomcat容器,作为Web服务非常简洁方便,我发现自己对web服务的理解,特别是容器等概念不清楚,所以学习记录下二.正文转自https://www.cnblogs.com/shitou911013/p/11009600.htmlweb容器中有servlet容器,spring项目部署后存在spring容器和springmvc容器。其中spring控制service层和dao层的bean对象。springmvc容器控制c
2021-03-04 19:42:30 673 1
原创 Kafka学习-----Kafka生产者:分区策略和可靠性保障
目录一.Kafka分区策略1.分区原因2.分区的原则二.Kafka数据可靠性保证1.副本同步策略?2.ISR----防止LEADER挂掉3.ACK应答机制4.故障处理,LEO,HW是什么一.Kafka分区策略1.分区原因方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了;可以提高并发,因为可以以 Partition 为单位读写了。2.分区的原则需要将 produc
2020-12-19 19:20:53 268
原创 Kafka学习-----Kafka消费者Consumer:消费方式,分区分配策略,Range&RoundRobin
目录一.Kafka分区策略1.分区原因2.分区的原则一.Kafka分区策略1.分区原因方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了;可以提高并发,因为可以以 Partition 为单位读写了。2.分区的原则需要将 producer 发送的数据封装成一个 ProducerRecord 对象 ![在这里插入图片描述](https://img-blog.cs
2020-11-08 10:57:49 1010
原创 Kafka学习-----文件存储机制和分片索引
目录一.Kafka工作流程1.整体架构2.需要注意⚠️:二.分片索引机制示例:如何找到对应offset的Message消息呢三.总结一.Kafka工作流程1.整体架构消息交互两方分别是生产者Producer和消费者Consumer,Kafka集群Cluster中,有三个broker,类似于三个实例。其中针对同一个Topic A有三个不同分区Partition,每个都有自己的follower(备份用)。2.需要注意⚠️:Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消
2020-10-31 12:22:40 567
原创 Kafka学习-----概述:MQ,定义,基础架构
目录一.什么是Kafka1.定义2.什么是MQMQ的好处二.消息队列两种模式三.消息队列基础架构一.什么是Kafka1.定义Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于 大数据实时处理领域。特征:Kafka作为一个集群,运行在一台或者多台服务器上.Kafka 通过 topic 对存储的流数据进行分类。每条记录中包含一个key,一个value和一个timestamp(时间戳)。2.什么是MQ“消息队列”是在消息的传输过程中保存消息
2020-10-07 22:49:26 523
原创 深入学习HTTP-----HTTP报文格式/消息结构
目录一.HTTP概念介绍一个例子---访问百度首页二.HTTP请求消息结构1.定义&例子2.常见请求头参数三.HTTP响应消息结构四.除了GET/POST的其他请求类型注:文章部分图片来自于《图解HTTP》一.HTTP概念介绍参见:HTTP概念介绍一个例子—访问百度首页curl -v https://www.baidu.com/ 在命令行使用Curl工具,输入上面的指令。p.s. curl的用法详解:curl工具用法详解Trying 36.152.44.95...TCP_NOD
2020-09-29 14:50:37 1160 1
原创 深入学习HTTP-----HTTP相关概念总结:WWW,TCP/IP协议簇,URL与URI等
目录一.HTTP介绍总结:二.WWW和协议的概念1.定义2.三.TCP/IP协议簇和TCP IP协议关系四.OSI七层模型和TCP/IP五层模型五.URI和URL介绍和区别注:文章部分图片来自于《图解HTTP》一.HTTP介绍在浏览器的输入框输入一个网页:www.baidu.com,背后发生了什么?我们看到的页面,实际上是目标服务器server针对我们的请求回传的文件,再经过浏览器的解析展示出来的。这一系列的流程,怎么做,用什么格式需要遵守一个规范,这个规范就是HTTP协议。HTTP是Hy
2020-09-22 09:58:57 1979
原创 Java8新特性之Optional类----优雅地防止NPE问题带来的过多if-else
目录一.什么是NPE问题二.Optional类介绍构造函数常用函数三.Optional类如何使用?总结方法论示例补充一.什么是NPE问题java标准库,内建了大量的异常处理类,这些类以Throwable 设计为最顶层类。常见的java异常类有:IOException, SocketTimeoutException, UnknownHostException, MalformedURLException、NullPointerException等。NullPointerException(空指针)是
2020-09-19 23:32:29 717
原创 操作系统深入学习-----死锁及死锁的解决策略(附Java示例demo)
目录一.从一道面试题说起二.死锁概念-什么是死锁?1.由来2.死锁程序Demo3.组成三.死锁的解决办法有哪些Monitor Record两个Set四.总结一.从一道面试题说起请你说一下如何解决死锁?如果你第一时间想到的是下面的回答:破坏死锁的四个必要条件之一,即互斥,请求和保持,不可剥夺,循环等待,然后逐句解释这四个条件含义和如何破坏。。。这个答案没有问题,但是不够准确也不够全面二.死锁概念-什么是死锁?管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软
2020-09-14 22:07:15 332
原创 操作系统深入学习-----重新认识Synchronized的实现原理,管程Monitor介绍
目录一.从一道面试题说起二.Monitor管程是什么?1.由来2.特点3.组成三.Java语言中Synchronized的底层实现原理Monitor Record两个Set总结一.从一道面试题说起请你说一下Synchronized的实现原理?这个面试题可是太常见了,一般来说会怎么回答呢?synchronized 是由一对 monitorenter/monitorexit 指令实现的,monitor 对象是同步的基本实现单元。在 Java 6 之前,monitor 的实现完全是依靠操作系统内部的互斥
2020-09-07 17:03:49 790 1
原创 操作系统深入学习-----用户态内核态、多线程模型、线程映射
目录一.概念介绍什么是内核,什么是操作系统,二者区别是什么用户态和内核态,用户级线程和内核级线程二.JVM进程处于什么位置?三.JVM线程和内核线程关系,如何映射?一.概念介绍什么是内核,什么是操作系统,二者区别是什么1.操作系统操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。从计算机
2020-09-06 17:52:25 1177
原创 自己记录的一些Java后端面试题(上)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2020-09-01 09:23:50 1667 2
原创 分布式理论基础------CAP理论介绍及其性质
一.什么是分布式系统分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。在分布式系统中:应用可以按业务类型拆分成多个应用,再按结构分成接口层、服务层;我们也可以按访问入口分,如移动端、PC端等定义不同的接口应用;数据库可以按业务类型拆分成多个实例,还可以对单表进行分库分表;增加分布式缓存、搜索、文件、消息队列、非关系型数据库等中间件;很明显,分布式系统可以解决集中式不便扩展的弊端,我们可以很方便的在任何一个环节扩展应用,就算一个应用出现问题也不会影响到别的
2020-07-14 10:13:31 872
原创 CDN是什么,它在web服务的哪个环节起到怎样的作用?
一.背景业务开发中了解到获取很多数据都需要通过CDN来实现,比如我想拿一条数据,调用CDN的接口,结果返回给我一个List,其中每个都一样。这是为什么呢,带着这样的疑问,打算了解,介绍一下CDN的概念,使用。二.CDN概念介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。
2020-07-09 11:47:59 483
原创 JVM编译相关概念------我们写的Java代码是如何编译的?
一.什么是编译编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。二.字节码,机器代码,Java代码概念解释字节码是指平常所了解的 .class 文件,Java 代码通过 javac 命令编译成字节码机器码和本地代码都是指机器可以直接识别运行的代码,也就是机器指令字节码是不能直接运行的,需要经过 JVM 解释或编译成机器码才能运行机器码是与平台相关的,也就是操作系统相关,不同操作系统能识别的机器码不同三.Java与
2020-07-05 21:53:34 215
原创 如何在代码中优雅地操纵日期-----Java 8 新增LocalDate使用
一.背景作为一个写业务的Java程序员,往往需要处理和日期相关的代码,比如获取当天最早和最晚时间,比如获取前三天时间,等等之前都是用Date类,往往需要写N多行代码来进行转换,还需要使用SimpleDateFormat等来进行格式化,可读性非常差,Java 8提供了一组新的类方便处理时间。java.time.LocalDate ->只对年月日做出处理java.time.LocalTime ->只对时分秒纳秒做出处理java.time.LocalDateTime ->同时可
2020-06-19 22:22:41 233
原创 2021届Java开发求职-------面试实战之Vivo提前批
一.介绍这个面试题目非常多,牛客网链接我擦 但是 VIvo好像不招Java研发岗的二.题目Java基础Java异常了解吗?说说平时遇到的异常?说出6种常见的java异常。写程序遇到过哪些异常 运行时异常有哪些面向对象 面对对象的几大特性 多态怎么理解对string类的理解。stringbuffer 和 stringbuilder反射机制介绍一下bio,nio,aio分别介绍一下,nio的实现方式问了public等变量定义修饰词的时间域问了反射机制,还有问了动态代理的好处和坏处,好处
2020-06-13 23:44:31 326
原创 MYSQL中的MyISAM与InnoDB存储引擎区别整理
一.介绍MySQL 教程 MySQL 是最流行的关系型数据库管理系统,结构如下:这个图简略的表示了Mysql的体系结构,其中mysql的存储引擎面试经常问,所以下面整理一下二.对比1.表锁和行锁Innodb支持行级锁和表级锁,这是最大的不同,MyISAM只支持表级锁。 随着CPU核数的增加,InnoDB的吞吐量反而越好,而MyISAM,其吞吐量几乎没有什么变化,显然,MyISAM的表锁定机制降低了读和写的吞吐量。2.是否支持事务Innodb支持事务,MyISAM不支持事务。MyISAM是
2020-05-22 19:23:17 338
原创 算法套路学习之BFS广度优先搜索
来源:https://leetcode-cn.com/problems/open-the-lock/solution/wo-xie-liao-yi-tao-bfs-suan-fa-kuang-jia-jian-dao-/又是看这个大佬学习的,下面我自己总结一下,并且记录一下遇到的使用BFS的题目,验证一下这个套路的可行性。一直比较讨厌这种题,因为没有总结出一套框架来。(现在回溯熟悉的差不多了 哈哈哈哈)一.背景和框架BFS本质:本质上就是一幅「图」,让你从一个起点,走到终点,问最短路径下面是算法的
2020-05-22 17:17:31 238
原创 算法套路学习之回溯算法-----子集,排列,组合等问题如何解决
来源:https://www.cnblogs.com/labuladong/p/12320463.html我是看这个大佬的博客学习到的,下面我自己总结一下,并且记录一下遇到的使用回溯的题目,验证一下这个套路的可行性。一直比较讨厌这种题,因为没有总结出一套框架来。一.需要思考的问题解决一个回溯算法题,只需要以下三点:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择结束条件:也就是到达决策树底层,无法再做选择的条件其实我看到这个也是一脸懵逼的,但是后来看例子就明白了,下面是算法
2020-05-08 22:52:47 370
原创 Java多线程与并发知识点-----锁的“升级”是什么?
一.前置知识java对象头在JVM中,实例对象在内存中的布局分为三块区域:对象头、实例变量和填充数据。如下:对象头:Hotspot虚拟机的对象头主要包括两部分数据:Mark Word(标记字段)、Klass Pointer(类型指针)、Array length(数组长度,只有数组类型才有)。实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分...
2020-04-26 12:05:54 226
原创 2021届Java开发求职-------面试实战之美团财务实习
一.介绍暑期实习的面试,看了一下考并发包知识比较多,正好我借机复习一下JUC二.正文一面 2h实习项目难点,搭建框架时候的难点略项目开发过程中遇到的难点,数据标注平台开发 中的逻辑,怎么发现有问题的,标注批次计数?略最近怎么学的 并发,博客,怎么保证博客写的是对的,没有看书吗略4.sychronized底层原理? monitor对象头里面是什么?锁升级?每个对象有一个监视器锁...
2020-04-25 23:21:34 301 1
原创 如何遍历一个HashMap------遍历的五种方式
一.前言HashMap无论是在工作中还是在面试中都非常常用,下面介绍一下遍历一个HashMap的四种方式二.代码1.通过keySet来遍历所有的valueMap<String, String> map = new HashMap<String, String>();for (String key : map.keySet()) {System.out.pri...
2020-04-14 21:49:49 408
原创 常用八种排序总结(Java版本)
前言说实话还是为了准备(可能有的)面试,哈哈,先把常用的总结一下。我想的是这样:排序算法应该要经常手撕,所以可以在markdown编辑状态下经常写,然后和文章里的对一下,这样效果可能比较好。1.复杂度,稳定性总结注意:一般来说最好和最快问的少二.代码实现冒泡排序:介绍:一种简单的排序算法,其方法是:首先将第一个关键字与第二个关键字进行比较,若逆序,则交换位置;然后比较第二个与...
2020-03-27 23:37:13 176
原创 2021届Java开发求职-------面试实战之阿里实习
介绍网上完整的少(都是一面二面) 我就挑一些吧1、 synchronized和lock的区别2、 spring bean加载3、 介绍一下nio4、 双亲委派机制,如何只有自己加载5、 两个String类如何区分6、 Retrantlock aqs底层7、 反射的原理8.hashmap如何解决散列冲突9.hashmap扩容的时候,链表尾部的节点怎么处理的?(hashmap扩容...
2020-03-27 22:21:07 319
原创 2021届Java开发求职-------面试实战之百度实习
介绍转自牛客网:1. 有看过HashMap源码吗?hashmap还是比较常见,目前看到的每个面经都考这个2. JDK1.7中HashMap的put()方法全过程。3. JDK1.8有那些变化。4. JDK1.7当中HashMap中线程不安全问题有那些?原因分别是什么?5. JDK1.8之后如何链地址法,链表长度是多少的时候会转换成红黑树。6. 节点个数是多少的时候,红黑树会退回链表...
2020-03-17 13:08:29 347
原创 2021届Java开发求职-------面试实战之美团数据平台
一.前言虽然从大三开始就实习好久了,但是现在可能也面临找工作(假如现在没法转正的话),所以找点面经巩固一下知识,嘿嘿,算法也要看,每天一道leetcode先吧二.具体内容这是一份美团的 链接:https://www.nowcoder.com/discuss/352030一面JVM:JVM的结构:这个要分公有,私有:(针对线程而言)公有部分:堆区,方法区私有部分:程序计数器,虚...
2020-03-14 22:39:24 195
原创 Java设计模式之适配器模式----解决接口之间的兼容问题
一.适配器模式介绍适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。注意:这里的接口不仅仅是java语言中的interface,更多是指一个类型所具有的方法特征集合,是一种逻辑上的抽象。解决什么问题:解决两个/多个接口不...
2020-02-16 23:45:54 1556
原创 Java设计模式之命令模式----解耦请求发出者和请求实现者
一.场景在餐厅里,我们要吃饭,就需要对餐厅发出请求,此时,我们是请求发出者。餐厅的厨师则是请求实现者,如果我们直接和厨师交流沟通说自己想吃什么,这时,我们和厨师就是一种强耦合关系,当顾客越来越多,厨师也各司其职的时候,就不好运作了。解决:通过点餐的菜单来对我们进行解藕,我们把想吃的菜在菜单上勾选,交给服务员,服务员交给厨师,这时我们之间是解藕的关系。二.命令模式介绍定义命令模式(...
2020-02-08 23:20:44 273
原创 Java设计模式之装饰器模式----避免继承带来的类冗余问题
一.装饰器模式介绍装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。解决什么问题:为了扩展一个类的功能,经常会使用继承的方式实现,由于继承为类引入静态特征,并且随着扩展功能的...
2020-02-01 19:33:22 547
原创 Java设计模式之工厂模式----简单工厂?抽象工厂?工厂方法?
一.我们说的设计模式指什么?GoF(Gang of Four):是四个人的代号。《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,199...
2020-01-21 19:38:25 201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人