自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Sentinel限流器熔断器的相关介绍

Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制单位时间内接口访问次数;或者按照某种规则进行限流,如限制ip的单位时间访问次数等。 之前我们已经讲过接口限流的工具类ratelimter可以实现令牌桶的限流,很明显sentinel的功能更为全面和完善。来看一下sentinel的简介: https://github.com/...

2021-03-15 15:43:45 574

转载 CAT分布式监控系统:CAT功能介绍,CAT监控系统是什么,能做什么?

CAT分布式监控系统(一):CAT监控系统功能介绍          本文概要:              1、CAT监控系统是什么。             ...

2021-03-15 15:41:33 3983 1

转载 Dubbo整合SpringBoot

点击上方“Java知音”,选择“置顶公众号” 技术文章第一时间送达! 作者:雪山上的蒲公英 cnblogs.com/zjfjava/p/9696086.html 目前的dubbo已支持和springboot集成,还是之前的例子,这次我们通过springboot容器来实现。借此了解一下基于springboot容器启动的dubbo的配置及使用。 1. 准备工作 创建...

2021-03-15 15:39:13 563

转载 SpringBoot的笔记

        Spring Boot                   1. Spring Boot简介   Spring 诞生时是 Java 企业版(Java Enterprise Edition,J...

2021-03-12 10:49:25 379

转载 讲解 Zookeeper 的五个核心知识点

讲解 Zookeeper 的五个核心知识点 SoWhat1412 2021-01-15 08:31:58 ...

2021-03-11 18:13:09 282

转载 分布式系统的CAP理论

2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。 CAP理论概述 一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition toler...

2021-03-11 09:53:20 306

转载 springBoot中对于model层、dao层、service层、controller层的理解

springBoot作为一个轻量级的java开发框架,在许多的方面提出了相应的解决方案。 一般来说基于springBoot的项目基本分为以下几个层次(在项目文件夹中体现为一个层次对应一个package) Dao层(mapper层)service层(业务层)model层(entity层)controller层(控制层) 各层的作用 Dao 层 即数据持久层,对数据做持久化操作。也被称为mapper层。dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。 Serv

2021-03-08 09:31:26 3348 1

转载 Spring Boot的@RequestParam和@RequestBody的区别(2)

@RequestParam 注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。 RequestParam可以接受简单类型的属性,也可以接受对象类型。 @RequestParam有三个配置参数: required 表示是否必须,默认为 true,必须。defaultValue 可设置请求参数的默认值。value 为接收url的参数名(相当于key值)。@Re...

2021-03-04 13:13:04 543 1

转载 Spring Boot的@RequestParam和@RequestBody的区别(1)

一、问题描述       由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口。接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错;在post请求下,后台接收参数的注解为RequestParam时也会报错。 二、问题原因      由于spring的RequestPa...

2021-03-04 13:07:43 158 1

转载 HTML,JS与CSS

HTML和CSS,JavaScript(简称js)是万维网的核心技术,三种技术一起构成前端开发。HTML为网页结构,CSS为网页表现,JS为网页行为。如果说网页是一个人的话,那么HTML就是他的骨骼经络,CSS就是他的外貌(如颜色),JS就是他的行为动作。什么是JS(JavaScript)?JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。JavaScript是一种高级的、解释型、直译式脚本语言,是一种基于原型、函

2021-02-03 11:06:08 3346

转载 IO多路复用的几种实现机制的分析

elect,poll,epoll都是IO多路复用的机制。所谓I/O多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷...

2021-01-11 16:16:20 137

转载 面试之多路复用

https://blog.csdn.net/baixiaoshi/article/details/48708347https://blog.csdn.net/z69183787/article/details/52943917select,poll,epoll都是IO多路复用的机制。所谓I/O多路复用机制,就是说通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相...

2021-01-11 16:12:06 189

转载 IO多路复用之select函数详解

select优点 1)select()的可移植性更好,在某些Unix系统上不支持poll() 2)select() 对于超时值提供了更好的精度:微秒,而poll是毫秒。 select缺点 1) 单个进程可监视的fd数量被限制。 2) 每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大 同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大 3) 对fd进行扫描时是线性扫描。fd剧增后,IO效率较低,因为每次调用都对fd进行线性

2021-01-11 16:09:14 723

转载 面试官问我redis锁怎么实现?我一口气和他说了3种方法!

Redis单实例分布式锁 实现一: SETNX实现的分布式锁 setnx用法参考redis官方文档 语法 SETNX key value 将key设置值为value,如果key不存在,这种情况下等同SET命令。 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写。 返回值: 1 设置key成功0 设置key失败 加锁步骤 SETNX lock.foo <current Unix time + lock timeout + 1> 如果客户端获得

2021-01-11 16:03:48 306

转载 redis中zset底层实现原理

https://www.cnblogs.com/yuanfang0903/p/12165394.html 阅读目录 一.Zset编码的选择二.ziplist三.skiplist四.skiplist与平衡树、哈希表的比较五.Redis中的skiplist实现六.Redis为什么用skiplist而不用平衡树?一.Zset编码的选择 1.有序集合对象的编码可以是ziplist或者skiplist。同时满足以...

2021-01-11 15:57:53 945

转载 redis三种模式对比

模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后) 主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分...

2021-01-11 15:54:32 258

转载 redis 主从模式,哨兵模式,cluster(集群)模式 简介

详细可以参看《redis官网文档》或者《redis中文网》 Redis集群方式共有三种:主从模式,哨兵模式,cluster(集群)模式 主从模式:是三种集群方式里最简单的。它主要是基于Redis的主从复制特性架构的。通常我们会设置一个主节点,N个从节点;默认情况下,主节点负责处理使用者的IO操作,而从节点则会对主节点的数据进行备份,并且也会对外提供读操作的处理。主要的特点如下: 主从模式下,当某一节点损坏时...

2021-01-11 15:51:58 156

转载 几率大的Redis面试题(含答案)

其他面试题类型汇总: Java校招极大几率出的面试题(含答案)----汇总 几率大的网络安全面试题(含答案) 几率大的多线程面试题(含答案) 几率大的源码底层原理,杂食面试题(含答案) 几率大的Redis面试题(含答案) 几率大的linux命令面试题(含答案) 几率大的杂乱+操作系统面试题(含答案) 几率大的SSM框架面试题(含答案) 几率大的数据库(MySQL)面试题(含答案) 几率大的JVM面试题(含答案) 几率大的现场手撕算法面试题(含答案) 临时抱佛脚必备系列(含答案) 注:知识还在积累中,不能保

2021-01-11 15:49:00 315

转载 redis缓存穿透,缓存击穿,缓存雪崩原因 解决方案

##redis缓存穿透,缓存击穿,缓存雪崩原因 解决方案 ###一、前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据

2021-01-11 15:43:16 102

转载 为什么 ConcurrentHashMap 读操作不需要加锁?

来源:http://tinyurl.com/y685vvv9 目录 ConcurrentHashMap的简介 get操作源码 volatile登场 是加在数组上的volatile吗? 用volatile修饰的Node 总结 我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? Concu...

2020-12-14 21:37:50 205

转载 Hashmap的结构,1.7和1.8有哪些区别

(一) Hashmap的结构,1.7和1.8有哪些区别 不同点: (1)JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。 (2)扩容后数据存储位置的计算方式也不一样:1. 在JDK1.7的时候是直接用hash值和需要扩容的二进制数进行&(这里就是为什么扩容的时候为啥一定必须是

2020-12-14 21:32:50 153

转载 读锁有什么用?读为什么要加锁?

读为什么要加锁? 1、有些同学认为读锁没有用,他们的理由是:读操作又不会修改数据,想读就读呗,无论读的是就值还是新值,反正能读到。 2、也有同学认为读锁是为了防止多线程读到的数据不一致。 我认为不是这个原因,只需要问两个问题就知道了,首先问不一致的是什么?然后反问不一致会导致什么问题呢? 有些同学认为不一致就是有些线程读的是旧值,有些读的是新值,所以不一致。但是反问导致什么问题,就不是很好回答了,可能回答说为了保险吧,哈哈哈。 实际上即使加读锁,还是会存在有的线程读旧值,有的线程读新值,甚至非公平

2020-12-14 21:28:21 3993 3

转载 Java中常见的锁及其优化

常见锁 作为并发编程的一部分,锁机制是必不可少的,常见的锁有以下几种: 乐观锁、悲观锁、自旋锁、同步锁、递归锁、重量级锁、轻量级锁、偏向锁、分段锁,下面就来一一介绍一下这些锁: 1.乐观锁 乐观锁是一种乐观思想,它主要用在读多写少的场景。它认为别的线程在拿数据的时候只负责拿,并不会对数据进行改变,所以不会上锁。但是它在更新的时候会判断一下在此期间别人有没有对数据进行更新,采取先时先读当前的版本号,然后再进行加锁操作(比较当前的版本和上一次的版本号是否相等,如果一样就更新,如果不一样则重新进行CAS操作

2020-12-14 21:23:50 226

转载 CAS的实现原理

原文链接:https://blog.csdn.net/david_lua/article/details/103331688 本文导读: 前言如何保障线程安全CAS原理剖析CPU如何保证原子操作解密CAS底层指令小结 1 前言 日常编码过程中,基本不会直接用到 CAS 操作,都是通过一些JDK 封装好的并发工具类来使用的,在 java.util.concurrent 包下。 但是面试时 CAS 还是个高频考点,所以呀,你还不得不硬着头皮去死磕一下这块的技能点,总比一问三不知强吧?

2020-12-13 15:02:32 950

转载 是否真的理解了偏向锁、轻量级锁、重量级锁(锁膨胀)、自旋锁、锁消除、锁粗化,知道重偏向吗?

知识准备: 在开始前,首先清楚系统PV信号机制 荷兰学者Dijkstra于1965年提出的信号机制是一种有效的进程同步与互斥工具。 1)整型信号与PV操作 信号量是一个整型变量,根据控制对象的不同被赋予不同的值。信号量分为如下两类: (1)公用信号量。实现进程间的互斥,初值为1或资源的数目。 (2)私有信号量。实现进程间的同步 ,初值为0或某个正整数。 信号量  S的物理意义:S≥0表示某资...

2020-12-13 14:58:43 298

转载 synchronized的几种加锁方式

1、修饰普通方法(锁住的是当前实例对象) 同一个实例调用会阻塞不同实例调用不会阻塞public class SynchronizedTest { //锁住了本类的实例对象 public synchronized void test1() { try { logger.info(Thread.currentThread().getName() + " test1 进入了...

2020-12-13 14:52:20 2983 2

转载 从mian()方法的创建说起:守护线程和非守护线程

创建一个mian()方法做了哪些事情?守护线程和非守护线程创建守护线程 创建一个mian()方法做了哪些事情? 创建方法 当我们创建了一个main()方法时,JVM为我们做了哪些事情?只是简单的开辟一个mian线程,执行mian()方法中的方法体吗? 用代码验证一...

2020-12-10 16:26:16 496

转载 深入浅出Java中的clone克隆方法

Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢? 1 使用new操作符创建一个对象 2 使用clone方法复制一个对象 那么这两种方式有什么相同和不同呢?...

2020-12-10 16:19:12 135

转载 volatile是如何保证可见性和有序性的

volatile保证可见性的原理 可见性问题 可见性问题指的是一个线程在访问一个共享变量的时候,其他线程对该共享变量的修改对于第一个线程来说是不可见的,下面通过一个例子可以发现可见性问题。 public class Visable { private static boolean flag = true; public static void main(String[] args) throws InterruptedException { new Thre.

2020-12-10 16:16:39 3811 1

转载 整数最大值+1问题

先看一个问题:i + 1 < i 成立吗?答案是肯定的。下面我们用代码来证明: @Test public void test(){ int i = Integer.MAX_VALUE; System.err.println("i="+i+",i+1="+(i+1)+" result:"+((i+1)<i)); }输出结果如下:i=2147483647,i+1=-214748364...

2020-12-10 16:11:39 1084

转载 Spring 如何解决循环依赖的问题

(一)Spring  IOC容器---对象循环依赖1. 什么是循环依赖?  what?   (1)循环依赖-->循环引用。--->即2个或以上bean 互相持有对方,最终形成闭环。   eg:A依赖B,B依赖C,C又依赖A。【注意:这里不是函数的循环调用【是个死循环,除非有终结条件】,是对象相互依赖关系】2.  Spring...

2020-12-10 16:09:29 97

转载 Spring自动装配及其注解

一.属性自动装配 首先,准备三个类,分别是User,Cat,Dog。其中User属性拥有Cat和Dog对象。 package com.hdu.autowire; public class User { private Cat cat; private Dog dog; private String str; public Cat getCat() { return ...

2020-12-10 16:02:48 408

转载 Spring面试底层原理的那些问题

1.什么是 Spring 框架?Spring 框架有哪些主要模块? Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成 Spring 框架,不必担心 Spring 是如何在后台进行工作的。 Sp...

2020-12-10 15:56:18 104

转载 SpringMVC常见面试问题总结

1、什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。   2、SpringMVC的流程? (1)用户发送请...

2020-12-09 14:19:16 159

转载 Spring常见面试题总结

1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。主要包括以下七个模块: Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;Spring AOP:...

2020-12-09 14:16:51 186

原创 时间复杂度为n的排序代码

public int[] arraysort(int[] a) { int[] num = new int[100000]; for(int i = 0;i < a.length;i++) { num[a[i]]++; } for(int i = 1;i < num.length;i++) { num[i] += num[i - 1]; } int[] b = new int[a.length]; for(int i = b.length - 1; i .

2020-12-09 13:44:15 804

原创 机器人的运动范围

题目描述:地上有一个 m 行和 n 列的方格。一个机器人从坐标 0,0 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。请问该机器人能够达到多少个格子?思路:利用递归实现,每次只能走上下左右四个点,进行判断点的位置是否越界,点数之和是否大于 K,是否已经走过了。 public int movingCount(int m, int n, int k) { int[][] arr = new int[m][n]; int num =m

2020-12-09 13:41:02 45

原创 矩阵中的路径

题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。思路:回溯法,双层 for 循环,判断每一个点,每次递归调用上下左右四个点,用flag 标志是否已经匹配(return),进行判断点的位置是否越界,是否正确匹配,判断矩阵的路径与模式串的第index个字符是否匹配。 public boolean exist(char[

2020-12-09 13:39:59 212

原创 滑动窗口的最大值

题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值思路:两个 for 循环,第一个 for 循环滑动窗口,第二个 for 循环滑动窗口中的值,寻找最大值。 public int[] maxSlidingWindow(int[] nums, int k) { if(nums == null || nums.length == 0){ return new int[0]; } int[] arr = new int[

2020-12-09 13:37:36 98

原创 求二叉搜索树的第K小的节点

题目描述:给定一棵二叉搜索树,请找出其中的第 k 小的结点思路:中序遍历保存二叉树节点,加上get方法public class Offer63 { ArrayList<TreeNode> list = new ArrayList<>(); public TreeNode KthNode(TreeNode root, int k) { zhong(root); return list.get(k - 1); } public void zhong(TreeNode

2020-12-09 13:35:55 213

空空如也

空空如也

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

TA关注的人

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