餐饮点餐的简单MySQL集合
ER图
模型图(没有进行排序,混乱)
DDL和DML
/*
Navicat MySQL Data TransferSource Server : Mylink
Source Server Version : 50726
Source Host : localhost:3306
Source Database : schooldbTarget Server Type : MYSQL
Target Server Version : 50726
File Encoding : 65001Date: 2024-06-28 00:49:34
*/SET FOREIGN_KEY_CHECKS=0;-- ----------------------------
-- Table structure for `carts`
-- ----------------------------
DROP TABLE IF EXISTS `carts`;
CREATE TABLE `carts` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车ID',`user_id` int(11) NOT NULL COMMENT '用户ID',`restaurant_id` int(11) NOT NULL COMMENT '餐厅ID',PRIMARY KEY (`id`) USING BTREE,KEY `user_id` (`user_id`) USING BTREE,KEY `restaurant_id` (`restaurant_id`) USING BTREE,CONSTRAINT `carts_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,CONSTRAINT `carts_ibfk_2` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='购物车表';-- ----------------------------
-- Records of carts
-- ----------------------------
INSERT INTO `carts` VALUES ('2', '1', '2');
INSERT INTO `carts` VALUES ('3', '3', '3');
INSERT INTO `carts` VALUES ('4', '5', '5');
INSERT INTO `carts` VALUES ('5', '4', '6');-- ----------------------------
-- Table structure for `cart_items`
-- ----------------------------
DROP TABLE IF EXISTS `cart_items`;
CREATE TABLE `cart_items` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '购物车项ID',`cart_id` int(11) NOT NULL COMMENT '购物车ID',`dish_id` int(11) NOT NULL COMMENT '菜品ID',`quantity` int(11) NOT NULL COMMENT '数量',PRIMARY KEY (`id`) USING BTREE,KEY `cart_id` (`cart_id`) USING BTREE,KEY `dish_id` (`dish_id`) USING BTREE,CONSTRAINT `cart_items_ibfk_1` FOREIGN KEY (`cart_id`) REFERENCES `carts` (`id`) ON DELETE CASCADE,CONSTRAINT `cart_items_ibfk_2` FOREIGN KEY (`dish_id`) REFERENCES `dishes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='购物车项表';-- ----------------------------
-- Records of cart_items
-- ----------------------------
INSERT INTO `cart_items` VALUES ('3', '2', '4', '1');
INSERT INTO `cart_items` VALUES ('4', '2', '5', '3');
INSERT INTO `cart_items` VALUES ('5', '3', '2', '4');-- ----------------------------
-- Table structure for `dishes`
-- ----------------------------
DROP TABLE IF EXISTS `dishes`;
CREATE TABLE `dishes` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜品ID',`name` varchar(100) NOT NULL COMMENT '菜品名称',`description` text COMMENT '菜品描述',`price` decimal(10,2) NOT NULL COMMENT '菜品价格',`category_id` int(11) NOT NULL DEFAULT '1' COMMENT '所属分类ID',`restaurant_id` int(11) NOT NULL DEFAULT '1' COMMENT '所属餐厅ID',`stock_quantity` varchar(255) NOT NULL COMMENT '库存数量',PRIMARY KEY (`id`) USING BTREE,KEY `category_id` (`category_id`) USING BTREE,KEY `restaurant_id` (`restaurant_id`) USING BTREE,CONSTRAINT `dishes_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `dish_categories` (`id`) ON DELETE CASCADE,CONSTRAINT `dishes_ibfk_2` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='菜品表';-- ----------------------------
-- Records of dishes
-- ----------------------------
INSERT INTO `dishes` VALUES ('1', '水煮鱼', '麻辣鲜香,回味无穷', '102.75', '1', '1', '190');
INSERT INTO `dishes` VALUES ('2', '宫保鸡丁', '色泽红亮,口感鲜美', '48.00', '1', '1', '250');
INSERT INTO `dishes` VALUES ('3', '麻婆豆腐', '麻辣可口,下饭佳品', '38.00', '1', '1', '140');
INSERT INTO `dishes` VALUES ('4', '白切鸡', '皮爽肉滑,鲜美无比', '68.00', '2', '2', '300');
INSERT INTO `dishes` VALUES ('5', '清蒸鲈鱼', '鲜嫩可口,营养丰富', '78.00', '2', '2', '420');
INSERT INTO `dishes` VALUES ('6', '菠萝咕噜肉', '酸甜可口,色泽诱人', '52.00', '2', '2', '480');
INSERT INTO `dishes` VALUES ('7', '剁椒鱼头', '香辣可口,回味无穷', '62.00', '3', '3', '500');
INSERT INTO `dishes` VALUES ('8', '辣椒炒肉', '香辣可口,下饭佳品', '42.00', '3', '3', '350');
INSERT INTO `dishes` VALUES ('9', '红烧肉', '肥而不腻,入口即化', '55.00', '3', '3', '250');
INSERT INTO `dishes` VALUES ('16', '大鱼头', null, '55.00', '1', '1', '100');-- ----------------------------
-- Table structure for `dish_categories`
-- ----------------------------
DROP TABLE IF EXISTS `dish_categories`;
CREATE TABLE `dish_categories` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜品分类ID',`name` varchar(50) NOT NULL COMMENT '分类名称',`restaurant_id` int(11) NOT NULL COMMENT '所属餐厅ID',PRIMARY KEY (`id`) USING BTREE,KEY `restaurant_id` (`restaurant_id`) USING BTREE,CONSTRAINT `dish_categories_ibfk_1` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='菜品分类表';-- ----------------------------
-- Records of dish_categories
-- ----------------------------
INSERT INTO `dish_categories` VALUES ('1', '川菜', '1');
INSERT INTO `dish_categories` VALUES ('2', '粤菜', '2');
INSERT INTO `dish_categories` VALUES ('3', '湘菜', '3');
INSERT INTO `dish_categories` VALUES ('4', '鲁菜', '1');
INSERT INTO `dish_categories` VALUES ('5', '苏菜', '2');
INSERT INTO `dish_categories` VALUES ('6', '浙菜', '3');-- ----------------------------
-- Table structure for `orders`
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID',`user_id` int(11) NOT NULL COMMENT '用户ID',`restaurant_id` int(11) DEFAULT NULL COMMENT '餐厅ID',`order_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单日期',`total_price` decimal(10,2) NOT NULL DEFAULT '1.00' COMMENT '订单总价',`status` enum('待支付','已支付','已取消','已完成') NOT NULL DEFAULT '待支付' COMMENT '订单状态',PRIMARY KEY (`id`) USING BTREE,KEY `user_id` (`user_id`) USING BTREE,KEY `restaurant_id` (`restaurant_id`) USING BTREE,CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`restaurant_id`) REFERENCES `restaurants` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='订单表';-- ----------------------------
-- Records of orders
-- ----------------------------
INSERT INTO `orders` VALUES ('2', '3', '2', '2024-05-26 00:00:00', '95.00', '待支付');
INSERT INTO `orders` VALUES ('3', '2', '1', '2024-05-27 00:00:00', '75.08', '已完成');
INSERT INTO `orders` VALUES ('4', '5', '3', '2024-06-27 13:34:14', '100.00', '已支付');
INSERT INTO `orders` VALUES ('6', '4', '4', '2024-06-25 08:35:20', '74.00', '已完成');
INSERT INTO `orders` VALUES ('8', '1', '1', '2024-06-27 21:50:29', '116.00', '待支付');
INSERT INTO `orders` VALUES ('9', '1', '1', '2024-06-27 21:50:50', '116.00', '待支付');
INSERT INTO `orders` VALUES ('10', '1', '1', '2024-06-28 00:30:15', '205.50', '待支付');
INSERT INTO `orders` VALUES ('11', '1', '1', '2024-06-28 00:32:01', '205.50', '待支付');
INSERT INTO `orders` VALUES ('12', '2', null, '2024-06-28 00:37:55', '76.00', '待支付');
INSERT INTO `orders` VALUES ('13', '2', null, '2024-06-28 00:38:30', '76.00', '待支付');
INSERT INTO `orders` VALUES ('14', '2', null, '2024-06-28 00:39:34', '76.00', '待支付');
INSERT INTO `orders` VALUES ('15', '2', null, '2024-06-28 00:39:47', '76.00', '待支付');
INSERT INTO `orders` VALUES ('16', '2', null, '2024-06-28 00:47:01', '76.00', '待支付');-- ----------------------------
-- Table structure for `order_items`
-- ----------------------------
DROP TABLE IF EXISTS `order_items`;
CREATE TABLE `order_items` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单项ID',`order_id` int(11) NOT NULL COMMENT '订单ID',`dish_id` int(11) NOT NULL COMMENT '菜品ID',`quantity` int(11) NOT NULL COMMENT '数量',`price_per_item` decimal(10,2) NOT NULL COMMENT '单价',PRIMARY KEY (`id`) USING BTREE,KEY `order_id` (`order_id`) USING BTREE,KEY `dish_id` (`dish_id`) USING BTREE,CONSTRAINT `order_items_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE,CONSTRAINT `order_items_ibfk_2` FOREIGN KEY (`dish_id`) REFERENCES `dishes` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='订单项表';-- ----------------------------
-- Records of order_items
-- ----------------------------
INSERT INTO `order_items` VALUES ('1', '2', '2', '2', '25.00');
INSERT INTO `order_items` VALUES ('3', '3', '6', '1', '35.00');
INSERT INTO `order_items` VALUES ('5', '4', '3', '5', '55.00');
INSERT INTO `order_items` VALUES ('6', '6', '1', '6', '43.00');
INSERT INTO `order_items` VALUES ('8', '8', '1', '2', '58.00');
INSERT INTO `order_items` VALUES ('9', '9', '1', '2', '58.00');
INSERT INTO `order_items` VALUES ('13', '10', '1', '2', '102.75');
INSERT INTO `order_items` VALUES ('14', '11', '1', '2', '102.75');
INSERT INTO `order_items` VALUES ('15', '12', '3', '2', '38.00');
INSERT INTO `order_items` VALUES ('16', '13', '3', '2', '38.00');
INSERT INTO `order_items` VALUES ('17', '14', '3', '2', '38.00');
INSERT INTO `order_items` VALUES ('18', '15', '3', '2', '38.00');
INSERT INTO `order_items` VALUES ('19', '16', '3', '2', '38.00');-- ----------------------------
-- Table structure for `restaurants`
-- ----------------------------
DROP TABLE IF EXISTS `restaurants`;
CREATE TABLE `restaurants` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '餐厅ID',`name` varchar(100) NOT NULL COMMENT '餐厅名称',`address` varchar(255) NOT NULL COMMENT '餐厅地址',`opening_hours` varchar(50) DEFAULT NULL COMMENT '营业时间',`contact_number` varchar(20) DEFAULT NULL COMMENT '联系电话',PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='餐厅表';-- ----------------------------
-- Records of restaurants
-- ----------------------------
INSERT INTO `restaurants` VALUES ('1', '江湖酒楼', '京城大街1号', '09:00-22:00', '12345678');
INSERT INTO `restaurants` VALUES ('2', '美味轩', '长安路88号', '10:00-21:30', '87654321');
INSERT INTO `restaurants` VALUES ('3', '清风阁', '西湖路123号', '11:00-23:00', '98765432');
INSERT INTO `restaurants` VALUES ('4', '美食街', '西梅路45号', '14:00-18:00', '22651231');
INSERT INTO `restaurants` VALUES ('5', '饺子馆', '建设街23号', '8:00-11:30', '25641584');
INSERT INTO `restaurants` VALUES ('6', '河间驴肉火烧', '教育路47号', '13:00-19:00', '27512975');-- ----------------------------
-- Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',`username` varchar(50) NOT NULL COMMENT '用户名',`gender` enum('男','女') NOT NULL COMMENT '性别',`phone` varchar(20) DEFAULT NULL COMMENT '电话号码',`balance` varchar(255) DEFAULT '钱包余额',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户表';-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('1', '赵一', '男', '154786482', '600');
INSERT INTO `users` VALUES ('2', '钱二', '男', '154961482', '650');
INSERT INTO `users` VALUES ('3', '张三', '女', '121876879', '450');
INSERT INTO `users` VALUES ('4', '李四', '男', '187597326', '470');
INSERT INTO `users` VALUES ('5', '王五', '女', '145745468', '550');-- ----------------------------
-- Procedure structure for `create_order_infos`
-- ----------------------------
DROP PROCEDURE IF EXISTS `create_order_infos`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `create_order_infos`(IN in_user_id INT,IN in_dish_id INT,IN in_quantity INT
)
BEGIN-- 注释:声明变量用于存储相关信息DECLARE dish_price DECIMAL(10, 2);DECLARE total_price DECIMAL(10, 2);DECLARE order_id INT;DECLARE restaurant_id INT;-- 注释:获取菜品价格SELECT price INTO dish_price FROM dishes WHERE id = in_dish_id;-- 注释:计算订单总价SET total_price = dish_price * in_quantity;-- 注释:获取菜品所属餐厅 IDSELECT restaurant_id INTO restaurant_id FROM dishes WHERE id = in_dish_id;-- 注释:插入订单信息到订单表INSERT INTO orders (user_id, restaurant_id, order_date, total_price, status)VALUES (in_user_id, restaurant_id, NOW(), total_price, '待支付');-- 注释:获取生成的订单 IDSET order_id = LAST_INSERT_ID();-- 注释:插入订单详情信息到订单详情表INSERT INTO order_items (order_id, dish_id, quantity, price_per_item)VALUES (order_id, in_dish_id, in_quantity, dish_price);-- 注释:更新商品表的库存数量UPDATE dishes SET stock_quantity = stock_quantity - in_quantity WHERE id = in_dish_id;END
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `trg_check_dish_price_update`;
DELIMITER ;;
CREATE TRIGGER `trg_check_dish_price_update` BEFORE UPDATE ON `dishes` FOR EACH ROW BEGINDECLARE original_price DECIMAL(10,2);DECLARE new_price DECIMAL(10,2);DECLARE diff DECIMAL(10,2);SET original_price = OLD.price;SET new_price = NEW.price;-- 计算价格差是否超过10%SET diff = ABS(new_price - original_price) / original_price;IF diff > 0.1 THENSIGNAL SQLSTATE '45000'SET MESSAGE_TEXT = '商品售价上下浮动超过10%的限制!';END IF;
END
;;
DELIMITER ;
DROP TRIGGER IF EXISTS `trg_delete_order_items_before_order`;
DELIMITER ;;
CREATE TRIGGER `trg_delete_order_items_before_order` BEFORE DELETE ON `orders` FOR EACH ROW BEGINDELETE FROM order_items WHERE order_id = OLD.id;
END
;;
DELIMITER ;
查询
1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列。
SELECT username as '姓名', phone as '手机号' from users;
2、根据商品名称进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。使用explain测试给出的查询语句,需要显示走了索引查询。
explain select * from dishes where restaurant_id like 'e%';
3、统计用户订单信息,查询所有用户的下单数量,并进行倒序排列。使用聚合函数查询处所有用户的订单数量,倒序排列结果。
SELECT user_id,sum(restaurant_id) as '订单数量'
from `orders`
GROUP BY user_id
ORDER BY `订单数量` DESC;
1、查询用户的基本信息,钱包信息。正确显示用户信息,正确显示用户钱包信息,正确进行多表联合查询.
select user_id,username,phone,order_date,total_price
FROMusers
JOIN orders on user_id = user_id;
2、查看订单中下单最多的产品对应的类别。正确使用聚合函数,正确使用子查询,正确显示结果.
SELECT `name`
from (
SELECT `name`,count(*) as id
from dishes
GROUP BY `name`
) as subquery
ORDER BY id DESC
LIMIT 1;
3、查询下单总金额最多的用户,并查询用户的全部信息与当前钱包余额。正确使用聚合函数,正确使用子查询,正确进行多表联合查询.
SELECT u.*, balance
FROM users u
JOIN (SELECT o.user_id, SUM(o.total_price) AS total_spentFROM orders oGROUP BY o.user_idORDER BY total_spent DESCLIMIT 1) AS top_spender
ON u.id = top_spender.user_id
LEFT JOIN orders w ON u.id = w.user_id;
触发器和存储过程
1.触发器
DELIMITER $$
CREATE TRIGGER trg_check_price_change
BEFORE UPDATE ON dishes
FOR EACH ROW
BEGINDECLARE old_price DECIMAL(10,2);DECLARE new_price DECIMAL(10,2);DECLARE price_change DECIMAL(10,2);-- 获取新旧价格SET old_price = OLD.price;SET new_price = NEW.price;-- 计算价格变化百分比IF (new_price <> 0) THENSET price_change = (new_price - old_price) / old_price * 100;ELSE-- 如果新价格为0,则不允许更新SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '新价格不能为0。';END IF;-- 检查价格变动是否超过10%IF (price_change > 10 OR price_change < -10) THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '商品售价上下浮动不能超过10%。';END IF;
END;
$$
DELIMITER ;
DELIMITER //
CREATE TRIGGER trg_cascade_delete_order_items
AFTER DELETE ON orders
FOR EACH ROW
BEGINDELETE FROM order_items WHERE order_id = OLD.id;
END;
//
DELIMITER ;DELETE FROM `order` WHERE `order_id` = 刚才添加的id号;-- 插入测试数据:
insert into dishes(`name`,price,stock_quantity) VALUES ( '大鱼头',55.00,100);
-- 正常更新(未超10%)
UPDATE dishes set price =8.00 WHERE `name`='大鱼头'; -- 触发错误
2.存储过程
DELIMITER //CREATE PROCEDURE create_order_infos(IN in_user_id INT,IN in_dish_id INT,IN in_quantity INT
)
BEGIN-- 注释:声明变量用于存储相关信息DECLARE dish_price DECIMAL(10, 2);DECLARE total_price DECIMAL(10, 2);DECLARE order_id INT;DECLARE restaurant_id INT;-- 注释:获取菜品价格SELECT price INTO dish_price FROM dishes WHERE id = in_dish_id;-- 注释:计算订单总价SET total_price = dish_price * in_quantity;-- 注释:获取菜品所属餐厅 IDSELECT restaurant_id INTO restaurant_id FROM dishes WHERE id = in_dish_id;-- 注释:插入订单信息到订单表INSERT INTO orders (user_id, restaurant_id, order_date, total_price, status)VALUES (in_user_id, restaurant_id, NOW(), total_price, '待支付');-- 注释:获取生成的订单 IDSET order_id = LAST_INSERT_ID();-- 注释:插入订单详情信息到订单详情表INSERT INTO order_items (order_id, dish_id, quantity, price_per_item)VALUES (order_id, in_dish_id, in_quantity, dish_price);-- 注释:更新商品表的库存数量UPDATE dishes SET stock_quantity = stock_quantity - in_quantity WHERE id = in_dish_id;END //DELIMITER ;
CALL create_order_infos(2, 3, 2);
总结:
餐厅点餐系统的MySQL数据库数据管理与维护至关重要。这包括定期备份数据库,确保数据安全性;优化查询性能,提高系统响应速度;监控数据库运行状态,及时发现并解决潜在问题。同时,需要定期清理过期数据,保持数据库的整洁和高效。此外,还要定期更新和维护数据库表结构,以适应业务发展和变化。通过有效的数据管理与维护,可以确保餐厅点餐系统的稳定运行和数据的准确性。
相关文章:
![](https://img-blog.csdnimg.cn/direct/5ffdfb14380049789cb0050a37dd344b.png)
餐饮点餐的简单MySQL集合
ER图 模型图(没有进行排序,混乱) DDL和DML /* Navicat MySQL Data TransferSource Server : Mylink Source Server Version : 50726 Source Host : localhost:3306 Source Database : schooldbTarget Server Type …...
![](https://img-blog.csdnimg.cn/direct/316d434f38774f159a3e9b81616f71c4.png)
STM32驱动-ads1112
汇总一系列AD/DA的驱动程序 ads1112.c #include "ads1112.h" #include "common.h"void AD5726_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE );//PORTA、D时钟使能 G…...
![](https://www.ngui.cc/images/no-images.jpg)
数据结构与算法高频面试题
初级面试题及详细解答 当涉及到数据结构与算法的初级面试题时,通常涉及基本的数据结构操作、算法复杂度分析和基本算法的应用。 1. 什么是数组?数组和链表有什么区别? 解答: 数组:是一种线性数据结构,用…...
![](https://img-blog.csdnimg.cn/direct/ba9a90026153476ca777b9ab48653ec8.png)
uni-app的showModal提示框,进行删除的二次确认,可自定义确定或取消操作
实现效果: 此处为删除的二次确认示例,点击删除按钮时出现该提示,该提示写在js script中。 实现方式: 通过uni.showModal进行提示,success为确认状态下的操作自定义,此处调用后端接口进行了删除操作&#…...
![](https://img-blog.csdnimg.cn/img_convert/b8029be48d3db26cb185f7db49a81608.png)
5款提高工作效率的免费工具推荐
SimpleTex SimpleTex是一款用于创建和编辑LaTeX公式的简单工具。它能够识别图片中的复杂公式并将其转换为可编辑的数据格式。该软件提供了一个直观的界面,用户可以在编辑LaTeX代码的同时实时预览公式的效果,无需额外的编译步骤。此外,SimpleT…...
![](https://www.ngui.cc/images/no-images.jpg)
区块链的技术架构:节点、网络和数据结构
区块链技术听起来很高大上,但其实它的核心架构并不难理解。今天我们就用一些简单的例子和有趣的比喻,来聊聊区块链的技术架构:节点、网络和数据结构。 节点:区块链的“细胞” 想象一下,区块链就像是一个大型的组织&a…...
![](https://www.ngui.cc/images/no-images.jpg)
pdfmake不能设置表格边框颜色?
找到pdfmake>build>pdfmake.js中: 找到定义的“TableProcessor.prototype.drawVerticalLine”和“TableProcessor.prototype.drawHorizontalLine”两个方法: 重新定义borderColor: var borderColor this.tableNode.table.borderColor||"#…...
![](https://www.ngui.cc/images/no-images.jpg)
laravel 使用RabbitMQ作为消息中间件
先搞定环境,安装amqp扩展 确保已安装rabbitmq-c-dev。 比如 可以使用apk add rabbmit-c-dev安装 cd ~ wget http://pecl.php.net/get/amqp-1.10.2.tgz tar -zxf amqp-1.10.2.tgz cd amqp-1.10.2 phpize ./configure make && make install cd ~ rm -rf am…...
![](https://img-blog.csdnimg.cn/direct/aab17b9679b24f74a2d29f7572f69522.png)
web项目打包成可以离线跑的exe软件
目录 引言打开PyCharm安装依赖创建 Web 应用运行应用程序打包成可执行文件结语注意事项 引言 在开发桌面应用程序时,我们经常需要将网页集成到应用程序中。Python 提供了多种方法来实现这一目标,其中 pywebview 是一个轻量级的库,它允许我们…...
![](https://img-blog.csdnimg.cn/direct/971edb767400417f962d026f60d1d582.jpeg)
BFS:队列+树的宽搜
一、二叉树的层序遍历 . - 力扣(LeetCode) 该题的层序遍历和以往不同的是需要一层一层去遍历,每一次while循环都要知道在队列中节点的个数,然后用一个for循环将该层节点走完了再走下一层 class Solution { public:vector<vec…...
![](https://img-blog.csdnimg.cn/direct/c7eb519efcb645909f7e54cf7be02f69.png)
MySQL高级-SQL优化- count 优化 - 尽量使用count(*)
文章目录 1、count 优化2、count的几种用法3、count(*)4、count(id)5、count(profession)6、count(null)7、 count(1) 1、count 优化 MyISAM引擎把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回这个数,效率很高&a…...
![](https://www.ngui.cc/images/no-images.jpg)
python Flask methods
在 Flask 中,app.route() 装饰器用于定义 URL 路由和与之关联的视图函数。当你想指定某个 URL 可以接受哪些 HTTP 方法时,你可以使用 methods 参数。methods 是一个列表,它可以包含任何有效的 HTTP 方法。 Falsk文章中的描述: 链…...
![](https://img-blog.csdnimg.cn/direct/9e9c7b830e4b4566bfbb957eb1746b9c.png)
three.js场景三元素
three.js是一个基于WebGL的轻量级、易于使用的3D库。它极大地简化了WebGL的复杂细节,降低了学习成本,同时提高了性能。 three.js的三大核心元素: 场景(Scene) 场景是一个三维空间,是所有物品的容器。可以将…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring AOP(面向切面编程)详解
Spring AOP(面向切面编程)详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 什么是Spring AOP? Spring AOP(…...
![](https://img-blog.csdnimg.cn/direct/c2022fcf402a48369de36203b2395d88.png)
Kafka第一篇——内部组件概念架构启动服务器zookeeper选举以及底层原理
目录 引入 ——为什么分布式系统需要用第三方软件? JMS 对比 组件 架构推演——备份实现安全可靠 , Zookeeper controller的选举 controller和broker底层通信原理 BROKER内部组件 编辑 topic创建 引入 ——为什么分布式系统需要用第三方软件&#…...
![](https://www.ngui.cc/images/no-images.jpg)
14、顺时针打印矩阵
题目: 顺时针打印矩阵 描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如, 如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字:1,2,3,4,8,1…...
![](https://img-blog.csdnimg.cn/direct/6b52804e15ed49f6aa22fcb8e7ed99ca.png)
毅速丨金属3D打印是制造业转型升级的重要技术
随着科技的进步,金属3D打印技术已成为制造业升级的重要驱动力。它以其独特的优势,正引领着制造业迈向新的未来。 金属3D打印技术的突破: 设计自由。金属3D打印能制造任意形状和结构的零件,为设计师提供了无限的创意空间。 快速制…...
![](https://img-blog.csdnimg.cn/direct/bf0ff7691f9b44f498210d9055b1b3ae.png)
uni-app uni-data-picker级联选择器无法使用和清除选中的值
出现问题: 使用点击右边的叉号按钮无法清除已经选择的uni-data-picker值 解决办法: 在uni-app uni-data-picker使用中,要添加v-model,v-model在官网的示例中没有体现,但若不加则无法清除。 <uni-data-picker v-m…...
![](https://img-blog.csdnimg.cn/direct/e016214b1eb24f43b83f758f146e2227.png)
构造函数的小白理解
一、实例 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;//定义一个名为Question的类,用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…...
![](https://img-blog.csdnimg.cn/img_convert/61e20917888fdb77a12d9deceb4d9096.png)
招聘,短信与您:招聘人员完整指南
招聘人员面临的最大挑战之一就是沟通和联系候选人。为何?我们可以从以下原因开始:候选人通常被太多的招聘人员包围,试图联系他们,这使得你很难吸引他们的注意。在招聘过程的不同阶段,根据不同的工作量,让申请人保持最…...
![](https://img-blog.csdnimg.cn/direct/0151a695e28f4b85b50669d5acdd98df.png)
JAVA-矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路: 找到0的位置,把0出现的数组的其他值夜置为0 需要额外空间方法: 1、定义两个布尔数组标记二维数组中行和列…...
![](https://img-blog.csdnimg.cn/direct/8b2c16cd5f084d8a9a6eba3c68107ed8.png)
[信号与系统]模拟域中的一阶低通滤波器和二阶滤波器
前言 不是学电子出身的,这里很多东西是问了朋友… 模拟域中的一阶低通滤波器传递函数 模拟域中的一阶低通滤波器的传递函数可以表示为: H ( s ) 1 s ω c H(s) \frac{1}{s \omega_c} H(s)sωc1 这是因为一阶低通滤波器的设计目标是允许低频信…...
![](https://img-blog.csdnimg.cn/direct/ccc5df67988049e1be13887ac83f27e0.png)
Mac环境 aab包转apks,并安装apks
一、下载下载bundletool工具 Releases google/bundletool GitHub 二、将下载bundletool.jar包、aab、keystore文件全部放到同一个目录下 例如我全部放到download目录下 转换命令行: java -jar bundletool-all-1.16.0.jar build-apks --modeuniversal --bundle…...
![](https://img-blog.csdnimg.cn/direct/163525bcfc764b4c923644dda05e5c7d.png)
银河麒麟V10 SP1.1操作系统 离线安装 nginx1.21.5、redis 服务
银河麒麟官网地址:国产操作系统、麒麟操作系统——麒麟软件官方网站 一、查看系统版本 命令:nkvers 我的是 release V10 (SP1),根据这个版本去官网找对应的rpm包 银河麒麟操作系统的rpm包必须从官方找, 要是随便找个Centos的rp…...
![](https://www.ngui.cc/images/no-images.jpg)
ios swift5 视频播放 播放视频失败 无法播放HEVC (H.265) 格式的视频 H.264格式的可以播放
文章目录 1.问题2.原因:iOS swift AVPlayerViewController无法播放HEVC (H.265) 格式的视频3.解决方法用第三方框架MobileVLCKit来播放4.用MobileVLCKit写的播放器4.1 两个oc版本的4.2 两个swiftUI版本的5.苹果是支持HEVC (H.265) 格式的视频,是硬件那边…...
![](https://img-blog.csdnimg.cn/img_convert/1e473ef201dd27dfb15b89d81db7ab3d.jpeg)
网工内推 | 网络工程师,IE认证优先,最高18k*14薪,周末双休
01 上海吾索信息科技有限公司 🔷招聘岗位:网络工程师 🔷岗位职责: 1)具备网络系统运维服务经验以及数据库实施经验,具备网络系统认证相关资质或证书; 2)掌握常用各设备的运维巡检…...
![](https://img-blog.csdnimg.cn/direct/4fc3d934863e480985de70ca2f0649bb.png)
【Qt】QMessageBox 各种对话框的默认显示效果
1. 函数原型 void about(QWidget *parent, const QString &title, const QString &text)void aboutQt(QWidget *parent, const QString &title QString())QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &…...
![](https://img-blog.csdnimg.cn/direct/36c0aeaeaa1446e48c3adfa607be70be.png#pic_center)
一文弄懂线性回归模型
1、引言 今天,我们将深入探讨机器学习中的三个关键概念:线性回归、代价函数和梯度下降。这些概念构成了许多机器学习算法的基础。起初,我决定不写一篇关于这些主题的文章,因为它们已经被广泛涉及。不过,我改变了主意&…...
![](https://img-blog.csdnimg.cn/direct/de466be8dde94ce8b4b09fef2bb92d30.png)
uniApp获取实时定位
通过你获取的key放到项目manifest.json里面,对应填写你所需要的key值,还有高德用户名 用户名: key值的位置: 代码: html: <view class"intList pdNone"><view class"label">详细地…...
![](https://www.ngui.cc/images/no-images.jpg)
linux的source命令
用法 source file 也可以用.空格file来代替 . file 作用 在当前bash环境下读取并执行FileName中的命令. source(或点)令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile等配置文件. 简单的说就是: source命令会把file里的命令在当前shell里一…...
![](https://www.ngui.cc/images/no-images.jpg)
特种作业操作证(焊接与热切割作业)2024年理论考试题库。
1.关于隐弧排烟罩下列说法正确的是()。 A.这类排烟罩适用于焊接大而长的焊件时排除电焊烟尘和有毒气体 B.这类排烟罩对焊接区实行密闭,能最大限度地减少臭氧等有毒气体的弥散 C.利用压缩空气从主管中高速喷出时,在副管形成负压…...
![](https://img-blog.csdnimg.cn/direct/e28aa01cc2824f8e8817a62f29a76d13.png)
免交互和嵌入执行模式
目录 概念 语法格式 统计行数 赋值变量 修改密码编辑往文件里添加内容 编辑编辑引入变量 整体赋值编辑 加引号不赋值变量 expect实现免交互 免交互设置密码 免交互切换用户 嵌入执行模式 添加用户并免交互设置密码 免交互登录 传参实现ssh 练习 概念 …...
![](https://i-blog.csdnimg.cn/direct/d4b4218775d44dd9abbb0f284106f0d7.png)
Hadoop版本演变、分布式集群搭建
Hadoop版本演变历史 Hadoop发行版非常的多,有华为发行版、Intel发行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP),这些发行版都是基于Apache Hadoop衍生出来的。 目前Hadoop经历了三个大的版本。 hadoop1.x:HDFSMapReduce hadoop2.x…...
![](https://www.ngui.cc/images/no-images.jpg)
【Qt C++实现绘制仪表盘】
要在Qt C中绘制仪表盘,您可以使用QChart、QSeries、QBarSeries、QPointSeries等类。以下是一个简单的示例,演示如何使用这些类创建一个绘图仪表盘: #include <QApplication> #include <QChart> #include <QChartView> #in…...
![](https://www.ngui.cc/images/no-images.jpg)
一文看懂LLaMA 2:大型多模态模型的新里程碑
一文看懂LLaMA 2:大型多模态模型的新里程碑 LLaMA 2是OpenAI继GPT-3之后推出的又一重磅模型,它不仅在文本生成方面有所突破,而且在图像处理和语音识别等领域也展现出了令人印象深刻的能力。本文将全面介绍LLaMA 2的背景、技术细节、应用场景…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Spring Boot构建淘客返利平台
基于Spring Boot构建淘客返利平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过…...
![](https://img-blog.csdnimg.cn/direct/94f31d0ecbdf404491a41357843ea49a.png)
Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)
用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮,给它设置样式,并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…...
![](https://www.ngui.cc/images/no-images.jpg)
Java导出Excel并邮件发送
一、导出Excel 添加maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.10-FINAL</version></dependency><dependency><groupId>org.apache.poi</groupI…...
![](https://img-blog.csdnimg.cn/img_convert/1749a8c86d6e38798d8e1ed9f073b8a9.png)
【课程总结】Day12:YOLO的深入了解
前言 在【课程总结】Day11(下):YOLO的入门使用一节中,我们已经了解YOLO的使用方法,使用过程非常简单,训练时只需要三行代码:引入YOLO,构建模型,训练模型;预测…...
![](https://www.ngui.cc/images/no-images.jpg)
保护隐私,释放智能:使用LangChain和Presidio构建安全的AI问答系统
保护隐私,释放智能:使用LangChain和Presidio构建安全的AI问答系统 在人工智能(AI)飞速发展的今天,AI问答系统已经成为企业与客户互动的重要工具。然而,随之而来的个人数据隐私问题也日益凸显。如何在不泄露…...
![](https://www.ngui.cc/images/no-images.jpg)
【高考志愿】自动化
目录 一、专业概述 二、课程设计 三、就业前景与方向 四、志愿填报 五、自动化专业排名 一、专业概述 高考志愿自动化专业选择,无疑是迈向现代化工业与科技发展的一把金钥匙。自动化专业,作为现代工程领域的重要支柱,融合了计算机、电子…...
![](https://img-blog.csdnimg.cn/img_convert/3f0a800dae76e07ea45f3b2bae00e4c9.png)
技巧类题目
目录 技巧类题目 136 只出现一次的数字 191 位1的个数 231. 2 的幂 169 多数元素 75 颜色分类 (双指针) 287. 寻找重复数 136 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue3自定义指令参数修饰符值(3)
自定义指令参数修饰符值 在vue3中我们如何获取自定义的参数的内容,并根据业务来修改展示的内容呢,需要依靠mounted方法中的bindings参数来获取。 参考实例 directives/unit.js文件 export default function directiveUnit(app){app.directive("unit",{…...
![](https://img-blog.csdnimg.cn/direct/fd11adb16871497ebd8d608d9c283647.png)
HTML(23)——垂直对齐方式
垂直对齐方式 属性名:vertical-align 属性值效果baseline基线对齐(默认)top顶部对齐middle居中对齐bottom底部对齐 默认情况下浏览器对行内块,行内标签都按文字处理,默认基线对齐 导致图片看起来会偏上,文字偏下。 示例&#…...
![](https://www.ngui.cc/images/no-images.jpg)
linux查看二进制文件
在Linux中,查看二进制文件可以使用hexdump或xxd命令。 例如,要查看一个名为example.bin的二进制文件的内容,可以使用以下命令之一: 使用hexdump: bash hexdump -C example.bin使用xxd: bash xxd exam…...
![](https://img-blog.csdnimg.cn/direct/94149acfc3544ac9b2a48f55948e8178.jpeg)
营销翻车,杜国楹出面道歉,小罐茶的“大师作”故事仓皇结尾
“小罐茶,大师作”,这句slogan曾一度在央视平台长时间、高密度播放,成为家喻户晓的广告词,也打响了小罐茶品牌的名号。但同时,市场上关于“大师作”真实性的质疑也从未停息。 就在6月25日小罐茶十二周年发布会上&#…...
![](https://www.ngui.cc/images/no-images.jpg)
linux server下人脸检测与识别服务程序的系统架构设计
一、绪论 1.1 定义 1.2 研究背景及意义 1.3 相关技术综述 二、人脸检测与识别技术概述 2.1 人脸检测原理与算法 2.2 人脸识别技术及方法 2.3 人脸识别过程简介 三、人脸检测与识别服务程序的系统架构 3.1 系统架构设计 3.2 技术实现流程 四、后续设计及经验瞎谈 4.…...
![](https://img-blog.csdnimg.cn/direct/c71a6cf8ba9b43489ee4adbf9104c6f9.png)
安装CLion配置opencv和torch环境
配置操作如图,源码见底部附录部分 安装CLion 官网下载 创建项目 设置环境 调整类型为release 配置opencv和项目 编译环境 编译后 重启CLion 测试opencv环境 测试代码 运行main.cpp显示图片 测试torch环境 没标红表示配置成功 附件 CMakeList.txt cmake_mi…...
![](https://img-blog.csdnimg.cn/direct/58e4b6be286b40fea9584d57476c4d5e.png)
[leetcode]number-of-longest-increasing-subsequence
. - 力扣(LeetCode) class Solution { public:int findNumberOfLIS(vector<int> &nums) {int n nums.size(), maxLen 0, ans 0;vector<int> dp(n), cnt(n);for (int i 0; i < n; i) {dp[i] 1;cnt[i] 1;for (int j 0; j < i…...
![](https://img-blog.csdnimg.cn/direct/6abcbe72570746de8e5e908ef8beeb8d.png)
[MYSQL] MYSQL库的操作
前言 本文主要介绍MYSQL里 库 的操作 请注意 : 在MYSQL中,命令行是不区分大小写的 1.创建库 create database [if not exists] database_name [charsetutf8 collateutf8_general_ci] ...] create database 是命名语法,不可省略[if not exists] 如果不存在创建,如果存在跳过…...
![](https://img-blog.csdnimg.cn/direct/a3e77a2a189741608f1bc26fcc8b6dc3.png)
OpenSSL的一些使用案例
目录 一、介绍 二、基本使用 1、Shell (1)文件加解密 (2)生成密钥文件 2、API (1)md5sum (2)AES256加解密 一、介绍 本篇博客重点不是详细描述 OpenSSL 的用法,只…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring事务十种失效场景
首先我们要明白什么是事务?它的作用是什么?它在什么场景下在Spring框架下会失效? 事务:本质上是由数据库和程序之间交互的过程中的衍生物,它是一种控制数据的行为规则。有几个特性 1、原子性:执行单元内,要…...
![](https://img-blog.csdnimg.cn/direct/3423ff40a1144c41b42fd1a206dc8b60.png)
2024华为数通HCIP-datacom最新题库(变题更新⑤)
请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…...
![](https://www.ngui.cc/images/no-images.jpg)
ananconda 和 pip傻傻分不清???
Anaconda 和 pip 都是 Python 编程语言中用于管理包(libraries)和环境的工具,但它们在功能和设计理念上有所不同。 Anaconda Anaconda 是一个面向科学计算的发行版,包括了 Python 语言和许多常用的科学计算及数据分析库。Anacon…...
![](https://img-blog.csdnimg.cn/direct/87baf1a25d6a43cb8887a52ff9000140.png)
在卷积神经网络(CNN)中为什么可以使用多个较小的卷积核替代一个较大的卷积核,以达到相同的感受野
在卷积神经网络(CNN)中为什么可以使用多个较小的卷积核替代一个较大的卷积核,以达到相同的感受野 flyfish 在卷积神经网络(CNN)中,可以使用多个较小的卷积核替代一个较大的卷积核,以达到相同的…...
![](https://img-blog.csdnimg.cn/img_convert/66bce2865ef256dedb4b3bad3488b618.webp?x-oss-process=image/format,png)
震惊!张宇强化36讲1200页,暑期强化高效利用指南!
特别喜欢张宇老师的讲课风格 如果你打算跟张宇老师,那么基础——>强化——>冲刺,你应该这么买书! 张宇老师25版课程大改版,其中,36讲的变动是最大的,张宇老师25版课程把以往的强化课程前移࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
透视全新哈弗H6:价格“高开低走”,销量能否进阶尚待观察
全新哈弗H6的发布会主题为“底线与进阶”,关于这两个词品牌方有自己的解读,第三方也可以有自己的理解。新款车的价格坚守住的底线,只不过还是采用了“高开低走”的方案。新款1.5T7DCT系列,售价11.79、12.39、13.19万元新款2.0T9DCT系列,售价13.39、14.39万元对于一辆紧凑级…...
![](https://img-blog.csdnimg.cn/direct/8ae37b8e4bc04176923bbae9cc5d1a6f.png)
大模型“1元购”?AI公司加速奔向应用端“大航海时代”
自字节跳动发布豆包大模型,互联网大厂纷纷就位,击穿“地板价”的打法从C端向B端拓展。这也成为今年“618”最亮眼的价格战。 5月15日,字节跳动率先宣布豆包大模型已通过火山引擎开放给企业客户,大模型定价降至0.0008元/千Tokens&…...
![](https://img-blog.csdnimg.cn/direct/11ed2391ac7940c19290b5755927fde1.png)
gpt-4o继续迭代考场安排程序 一键生成考场清单
接上两篇gpt-4o考场安排-CSDN博客,考场分层次安排,最终exe版-CSDN博客 当然你也可以只看这一篇。 今天又添加了以下功能,程序见后。 1、自动分页,每个考场打印一页 2、添加了打印试场单页眉 3、添加了页脚 第X页,…...
![](https://img-blog.csdnimg.cn/direct/b662b33963274c75a2cee34c78c974bc.png)
于AI对话 --如何更好的使用AI工具
文章目录 于AI对话 --如何更好的使用AI工具1、认识AI工具:2、对话原则:3、提问步骤:4、AI可以学习什么?5、提问技巧:1、提出假设性问题:2、(鼓励引导式提问)跨学科思考:举个例子: 3、…...
![](https://www.ngui.cc/images/no-images.jpg)
戴尔台式机win10家庭版操作系统,插上耳机之后听不到声音。(成功解决)
问题描述 戴尔台式机win10家庭版操作系统,外放有声音,插上耳机之后只有滋啦滋啦的声音,听不到音乐,耳机无损坏(在其他台式机和手机上都能听到声音)。尝试解决办法如下。 尝试解决 尝试一:更新…...
![](https://img-blog.csdnimg.cn/d8b810c80cec4359a11ff9c972bd02d3.gif#pic_center)
【项目】教你手把手完成博客系统(三)显示用户信息 | 实现退出登录 | 实现发布博客
文章目录 教你手把手完成博客系统(三)7.实现显示用户信息1.约定前后端交互接口2.前端通过ajax发起请求3.服务器处理请求 8.实现退出登录1.约定前后端的接口2.前端发起请求3.服务器处理请求 9.实现发布博客1.约定前后端的交互接口2.前端构造请求3.服务器处…...