自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常见的Map的遍历方式

【代码】常见的Map的遍历方式。

2024-05-11 16:20:11 175

原创 多线程锁的总结

公平锁与非公平锁公平锁:非常公平,不可以插队非公平锁:不公平,可以插队,谁能力强,把谁优先可重入锁什么是可重入锁?可重入锁,也被称为递归锁,它指的是在同一个线程中,当外层方法获取锁的时候,如果内层方法也需要获取同一把锁,那么内层方法会自动获取到锁,不会因为外层方法已经获取过该锁且尚未释放而导致线程阻塞synchronized关键字和ReentrantLock都是典型的可重入锁实现。当线程重复获取同一个锁时,如果是不可重入锁,那么每次获取锁都需要进行线程同步,这会增加不必要的性能开销。

2024-04-22 20:00:24 483

原创 多线程线程池

池化技术是一种提前准备和保存大量资源的编程技巧,以便在需要时可以重复使用这些预先准备的资源。在请求量大时,

2024-04-22 19:59:42 566

原创 理解CAS

之前就谈论过,表示synchronized是不太友好的操作,在执行到锁时,会经历用户态与内核态的转变,非常耗时,而synchronized是一个很小的区域,就是细粒度很高的操作,而为了这一点点的操作去耗时,是非常不划算的。是非常消耗时间的,而线程的执行时间是非常短的,所以出现了线程池,只需要创建一次线程,下次使用的时候,就可以直接使用线程池中的线程了。线程B ,也拿到了number的值,然后将值 = 3 ,然后再次操作, number = 1,改回去了。因为是操作内存的,所以调度是非常快的。

2024-04-21 14:21:53 843

原创 单例模式与反射创建对象

如何知道枚举类是有参构造还是无参构造这里显示了是一个无参构造对于字节码文件的查看,显示的也是无参构造。

2024-04-21 14:20:23 1874

原创 理解JMM

Java内存模型,不存在的东西,是一个概念,是一个约定。

2024-04-20 19:46:10 1864

原创 SynchronousQueue

实现了BlockingQueue 和 Queue其中每个插入操作必须等待另一个线程相应的删除操作同步队列没有任何容量,甚至没有一个容量。

2024-04-20 19:43:51 166

原创 BlockingQueue

BlockingQueu方法有四种形式,具有不同的操作方式,不能立即满足,但可能在将来的某个时间点满足:一个抛出异常,第二个返回一个特殊值(

2024-04-17 23:23:25 670

原创 ReadWriteLock

在写入与读取的时候,会被其他线程插队,对于读取线程是不要紧的,但是对于读取线程,就会出现很多的问题。在以前我们可以synchronized ,ReetrentLock锁住。加入读写锁ReadWriteLock。

2024-04-17 23:22:10 246

原创 ReadWriteLock读写锁

在写入与读取的时候,会被其他线程插队,对于读取线程是不要紧的,但是对于读取线程,就会出现很多的问题。在以前我们可以synchronized ,ReetrentLock锁住。加入读写锁ReadWriteLock。

2024-04-16 22:58:21 474

原创 知识点static、事务的特性、接口

2024-4-16杂记今日没有学习新的知识,但是学习了一些知识点。

2024-04-16 22:56:47 308

原创 Semaphore

可以限制线程的使用次数。

2024-04-15 23:04:09 276

原创 CountDownLatch

如何使用CountDownLatch使得角色裁判,喊完各就位预备后,发枪,这个两个动作后,运动员才开始跑。倒计时锁存器,,,,count计数,down停止,Latch锁。需要使用callable接口,而不是runnable接口。运动员类【runner】裁判类 【Judge】

2024-04-15 23:03:30 351

原创 Callable接口

Thread只能传入Runnable接口的实现类,那么实现了callable接口该怎么办,才可以让线程启动。

2024-04-14 21:00:21 169

原创 HashMap与HashSet的不安全问题

HashMap 的底层实现基于哈希表(Hash Table)结构,并结合了 数组 和 链表 或红黑树。因为addIfAbsent这个类用来重入锁ReetrantLock,所以他可以实现同步,并发执行。当创建一个CopyOnwriteArraySet时,其实就是创建了一个ArrayList。看看CopyOnWriteArraySet的add方法。这是HashMap底层的数组【桶】与ArryList类似。

2024-04-14 20:57:18 936

原创 ArrayList中多线程的不安全问题

方案二:List list = Collections.synchronizedList(new ArrayList<>());写入时复制,就是在写入时,先将原数据复制,再将需要的数据插入,最后返回给原数组。多个线程同时去添加ArryList,出现了报错,抛出来异常。方案一:List list = new Vector();为什么可以这样输出,是一种函数是接口,我们先过个耳熟。因为synchronized是不高效的行为。ArrayList.add方法是不安全的。该方法使用了Lock锁,所以是安全的。

2024-04-10 22:48:24 679

原创 Redis的RDB文件

Redis是操作内存的,所以是内存数据库,断电即失,所以需要持久化。

2024-04-09 23:55:42 551

原创 生产者与消费者的问题与进阶

它指的是线程可以在没有被明确通知、中断或超时的情况下被唤醒。这意味着即使在没有满足特定条件的情况下,线程也可能从等待状态中被唤醒,这种情况就被称为虚假唤醒当线程被虚假唤醒时,它可能会继续执行后续的代码,而这些代码可能依赖于某些尚未满足的条件。这可能导致程序的行为与预期不符,引发错误或异常为了处理虚假唤醒,应用程序通常需要采用一种策略来重新检查唤醒条件。这通常通过在。

2024-04-09 23:50:20 324

原创 多线程基础

线程start(),并不是启动了,而是将加入到就绪队列,是与主线程一起的呢,再有cpu分配资源实现多线程的方式存在两个类 ,实现Runnable接口,同时重写run方法Thread类也是实现了 Runnable接口。

2024-04-07 20:40:05 967

原创 策略模式图

将上下文角色,替换成工厂,是不是就成了工厂模式。只要调用上下文角色就行,实现解耦。

2024-04-05 20:20:57 797

原创 工厂模式图

介绍一下简单工厂模式与工厂方法模式。

2024-04-05 20:19:22 222

原创 多线程入门

线程start(),并不是启动了,而是将加入到就绪队列,是与主线程一起的呢,再有cpu分配资源实现多线程的方式存在两个类 ,实现Runnable接口,同时重写run方法Thread类也是实现了 Runnable接口。

2024-04-03 08:39:56 355

原创 Lambda表达式

【代码】Lambda表达式。

2024-04-03 08:38:40 1067

原创 @RequestBody与@RequestParam的区别

总的来说,@RequestParam适用于提取简单的查询参数,而@RequestBody适用于处理复杂的非表单数据。@RequestParam会从http请求查询参数中提取数据。@RequestBody会将请求体中的数据,转换成对象。

2024-04-01 08:53:34 1223

原创 流式编程,优雅的代码

这段代码利用Java 8的流式处理特性,简洁而优雅地完成了消息的转换和收集工作。这段Java代码是使用了Java 8的Stream API来处理一个名为。今天看到了一个新奇的写法,是我没有学过的,也是没有见过的。,代表列表中的每一个消息实体)。操作来转换Stream中的每一个元素(这里是。对象都根据原始消息实体进行了相应的字段设置。方法,获取一个消息列表。返回的原始消息列表转换成一个新的。整体来看,这段代码的目的是将。

2024-04-01 08:46:41 739

原创 Springboot整合RabbitMQ

如果把接收与发送服务为了测试,写在一个类中,那么其实都不用调用服务,当启动后,就会一直监听,然后消费服务,所以你看不到服务的消费。回答:都是推荐的【生产者、消费者、两边】,但是配置在消费者更好一点,消费者一般是先启动的,交换机,让交换机时时监听。默认如果在windows安装了rabbitmq是不用配置信息的,因为存在默认的配置。交换机----队列----队列绑定交换机。还是一样,接收者是通过队列来进行接受的。要是是路由模式,可以添加一个路由,什么类型的交换机,就返回什么类型。以上就是可以这样配置的原因了。

2024-03-31 08:48:05 1174

原创 Rabbit简单模式理解

代码流程上述消息没有设置为持久化没持久化,消息创建了依旧存在,除非服务器重启,就会删除持久化,服务器重启后都不会删除发送消息。

2024-03-31 08:38:09 726

原创 rabbitMQ的基础操作与可视化界面

当你安装好RabbitMq时,可以 尝试一下,这些命令。

2024-03-30 21:59:56 1870

原创 rabbitMQ版本问题与下载

所以需要找24版本以下的erlang,而不同erlang对应不同rabbitmq所以需要对应。云服务器买的是centos7,而erlang在24版本后不支持centos7了。说实话,自己安装,还是没弄好,最好推荐别的博主的。都到现在了,大家不会安装东西还是不看版本吧。

2024-03-30 21:52:29 508 1

原创 Redis事务

Redis单条命令是保存原子性的,Redis事务是不保证原子性的事务的本质:是,事务的所有命令都会被序列化在事务执行时,一次性执行,排他性、顺序性。

2024-03-25 22:38:26 463

原创 Redis锁,乐观锁与悲观锁

很乐观,认为什么时候都不会出问题,所以不会上锁。1、先加入事务,但是没有执行。加入新的线程,修改了数据。

2024-03-25 22:37:44 391

原创 Redis三种特殊数据类型

Redis的Geo的Redis的3.2版本 ,可以推算地理位置信息,两地之间的距离,方圆几里的人官网的几个命令。

2024-03-24 23:35:57 2122

原创 Redis五种基本数据类型

微博、将所有关注的人放在一个集合中,他的粉丝也放在一个集合中,共同好友,用户信息保存:变更信息的内容,共同关注:差集、补集。

2024-03-24 23:33:49 251

原创 使用Nginx鉴权

【代码】使用Nginx鉴权。

2024-03-20 14:19:04 570

原创 Nginx介绍,正向代理与反向代理

国内访问外网就需要 “梯子” ,梯子就是将你的请求转发给 代理服务器 【在国外】,然后通代理服务器访问外网。你想买adidas,直接去门店购买,那么门店就是代理服务器,代理的对象是adidas。

2024-03-20 09:28:10 268

原创 Redis基本简介

Redis是单线程的很快的基于内存操作CPU 不是Redis 的性能瓶颈上限是机器的内存和网络带宽。

2024-03-18 20:53:17 445

原创 Redis安装

只能在Github上下载,官网只提供Linux版本解压客户端启动成功使用Redis客户端快速链接服务端开启的情况下,双击redis-cli.exe。

2024-03-18 20:52:05 495

原创 Docker配置Nginx、tomcat、elasticsearch

遇到的问题:当我们运行了tomcat之后,是无法访问tomcat的首页的,这是因为镜像使得tomcat变成精简版本,只要能运行的版本就行,所以,如果想访问的话,就需要进行相关操作。elasticsearch是什么耗内存的,因此需要修改配置,限制内存。

2024-03-16 08:28:18 654

原创 Dockerfile

dockerfile是构建镜像的文件那么构建镜像的基本步骤1、编写dockerfile文件2、docker build 构建成为一个镜像3、doker run 运行镜像4、docker push 发布镜像(Docker Hub 或者阿里云)(a)、Dockerfile:构建文件定义了步骤(b)、DockerImages是构建生成的镜像,最终发布和运行的产品©、容器就是镜像运行起来的服务器。

2024-03-16 08:23:51 699

原创 Docker 进阶

就是当容器内存在了mysql,在里面书写了数据,如果容器删除了,那么数据也就没有了,通过容器数据卷的技术,可以让容器内的数据持久化到Linux服务器上。

2024-03-13 22:49:54 607

eureka.md

eureka.md

2023-11-26

空空如也

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

TA关注的人

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