自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ思考

消息的可靠性投递RabbitMQ为我们提供了两种方式用来控制消息的的投递可靠性模式。 confirm确认模式; return退回模式Rabbitmq 整个消息投递的路径为:producer--->rabbitmq broker--->exchange--->queue--->consumer 消息从 producer 到 exchange 则会返回一个 confirmCallback 。消息从 exchange-->queue 投递失败则...

2021-04-24 15:26:11 140

原创 SpringBoot整合RabbitMQ

一、点对点模式1、改pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2、写ymlspring: application: name: rabbitmq rabbitmq: host: 39.

2021-04-24 15:17:22 83

原创 RabbitMQ常用五种模型

1、引入rabbitmq的客户端jar包<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.6.0</version></dependency>2、rabbitmq的模型第一种模型直连(直连)P:生产者,发送消息的程序;C:消费者,消...

2021-04-24 15:15:29 944

原创 RabbitMQ安装

RabbitMQ安装1、安装erlang依赖rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm2、安装内存管理依赖rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm3、安装rabbitmq4、安装完rabbitMq默认会读取ls /etc/rabbitmq/4.1安装后去搜索rabbitmq.config.example(这是rabbitmq的配置文件)[root@iZ2zef25k25dj4oj5pm38hZ ..

2021-04-24 14:45:23 356

原创 mysql索引的数据结构

哈希索引:通过对键值进行一定的哈希算法得到新的哈希值,检索时不需要像btree那样从根节点到叶子节点逐级查找,而是通过哈希算法就可以快速定位到位置btree和哈希结构的比较:1、哈希结构的索引适合等值查询,前提是值唯一,因为会出现哈希碰撞的情况,就会导致找到具体的位置后,还得扫描链表2、哈希结构不适合范围查找,原本有序的磁盘数据经过键值的哈希算法后可能试键值出现不连续,导致不能范围...

2020-03-05 11:56:15 113

原创 CountDownLantch、CycliBarrier、semaphore的简单使用

关于这三个工具类,个人的一点理解:CountDownLantch,一般应用于将多线程执行完之后再执行main线程,起到一个将上下文由异步转化为同步的效果;CycliBarrier,是将所有异步线程执行完之后,再由这其中的一个线程执行最后一个任务;semaphore,起一个限流的作用,比如有10个线程同时访问某个资源,可以设置成每两个线程执行完释放锁后再由其他线程抢这两个锁;pub...

2020-03-04 11:36:02 348

原创 我所认识的锁-总结

1、公平锁:多个线程之间可以按照线程申请锁的顺序获取锁;2、非公平锁:多个线程之间获取锁的顺序不一定按照申请锁的顺序获得;Synchronized、ReentrantLock默认是非公平锁,后者可以通过构造参数获取公平锁。3、可重入锁又叫递归锁:是指在一个同步方法内部调用另外一个同步方法时,获得的锁是同一把锁,避免死锁;举例如下:public class TestLock { ...

2020-03-03 22:37:03 83

原创 List实现线程安全操作的解决办法

1、Vector类,add方法使用Synchronized修饰2、Collections.synchronizedList(List<T>() list),内部使用同步代码块的方式实现同步,用SynchronizedCollection这个静态内部类作为锁3、CopyOnWriteArrayList,重点说下这个类的add方法//使用了读写分离的思想,写操作的时候,先把原...

2020-03-03 15:42:54 577

原创 ArrayList为什么线程不安全?怎么进行扩容?

先来看下它的add方法: /** *其实看了这个代码,就应该知道为啥不安全了,就是这个size++操作,在多线程的情况下,这个操作, *可能会出现值覆盖,什么意思呢?举个例子,比如size初始值为0,这时候两个线程执行size++操作, *在内存中这两个线程首先会从主内存中拿到这个初始值0,然后在自己的工作内存中完成+1操作,当需 *要把这...

2020-03-03 13:30:52 435

原创 CAS引起的ABA问题以及解决

用AtomicInteger举例说明:public class TestATomicABA { private static AtomicInteger atomicInteger = new AtomicInteger(0); public static void main(String[] args) { new Thread(() -> { ...

2020-03-02 17:19:49 171

原创 浅谈CAS的实现

用volatile可以保证共享变量的可见性,但是不能保证一次操作的原子性,因此在并发编程中,用Synchronized或者Lock或者CAS的方式都可以实现原子性操作;但是前面两种方式都是在同一时间内只允许一个线程通过,保证了原子性,但是并发性会下降;而CAS的实现是基于Unsafe类,基本都是本地方法,可以直接访问操作系统,因此它在保证原子性的同时还可以保证并发性,CAS也有缺...

2020-03-02 10:59:05 203

原创 JMM内存模型及Volatile的原子性Demo

关于Java内存模型自己的理解: JVM运行程序的实体是线程,而每个线程在运行时都会为其创建一个独立的内存空间(Java栈,线程私有的),而成员变量是存储在堆空间(线程共享的),JMM规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可访问,但线程对变量的操作(读取赋值等)必须在工作内存中进行,首先要将变量从主内存拷贝到自己的工作空间,然后对变量进行操作,操作完成再将变...

2020-03-01 21:05:09 91

原创 数据库连接池(简易)

手写一个数据库连接池,代码如下:1、JDBC获取链接public class ConnectionResource { private static String url = "jdbc:mysql://localhost:3306/test02"; private static String username = "root"; private static ...

2020-03-01 17:13:54 118

原创 Jdbc方式连接数据库会导致的问题

模拟Jdbc在高并发的情况下出现如下异常的情况:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"代码如下:...

2020-02-28 14:51:46 468

原创 JDK动态代理

动态代理的关键就是获取代理对象,获取代理对象呢又是根据JDK提供的Proxy这个类提供的方法,这个方法的参数就是需要知道被代理对象的类加载器是哪个?实现的接口是哪些?然后利用InvocationHandler这个类用反射的方式调用被代理对象的方法,代码如下:/** * 声明一个接口 */interface Human { public void study();}/**...

2020-02-28 11:54:27 120

原创 静态代理

准备开始好好写博客了,之前一直没有注重这个,吃了不少亏;现在希望能记录下来自己所学到的知识,加深理解,也希望可以帮到其他人,让我们一起共创2020年的美好吧...首先我们知道现在Java编程都是面向接口加实现类的方式,按照之前的写法都是new一个对象就可以开始调了,但是一些特殊的场景由于在代码编译的时候还不能确定下来由哪一个类来调用,因此需要在类动态运行时才能确定下来具体需要执行哪个类的方法,...

2020-02-28 11:03:11 109

转载 MySQL连接SQLyog时出现的2058错误

这是我在网上看到的解决办法:配置新连接报错:错误号码 2058,分析是 mysql 密码加密方法变了。解决方法:windows 下cmd 登录 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';#p...

2018-06-15 13:20:38 13056 6

空空如也

空空如也

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

TA关注的人

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