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

店铺营业状态设置(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 结构数据库。 主要特点&#xff1a; 1、基于内存存储&#xff0c;读写性能高 2、适合存储热点数据&#xff08;热点…...

游戏引擎学习第84天

仓库:https://gitee.com/mrxiao_com/2d_game_2 我们正在试图弄清楚如何完成我们的世界构建 上周做了一些偏离计划的工作&#xff0c;开发了一个小型的背景位图合成工具&#xff0c;这个工具做得还不错&#xff0c;虽然是临时拼凑的&#xff0c;但验证了背景构建的思路。这个过…...

快手SDK接入错误处理经验总结(WebGL方案)

1、打包时提示Assets\WebGLTemplates\ks路径下未找到Index.html文件错误 处理方法&#xff1a;直接使用Unity默认模板下的Index.html文件即可 文件所在路径&#xff1a;Unity安装路径\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates\Default 参考图&a…...

C语言 for 循环:解谜数学,玩转生活!

放在最前面的 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…...

Node.js 与 JavaScript 是什么关系

JavaScript 是一种编程语言&#xff0c;而 Node.js 是 JavaScript 的一个运行环境&#xff0c;它们在不同的环境中使用&#xff0c;具有一些共同的语言基础&#xff0c;但也有各自独特的 API 和模块&#xff0c;共同推动着 JavaScript 在前后端开发中的广泛应用。 一、基础语言…...

Java 大视界 -- Java 大数据性能监控与调优:全链路性能分析与优化(十五)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

深入Spring Boot:自定义Starter开发与实践

引言 Spring Boot通过其强大的自动配置机制和丰富的Starter模块&#xff0c;极大地简化了Spring应用的开发过程。Starter模块封装了一组相关的依赖和配置&#xff0c;使得开发者可以通过简单的依赖引入&#xff0c;快速启用特定的功能。然而&#xff0c;除了使用Spring Boot提…...

React 中hooks之useTransition使用总结

目录 概述基本用法使用场景最佳实践注意事项 概述 什么是 useTransition? useTransition 是 React 18 引入的新 Hook&#xff0c;用于标记非紧急的状态更新。它允许组件在状态转换期间保持响应&#xff0c;通过将某些更新标记为"过渡"来推迟它们的渲染。 主要特…...

怎样使用树莓派自己搭建一套ADS-B信号接收系统

0 我们知道&#xff0c;ADS-B全称广播式自动相关监视系统&#xff0c;其实就是飞机发出的广播信号&#xff0c;用明码来对外发送自己的位置、高度、速度、航向等信息&#xff0c;是公开信息。连续接收到一架飞机发出的ADS-B信息后&#xff0c;可以通过其坐标点来描绘出飞机的航…...

Chrome谷歌浏览器如何能恢复到之前的旧版本

升级了谷歌最新版不习惯&#xff0c;如何降级版本 未完待续。。 电脑中的Chrome谷歌浏览器升级到了最新版本&#xff0c;但是有种种的不适应&#xff0c;如何能恢复到之前的旧版本呢&#xff1f;我们来看看操作步骤&#xff0c;而且无需卸载重装。 怎么恢复Chrome 之前版本&a…...

路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)

近期因公司新办公区建设&#xff0c;原有的爱快路由器的SDWAN功能实现分支之间互联的服务还需要继续使用。在原有的小型网络中&#xff0c;使用的爱快路由器当作网关设备&#xff0c;所以使用较为简单,如下图所示。 现变更网络拓扑为三层网络架构&#xff0c;但原有的SDWAN分支…...

代码随想录算法训练营第五十五天 |108.冗余连接 109.冗余连接Ⅱ

108.冗余连接&#xff1a; 文章链接 题目链接&#xff1a;108.冗余连接 思路 首先分析题目&#xff0c;给定拥有n个节点和n条边的图&#xff0c;其中图是在原n个节点和n - 1条无环无向图中添加一条边得到的。要求是输出多出的边。&#xff08;PS&#xff1a;可能会有多个答案…...

Unity补充 -- 协程相关

1.协程。 协程并不是线程。线程是主线程之外的另一条 代码按照逻辑执行通道。协程则是在代码在按照逻辑执行的同时&#xff0c;是否需要执行额外的语句块。 2.协程的作用。 在update执行的时候&#xff0c;是按照帧来进行刷新的&#xff0c;也是按照帧执行代码的。但是又不想…...

【第二十周】U-Net:用于生物图像分割的卷积神经网络

文章目录 摘要Abstract文章信息研究动机U-Net网络结构U-Net网络搭建数据增强损失函数转置卷积创新性与不足创新性&#xff1a;不足&#xff1a; 总结 摘要 U-Net&#xff08;Convolutional Networks for Biomedical Image Segmentation&#xff09;是一种用于图像分割的深度学…...

部署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

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…...

云计算与物联网技术的融合应用(在工业、农业、家居、医疗、环境、城市等整理较全)

摘要 为生产领域带来更加全面和深入的变革。通过云计算平台对物联网数据进行处理和分析&#xff0c;企业可以实现对生产过程的更加精细化的管理和控制。 1. 智能生产调度 通过云计算和物联网技术的融合应用&#xff0c;企业可以实现对生产线上各个环节的实时监控和数据分析。…...

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

Golang:报错no required module provides package github.com/xx的解决方法

报错 问题重现可能的原因及解决方法1. 未初始化 Go 模块解决方法&#xff1a; 2. 没有添加依赖解决方法&#xff1a; 3. 网络问题解决方法&#xff1a; 4. 依赖版本问题解决方法&#xff1a; 5. 包未发布或路径拼写错误解决方法&#xff1a; 6. go mod tidy 未运行解决方法&…...

数据结构与算法(2):顺序表与链表

1.前言 哈喽大家好喔&#xff0c;今天博主继续进行数据结构的分享与学习&#xff0c;今天的主要内容是顺序表与链表&#xff0c;是最简单但又相当重要的数据结构&#xff0c;为以后的学习有重要的铺垫&#xff0c;希望大家一起交流学习&#xff0c;互相进步&#xff0c;让我们…...

|从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面

&#x1f411; |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 &#x1f411; 文章目录 &#x1f411; |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 &#x1f411;♈前言♈♈调取Deepseek大模型♈♒准备工作♒♒调用API♒ ♈将模型嵌入到ui界面中♈♈…...

DuckDB + Spring Boot + MyBatis 构建高性能本地数据分析引擎

DuckDB 是一款令人兴奋的内嵌式分析型数据库 (OLAP)&#xff0c;它为本地数据分析和处理带来了前所未有的便捷与高效 &#x1f680;。它无需外部服务器&#xff0c;可以直接在应用程序进程中运行&#xff0c;并提供了强大的 SQL 支持和列式存储带来的高性能。 什么是 DuckDB&am…...

uniapp 对接腾讯云IM群公告功能

UniApp 实战&#xff1a;腾讯云IM群公告功能 一、前言 在即时通讯场景中&#xff0c;群公告是信息同步的重要渠道。本文将基于uniapp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群公告的发布、修改、历史记录查询等核心功能。 群公告的数据结构设计权限校…...

构建 MCP 服务器:第 3 部分 — 添加提示

这是我们构建 MCP 服务器的四部分教程的第三部分。在第一部分中&#xff0c;我们使用基本资源创建了第一个MCP 服务器&#xff1b;在第二部分中&#xff0c;我们添加了资源模板并改进了代码组织。现在&#xff0c;我们将进一步重构代码并添加提示功能。 什么是 MCP 提示&#…...

Harmony核心:动态方法修补与.NET游戏Mod开发

一、Harmony的核心定位与设计哲学 Harmony是一个运行时动态方法修补库&#xff0c;专为修改已编译的.NET/Mono应用程序而设计&#xff0c;尤其适用于游戏Mod开发。其核心创新在于&#xff1a; 非破坏性修改&#xff1a;保留原始方法完整性&#xff0c;避免直接替换或覆盖。多…...

2025政务服务便民热线创新发展会议顺利召开,张晨博士受邀分享

5月28日&#xff0c;由新华社中国经济信息社、新华社广东分社联合主办的2025政务服务便民热线创新发展暨“人工智能热线”会议在广州举行。会议围绕“人工智能与新质热线”主题&#xff0c;邀请全国的12345政务服务便民热线主管部门负责人、省市热线负责人和专家学者&#xff0…...

日志收集工具-Filebeat

提示&#xff1a;windows 环境下 Filebeat 的安装与使用 文章目录 前言一、安装二、配置部署三、启动测试 前言 Filebeat 一般用于日志采集&#xff0c;由两部分组成 &#xff1a;Harvesters 和 prospector Harvesters采集器&#xff1a;逐行读取单个文件的内容&#xff0c;并…...

HttpURLConnection实现

我有一个接口 http://ip:port/Others/airportnew/&#xff0c;采用post方法调用&#xff0c;采用body方式传值&#xff0c;其body内容为{"data": {"data": {"image": ""}} }&#xff0c;现在我需要在java中调用这个接口&#xff0c;帮…...

Linux命令基础(2)

su和exit命令 可以通过su命令切换到root账户 语法&#xff1a;su [-] 用户名 -符号是可选的&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上 参数&#xff1a;用户名&#xff0c;表示要切换的用户&#xff0c;用户名可以省略&#xff0c;省略表示切换到ro…...

ThingsCloud事物云平台搭建-微信小程序

ThingsCloud云平台与微信小程序设计 本文主要是介绍ThingsCloud云平台的搭建及微信小程序与app的使用。 当前文章是作为一个通用案例,介绍如何快速使用 ThingsCloud云平台 以及 利用 ThingsCloud云平台平台的框架快速设计手机APP和微信小程序。 可以快速让硬件接入,实现硬件…...