摘要:
在rabbitmq的网页控制台界面发送消息的时候,有如下几个消息参数 1.Routingkey 是一个用于消息路由的字符串,主要作用是协助交换机(Exchange)把消息准确地路由到合适的队列(Queue)。 不同类型的交换机对 routingKey 的处理方式有所不同 常见交换机类型和routin 阅读全文
摘要:
spring是一个功能强大的框架 spring帮助我们开发者解决了很多问题,比如对象创建,方法功能增强,事务的处理等等一系列问题。 一谈到spring,免不了说他的IOC和AOP。IOC翻译成中文叫控制反转。网上对这个词实在是解释的晦涩难懂。我总结一句话:IOC帮我们创建功能强大的对象并且管理对象。 阅读全文
摘要:
这个问题非常简单,我们在学习tomcat的时候就最少介绍过两种方式 第一种:基于xml的配置,第二种基于@WebServlet注解也能将servlet注册到tomcat中 接下来介绍鲜为人知的一些注册servlet操作 使用tomcat提供的sci(ServletContainer)机制 这种用法也 阅读全文
摘要:
对于分布式锁的实现,现在绝大多数都是用redis来实现的,就是大名鼎鼎的setnx命令。这次我们用MySQL数据库来实现一下。 思路有很多种,这里我介绍一个非常简单的实现。建立一张表,比如lock_table,这个表中有个字段叫 lock_name,并且向lock_name 字段建立 唯一索引。 每 阅读全文
摘要:
由于redis的数据是存储到内存中的,如果服务器一旦断电,内存中的数据将会丢失,为了保证redis中的数据不会丢失,redis提供了持久化技术 也就是将数据保存到文件中。appendonly.aof dump.rdb redis的持久化有两种方式,一种是RDB,还有AOF RDB原理 在默认情况下, 阅读全文
摘要:
redis是一款高效的分布式缓存中间件。 redis为什么快 因为他所有的数据都在内存中,像传统的关系型数据库是存储在磁盘上的,所有的运算都是内存级别的运算,而且单线程避免了多线程切换带来的性能损耗问题。正因为redis是单线程,所以要小心使用redis命令,对于那些耗时的指令(比如keys)一定要 阅读全文
摘要:
线程池是什么 线程池是对一组线程的管理和运用。如果不运用线程池来管理我们的线程,那么我们自己频繁的new线程池会影响程序运行的效率,首先一点,Thread也是一个对象,只要是对象 就有可能会被垃圾回收,频繁回收会带来系统卡顿。而且在实际业务中,我们并不想随意丢弃Thread对象,所以这时候,线程池技 阅读全文
摘要:
在并发环境下,为了保证并发安全问题,通常我们会进行加锁操作,比如加上synchronized关键字。但是很多情况下,我们不需要这样的重量级锁,比如说多个线程对某个int类型变量i 进行++操作,但是不加锁吧,又怕影响结果,因为i++不是一个原子操作,会出现并发问题,我们来看个案例。 1 public 阅读全文
摘要:
关于这个问题,网上的答案非常多,各种答案都有,我今天也给一个匪夷所思的答案,就一种,对没错。 直接使用Thread或者继承Thread类。如果你说实现什么Runnable、Callable等等。 这些接口只是封装了线程所需要执行的任务,他们本身并不负责创建线程对象,真正的线程对象就是Thread对象 阅读全文
摘要:
功能 ThreadLocal功能非常强大,主要用来存储不同线程中的数据,多个线程向ThreadLocal中设置 值的时候不会发生并发安全问题,多个线程从ThreadLocal中取值的时候也不会发生数据错乱问题。所以在多线程编程领域,它有着强大的作用。 应用 1.spring的声明式事务 在sprin 阅读全文