redis的应用(三)与solr的联合查询

【信息科学与工程学】【数据科学】数据科学领域-第十一篇 数据集成算法01 ​​降低维护成本​​:通过抽象通用流程(如),当需要修改故障注入逻辑(如更换混沌工具)时,只需修改一处代码,无需修改所有测试用例;​​提升扩展性​​:通过参数化故障场景(如),可快速生成新的故障用例(如针对新服务的延迟故障),适应系统迭代需求;​​增强场景真实性​​:通过组合混沌操作(如),模拟真实生产环境中的复杂故障链(如“网络延迟+服务宕机”),更准确地验证系统韧性;​​提高分析效率​​:通过自动化结果分析(如),快速获取MTTR、错误率等关键指标,减少人工分析时间。 阅读详情

需求分析

根据搜索关键字,页面显示相关的商品分类,根据相关的商品分类借助分类模板从后台查询出品牌、规格以及规格选项进行显示
为了应对高并发,将根据相关的商品分类借助分类模板从后台查询出品牌、规格以及规格选项保存到redis数据库中,查询的时候不再从关系数据库中查询,直接从更快的redis数据库中查询
涉及到的数据库表有三个:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缓存实现

缓存这些数据要在运营商后台管理中进行(因为运营商后台管理对这些数据进行增删改查的操作),查询这些数据是在搜索服务中调用,然后提供给搜索页面

在原来的分类查询业务的基础上加入商品分类缓存

  • 加入缓存
  • 在商品搜索模块,需要根据 分类名 得到模板Id
  • 因此,在操作分类的模块中,我们提前将分类数据缓存起来
  • 缓存规则:分类名作为 小键, 以模板id作为值
@Autowired
private RedisTemplate redisTemplate;

public List<TbItemCat> findByParentId(Long pId) {
	TbItemCatExample example = new TbItemCatExample();
	Criteria criteria = example.createCriteria();
	criteria.andParentIdEqualTo(pId);
	List<TbItemCat> itemCats = itemCatMapper.selectByExample(example);
	
	//加入缓存
	Set keys = redisTemplate.boundHashOps("categoryList").keys();
	if (keys!=null && keys.size()>0){

	}else {//没有任何的键,开始缓存
		List<TbItemCat> allCats = findAll();
		for (TbItemCat cat : allCats) {
			redisTemplate.boundHashOps("categoryList").put(cat.getName(),cat.getTypeId());
		}
		System.out.println(">>>>>添加分类信息至缓存");
	}
	return itemCats;
}

在原来的分类模板查询业务的基础上加入商品分类模板缓存

  • 商品搜索模块,需要根据模板id,得到品牌、规格列表
  • 所以,在此处,我们将模板的信息加入缓存
  • 缓存的规则:
  • 针对品牌:取一个品牌的大键brandList,然后以模板id作为小键,品牌列表作为值
  • 针对规格:取一个规格的大键specList,然后以模板id作为小键,规格 + 规格选项 的列表作为值
@Autowired
private RedisTemplate redisTemplate;

public PageResult findPage(TbTypeTemplate typeTemplate, int pageNum, int pageSize) {
	PageHelper.startPage(pageNum, pageSize);
	
	TbTypeTemplateExample example=new TbTypeTemplateExample();
	Criteria criteria = example.createCriteria();
	
	if(typeTemplate != null){			
					if(typeTemplate.getName() != null && typeTemplate.getName().length() > 0){
			criteria.andNameLike("%" + typeTemplate.getName() + "%");
		}			if(typeTemplate.getSpecIds() != null && typeTemplate.getSpecIds().length() > 0){
			criteria.andSpecIdsLike("%" + typeTemplate.getSpecIds() + "%");
		}			if(typeTemplate.getBrandIds() != null && typeTemplate.getBrandIds().length() > 0){
			criteria.andBrandIdsLike("%" + typeTemplate.getBrandIds() + "%");
		}			if(typeTemplate.getCustomAttributeItems() != null && typeTemplate.getCustomAttributeItems().length() > 0){
			criteria.andCustomAttributeItemsLike("%" + typeTemplate.getCustomAttributeItems() + "%");
		}
	}

	Page<TbTypeTemplate> page= (Page<TbTypeTemplate>)typeTemplateMapper.selectByExample(example);
	List<TbTypeTemplate> list = null;
	Set brandKeys = redisTemplate.boundHashOps("brandList").keys();
	if (brandKeys!=null && brandKeys.size()>0){

	}else{//缓存信息中没有键,开始缓存
		list = findAll();
		for (TbTypeTemplate template : list) {
			List<Map> brands = JSON.parseArray(template.getBrandIds(), Map.class);
			redisTemplate.boundHashOps("brandList").put(template.getId(),brands);
		}
	}

	Set specKeys = redisTemplate.boundHashOps("specList").keys();
	if (specKeys!=null && specKeys.size()>0){

	}else{//缓存信息中没有键,开始缓存
		if (list==null){
			list = findAll();
		}
		for (TbTypeTemplate template : list) {
			List<Map> specMaps = findSpecAndOptionsByTypeTemplateId(template.getId());
			redisTemplate.boundHashOps("specList").put(template.getId(),specMaps);
		}
		System.out.println(">>>>>添加规格列表至缓存");
	}
	return new PageResult(page.getTotal(), page.getResult());
}
public List<Map> findSpecAndOptionsByTypeTemplateId(Long typeTemplateId) {
	TbTypeTemplate tbTypeTemplate = typeTemplateMapper.selectByPrimaryKey(typeTemplateId);
	// List的格式:[{"id":26,"text":"尺码"},{"id":29,"text":"颜色"}]
	List<Map> maps = JSON.parseArray(tbTypeTemplate.getSpecIds(), Map.class);
	// map的格式:{"id":26,"text":"尺码"}
	for (Map map : maps) {

		TbSpecificationOptionExample example = new TbSpecificationOptionExample();
		TbSpecificationOptionExample.Criteria criteria = example.createCriteria();
		criteria.andSpecIdEqualTo(Long.parseLong(map.get("id")+""));
		List<TbSpecificationOption> specificationOptions = specificationOptionMapper.selectByExample(example);
		map.put("options",specificationOptions);
		// map的新格式变为:{"id":26,"text":"尺码", "options": [{id: 24, optionName: ""56寸}]}
	}
	return maps;
}

前端接口查询缓存的实现

@Autowired
private RedisTemplate redisTemplate;

public Map<String, Object> search(Map searchMap) {

    Map<String,Object> map = new HashMap<>();
    //关键字高亮
    highlight(searchMap,map);
    //根据关键字获取分类
    categoryList(searchMap,map);
    
    
    // 如果页面传递过来了分类名,就不使用默认的第一个分类查询品牌、规格了
    if (!"".equals(searchMap.get("category"))){
        brandAndSpecListSearch((String)searchMap.get("category"),map);
    }else {
        //查询品牌规格列表
        List<String> categoryList = (List<String>) map.get("categoryList");
        if (categoryList.size()>0){
            brandAndSpecListSearch(categoryList.get(0),map);
        }
    }
    return map;
}

测试

在这里插入图片描述
控制台打印
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
搜索之前
在这里插入图片描述
搜索之后
在这里插入图片描述

{
  "categoryList": [
    "电子书",
    "牙膏/牙粉",
    "手机"
  ],
  "specList": [
    {
      "options": [
        {
          "id": 98,
          "optionName": "移动3G",
          "orders": 1,
          "specId": 27
        },
        {
          "id": 99,
          "optionName": "移动4G",
          "orders": 2,
          "specId": 27
        },
        {
          "id": 100,
          "optionName": "联通3G",
          "orders": 3,
          "specId": 27
        },
        {
          "id": 101,
          "optionName": "联通4G",
          "orders": 4,
          "specId": 27
        },
        {
          "id": 112,
          "optionName": "电信3G",
          "orders": 5,
          "specId": 27
        },
        {
          "id": 113,
          "optionName": "电信4G",
          "orders": 6,
          "specId": 27
        },
        {
          "id": 114,
          "optionName": "移动2G",
          "orders": 7,
          "specId": 27
        },
        {
          "id": 115,
          "optionName": "联通2G",
          "orders": 8,
          "specId": 27
        },
        {
          "id": 116,
          "optionName": "电信2G",
          "orders": 9,
          "specId": 27
        },
        {
          "id": 117,
          "optionName": "双卡",
          "orders": 10,
          "specId": 27
        }
      ],
      "id": 27,
      "text": "网络"
    },
    {
      "options": [
        {
          "id": 118,
          "optionName": "16G",
          "orders": 1,
          "specId": 32
        },
        {
          "id": 119,
          "optionName": "32G",
          "orders": 2,
          "specId": 32
        },
        {
          "id": 120,
          "optionName": "64G",
          "orders": 3,
          "specId": 32
        },
        {
          "id": 121,
          "optionName": "128G",
          "orders": 4,
          "specId": 32
        }
      ],
      "id": 32,
      "text": "机身内存"
    }
  ],
  "brandList": [
    {
      "id": 1,
      "text": "联想"
    },
    {
      "id": 3,
      "text": "三星"
    },
    {
      "id": 2,
      "text": "华为"
    },
    {
      "id": 5,
      "text": "OPPO"
    },
    {
      "id": 4,
      "text": "小米"
    },
    {
      "id": 9,
      "text": "苹果"
    },
    {
      "id": 8,
      "text": "魅族"
    },
    {
      "id": 6,
      "text": "360"
    },
    {
      "id": 10,
      "text": "VIVO"
    },
    {
      "id": 11,
      "text": "诺基亚"
    },
    {
      "id": 12,
      "text": "锤子"
    }
  ],
  "rows": [
    {
      "barcode": null,
      "brand": "联想",
      "cartThumbnail": null,
      "category": "电子书",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 149187842867963,
      "id": 1369288,
      "image": "http://192.168.2.123/group1/M00/00/00/wKgCe17TrT-AfRG1AADFbi0oR0A460.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 0,
      "sellPoint": null,
      "seller": "测试",
      "sellerId": null,
      "spec": null,
      "specMap": {
        "jishenneicun": "16G",
        "wangluo": "移动4G"
      },
      "status": null,
      "stockCount": null,
      "title": "<span style='color:red'>测试</span>电子书nullnull",
      "updateTime": "2020-06-01 10:56:47"
    },
    {
      "barcode": null,
      "brand": "联想",
      "cartThumbnail": null,
      "category": "电子书",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 149187842867963,
      "id": 1369289,
      "image": "http://192.168.2.123/group1/M00/00/00/wKgCe17TrT-AfRG1AADFbi0oR0A460.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 0,
      "sellPoint": null,
      "seller": "测试",
      "sellerId": null,
      "spec": null,
      "specMap": {
        "jishenneicun": "16G",
        "wangluo": "双卡"
      },
      "status": null,
      "stockCount": null,
      "title": "<span style='color:red'>测试</span>电子书nullnull",
      "updateTime": "2020-06-01 10:56:47"
    },
    {
      "barcode": null,
      "brand": "联想",
      "cartThumbnail": null,
      "category": "电子书",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 149187842867963,
      "id": 1369290,
      "image": "http://192.168.2.123/group1/M00/00/00/wKgCe17TrT-AfRG1AADFbi0oR0A460.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 0,
      "sellPoint": null,
      "seller": "测试",
      "sellerId": null,
      "spec": null,
      "specMap": {
        "jishenneicun": "16G",
        "wangluo": "移动3G"
      },
      "status": null,
      "stockCount": null,
      "title": "<span style='color:red'>测试</span>电子书nullnull",
      "updateTime": "2020-06-01 10:56:47"
    },
    {
      "barcode": null,
      "brand": "小米",
      "cartThumbnail": null,
      "category": "电子书",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 149187842867964,
      "id": 1369287,
      "image": "http://192.168.2.123/group1/M00/00/00/wKgCe17TsLWAAWwDAADFbi0oR0A073.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 30,
      "sellPoint": null,
      "seller": "测试",
      "sellerId": null,
      "spec": null,
      "specMap": null,
      "status": null,
      "stockCount": null,
      "title": "电子书2",
      "updateTime": "2020-06-01 10:56:17"
    },
    {
      "barcode": null,
      "brand": "魅族",
      "cartThumbnail": null,
      "category": "牙膏/牙粉",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 149187842867955,
      "id": 1369279,
      "image": "http://192.168.25.133/group1/M00/00/00/wKgZhVnGZfWAaX2hAAjlKdWCzvg173.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 100,
      "sellPoint": null,
      "seller": "千度商店",
      "sellerId": null,
      "spec": null,
      "specMap": null,
      "status": null,
      "stockCount": null,
      "title": "<span style='color:red'>测试</span>商品110",
      "updateTime": "2017-09-23 21:47:51"
    },
    {
      "barcode": null,
      "brand": "中国移动",
      "cartThumbnail": null,
      "category": "手机",
      "categoryid": null,
      "costPirce": null,
      "createTime": null,
      "goodsId": 1,
      "id": 1039296,
      "image": "http://img12.360buyimg.com/n1/s450x450_jfs/t3034/299/2060854617/119711/577e85cb/57d11b6cN1fd1194d.jpg",
      "isDefault": null,
      "itemSn": null,
      "marketPrice": null,
      "num": null,
      "price": 2699,
      "sellPoint": null,
      "seller": "中国移动",
      "sellerId": null,
      "spec": null,
      "specMap": {
        "jishenneicun": "16G",
        "wangluo": "双卡"
      },
      "status": null,
      "stockCount": null,
      "title": "合约惠机<span style='color:red'>测试</span>手机(请勿下单)",
      "updateTime": "2015-03-08 21:33:18"
    }
  ]
}
简单java实现的solr以及redis小demo solr,redis用java实现的小案例,本项目使用的maven,在使用前需要安装好redis和solr的服务器 立即下载

相关推荐

solr-redis:Solr Redis扩展

Solr Redis扩展 该扩展是一个ParserPlugin,它基于Redis中存储的数据提供Solr查询解析器。 RedisQParserPlugin创建与Redis的连接,并将连接对象传递给负责获取数据和构建查询的RedisQParser。 快速开始 使用Maven进行构建: mvn install 将库( solr-redis-*.jar )放在Solr lib目录( $SOLR_HOME/lib )中。 在solrconfig.xml配置查询解析器插件。 将以下内容添加到solrconfig.xml的“ config”部分: < queryParser xss=removed xss=removed> < str xss=removed>localhost</

大型分布式redis+solr+Linux+nginx+springmvc+mybatis电商项目

中国移动省级网上商城项目,用于建立网上终端、营销案和号卡在线销售及相关辅助功能,后台包含商品管理、订单管理、类目管理、客户管理、合作商管理、客服管理、支付平台、内容管理等,很大程度上分担了人工的压力,前台包括个人中心,购物车,商城首页,频道页,商品详情页(静态化),提交订单页,支付页面等页面构成,对提高客户服务效率和客户满意度能够起到较好的作用。

Maven+CMS+Redis+Solr+Linux+Nginx+SSM单点登录,大型分布式项目源码

技术关键点Maven+CMS+Redis+Solr+Linux+Nginx+Spring+Springmvc+Mybatis

使用SpringBoot+Redis+Solr完成多对多项目案例

利用SpringBoot的简单性和易集成特点,与内存服务器Redis和搜索服务器Solr集成完成项目案例,题目要求查询菜单记录需要从Solr中检索,并且高亮显示查询关键字,菜单使用的材料需要使用Redis内存服务器缓存。 案例要求: 1、安装Redis内存服务器 2、安装Solr全文检索服务器 ...

qixiang_chen的博客 2307

《算法第四版》学习心得一——怎么学算法

 一、算法的两个核心 算法的核心内容实际上有两个: 算法的概念和思路。 算法的编程实现。 两者相互关联影响,缺一不可。 不理解基本概念和思路,就算把实现代码背下来,也无济于事,因为脑袋里依然是一片模糊。理解了概念和思路,不去用代码实现,脑袋里有的只是概念,无法根据真实需求实现解决方案。 二、学算法需要什么基础 首先,必须要有一定的编程语言基础,要理解语言中最基本的概念:数据类型,类,成...

illikang的博客 3909

从Transformer到Mamba:显著性检测领域的计算效率革命(Samba框架深度解析)

本文深入解析了Samba框架在显著性目标检测(Salient Object Detection)领域的创新应用,通过结合Mamba架构的优势,实现了计算效率的革命性提升。Samba框架采用显著性引导的Mamba模块(SGMB)和上下文感知上采样(CAU),有效解决了传统CNN和Transformer的局限性,同时在RGB-D等多模态任务中展现出卓越性能。

mmm90的博客 557

Solr总结

Solr总结   2018年9月2日 Solr是什么 Solr是一个开放源码的的搜索平台,用于构建搜索程序,它的底层是由JAVA语言开发的, 它是建立在Lucene(全文搜索引擎)之上。Solr是一个可扩展、可部署、搜索、存储的引擎,优化以文本为中心的搜索数据,降低用户搜索时对数据库的压力。 为什么要用Solr 用户在进行商品搜索的时候,如果我们只是单纯的去数据库查询信息,效率会非常低,大...

酷萌的汉子 321

MR2数据集实战:5步搞定多模态谣言检测模型训练(附完整代码)

本文详细介绍了如何使用MR2多模态数据集构建高精度谣言检测系统,涵盖环境配置、数据准备、多模态特征工程、模型架构设计、训练调优及部署优化等5个关键步骤。通过双线性融合技术处理文本、图像和网页三模态数据,解决特征对齐和模态冲突等工程难题,并提供完整代码实现和性能优化方案。

weixin_42657024的博客 238

solr实现多core关联查询,跨core类似于sql中的多表关联查询(准确点说其实就是子查询), select 字段 from 表A left join 表B ON = where 条件--

     这篇博客本来是在十月份之前就打算写的,由于最近实在是太忙了,所以一直推到现在,好了废话不多说直接讲正题   用了这么就得solr也知道了solr的适用性在哪,它不适合于异常复杂的数据组合,就比如表与表是多对多的关系,适用于表结构比较简单,或者说查询的数据结构比较简单,而数据量特别的大特别的大,检索的条件也是非常的多,因为这样的东西在使用sql去处理时就可以明显知道,效率时特别的慢,而...

wzhyanshen的博客 4675

三相电路小白必看:正弦量向量表示法保姆级教程(附欧拉公式推导)

本文为电气工程初学者详细解析了三相电路中正弦量的向量表示法,即相量法。通过几何直观和欧拉公式推导,阐明如何将时变正弦量转化为静态复平面向量进行运算,并利用平行四边形法则简化同频正弦量的加减计算。文章结合Python代码进行可视化验证,帮助读者牢固掌握这一分析交流电路的核心工具。

linux6sysadmin的博客 992

北航机器学习期末考试试题2020年春

北航机器学习期末考试试题2020春 看csdn上试题收费,积分还挺高,本着共享的理念,把2020春季ML考试的试题公开,若侵权,立删 前8道题10分,第9题20分 决策树采用ID3算法 对宇宙星球是否适合生存分类 SVM的原理;软间隔、硬间隔;以及对非线性样本点分类 集成学习的原理,以及及串行boosting以及bagging的简单概括 K-means与混合高斯模型的异同以及EM算法的原理,如何计算 马尔可夫随机场最大团;马尔可夫随机场的联合概率分布(势函数表示),贝叶斯网络联合概率分布 PCA主成分基于

qq_43343919的博客 5414

e3mall Day07

搜索系统 ??问题:搜索原理 分片和查询优化!!! solr 基于lucence的服务器 war包??? lucence api??topic01 solr安装:step0:java开发的:需要jdk环境 step1:安装solr solr目录结构 bin/ 启动的容器是jetty 也可以tomcat contrib/ 扩展包 dist/ 目标文件编译出来的目录 war sorj客户

weicao92的博客 1483

基于单目视觉的四旋翼定点降落——如何通过mavros控制pixhawk(二)

    一直拖了这么久没有更新,怪我太懒啦~~~ 今天要特别感谢舒仔仔同学,我的好队友帮我写了这篇博文。这篇文章主要讲了如何通过mavros来控制pixhawk。硬件逻辑是这样子,我们先搞一个odroid(土豪上TX2),再用usb线将odroid与pixhawk连接。所以,odroid发送控制指令来控制pixhawk飞行。pixhawk与外界的通信协议是mavlink。ROS下面有个包叫mavr...

zhengyuxin0507的博客 1万+

面试问题总结

1.mysql的集群问题,若是单机如何备份? 使用SQLyog工具或备份data文件夹 2.查询数据库的版本 mysql命令(mysql --version) oracle命令 select * fromv$version 注意引号不要丢 3.访问redis需要什么技术 jedis 或者界面工具jedisClient 1.0 4.webService(系统间通信技术) 使...

a867901084的博客 75

黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim...)

erase命令单位是擦除组,那么一个擦出组包含多个写块,不同写块有不同信息,主机擦除之前,必须进行确定好这些写块中的信息没有用了。所以通常erase用来擦除整个设备或分区。erase完成后,将erase的区域都要么是全0,要么是全1。那么到底是0还是1呢,根据不同的工艺有所不同,但是别担心,在ecsd[181]中会有说明到底是1还是0。erase命令的作用就是简单的将映射地址范围移动到未映射的地址范围。

黑猫奥利奥的博客 7794

C# 上位机 YOLO 实战:从数据采集到目标识别的全流程拆解

本文以工业螺栓缺陷检测为例,完整拆解了C#上位机+YOLO从数据采集到目标识别的全流程。数据采集:保证图像质量,线程安全采集,必要时归档数据;预处理:适配YOLO模型输入格式,复用对象减少内存开销;推理解析:正确解析张量结果,过滤低置信度目标;落地环节:可视化展示结果,实现工业交互和日志记录。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1451

mysql分库 分页查询

Mysql海量数据分表分库如何列表分页? 1.现在使用ElasticSearch了。基于Lucene的解决方案 2.必须将mysql里的数据写入到类似hbase这样的分布式数据库,查询快。但分页、查询的话,可以在hbase前加一层solr,用于建立数据索引 如何对分库后的数据进行分页查询? yeyingsheng发布于 2015/04/21 10:18 ...

ahi45923的博客 501

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

goalng开发_开发篇

Go 面试,基础知识

qq_46640341的博客 1159

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

开源大数据处理系统/工具大全

查询引擎 一、Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。 Phoenix查询引擎会将SQL...

chuichou2194的博客 3131

从零搭建AI搜索系统,这3类技术组合正在被淘汰:2024 Q2最新Gartner评估矩阵权威解读

提供AI搜索技术选型参考,助你避开过时方案。基于2024 Q2 Gartner评估矩阵,解析向量数据库、传统ES插件、纯LLM重排三类正被淘汰的技术组合,覆盖语义检索、低延迟响应与成本可控场景。聚焦可落地的混合检索架构,值得收藏。

FuncFun的博客 156

企业面试遇到的问题03

面试过程中的问题总结 服务器如何部署的? 压力测试访问量多少? 图片服务器与服务器是如何互相访问通信的? Poi支持版本,实现原理是什么? 基础知识,ArrayList与List的区别?数据库 JQuery浏览器兼容问题是如何解决的? Ajax实现同步? 支付接口是怎么做的? 用户信息存入session中有什么安全隐患吗? 数据库索引的实现原理? Js不同版本都有什么区别? ...

一诺 1061

MySQL8.0学习笔记

SQL基础语法及函数摘要 本文介绍了SQL四大语言类别及其常用语法: DDL(数据定义语言):包括数据库/表的创建、修改、删除等操作,如CREATE/DROP/ALTER语句 DML(数据操作语言):实现数据增删改,如INSERT/UPDATE/DELETE语句 DQL(数据查询语言):SELECT查询语句,支持条件查询、分组、排序、分页等功能 DCL(数据控制语言):管理用户权限,如GRANT/REVOKE语句 还介绍了常用函数: 字符串函数:CONCAT、LOWER/UPPER、LPAD/RPAD等 数

rehumantou的博客 804

mysql-01

数据模型--->关系型数据库(概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库.而所谓二维表,指的是由行和列组成的表,就类似于Excel表格数据,有表头、有列、有行, 还可以通过一列关联另外一个表格中的某一列数据.简单说,基于二维表存储 数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。) SQL--->结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 注释: 单行注释:-- 注释内容 或 # 注释内容 多行注释

idpangpengcheng的博客 2511

mysql自学

目录一、数据库概念二、mysql安装2.1 ubuntu安装mysql2.2 rockylinux安装mysql2.3 windows安装mysql2.4 数据初始化2.5 修改密码2.6 创建用户2.7 忘记密码2.8 默认端口2.9 远程连接三、数据库管理工具Dbeaver四、mysql练习库4.1 world库4.2 sakila库4.3 employees库4.4 自建库导出4.5 全库备份与恢复(all-databases)4.6 查询结果导出五、SQL语言六、五种数据类型6.1 整数型6.2 浮

zhangli2009x的博客 256
上一篇: solr的应用(三)solr在分布式项目中的查询
下一篇: solr的应用(四)商品搜索的过滤查询以及分页显示
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值