当前位置: 首页 > news >正文

商城-学习整理-高级-商城业务-商品上架es(十)

目录

  • 一、商品上架
    • 1、sku在ES中存储模型分析
    • 2、nested数据类型场景
    • 3、构造基本数据(商品上架)
  • 二、首页
    • 1、项目介绍
    • 2、整合thymeleaf(spring-boot下模板引擎)渲染页面
    • 3、页面修改不重启服务器实时更新
    • 4、渲染二级三级数据
  • 三、搭建域名访问环境
    • 1、nginx反向代理配置
    • 2、nginx负债均衡配置
    • 3、多个网卡,nacos注册的服务ip有误,导致服务无法访问

一、商品上架

1、sku在ES中存储模型分析

只有上架的商品才可以在前台展示,不上架的在后台管理系统。上架就是放到ES中。
在这里插入图片描述
1、商品 Mapping
分析:商品上架在 es 中是存 sku 还是 spu?
1)、检索的时候输入名字,是需要按照 sku 的 title 进行全文检索的
2)、检索使用商品规格,规格是 spu 的公共属性,每个 spu 是一样的
3)、按照分类 id 进去的都是直接列出 spu 的,还可以切换。
4)、我们如果将 sku 的全量信息保存到 es 中(包括 spu 属性)就太多量字段了。
5)、我们如果将 spu 以及他包含的 sku 信息保存到 es 中,也可以方便检索。但是 sku 属于
spu 的级联对象,在 es 中需要 nested 模型,这种性能差点。
6)、但是存储与检索我们必须性能折中。
7)、如果我们分拆存储,spu 和 attr 一个索引,sku 单独一个索引可能涉及的问题。
检索商品的名字,如“手机”,对应的 spu 有很多,我们要分析出这些 spu 的所有关联属性,再做一次查询,就必须将所有 spu_id 都发出去。假设有 1 万个数据,数据传输一次就10000*4=4MB;并发情况下假设 1000 检索请求,那就是 4GB 的数据,,传输阻塞时间会很长,业务更加无法继续。
所以,我们如下设计,这样才是文档区别于关系型数据库的地方,宽表设计,不能去考虑数据库范式。
1)、PUT product

product 的 mapping
{ "mappings": { "properties": { "skuId": { "type": "long"
},"spuId": { "type": "keyword"
},"skuTitle": { "type": "text", "analyzer": "ik_smart"
},"skuPrice": { "type": "keyword"
},"skuImg": { "type": "keyword",
"index": false, "doc_values": false
},"saleCount": { "type": "long"
},"hasStock": { "type": "boolean"
},"hotScore": { "type": "long"
},"brandId": { "type": "long"
},"catalogId": { "type": "long"
},"brandName": { "type": "keyword", "index": false, "doc_values": false
},"brandImg": { "type": "keyword", "index": false, "doc_values": false
},"catalogName": { "type": "keyword", "index": false, "doc_values": false
},"attrs": { "type": "nested", "properties": { "attrId": { "type": "long"
},"attrName": { "type": "keyword", "index": false, "doc_values": false
},
"attrValue": { "type": "keyword"
}
}
}
}
}
}
index:
默认 true,如果为 false,表示该字段不会被索引,但是检索结果里面有,但字段本身不能
当做检索条件。
doc_values:
默认 true,设置为 false,表示不可以做排序、聚合以及脚本操作,这样更节省磁盘空间。
还可以通过设定 doc_values 为 true,index 为 false 来让字段不能被搜索但可以用于排序、聚
合以及脚本操作:

2、nested数据类型场景

在这里插入图片描述
https://www.elastic.co/guide/en/elasticsearch/reference/7.5/nested.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、构造基本数据(商品上架)

在SpuInfoController.java中编写上架接口spuUp。
需要远程调用库存系统,看下库存系统是否还有库存。
将上架数据保存到es中。
远程查询库存&泛型结果封装。
在这里插入图片描述
debug进行联调测试。

二、首页

1、项目介绍

整个项目是一个前后分离的项目,前端是需要给我们的后台发送微服务请求,返回相应的数据进行操作即可,包括商城也是一个前后分离的项目来进行开发,但是处于学习的考虑,使用前后分离就会屏蔽掉很多细节,所以最终页面模块代码基本已经写好了,进行服务端的页面渲染式开发,将这些页面放到微服务里面开发组成整个商城系统。
最终整个微服务架构如下:
在这里插入图片描述

用户访问所有请求,先访问nginx,nginx作为反向代理全部转发给网关,网关再路由到各个服务,网关的好处(做统一的鉴权、认证、以及限流),页面可以写到各个微服务里面,引用的静态资源可以放到nginx服务器上,这样就做到了静(静态资源,让nginx返回)动(动态请求)分离,可分担微服务的压力,如果将静态资源也放到微服务里面,请求一个图片也需要微服务的tomcat建立连接处理,再返回,tomcat的并发本来就不高,假如有5000个并发,4000个都是处理图片的,那么只有1000个是真正来进行业务调用和处理的,这样就会让我们的项目没有办法支持高并发的功能。

2、整合thymeleaf(spring-boot下模板引擎)渲染页面

自然化语言,编写的页面,前端可以直接使用,性能稍差,如果在生产环境开启缓存功能,性能也很高。
在product项目下引入spring-boot-starter-thymeleaf,不需要填写版本号,会有spring-boot控制
在这里插入图片描述
在这里插入图片描述

static:放静态资源,将静态资源index放到static下。
templates:将index.html页面放到templates下

在这里插入图片描述
thymeleaf要使用,需要做一个预先的配置(就算不配置,默认启动也可以使用),关闭缓存,开发期间可以看到效果,配置thymeleaf的前缀以及后缀,所有的默认的前缀都是classpath,就是要找所有页面都是到类路径(respurces)下的templates,后缀是.html,相当于我们以后controller返回的数据只要不是json数据,而是一个字符串,按照这个字符串springmvc的视图解析解析字符串,来到我们的页面,前缀就是找templates,后缀就是找.html页面,而且我们的微服务也可以提供接口功能,controller里面都是一个rest接口,所有和web页面有关的,我们再单独放一个包,包模块就要web,然后就重启我们的商品服务,看看页面能不能访问。也可以访问index/css/GL.css静态资源(http://localhost:20001/index/css/GL.css)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
重写访问页面
在这里插入图片描述

找到thymeleaf的官方文档,看下如何使用
https://www.thymeleaf.org/documentation.html
在这里插入图片描述
使用thymeleaf,需要给每一个页面加上名称空间
在这里插入图片描述

3、页面修改不重启服务器实时更新

pom中引入:devtools,修改完页面,ctrl shift F9重新自动编译一下。
在这里插入图片描述

4、渲染二级三级数据

三、搭建域名访问环境

1、nginx反向代理配置

在这里插入图片描述
nginx里面目前放了分词器,远程请求nginx,返回分词器的数据。

在这里插入图片描述

正向与反向对于我们这台电脑来说,如果是帮我们上网的,那么就是正向代理,如果是帮助对方服务器的就是反向代理,比如我们想要访问谷歌,访问不上,我们可以搭建一台代理服务器,我们电脑配置一台代理服务器的地址,以后电脑想访问所有的网址,我们的请求都会由代理服务器帮我们请求谷歌,拿到数据再帮我们返回,那么这个就是正向代理,作用就是隐藏客户端信息,因为我们的请求是发给我们的代理服务器的,由代理服务器转给我们的网络,所以互联网看到所有的访问都是代理服务器的ip。
反向代理对于搭建集群环境很需要,比如我们访问我们的商城,我们的商城由我们的后台集群,我们的集群都要由我们的服务器在内网部署,不可能把服务器的每个外网IP暴漏给外界,这样容易受到攻击,为了能找到内网集群服务器,可以在前面前置一个服务器,这个服务器就叫反向代理,前置一个nginx,这个nginx是一个公网ip,大家都可以访问的,如果我们访问我们公网nginx的服务器,真正的服务在内网中部署,所以由我们的nginx转给我们的内网服务器,这个nginx服务器也是和我们后台服务器搭建在同一个环境里面,只有这个服务器对外暴漏公网IP,屏蔽内部其他集群的信息。

真言商城,我们的客户端访问zhenyanmall,以我本机环境为例,搭建域名访问环境,本机访问zhenyanmall,或者访问www.baidu.com,这个请求会先被网络的DNS进行解析,解析到百度的IP地址到底在哪,然后我们的浏览器就会访问到这个地址对应的内容,就是因为这个域名解析,虽然我们没有购买zhenyanmall这个域名,我们可以在windows的hosts文件里面配置zhenyanmall.com域名对应哪个虚拟机IP地址,比如我们在浏览器里面请求zhenyanmall.com,windows如何知道域名对应哪个IP地址,第一步会先查看系统内部的域名映射规则,如果这个域名已经有映射了,说明这个zhenyanmall在哪个地址,那么浏览器就可以直接去这个地址,网卡带我们直接转过去。第二步,如果系统没有zhenyanmall这个域名映射,那么会去网络上的DNS(114.114.114.114等公共网络域名解析服务器),解析出我们的域名,DNS中保存了哪个域名对应哪个IP地址,再来转到那个IP地址。
因为我们访问zhenyanmall.com,在windows系统内部配置(hosts文件),告诉这个域名在哪,直接来到我们指定的IP地址,就不需要过网络DNS了,由于我们把nginx放到了虚拟机上,因此可以让zhenyanmall.com指定我们虚拟机的地址,完整的域名配置环境。
在这里插入图片描述
每次修改hosts有点麻烦,我们可以使用SwitchHosts管理域名映射,以管理员方式打开,创建zhenyanmall本地方案,记得勾选右下角的对号,应用当前方案。
在这里插入图片描述
我们使用域名访问es集群,能访问到,说明域名环境配置好了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们每一个系统都有对应的域名,全部都是先访问虚拟机的的IP地址,接下来我们要访问虚拟机的nginx,开启虚拟机的nginx
将nginx设为开机自启。
在这里插入图片描述
直接请求域名,发现访问到nginx的index.html文件
在这里插入图片描述
第一步:当我们访问域名的时候,保证第一步访问虚拟机的nginx,接下来还要访问到我们的项目,让我们所有的请求都转给我们的网关,由网关再代转给每一个项目,也可以让nginx转给我们指定的项目,比如访问zhenyanmall.com,现在我们想要用商城的首页作为第一跳转,zhenyanmall的所有请求都转发到http://localhost:20001 端口(就是商品项目,拥有我们首页的内容)。这样做不好,当我们的product部署的有多台的时候,ip和port都不一样,每次我们都得修改nginx,所以需要nginx给我们做反向代理,那么和网关功能就是一样了,所有来自原zhenyanmall.com的请求,都转到商品服务,可以不用去网关,直接转到商品服务,转发到http://localhost:20001 端口。
在这里插入图片描述
nginx装好之后所有的配置都挂载到了/mydata/nginx/下
nginx有一个总配置:nginx.conf
在这里插入图片描述
nginx.conf介绍
在这里插入图片描述
在这里插入图片描述

用户组
工作线程
错误日志的地址
pid文件的位置
最大连接数
http块:支持的mime类型,默认返回的构造数据类型,日志格式,访问日志路径,以及是否开启压缩,做负载均衡upstream上下游信息,http的server块,
include /etc/nginx/conf.d/*.conf; 包含所有的conf配置,只要是conf.d下的文件都会被合并到nginx.conf中,这样一个文件不会很大,也会很清晰,看下默认配置default.conf
在这里插入图片描述

一个server块,配置虚拟主机相关的信息,监听80端口,server name 利用域名配置的主机,监听域名下的80端口,包括一些访问日志#access_log /var/log/nginx/log/host.access.log main;,location /的意思是,这个域名下的所有请求都可以在 root /usr/share/nginx/html;根文件夹找,包括默认的首页 index index.html index.htm;,还能配置一些404页面。500页面。

我们现在想做的事就是,希望把源自与zhenyanmall.com的请求转给我们的商品服务,把default复制一份,编辑zhenyanmall.conf
在这里插入图片描述
修改server name 为zhenyanmall.com 意思是这个模块是监听来自zhenyanmall.com下的80端口,

在这里插入图片描述
请求zhenyanmall.com这个域名,是nginx的服务器地址,相当于把这个请求交给nginx,因为server name配置的是zhenyanmall.com,nginx会拿到请求的host进行匹配,看看是不是zhenyanmall.com的,类似于网关,将location下的root和index的配置删掉,添加proxy_pass(代理通过),就是代理给谁,把我们的请求再转发给(因为目前是开发环境,商品服务在我的机器,没在虚拟机,相当于又绕了一圈转回来)商品服务,目前是开发环境因此就是自己的机器,输入ipconfig,查看自己的ip地址,192.168.56.1虚拟网卡,192.168.137.1本机地址,172.28.65.75公网地址,配置这三个任何都可以,最好配置192.168.56.1,因为公网地址切换网络会变化
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
重启nginx,再次请求,页面就变成了商城的首页了
在这里插入图片描述
可以看到域名访问效果了。
但是还有一个问题,如果是分布式的情况下,商品系统有很多,不只一个,那我们每次都需要修改nginx的配置,每次修改就麻烦了,所以应该将nginx配置zhenyanmall.com这个请求直接给我们代理网关,由网关再自动转发给我们的服务,网关就能动态的发现哪些应用上线下线,以及负债均衡。

2、nginx负债均衡配置

http://nginx.org/en/index.html
在这里插入图片描述
在这里插入图片描述

在总的nginx.conf配置上游服务器配置网关,因为只配置了一个网关,只需要写一个即可。
在这里插入图片描述
修改zhenyanmall.conf,监听80端口的所有请求,代理的话不直接代理给商品服务了,直接代理给网关,网关上游服务器的名字为zhenyanmall。
在这里插入图片描述
重启nginx
在这里插入图片描述

然后请求zhenyanmall.com,报404,这是因为网关没有配置,网关也需要帮我们转到指定的服务,在网关添加路由规则,负债均衡给商品服务,以前是按照路径进行映射,现在按照host进行映射(参照网关对应的文档),只要是zhenyanmall.com下的请求,都转给商品服务。

在这里插入图片描述

在这里插入图片描述

然后重启网关服务。请求http://zhenyanmall.com/,还是404,是因为nginx代理给网关时,会丢失请求的host信息(会丢掉很多信息),我们用到什么需要加什么,需要配置nginx不要丢掉这些,我们需要修改nginx的路径映射规则location,加上proxy_set_header Host $host取出当前请求的真正的host值
在这里插入图片描述
在这里插入图片描述
重启nginx。

在这里插入图片描述
http://zhenyanmall.com/api/product/attrattrgrouprelation/list
也可以访问成功。

域名映射效果:
请求接口:zhenyanmall.com
请求页面:zhenyanmall.com
都可以使用域名,nginx直接代理给网关,网关判断,通过网关转发请求。如果是/api/**,转交给对应的服务器,如果是满足域名,转交给对应的服务。

3、多个网卡,nacos注册的服务ip有误,导致服务无法访问

因为电脑装了虚拟机,所以存在多块网卡,服务注册到nacos时默认使用了虚拟机的网卡,导致网关无法将请求路由到正确的服务上。

nacos查看服务的IP地址如下:
在这里插入图片描述
实际想使用的IP地址是 127.0.0.1 ,即我本机的IP地址,因为开发环境服务是运行在本机的。

解决办法,直接在nacos的配置里加上ip这一项属性,将注册的服务IP直接设置为想要的IP地址,然后重启服务即可。

spring:cloud:nacos:discovery:server-addr: localhost:8848ip: 127.0.0.1

修改完成重启服务之后在nacos查看的地址如下:

在这里插入图片描述

相关文章:

商城-学习整理-高级-商城业务-商品上架es(十)

目录 一、商品上架1、sku在ES中存储模型分析2、nested数据类型场景3、构造基本数据(商品上架) 二、首页1、项目介绍2、整合thymeleaf(spring-boot下模板引擎)渲染页面3、页面修改不重启服务器实时更新4、渲染二级三级数据 三、搭建…...

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)

生态流量(Ecological Flow, EF) 是指维持河道内生态环境所需要的水流流量。生态流量计算方法众多,主要分为水文学方法、栖息地模拟法、水力学方法、整体法等,各方法多用于计算维持河道生态平衡的最小生态流量(Minimum …...

特斯拉Model 3的七年狂飙

‍ 作者 | 张祥威 编辑 | 德新 发布一周拿下32万张订单,之后用时五年,交付量突破100万辆。粗略计算,自2016年发布至今,特斯拉Model 3已交付超150万辆。 放眼新能源赛道,如此战绩 别无二家。 Model 3踩中纯电动车的…...

物流签收异常,财务对账复杂,怎么解决?

电子商务行业的蓬勃发展为人们的购物体验带来了巨大的便利,然而,随之而来的物流签收异常和财务对账复杂问题却给电商企业的财务部门带来了一系列困扰。 每天大量的订单和货物流转,不可避免地导致了物流签收数据与财务记录之间的不一致和差异…...

docker之镜像与数据卷

镜像 简介 1.镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于环境开发的软件,他包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量、配置文件 2.将所有的应用和环境11,直接打包成docker镜像&…...

服务器为什么会被攻击?43.248.186.x

进入信息时代,各种行业对数据的安全和技术要求也越来越高,同时也遇到了各种各样的服务器故障问题,但是网络攻击才是最大的伤害,在这上面造成了企业不必要的损失,那么服务器为什么会被攻击,这里给大家讲解一下服务器被攻击有哪几种情况 一、服…...

文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题

四、请用go语言,证明:RANDOMIZED-QUICKSORT 期望运行时间是 Ω(nlgn)。 文心一言: 首先,为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n),我们需要证明在最坏的情况下,该算法的运行时间是O(nlg n)。然后&…...

整理mongodb文档:索引

个人博客 整理mongodb文档:索引 个人博客,求关注,有问题的地方欢迎指出,觉得讲解的繁琐的也请指出 文章概叙 本文主要还是在shell下的操作。让大家了解下mongodb中index的用途,基本的索引的新增、查看、删除等,最后…...

EPICS libCom库(4) -- epicsTimer

epicsTimer.h描述了一个C和C timer功能。 1 C接口 1.1 epicsTimerNotify和epicsTimer /* 使用一个timer的代码必须实现epicsTimerNotify */ class LIBCOM_API epicsTimerNotify { public:enum restart_t { noRestart, restart };class expireStatus {public:LIBCOM_API expir…...

成都大运会,保障大型活动无线电安全需要…

成都大运会 7月28日,备受关注的第31届世界大学生夏季运动会在成都正式开幕。据悉,这是全球首个5G加持的智慧大运会,也是众多成熟信息技术的综合“应用场”。使用基于5G三千兆、云网、8K超高清视频等技术,在比赛现场搭建多路8K摄像…...

【Spring Boot】构建RESTful服务 — 实战:实现Web API版本控制

实战:实现Web API版本控制 前面介绍了Spring Boot如何构建RESTful风格的Web应用接口以及使用Swagger生成API的接口文档。如果业务需求变更,Web API功能发生变化时应该如何处理呢?可以通过Web API的版本控制来处理。 1.为什么进行版本控制 …...

6.Web后端开发【SpringBoot入门】

文章目录 1 SpringBoot快速入门1.1 Web分析 2. HTTP协议2.1 HTTP-概述2.1.1 介绍2.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 常见的相应状态码 3 WEB服务器3.1 服务器概述 1 SpringBoot快速入门 Spring的官网Spring Boot 可以帮助我们非常…...

[ubuntu]ubuntu18.04使用自带共享桌面实现vncserver连接

vncserver有很多方法比如你安装vnc4server,tightvncserver,x11vnc等都可以实现vnc局域网连接,今天使用系统共享桌面设置vnc连接 Ubuntu开启远程桌面 Ubuntu18.04使用gnome桌面环境,系统自带屏幕共享和远程登录功能,默认使用的是vino作为VNC…...

docker启用cgroup v2

要求 本人的操作系统是kali,基于debian docker info如果你这里是2那么说明启用了,如果是1,那么就未启用 对于Docker来说,Cgroups v2的使用需要满足以下条件: Linux内核版本在4.15以上。 uname -r 系统已经启用Cgro…...

Java课题笔记~ Axios

Axios 对原生的AJAX进行封装&#xff0c;简化书写。 Axios官网是&#xff1a;https://www.axios-http.cn 2.1 基本使用 axios 使用是比较简单的&#xff0c;分为以下两步&#xff1a; 引入 axios 的 js 文件 <script src"js/axios-0.18.0.js"></script…...

ip地址和地理位置有关系吗

在互联网时代&#xff0c;网络已经成为了人们生活中不可或缺的一部分。而在网络通信中&#xff0c;IP地址扮演着非常重要的角色。那么&#xff0c;IP地址和地理位置之间是否有关系呢&#xff1f;虎观代理小二二将从以下几个方面进行探讨。 一、IP地址和地理位置的基本概念 首…...

mac指定node版本 mac node版本降级 mac切换node版本

本文解决问题&#xff1a; mac指定node版本 mac切换node版本 mac node版本降级 第一步 进行nvm 安装操作 brew install nvm 执行 nvm --version nvm --version 出现zsh: command not found: nvm问题去进行配置第二步 nvm配置 1.输入: vim ~/.bash_profile 点击 i 进行插入…...

C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一)

首先常规的账户进程是没办法获取登录界面的信息的&#xff0c;因为登录界面已经不在某个账户下了&#xff0c;登录界面显示了每一个账户的切换。所以得使用System权限的进程。 那么Windows系统究竟是怎么将登录界面与用户桌面隔离开的呢&#xff1f;首先先通过一些Windows操作系…...

因果推断(五)基于谷歌框架Causal Impact的因果推断

因果推断&#xff08;五&#xff09;基于谷歌框架Causal Impact的因果推断 除了传统的因果推断外&#xff0c;还有一些机器学习框架可以使用&#xff0c;本文介绍来自谷歌框架的Causal Impact。该方法基于合成控制法的原理&#xff0c;利用多个对照组数据来构建贝叶斯结构时间…...

VR全景加盟项目如何开展?如何共赢VR时代红利?

VR全景作为一个新兴蓝海项目&#xff0c;相信有着很多人刚接触VR行业的时候都会有这样的疑问&#xff1a;VR全景加盟后项目如何开展&#xff1f;今天&#xff0c;我们就从项目运营的三个阶段为大家讲解。 一、了解项目时 目前VR全景已经被应用到各行各业中去&#xff0c;学校、…...

Win10+anaconda+CUDA+pytorch+vscode配置

Win10anacondaCUDApytorchvscode配置 1.安装anaconda2.安装CUDA确认CUDA版本确认CUDA和pytorch版本安装CUDA 3.安装cudnn4.安装Pytorch5.vscode配置安装VScodevscode配置pytorch环境 1.安装anaconda 官网https://www.anaconda.com 下载安装&#xff0c;路径全英文然后记得有一…...

vue-router在vue2/3区别

构建选项区别 vue2-router const router-new VueRouter({mode:history,base:_name,})vue-next-router import { createRouter,createWebHistory} from vue-next-router const routercreateRouter({history:createHistory(/) })在上述代码中我们发现,vue2中的构建选项mode和ba…...

Apache Doris 入门教程33:统计信息

统计信息 统计信息简介​ Doris 查询优化器使用统计信息来确定查询最有效的执行计划。Doris 维护的统计信息包括表级别的统计信息和列级别的统计信息。 表统计信息&#xff1a; 信息描述row_count表的行数data_size表的⼤⼩&#xff08;单位 byte&#xff09;update_rows收…...

有效需求的特征

如何区分优秀的软件需求和软件需求规格说明书&#xff08;SRS&#xff09;与可能导致问题的需求和规格说明书&#xff1f;在这篇文章中&#xff0c;我们将首先讨论单个需求应该具有的几种不同特性。然后&#xff0c;我们将讨论成功的SRS整体应具有的理想特征。 1.有效需求的特…...

基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计

一、系统方案 1、本设计默认采用STC89C52单片机&#xff0c;如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值&#xff0c;通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…...

Spring Data JPA的@Entity注解

一、示例说明 rules\CouponTypeConverter.java Converter public class CouponTypeConverterimplements AttributeConverter<CouponType, String> {Overridepublic String convertToDatabaseColumn(CouponType couponCategory) {return couponCategory.getCode();}Overr…...

CANoe panel中,Path Dialog如何保存选择的文件路径

这里写目录标题 Path Dialog控件的设置系统变量和环境变量 Path Dialog控件的设置 过滤加载的文件类型 填写格式为&#xff1a;Hex file |.hex 其中Hex file为自定义name&#xff0c;.hex为你想识别的文件类型 系统变量和环境变量 系统变量&#xff1a;在canoe的Environmen…...

关于es中索引,倒排索引的理解

下面是我查询进行理解的东西 也就是说我们ES中的索引就相当于我们mysql中的数据库表&#xff0c;索引库就相当于我们的数据库&#xff0c;我们按照mapping规则会根据相应的字段&#xff08;index为true默认&#xff09;来创建倒排索引&#xff0c;这个倒排索引就相当于我们索引…...

k8s service (二)

K8s service (二) Endpoint Endpoint是kubernetes中的一个资源对象&#xff0c;存储在etcd中&#xff0c;用来记录一个service对应的所有pod访问地址&#xff0c;它是根据service匹配文件中selector描述产生的。 一个Service由一组Pod组成&#xff0c;这些Pod通过Endpoints…...

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…...

SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

SSM框架的学习与应用(Spring Spring MVC MyBatis)-Java EE企业级应用开发学习记录&#xff08;第二天&#xff09;Mybatis的深入学习&#xff08;增删改查的操作&#xff09; 上一篇我们的项目搭建好了&#xff0c;也写了简答的Junit测试类进行测试&#xff0c;可以正确映射…...

学习笔记:Opencv实现限制对比度得自适应直方图均衡CLAHE

2023.8.19 为了完成深度学习的进阶&#xff0c;得学习学习传统算法拓展知识面&#xff0c;记录自己的学习心得 CLAHE百科&#xff1a; 一种限制对比度自适应直方图均衡化方法&#xff0c;采用了限制直方图分布的方法和加速的插值方法 clahe&#xff08;限制对比度自适应直方图…...

R语言处理缺失数据(1)-mice

#清空 rm(listls()) gc()###生成模拟数据### #生成100个随机数 library(magrittr) set.seed(1) asd<-rnorm(100, mean 60, sd 10) %>% round #平均60&#xff0c;标准差10 #将10个数随机替换为NA NA_positions <- sample(1:100, 10) asd[NA_positions] <- NA #转…...

SpringBoot自动配置原理

Spring Boot 的自动配置可以根据添加的jar依赖&#xff0c;自动配置 Spring Boot 应用程序。例如&#xff0c;我们想要使用Redis&#xff0c;直接在POM文件中增加spring-boot-starter-data-redis依赖&#xff0c;然后我们配置下连接信息就可以使用了。 那么Spring Boot 是如何…...

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 五)

管理应用拥有的状态概述 LocalStorage&#xff1a;页面级UI状态存储 LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility内&#xff0c;页面间共享状态。 本文仅介绍LocalStora…...

Java基础篇——反射枚举

反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举B友:http…...

每日一学——案例难点Windows配置

在Windows上配置DNS服务器有几个步骤&#xff1a; 步骤1&#xff1a;打开网络连接设置 在任务栏上右键单击网络图标&#xff0c;并选择“打开网络和Internet设置”。 在新窗口中&#xff0c;选择“更改适配器选项”。 在打开的窗口中&#xff0c;找到正在使用的网络适配器&a…...

2023.8 - java - 运算符

Java 运算符 算术运算符关系运算符位运算符逻辑运算符赋值运算符其他运算符 算术运算符 算术运算符用在数学表达式中&#xff0c;它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。 表格中的实例假设整数变量A的值为10&#xff0c;变量B的值为20&#xff1a; …...

推荐三款Scrum敏捷项目管理工具/敏捷管理实践

免费版敏捷工具推荐&#xff1a; Leangoo领歌 Leangoo领歌是ScrumCN&#xff08;scrum.cn&#xff09;旗下的一款永久免费的专业敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、缺陷管理、统计度量等。包括小…...

WARNING: undefined behavior - version of Delve is too old for Go version

在更新了 go 版本后&#xff0c;使用 goland 进行调试会报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.5 (maximum supported version 1.19)这是因为 go 的版本升级后&#xff0c;相对 dlv 的版本就低了。 所以解决办法就是升级对应的…...

https非对称加密算法

非对称加密算法原理 在客户端公开公钥&#xff0c;服务端保存私钥 1.客户端第一次请求先请求443端口&#xff0c;从443端口下载公钥。 2.客户端将数据进行公钥算法进行加密&#xff0c;将秘文发送到服务端 服务端收到秘文后&#xff0c;通过私钥算法进行解密得到明文数据。…...

“深入探索JVM:Java虚拟机背后的奥秘“

标题&#xff1a;深入探索JVM&#xff1a;Java虚拟机背后的奥秘 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的内部工作原理和关键组成部分&#xff0c;揭示JVM背后的奥秘。通过对类加载机制、内存管理、垃圾回收、即时编译等方面的详细介绍&#x…...

树莓派系统入门教程(三)—— 使用Windows上的VSCode远程连接树莓派进行Python开发

树莓派系统入门教程&#xff08;三&#xff09;—— 使用Windows上的VSCode远程连接树莓派进行Python开发 1. 安装VSCode和SSH扩展2. SSH连接配置3. 连接到树莓派4. 运行Python程序5. 建议和注意事项 很多开发者更喜欢在大屏幕和强大的开发环境中编写代码&#xff0c;但同时他们…...

如何使用HTML5新增的标签来优化SEO?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用HTML5新增的标签来优化SEO&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对…...

LVS之keepalived

1、keepalived 概述 总结&#xff1a;Keepalived 软件就是通过VRRP协议来实现高可用功能。 应用场景&#xff1a;企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险 单点故障一旦发生&#xff0c;企业服务将发生中断&#xff0c;造成极大的危害 VRRP通信原理&…...

Linux(入门篇)

Linux&#xff08;入门篇&#xff09; Linux概述Linux是什么Linux的诞生Linux和Unix的渊源GNU/LinuxLinux的发行版Linux VS Windows Linux概述 Linux是什么 Linux是一个操作系统(OS) Linux的诞生 作者&#xff1a;李纳斯托瓦兹&#xff08;git也是他开发的&#x1f602;&am…...

如何构造不包含字母和数字的webshell

利用不含字母与数字进行绕过 1.异或进行绕过 2.取反进行绕过 3.利用php语法绕过 利用不含字母与数字进行绕过 基本代码运行思路理解 <?php echo "A"^""; ?> 运行结果为! 我们可以看到&#xff0c;输出的结果是字符"!"。之所以会…...

springboot(JavaCV )实现视频截取第N帧并保存图片

springboot&#xff08;JavaCV &#xff09;实现视频截取第N帧并保存图片 现在视频网站展示列表都是用img标签展示的&#xff0c;动图用的是gif&#xff0c;但是我们上传视频时并没有视屏封面&#xff0c;就这需要上传到服务器时自动生成封面并保存 本博客使用jar包的方式实现…...

Linux面试笔试题(5)

79、下列工具中可以直接连接mysql的工具有【c 】。 A.xhsell B.plsql C.navicat D.以上都不是 Navicat 是一套可创建多个连接的数据库开发工具&#xff0c; 让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、 SQL Server、Oracle、PostgreSQL和 SQLite 。它与…...

WordPress文章:创建和优化您的网站内容

WordPress是一种流行的内容管理系统&#xff08;CMS&#xff09;&#xff0c;用于创建和管理网站。无论您是个人博客作者、企业网站管理员还是电子商务店主&#xff0c;WordPress都是一个强大而灵活的平台&#xff0c;可帮助您展示和传达您的信息。本文将为您提供一些关于创建和…...