基于ssm校园学生协会管理系统jsp校园社团管理系统源码和论文

news2024/11/16 9:24:35

1、开发环境
(1)操作系统: Windows10
(2)数据库与数据库管理工具: MySQL 5.7.19、Navicat for MySQL
(3)Web服务器: Tomcat8.5.38
(4)开发工具与技术: Eclipse IDEA、SSM框架、Ajax

2、数据库部署:
(1)安装MySQL 5.7.19
(2)安装并打开Navicat for MySQL数据库可视化工具
(3)创建一个新的数据库,启动数据库,运行SQL源码文件

3、后台部署:
(1)安装ECLIPSE,配制支持动态网页开发。
(2)导入代码文件
(3)配置Tomcat,并将附件导入Tomcat本地存储文件夹。
(4)配置application.properties中的相关信息。

演示视频:

【java毕业设计】基于ssm校园学生协会管理系统jsp校园社团管理系统源码和论文

 

 

package com.association.controller;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.association.po.Admin;
import com.association.po.Apply;
import com.association.po.AssShow;
import com.association.po.Assall;
import com.association.po.Association;
import com.association.po.Inform;
import com.association.po.Member;
import com.association.po.VMember;
import com.association.service.AssociationService;
import com.zhenzi.sms.ZhenziSmsClient;



@Controller
@RequestMapping("/association")
public class AssociationController {
	@Autowired
	private AssociationService associationService;

	// 管理员查询所有协会
		@RequestMapping("/findAllAssociation")
		public String findAllAssociation(Model model) {
			List<Association> as = associationService.findAllAssociation();
			List<Association> association = new ArrayList<>();
			Association ass;
				for(int i=0;i<as.size();i++) {
					ass = new Association();
					ass.setAss_id(as.get(i).getAss_id());
                    ass.setAss_name(as.get(i).getAss_name());
					String member_id=as.get(i).getMember_id();//获得会长ID
					ass.setMember_id(member_id);
					 if(member_id!=null && member_id.length()!=0){	
						 ass.setMember_name(associationService.findhuizhangById(member_id).getMember_name());//根据id查询出会长名						
					}
					else
					{
						ass.setMember_name("无");				
					}
					ass.setAss_qqgroup(as.get(i).getAss_qqgroup());
					ass.setAss_img(as.get(i).getAss_img());
					ass.setAss_show(as.get(i).getAss_show());
					ass.setAss_email(as.get(i).getAss_email());
					ass.setAss_asset(as.get(i).getAss_asset());
					ass.setAss_introduce(as.get(i).getAss_introduce());
					ass.setAss_state(as.get(i).getAss_state());
					association.add(ass);
				}
			model.addAttribute("association", association);
			return "association/association-list";
		}
	
	// 管理员查询所有 新 协会
		@RequestMapping("/findAllnewAssociation")
		public String findAllnewAssociation(Model model) {
			List<Association> newassociation = associationService.findAllnewAssociation();
			model.addAttribute("newassociation", newassociation);
			return "association/NewAssociation-list";
		}
	

	// 前端查询所有协会会
		@RequestMapping("/findAllAssociationWeb")
		public String findAllAssociationWeb(Model model,HttpSession session) {		
			List<Association> association = associationService.findAllAssociationWeb();
			Member self = (Member) session.getAttribute("self");			
			List<Apply> apply = null;
			List<Association> assid = null;
			//如果有成员信息,通过成员id查找申请表
			if(self != null) {
			apply = associationService.findMemberAssociationApply(self.getMember_id());//查找出该会员申请信息
			assid = associationService.findAssidbyMid(self.getMember_id());//查找出该会员已在协会信息,防止重复申请相同协会
			}
			model.addAttribute("apply", apply);
			model.addAttribute("assid", assid);
			model.addAttribute("association", association);
			
			return "web/association-apply";
		}
	
		// 前端根据协会名查询所有协会会
		@RequestMapping("/findUpAssByTitleWeb")
		public String findUpAssByTitleWeb(Model model,HttpSession session,HttpServletRequest request) {	
			String ass_name=request.getParameter("input");
			List<Association> association = associationService.findUpAssByTitleWeb(ass_name);
			Member self = (Member) session.getAttribute("self");			
			List<Apply> apply = null;
			List<Association> assid = null;
			//如果有成员信息,通过成员id查找申请表
			if(self != null) {
			apply = associationService.findMemberAssociationApply(self.getMember_id());//查找出该会员申请信息
			assid = associationService.findAssidbyMid(self.getMember_id());//查找出该会员已在协会信息,防止重复申请相同协会
			}
			model.addAttribute("apply", apply);
			model.addAttribute("assid", assid);
			model.addAttribute("association", association);
			return "web/association-apply";
		}
		
	//协会的升级与降级
		@RequestMapping("/updatestate")
		@ResponseBody
		public int updatestate(HttpServletRequest request) {
			int i;
			String ass_state = request.getParameter("ass_state");
			String ass_id = request.getParameter("ass_id");
			try {
				i = associationService.updatestate(ass_id, ass_state);
			} catch (Exception e) {
				e.printStackTrace();
				i = 0;
			}
			return i;
		}

		//协会的升级与降级
		@RequestMapping("/updatestate2")
		@ResponseBody
		public int updatestate2(HttpServletRequest request) {
			int i;
			String ass_show = request.getParameter("ass_show");
			String ass_id = request.getParameter("ass_id");
			try {
				i = associationService.updatestate2(ass_id, ass_show);
			} catch (Exception e) {
				e.printStackTrace();
				i = 0;
			}
			return i;
		}
		
		//查找出该协会的成员(发送通知处)
		@RequestMapping("/findMemberByassId")
		@ResponseBody
		public List<Member> findMemberByassId(Model model,HttpServletRequest request) {
			String id = request.getParameter("ass_id");
			List<Member> member = associationService.findMemberByAssociation(id);
			return member;
		}

		
		// 跳转指定协会修改信息界面,查出所有对应协会成员提供修改会长功能
		@RequestMapping("/toUpdateAssociation")
		public String toUpdateAssociation(Model model, HttpServletRequest request) {
			String id = request.getParameter("ass_id");
			Association association = associationService.findAssociationById(id);
			List<Member> member = associationService.findMemberByAssociation(id);
			model.addAttribute("association", association);
			model.addAttribute("member", member);
			return "association/association-edit";
		}
		
		 //跳转指定 新 协会修改信息界面,查找出有资格成为会长的——协会数量小于2,且不是任一协会的会长
				@RequestMapping("/toUpdatenewAssociation")
				public String toUpdatenewAssociation(Model model, HttpServletRequest request) {
					String id = request.getParameter("ass_id");
					Association association = associationService.findAssociationById(id);
					List<Member> member = associationService.findMembercanLeader(id);
					model.addAttribute("association", association);
					model.addAttribute("member", member);
					return "association/Newassociation-edit";
				}
		
		
		
		
		// 修改协会信息 包括换会长功能
		@RequestMapping("/updateAssociation")
		@ResponseBody
		public int updateAssociation(Model model, Association association, HttpServletRequest request, HttpSession session) {
			int i;
			Admin admin= (Admin) session.getAttribute("adminSelf");			//为了获得admin_id	
			int adminid=admin.getAdmin_id();		//为了获得admin_id	
			String member_id=request.getParameter("member_id");//所选的会员ID
			String tel = associationService.findMember(member_id).getMember_phone();//新会长手机
			String assname=association.getAss_name();
			Association as =associationService.findAssociationByById(association.getAss_id());
			String oldMember_id=as.getMember_id();//原先会长ID
			VMember member = associationService.findMember(oldMember_id);
			String oldphone=member.getMember_phone();//老会长手机
			List<Member> leader = associationService.findleaderbyid(member_id);//用id从会长视图中查找是否存在
			System.out.println(member_id+":::"+oldMember_id+":::"+leader.size());
			try {
				if(member_id.equals(oldMember_id)) {//会长没变
					i = associationService.updateAssociation(association);
				}
				else {//会长变了
				      if(leader.size()==0) { //确保他不是其他协会会长
				i = associationService.updateAssociation(association);
				if(tel!=null) {				//向新会长发送成为会长信息	
					Inform inform = new Inform();
					int mid=Integer.parseInt(member_id);		 //转换member_id		
					inform.setAdmin_id(adminid);
					inform.setMember_id(mid);
					inform.setInform_title("会长任命");
					inform.setInform_content("你好,你已成为" + assname + "的会长。详情请登录学生协会管理系统查看");
					associationService.addInform(inform);
					sendMessageUp(tel,assname);
					}
				if(oldphone!=null) {		//向老会长发送会长变更信息			
					Inform inform2 = new Inform();
					int mid2=Integer.parseInt(oldMember_id);		 //转换member_id		
					inform2.setAdmin_id(adminid);
					inform2.setMember_id(mid2);
					inform2.setInform_title("会长退任");
					inform2.setInform_content("你好,你已退任" + assname + "会长的职位。详情请登录学生协会管理系统查看");
					associationService.addInform(inform2);
					sendMessage(oldphone,assname);
					}
				}
				      else
							i=2;//存在不可修改     
				}
				
			} catch (Exception e) {
				i = 0;
			}
			return i;
		}
		
		
		// 修改 新 协会信息 包括换会长功能
		@RequestMapping("/updatenewAssociation")
		@ResponseBody
		public int updatenewAssociation(Model model, Association association, HttpServletRequest request, HttpSession session) {
			int i;
			String member_id = request.getParameter("member_id");
			String tel = associationService.findMember(member_id).getMember_phone();
			String assname=association.getAss_name();
			String ass_id = request.getParameter("ass_id");
			int member_state=associationService.findMember(member_id).getMember_state();
			try {		
				i =associationService.addMemberState(member_id,member_state);//该成员协会数量信息
				i += associationService.updatenewAssociation(association);//修改协会信息
				i += associationService.addMember_ass(member_id, ass_id);//增加信息到协会——成员表
				if(tel!=null) {
			
				Inform inform = new Inform();
				Admin admin= (Admin) session.getAttribute("adminSelf");			//为了获得admin_id	
				int adminid=admin.getAdmin_id();		//为了获得admin_id			
				int mid=Integer.parseInt(member_id);		 //转换member_id		
				inform.setAdmin_id(adminid);
				inform.setMember_id(mid);
				inform.setInform_title("会长任命");
				inform.setInform_content("你好,你已成为" + assname + "的会长。详情请登录学生协会管理系统查看");
				associationService.addInform(inform);
				sendMessageUp(tel,assname);
				}
			} catch (Exception e) {
				i = 0;
			}
			return i;
		}
		
		// 发送手机短信通知成为会长
		public void sendMessageUp(String tel,String assname) {
			try {
				final String apiUrl = "https://sms_developer.zhenzikj.com";// 短信API请求地址
				final String appId = "103901";// 短信API产品id
				final String appSecret = "6fa889bf-a4e6-4c2a-9c78-833952fdbf7a";// 短信API
				ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
				String result = client.send(tel, "你好,你已成为" + assname + "的会长。详情请登录学生协会管理系统查看");				
				System.out.println(result);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		// 发送手机短信通知会长变更
		public void sendMessage(String tel,String assname) {
			try {
				final String apiUrl = "https://sms_developer.zhenzikj.com";// 短信API请求地址
				final String appId = "103901";// 短信API产品id
				final String appSecret = "6fa889bf-a4e6-4c2a-9c78-833952fdbf7a";// 短信API
				ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
				String result = client.send(tel, "你好,你已退任"+assname +"会长的职位。详情请登录学生协会管理系统查看");				
				System.out.println(result);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		// 发送手机短信通知退会
				public void sendMessagetuihui(String tel,String assname) {
					try {
						final String apiUrl = "https://sms_developer.zhenzikj.com";// 短信API请求地址
						final String appId = "103901";// 短信API产品id
						final String appSecret = "6fa889bf-a4e6-4c2a-9c78-833952fdbf7a";// 短信API
						ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
						String result = client.send(tel, "你好,你已被" + assname + "退会。如有疑问,请联系会长。");				
						System.out.println(result);
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
		
		
		// 修改协会信息(前端)
		@RequestMapping("/updateAssociationWeb")
		public String updateAssociationWeb(Model model, Association association,
				@RequestParam("file") MultipartFile file,HttpServletRequest request) {
			try {
				if (!file.isEmpty()) {
					// 上传文件路径
					String path = request.getServletContext().getRealPath("/AssShow");
					// 上传文件名
					String filename = file.getOriginalFilename();
					File filepath = new File(path, filename);
					// 判断路径是否存在,如果不存在就创建一个
					if (!filepath.getParentFile().exists()) {
						filepath.getParentFile().mkdirs();
					}
					// 将上传文件保存到一个目标文件夹里
					file.transferTo(new File(path + File.separator + filename));
					association.setAss_img(filename);
				}
				int i = associationService.updateAssociationWeb(association);
				if (i == 1) {
					model.addAttribute("msg", "修改成功!");
				} else
					model.addAttribute("msg", "修改失败!");
			} catch (Exception e) {
				e.printStackTrace();
			}
			return "activity/msg";
		}
		
		//跳转添加协会界面
		@RequestMapping("/toaddAssociation")
		public String toaddAssociation() {
			return "association/association-add";
		}
		
		// 添加协会
		@RequestMapping("/addAssociation")
		@ResponseBody
		public int addAssociation(Model model, Association association) {
			int i;
			try {
				i = associationService.addAssociation(association);
				System.out.println(i);
			} catch (Exception e) {
				e.printStackTrace();
				i = 0;
			}
			return i;
		}
		
		// 展示会长信息
		@RequestMapping("/showhuizhang")
		public String showhuizhang(Model model, HttpServletRequest request) {
			String id = request.getParameter("member_id");
			VMember member = associationService.findhuizhangById(id);
			model.addAttribute("member", member);
			return "association/showhuizhang";
		}
		
		// 会员申请协会
		@RequestMapping("/applyAssociation")
		@ResponseBody
		public int applyAssociation(HttpServletRequest request, HttpSession session) {
			String id = request.getParameter("ass_id");
			int i = 0;
			Member self = (Member) session.getAttribute("self");
			if(self==null||self.equals("")) { //登陆否
				i=8;		
			}
			else {
			List<Association> ass = null;

			try {
				if (associationService.findApplyByMemberId(self.getMember_id())==null) {// 没有入会申请在审批中
					int count=associationService.findAsscount(self.getMember_id());//得出加入协会数量
					ass = associationService.findAssidbyMid(self.getMember_id());//查找出该会员已在协会id,防止重复申请相同协会
					for(int j=0;j<ass.size();j++) {
					String assid=ass.get(j).getAss_id();
					if(assid.equals(id)) {
						i=9;break;
					}
					}
					if(i!=9) {
				    if(count<2) {//如果没有加入两个协会及以上
						i = associationService.addApply(id, self.getMember_id());//添加申请信息
					}
					else  i=0;
				}
				}
				else {
					i=0;
				}
					 
			}
			catch(Exception e){
			 e.printStackTrace();
			}			
			}
			return i;
		}
		
		// 我的协会(前端)
		@RequestMapping("/myAssociation")
		public String findAllAssociationMemberWeb(Model model, HttpSession session) {
			Member self = (Member) session.getAttribute("self");//获得会员信息
			List <Association> associationList = associationService.findAssidbyMid(self.getMember_id());//通过member id从v_ass查找ass
			List<Assall> AssallList = new ArrayList<>();
			Assall all;
			for (int i=0;i<associationList.size();i++) {
				all = new Assall();
				all.setXiehui_people(associationService.findAllAssociationMember(associationList.get(i).getAss_id()));//通过ass id从v member查找出该协会成员
				/* 遍历设置协会信息 */
				all.setAss_id(associationList.get(i).getAss_id());
				all.setAss_name(associationList.get(i).getAss_name());

				String leader=associationList.get(i).getLeader();//获得会长ID
				all.setMember_id(leader);
				all.setLeadername(associationService.findhuizhangById(leader).getMember_name());//根据id查询出会长名
				all.setAss_state(associationList.get(i).getAss_state());
				all.setAss_qqgroup(associationList.get(i).getAss_qqgroup());
				all.setAss_email(associationList.get(i).getAss_email());
				all.setAss_asset(associationList.get(i).getAss_asset());
				all.setAss_introduce(associationList.get(i).getAss_introduce());
				all.setAss_img(associationList.get(i).getAss_img());
				AssallList.add(all);
			}			
			model.addAttribute("ass",AssallList);
			return "web/myAssociation";
		}
		
		// 显示前端优秀协会代表
		@RequestMapping("/AssShow")
		@ResponseBody
		public List<Association> AssShow(Model model) {
			List<Association> assShow = null;
			try {
				assShow = associationService.findAllAssociationToShow();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return assShow;
		}	
		
		// 会长修改协会信息前端
		@RequestMapping("/toUpdateAssociationWeb")
		public String toUpdateAssociationWeb(Model model, HttpServletRequest request) {
			String id = request.getParameter("ass_id");
			Association association = associationService.findAssociationByById(id);
			model.addAttribute("ass", association);
			return "web/association-edit-web";
		}
		
		// 退会
		@RequestMapping("/delMemberass")
		@ResponseBody
		public int delMemberass(HttpServletRequest request) {
		int i = 0;
		String ass_id=request.getParameter("ass_id");
		String member_id=request.getParameter("member_id");
		int member_state=associationService.findMember(member_id).getMember_state();
		String tel=associationService.findMember(member_id).getMember_phone();//获得手机号
		
		Association association =associationService.findAssociationById(ass_id);
		String assname=association.getAss_name();//得到协会名
		String leader=association.getMember_id();//得到会长id
		
			try {		
				if (!member_id.equals(leader)) {//不为会长
					i=associationService.deleteMemberass(member_id, ass_id);//删掉member_ass
					associationService.updateMemberState(member_id,member_state);//member_state - 1
					if(tel!=null) {					
						Inform inform = new Inform();
						int mid=Integer.parseInt(member_id);		 //转换member_id		
						inform.setAdmin_id(1);
						inform.setMember_id(mid);
						inform.setInform_title("退会通知");
						inform.setInform_content("你好,你已被" + assname + "退会。如有疑问,请联系会长。");
						associationService.addInform(inform);
						sendMessagetuihui(tel,assname);
						}
					
				}
				else i=0;
			}
           catch (Exception e) {
				e.printStackTrace();
                i=0;
				}

			return i;
		}
}

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

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

相关文章

2023寒假算法集训营3

&#xff08;数学场真折磨人&#xff09; A. 不断减损的时间&#xff08;贪心&#xff09; 题意&#xff1a; 给定一个数组&#xff0c;任意次操作&#xff0c;每次操作可以 选择一个偶数除以 222 。 求最终数组所有元素之和的最小值。 思路&#xff1a; 要使得所有元素之…

三十四、Kubernetes1.25中Ingress介绍、安装

1、介绍 在前面文章中已经提到&#xff0c;Service对集群之外暴露服务的主要方式有两种&#xff1a;NotePort和LoadBalancer&#xff0c;但是这两种方式&#xff0c;都有一定的缺点&#xff1a; NodePort方式的缺点是会占用很多集群机器的端口&#xff0c;那么当集群服务变多的…

【JavaSE专栏2】JDK、JRE和JVM

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

Nacos-统一配置中心

Nacos-统一配置中心统一配置管理1.Nacos编写配置文件2.微服务拉取配置&#xff08;1&#xff09;引入pom依赖&#xff08;2&#xff09;添加bootstrap.yaml&#xff08;3&#xff09;读取nacos配置3.配置热更新&#xff08;1&#xff09;方式一&#xff08;2&#xff09;方式二…

Ubuntu显示优化 动画

之前从win转到了ubuntu。老大哥问我为啥不直接用Mac。我笑笑没说话。其实就一个字&#xff0c;穷。 使用Ubuntu的过程中有一点小问题&#xff0c;不过平时我主要用来编程&#xff0c;对壁纸&#xff0c;过渡动画这些东西其实并不是很在乎。直到我审美感爆棚的妻子告诉我&#…

设计模式学习(十一):Builder建造者模式

一、什么是Builder模式大都市中林立着许多高楼大厦&#xff0c;这些高楼大厦都是具有建筑结构的大型建筑。通常&#xff0c;建造和构建这种具有建筑结构的大型物体在英文中称为Build。在建造大楼时&#xff0c;需要先打牢地基&#xff0c;搭建框架&#xff0c;然后自下而上地一…

AcWing 278. 数字组合

AcWing 278. 数字组合一、问题二、思路1、状态表示2、状态转移3、循环设计4、初末状态三、代码一、问题 二、思路 这道题其实看上去和我们的01背包问题是非常相似的。如果这道题我们转化为01背包问题的话&#xff0c;描述如下&#xff1a; 给很多个物品和体积&#xff0c;然后…

深入理解Mysql底层数据结构

一. 索引的本质 索引是帮助MySQL高效获取数据的排好序的数据结构。 二. 索引的数据结构 二叉树红黑树Hash表BTreeBTree mysql的索引采用的是B树的结构 mysql为什么不用二叉树&#xff0c;因为对于单边增长的数据列&#xff0c;二叉树和全表扫描差不多&#xff0c;效率没有什…

pytorch 神经网络笔记-RNN和LSTM

文章目录时间序列表示方法一般过程RNNRNN原理1RNN原理2RNN layer使用pytorch实现nn.RNN__init__forwardSingle layer RNN2 layer RNNpytorch实现nn.RNNCell时间序列波形预测例子LSTMnn.LSTMnn.LSTMCellSingle layerTwo Layersb站课程链接课时自己找一下 时间序列表示方法 卷积神…

自注意力(Self-Attention)机制浅析

一、自注意力机制概述循环神经网络由于信息传递的容量以及梯度消失问题&#xff0c;实际上也只能建立短距离依赖关系。为了建立长距离的依赖关系&#xff0c;可以增加网络的层数或者使用全连接网络。但是全连接网络无法处理变长的输入序列&#xff0c;另外&#xff0c;不同的输…

字节青训前端笔记 | Web安全

在网络时代下&#xff0c;Web 安全随处可见并且危害极大&#xff0c;Web 安全问题也越来越受到重视。本节课将讲述Web中的攻击和防御 XSS 利用开发者盲目信任客户提交的内容来实现的工具&#xff0c;恶意攻击者往 Web 页面里插入恶意 Script 代码&#xff0c;当用户浏览该页面…

机器视觉(十二):二维条码识别

目录&#xff1a; 机器视觉&#xff08;一&#xff09;&#xff1a;概述 机器视觉&#xff08;二&#xff09;&#xff1a;机器视觉硬件技术 机器视觉&#xff08;三&#xff09;&#xff1a;摄像机标定技术 机器视觉&#xff08;四&#xff09;&#xff1a;空域图像增强 …

【16】C语言 | 初识函数递归 | 几个练习

目录 什么是递归? 练习1: 练习2: 练习3、 练习4 什么是递归? 程序调用自身的编程技巧称为递归( recursion )。递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化…

生物化学 电阻抗成像OpenEIT,Dbar算法,数据集等(暂记)

Electrical Impedance Tomography,EIT 电阻抗成像&#xff08;Electrical Impedance Tomography,EIT&#xff09;是一种无创的以人体内部的电阻率分布为目标的重建体内组织图像的技术。人体是一个大的生物电导体&#xff0c;各组织、器官均有一定的阻抗&#xff0c;当人体的局部…

SLF4J基本使用

文章目录1. 日志门面2. SLF4J的使用2.1 SLF4J入门2.2 为什么要使用SLF4J作为日志门面&#xff1f;2.3 绑定日志的实现&#xff08;Binding&#xff09;2.4 logback 整合 slf4j2.5 log4j 整合 slf4j2.6 jul 整合 slf4j3. 桥接旧的日志框架&#xff08;Bridging&#xff09;3.1 S…

完全二叉树的权值

题目描述 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1​,A2​,⋅⋅⋅AN​,如下图所示: 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输…

react用高阶组件优化文件结构 帮助建立高阶组件应用思路

其实高阶组件是一个将组件写的更灵活的方式&#xff0c;他的应用场景在业务开发中会非常多样 这里 我们演示一种 主要还是解决问题的思想最重要 或者是 这个不叫解决问题 而是设计组件结构的思路 我们来模拟一个场景 在src下有一个 components 文件夹目录 在 components 下有…

3.开发社区首页

数据库设计如下&#xff1a; 任务&#xff1a;开发社区首页&#xff0c;显示前十个帖子&#xff1b;开发分页组件&#xff0c;分页显示所有帖子。 开发流程&#xff1a;entity->dao->mapper.xml->service->controller 由于关注后端&#xff0c;所以未使用前后分离…

【Potplayer】如何用Potplayer实现对视频的局部缩放播放?如何用potplayer更舒心地播放竖屏视频?

一、问题背景 有时候我们从互联网上下载得到一个竖屏视频&#xff0c;用电脑播放时&#xff0c;左右两边都是黑的&#xff0c;电脑屏幕的高宽度没有得到良好应用。而如果恰好这个竖屏视频其实只有一小部分才是有效区域/重点内容&#xff0c;比如中央区域&#xff0c;上下区域都…

win10怎么玩经典扫雷?繁星软件园推荐大家试试Windows7Games吧,亲测好用的扫雷Win10电脑版下载!!!

扫雷Win10电脑版(Windows7Games)是专门为微软最新版本的Windows 10/11操作系统打造的一款非常不错的消除类PC休闲小游戏安装包&#xff0c; Windows7Games游戏安装包为中文版&#xff0c;包含经典扫雷、空当接龙、红心大战、国际象棋等微软低版本操作系统Windows自带的多款超级…