4.newSingleThreadExecutor 创建一个单线程化的线程池 只有一个核心线程 以无界队列方式来执行该线程,这使得这些任务之间不需要处理线程同步的问题,它确保所有的任务都在同一个线程中按顺序中执行,并且可以在任意给定的时间不会有多个线程是活动的。
Springsecurity中用一个方法一步就可以将自定义的过滤器引入:
只需要实现attemptAuthentication方法即可
Jdk1.8后出现的迭代器:
Spliterator:java1.8引入的一种并行遍历机制
Rabbitmq死信队列:(当消息成为死信后 可以被重新发布到另一个交换机(exchange)这个交换机就是死信队列)
消息变成死信的情况:
消息被拒绝(basic.reject / basic.nack),并且requeue = false
消息TTL过期
队列达到最大长度
死信处理过程
-
DLX也是一个正常的Exchange,和一般的Exchange没有区别,它能在任何的队列上被指定,实际上就是设置某个队列的属性。
-
当这个队列中有死信时,RabbitMQ就会自动的将这个消息重新发布到设置的Exchange上去,进而被路由到另一个队列。
-
可以监听这个队列中的消息做相应的处理。
FreeMarker 的缓存处理主要用于模版文件的缓存,一般来讲,模版文件改动不会很频繁,在一个流量非常大的网站中,如果频繁的读取模版文件对系统的负担还是很重的,因此 FreeMarker 通过将模版文件的内容进行缓存,来降低模版文件读取的频次,降低系统的负载。
当处理某个模版时,FreeMarker直接从缓存中返回对应的 Template 对象,并有一个默认的机制来保证该模版对象是跟模版文件同步的。如果使用的时候 FreemarkerServlet 时,有一个配置项template_update_delay用来指定更新模版文件的间隔时间,相当于多长时间检测一下是否有必要重新加载模版文件,0 表示每次都重新加载,否则为多少毫秒钟检测一下模版是否更改。
FreeMarker定义了一个统一的缓存处理接口CacheStorage,默认的实现是 MruCacheStorage 最近最少使用的缓存策略。一般情况下,很少需要对缓存进行扩展处理。您可以通过下面的代码指定最大缓存的模版数:
1 cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20, 250))
其中第一个参数是最大的强引用对象数,第二个为最大的弱引用对象数。这两个值FreeMarker默认的是0和 Integer.MAX_VALUE,表明模版缓存数是无限的。
当业务执行中 消费方去下载文件过程失败了怎么办 比如我手动在GridFS把文件删了,前端已经收到生产方成功得消息了
解决:
ACK机制:
由于通信过程的不可靠性,传输的数据不可避免的会出现丢失、延迟、错误、重复等各种状况,TCP协议为解决这些问题设计了一系列机制。这个机制的核心,就是发送方向接收方发送数据后,接收方要向发送方发送ACK(回执信息)。如果发送方没接收到正确的ACK,就会重新发送数据直到接收到正确ACK为止。比如:发送方发送的数据序号是seq,那么接收方会发送seq + 1作为ACK,这样发送方就知道接下来要发送序号为seq + 1的数据给接收方了 如下图:
应用场景:
(1)数据丢失或延迟。发送方发送数据seq时会起一个定时器,如果在指定时间内没有接收到ACK seq + 1,就把数据seq再发一次。
(2)数据乱序。接收方上一个收到的正确数据是seq + 4,它返回seq + 5作为ACK。这时候它收到了seq + 7,因为顺序错了,所以接收方会再次返回seq + 5给发送方。
(3)数据错误。每一个TCP数据都会带着数据的校验和。接收方收到数据seq + 3以后会先对校验和进行验证。如果结果不对,则发送ACK seq + 3,让发送方重新发送数据。
(4)数据重复。接收方直接丢弃重复的数据即可。
懒汉模式:在类加载的时候不被初始化。
饿汉模式:在类加载时就完成了初始化,但是加载比较慢,获取对象比较快。
饿汉模式是线程安全的,在类创建好一个静态对象提供给系统使用,懒汉模式在创建对象时不加上synchronized,会导致对象的访问不是线程安全的
多线程下如何实现单例模式:
由上可知 饿汉模式 类加载时就完成初始化 提前创建好实例 影响加载效率 线程安全
懒汉模式则 类加载时不需要提前创建好实例,加载效率较快,需要安全处理,否则线程不安全
懒汉模式安全处理方案:
(1)在方法区上加锁 但是运行效率低下 下一个线程调用同步方法必须等待上一个释放锁执行完毕
(2)同步代码快加锁 但是将全部代码锁上了 所以跟上面一样 效率低下
(3)在需要同步执行的代码块加锁,不影响执行效率且线程安全。
&