课程回顾:
1、 在Linux下solr服务搭建 solr服务运行在tomcat中 Linux下安装tomcat
1、 安装tomcat
2、 测试关闭防火墙service iptables stop chkconfig iptables off 安装solr服务
1、解压,将solr.warcopy到tomcat中 2、手动解压unzip –d 3、解决错误:404、500 4、正常访问
2、 配置IK分词器 解压
将ik的jar包copy到solr中 配置filed、filedtype节点测试 3、 配置停用词
将配置文件copy到solr中(classes) 添加停词:服 添加词典:瑜伽服
修改ik的配置文件:加载词典 4、 spring整合solr
配置文件通过spring 反射httpsolrserver 测试 5、 商品上架
修改isShow状态
将商品信息保存到solr中(用于前台系统的检索) 字段对应:id ---id name---name_ik(自定义) price---price imgUrl----url
brandId ---- brandId(自定义,用于根据品牌过滤) solrserver.add(doc----solrinputdocument) 6、 前台系统的商品检索
搭建前台系统url:REStful风格(对静态资源放行) 根据输入的关键字进行检索(数据来源:solr)
1、 需求(条件):关键字检索、关键字高亮、根据价格排序、页 2、 SolrQuery对象封装条件
setQuery(q)set(设置属性)。
setHL(true) addHLF addHLPre addHLPost setSort(filed, order) setStart setRows
solrserver.query(solrquery) ---- ResponseQuery -- getResults(普通
结果集)、getHL(高亮结果集)、result.getNumFound()(总条数) 处理结果集--- list Pagination(pageNo,pageSize,totalCount,list) 复习 1、 框架:struts2、hibernate、spring、springmvc、mybatis 灵活使用 执行的流程 见解 2、 Java基础 多线程 --- 应用软件的开发(不用写多线程)、基础软件(tomcat、dubbo) 1、 实现多线程方式 2、 状态。 集合 1、 collection接口 2、 list、hashmap(散列的线性结构 3/4自动扩容)、set 特点、数据结构 I/O 流对象。字符流、字节流。 3、servlet 生命周期 request Response servletContext session cookie 课程计划: 1、 商品品牌信息展示 2、 条件筛选 品牌筛选 价格筛选 3、 ActiveMQ介绍以及使用---MOM 1 商品品牌信息展示 1.1 品牌信息查询 1.2 品牌信息保存到哪---redis 1、 品牌管理:维护品牌信息(存放:mysql数据)----- 从mysql中查询品牌信息--数据存 放在磁盘中--读取数据进行I/O操作---- 多用户访问时mysql效率低。(不选择mysql) 2、 solr:搜索磁盘API操作复杂(不选择solr) 3、 思路:将数据放到内存中(非关系型数据nosql:选择redis:称为内存数据库)redis: 在高并发下读取性能高。 1.3 什么时候将品牌信息保存到redis 1、 保存品牌信息时将信息保存到redis中 2、 修改品牌信息时将信息保存到redis中 1.4 将品牌的哪些信息保存到redis中 1、 品牌名称 2、 品牌id 1.5 选择redis的哪种数据结构 redis:key - value redis的5种数据结构: String:set k v set id 1 set name 安踏 list:应用场景:消息队列(push、pop)秒杀fifo c b a push:压栈从头or尾 pop:弹栈处理这些消息 set:特点:聚合操作(交集、并集、差集)、不可有重复元素(访问播客ip) zset(stored set:设置得分):有序的队列(根据得分排名):排行榜(热点话题、游戏 排名) hash:hset key value(map) filed valuie hset brand id name 技术: 1、 概念 2、 原理 3、 使用场景 1.6 将品牌信息保存到redis中 在修改或者保存时。修改是将信息保存到redis中。 修改BrandServiceImpl的更新方法。----- service-product工程。 1.7 品牌信息检索 1.7.1 编写service接口、实现类 接口: 实现类: 1.7.2 更新Controller方法 1.7.3 jsp页面回显 2 条件筛选 根据价格、品牌筛选 2.1 分析 1、 选择品牌时,需要判断是否选择了价格,如果选了价格,查询条件:brandId、price,否 则就是brandId 2、 选择价格是,需要判断是否选了品牌;如果选了品牌,查询:brandId、price,否则就是 price。 2.2 修改js事件 2.3 更新service接口、实现类 接口: 实现类:---- service-solr 2.4 更新controller 3 展示已选条件 3.1 jd的特点 1、 选择后的条件被取消 2、 选择哪个中保存已选的条件map容器保存了已选条件。key-value 3.2 隐藏已选条件 3.3 展现已选条件 3.3.1 从redis中根据id查询品牌名称 3.3.1.1 编写service接口--- service-interface 3.3.1.2 实现类--- service-product 3.3.2 更新Controller方法 3.3.3 jsp页面回显 4 ActiveMQ介绍和使用 4.1 什么是ActiveMQ 消息队列:是在消息的传输过程中保存消息的容器message queue。 ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。 JMS:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 常见的消息中间件: 4.2 相关名词 1、 生产者:将消息发布到mq容器中 2、 消费者:监听mq中的属于自己的消息,并且处理该消息(处理该业务逻辑)。 4.3 工作原理 4.4 模型 4.4.1 p2p 消息1-服务1 消息2-服务2 在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:只有一个消费者将获得消息,生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。一个成功处理的消息都由接收者签收 4.4.2 subsricrite/publish redis: 1、 指定当个房间(room1)私有(私信) 2、 批量监听(r*)room1、room2 公共消息(公共) 消息1 ---- 容器服务1消费消息1、2 消息2 --- 容器服务2消费消息1、2 发布/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:多个消费者可以获得消息 在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。 5 将ActiveMQ应用到项目中 5.1 本项目的使用场景 5.2 spring整合jsm 5.2.1 生产者配置文件 略。jmsTemplate:发送消息到mq中。 5.2.2 消费者配置文件 略:自定义监听器:监听容器中的消息并消费(处理业务) 5.3 更新生成者(service-product) 5.4 更新消费者(service-solr) 5.4.1 更新searchservice接口 5.4.2 更新searchserviceimpl 5.4.3 自定义消息监听器 因篇幅问题不能全部显示,请点此查看更多更全内容