那么如何才能正确的掌握Redis呢?
为了让大家能够在Redis上能够加深,所以这次给大家准备了一些Redis的学习资料,还有一些大厂的面试题,包括以下这些面试题
-
并发编程面试题汇总
-
JVM面试题汇总
-
Netty常被问到的那些面试题汇总
-
Tomcat面试题整理汇总
-
Mysql面试题汇总
-
Spring源码深度解析
-
Mybatis常见面试题汇总
-
Nginx那些面试题汇总
-
Zookeeper面试题汇总
-
RabbitMQ常见面试题汇总
JVM常频面试:
Mysql面试题汇总(一)
Mysql面试题汇总(二)
Redis常见面试题汇总(300+题)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:p=“http://www.springframework.org/schema/p”
xmlns:context=“http://www.springframework.org/schema/context”
xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”
xmlns:mvc=“http://www.springframework.org/schema/mvc”
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package=“edu.hpu”></context:component-scan>
生产者类
Producter:
package edu.hpu;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
@Component
public class Producter {
@Autowired
private JmsTemplate jmsTemplate;
@Autowired
private Destination textDestination;
public void sendTextMessage(final String text) {
jmsTemplate.send(textDestination,new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
// TODO Auto-generated method stub
return session.createTextMessage(text);
}
});
}
}
TestProducter
测试生产类,发送一百条消息。
package edu.hpu.test;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.core.SpringNamingPolicy;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import edu.hpu.Producter;
import edu.hpu.util.ActiveMQUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations=“classpath:spring_jms.xml”)
public class TestProducter {
@Autowired
private Producter producter;
@Before
public void checkServer() {
ActiveMQUtil.checkServer();
}
@Test
public void testSend() {
for (int i = 0; i < 100; i++) {
producter.sendTextMessage("消息 " + i);
}
}
}
MyMessageListener
监听类,用于获取新的消息。
package edu.hpu;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import cn.hutool.core.util.RandomUtil;
public class MyMessageListener implements MessageListener{
String name = “consumer-”+ RandomUtil.randomString(5);
public MyMessageListener() {
System.out.println(name + " started");
}
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage)message;
try {
System.out.println(name+" 接收到消息:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
TestConsumer
消费者测试类,他其实什么都没做。 虽然它什么都没做,但是因为他是运行在 spring框架下的测试,所以一旦启动,就会导致一个新的 DefaultMessageListenerContainer 被启动,间接地导致 一个新的 MyMessageListener 被启动。 于是也就充当了消费者的角色了。
其中的,
System.in.read();
与这个类似的, TestProducer 类的启动,也会导致一个 MyMessageListener 被启动,所以 TestProducer 本身既是一个生产者,也是一个消费者。
package edu.hpu.test;
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
一个 MyMessageListener 被启动,所以 TestProducer 本身既是一个生产者,也是一个消费者。
package edu.hpu.test;
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
[外链图片转存中…(img-mbfI2Zfs-1715607820328)]