Java项目:仓库管理系统设计和实现(java+ssm+springboot+layui)

news2025/2/28 19:41:33

源码获取:博客首页 "资源" 里下载!

主要功能模块

1.用户模块管理:用户登录、用户注册、用户的查询、添加、删除操作、

2.客户信息管理:.客户列表的展示、添加、修改、删除操作、

3.供应商管理:供应商详情列表的查看、添加、删除等操作、

4.退货管理和退货查询

5.公告信息管理:公告信息的查看、添加、修改、删除操作、

6.角色管理:角色查询、添加、删除、

7.系统管理、菜单管理以及权限控制

8.管理员信息管理:管理员信息的查看、修改

给大家截一部分效果图:

主要技术:springboot Java、springmvc mysql layui jquery mybatis

用户信息控制层:

/**
 * <p>
 *  前端控制器
 * </p>
 *
 */
@RestController
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private DeptService deptService;
	
	@Autowired
	private RoleService roleService;
	
	/**
	 * 用户全查询
	 */
	@RequestMapping("loadAllUser")
	public DataGridView loadAllUser(UserVo userVo) {
		IPage<User> page=new Page<>(userVo.getPage(), userVo.getLimit());
		QueryWrapper<User> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq(StringUtils.isNotBlank(userVo.getName()), "loginname", userVo.getName()).or().eq(StringUtils.isNotBlank(userVo.getName()), "name", userVo.getName());
		queryWrapper.eq(StringUtils.isNotBlank(userVo.getAddress()), "address", userVo.getAddress());
		queryWrapper.eq("type", Constast.USER_TYPE_NORMAL);//查询系统用户
		queryWrapper.eq(userVo.getDeptid()!=null, "deptid",userVo.getDeptid());
		this.userService.page(page, queryWrapper);
		
		
		System.out.println(userService.getClass().getSimpleName());
		List<User> list = page.getRecords();
		for (User user : list) {
			Integer deptid = user.getDeptid();
			if(deptid!=null) {
				Dept one =deptService.getById(deptid);
				user.setDeptname(one.getTitle());
			}
			Integer mgr = user.getMgr();
			if(mgr!=null) {
				User one = this.userService.getById(mgr);
				user.setLeadername(one.getName());
			}
		}
		
		return new DataGridView(page.getTotal(), list);
		
	}
	
	

	/**
	 * 加载最大的排序码
	 * @param deptVo
	 * @return
	 */
	@RequestMapping("loadUserMaxOrderNum")
	public Map<String,Object> loadUserMaxOrderNum(){
		Map<String, Object> map=new HashMap<String, Object>();
		
		QueryWrapper<User> queryWrapper=new QueryWrapper<>();
		queryWrapper.orderByDesc("ordernum");
		IPage<User> page=new Page<>(1, 1);
		List<User> list = this.userService.page(page, queryWrapper).getRecords();
		if(list.size()>0) {
			map.put("value", list.get(0).getOrdernum()+1);
		}else {
			map.put("value", 1);
		}
		return map;
	}
	
	
	/**
	 * 根据部门ID查询用户
	 */
	@RequestMapping("loadUsersByDeptId")
	public DataGridView loadUsersByDeptId(Integer deptid) {
		QueryWrapper<User> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq(deptid!=null, "deptid", deptid);
		queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
		queryWrapper.eq("type", Constast.USER_TYPE_NORMAL);
		List<User> list = this.userService.list(queryWrapper);
		return new DataGridView(list);
	}
	
	
	/**
	 * 把用户名转成拼音
	 */
	@RequestMapping("changeChineseToPinyin")
	public Map<String,Object> changeChineseToPinyin(String username){
		 Map<String,Object> map=new HashMap<>();
		 if(null!=username) {
			 map.put("value", PinyinUtils.getPingYin(username));
		 }else {
			 map.put("value", "");
		 }
		 return map;
	}
	
	/**
	 * 添加用户
	 */
	@RequestMapping("addUser")
	public ResultObj addUser(UserVo userVo) {
		try {
			userVo.setType(Constast.USER_TYPE_NORMAL);//设置类型
			userVo.setHiredate(new Date());
			String salt=IdUtil.simpleUUID().toUpperCase();
			userVo.setSalt(salt);//设置盐
			userVo.setPwd(new Md5Hash(Constast.USER_DEFAULT_PWD, salt, 2).toString());//设置密码
			this.userService.save(userVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}

	
	/**
	 * 根据用户ID查询一个用户
	 */
	@RequestMapping("loadUserById")
	public DataGridView loadUserById(Integer id) {
		return new DataGridView(this.userService.getById(id));
	}
	
	/**
	 * 修改用户
	 */
	@RequestMapping("updateUser")
	public ResultObj updateUser(UserVo userVo) {
		try {
			this.userService.updateById(userVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}

	/**
	 * 删除用户
	 */
	@RequestMapping("deleteUser")
	public ResultObj deleteUser(Integer id) {
		try {
			this.userService.removeById(id);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
	/**
	 * 重置用户密码
	 */
	@RequestMapping("resetPwd")
	public ResultObj resetPwd(Integer id) {
		try {
			User user=new User();
			user.setId(id);
			String salt=IdUtil.simpleUUID().toUpperCase();
			user.setSalt(salt);//设置盐
			user.setPwd(new Md5Hash(Constast.USER_DEFAULT_PWD, salt, 2).toString());//设置密码
			this.userService.updateById(user);
			return ResultObj.RESET_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.RESET_ERROR;
		}
	}
	
	
	/**
	 * 根据用户ID查询角色并选中已拥有的角色
	 */
	@RequestMapping("initRoleByUserId")
	public DataGridView initRoleByUserId(Integer id) {
		//1,查询所有可用的角色
		QueryWrapper<Role> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
		List<Map<String, Object>> listMaps = this.roleService.listMaps(queryWrapper);
		
		//2,查询当前用户拥有的角色ID集合
		List<Integer> currentUserRoleIds=this.roleService.queryUserRoleIdsByUid(id);
		for (Map<String, Object> map : listMaps) {
			Boolean LAY_CHECKED=false;
			Integer roleId=(Integer) map.get("id");
			for (Integer rid : currentUserRoleIds) {
				if(rid==roleId) {
					LAY_CHECKED=true;
					break;
				}
			}
			map.put("LAY_CHECKED", LAY_CHECKED);
		}
		return new DataGridView(Long.valueOf(listMaps.size()), listMaps);
	}
	
	/**
	 * 保存用户和角色的关系
	 */
	@RequestMapping("saveUserRole")
	public ResultObj saveUserRole(Integer uid,Integer[] ids) {
		try {
			this.userService.saveUserRole(uid,ids);
			return ResultObj.DISPATCH_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DISPATCH_ERROR;
		}
		
	}
}

系统控制层:

@Controller
@RequestMapping("sys")
public class SystemController {
	
	/**
	 * 跳转到登陆页面
	 */
	@RequestMapping("toLogin")
	public String toLogin() {
		return "system/index/login";
	}
	
	/**
	 * 跳转到首页
	 */
	@RequestMapping("index")
	public String index() {
		return "system/index/index";
	}
	
	/**
	 * 跳转到工作台
	 */
	@RequestMapping("toDeskManager")
	public String toDeskManager() {
		return "system/index/deskManager";
	}
	
	/**
	 * 跳转到日志管理
	 * 
	 */
	@RequestMapping("toLoginfoManager")
	public String toLoginfoManager() {
		return "system/loginfo/loginfoManager";
	}
	
	/**
	 * 跳转到公告管理
	 * 
	 */
	@RequestMapping("toNoticeManager")
	public String toNoticeManager() {
		return "system/notice/noticeManager";
	}
	
	
	/**
	 * 跳转到部门管理
	 * 
	 */
	@RequestMapping("toDeptManager")
	public String toDeptManager() {
		return "system/dept/deptManager";
	}
	
	/**
	 * 跳转到部门管理-left
	 * 
	 */
	@RequestMapping("toDeptLeft")
	public String toDeptLeft() {
		return "system/dept/deptLeft";
	}
	
	
	/**
	 * 跳转到部门管理--right
	 * 
	 */
	@RequestMapping("toDeptRight")
	public String toDeptRight() {
		return "system/dept/deptRight";
	}
	
	/**
	 * 跳转到菜单管理
	 * 
	 */
	@RequestMapping("toMenuManager")
	public String toMenuManager() {
		return "system/menu/menuManager";
	}
	
	/**
	 * 跳转到菜单管理-left
	 * 
	 */
	@RequestMapping("toMenuLeft")
	public String toMenuLeft() {
		return "system/menu/menuLeft";
	}
	
	
	/**
	 * 跳转到菜单管理--right
	 * 
	 */
	@RequestMapping("toMenuRight")
	public String toMenuRight() {
		return "system/menu/menuRight";
	}
	
	/**
	 * 跳转到权限管理
	 * 
	 */
	@RequestMapping("toPermissionManager")
	public String toPermissionManager() {
		return "system/permission/permissionManager";
	}
	
	/**
	 * 跳转到权限管理-left
	 * 
	 */
	@RequestMapping("toPermissionLeft")
	public String toPermissionLeft() {
		return "system/permission/permissionLeft";
	}
	
	
	/**
	 * 跳转到权限管理--right
	 * 
	 */
	@RequestMapping("toPermissionRight")
	public String toPermissionRight() {
		return "system/permission/permissionRight";
	}
	
	/**
	 * 跳转到角色管理
	 * 
	 */
	@RequestMapping("toRoleManager")
	public String toRoleManager() {
		return "system/role/roleManager";
	}
	

	/**
	 * 跳转到用户管理
	 * 
	 */
	@RequestMapping("toUserManager")
	public String toUserManager() {
		return "system/user/userManager";
	}
	/**
	 * 跳转到缓存管理
	 * 
	 */
	@RequestMapping("toCacheManager")
	public String toCacheManager() {
		return "system/cache/cacheManager";
	}
	
	
	
}

部门控制层:

/**
 * <p>
 *  前端控制器
 * </p>
 *
 */
@RestController
@RequestMapping("/dept")
public class DeptController {

	@Autowired
	private DeptService deptService;
	
	
	
	/**
	 * 加载部门管理左边的部门树的json
	 */
	@RequestMapping("loadDeptManagerLeftTreeJson")
	public DataGridView loadDeptManagerLeftTreeJson(DeptVo deptVo) {
		List<Dept> list = this.deptService.list();
		List<TreeNode> treeNodes=new ArrayList<>();
		for (Dept dept : list) {
			Boolean spread=dept.getOpen()==1?true:false;
			treeNodes.add(new TreeNode(dept.getId(), dept.getPid(), dept.getTitle(), spread));
		}
		return new DataGridView(treeNodes);
	}
	
	/**
	 * 查询
	 */
	@RequestMapping("loadAllDept")
	public DataGridView loadAllDept(DeptVo deptVo) {
		IPage<Dept> page=new Page<>(deptVo.getPage(), deptVo.getLimit());
		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getTitle()), "title", deptVo.getTitle());
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getAddress()), "address", deptVo.getAddress());
		queryWrapper.like(StringUtils.isNotBlank(deptVo.getRemark()), "remark", deptVo.getRemark());
		queryWrapper.eq(deptVo.getId()!=null, "id", deptVo.getId()).or().eq(deptVo.getId()!=null,"pid", deptVo.getId());
		queryWrapper.orderByAsc("ordernum");
		this.deptService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}
	
	/**
	 * 加载最大的排序码
	 * @param deptVo
	 * @return
	 */
	@RequestMapping("loadDeptMaxOrderNum")
	public Map<String,Object> loadDeptMaxOrderNum(){
		Map<String, Object> map=new HashMap<String, Object>();
		
		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.orderByDesc("ordernum");
		IPage<Dept> page=new Page<>(1, 1);
		List<Dept> list = this.deptService.page(page, queryWrapper).getRecords();
		if(list.size()>0) {
			map.put("value", list.get(0).getOrdernum()+1);
		}else {
			map.put("value", 1);
		}
		return map;
	}
	
	
	/**
	 * 添加
	 * @param deptVo
	 * @return
	 */
	@RequestMapping("addDept")
	public ResultObj addDept(DeptVo deptVo) {
		try {
			deptVo.setCreatetime(new Date());
			this.deptService.save(deptVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}
	

	/**
	 * 修改
	 * @param deptVo
	 * @return
	 */
	@RequestMapping("updateDept")
	public ResultObj updateDept(DeptVo deptVo) {
		try {
			this.deptService.updateById(deptVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}
	
	
	/**
	 * 查询当前的ID的部门有没有子部门
	 */
	@RequestMapping("checkDeptHasChildrenNode")
	public Map<String,Object> checkDeptHasChildrenNode(DeptVo deptVo){
		Map<String, Object> map=new HashMap<String, Object>();
		
		QueryWrapper<Dept> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("pid", deptVo.getId());
		List<Dept> list = this.deptService.list(queryWrapper);
		if(list.size()>0) {
			map.put("value", true);
		}else {
			map.put("value", false);
		}
		return map;
	}
	
	/**
	 * 删除
	 * @param deptVo
	 * @return
	 */
	@RequestMapping("deleteDept")
	public ResultObj deleteDept(DeptVo deptVo) {
		try {
			this.deptService.removeById(deptVo.getId());
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
}

供应商控制层:

/**
 * <p>
 *  前端控制器
 * </p>
 *
 */
@RestController
@RequestMapping("/provider")
public class ProviderController {

	@Autowired
	private ProviderService providerService;

	/**
	 * 查询
	 */
	@RequestMapping("loadAllProvider")
	public DataGridView loadAllProvider(ProviderVo providerVo) {
		IPage<Provider> page = new Page<>(providerVo.getPage(), providerVo.getLimit());
		QueryWrapper<Provider> queryWrapper = new QueryWrapper<>();
		queryWrapper.like(StringUtils.isNotBlank(providerVo.getProvidername()), "providername",
				providerVo.getProvidername());
		queryWrapper.like(StringUtils.isNotBlank(providerVo.getPhone()), "phone", providerVo.getPhone());
		queryWrapper.like(StringUtils.isNotBlank(providerVo.getConnectionperson()), "connectionperson",
				providerVo.getConnectionperson());
		this.providerService.page(page, queryWrapper);
		return new DataGridView(page.getTotal(), page.getRecords());
	}

	/**
	 * 添加
	 */
	@RequestMapping("addProvider")
	public ResultObj addProvider(ProviderVo providerVo) {
		try {
			this.providerService.save(providerVo);
			return ResultObj.ADD_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.ADD_ERROR;
		}
	}

	/**
	 * 修改
	 */
	@RequestMapping("updateProvider")
	public ResultObj updateProvider(ProviderVo providerVo) {
		try {
			this.providerService.updateById(providerVo);
			return ResultObj.UPDATE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.UPDATE_ERROR;
		}
	}

	/**
	 * 删除
	 */
	@RequestMapping("deleteProvider")
	public ResultObj deleteProvider(Integer id) {
		try {
			this.providerService.removeById(id);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}

	/**
	 * 批量删除
	 */
	@RequestMapping("batchDeleteProvider")
	public ResultObj batchDeleteProvider(ProviderVo providerVo) {
		try {
			Collection<Serializable> idList = new ArrayList<Serializable>();
			for (Integer id : providerVo.getIds()) {
				idList.add(id);
			}
			this.providerService.removeByIds(idList);
			return ResultObj.DELETE_SUCCESS;
		} catch (Exception e) {
			e.printStackTrace();
			return ResultObj.DELETE_ERROR;
		}
	}
	
	
	/**
	 * 加载所有可用的供应商
	 */
	@RequestMapping("loadAllProviderForSelect")
	public DataGridView loadAllProviderForSelect() {
		QueryWrapper<Provider> queryWrapper=new QueryWrapper<>();
		queryWrapper.eq("available", Constast.AVAILABLE_TRUE);
		List<Provider> list = this.providerService.list(queryWrapper);
		return new DataGridView(list);
	}
}

源码获取:博客首页 "资源" 里下载!

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

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

相关文章

Android MVVM之ViewModel的详解与使用

一、介绍 ViewModel 类是一种业务逻辑或屏幕级状态容器。它用于将状态公开给界面&#xff0c;以及封装相关的业务逻辑。 它的主要优点是&#xff0c;它可以缓存状态&#xff0c;并可在配置更改后持久保留相应状态。这意味着在 activity 之间导航时或进行配置更改后&#xff08;…

【UE4 第一人称射击游戏】45-使用线追踪进行破坏

上一篇&#xff1a;【UE4 第一人称射击游戏】44-瞄准时的武器线追踪步骤&#xff1a;打开“Weapon_Base”删除打印节点添加如下节点&#xff0c;表示追踪线命中目标时执行的逻辑对上面逻辑的解释&#xff1a;首先追踪线命中目标后&#xff0c;显示红色的那个准心然后让目标的健…

阿里云 - MaxCompute研究

一、官方介绍MaxCompute是适用于数据分析场景的企业级SaaS&#xff08;Software as a Service&#xff09;模式云数据仓库&#xff0c;提供离线和流式数据的接入&#xff0c;支持大规模数据计算及查询加速能力。MaxCompute适用于100 GB以上规模的存储及计算需求&#xff0c;最大…

全国青少年软件编程(Scratch)等级考试一级考试真题2022年12月——持续更新.....

1.小明想在开始表演之前向大家问好并做自我介绍,应运行下列哪个程序?( ) A. B. C. D. 正确答案:D 答案解析: 外观积木配合显示时间,才能看清楚内容。 2.舞台有两个不同的背景,小猫角色的哪个积木能够切换舞台背景?( ) A.<

UVC静态杀菌模组的工作原理及应用

现代紫外线消毒技术是基于现代防疫学、光学、生物学和物理化学的基础上&#xff0c;利用特殊设计的高效率&#xff0c;高强度和长寿命的C波段紫外光发生装置&#xff0c;产生的强紫外C光照射空气或物体表面&#xff0c;当空气或固体表面中的各种细菌、病毒、寄生虫、水藻以及其…

C/C++ 三维数组和二维数组指针的结合

示例程序&#xff1a;#include <iostream> #include <stdio.h> int main() {int a[3][4] {{1,2,3,4},{2,3,4,5},{3,4,5,6}};int b[3][4] {{10,11,12,13},{11,12,13,14},{12,13,14,15}};int(*aa[2])[4] { a,b };int* p1[3] {a[0],a[1],a[2]};int* p2[3] {b[0],…

小学三年级奥数(和差倍问题)

例题5&#xff1a;学校合唱团成员中,女生人数是男生的3倍,而且女生比男生多80人&#xff0c;合唱团里男生有多少人&#xff1f;女生有多少人&#xff1f;思路分析&#x1f604;&#xff1a;抓住关键语句&#xff0c;女生人数是男生的3倍&#xff0c;那么把男生看成1份&#xff…

《图机器学习》-Graph as Matrix:Page Rnak,

Graph as Matrix一、Graph as Matrix二、PageRank三、PageRank&#xff1a;How to solve&#xff1f;四、Random Walk with Restarts and Personalized PageRank五、Matrix Factorization and Node Embedding一、Graph as Matrix 本小节将从矩阵的角度研究图形分析和学习。 把…

centos 一个ip绑定双网卡

nmcli con show (绿正常&#xff0c;黄白不正常) nmcli con del uuid &#xff08;eg&#xff1a;nmcli con del 585bdacc-314f-423e-a935-18295d0fb48b&#xff09; nmcli con add type bond ifname bond0 mode active-backup &#xff08;bond0只是一个名称&#xff0c;可以…

操作系统导论-并发

操作系统导论-并发 一.并发 操作系统为了进程能有多个执行点&#xff0c;为进程提供了一种抽象&#xff1a;线程。线程与进程类似&#xff0c;一个进程中的所有线程共享地址空间&#xff0c;但有自己独立的栈。 1.并发问题 线程的执行顺序也需要操作系统来进行调度。由于线程…

DeViSE:A Deep Visual-Semantic Embedding Model

这篇是2013年文章提出的DeViSEDeViSEDeViSE,主要是综合了传统视觉识别的神经网络和词向量处理word2vecword2vecword2vec中的Skip−gramSkip-gramSkip−gram模型&#xff0c;实现了一个视觉和语义兼顾的ZSLZSLZSL模型&#xff0c;取得了 较好的效果&#xff0c;时至今日&#xf…

【阶段三】Python机器学习21篇:机器学习项目实战:GBDT算法的核心思想、原理概述、原理举例与GBDT回归模型

本篇的思维导图: GBDT算法的核心思想 GBDT是Gradient Boosting Decision Tree(梯度提升树)的缩写。GBDT算法也是一种非常实用的Boosting算法,它与AdaBoost算法的区别在于:AdaBoost算法根据分类效果调整权重并不断迭代,最终生成强学习器;GBDT算法则将损失函数的…

浅聊版本发布

在一般情况下&#xff0c;升级服务器端应用&#xff0c;需要将应用源码或程序包上传到服务器&#xff0c;然后停止掉老版本服务&#xff0c;再启动新版本。但是这种简单的发布方式存在两个问题&#xff0c; &#xff08;1&#xff09;在新版本升级过程中&#xff0c;服务是会暂…

Qt 之 findChild

文章目录一、简述二、原型三、使用示例注意&#xff1a;Widget根据容器的不同寻找的方式不一样比如QWidget_3里面有LineEdit只需要直接找ui.QWidget_3但是如果是QStackWidget里面的化就是直接放ui->stackedDecive2->widget(0)里面就可以了一、简述 在Qt编程过程中&#…

Arm Linux Can

Arm Linux Can一:can-utils 安装二:can-utils 使用can网络关闭can波特率设置查询can0设备的参数设置can网络开启查询工作状态can发送数据can接受数据三:can回环测试四:C语言CAN编程初始化数据结构数据发送错误处理过滤规则回环设置五:Linux 系统中CAN 接口应用程序示例报文发送…

Spring 整合 Redis 的三个简单步骤

一、导入 Redis 依赖 1、导入 Redis 客户端 jar 包依赖 导入 jar 包是需要注意&#xff0c;Redis 是属于 CS 架构模式&#xff0c;服务端需先启动&#xff0c;然后客户端主动去连它。但是客户端怎么去连接服务端呢&#xff1f;这里有两种方式&#xff1a;一种是 Jedis 客户端…

糖果(差分约束+找最小值)

糖果 题目描述 幼儿园里有 n 个小朋友&#xff0c; lxhgww 老师现在想要给这些小朋友们分配糖果&#xff0c;要求每个小朋友都要分到糖果。 但是小朋友们也有嫉妒心&#xff0c;总是会提出一些要求&#xff0c;比如小明不希望小红分到的糖果比他的多&#xff0c;于是在分配糖果…

区块链技术相关概述

第一节区块链技术相关概述一、区块链定义区块链其实就相当于一个去中介化的数据库&#xff0c;是由一串数据块组成的。狭义&#xff1a;区块链是就是一种按照时间顺序来将数据区块以顺序相连的方式组合成的一种链式数据结构&#xff0c;并以密码学方式保证的不可篡改和不可伪造…

WebDAV之葫芦儿·派盘+MiXplorer

MiXplorer 支持WebDAV方式连接葫芦儿派盘。 手机内存不够用了?东西太多清理不过来?快来试试这款MiXplorer。 MiXplorer是一款非常强大实用的手机文档管理器,能给用户提供了一系列的文档处理功能,包括本地文件浏览、文件排序、文件筛选、切换视图、新建文件、添

SSH免密登录配置

情况 服务器A: 192.168.0.101 服务器B: 192.168.0.102 在服务器A上 可以使用 ssh root192.168.0.102 无需密码登录到192.168.0.102 配置 服务器A: 192.168.0.101 上查看是否有ssh公钥 1.进入.ssh目录&#xff1a; cd ~/.ssh 2.找到id_rsa.pub文件&#xff1a; ls 3.查看公钥…