自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java后端底座从无到有的搭建(随笔)

本文是笔者在初创公司,一年多来Java后端服务底座搭建过程的总结,如有不当之处,还请各位大大指正。

2024-02-20 16:36:39 1207

原创 ZooKeeper(伪)集群搭建

ZooKeeper集群搭建

2022-07-07 14:43:33 621 1

原创 ZooKeeper的权限控制--ACL

ZooKeeper的权限控制--ACL

2022-07-01 16:58:10 1073

原创 ZooKeeper永久监听

ZooKeeper永久监听

2022-06-30 17:09:53 1254

原创 Zookeeper的数据模型和节点类型

ZooKeeper的数据模型和节点类型

2022-06-30 16:28:44 544

原创 ZooKeeper的简单使用

zookeeper的简单使用

2022-06-30 15:09:59 375

原创 CAP&Base理论

分布式系统的相关理论基础

2022-06-30 11:15:41 202

原创 Netty面试题

目录一、Netty是如何解决JDK中Selector BUG的?二、如何让单机下基于Netty的应用程序支持几十万甚至百万的长链接?三、什么是水平触发(LT)和边缘触发(ET)?四、请说说浏览器中输入URL到返回页面的全过程五、请说说DNS域名解析的全过程序号内容链接地址1JVM面试题https://blog.csdn.net/qq_42697271/article/details/1141564102hibernate面试题https://blog.csdn.net

2022-05-20 14:24:01 669

原创 redis集群的水平扩张与缩减

文章目录一、redis集群的水平扩张1、启动新增的节点2、将游离节点加入集群3、给新加入的节点分配槽位4、给新增的主节点添加从节点二、redis集群的缩减1、从节点的删除2、主节点的删除前言:本文是承接了笔者之前写的redis集群搭建模式的基础上进行的拓展,如果是零基础的同学,请从前文开始看起~一、redis集群的水平扩张水平扩张就是给原本的redis集群添加新的主从节点,让更多的redis节点来分担任务,下面是具体的操作步骤:1、启动新增的节点新增节点的启动和前文的启动方式别无二致,

2022-03-29 16:49:27 1075

原创 mac redis搭建集群模式

文章目录一、搭建环境二、一、搭建环境mac二、

2022-03-28 17:10:27 1239

原创 mac redis搭建哨兵模式

文章目录一、一、

2022-03-25 11:18:28 2288

原创 mac 搭建redis主从模式

文章目录一、搭建环境二、操作步骤1、使用brew指令安装redis2、建立从节点配置文件3、启动主从节点三、测试一、搭建环境mac book二、操作步骤1、使用brew指令安装redisbrew install redis如果没有安装brew,link请点击此处如果安装成功,输入如下指令,可查询配置信息brew info redis如下图:2、建立从节点配置文件从上图中可以看redis的配置文件所在目录是/usr/local/etc/,所以只需要将该文件夹下的redis.

2022-03-24 17:29:45 1191 1

原创 高性能存储队列:Disruptor

文章目录一、JUC包下队列的缺陷二、Disruptor为避免缺陷而设计的解决方案1、存储结构:环形数组、2、定位方式:位运算3、线程安全策略:CAS4、存储方式:缓存填充5、任务执行:事件监听机制三、Disruptor的针对数据覆盖的四种策略1、BlockingWaitStrategy:2、SleepingWaitStrategy:3、YieldingWaitStrategy:4、BusySpinWaitStrategy:四、Disruptor的简单使用1、构建消息载体(事件Event)2、构建消息(事件)

2021-12-17 15:58:05 1201

原创 Future的缺陷|CompletableFuture的简单使用

文章目录一、Future的缺陷二、CompletableFuture简介和相关API三、CompletableFuture的简单使用一、Future的缺陷1、Future只提供了get方法来获取结果,并且是阻塞的。所以在并发情况下只能等待所有线程执行完后才能获取结果,除此之外别无它法;2、无法对多个任务进行链式调用。也就是说不能让第二个任务获取第一个任务执行完成后的结果后再去执行,它的执行是无法指定先后顺序的;3、无异常处理机制。Future接口中没有异常处理的方法,所以当Futrue中的任务

2021-12-17 09:53:12 2081

原创 浅谈ForkJoin

文章目录一、ForkJoin是什么?它能用来实现什么功能?二、ForkJoin的实现原理三、ForkJoin的简单使用一、ForkJoin是什么?它能用来实现什么功能?二、ForkJoin的实现原理三、ForkJoin的简单使用在这里插入代码片...

2021-12-09 15:55:27 437

原创 浅谈ReentrantReadWriteLock

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-11-29 17:23:17 411

原创 浅谈CyclicBarrier

文章目录一、CyclicBarrier是什么?它的作用是什么?二、CyclicBarrier的实现原理是什么?三、CyclicBarrier和CountDownLatch有什么区别?四、CyclicBarrier的简单实现一、CyclicBarrier是什么?它的作用是什么?CyclicBarrier也是JUC包为处理多线程情况下的某些场景所创建的一个工具类。一般都将其译为:循环栅栏。它主要的功能是对多个线程进行阻塞,直至满足栅栏设定的阈值,才会对阻塞的所有线程进行唤醒放行操作。当然循环也是一个很重

2021-11-29 10:24:38 314

原创 浅谈Semaphore

文章目录一、Semaphore是什么?主要作用是什么?二、Semaphore的实现原理是什么?三、Semaphore的简单使用一、Semaphore是什么?主要作用是什么?Semaphore简称信号量,它是JUC包下面对限流提供的一种解决方案。也就是说使用它后,可以保证在同一时间内只能有规定数量的任务可以执行,其它任务进入等待状态。二、Semaphore的实现原理是什么?Semaphore的阻塞原理和ReentrantLock的阻塞原理类似,主要区别的地方有两点:1、Semaphore的

2021-11-25 11:31:40 739

原创 浅谈ReentrantLock

文章目录一、ReentrantLock是用来做什么的?二、ReentrantLock的实现原理是什么?三、ReentrantLock对比于Synchronized有哪些优缺点?一、ReentrantLock是用来做什么的?二、ReentrantLock的实现原理是什么?三、ReentrantLock对比于Synchronized有哪些优缺点?...

2021-11-23 10:07:23 645

原创 浅谈synchronized

文章目录一、synchronized的作用二、synchronized中的几种状态三、synchronized的锁升级原理四、锁升/降级的注意点一、synchronized的作用synchronized可以给方法和代码块加锁,保证该方法或者该断代码块同一时间智能有同一个线程访问,从而避免了线程安全问题。二、synchronized中的几种状态被synchronized加锁的对象中会有五种状态:0(00):轻量级锁状态,该状态下的线程只会进行cas自旋,而不会使用到monitor进行从用户

2021-11-11 18:11:29 518

原创 浅谈CAS

文章目录一、什么是CAS?二、CAS的优缺点三、CAS的简单实现一、什么是CAS?CAS全名是Compare And Swap(比较与替换),它是用来解决高并发问题的一种方案。实现的原理大致上就是先将需要修改的变量V读取到变量E中缓存起来,然后在写入新变量U的时候将E和重新读取出来的V变量比较一遍,如果两者一致则把U写入V中,不一致则表明期间有其它线程修改了属性,然后进行自旋重新走一遍流程,直到修改操作执行完成。可以将CAS看作是(数据库)乐观锁的一种简化实现版本二、CAS的优缺点优点:

2021-11-10 12:09:50 183

原创 Spring是如何解决部分循环依赖的问题的

文章目录一、什么是循环依赖?二、spring能解决哪些形式的循环依赖?三、spring是如何解决循环依赖的?1、了解Bean对象的创建过程2、找到问题的冲突点3、解决办法一、什么是循环依赖?循环依赖就是多个对象之间的依赖组成了一个闭合的循环回路,像是A依赖B,B依赖C,C又依赖了A,类似这样的情况就属于循环依赖。如下方代码:@Componentpublic class A { @Autowired private B b; }@Componentpublic cla

2021-11-09 16:57:37 181

原创 Spring生成Bean过程中的一些细节点

文章目录一、实例化前就通过扩展节点将对象实例化出来,会导致什么结果?二、spring实例化对象的方式有哪几种?@Bean使用的是哪一种?三、spring推断构造方法的执行逻辑是怎么样的?一、实例化前就通过扩展节点将对象实例化出来,会导致什么结果?1、该实力对象中需要依赖注入的属性全部为空,spring不会对该实例对象进行依赖注入;2、该对象会跳过实例化后的一系列步骤,直接到达初始化后的阶段。也就意味着某些初始化前、初始化过程的的步骤是不能执行的。二、spring实例化对象的方式有哪几种?@

2021-11-04 17:23:53 172 1

原创 spring依赖注入需要注意的点

文章目录一、二、三、四、五、六、spring依赖注入大致要经历六个环节:一、二、三、四、五、六、

2021-10-28 14:35:02 332

原创 ThreadLocal的作用和原理

文章目录一、ThreadLocal的作用二、ThreadLocal的原理三、ThreadLocal的使用场景一、ThreadLocal的作用二、ThreadLocal的原理三、ThreadLocal的使用场景

2021-10-26 11:28:08 4492 1

原创 volatile关键字的作用和原理

文章目录一、volatile关键字的作用二、volatile的底层原理三、volatile的适用场景一、volatile关键字的作用二、volatile的底层原理三、volatile的适用场景

2021-10-26 10:48:35 25483 3

原创 spring源码解析——FactoryBean的作用和原理

文章目录一、FactoryBean的作用二、FactoryBean的原理一、FactoryBean的作用FactoryBean是一个接口,它可以用来创建工厂对象。然后通过工厂对象产生出没有添加@Component注解的类对象。需要注意的是:工厂对象会经过整个Bean的创建流程,而产出的对象只会经过初始化后这一个步骤二、FactoryBean的原理其实就是一个多态的实现。工厂对象实现FactoryBean接口后,会重写FactoryBean中的两个方法:getObject()、getObje

2021-10-20 16:47:33 3451

原创 spring源码解析——@Component注解原理

文章目录一、@Component作用二、@Component注解实现的原理一、@Component作用@Component是用在类上面的注解,它的功能是用来告诉spring当前类是一个Bean对象,然后让spring对该类进行自动创建并管理。二、@Component注解实现的原理@Component注解底层主要依赖于一个叫做includeFilters的对象来实现的。该对象其实是spring扫描器中的一个属性,它规定了哪些对象会被spring容器识别。所以如果一个对象如果不加上@Compon

2021-10-20 15:41:26 3452

原创 nohup: /Library/Internet: No such file or directory

今天更新了mac自带的java后,启动nacos报了标题中显示的错误,之仔细检查了下,发现了一个大坑,在这里记录下文章目录先上日志信息解决办法1、查找第二个jdk的存放路径2、替换JAVA_HOME环境变量路径3、加载配置信息先上日志信息重点主要就是圈出来的那个目录,自从更新后JAVA_HOME的默认路径就变成这个路径了,然后mac系统识别jdk运行目录的时候就出问题了,说找不到/Library/Internet这个目录,而事实上系统中根本就没有这个目录,所以启动就报错了。解决办法笔.

2021-10-02 10:57:19 2619

原创 悲观锁和乐观锁的具体实现方式

最近上了一节秒杀实战课,里面讲了一些高并发情况下的事故处理方案,笔者在此记录一下目录一、悲观锁的实现方式注意事项二、乐观锁的实现方式一、悲观锁的实现方式悲观锁表明的是用户对他的每次操作都觉得会有其他用户同时进行操作,导致数据出现问题,此时悲观锁会在用户操作时将表锁住,让其他的用户不能对该条进行任何操作,具体实现如下:select * from product where id = 1 for update;使用了for update之后就会自动将该条数据锁定,其他用户无法对该条数据进.

2021-08-27 18:28:39 2336

原创 sublime text中的列操作快捷键

目录一、问题场景二、处理办法一、问题场景将下方的字符串处理成以逗号隔开的字符串数组:[31037020963][31037020963][33733426906][39601952988][33733426906][39407466059][39770823352][39770823352][33830620928][33733426906][30225214850][33733426906][31396007389][31396007389][31407000211

2021-08-11 10:41:50 714

原创 ES中put和post指令的区别

本文是在kibana提供的Devtool工具中测试目录POST即能新增数据也能更新数据PUT只能更新数据不能新增数据POST即能新增数据也能更新数据笔者做了如下两组对比实验测试代码:POST product_db/_doc{ "id": "888", "brandId": 777, "brandName": "vivo", "name": "vivo X6 pro", "price": "1999", "attrs": [ { "at.

2021-08-06 15:36:50 5899 4

原创 Java全局异常处理

最近写代码的时候发现一个问题,就是自己定义的异常处理类,在抛出异常后,接口的响应中无法输出自定义的一些提示信息。之后笔者查了一些资料后,总结了一下原因和解决办法,在此记录一下。目录一、无法抛出指定异常信息的原因二、解决办法三、遇到的问题一、无法抛出指定异常信息的原因因为自定义的异常处理类,并没有对响应数据进行处理,仍旧使用的是原Excepiton中的响应格式。二、解决办法解决办法很简单,就是对全局的异常响应数据做统一的处理即可得到想要返回的异常信息数据格式,如下方代码:/** *.

2021-08-04 17:30:34 469

转载 Elasticsearch中的一些基本属性介绍

原文链接:https://blog.csdn.net/sinat_24928447/article/details/109024020文章标题一、数据类型二、分词类型三、分词器一、数据类型1、String类分为两种:text:可分词,不参与聚合keyword:不可分词,数据会作为完整字段进行匹配,可参与聚合2、Numberical 数值类型、分两类:基本数据类型:long、integer、short、byte、double、float、half_float浮点数高精度类型:sca.

2021-08-02 15:04:01 417

原创 lambda表达式中对接口优雅简写

最近写代码的时候发现了一段看不懂的代码,之后查了些资料,才知道是lambd的简写形式,在此记录一下看不懂的代码RestClientBuilder.RequestConfigCallback requestConfigCallback = builder -> { builder.setConnectTimeout(clientProperties.getConnTimeout()) .setSocketTimeout(clientProperties.getSo.

2021-07-29 19:12:07 188

原创 kibana中DevTool工具下的新增修改查询

最近稍微看了下elasticsearch的简单使用,虽然可能在近期的工作中不经常用到,但是还是随笔记录一下文章目录一、新增1、创建索引2、新增数据二、修改三、查询1、获取索引属性2、查询所有数据3、分页查询数据4、排序查询数据5、查询指定字段数据6、条件查询7、模糊查询8、与、或、非查询9、范围查询10、聚集查询一、新增1、创建索引PUT product_db{ "mappings": { "properties": { "id": { "type":.

2021-07-13 11:30:01 1235

原创 oauth2密码登陆的一个大坑——scope

笔者最近在给自己的分布式项目添加授权登陆模块的时候碰到了一个问题,就是调用密码登陆服务(/oauth/token)的时候报400的错误,起初以为是入参字段写错了或少写了,后面才发现并不是这样,而是scope这个入参数的隐藏属性导致的,下面记录下笔者碰到的问题、解决思路、和解决办法文章目录一、碰到的问题二、解决思路三、解决办法四、总结一、碰到的问题2021-07-02 10:51:02.821 [http-nio-8877-exec-1] ERROR c.m.u.service.impl.Logi.

2021-07-02 11:14:27 2994

原创 应用程序二级缓存的原理和基本实现

笔者最近自己实现了一遍二级缓存,对其中的一些原理有了一些体悟,在这里记录一下,当然如果有错误之处,还望各位看官不吝指教目录一、二级缓存的实现原理二、二级缓存的简单实现1、需要依赖2、简单的实现一、二级缓存的实现原理二、二级缓存的简单实现1、需要依赖在这里插入代码片2、简单的实现在这里插入代码片...

2021-06-19 18:12:39 670

原创 Redission中分布式锁的简单应用

之前笔者使用Redission中tryLock方法时碰到了一些问题,本来加锁之后不应该出现多次访问DB的情况,可事实上在打印出的日志中显示有多次访问数据库,因而笔者查了一些资料了解了下trylock的基本实现原理,在这里记录一下目录一、Redission中tryLock的基本实现原理二、Redission中tryLock的简单使用1、需要的依赖2、基本实现一、Redission中tryLock的基本实现原理二、Redission中tryLock的简单使用1、需要的依赖在这里插入代码片2.

2021-06-18 15:41:57 643 1

原创 odps + druid的简单搭配使用

笔者最近因为一些需求给项目中添加了odps数据源,在尝试使用的期间碰到了一些问题,在此记录一下目录一、odps + druid的简单搭配使用二、使用过程中遇到的问题1、3.0.1版本中的NoSuchMethod2、Access Denied - Authorization Failed [4019]3、execute sql [select count(*) from xxx;] failed: ODPS-0130013一、odps + druid的简单搭配使用odps的官方文档推荐了两种使用.

2021-06-16 11:13:54 867

Java基础面试题200.docx

Java基础面试题200.docx

2021-04-06

空空如也

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

TA关注的人

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