自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

niu872457857的博客

程序员niu的博客

  • 博客(25)
  • 收藏
  • 关注

原创 Redis分布式锁实现原理

释放锁,只需要将对应的锁的key从redis中删除即可,但是这里需要注意的是,在释放锁之前,必须判断只有是当前线程占用的锁才可以进行释放,所以锁的key对应的value我们就可以存放当前的客户端的身份标识,在释放锁之前,比对一下当前释放锁的客户端是否是当前加锁的客户端,如果匹配成功则可以正常删除对应的key释放锁,否则就不释放锁。b. 如果是当前客户端持有锁,则对锁的重入次数counter进行-1,如果-1之后重入次数依旧大于0,说明锁被重入,需等待重入次数为0才可以解锁,这时候重新设置锁key的有效期。

2023-05-19 00:07:21 94

原创 Redis数据一致性

需要注意的是3.1.1 和 3.2.1中描述的解决方案也只能保证最终数据一致性,无法保证强一致性,如上述各场景中若线程A操作异常,在通过3.1.1 和 3.2.1的方式解决问题之前,其他线程仍有可能获取到脏数据。对于大部分系统而言最终数据都会存储在数据库中,也就是系统需已数据库中数据为准,那么对于上图缓存存在的场景下,当数据库中的数据发生变化时,就可能会出现数据不一致的问题。弱一致性:数据写入成功后,系统不保证能立刻读出最新的数据,也不承诺多久之后数据可以达到一致,但保证到某个时间级别后,数据能达到一致;

2023-05-18 23:59:37 394

原创 springboot常见问题

后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在 \BOOTINF\classes 目录下才是我们的代码,因此无法被直接引用。单纯做 Spring Boot 开发,可能不太容易遇到 bootstrap.properties 配置文件,但是在结合Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan >。

2023-05-18 23:24:05 112

原创 10大排序算法

堆排序是将整个数组,想成一个完全二叉树,然后构建成一个大堆顶,这样就保证了最大的元素一定在二叉树的根节点,然后置换根节点和最后一个节点,最后一个位置上就是最大的值,然后用除了最后一个元素的数组确定第二大元素,依次类推完成数组的排序,从第一个元素开始,和第二个元素比较大小,如果比后面的元素小,就置换两个元素,这样依次传递,传递到最后一个元素,就是最大值,然后再从第一个元素开始,传递到倒数第二个元素,就是次最大元素,这样比较到最后就把数组排序完成。冒泡,选择,插入,希尔,归并,快速,堆排,计数,桶,基数排序。

2023-05-12 16:11:36 47

原创 java重要技能

Mysql底层数据结构、存储引擎、事务隔离级别、锁、索引、MVCC工作原理,sql优化。ssm springboot springCloud dubbo 主流框架。了解设计模式,常用数据结构,堆,栈,二叉树,hash表,hashmap源码。jvm内存模型、垃圾回收算法、类的加载过程、垃圾回收期的特性、jvm调优。分布式事务、XA、TCC、Sega、Seata、recaetmq。redis使用,5种数据类型,持久化,过期策略,集群。java8 lambda stream流。nginx配置,负载均衡。

2023-05-12 09:57:44 27

原创 Java虚拟机(JVM)面试题

程序计数器是一块较小的内存空间,它可以看作是:保存当前线程所正在执行的字节码指令的地址(行号)由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都有一个独立的程序计数器,各个线程之间计数器互不影响,独立存储。称之为“线程私有”的内存。程序计数器内存区域是虚拟机中唯一没有规定OutOfMemoryError情况的区域。总结:也可以把它叫做线程计数器。

2023-05-12 09:57:06 42

原创 RabbitMQ面试题

● MQ就是消息队列。是软件和软件进行通信的中间件产品● RabbitMQ是一款开源的,Erlang编写的,消息中间件;最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 可以用它来:解耦、异步、削峰。

2023-05-12 09:56:15 37

原创 Dubbo面试题

● RMI: 采用 JDK 标准的 RMI 协议实现,传输参数和返回参数对象需要实现 Serializable 接口,使用 Java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。● 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。

2023-05-12 09:55:50 28

原创 Java集合面试题

● 集合就是一个放数据的容器,准确的说是放数据对象引用的容器● 集合类存放的都是对象的引用,而不是对象的本身● 集合类型主要有3种:set(集)、list(列表)和map(映射)。● 哈希算法是指把任意长度的二进制映射为固定长度的较小的二进制值,这个较小的二进制值叫做哈希值。● 链表是可以将物理地址上不连续的数据连接起来,通过指针来对物理地址进行操作,实现增删改查等功能。● 链表大致分为单链表和双向链表。

2023-05-11 14:35:46 67

原创 Java并发编程

● 多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。● 多线程编程中一般线程的个数都大于 CPU 核心的个数,而一个 CPU 核心在任意时刻只能被一个线程使用,为了让这些线程都能得到有效执行,CPU 采取的策略是为每个线程分配时间片并轮转的形式。当一个线程的时间片用完的时候就会重新处于就绪状态让给其他线程使用,这个过程就属于一次上下文切换。

2023-05-11 14:22:41 51

原创 Spring MVC面试题

● Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。● Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。● 控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。

2023-05-11 14:16:33 43

原创 MyBatis面试题

● 基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;● 4、对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。● 3、向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。● 2、Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。

2023-05-11 14:10:57 33

原创 Redis面试题

● Redis 是一个使用 C 语言写成的,开源的高性能key-value非关系缓存数据库。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。Redis的数据都基于缓存的,所以很快,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis也可以实现数据写入磁盘中,保证了数据的安全不丢失,而且Redis的操作是原子性的。

2023-05-11 14:09:29 42

原创 MySQL面试题

● 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。作用:用于存取数据、查询、更新和管理关系数据库系统。● MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

2023-05-11 13:27:33 130

原创 SpringCloud面试题

● Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过Eureka Service来监控各个微服务是否运行正常。

2023-05-11 13:17:14 80

原创 Linux面试题

cd (change directory:英文释义是改变目录)切换目录cd …/ ;跳到上级目录cd /opt ;不管现在到那直接跳到指定的opt文件夹中cd ~ ;切换当前用户的家目录。root用户的家目录就是root目录。pwd (print working directory:显示当前工作目录的绝对路径)ls (ls:list的缩写,查看列表)查看当前目录下的所有文件夹(ls 只列出文件名或目录名)ll (ll:list的缩写,查看列表详情)查看当前目录下的所有详细信息和文件夹(ll 结果

2023-05-11 13:12:41 27

原创 设计模式面试题

● 设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。● 保证一个类只有一个实例,并且提供一个访问该全局访问点● 它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式● 工厂方法模式Factory Method,又称多态性工厂模式。

2023-05-11 13:09:18 55

原创 七种方案!Redis分布式锁

日常开发中,秒杀下单、抢红包等等业务场景,都需要用到分布式锁。而Redis非常适合作为分布式锁使用。本文将分七个方案展开,跟大家探讨Redis分布式锁的正确使用方式。如果有不正确的地方,欢迎大家指出哈,一起学习一起进步。● 什么是分布式锁● 方案一:SETNX + EXPIRE● 方案二:SETNX + value值是(系统时间+过期时间)● 方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)● 方案四:SET的扩展命令(SET EX PX NX)

2023-05-11 12:54:59 83

原创 2023年java面试宝典

底层底层基于数组实现的,支持对元素进行随机访问,适合随机查找和遍历,实际上不适合插入和删除,默认初始大小为10,当数组容量不够时,会触发扩容机制(扩大到当前的1.5倍),需要将原来数组的数据复制到新的数组中,当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制,移动代价比较高。中没有定义的方法,用于操作表头和表尾的元素,可以当作堆栈,队列和双向队列使用,(比如jdk官方推荐使用基于linkedList适用于增加删除多的场景)

2023-05-10 13:07:24 277

原创 CSS display属性详解

display

2023-05-05 11:07:51 35

原创 CSS块元素,内联元素,内联块元素

也称行内块元素,是新增的元素类型,img和input元素的行为类型这种元素,但是也归类于内联元素,可以用display属性将块元素或内联元素转化成这种元素。通过display属性来互相转化,块元素用的较多,经常把内联元素转化为块元素,少量转化为内联块元素,要使用内联元素时,直接使用内联元素,而不用块元素转化.(5)浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果。(2)浮动的元素会向左或向右浮动,碰到父级元素边界,浮动元素,未浮动的元素才停下来。

2023-04-25 11:32:00 285

原创 初识-Redux

在上面我们定义了一个Action,但是Action不会自己主动发出变更操作到Store,所以这里我们需要一个叫dispatch的东西,它专门用来发出action,不过还好,这个dispatch不需要我们自己定义和实现,redux已经帮我们写好了,在redux里面,store.dispatch()是 View发出 Action 的唯一方法。纯函数的意思是说,对于相同的输入,只会有相同的输出,不会影响外部的值,也不会被外部的值所影响。纯函数属于函数式编程的概念,如果你想了解更多纯函数的概念,请看这里。

2023-04-23 17:51:08 32 1

原创 常用排序算法

算法

2023-04-06 17:42:18 38 1

原创 echarts学习

echarts入门

2023-03-03 11:21:18 30

原创 linux学习

linux命令学习

2023-03-01 15:38:35 16

空空如也

空空如也

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

TA关注的人

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