自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1029)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Java8方法引用

内容简介:方法引用Demo详解 通过5种语法使用方法引用 方法引用使用总结1. 在Java8中方法引用Demo详解1.1 方法引用出现的背景在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑呢?1.2 问题的引出1.3 问题的发现与解决这段代码的问题在于,对String进行控制台打印输出的操作方案,明明已经有了现成的实现,那就...

2020-06-18 09:44:09 83

原创 Java10类型推导

引言 2018年3月20日,大家期待已久的Java 10发布了,Java 10推出很多新的特性,比如局部变量类型推导、应用类数据共享、并行全垃圾回收器 G1等等,其中和我们开发者息息相关的就是局部变量类型推导,今天我们就来聊一聊Java 10的局部变量类型推导。概念 所谓的局部变量类型推导其实就是通过增强java语言特性将类型推断扩展到局部变量,它引入了其他语言中很常见的“var”,其表现形式也类似于JavaScript的中的"var",只要编译器可以推断此种类型,你就不再需...

2020-06-18 09:24:42 93

原创 基于Apache Storm Trident实时计算开发 下

2.4 入门案例pom.xmlTopology2.5 实时防恶意服务器攻击系统2.5.1 需求分析这个实时系统,主要是检测在一定时间内,某个IP访问某个些页面超过了一定的访问量,就会将IP拉入到黑名单。所以,每当一个IP访问了一次页面,就会将次IP的访问次数进行累加,并检测到超过一定数量的访问IP,就加入到“监狱”中让这个IP“反省”半个小时。本项目需要用到的技术点如下:Kafka Redis Apache Storm Trident Spring BootSpring Data Re..

2020-06-18 09:14:47 158

原创 基于Apache Storm Trident实时计算开发 上

1. 概述Apache Storm是一个经典的分布式流式计算编程框架,但编写程序比较麻烦。通常,一个基本的基于Storm的流式计算程序需要有以下几个部分:一个Spout、若干个Bolt、一个Topology。Spout和Bolt程序编写,以及Topology的编排不是太友好。今天,我要介绍的是,基于Storm的更高层次的抽象——Trident。它的API要比Storm更加简洁,而且支持迭代计算,不需要反复的创建Bolt来进行操作。2. 主要内容2.1 Trident程序架构简单解释下上图:1....

2020-06-18 08:50:48 66

原创 品优购电商系统开发第 10 章 六

7.过滤查询7.1需求分析根据上一步构建的查询条件,实现分类、品牌和规格的过滤查询7.2代码实现7.2.1分类过滤修改pinyougou-search-service工程的SearchItemServiceImpl.java/*** 根据关键字搜索列表* @param keywords* @return*/private Map searchList(Map searchMap){.......//1.1 关键字查询......//1.2 按分类筛选if(!"".equa...

2020-06-11 10:04:00 79

原创 品优购电商系统开发第 10 章 五

6.过滤条件构建6.1需求分析点击搜索面板上的分类、品牌和规格,实现查询条件的构建。查询条件以面包屑的形式显示。当面包屑显示分类、品牌和规格时,要同时隐藏搜索面板对应的区域。用户可以点击面包屑上的X撤销查询条件。撤销后显示搜索面包相应的区域。6.2添加搜索项6.2.1添加搜索项方法修改pinyougou-search-web的searchController.js$scope.searchMap={'keywords':'','category':'','brand':'','spec...

2020-06-11 10:02:03 69

原创 品优购电商系统开发第 10 章 四

5.显示品牌和规格数据5.1需求分析在搜索面板区域显示第一个分类的品牌和规格列表5.2后端代码修改ItemSearchServiceImpl.java,增加方法@Autowiredprivate RedisTemplate redisTemplate;/*** 查询品牌和规格列表* @param category 分类名称* @return*/private Map searchBrandAndSpecList(String category){Map map=new Hash...

2020-06-11 09:58:57 51

原创 品优购电商系统开发第 10 章 三

4.缓存品牌和规格数据4.1需求分析将商品分类数据、品牌数据、和规格数据都放入Redis存储。(1)当用户进入运营商后台的商品分类页面时,将商品分类数据放入缓存(Hash)。以分类名称作为key ,以模板ID作为值(2)当用户进入运营商后台的模板管理页面时,分别将品牌数据和规格数据放入缓存(Hash)。以模板ID作为key,以品牌列表和规格列表作为值。4.2缓存商品分类数据将商品分类表存入缓存pinyougou-sellergoods-service工程需要引入pinyougou-...

2020-06-11 09:57:19 82

原创 品优购电商系统开发第 10 章 二

2.搜索业务规则分析2.1需求分析我们今天要完成的目标是在关键字搜索的基础上添加面板搜索功能。面板上有商品分类、品牌、各种规格和价格区间等条件业务规则:(1)当用户输入关键字搜索后,除了显示列表结果外,还应该显示通过这个关键字搜索到的记录都有哪些商品分类。(2)根据第一个商品分类查询对应的模板,根据模板查询出品牌列表(3)根据第一个商品分类查询对应的模板,根据模板查询出规格列表(4)当用户点击搜索面板的商品分类时,显示按照这个关键字查询结果的基础上,筛选此分类的结果。(5)当用户点击搜索面板的品牌时,显示.

2020-06-11 09:55:52 70

原创 品优购电商系统开发第 10 章 一

品优购电商系统开发第 10 章搜索解决方案-Solr 【2】课程目标目标1:实现品优购搜索结果高亮显示功能目标2:说出品优购搜索的业务规则和实现思路目标3:完成查询分类列表的功能目标4:完成缓存品牌和规格数据的功能目标5:完成显示品牌和规格数据的功能目标6:完成过滤条件构建的功能目标7:完成过滤查询的功能1.品优购-高亮显示1.1需求分析将用户输入的关键字在标题中以红色的字体显示出来,就是搜索中常用的高亮显示1.2后端代码修改服务层代码ItemSearchServiceImpl.java...

2020-06-11 09:54:24 72

原创 品优购电商系统开发 第九章 四

4.品优购-关键字搜索4.1需求分析打开搜索页面,在搜索框输入要搜索的关键字,点击搜索按钮即可进行搜索,展示搜索结果4.2后端代码4.2.1服务接口层(1)创建pinyougou-search-interface模块(搜索服务接口),依赖pinyougou-pojo(2)创建com.pinyougou.search.service包,创建业务接口public interface ItemSearchService {/*** 搜索* @param keywords* @retu...

2020-06-04 10:43:29 64

原创 品优购电商系统开发 第九章 三

3.品优购-批量数据导入3.1需求分析编写专门的导入程序,将商品数据导入到Solr系统中3.2查询商品数据列表3.2.1工程搭建(1)创建pinyougou-solr-util(jar),引入pinyougou-dao以及spring相关依赖(2)创建spring配置文件3.2.2代码编写创建com.pinyougou.solrutil包,创建类SolrUtil ,实现商品数据的查询(已审核商品)@Componentpublic class SolrUtil {@...

2020-06-04 10:36:12 59

原创 品优购电商系统开发 第九章 二

2.Spring Data Solr入门2.1 Spring Data Solr简介虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便Solr的开发所研制的一个框架,其底层是对SolrJ(官方API)的封装。2.2 Spring Data Solr入门小Demo2.2.1搭建工程(1)创建maven工程,pom.xml中引入依赖<dependencies...

2020-06-04 10:29:23 65

原创 品优购电商系统开发 第九章 一

品优购电商系统开发第 9 章搜索解决方案-Solr 【1】课程目标目标1:完成solr环境安装、中文分析器和业务域的配置目标2:会使用Spring Data Solr完成增删改查操作目标3:完成批量数据导入功能目标4:完成按关键字搜索功能1.Solr安装与配置1.1什么是Solr大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr...

2020-06-04 10:21:59 56

原创 品优购电商系统开发第 8 章 五

4.5.5 Hash类型操作创建测试类TestHash(1)存入值@Testpublic void testSetValue(){redisTemplate.boundHashOps("namehash").put("a", "唐僧");redisTemplate.boundHashOps("namehash").put("b", "悟空");redisTemplate.boundHashOps("namehash").put("c", "八戒");redisTemplate.bound..

2020-06-02 15:34:34 76

原创 品优购电商系统开发第 8 章 四

4. SpringDataRedis简介4.1项目常见问题思考我们目前的系统已经实现了广告后台管理和广告前台展示,但是对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。我们今天讨论第一种解决方案。4.2 Redisredis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写。企业开发通常采用Redis来实现缓存。同类的产品还有memcache、memcached、MongoDB...

2020-06-02 15:30:20 71

原创 品优购电商系统开发第 8 章 三

3.网站首页-广告展示3.1需求分析修改首页,当其轮播广告图根据后台设置的广告列表动态产生。3.2准备工作3.2.1工程搭建创建war模块pinyougou-portal-web,此工程为网站前台的入口,参照其它war模块编写配置文件。不需要添加SpringSecurity框架3.2.2前端(1)拷贝资源:资源文件夹中 “前台页面”目录下的index.html以及相关目录拷贝到pinyougou-portal-web(2)在js文件夹创建base.js和base_pag...

2020-06-02 15:12:32 80

原创 品优购电商系统开发第 8 章 二

2.3广告管理2.3.1广告图片上传将pinyougou-shop-web的以下资源拷贝到pinyougou-manager-web(1)UploadController.java(2)uploadService.js(3)application.properties(4)fdfs_client.conf在pinyougou-manager-web的springmvc.xml中添加配置<!-- 配置多媒体解析器 --><bean id="multipartReso...

2020-06-02 15:03:46 53

原创 品优购电商系统开发第 8 章 一

品优购电商系统开发第 8 章广告管理与缓存解决方案课程目标目标1:了解网站前台的页面以及广告相关表结构目标2:完成运营商后台广告类型管理与广告管理目标3:完成前台工程广告轮播图的展示目标4:使用SpringDataRedis操作字符串、set、List、hash等类型缓存目标5:使用SpringDataRedis实现广告数据的缓存1.网站前台分析1.1网站前台有哪些页面(1)网站首页(2)商家(店铺)首页(3)商品详细页(4)商品搜索页(5)购物车列表页(6)购物选项选择页(7)支付页...

2020-06-02 14:56:26 50

原创 品优购电商系统开发第 7 章 十

6.注解式事务配置6.1事务异常测试我们修改pinyougou-sellergoods-service工程GoodsServiceImpl.java的add方法/*** 增加*/@Overridepublic void add(Goods goods) {goods.getGoods().setAuditStatus("0");goodsMapper.insert(goods.getGoods()); //插入商品表int x=1/0;goods.getGoodsDesc...

2020-06-01 11:08:47 49

原创 品优购电商系统开发第 7 章 九

4.运营商后台-商品管理【商品删除】4.1需求分析我们为商品管理提供商品删除功能,用户选中部分商品,点击删除按钮即可实现商品删除。注意,这里的删除并非是物理删除,而是修改tb_goods表的is_delete字段为1,我们可以称之为“逻辑删除”4.2逻辑删除的实现4.2.1后端代码修改pinyougou-sellergoods-service工程的GoodsServiceImpl.java的delete方法/*** 批量删除*/@Overridepublic vo...

2020-06-01 11:06:11 64

原创 品优购电商系统开发第 7 章 八

3.2商品详情展示(学员实现)需求:点击列表右侧的“详情”按钮,弹出窗口显示商品信息。代码略。3.3商品审核与驳回需求:商品审核的状态值为1,驳回的状态值为2。用户在列表中选中ID后,点击审核或驳回,修改商品状态,并刷新列表。3.3.1后端代码(1)在pinyougou-sellergoods-interface的GoodsService.java新增方法定义/*** 批量修改状态* @param ids* @param status*/public void upd...

2020-06-01 11:03:54 71

原创 品优购电商系统开发第 7 章 七

2.9页面跳转(1)由商品列表页跳转到商品编辑页修改goods.html表格行的修改按钮<a href="goods_edit.html#?id={{entity.id}}" class="btn bg-olive btn-xs">修改</a>(2)由商品编辑页跳转到商品列表修改goods_edit.html的返回列表按钮<a href="goods.html" class="btn btn-default">返回列表</a>(3...

2020-05-28 11:19:30 58

原创 品优购电商系统开发第 7 章 六

2.8保存数据2.8.1后端代码修改pinyougou-sellergoods-interface的GoodsService.javapublic void update(Goods goods);修改pinyougou-sellergoods-service的GoodsServiceImpl ,将SKU列表插入的代码提取出来,封装到私有方法中/*** 插入 SKU 列表数据* @param goods*/private void saveItemList(Goo...

2020-05-28 11:16:42 64

原创 品优购电商系统开发第 7 章 五

2.6读取商品规格属性修改goodsController//查询实体$scope.findOne=function(){......goodsService.findOne(id).success(function(response){$scope.entity= response;editor.html($scope.entity.goodsDesc.introduction);//商品介绍$scope.entity.goodsDesc.itemImages=JSON.parse..

2020-05-28 11:13:41 65

原创 品优购电商系统开发第 7 章 四

2.3读取商品介绍(富文本编辑器)修改前端代码goodsController//查询实体$scope.findOne=function(){.................goodsService.findOne(id).success(function(response){$scope.entity= response;//向富文本编辑器添加商品介绍editor.html($scope.entity.goodsDesc.introduction);});}2.4显示商...

2020-05-28 11:11:37 62

原创 品优购电商系统开发第 7 章 三

2.商家后台-商品管理【商品修改】2.1需求分析在商品列表页面点击修改,进入商品编辑页面,并传递参数商品ID,商品编辑页面接受该参数后从数据库中读取商品信息,用户修改后保存信息。2.2基本信息读取我们首选读取商品分类、商品名称、品牌,副标题,价格等信息2.2.1后端代码(1)修改pinyougou-sellergoods-interface的GoodsService.java/*** 根据 ID 获取实体* @param id* @return*/public Goods fi...

2020-05-28 11:03:26 41

原创 品优购电商系统开发第 7 章 二

1.3显示状态修改goodsController.js,添加state数组$scope.status=['未审核','已审核','审核未通过','关闭'];//商品状态修改列表显示{{status[entity.auditStatus]}}显示效果如下:1.4显示分类我们现在的列表中的分类仍然显示ID如何才能显示分类的名称呢?方案一:在后端代码写关联查询语句,返回的数据中直接有分类名称。方案二:在前端代码用ID去查询后端,异步返回商品分类名称。我们目前采用方案二:(1)修...

2020-05-26 15:00:55 72

原创 品优购电商系统开发第 7 章 一

品优购电商系统开发第 7 章商品修改与审核课程目标目标1:完成商家后台商品列表的功能目标2:完成商家后台商品修改的功能目标3:完成运营商后台商品审核的功能目标4:完成运营商后台商品删除的功能目标5:掌握注解式事务的配置1.商家后台-商品管理【商品列表】1.1需求分析在商家后台,显示该商家的商品列表信息,如下图:1.2查询商家商品列表1.2.1后端代码修改pinyougou-shop-web工程的GoodsController.java的search方法@RequestMap...

2020-05-26 14:54:38 52

原创 品优购电商系统开发 第 6 章 七

6.3后端代码修改GoodsServiceImpl的add方法/*** 增加*/@Overridepublic void add(Goods goods) {goods.getGoods().setAuditStatus("0");goodsMapper.insert(goods.getGoods()); //插入商品表goods.getGoodsDesc().setGoodsId(goods.getGoods().getId());goodsDescMapper.inser...

2020-05-26 14:30:21 58

原创 品优购电商系统开发 第 6 章 六

5.3后端代码(1)在GoodsServiceImpl添加属性@Autowiredprivate TbItemMapper itemMapper;@Autowiredprivate TbBrandMapper brandMapper;@Autowiredprivate TbItemCatMapper itemCatMapper;@Autowiredprivate TbSellerMapper sellerMapper;(2)修改GoodsServiceImpl的add方...

2020-05-26 14:27:13 61

原创 品优购电商系统开发 第 6 章 五

5.商品录入【SKU商品信息】5.1需求分析基于上一步我们完成的规格选择,根据选择的规格录入商品的SKU信息,当用户选择相应的规格,下面的SKU列表就会自动生成,如下图:实现思路:实现思路:(1)我们先定义一个初始的不带规格名称的集合,只有一条记录。(2)循环用户选择的规格,根据规格名称和已选择的规格选项对原集合进行扩充,添加规格名称和值,新增的记录数与选择的规格选项个数相同生成的顺序如下图:5.2前端代码5.2.1生成SKU列表(深克隆)(1)在goodsController.js...

2020-05-26 14:21:43 60

原创 品优购电商系统开发 第 6 章 四

4.2.2保存选中规格选项我们需要将用户选中的选项保存在tb_goods_desc表的specification_items字段中,定义json格式如下:[{“attributeName”:”规格名称”,”attributeValue”:[“规格选项 1”,“规格选项 2”.... ] } , .... ](1)在baseController.js增加代码//从集合中按照 key 查询对象$scope.searchObjectByKey=function(list,key,...

2020-05-26 14:08:31 61

原创 品优购电商系统开发 第 6 章 三

4.商品录入【规格选择】4.1需求分析显示规格及选项列表(复选框)如下图,并保存用户选择的结果4.2代码实现4.2.1显示规格选项列表由于我们的模板中只记录了规格名称,而我们除了显示规格名称还是显示规格下的规格选项,所以我们需要在后端扩充方法。(1)在pinyougou-sellergoods-interface的TypeTemplateService.java新增方法定义/*** 返回规格列表* @return*/public List<Map> findSpecL...

2020-05-25 13:40:30 76

原创 品优购电商系统开发 第 6 章 二

1.3.4读取模板ID在goodsController增加代码://三级分类选择后 读取模板 ID$scope.$watch('entity.goods.category3Id', function(newValue, oldValue) {itemCatService.findOne(newValue).success(function(response){$scope.entity.goods.typeTemplateId=response.typeId; //更新模板 ID}...

2020-05-25 13:38:09 38

原创 品优购电商系统开发 第 6 章 一

品优购电商系统开发第 6 章商品录入【2】课程目标目标1:完成选择商品分类功能目标2:完成品牌选择功能目标3:完成扩展属性功能目标4:完成规格选择功能目标5:完成SKU商品信息功能目标6:完成是否启用规格功能1.商品录入【选择商品分类】1.1需求分析在商品录入界面实现商品分类的选择(三级分类)效果如下:当用户选择一级分类后,二级分类列表要相应更新,当用户选择二级分类后,三级列表要相应更新。1.2准备工作(1)在pinyougou-shop-web工程中创建ItemCatContro...

2020-05-21 11:11:30 65

原创 品优购电商系统开发第 5 章 十

(3)修改新建按钮<button type="button" class="btn btn-default" title="新建" data-target="#uploadModal"data-toggle="modal" ng-click="image_entity={}" ><i class="fa fa-file-o"></i> 新 建</button>6.3.3图片列表(1)在goodsController.js增加方法$sc...

2020-05-21 10:52:46 44

原创 品优购电商系统开发第 5 章 九

6.3前端代码6.3.1服务层(1)在pinyougou-shop-web工程创建uploadService.js//文件上传服务层app.service("uploadService",function($http){this.uploadFile=function(){var formData=new FormData();formData.append("file",file.files[0]);return $http({method:'POST',url:"../up...

2020-05-21 10:47:18 43

原创 品优购电商系统开发第 5 章 八

6.商家后台-商品录入【商品图片上传】6.1需求分析在商品录入界面实现多图片上传当用户点击新建按钮,弹出上传窗口6.2后端代码6.2.1工具类(1)pinyougou-common工程pom.xml引入依赖<!-- 文件上传组件 --><dependency><groupId>org.csource.fastdfs</groupId><artifactId>fastdfs</artifactId></de...

2020-05-21 10:42:26 45

原创 品优购电商系统开发第 5 章 七

5.2文件上传及下载的流程5.2.1文件上传流程组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文...

2020-05-21 10:34:32 60

空空如也

我是楠楠的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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