店铺营业状态设置(day05)
Redis入门
Redis简介
Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。

Redis是一个基于内存的 key-value 结构数据库。
主要特点:
1、基于内存存储,读写性能高
2、适合存储热点数据(热点商品、资讯、新闻)
3、企业应用广泛
官网:https://redis.io
中文网:Redis中文网
Redis 是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到 100000+ 的 QPS(每秒内查询次数)。它存储的 value 类型比较丰富,也被称为结构化的 NoSql 数据库。
NoSql(Not Only SQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充。
关系型数据库(RDBMS):
- Mysql
- Oracle
- DB2
- SQLServer
非关系型数据库(NoSql):
- Redis
- Mongo db
- MemCached
Redis下载与安装
Redis 安装包分为 windows 版和 Linux 版:
Windows版下载地址:https://github.com/microsoftarchive/redis/releases
Linux版下载地址: Index of /releases/
Redis 安装
Redis的Windows版属于绿色软件,直接解压即可使用,解压后目录结构如下:

Redis服务启动与停止
服务启动命令:redis-server.exe redis.windows.conf
Redis 服务默认端口号为 6379 ,通过快捷键 Ctrl + C 即可停止 Redis 服务
客户端连接命令:redis-cli.exe
通过redis-cli.exe命令默认连接的是本地的redis服务,并且使用默认6379端口。也可以通过指定如下参数连接:
-h ip地址
-p 端口号
-a 密码(如果需要)
默认无密码
设置Redis服务密码,修改redis.windows.conf
注意:• 修改密码后需要重启 Redis 服务才能生效• Redis 配置文件中 # 表示注释
Redis客户端图形工具:
Redis数据类型
5种常用数据类型介绍
Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:
• 字符串 string• 哈希 hash• 列表 list• 集合 set• 有序集合 sorted set / zset
各种数据类型的特点
各种数据类型的特点
• 字符串(string):普通字符串, Redis 中最简单的数据类型• 哈希(hash):也叫散列,类似于 Java 中的 HashMap 结构• 列表(list):按照插入顺序排序,可以有重复元素,类似于 Java 中的 LinkedList• 集合(set):无序集合,没有重复元素,类似于 Java 中的 HashSet• 有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素

Redis常用命令
字符串操作命令
Redis 字符串类型常用命令:
- SET key value 设置指定key的值
- GET key 获取指定key的值
- SETEX key seconds value 设置指定key的值,并将 key 的过期时间设为 seconds 秒
- SETNX key value 只有在 key 不存在时设置 key 的值
哈希操作命令
Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象,常用命令:
- HSET key field value 将哈希表 key 中的字段 field 的值设为 value
- HGET key field 获取存储在哈希表中指定字段的值
- HDEL key field 删除存储在哈希表中的指定字段
- HKEYS key 获取哈希表中所有字段
- HVALS key 获取哈希表中所有值
列表操作命令
Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令:
- LPUSH key value1 [value2] 将一个或多个值插入到列表头部
- LRANGE key start stop 获取列表指定范围内的元素
- RPOP key 移除并获取列表最后一个元素
- LLEN key 获取列表长度
- BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超 时或发现可弹出元素为止
从左到右的插入
集合操作命令
Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:
- SADD key member1 [member2] 向集合添加一个或多个成员
- SMEMBERS key 返回集合中的所有成员
- SCARD key 获取集合的成员数
- SINTER key1 [key2] 返回给定所有集合的交集
- SUNION key1 [key2] 返回所有给定集合的并集
- SREM key member1 [member2] 移除集合中一个或多个成员
有序集合操作命令
Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:
- ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员
- ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员
- ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
- ZREM key member [member …] 移除有序集合中的一个或多个成员

通用命令
Redis的通用命令是不分数据类型的,都可以使用的命令:
- KEYS pattern 查找所有符合给定模式( pattern)的 key
- EXISTS key 检查给定 key 是否存在
- TYPE key 返回 key 所储存的值的类型
- DEL key 该命令用于在 key 存在是删除 key

在Java中操作Redis
Redis的Java客户端
Redis 的 Java 客户端很多,常用的几种:
- Jedis
- Lettuce
- Spring Data Redis
Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。
在 Spring 项目中,可以使用Spring Data Redis来简化操作。
Spring Data Redis使用方式
操作步骤:
- 导入Spring Data Redis 的maven坐标
- 配置Redis数据源
- 编写配置类,创建RedisTemplate对象
- 通过RedisTemplate对象操作Redis
解释说明:
database:指定使用Redis的哪个数据库,Redis服务启动后默认有16个数据库,编号分别是从0到15。当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的 key 序列化器为 JdkSerializationRedisSerializer,导致我们存到 Redis 中后的数据和原始数据有差别,故设置为 StringRedisSerializer 序列化器。
通过RedisTemplate对象操作Redis
1、导入Spring Data Redis 的maven坐标
2、配置数据源:
3、 编写配置类,创建RedisTemplate对象
package com.sky.config;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration @Slf4j public class RedisConfiguration {@Beanpublic RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){log.info("开始创建redis模板类...");RedisTemplate redisTemplate = new RedisTemplate();//设置redis的连接工厂对象redisTemplate.setConnectionFactory(redisConnectionFactory);// 设置Key的序列化器,默认为JdkSerializationRedisSerializerredisTemplate.setKeySerializer(new StringRedisSerializer());return redisTemplate;} }4、 通过RedisTemplate对象操作Redis
package com.sky.test;import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate;/*** @author 石头* @version 1.0*/ @SpringBootTest public class SpringDataRedisTest {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testRedisTemplate(){System.out.println(redisTemplate);} }
RedisTemplate 针对大量api进行了归类封装,将同一数据类型的操作封装为对应的Operation接口,具体分类如下:
• ValueOperations: s tring数据操作• SetOperations:set类型数据操作• ZSetOperations:zset类型数据操作• HashOperations:hash类型的数据操作• ListOperations:list类型的数据操作
@Testpublic void testRedisTemplate(){System.out.println(redisTemplate);//string数据操作ValueOperations valueOperations = redisTemplate.opsForValue();//hash类型的数据操作HashOperations hashOperations = redisTemplate.opsForHash();//list类型的数据操作ListOperations listOperations = redisTemplate.opsForList();//set类型数据操作SetOperations setOperations = redisTemplate.opsForSet();//zset类型数据操作ZSetOperations zSetOperations = redisTemplate.opsForZSet();}
操作常见类型数据
1). 操作字符串类型数据
/*** 操作字符串类型的数据*/@Testpublic void testString(){// set get setex setnxredisTemplate.opsForValue().set("city","成都");String city = (String)redisTemplate.opsForValue().get("city");System.out.println(city);//设置有效期redisTemplate.opsForValue().set("code", "1234",3, TimeUnit.MINUTES);//SETNX key value 只有在 key 不存在时设置 key 的值redisTemplate.opsForValue().setIfAbsent("lock","22");redisTemplate.opsForValue().setIfAbsent("lock","1");}

2). 操作哈希类型数据
/*** 操作哈希表中的数据*/@Testpublic void testHash(){// hset hget hdel hkeys hvalsHashOperations hashOperations = redisTemplate.opsForHash();//HSET key field value 将哈希表 key 中的字段 field 的值设为 valuehashOperations.put("ren","name","tom");hashOperations.put("ren","age","18");//HGET key field 获取存储在哈希表中指定字段的值String name = (String)hashOperations.get("ren","name");System.out.println(name);//HKEYS key 获取哈希表中所有字段Set keys = hashOperations.keys("ren");System.out.println(keys);//HVALS key 获取哈希表中所有值List values = hashOperations.values("ren");System.out.println(values);//HDEL key field 删除存储在哈希表中的指定字段hashOperations.delete("ren","name");System.out.println(hashOperations.values("ren"));}

3). 操作列表类型数据
/*** 操作列表类型的数据*/@Testpublic void testList(){//lpush lrange rpop llenListOperations listOperations = redisTemplate.opsForList();//LPUSH key value1 [value2] 将一个或多个值插入到列表头部listOperations.leftPushAll("mylist","a","b","c");listOperations.leftPush("mylist","d");//LRANGE key start stop 获取列表指定范围内的元素List mylist = listOperations.range("mylist", 0, -1);System.out.println(mylist);//RPOP key 移除并获取列表最后一个元素listOperations.rightPop("mylist");//LLEN key 获取列表长度Long size = listOperations.size("mylist");System.out.println(size);}

4). 操作集合类型数据
/*** 操作集合类型的数据*/@Testpublic void testSet(){//sadd smembers scard sinter sunion sremSetOperations setOperations = redisTemplate.opsForSet();//SADD key member1 [member2] 向集合添加一个或多个成员setOperations.add("set1","a","b","c","d");setOperations.add("set2","a","b","x","y");//SMEMBERS key 返回集合中的所有成员Set members = setOperations.members("set1");System.out.println(members);//SCARD key 获取集合的成员数Long size = setOperations.size("set1");System.out.println(size);//sinterSet intersect = setOperations.intersect("set1", "set2");System.out.println(intersect);//sunionSet union = setOperations.union("set1", "set2");System.out.println(union);//sremsetOperations.remove("set1","a","b");}

5). 操作有序集合类型数据
/*** 操作有序集合类型的数据*/@Testpublic void testZset(){//zadd zrange zincrby zremZSetOperations zSetOperations = redisTemplate.opsForZSet();//zaddzSetOperations.add("zset1","a",10);zSetOperations.add("zset1","b",12);zSetOperations.add("zset1","c",9);//zrangeSet zset1 = zSetOperations.range("zset1", 0, -1);System.out.println(zset1);//zincrby 有序集合中对指定成员的分数加上增量 incrementzSetOperations.incrementScore("zset1","c",10);//zrem 移除有序集合中的一个或多个成员zSetOperations.remove("zset1","a","b");}
6). 通用命令操作
/*** 通用命令操作*/@Testpublic void testCommon(){//keys exists type del//显示所有的keysSet keys = redisTemplate.keys("*");System.out.println(keys);//检查给定 key 是否存在Boolean name = redisTemplate.hasKey("name");Boolean set1 = redisTemplate.hasKey("set1");// 返回 key 所储存的值的类型for (Object key : keys) {DataType type = redisTemplate.type(key);System.out.println(type.name());}// 该命令用于在 key 存在是删除 keyredisTemplate.delete("mylist");}
店铺营业状态设置
需求分析和设计
产品原型:


接口设计:
接口设计:
• 设置营业状态• 管理端查询营业状态• 用户端查询营业状态
设置营业状态
管理端查询营业状态
用户端查询营业状态
本项目约定:
- 管理端 发出的请求,统一使用 /admin 作为前缀
- 用户端 发出的请求,统一使用 /user 作为前缀
营业状态数据存储方式:基于Redis的字符串来进行存储
约定:1表示营业 0表示打烊
代码开发
注意用户端和服务端的Controller不要重名,因为sprintboot的bean对象默认是小写名

解决Controller的bean对象重新命名:

管理端 查询营业状态 设置营业状态
package com.sky.controller.admin;import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;/*** @author 石头* @version 1.0*/
@RestController("adminShopController")
@Slf4j
@RequestMapping("/admin/shop")
@Api(tags = "商家店铺相关的接口")
public class ShopController {public static final String KEY = "SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 设置店铺营业状态* @param status* @return*/@PutMapping("/{status}")@ApiOperation("商家设置店铺营业状态")public Result<String> setStatus(@PathVariable Integer status) {log.info("设置营业状态为:{}", status == 1 ? "营业中" : "打烊中");redisTemplate.opsForValue().set(KEY, status);return Result.success();}/*** 查询店铺营业状态** @return*/@GetMapping("/status")@ApiOperation("商家查询店铺营业状态")public Result<Integer> getStatus() {Integer status = (Integer) redisTemplate.opsForValue().get(KEY);log.info("查询店铺营业状态为:{}", status == 1 ? "营业中" : "打烊中");return Result.success(status);}
}
用户端查询营业状态
package com.sky.controller.user;import com.sky.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;/*** @author 石头* @version 1.0*/@RestController("userShopController")
@Slf4j
@RequestMapping("/user/shop")
@Api(tags = "用户店铺相关的接口")
public class ShopController {public static final String KEY = "SHOP_STATUS";@Autowiredprivate RedisTemplate redisTemplate;/*** 查询店铺营业状态** @return*/@GetMapping("/status")@ApiOperation("用户查询店铺营业状态")public Result<Integer> getStatus() {Integer status = (Integer) redisTemplate.opsForValue().get(KEY);log.info("查询店铺营业状态为:{}", status == 1 ? "营业中" : "打烊中");return Result.success(status);}
}
功能测试
在上述接口文档测试中,管理端和用户端的接口放在一起,不方便区分

接下来,我们要实现管理端和用户端接口进行区分。
在 WebMvcConfiguration.java 中,
分别扫描 “com.sky.controller.admin” 和 “com.sky.controller.user” 这两个包。
/*** 通过knife4j生成接口文档* @return*/@Beanpublic Docket docket1() {log.info("准备生成接口文档....");ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("管理端接口").apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin")).paths(PathSelectors.any()).build();return docket;}@Beanpublic Docket docket2() {log.info("准备生成接口文档....");ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("用户端接口").apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.user")).paths(PathSelectors.any()).build();return docket;}

上一节:
套餐管理模块实战(day04)-CSDN博客
下一节:
微信登录、商品浏览(day06)上-CSDN博客
相关文章:
店铺营业状态设置(day05)
Redis入门 Redis简介 Redis 是一个基于内存的 key-value 结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 Redis是一个基于内存的 key-value 结构数据库。 主要特点: 1、基于内存存储,读写性能高 2、适合存储热点数据(热点…...
游戏引擎学习第84天
仓库:https://gitee.com/mrxiao_com/2d_game_2 我们正在试图弄清楚如何完成我们的世界构建 上周做了一些偏离计划的工作,开发了一个小型的背景位图合成工具,这个工具做得还不错,虽然是临时拼凑的,但验证了背景构建的思路。这个过…...
快手SDK接入错误处理经验总结(WebGL方案)
1、打包时提示Assets\WebGLTemplates\ks路径下未找到Index.html文件错误 处理方法:直接使用Unity默认模板下的Index.html文件即可 文件所在路径:Unity安装路径\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates\Default 参考图&a…...
C语言 for 循环:解谜数学,玩转生活!
放在最前面的 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…...
Node.js 与 JavaScript 是什么关系
JavaScript 是一种编程语言,而 Node.js 是 JavaScript 的一个运行环境,它们在不同的环境中使用,具有一些共同的语言基础,但也有各自独特的 API 和模块,共同推动着 JavaScript 在前后端开发中的广泛应用。 一、基础语言…...
Java 大视界 -- Java 大数据性能监控与调优:全链路性能分析与优化(十五)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
深入Spring Boot:自定义Starter开发与实践
引言 Spring Boot通过其强大的自动配置机制和丰富的Starter模块,极大地简化了Spring应用的开发过程。Starter模块封装了一组相关的依赖和配置,使得开发者可以通过简单的依赖引入,快速启用特定的功能。然而,除了使用Spring Boot提…...
React 中hooks之useTransition使用总结
目录 概述基本用法使用场景最佳实践注意事项 概述 什么是 useTransition? useTransition 是 React 18 引入的新 Hook,用于标记非紧急的状态更新。它允许组件在状态转换期间保持响应,通过将某些更新标记为"过渡"来推迟它们的渲染。 主要特…...
怎样使用树莓派自己搭建一套ADS-B信号接收系统
0 我们知道,ADS-B全称广播式自动相关监视系统,其实就是飞机发出的广播信号,用明码来对外发送自己的位置、高度、速度、航向等信息,是公开信息。连续接收到一架飞机发出的ADS-B信息后,可以通过其坐标点来描绘出飞机的航…...
Chrome谷歌浏览器如何能恢复到之前的旧版本
升级了谷歌最新版不习惯,如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本,但是有种种的不适应,如何能恢复到之前的旧版本呢?我们来看看操作步骤,而且无需卸载重装。 怎么恢复Chrome 之前版本&a…...
路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)
近期因公司新办公区建设,原有的爱快路由器的SDWAN功能实现分支之间互联的服务还需要继续使用。在原有的小型网络中,使用的爱快路由器当作网关设备,所以使用较为简单,如下图所示。 现变更网络拓扑为三层网络架构,但原有的SDWAN分支…...
代码随想录算法训练营第五十五天 |108.冗余连接 109.冗余连接Ⅱ
108.冗余连接: 文章链接 题目链接:108.冗余连接 思路 首先分析题目,给定拥有n个节点和n条边的图,其中图是在原n个节点和n - 1条无环无向图中添加一条边得到的。要求是输出多出的边。(PS:可能会有多个答案…...
Unity补充 -- 协程相关
1.协程。 协程并不是线程。线程是主线程之外的另一条 代码按照逻辑执行通道。协程则是在代码在按照逻辑执行的同时,是否需要执行额外的语句块。 2.协程的作用。 在update执行的时候,是按照帧来进行刷新的,也是按照帧执行代码的。但是又不想…...
【第二十周】U-Net:用于生物图像分割的卷积神经网络
文章目录 摘要Abstract文章信息研究动机U-Net网络结构U-Net网络搭建数据增强损失函数转置卷积创新性与不足创新性:不足: 总结 摘要 U-Net(Convolutional Networks for Biomedical Image Segmentation)是一种用于图像分割的深度学…...
部署Metricbeat监测ES
官方参考文档 安装Metricbeat curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.17.27-linux-x86_64.tar.gztar xzvf metricbeat-7.17.27-linux-x86_64.tar.gz设置 Metricbeat连接到 Elasticsearch 进入metricbeat目录配置metricbeat.yml …...
Pytorch|YOLO
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…...
云计算与物联网技术的融合应用(在工业、农业、家居、医疗、环境、城市等整理较全)
摘要 为生产领域带来更加全面和深入的变革。通过云计算平台对物联网数据进行处理和分析,企业可以实现对生产过程的更加精细化的管理和控制。 1. 智能生产调度 通过云计算和物联网技术的融合应用,企业可以实现对生产线上各个环节的实时监控和数据分析。…...
基于python+Django+mysql鲜花水果销售商城网站系统设计与实现
博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程ÿ…...
Golang:报错no required module provides package github.com/xx的解决方法
报错 问题重现可能的原因及解决方法1. 未初始化 Go 模块解决方法: 2. 没有添加依赖解决方法: 3. 网络问题解决方法: 4. 依赖版本问题解决方法: 5. 包未发布或路径拼写错误解决方法: 6. go mod tidy 未运行解决方法&…...
数据结构与算法(2):顺序表与链表
1.前言 哈喽大家好喔,今天博主继续进行数据结构的分享与学习,今天的主要内容是顺序表与链表,是最简单但又相当重要的数据结构,为以后的学习有重要的铺垫,希望大家一起交流学习,互相进步,让我们…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...





























