自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 针对springcloud gateway 跨域问题解决方案

域是由网络上的用户和计算机组成的一个逻辑或逻辑集合,域中所有的对象都存储在活动目录下,一个网络可以建立一个或者多个域,每个域都是一个安全界限,意味着各种权限不能跨域。

2024-04-18 22:16:57 301

原创 Redisson限流算法

这里回顾一下trySetRate和setRate(注意setRate在3.12.3这个版本是没有这个方法的),在限流器不变的场景下,我们可以多次调用trySetRate,但是不能调用setRate。zset记录获取令牌的时间戳,用于时间对比,redis key的名字是{LIMITER_NAME}:permits。1,当需要修改时,执行setRate,但最好注意执行时间,因为涉及到zset,string两个key,可能会影响当前的限流窗口。重新设置是,不管该key之前有没有用,一切清空回到初始化,重新设置。

2024-02-28 11:21:16 1373

原创 多线程交替打印 有三个线程,1号线程打印数字1,2号线程打印数字2,3号线程打印数字3,要求:

2、1号线程打印100次,2号线程打印200次,3号线程打印300次。1、三个线程交替打印。

2024-02-01 21:05:25 165

原创 由于现在都是是分布式系统,现有k个文件,每个文件个数为n, 每个文件都是按照时间戳排序, 需要把k个文件合并成1个按照时间戳排好序的文件;按照题目写出实现的代码,思考时间复杂度

当所有文件的指针都超出了文件的长度时,表示合并完成。这种实现的时间复杂度为O(kn),其中k是文件的个数,n是每个文件的平均元素个数。不使用优先队列的话,在每一轮循环中都需要遍历k个文件来找到最小元素,因此整体复杂度为O(kn)。在归并的过程中,每个文件的元素最多会被加入和弹出堆一次,所以归并的过程时间复杂度为O(knlogk),其中n是每个文件的平均元素个数。初始化堆的过程需要将每个文件的第一个元素加入堆,时间复杂度为O(k)。题目:由于现在都是是分布式系统,现有k个文件,每个文件个数为n,

2024-02-01 17:55:04 189

原创 关于事务的一些理解 mysql事务、spring事务、分布式事务

2024-01-30 14:26:01 123

原创 整数数组找到所有符合x=y+z的组合

x,y,z是一个整数数组的三个不同的元素,找到所有符合x=y+z的组合。用某种编程语言实现(java或javascript优先),并简述算法。在实现题目要求的基础上尽可能地使用更优的算法。整数数组找到所有符合x=y+z的组合。

2024-01-30 14:14:53 118

原创 b+树的理解

每个节点支持两个分支的树结构,相比于单向链表,多了一个分支。

2024-01-20 16:29:26 489

原创 ConcurrentHashMap 原理

如果线程竞争激烈,使用一个数组来维护元素个数,如果要增加总的元素个数,则直接从数组中随机取一个,在通过CAS实现原子递增,他的核心思想是引入数组来实现对并发更新的负载。1,在jdk1.8中,concurrentHashMap锁的粒度是数组中的某一个节点,而在JDK1.7中,锁定的是segment,锁的范围更大,因此性能会更低。4,concurrentHashMap中有一个Size()方法来获取总的元素个数,在多线程并发场景中,在保正原子性的情况下实现元素个数的累加,性能时非常低的。

2024-01-19 20:01:17 336

原创 Mysql性能优化的理解

Mysql是一个经过互联网大厂验证过的生产级别的成熟的数据库,对于Mysql数据库本身的优化,一般是通过Mysql的配置文件my.cnf来完成的,比如。Mysql5.7版本默认的最大连接数是151个,这个值可以在my.conf中修改,binlog日志默认不开启,缓存池bufferpoll的默认大小等。在高并发的场景中mysql的数据库必然承受巨大的并发压力,我们可以从一下几个方面去优化。Mysql是一个磁盘IO访问量非常频繁的关系型数据库。

2024-01-15 11:44:28 357

原创 springIoc依赖注入循环依赖三级缓存

singletonObjects:缓存某个beanName对应的经过了完整生命周期的beanearlySingletonObjects:缓存提前拿原始对象进行了AOP之后得到的代理对象,原始对象还没有进行属性注入和后续的BeanPostProcessor等生命周期。

2024-01-12 18:00:39 1102

原创 如何理解线程池中的参数设计

考察:了解你对技术的掌握程度,|对于技术的理解、场景问题。

2024-01-11 18:00:20 402

原创 线程池如何知道一个线程是否执行完成

当我们把一个任务丢给线程池执行的时候,线程池会调度工作线程来执行run方法。当run执行结束后,也就意味着这个任务完成了。所以线程池中的工作线程是通过同步调用任务的run()方法并且等待run()方法完成后。

2024-01-11 15:09:57 400

原创 /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/lib/currency.data (No such file or direc)

通过参数Dmaven.compiler.source=11 -Dmaven.compiler.target=11 或者。使用maven指定编译版本为jdk11编译,本地默认环境变量是jdk8。环境变量加入jdk11和jdk8的环境变量。本地使用jdk11的环境是可以。然后就可以愉快的打镜像了。查阅相关资料,说可能是。

2023-08-03 10:08:45 525

原创 类文件具有错误的版本 55.0, 应为 52.0

“类文件具有错误的版本 55.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。

2023-07-28 10:47:42 5031

原创 一文搞懂ThreadLocal内存泄露问题

jdk1.2版本中提供java.lang.ThreadLocal,threadLocal为解决多线程程序并发问题提供了一种新的思路。使用这个类可以很简介的编写出优美的多线程程序,ThreadLocal是Thread的局部变量,提供线程范围内的局部变量,这种变量在线程的生命周期内起作用。作用:提供一个线程内公共变量,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度,或者为线程提供一个私有的变量副本,这样每一个线程都可以随意修改自己的变量副本,而不会对其他线程产生影响。

2023-07-24 14:28:40 147

原创 java观察者模式例子

是一种常用的设计模式,它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当主题对象状态发生变化时,它的所有观察者都会收到通知并且自动更新。在观察者模式中,主题对象通常被称为“被观察者”(Observable)或 “主体” (Subject),而观察者对象通常被称为“观察者”(Observer)或 “订阅者”(Subscriber)。主题对象维护一个观察者列表,当它的状态发生变化时,会遍历这个列表并通知所有的观察者。

2023-06-07 15:44:22 754

原创 JVM内存模型的演变

class文件、类的加载过程。我们的class文件就要进入到JVM内存里,我们沿着经典的JDK1.6,JDK1.7,JDK1.8看看在其中都经历了哪些改变。

2023-04-28 17:38:01 829 1

原创 mac中给brew配置环境变量

【代码】mac中给brew配置环境变量。

2023-04-27 11:41:03 1166

原创 git把一个分支上的某次修改同步到另一个分支上,并解决git cherry-pick 冲突

我们在工作中经常会碰到好几个同事共同在一个分支上开发,一个项目同时会有好几个分支,我们在feature上开发的功能时,有可能某个需求需要提前发布,这个时候我们已经在feature A上开发完成,但是需要在master上发布。这个时候该怎么办呢?我们是不是可以直接将feature A上的commit 合并到master上,然后一键发布就可以啦?这个时候可能存在代码冲突。今天我们就带着这个疑问一起解决这个问题。

2023-04-25 13:36:13 1858

原创 一文彻底理解Java 17中的新特性密封类

在面向对象语言中,我们可以通过继承(extend)来实现类的能力复用、扩展与增强。但有的时候,有些能力我们不希望被继承了去做一些不可预知的扩展。所以,我们需要对继承关系有一些限制的控制手段。而密封类的作用就是限制类的继承。

2023-04-20 15:52:44 222

原创 ShardingSphere官方文档感悟

Apache ShardingSphere 是一款分布式的数据生态系统,可以将任意数据库转换为分布式数据库。并通过数据分片、弹性伸缩、加密等能力对原有数据库增强。Apache ShardingSphere设计哲学为Database Plus,构建异构数据库上层的标准和生态。关注充分合理的利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数据库的上层视角。关注他们之间的协作多于数据库本身。

2023-03-01 16:24:44 465

原创 Spring反射内置工具类ReflectionUtils

Spring反射内置工具类ReflectionUtils

2023-02-13 19:10:04 2790

原创 Gradle 编译Server returned HTTP response code: 401 for URL

Gradle 编译Server returned HTTP response code: 401 for URL

2023-01-30 14:37:38 1203

原创 mac Idea自动补全返回类型及变量快捷键

mac idea 自动补全代码

2022-07-14 17:11:29 4477 1

原创 n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)

n个整数的无序数组,找到每个元素后面比它大的第一个数

2022-06-08 16:03:48 372

原创 mysql基础面试题

Mysql索引的基本原理索引用来快速地寻找那些具有特定值的记录。如果没有索引,一般来说执行查询时遍历pingshang整张表。索引的原理:就是把无序的数据变成有序的查询。1,把创建了索引的列的内容进行排序。2,对排序结果生成倒排表3,在倒排表内容上拼上数据地址链4,在查询的时候,先拿到倒排表内容,在取出数据地址链,从而拿到具体数据mysql聚族和非聚族索引的区别都是B+树的数据结构聚族索引:将数据存储与索引放到了一块、并且是按照一定的顺序组织的,找到索引也就找到了数据,数据的物理存放顺序

2022-05-25 14:31:09 257

原创 高级java开发必问面试题

文章目录面向对象什么是面向对象?封装继承多态== 和equals比较hashCode与equals重载和重写的区别Finalspring是什么AOP的理解谈谈你对IOC的理解零拷贝RocketMQ 架构设计RocketMq 事务消息原理RockeMq顺序消息消费原理简述RockerMQ持久化机制RocketMQ如何保证不丢消息消息发送消息消费Mysql索引的基本原理mysql聚族和非聚族索引的区别业务系统里面的sql耗时,慢查询最左前缀原则是什么Innodb是如何实现事务的面向对象什么是面向对象?对比

2022-05-11 16:27:09 10495

原创 全球分布式id生成方案

全球分布式id生成方案uuid数据库自增序列leaf-segment双buffer基于redis、mongodb、zk等中间件生成雪花算法uuid1,当前日期和时间 时间戳2,时钟序列。 计数器3,全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。优点:代码简单,性能好(本地生成,没有网络消耗)保证唯一(相对而言,重复概率极低可以忽略)缺点:每次生成的ID都是无序的,而且不是全数字,且无法保证趋势递增

2022-04-25 16:40:56 711

原创 一文快速理解java多线程的4种实现方式

一文快速理解java多线程的4种实现方式继承Thread实现Runnable实现Callable接口通过FutureTask包装器来创建Thread线程创建线程的三种方式对比通过线程池创建线程,使用线程池接口ExecutorService结合Callable、Future实现有返回结果的多线程拒绝策略默认AbortPolicy()DiscardPolicyDiscardOldestPolicyCallerRunsPolicysubmit()和execute()区别executesubmit()两者的区别定长

2022-04-23 16:45:10 649

原创 RabbitMq 集群federation 插件使用心得

@doc前言为了能让RabbitMQ 更好的在wan下面工作,Rabbit推出了federation插件。主要用于在wan情况下,多个rabbit实例(集群)进行数据传输和交换。步骤1,首先搭建多个RabbitMQ消费集群2,搭建集群完后,为了能在federation中,各集群能更加友好的显示,建议修改下集群的名字。rabbitmqctl set_cluster_name internal//名字3,启用各集群的federation插件(集群中各个节点都需要运行一下命令)rabbitmq-

2022-04-22 18:45:32 1850

原创 RocketMQ

RocketMQ的前世今生rocketMq在阿里内容叫做Metaq(最早名为Metamorphosis,中文意思“变形记”,是作家卡夫卡的中篇小说代表作,可见是为了致敬Kafka)。RocketMQ是Metaq3.0之后的开源版本。Metaq在阿里巴巴集团内部、蚂蚁金服、菜鸟等各个业务中被广泛使用,介入了上万个应用系统中,并平稳支撑了历年的双十一大促(万亿级的消息),在性能、稳定性、可靠性等方面表现出色,在整个阿里技术体系和大中台战略中发挥着举足轻重的作用。Metaq最早源于Kafka,早期借鉴了

2022-04-11 15:47:35 935

原创 xml读取properties中的属性值

背景线上日志路径由于某些原因需要改变路径,但是我们又需要可以根据不同环境做区分,所以这个我们不希望是写死的,可以在properties文件可配置。xml文件 修改1,引入properties文件2,引用log.home值<property resource="env-config.properties"/> <property name="LOG_SRV" value="basex" /> <property name="HOME_PATH" value="${l

2022-04-07 17:30:24 947

原创 自建spring Initialzr 以及后端脚手架

前言在Idea内新建SpringBoot工程的时候,默认是引入的http://start.spring.io/的接口信息,公司自研工具基础组件包等,每次都要重复引入等,这种重复动作虽简单,但是是一种浪费时间的表现,而且每次包的管理也是一大头疼问题。参考文献springspringinitialzr源码包:官网仓库 https://github.com/spring-io/initializr/官网文档:https://docs.spring.io/initializr/docs/current-

2022-03-08 17:36:23 1230 2

原创 MVCC如何实现的隔离级别

MVCC如何实现的隔离级别一:背景二:先了解一些专业名词事务的四大特性ACID事务的隔离级别事务和MVCC原理不同事务同时操作同一条数据产生的问题LBCC解决数据丢失MVCC解决数据丢失MVCC,多版本的并发控制,Multi-Version Concurrency Control。MVCC使得数据库读不会数据加锁,普通的Select请求不会加锁,提高了数据库的并发处理能力。InnoDB的MVCC实现逻辑InnoDB存储引擎保存的MVCC的数据MVCC在mysql中实现依赖的是undo log与read vi

2021-12-13 20:32:11 1438

原创 Redis分布式篇

为什么需要Redis集群性能redis本身的QPS已经很高了,但是如果在一些并发量非常高的情况下,性能会受到影响。这个时候我们希望有更多的redis服务来完成工作。扩展第二个是出于存储的考虑。因为Redis所有的数据都放在内存中,如果数据量大,很容易受到硬件的限制。升级硬件收效和成本比太低,所以我们需要有一种横向扩展的方法。可用性第三个是可用性和安全的考虑。如果有一个Redis服务,一旦服务宕机,那么所有客户端都无法访问,会对业务造成很大的影响。另一个,如果硬件发生故障,而单机的数据无法恢复的话

2021-08-12 20:50:25 235

原创 正则表达式:要求6-20位

正则验证字母、数字、特殊字符三种以上组合,必须包含特殊字符/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,20}$/# 正则验证字母、数字、特殊字符两种以上组合,必须包含特殊字符^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,20}$(?![a-zA-Z]+$):断言此位置之后,字符串结尾之前,所有的字符不能全部由26个英文字母组成。(?![a-zA-Z]+$):断言此位置之后,字符串结尾之前,所有的

2021-08-05 15:34:18 4471

原创 Redis基础知识

Redis 入门redis 诞生历史08年的时候有一个意大利西西里岛的小伙子,创建了一个访客信息网站LLOOGG.COM。有的时候我们需要知道网站的访问情况,比如访客的IP、操作系统、浏然器、使用的搜索关键词、所在地区、访问的网页地址等等。它可以查看最多10000条最新浏览记录。这样的话,它需要为每个网站创建一个列表(List),不同的网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除(先进先出)。当LLOOGG.COM的用户越来越多的时候,他需要维护的列表

2021-08-05 09:34:55 249

原创 Mysql索引的深度剖析

索引是什么维基百科对数据库索引的定义:数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,要从500万行数据里面检索一条数据,只能依次遍历这张表的全部数据,直到找到这条数据。但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为他它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。索引类型在InnoDB里面,索引类型

2021-07-29 16:07:10 405

原创 mysql存储引擎

存储引擎的基本介绍在关系型数据库里面,数据是放在什么结构里面的?(放在表Table里面的)我们可以把这个表理解成Excel电子表格的形式。所以我们的表在存储数据的同时,还要组织数据的存储结构,这个存储结构就是由我们的存储引擎决定的,所以我们也可以把存储引擎叫做表类型。查看存储引擎show table status from `xxxtable`或者通过DDL建表语句来查看在Mysql里面,我们创建的每一张表都可以指定它的存储引擎,而不是一个数据库只能使用一个存储引擎。存储引擎的时候是以表为单

2021-07-28 17:43:12 151

原创 Java IO演进之路

阻塞(Block)和非阻塞(Non-Block)阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候。**阻塞:**往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否者一直等待在那里**非阻塞:**当我们进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。同步(Synchronization)和异步(Asynchronous)同步和异步都是基于应用程序和操作系统处理IO事件所采用的方式。比如同步:是应用程

2021-07-26 18:57:20 259 6

空空如也

空空如也

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

TA关注的人

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