超市进销存之openGauss数据库的应用与实践

news2024/12/26 21:48:09

目录

一、背景

二、目的

三、什么是“进销存”,什么是超市进销存管理系统?

四、什么是openGauss数据库?

五、应用与实践(模拟超市进销存系统)

1、超市进销存数据库表设计

2、创建数据库表

3、手工插入数据

4、添加约束

5、创建视图

6、创建存储过程

7、新建用户并授权访问

六、总结


一、背景

数字经济时代,数据处理需求大规模增长,数据库在充分挖掘数据资产价值、赋能产业数字化转型、推进数字经济生态建设过程中发挥着重大作用。经营管理一家超市,无论是商品的管理、商品采购的管理还是商品销售的管理,如果单纯依靠纯人工管理,不仅工作量巨大,且容还容易出错,造成不可预估的损失等。基于此,数据库的选择与设计就尤为重要。

 

二、目的

本文以零售行业为场景,设计数据库模型,并使用openGauss数据库构建零售业务场景下的超市进销存数据库。通过对数据库中对象(表、数据类型视图、约束存储过程用户等)的创建,掌握openGauss数据库基础SQL语法,并通过对表中数据的增删改查,模拟零售行业下的业务实现。

什么是“进销存”,什么是超市进销存管理系统?

进销存软件概念起源于上世纪80年代,由于电算化的普及,计算机管理的广泛推广,不少企业对于仓库货品的进货,存货,出货管理,有了强烈的诉求,基于此,进销存软件的发展从此便开始了。

进入90年代以后,随着进销存软件的应用面越来越广,出现了许多从功能上,从用途上,更为全面的进销存系统,从单纯的货品数量管理,扩展为货品的流程管理,进销存软件对每一批货品的来源、存放、去向,都作了详细的记录,随后即延伸为财务进销存一体化的管理模式。

进销存是指企业管理过程中采购(进)——入库(存)——销售(销)的动态管理过程。主要可以分为如下两条线:

  1. 商品流通企业的进销存是从商品的采购(进)——入库(存)——销售(销)的动态管理过程。
  2. 工业企业的进销存是从原材料的采购(进)——入库(存)——领料加工——产品入库(存)——销售(销)的动态管理过程。

四、什么是openGauss数据库

openGauss是一个数据库管理系统。数据库是结构化的数据集合。它可以是任何数据,购物清单、图片库或公司网络中的大量信息。数据库管理系统可以对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。由于计算机非常擅长处理大量数据,因此数据库管理系统可以作为独立程序使用,也可以作为其他应用程序的一部分在计算中发挥着核心作用。  

openGauss数据库是关系型的。关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。行和列被称为表,一组表组成了数据库。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。   

openGauss的SQL部分代表 “结构化查询语言”。SQL是最常用的用于访问和处理数据库的标准计算机语言。根据系统的编程环境,用户可以直接输入SQL、将SQL语句嵌入到以另一种语言编写的代码中,或者使用包含SQL语法的特定语言 API。openGauss支持标准的SQL92/SQL99/SQL2003/SQL2011规范

、应用与实践(模拟超市进销存系统)

说明:以库表涉及到的字段类型、sql语句等均是基于openGauss数据库进行的。

1、超市进销存数据库表设计

本次设计仅从最基本的核心表设计出发,完成最基本的进销存管理任务,具体涉及如下几张核心表,如遇临时表或者视图或者存储过程,则均以SQL的形式实现:

用户管理表User_info

 

供应商信息表(supplier_info)

 

订货单信息表(order_info

 

进货信息表(Purchase_goods_info)

 

仓库信息表(warehouse_info

 

商品信息表(goods_info)

 

出库信息表(Outwarehouse_info)

销售清单信息表(sell_list_info)

 

销售信息表(sell_info)

 

客户管理表(customer_info)

2、创建数据库表

前置条件:已成功安装openGauss数据库。

2.1、创建超市(零售行业)数据库(retail_db)。

1.切换到omm用户,以操作系统用户omm登录数据库主节点。

2.启动数据库。

3.使用gsql工具登陆数据库。

su - omm

gs_om -t start

gsql -d postgres -p  26000 -r

4.创建数据库retail_db。

CREATE DATABASE retail_db ENCODING 'UTF8' template = template0;

5.连接retail_db数据库。

\connect retail_db

6.创建名为retail_db的schema,并设置retail_db为当前的schema。

CREATE SCHEMA retail_db;

7.将默认搜索路径设为retail_db。

SET search_path TO retail_db;

2.2、创建用户管理表User_info

在SQL编辑框中输入如下语句,创建用户管理表user_info

删除表 user_info

DROP TABLE IF EXISTS user_info;

创建表 user_info

CREATE TABLE user_info

(

 u_id int PRIMARY KEY

,u_name char(20) not null

,u_mail char(20) unique not null

,u_id_card char(20) not null

,u_phone char(20) not null

,u_password char(20) not null

,u_role int not null

);

2.3、创建供应商信息表(supplier_info)

在SQL编辑框中输入如下语句,创建表supplier_info

删除表 supplier_info

DROP TABLE IF EXISTS supplier_info;



创建表 supplier_info

CREATE TABLE supplier_info

(

 supplier_id int PRIMARY KEY

,supplier_name char(20) not null

,supplier_address varchar(100) not null

,supplier_phone char(20) not null

,supplier_type int not null

,remark varchar(100)

);

2.4、创建订货单信息表(order_info

在SQL编辑框中输入如下语句,创建表order_info

删除表 order_info

DROP TABLE IF EXISTS order_info;



创建表 order_info

CREATE TABLE order_info

(

 order_id int PRIMARY KEY

,order_date date not null

,supplier_id int not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_home varchar(100) not null

,goods_number int not null

,goods_amount int not null

,goods_sum_amount int not null

,remark varchar(100)

);

2.5、创建进货信息表(Purchase_goods_info)

在SQL编辑框中输入如下语句,创建表purchase_goods_info

删除表 Purchase_goods_info

DROP TABLE IF EXISTS Purchase_goods_info;



创建表 Purchase_goods_info

CREATE TABLE Purchase_goods_info

(

 Purchase_goods_id int PRIMARY KEY

,goods_id char(30) not null

,Purchase_goods_number int not null

,Purchase_goods_amount int not null

,Purchase_goods_date date not null

,supplier_id int not null

,operator int not null

,remark varchar(100)

);

2.6、创建仓库信息表(warehouse_info

在SQL编辑框中输入如下语句,创建表warehouse_info

删除表 warehouse_info

DROP TABLE IF EXISTS warehouse_info;



创建表 warehouse_info

CREATE TABLE warehouse_info

(

 warehouse_id int PRIMARY KEY

,warehouse_address varchar(100) not null

,warehouse_name varchar(100) not null

,warehouse_operator int not null

,remark varchar(100)

);

2.7、创建商品信息表(goods_info)

在SQL编辑框中输入如下语句,创建表goods_info

删除表 goods_info

DROP TABLE IF EXISTS goods_info;



创建表 goods_info

CREATE TABLE goods_info

(

 goods_id char(20) PRIMARY KEY

,goods_code varchar(50) not null

,goods_name char(20) not null

,goods_home varchar(100) not null

,goods_number int not null

,Purchase_goods_amount int not null

,sell_goods_amount int not null

,goods_type char(20) not null

,supplier_id int not null

,warehouse_id int not null

,remark varchar(100)

);

2.8、创建出库信息表(Outwarehouse_info)

在SQL编辑框中输入如下语句,创建表outwarehouse_info

删除表 outwarehouse_info

DROP TABLE IF EXISTS outwarehouse_info;



创建表 outwarehouse_info

CREATE TABLE outwarehouse_info

(

 outwarehouse_id int PRIMARY KEY

,goods_id char(20) not null

,Outwarehouse_number int not null

,Outwarehouse_date date not null

,operator int not null

,remark varchar(100)

);

2.9、创建销售清单信息表(sell_list_info)

在SQL编辑框中输入如下语句,创建表sell_list_info

删除表 sell_list_info

DROP TABLE IF EXISTS sell_list_info;



创建表 sell_list_info

CREATE TABLE sell_list_info

(

 sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,goods_measurement_unit char(10) not null

,sell_goods_amount int not null

,remark varchar(100)

);v

2.10、创建销售信息表(sell_info)

在SQL编辑框中输入如下语句,创建表sell_info

删除表 sell_info

DROP TABLE IF EXISTS sell_info;



创建表 sell_info

CREATE TABLE sell_info

(

 sell_id int PRIMARY KEY

,sell_goods_sum_amount int not null

,customer_phone char(20) not null

,remark varchar(100)

);

2.11、创建客户管理表(customer_info)

在SQL编辑框中输入如下语句,创建表customer_info

删除表 customer_info

DROP TABLE IF EXISTS customer_info;



创建表 customer_info

CREATE TABLE customer_info

(

 customer_id int PRIMARY KEY

,customer_name char(20) not null

,customer_phone char(20) not null

,customer_point int not null

,remark varchar(100)

);v

3、手工插入数据

示例(模拟初始化部分表):

3.1对user_info表进行插入数据操作,在SQL编辑框中输入如下语句:

INSERT INTO user_info (u_id,u_name,u_mail,u_id_card,u_phone,u_password,u_role)

VALUES (001,'张一','zhangyi@openGauss.com','2023001','12345678901','openGauss_001',1);

INSERT INTO user_info (u_id,u_name,u_mail,u_id_card,u_phone,u_password,u_role)

VALUES (002,'张二','zhanger@openGauss.com','2023002','12345678902','openGauss_002',2);

INSERT INTO user_info (u_id,u_name,u_mail,u_id_card,u_phone,u_password,u_role)

VALUES (003,'张三','zhangsan@openGauss.com','2023003','12345678903','openGauss_003',3);

INSERT INTO user_info (u_id,u_name,u_mail,u_id_card,u_phone,u_password,u_role)

VALUES (004,'张四','zhangsi@openGauss.com','2023004','12345678904','openGauss_004',4);

INSERT INTO user_info (u_id,u_name,u_mail,u_id_card,u_phone,u_password,u_role)

VALUES (005,'张五','zhangwu@openGauss.com','2023005','12345678905','openGauss_005',5);

3.2对supplier_info表进行插入数据操作,在SQL编辑框中输入如下语句:

INSERT INTO supplier_info(supplier_id,supplier_name,supplier_address,supplier_phone,supplier_type,remark)

VALUES(001,'xxx水果批发商','西安市高陵区xxx','12345678901',1,'');

INSERT INTO supplier_info(supplier_id,supplier_name,supplier_address,supplier_phone,supplier_type,remark)

VALUES(002,'xxx日用百货批发商','西安市雁塔区xxx','12345678902',2,'');

INSERT INTO supplier_info(supplier_id,supplier_name,supplier_address,supplier_phone,supplier_type,remark)

VALUES(003,'xxx烟酒饮料批发商','西安市未央区xxx','12345678903',3,'');

INSERT INTO supplier_info(supplier_id,supplier_name,supplier_address,supplier_phone,supplier_type,remark)

VALUES(004,'xxx零食批发商','西安市碑林区xxx','12345678904',4,'');

INSERT INTO supplier_info(supplier_id,supplier_name,supplier_address,supplier_phone,supplier_type,remark)

VALUES(005,'xxx柴米油盐酱醋批发商','西安市新城区xxx','12345678905',5,'');v

3.3

对warehouse _info表进行插入数据操作,在SQL编辑框中输入如下语句:

INSERT INTO  warehouse_info (warehouse_id,warehouse_address,warehouse_name,warehouse_operator,remark)

VALUES(001,'园区100-1','1号仓库',4,'');

INSERT INTO  warehouse_info (warehouse_id,warehouse_address,warehouse_name,warehouse_operator,remark)

VALUES(002,'园区100-2','2号仓库',4,'');

INSERT INTO  warehouse_info (warehouse_id,warehouse_address,warehouse_name,warehouse_operator,remark)

VALUES(003,'园区100-3','3号仓库',4,'');

3.4对sell_list_info表进行插入数据操作,在SQL编辑框中输入如下语句:

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023001,'2023-01-16 10:01:00','CS001','食用油',1,'桶',98,'');

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023001,'2023-01-16 10:01:00','CS002','猪肉',10,'斤',160,'');

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023002,'2023-01-16 11:01:00','CS001','食用油',1,'桶',98,'');

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023002,'2023-01-16 11:01:00','CS002','猪肉',10,'斤',160,'');

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023003,'2023-01-16 12:01:00','CS001','食用油',1,'桶',98,'');

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number, goods_measurement_unit,sell_goods_amount,remark)

VALUES(2023003,'2023-01-16 12:01:00','CS002','猪肉',10,'斤',160,'');

……

4、添加约束

现实场景中,销售清单信息表(sell_list_info)中的商品售价不可能为负数,因此针对表中金额的属性,增加大于0的约束条件。

为销售清单信息表(sell_list_info)的 sell_goods_amount字段增加大于0的约束条件:

ALTER table sell_list_info ADD CONSTRAINT c_sell_goods_amount CHECK (sell_goods_amount >=0);

尝试手工插入一条金额小于0的记录:

INSERT INTO sell_list_info(sell_id,sell_date,goods_id,goods_name,goods_number,measurement_unit,sell_goods_amount,remark)

VALUE(2023003,'2023-01-16 12:01:00','CS002','猪肉',10,'斤',-160,'');

执行失败,失败原因:new row for relation " sell_list_info" violates check constraint "c_sell_goods_amount "。

5创建视图

视图是一个虚拟表,是sql的查询结果,其内容由查询定义。对于来自多张关联表的复杂查询,就不得不使用十分复杂的SQL语句进行查询,造成极差的体验感。使用视图之后,可以极大的简化操作,使用视图不需要关心相应表的结构、关联条件等。

场景:创建一视图,统计2023-01-16这一天所有销售商品的销售总数量和总销售额,以及其对应的仓库编号和供应商编号(仓库和供应商可进一步关联),并按销售总数量降序排列。

create view v_goods_sell_sum as

select t1.goods_id

      ,t1.goods_name

  ,t1.sum_num

  ,t1.sum_amount

      ,t2.supplier_id

      ,t2.warehouse_id

from

(SELECT goods_id

      ,goods_name

  ,sum(goods_number) as sum_num

  ,sum(sell_goods_amount) as sum_amount

from sell_list_info

where SUBSTR(sell_date,1,10) ='2023-01-16'

group by goods_id ,goods_name

)t1

left join goods_info t2

on t1.goods_id =t2.goods_id

order by sum_num desc

使用视图进行查询

select * from v_goods_sell_sum;

6、创建存储过程

存储过程是能够完成特定功能的SQL语句集。用户可以进行反复调用,从而减少SQL语句的重复编写数量,提高工作效率。

场景:定义一个定时任务,将每天各个收银台生成的销售数据定时同步到生产表。假定超市有5个收银台, 对应5个结构完全相同的基础表和一个生产表(这样设计的目的之一是防止瓶颈或锁表),然后在每天销售工作结束后,启动定时任务。

基础表结构(1-5):

CREATE TABLE sell_list_info_tmp1

(

 sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,goods_ measurement_unit char(10) not null

,sell_goods_amount int not null

);

……

生产表结构(实际场景可设计成分区表,按天存储)

CREATE TABLE sell_list_info

(

 sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,goods_ measurement_unit char(10) not null

,sell_goods_amount int not null

);

--定义存储过程(在SQL编辑框中输入如下语句,最后输入“/” 执行)

CREATE PROCEDURE insert_data()  

IS

 BEGIN

 INSERT INTO sell_list_info select * from sell_list_info_tmp1;  

 INSERT INTO sell_list_info select * from sell_list_info_tmp2;  

 INSERT INTO sell_list_info select * from sell_list_info_tmp3;  

 INSERT INTO sell_list_info select * from sell_list_info_tmp4;  

 INSERT INTO sell_list_info select * from sell_list_info_tmp5;  

END;

/

示例截图:

--调用存储过程

CALL  insert_data();

7、新建用户并授权访问

假设新增了一个管理用户,该用户想访问零售数据库(retail_db),则该员工需要向sys申请添加相关权限,具体操作如下:

7.1 连接数据库后,进入SQL命令界面。创建用户user002,密码为openGauss@123。

CREATE USER user002 IDENTIFIED BY 'openGauss@123';

7.2 给用户user002授予retail_db数据库下的订货单信息表(order_info)的查询和插入权限:

GRANT SELECT,INSERT ON order_info TO user002;

7.3退出数据库:

postgres=#\q

7.4新用户连接数据库

用gsql登录数据库,使用新用户连接。使用操作系统omm用户在新的窗口登陆并执行以下命令,并输入对应的密码:

gsql -d retail_db -U user002 -p 26000 –r

7.5访问order_info数据库的表order_info:

select * from order_info;

总结

超市进销存管理系统是一个庞大复杂的系统,进销存软件涉及的模块也是非常之多,主要包括前端的交互(销售过程管理)、后端的管理(客户管理、用户管理、货品采购管理、货品入库/出库管理、财务总账管理、维护管理、优化改进管理等等),甚至可以上升到后台整个企业的管理(ERP)。 由此可以延伸到整个物理架构设计、逻辑架构设计、数据管理(治理)方案、数据存储策略等。  

本文设计仅从最基本的核心表设计出发,使用openGauss数据库,完成最基本的超市进销存管理任务,其他更多细节,欢交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python:使用xlrd过滤execl表中数据

一、写代码前需要注意事项首先我们需要注意:python xlrd库的新版本2.0.1版本移除了对.xlsx格式的支持,只支持.xls格式。报错信息如下:File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/xlrd/__ini…

react17+ts 学习

文章目录前言一、创建一个react项目启动项目项目打包打包命令npm run eject的作用入口文件分析react的设计理念二、创建一个reacttypescript的项目创建项目命令如何让react支持json引入不报错react为什么使用jsxjsx特点jsx命令规范jsx表示对象如何在jsx中防止注入攻击&#xff…

Spring的三种装配机制(XML、JavaConfig、自动配置)

Spring中bean有三种装配机制 一、在xml中显示装配 1. 基本类型装配 Data NoArgsConstructor AllArgsConstructor public class Student{private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String Stri…

Linux常见命令 14 - 软/硬连接命令 ln

目录 1. 软连接 ln -s 2. 硬连接 ln 目前Linux中比较常用的是软连接&#xff0c;硬连接不常用&#xff0c;掌握基本的软连接常识即可 1. 软连接 ln -s 语法&#xff1a;ln -s [源文件] [目标文件] liuSLR:/hd1/Dling/lane/Wmq/test$ ln -s hello.txt hello.txt.soft liuS…

28. 实战:基于selenium实现12306自动购票

目录 前言 目的 思路 代码实现 1. 进入登录界面&#xff0c;输入账号密码 2. 点击登录按钮&#xff0c;完成滑块验证 3. 在个人中心点击购票&#xff0c;跳转 4. 输入出发地、目的地&#xff0c;从控制台输入得到 5. 文本框输入出发日 6. 若是学生票则切换票型 7. 点…

离线增量文章画像计算

2.5 离线增量文章画像计算 学习目标 目标 了解增量更新代码过程应用 无 2.5.1 离线文章画像更新需求 文章画像&#xff0c;就是给每篇文章定义一些词。 关键词&#xff1a;TEXTRANK IDF共同的词 主题词&#xff1a;TEXTRANK ITFDF共同的词 更新文章时间&#xff1a; 1、…

10.1002.1:VectorDraw Web /VectorDraw Developer Crack

VectorDraw 网络库 VectorDraw Web Library 是一个矢量图形库&#xff0c;旨在不仅可以打开 CAD 绘图&#xff0c;还可以在任何支持 HTML 5 标准的平台&#xff08;例如 Windows、Android、IOS 和 Linux&#xff09;上显示通用矢量对象。它可以在支持使用 canvas 和 Javascript…

DW动手学数据分析Task3:数据重构)

目录1 数据的合并1.1合并方法一&#xff1a;用concat函数1.2 合并方法二&#xff1a;使用DataFrame自带的方法join方法和append1.3 合并方法三&#xff1a;使用Panads的merge方法和DataFrame的append方法2 换一种角度看数据3 数据聚合与运算3.1 groupby机制3.2 数据运算1 数据的…

论文浅尝 | 利用常识知识图增强零样本和少样本立场检测

笔记整理&#xff1a;张嘉芮&#xff0c;天津大学硕士链接&#xff1a;https://aclanthology.org/2021.findings-acl.278.pd动机传统的数据驱动方法不适用于零样本和少样本的场景。对于人类来说&#xff0c;常识知识是理解和推理的关键因素。在没有标注数据和用户立场的隐晦表达…

2022最新MySQL高频面试题汇总

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

【C进阶】通讯录1.0(文末附原码)

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C语言进阶 ⭐代码仓库&#xff1a;C Advanced 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们…

数据结构进阶 unordered_set unordered_map的使用

作者&#xff1a;小萌新 专栏&#xff1a;数据结构进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍高阶数据结构 unorder_set unorder_map的使用 unorder_set unorder_mapunordered系列关联式容器unordered_set介绍unordere…

微信小程序流量主提升ecpm的一些方法

本篇文章主要讲解:微信小程序流量主提升ecpm的一些方法 日期:2023年1月19日 作者:任聪聪 一、对ecpm的疑问和科普 什么是ecpm ecpm就是千次广告曝光收入,是一个预估的价格,而不是额定的,他是随着曝光度,用户点击度,页面访问数来决定的。 ecpm为什么会低? 微信官方…

KaiwuDB 数据服务平台 1.0 产品详解

大家好&#xff0c;今天我分享的是 KaiwuDB 数据服务平台&#xff08;KDP&#xff09;&#xff0c;一款由我们独立自主研发&#xff0c;以 KaiwuDB 为核心的数据服务产品。KDP 产品建设目标是实现数据的云边端的一体化治理&#xff0c;提供一套完整的全生命周期服务。接下来我将…

2.5、线程概念和多线程模型

整体框架 1、什么是线程&#xff0c;为什么要引入线程&#xff1f; 还没有引入进程之前&#xff0c;各个程序只能串行执行 进程是程序的一次执行过程&#xff0c;但这些功能显然不可能是由一个程序顺序处理就能实现的 有的进程可能需要 “同时” 做很多事&#xff0c;而传统的…

伯俊ERP与金蝶云星空对接集成连通应收单新增

伯俊ERP与金蝶云星空对接集成表头表体组合查询连通应收单新增(应收单-标准应收单&#xff08;KD应收单销售退)数据源系统:伯俊ERP未来&#xff0c;伯俊科技也会砥砺前行&#xff0c;不断为品牌提供更全面的零售终端致胜利器。伯俊科技始终坚持创新发展&#xff0c;探索大零售行…

【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar

【IDEA】自动部署SpringBoot Jar包到远程服务器并通过脚本启动jar 文章目录 前言一.Deployment使用二.ssh使用三.启动脚本 前言 IDEA版本: 2019.3 一.Deployment使用 IDRA原生的Deployment不需要离开idea就可以直接将项目部署到远程运行&#xff0c;同时拥有远程视图窗口…

高并发系统设计 --计数服务抽离

传统计数 模糊计数 Cache DB。写Cache&#xff0c;批量刷新DB。 有一个写请求&#xff0c;我们就写cache&#xff0c;写一个在cache中1&#xff0c;buffer记一个&#xff0c;差不多&#xff08;buffer满了&#xff0c;时间到了&#xff09;写一次DB&#xff0c;丢数据也就丢…

JVM快速入门学习笔记(二)

临近过年&#xff0c;事太多&#xff0c;学习效率也好低&#xff0c;最近已经好久没搞学习了&#xff0c;发篇简单的学习笔记意思下吧 5. 沙箱安全机制 Java安全模型的核心就是Java沙箱&#xff08;sandbox&#xff09;&#xff0c;什么是沙箱&#xff1f;沙箱是一个限制程序运…

Oracle 12c多租户特性详解:从Schema到PDB的变化与隔离

CDB和PDB的职责分离一些数据库管理员管理整个CDB&#xff0c;而另一些管理员管理单个的pdb。.管理整个CDB的dba作为普通用户连接到CDB&#xff0c;管理整个CDB和根的属性&#xff0c;以及pdb的一些属性。例如&#xff0c;这些dba可以创建、拔出、插入和删除pdb。它们还可以为根…