基于ASP.NET的小型超市商品管理系统
文章目录
- 前言
- 项目介绍
- 技术介绍
- 功能介绍
- 核心代码
- 数据库参考
- 系统效果图
前言
示
文章底部名片,获取项目的完整演示视频,免费解答技术疑问
项目介绍
小型超市商品管理系统是一款针对小型超市日常运营需求设计的软件解决方案。该系统主要内容有商品类别管理、商品库存管理、入库信息管理、销售订单管理等功能,实现了对超市商品的全面管理。它简化了商品管理流程,提高了工作效率,有助于超市管理者实时掌握商品动态,优化库存结构,降低运营成本。
本论文将总体分析小型超市商品需求,再从不同角度分析具体功能需求,运用net相关技术,采用MySQL数据库,讨论如何设计并实现一个小型超市商品管理系统。分析和设计主要从管理员、采购员和销售员三个角色上展开研究,介绍了各个功能模块的实现,并通过系统测试对小型超市商品管理系统进行调试,将各个功能的测试结果与期望设计进行逐一比对,找出BUG和欠缺之处,从而进一步优化改进系统。
本套基于Java的小型超市商品管理系统的设计与实现,希望能让用户通过互联网得到方便而快捷的系统管理体验,在此基础的同时提高工作效益。
技术介绍
开发软件:VS 2017 (版本2017以上即可,不能低于2017)
数据库:SqlServer2008r2(数据库版本无限制,都可以导入)
开发模式:mvc
浏览器:谷歌浏览器
功能介绍
本文从小型超市商品管理的实际需要出发,为降低系统的耦合性,完成了系统总体架构的设计,以提高系统的重用性、可适用性及可维护性。系统包括管理员、采购员和销售员三个角色;
管理员负责对整个系统进行管理和监控,而其他用户则负责执行具体的管理工作。管理员、采购员和销售员
系统整体模块分为管理员、采购员和销售员三大用户角色,整体功能设计图如下所示:
图4-1 系统整体功能图
核心代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles;
using Newtonsoft.Json;
using Xiezn.Core.Business.Services;
using Xiezn.Core.Common.Helpers;
using Xiezn.Core.Models.ViewModel;namespace Xiezn.Core.Controllers
{/// <summary>/// 公共接口/// </summary>[Route("[action]")]public class CommonController : Controller{private readonly IHostingEnvironment _hostingEnvironment;private readonly string _savePath;private readonly CommonService _bll;private readonly ConfigService _configBLL;/// <summary>/// 构造函数/// </summary>public CommonController(IHostingEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;_savePath = _hostingEnvironment.WebRootPath + Path.DirectorySeparatorChar + ConfigHelper.GetConfig("SchemaName") + Path.DirectorySeparatorChar + "upload" + Path.DirectorySeparatorChar;_bll = new CommonService();_configBLL = new ConfigService();}/// <summary>/// 获取某表的某个字段列表接口/// </summary>/// <param name="tableName">表名</param>/// <param name="columnName">列名</param>/// <returns></returns>[HttpGet("{tableName}/{columnName}")]public JsonResult Option(string tableName, string columnName){try{int level = Convert.ToInt32(HttpContext.Request.Query["level"]);string parent = HttpContext.Request.Query["parent"];string conditionColumn = HttpContext.Request.Query["conditionColumn"];string conditionValue = HttpContext.Request.Query["conditionValue"];if (!string.IsNullOrEmpty(conditionColumn) && !string.IsNullOrEmpty(conditionValue)){return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "option", 0, 0, " AND " + conditionColumn + " = '" + conditionValue + "' ") });}if (level == 0){return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, parent, level) });}else{return Json(new { Code = 0, Data = _bll.Common(tableName, columnName) });}}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 根据option字段值获取某表的单行记录接口/// </summary>/// <param name="tableName">表名</param>/// <param name="columnName">列名</param>/// <param name="columnValue">列值</param>/// <returns></returns>[HttpGet("{tableName}/{columnName}")]public JsonResult Follow(string tableName, string columnName, string columnValue){try{return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, columnValue, 0, "follow") });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 根据主键id修改table表的sfsh状态接口/// </summary>/// <param name="tableName">表名</param>/// <param name="id">主键id</param>/// <param name="sfsh">当前审核状态(是/否)</param>/// <returns></returns>[HttpPost("{tableName}")][Authorize(Roles = "Admin,Client")]public JsonResult Sh(string tableName, int id, string sfsh){try{if (_bll.Common(tableName, id.ToString(), sfsh, 0, "sh") > 0){return Json(new { Code = 0, Msg = "更新成功!" });}return Json(new { Code = -1, Msg = "更新失败!" });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 获取需要提醒的记录数接口/// </summary>/// <param name="tableName">表名</param>/// <param name="columnName">列名</param>/// <param name="type">类型(1表示数字比较提醒,2表示日期比较提醒)</param>/// <param name="remindStart">remindStart小于等于columnName满足条件提醒,当比较日期时,该值表示天数</param>/// <param name="remindEnd">columnName小于等于remindEnd 满足条件提醒,当比较日期时,该值表示天数</param>/// <returns></returns>[HttpGet("{tableName}/{columnName}/{type}")]public JsonResult Remind(string tableName, string columnName, int type, int remindStart, int remindEnd){try{return Json(new { Code = 0, Count = _bll.Common(tableName, columnName, "", type, "remind", remindStart, remindEnd) });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 计算规则接口/// </summary>/// <param name="tableName">表名</param>/// <param name="columnName">列名</param>/// <returns></returns>[HttpGet("{tableName}/{columnName}")]public JsonResult Cal(string tableName, string columnName){try{return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "cal") });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 人脸比较/// </summary>/// <param name="face1">图片1名称</param>/// <param name="face2">图片2名称</param>/// <returns></returns>[HttpGet]public JsonResult MatchFace(string face1, string face2){try{BaiduAiHelper.clientId = _configBLL.GetValueByName("APIKey");BaiduAiHelper.clientSecret = _configBLL.GetValueByName("SecretKey");BaiduAiHelper.GetAccessToken();List<FaceMatchViewModel> matchInfo = new List<FaceMatchViewModel>{new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face1) },new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face2) }};string result = BaiduAiHelper.FaceMatch(JsonConvert.SerializeObject(matchInfo));dynamic resObj = JsonConvert.DeserializeObject(result);if (resObj.error_code == 0){return Json(new { Code = 0, Score = resObj.result.score, Msg = "匹配成功!" });}else{return Json(new { Code = -1, Score = 0, Msg = "匹配失败!" });}}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 定位接口(根据经纬度坐标获取到省市县(区)信息)/// </summary>/// <param name="lat">经度</param>/// <param name="lng">纬度</param>/// <returns></returns>[HttpGet]public JsonResult Location(double lat, double lng){try{AddressViewModel addressViewModel = BaiduAiHelper.GetAddress(_configBLL.GetValueByName("baidu_ditu_ak"), lng, lat);if (addressViewModel == null){return Json(new { Code = -1, Msg = "位置信息获取失败!" });}else{return Json(new { Code = 0, Data = addressViewModel });}}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 类别统计接口/// </summary>/// <param name="tableName">表名</param>/// <param name="columnName">列名</param>/// <returns></returns>[HttpGet("{tableName}/{columnName}")]public JsonResult Group(string tableName, string columnName){try{return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "group") });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 按值统计接口/// </summary>/// <param name="tableName">表名</param>/// <param name="xColumnName">列名</param>/// <param name="yColumnName">列名</param>/// <returns></returns>[HttpGet("{tableName}/{xColumnName}/{yColumnName}")]public JsonResult Value(string tableName, string xColumnName, string yColumnName){try{return Json(new { Code = 0, Data = _bll.Common(tableName, xColumnName, yColumnName, 0, "value") });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 按时间统计类型接口/// </summary>/// <param name="tableName">表名</param>/// <param name="xColumnName">列名</param>/// <param name="yColumnName">列名</param>/// <param name="timeStatType">类型</param>/// <returns></returns>[HttpGet("{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")]public JsonResult Value(string tableName, string xColumnName, string yColumnName, string timeStatType){try{return Json(new { Code = 0, Data = _bll.StatDate(tableName, xColumnName, yColumnName, timeStatType) });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}/// <summary>/// 数据备份/// </summary>/// <returns></returns>[HttpGet]public IActionResult Mysqldump(){string filepath = _savePath + "mysql.dmp";// Linuxstring cmd = "/bin/bash";string strInput = "/usr/bin/mysqldump -h127.0.0.1 -uroot -P3306 -p123456 net2h303777 > " + filepath;// Windows// string cmd = "cmd.exe";// string strInput = "D:\\mysqldump -h127.0.0.1 -uroot -P3306 -p123456 net2h303777 > " + filepath;Process p = new Process();p.StartInfo.FileName = cmd;p.StartInfo.UseShellExecute = false;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true;p.Start();p.StandardInput.WriteLine(strInput);p.StandardInput.AutoFlush = true;p.StandardInput.Close();string strOuput = p.StandardOutput.ReadToEnd();p.WaitForExit();p.Close();var stream = System.IO.File.OpenRead(filepath);return File(stream, "application/octet-stream", "mysql.dmp");}/// md5加密接口[HttpGet("{encryption}")]public IActionResult Encrypt(string encryption){try{string text = HttpContext.Request.Query["text"];string data = FuncHelper.MD5(text);return Json(new { Code = 0,Data = data });}catch (Exception ex){return Json(new { Code = 500, Msg = ex.Message });}}}
}
数据库参考
--
-- Current Database: `netm28u50w3`
--/*!40000 DROP DATABASE IF EXISTS `netm28u50w3`*/;CREATE DATABASE /*!32312 IF NOT EXISTS*/ `netm28u50w3` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;USE `netm28u50w3`;--
-- Table structure for table `caigouyuan`
--DROP TABLE IF EXISTS `caigouyuan`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `caigouyuan` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`caigougonghao` varchar(200) DEFAULT NULL COMMENT '采购工号',`caigouxingming` varchar(200) DEFAULT NULL COMMENT '采购姓名',`mima` varchar(200) DEFAULT NULL COMMENT '密码',`xingbie` varchar(200) DEFAULT NULL COMMENT '性别',`zhicheng` varchar(200) DEFAULT NULL COMMENT '职称',`lianxidianhua` varchar(200) DEFAULT NULL COMMENT '联系电话',`touxiang` longtext COMMENT '头像',PRIMARY KEY (`id`),UNIQUE KEY `caigougonghao` (`caigougonghao`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='采购员';
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `caigouyuan`
--LOCK TABLES `caigouyuan` WRITE;
/*!40000 ALTER TABLE `caigouyuan` DISABLE KEYS */;
INSERT INTO `caigouyuan` VALUES (11,'2024-04-02 10:04:53','采购工号1','采购姓名1','123456','男','职称1','13823888881','upload/caigouyuan_touxiang1.jpg'),(12,'2024-04-02 10:04:53','采购工号2','采购姓名2','123456','男','职称2','13823888882','upload/caigouyuan_touxiang2.jpg'),(13,'2024-04-02 10:04:53','采购工号3','采购姓名3','123456','男','职称3','13823888883','upload/caigouyuan_touxiang3.jpg'),(14,'2024-04-02 10:04:53','采购工号4','采购姓名4','123456','男','职称4','13823888884','upload/caigouyuan_touxiang4.jpg'),(15,'2024-04-02 10:04:53','采购工号5','采购姓名5','123456','男','职称5','13823888885','upload/caigouyuan_touxiang5.jpg'),(16,'2024-04-02 10:04:53','采购工号6','采购姓名6','123456','男','职称6','13823888886','upload/caigouyuan_touxiang6.jpg'),(17,'2024-04-02 10:04:53','采购工号7','采购姓名7','123456','男','职称7','13823888887','upload/caigouyuan_touxiang7.jpg'),(18,'2024-04-02 10:04:53','采购工号8','采购姓名8','123456','男','职称8','13823888888','upload/caigouyuan_touxiang8.jpg');
/*!40000 ALTER TABLE `caigouyuan` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `config`
--DROP TABLE IF EXISTS `config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `config` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(100) NOT NULL COMMENT '配置参数名称',`value` varchar(100) DEFAULT NULL COMMENT '配置参数值',`url` varchar(500) DEFAULT NULL COMMENT 'url',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `config`
--LOCK TABLES `config` WRITE;
/*!40000 ALTER TABLE `config` DISABLE KEYS */;
INSERT INTO `config` VALUES (1,'picture1','upload/picture1.jpg',NULL),(2,'picture2','upload/picture2.jpg',NULL),(3,'picture3','upload/picture3.jpg',NULL);
/*!40000 ALTER TABLE `config` ENABLE KEYS */;
UNLOCK TABLES;--
-- Table structure for table `gongyingshang`
--DROP TABLE IF EXISTS `gongyingshang`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `gongyingshang` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gongyingshang` varchar(200) NOT NULL COMMENT '供应商',`dizhi` varchar(200) DEFAULT NULL COMMENT '地址',`lianxidianhua` varchar(200) DEFAULT NULL COMMENT '联系电话',`fuzeren` varchar(200) NOT NULL COMMENT '负责人',`zhiwu` varchar(200) DEFAULT NULL COMMENT '职务',`yingyezhizhaohaoma` varchar(200) DEFAULT NULL COMMENT '营业执照号码',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COMMENT='供应商';
/*!40101 SET character_set_client = @saved_cs_client */;
系统效果图
相关文章:

基于ASP.NET的小型超市商品管理系统
文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图 前言 示 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 小型超市商品管理系统是一款针对小型超市日常运营需求设计的软件解决方案。该系统主要内容有商品类别…...

spdlog学习记录
spdlog Loggers:是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlog 中,一个 Logger 对象代表着一个日志记录器,应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks:决定了日志消息的输出位置。在 Spdlog 中&…...
linux替换某个文件的某段内容命令
假设文件是a.sql 里面的库是abc,我想把这个abc给替换掉,改成hahaha cat a.sql |grep abc|sed -i s/abc/hahaha/g a.sql 如果想写个脚本指定整个文件夹中的内容替换 #!/bin/bash # 检查是否提供了文件夹路径 if [ -z "\$1" ]; then echo &…...
什么是SQL注入攻击?如何防止呢?
目录 一、什么是SQL注入? 二、如何防止? 2.1 使用预编译语句 2.2 使用 ORM 框架 2.3 用户输入校验 一、什么是SQL注入? SQL 注入是一种常见的网络安全漏洞,攻击者通过在应用程序的用户输入中插入恶意的 SQL 代码ÿ…...

consumer 角度讲一下i2c外设
往期内容 I2C子系统专栏: I2C(IIC)协议讲解-CSDN博客SMBus 协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析:注册篇内核提供的通用I2C设备驱动I2C-dev.…...

面试经典150题刷题记录
数组部分 1. 合并两个有序的子数组 —— 倒序双指针避免覆盖 88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使…...

【HarmonyOS NEXT】实现保存base64图片到图库
上篇文章介绍了HarmonyOS NEXT如何保存base64文件到download目录下,本次介绍如何保存base64图片到图库,网络图片保存方式大同小异,先下载图片,然后再保存 phAccessHelper.showAssetsCreationDialog参考官方文档’ ohos.file.pho…...

开题答辩最怕被问什么?教你用ChatGPT轻松准备,稳拿高分!
AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 开题答辩是学位论文写作过程中的重要环节,能帮助导师评估你的研究计划是否可行,并对后续写作起到指导作用。很多同学在面对导师提问时会感到紧张,因此提前准备好常见问题的…...
Unity3D功耗和发热分析与优化详解
前言 Unity3D作为广泛使用的游戏开发引擎,在游戏开发过程中,功耗和发热问题一直是开发者需要重点关注的问题。功耗和发热不仅影响用户体验,还可能对设备的硬件寿命造成一定影响。本文将从技术角度详细分析Unity3D游戏在移动设备上的功耗和发…...
深度学习中的掩码介绍
在深度学习中,**掩码(Mask)**通常用于屏蔽掉某些特定部分的数据,以确保模型在训练或推理时不处理无效或无关的输入。掩码的使用场景主要包括处理变长序列、生成模型中的自回归任务、处理填充数据等。掩码可以是二值矩阵(1 表示有效数据,0 表示屏蔽数据),在注意力机制中…...

rust高级进阶总结
文章目录 前言1. Rust生命周期进阶一、不太聪明的生命周期检查(一)例子1(二)例子2 二、无界生命周期三、生命周期约束(HRTB)(一)语法及含义(二)综合例子 四、…...

整理—计算机网络
目录 网络OSI模型和TCP/IP模型 应用层有哪些协议 HTTP报文有哪些部分 HTTP常用的状态码 Http 502和 504 的区别 HTTP层请求的类型有哪些? GET和POST的使用场景,有哪些区别? HTTP的长连接 HTTP默认的端口是什么? HTTP1.1怎…...

分布式数据库环境(HBase分布式数据库)的搭建与配置
分布式数据库环境(HBase分布式数据库)的搭建与配置 1. VMWare安装CentOS7.9.20091.1 下载 CentOS7.9.2009 映像文件1.2启动 VMware WorkstationPro,点击“创建新的虚拟机”1.3在新建虚拟机向导界面选择“典型(推荐)”1…...
100个JavaWeb(JDBC, Servlet, JSP)毕业设计选题
100个JavaWeb(JDBC, Servlet, JSP)毕业设计选题 教育行业 学生信息管理系统在线考试系统课程管理与选课系统教师评价管理系统图书馆管理系统学生成绩查询系统校园论坛作业提交与批改系统学生考勤管理系统教学资源共享平台 企业管理 员工管理系统考勤打卡系统办公用品申请管…...
05 go语言(golang) - 常量和条件语句
常量 在Go语言中,常量是使用 const 关键字定义的,并且一旦被赋值后,它们的值在程序运行期间不能改变。常量可以是字符、字符串、布尔或数值类型。 基本特性 不可修改:一旦一个常量被定义,它的值就不能被更新。编译时…...
【设计模式】深入理解Python中的适配器模式(Adapter Pattern)
深入理解Python中的适配器模式(Adapter Pattern) 在软件开发中,常常会遇到需要让不兼容的类或接口协同工作的问题。适配器模式(Adapter Pattern)是一种结构型设计模式,通过提供一个包装器对象,…...

RuoYi-Vue若依框架-后端设置不登陆访问(白名单)
找到SecurityConfig类 确认自己的需求 /*** anyRequest | 匹配所有请求路径* access | SpringEl表达式结果为true时可以访问* anonymous | 匿名可以访问* denyAll | 用户不能访问* fullyAuthenticated | 用户完全认证可…...
C语言初阶小练习2(三子棋小游戏的实现代码)
这是C语言小游戏三子棋的代码实现 test.c文件是用来测试的部分 game.h文件是用来声明我们说写出的函数 game.c文件是用来编写我们的功能实现函数部分 1.test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void menu() {printf("***************…...
金融行业合同管理如何利用AI技术进行风险预警?
2024年以来,金融行业的发展主线被锚定,强调了防风险的基调,尤其是系统性风险的防范。金融工作的重点在于实现六个强大:强大的货币、强大的中央银行、强大的金融机构、强大的国际金融中心、强大的金融监管、强大的金融人才队伍。这…...

世界数字农业盛宴与技术探索,25年3月聚焦世界灌溉科技大会
由中国农业节水和农村供水技术协会、中国农垦节水农业产业技术联盟、北京物联网智能技术应用协会、振威国际会展集团主办的“世界灌溉科技大会”、“第11届北京国际数字农业与灌溉技术博览会”,定于2025年3月31日至4月2日在北京国家会议中心举办。 作为世界三大灌溉…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...