idea+springboot+jpa+maven+jquery+mysql进销存管理系统源码

news2024/11/26 23:47:29

idea+springboot+jpa+maven+jquery+mysql进销存管理系统

  • 一、系统介绍
    • 1.环境配置
  • 二、系统展示
    • 1. 管理员登录
    • 2.首页
    • 3.采购订单
    • 4.收货入库
    • 5. 采购退货
    • 6. 商品入库
    • 7. 商品出库
    • 8. 库存查询
    • 9.商品移库
    • 10.库存盘点
    • 11.销售订单
    • 12.发货出库
    • 13.销售退货
    • 14.商品查询
    • 15. 供应商查询
    • 16.客户查询
    • 17.销售查询
    • 18.销售统计
    • 19.商品资料
    • 20.供应商资料
    • 21.客户资料
    • 22.用户管理
  • 三、部分代码
    • CustomerRepository.java
    • SaleController.java
    • Customer.java
  • 四、其他
    • 获取源码


一、系统介绍

本系统实现了进销存管理系统,管理端实现了管理员登录、首页、采购订单、收货入库、采购退货、商品入库、商品出库、库存查询、商品移库、库存盘点、销售订单、发货出库、销售退货、商品查询、供应商查询、客户查询、销售查询、销售统计、商品资料、供应商资料、客户资料、用户管理

1.环境配置

JDK版本:1.8
Mysql:5.7

二、系统展示

1. 管理员登录

在这里插入图片描述

登录用户名密码:admin 123456

2.首页

在这里插入图片描述

3.采购订单

在这里插入图片描述

4.收货入库

在这里插入图片描述

5. 采购退货

在这里插入图片描述

6. 商品入库

在这里插入图片描述

7. 商品出库

在这里插入图片描述

8. 库存查询

在这里插入图片描述

9.商品移库

在这里插入图片描述

10.库存盘点

在这里插入图片描述

11.销售订单

在这里插入图片描述

12.发货出库

在这里插入图片描述

13.销售退货

在这里插入图片描述

14.商品查询

在这里插入图片描述

15. 供应商查询

在这里插入图片描述

16.客户查询

在这里插入图片描述

17.销售查询

在这里插入图片描述

18.销售统计

在这里插入图片描述

19.商品资料

在这里插入图片描述

20.供应商资料

在这里插入图片描述

21.客户资料

在这里插入图片描述

22.用户管理

在这里插入图片描述

三、部分代码

CustomerRepository.java

package com.xu.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.xu.bean.Customer;


public interface CustomerRepository extends JpaRepository<Customer,Long>{

	@Query("from Customer where customer_name = ?1")
	public Customer findCustomerByName(String name);

}





SaleController.java

package com.xu.web;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.xu.bean.SaleItem;
import com.xu.bean.SaleOrder;
import com.xu.exception.ServiceException;
import com.xu.service.SaleService;
import com.xu.service.StockService;

@Controller
@RequestMapping("/sale")
@SessionAttributes(value={"cunt","crrentPage","ttalPage","saleorderList","itemList"})
public class SaleController {
	private Logger logger = LoggerFactory.getLogger(this.getClass());
	private List<SaleItem> itemList = new ArrayList<SaleItem>();
	private List<SaleOrder> saleorderList = new ArrayList<SaleOrder>();
	private Long cunt;
	private Long crrentPage;
	private Long ttalPage;
	@Resource
	private SaleService saleService;
	@Resource
	private StockService stockService;
	/**
	 * 此方法用于跳转到销售订单页面
	 * @return
	 */
	@RequestMapping(value="/gotosale")
	public String turn(Model model){
		try {
			saleorderList = saleService.findSaleOrderByPage(0);
			cunt = saleService.findSaleOrderCount();
			crrentPage = 1L;
			ttalPage = saleService.getTotalPage();
			model.addAttribute("crrentPage", crrentPage);
			model.addAttribute("ttalPage", ttalPage);
			model.addAttribute("saleorderList", saleorderList);
			model.addAttribute("cunt", cunt);
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "sale";
	}
	
	
	/**
	 * 此方法用于跳转到发货页面
	 * @return
	 */
	@RequestMapping(value="/gotooutsale")
	public String turns(Model model){
		try {
			saleorderList = saleService.findSaleOrderByPage(0);
			cunt = saleService.findSaleOrderCount();
			crrentPage = 1L;
			ttalPage = saleService.getTotalPage();
			model.addAttribute("crrentPage", crrentPage);
			model.addAttribute("ttalPage", ttalPage);
			model.addAttribute("saleorderList", saleorderList);
			model.addAttribute("cunt", cunt);
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "out-salestock";
	}
	
	/**
	 * 此方法用于发货功能
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/outstock")
	public String outStock(HttpServletRequest request,Model model){
		logger.info("销售订单发货");
		Long orderId = Long.parseLong(request.getParameter("orderId"));
		try {
			String flag = saleService.findFlagByOrderId(orderId);
			if("未发货".equals(flag)){
				List<SaleItem> saleItemList = saleService.findSaleOrderByOrderId(orderId);
				for(SaleItem item:saleItemList){
					stockService.updateStockCount(item.getName(),item.getCount());
				}
				saleService.updateFlagByOrderId("已发货",orderId);
				saleorderList = saleService.findSaleOrderByPage(0);
				model.addAttribute("saleorderList", saleorderList);
				logger.info("销售订单发货成功");
			}
		} catch (ServiceException e) {
		}
		return "out-salestock";
	}
	/**
	 * 此方法用于添加销售商品
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/add")
	public String addSaleItem(HttpServletRequest request,Model model){
		Long customerId = Long.parseLong(request.getParameter("customerId"));
		String name = request.getParameter("name");
		Double price = Double.parseDouble(request.getParameter("price"));
		Long count =Long.parseLong(request.getParameter("count"));		
		SaleItem saleItem = new SaleItem();
		saleItem.setCount(count);
		saleItem.setName(name);
		saleItem.setPrice(price);
		saleItem.setCustomerId(customerId);
		itemList.add(saleItem);
		model.addAttribute("itemList",itemList);
		return "sale";
	}
	
	/**
	 * 此方法用于跳转到添加销售订单页面
	 * @return
	 */
	@RequestMapping("/forwordOrder")
	public String forwords(){		
		return "saleOrder";
	}
	
	/**
	 * 添加销售订单
	 * @param request
	 * @param model
	 * @return
	 */
    @RequestMapping("/addSaleOrder")
    public String saveSaleOrder(HttpServletRequest request,Model model){
    	String pay = request.getParameter("pay");
    	SaleOrder saleOrder = new SaleOrder();
    	saleOrder.setFlag("未发货");
    	saleOrder.setPay(pay);
    	saleOrder.setSaleDate(new Date());
    	try {
			int i = saleService.addSaleOrder(saleOrder,itemList);
			if(i==1){
				itemList.clear();
				saleorderList = saleService.findSaleOrderByPage(0);
				cunt = saleService.findSaleOrderCount();
				crrentPage = 1L;
				ttalPage = saleService.getTotalPage();
				model.addAttribute("crrentPage", crrentPage);
				model.addAttribute("ttalPage", ttalPage);
				model.addAttribute("saleorderList", saleorderList);
				model.addAttribute("cunt", cunt);
			}
		} catch (ServiceException e) {
			e.printStackTrace();
		}
		return "sale";
    }
	/**
	 * 分页功能中 首页 尾页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipage")
	public String getPurchase(HttpServletRequest request,Model model){		
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		crrentPage = pageNum;
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "sale";
		
	}
	
	/**
	 * 分页功能中上一页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipageDown")
	public String getPurchaseDown(HttpServletRequest request,Model model){
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			if(pageNum>1){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-2));
				crrentPage = pageNum-1;
			}else if(pageNum == 1){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
				crrentPage = pageNum;
			}
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "sale";
		
	}
	
	/**
	 * 分页功能中下一页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipageUp")
	public String getPurchaseUp(HttpServletRequest request,Model model){
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			if(pageNum<=(ttalPage-1)){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-0));
				crrentPage = pageNum+1;
			}else if(pageNum == ttalPage){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
				crrentPage = pageNum;
			}
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "sale";
		
	}
	
	
	/**
	 * 分页功能中 首页 尾页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipage1")
	public String getPurchase1(HttpServletRequest request,Model model){		
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		crrentPage = pageNum;
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "out-salestock";
		
	}
	
	/**
	 * 分页功能中上一页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipageDown1")
	public String getPurchaseDown1(HttpServletRequest request,Model model){
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			if(pageNum>1){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-2));
				crrentPage = pageNum-1;
			}else if(pageNum == 1){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
				crrentPage = pageNum;
			}
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "out-salestock";
		
	}
	
	/**
	 * 分页功能中下一页
	 * @param request
	 * @param model
	 * @return
	 */
	@RequestMapping("/multipageUp1")
	public String getPurchaseUp1(HttpServletRequest request,Model model){
		Long pageNum =Long.parseLong(request.getParameter("curPage"));
		try {
			if(pageNum<=(ttalPage-1)){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-0));
				crrentPage = pageNum+1;
			}else if(pageNum == ttalPage){
				saleorderList = saleService.findSaleOrderByPage((int)(pageNum-1));
				crrentPage = pageNum;
			}
		} catch (ServiceException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		model.addAttribute("currentPage", crrentPage);
		model.addAttribute("saleorderList", saleorderList);
		return "out-salestock";
		
	}
}

Customer.java

package com.xu.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 
 *   顾客
 *id:
 *name:顾客名字
 *address:地址
 *zip:邮编
 *telPhone:电话
 *linkMan:联系人
 *linkTel:联系人电话
 *bank:开户银行
 *bankAccount:银行账号
 *email:邮箱
 */
@Entity
@Table(name="customer")
public class Customer {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="customer_id")
	private Long id;
	@Column(name="customer_name")
	private String name;
	private String address;
	private String zip;
	private String telPhone;
	private String linkMan;
	private String linkTel;
	private String bank;
	private Long  bankAccount;
	private String email;
/*	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,targetEntity=SaleOrder.class)
	private Set<SaleOrder> set;
	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,targetEntity=SaleReturnOrder.class)
	private Set<SaleReturnOrder> returnOrder;
*/	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getZip() {
		return zip;
	}
	public void setZip(String zip) {
		this.zip = zip;
	}
	public String getTelPhone() {
		return telPhone;
	}
	public void setTelPhone(String telPhone) {
		this.telPhone = telPhone;
	}
	public String getLinkMan() {
		return linkMan;
	}
	public void setLinkMan(String linkMan) {
		this.linkMan = linkMan;
	}
	public String getLinkTel() {
		return linkTel;
	}
	public void setLinkTel(String linkTel) {
		this.linkTel = linkTel;
	}
	public String getBank() {
		return bank;
	}
	public void setBank(String bank) {
		this.bank = bank;
	}
	public Long getBankAccount() {
		return bankAccount;
	}
	public void setBankAccount(Long bankAccount) {
		this.bankAccount = bankAccount;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	/*public Set<SaleOrder> getSet() {
		return set;
	}
	public void setSet(Set<SaleOrder> set) {
		this.set = set;
	}*/
	
	
}


四、其他

获取源码

点击以下链接获取源码。
idea+springboot+jpa+maven+jquery+mysql进销存管理系统源码
IDEA+java+spring+hibernate+jquery+mysql后台管理系统
IDEA + Spring Boot + Security + MyBatis Plus+Mysql低代码快速开发平台
IDEA+spring boot+activiti+shiro++layui+Mysql权限管理系统源码
IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql智慧仓库WMS源码
IDEA+springboot+ssm+layui+mysql高校宿舍管理系统源码
IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql网上书店管理系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql WMS仓库管理系统
IDEA+spring+spring mvc+mybatis+bootstrap+jquery+Mysql运动会管理系统源码
IDEA+SpringBoot+mybatis+bootstrap+jquery+Mysql车险理赔管理系统源码
IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码
IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生就业信息管理系统源码
IDEA+springboot+jpa+Layui+Mysql销售考评系统源码
IDEA+Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码
IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

Java+Swing+Mysql实现学生宿舍管理系统

Java+Swing+Txt实现自助款机系统

Java+Swing+Mysql自助存取款机系统

Java+Swing+mysql5实现学生成绩管理系统(带分页)

Java+Swing+Mysql实现超市商品管理系统源码

Java+Swing+Mysql实现通讯录管理系统源码

Java+Swing+Mysql实现图书管理系统源码

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

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

相关文章

3.输出printf() 与 输入scanf()

输入 与 输出 1.printf()2.scanf() 1.printf() 1.1 引用条件 printf()函数使用之前必须要引入<stdio.h>这个头文件 1.2 关于换行 printf()在打印的时候不会自动换行&#xff0c;所以各位需要在输出文本的末尾添加转义字符\n&#xff0c;也就是换行符&#xff0c;不然调…

通过Docker启动DB2,并在Spring Boot整合DB2(Druid连接池)

1 简介 DB2是IBM的一款优秀的关系型数据库&#xff0c;简单学习一下。 2 Docker安装DB2 为了快速启动&#xff0c;直接使用Docker来安装DB2。先下载镜像如下&#xff1a; docker pull ibmcom/db2 # or docker pull ibmcom/db2:11.5.0.0 启动数据库如下&#xff1a; docker …

【树上操作】定长裁剪 CF1833 G

Problem - G - Codeforces 题意&#xff1a; 给定一棵n个节点的树&#xff0c;请你减掉一些边&#xff0c;使得剪掉后的每个树只有三个节点&#xff0c; 如果可以&#xff0c;第一行返回减掉边的数量&#xff0c;第二行返回减掉边的编号&#xff1b;如果无解&#xff0c;输出…

opencv 图像腐蚀膨胀 erode dilate

#include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dstbin, distancetransform,rel, rel2;img imread("m3.jpg");//转为灰度图cvtColor(img, dst, COLOR_BGR2GRAY);//二…

springcloudAlibaba之nacos集群部署和nginx负载均衡

1.环境准备 nacos server安装包&#xff1a;https://github.com/alibaba/nacos nginx安装包&#xff1a;https://nginx.org/en/download.html 2、nacos配置 将下载好的nacos-server的压缩包解压好以后&#xff0c;复制出N份&#xff08;这里取决于你集群的数量&#xff09;&…

AC自动机(java)

AC自动机 AC自动机介绍代码演示 indexTree AC自动机介绍 AC自动机算法是一种基于Trie树和有限状态机的字符串匹配算法。它在查找字符串时&#xff0c;利用额外的失配指针进行回退&#xff0c;转向其他分支&#xff0c;避免重复匹配前缀&#xff0c;从而提高算法效率。当一个字典…

编译内联导致内存泄漏的问题定位修复

作者&#xff1a;0x264 问题 线上长时间存在一个跟异步 inflate 相关的量级较大的内存泄漏&#xff0c;如下所示&#xff1a; 第一次分析 从内存泄漏粗略看有几个信息&#xff1a; 被泄漏的Activity有很多&#xff0c;所以可能跟某个具体业务的关系不大引用链特别短&#xf…

SkyWalking链路追踪中span全解

基本概念 在SkyWalking链路追踪中&#xff0c;Span&#xff08;跨度&#xff09;是Trace&#xff08;追踪&#xff09;的组成部分之一。Span代表一次调用或操作的单个组件&#xff0c;可以是一个方法调用、一个HTTP请求或者其他类型的操作。 每个Span都包含了一些关键的信息&am…

yaml语法详解

#kv #对空格的严格要求十分高 #注入到我们的配置类中 #普通的keyvalue name: qinjiang#对象 student:name: qingjiangage: 3#行内写法 student1: {name: qinjiang,age: 3}#数组 pets:- cat- dog- pigpet: [cat,dog,pig]yaml可以给实体类赋值 person:name: kuangshenage: 19happ…

css——box-sizing属性

含义 盒子模型由四部分构成&#xff0c;外边距(margin), 边框(border),内边距(padding), 内容content box-sizing 就是指定盒子的大小和结构的。 box-sizing: content-box; //默认值 内容真正宽度 设置的宽度box-sizing: border-box; // 内容真正宽度width 设置的width- 左右p…

LabVIEW可重入VI,VI模板和动态VI之间的差异

LabVIEW可重入VI&#xff0c;VI模板和动态VI之间的差异 应该在何时使用可重入VI、模板VI和动态调用VI&#xff1f;这三种类型之间有什么区别&#xff1f; 可重入VI 当想要同时运行同一VI的多个实例时&#xff0c;将使用可重入VI。当VI不可重入时&#xff0c;VI只有一个数据空…

浏览器对跨域请求携带Cookie的方法

文章目录 一、前后端协商配置1.1 前端页面搭建1.2后端服务器搭建 二、配置允许跨域浏览器三、Chrome浏览器安装ModHeader插件 企业开发时会分开发环境、测试环境以及生产环境&#xff0c;但是有的企业开发只有真正发布到线上的生产环境的流程才会严格配置&#xff0c;有的项目开…

C++线性技巧,STL

例题1&#xff1a;字串计算 样例输入 10101 样例输出 0 2 01 2 1 3 10 2 101 2 直接上代码&#xff1a; #include<iostream> #include<string> #include<map> using namespace std; map<string,int>mp;//用map存储每一个子串出现的次数 string str…

漏洞复现-yapi远程执行命令漏洞复现

目录 漏洞原理漏洞发现漏洞描述影响范围 yapi学习漏洞复现环境搭建exp 入侵检测与防御参考 漏洞原理 漏洞发现 查看issue2229 漏洞描述 网站开放注册功能时可随意注册&#xff0c;设置全局mock脚本可执行任意代码。 影响范围 Yapi < 1.9.2 yapi学习 YApi 是高效、易…

Docker(四)

文章目录 1. docker其他命令补充2. docker-registry使用3. docker-hub的使用4. 企业级私有仓库harbor4.1 harbor安装4.2 harbor配置https4.3 harbor常见使用4.3.1 harbor新建项目仓库4.3.2 harbor创建用户4.3.3 harbor仓库管理4.3.4 harbor复制管理4.3.5 harbor删除镜像 5. doc…

【JavaEE】Spring中注解的方式去获取Bean对象

【JavaEE】Spring的开发要点总结&#xff08;3&#xff09; 文章目录 【JavaEE】Spring的开发要点总结&#xff08;3&#xff09;1. 属性注入1.1 Autowired注解1.2 依赖查找 VS 依赖注入1.3 配合Qualifier 筛选Bean对象1.4 属性注入的优缺点 2. Setter注入2.1 Autowired注解2.2…

【漏洞复现】​金蝶云星空管理中心反序列化命令执行漏洞(RCE)

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、整改意见 前言 ​金蝶云星空管理中心存在反序列化命令执行,攻击者可通过该漏洞获取敏感信息&#xff0c;进而接管服务器。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文…

Mybatis-plus 配置自定义sql(.xml文件)查询语句的步骤

这是使用Mybatis-plus 的自动生成实体类代码生成.xml文件&#xff0c; 所以他会在java目录下&#xff0c;不在resources目录下 如果在java目录下的xml文件&#xff0c;需要分别配置application.yml和pom.xml文件 application.yml 文件进行以下配置&#xff1a; mybatis-plus…

视频增强技术-对比度增强

在图像处理中&#xff0c;由于获取的图像质量不好&#xff0c;需要通过对比度增强来提升图片质量&#xff0c;主要解决的是由于图像灰度级范围较小造成的对比度较低的问题&#xff0c;作用是使图像的灰度级范围放大&#xff0c;从而让图像更加清晰。主要对比度增强方法包括线性…

CentOS 7.9 安装 mydumper(RPM方式)

链接&#xff1a;https://pan.baidu.com/s/1sGhtiKPOmJw1xj0zv-djkA?pwdtaoz 码&#xff1a;taoz 开始正文啦&#xff1a; rpm -ivh mydumper-0.14.5-3-zstd.el7.x86_64.rpm 问题如下&#xff1a; 解决&#xff1a; yum -y install epel-release yum install -y libzstd …