当前位置: 首页 > news >正文

OA项目之会议通知(查询是否参会反馈详情)

目录

会议查询

是否参会

反馈详情


讲解思路

  • 会议通知SQL语句分析

  • 反馈详情SQL语句分析

  • 后台代码编写

  • 前端代码编写

    效果预览

     

会议查询

MeetingFeedBack.java

package com.zking.oa.model;import org.lisen.mvc.util.AutoIncrement;
import org.lisen.mvc.util.Key;
import org.lisen.mvc.util.Table;import com.zking.oa.util.CacheUtil;
@Table("t_oa_meeting_feedback")
public class MeetiingFeedback {@AutoIncrement@Keyprivate Integer id;private Integer meetingId;private int personType;private int personId;private int result;private String reason;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Integer getMeetingId() {return meetingId;}public void setMeetingId(Integer meetingId) {this.meetingId = meetingId;}public int getPersonType() {return personType;}public void setPersonType(int personType) {this.personType = personType;}public int getPersonId() {return personId;}public void setPersonId(int personId) {this.personId = personId;}public int getResult() {return result;}public void setResult(int result) {this.result = result;}public String getReason() {return reason;}public void setReason(String reason) {this.reason = reason;}public MeetiingFeedback(Integer id, Integer meetingId, int personType, int personId, int result, String reason) {super();this.id = id;this.meetingId = meetingId;this.personType = personType;this.personId = personId;this.result = result;this.reason = reason;}public MeetiingFeedback() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "MeetiingFeedback [id=" + id + ", meetingId=" + meetingId + ", personType=" + personType + ", personId="+ personId + ", result=" + result + ", reason=" + reason + "]";}/*** 获取参与人员类型描述,是参与者还是列席者* @return*/public String getMeetingJoinTypeName() {return CacheUtil.getMeetingJoinType(this.personId);}/*** 获取参与者名称* @return*/public String getPersonName() {return CacheUtil.getUser(this.getPersonId()).getName();}}

 MeetingFeedBackDao.java

/*** 会议通知:查询出我(当前登陆用户)需要参与的会议及会议的反馈信息(参会、缺席以及未读)* @param back* @param pageBean* @return* @throws SQLException * @throws IllegalAccessException * @throws InstantiationException */
@Overridepublic List<MeetiingFeedback> listMeetingFeedback(MeetiingFeedback meetingFeedback, PageBean pageBean) {String sql = "SELECT t1.id,t1.meetingId, t1.personType, t1.personId, t1.result, t1.reason\r\n" + "   FROM t_oa_meeting_feedback t1\r\n"  +"   WHERE 1=1 ";List<Object> param = new ArrayList<Object>();if(meetingFeedback != null && meetingFeedback.getResult()+"" != null) {sql += " and t1.result = ? ";param.add(meetingFeedback.getResult());}if(meetingFeedback != null && meetingFeedback.getMeetingId() != null) {sql += " and t1.meetingId = ? ";param.add(meetingFeedback.getMeetingId());}return DbTemplate.query(sql, param.toArray(), pageBean, MeetiingFeedback.class);}

MeetingFeedBackAction.java

/*** 查询会议相关人员的反馈信息* @param req* @param resp*/public void listMeetingFeedback(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<MeetiingFeedback> list = service.listMeetingFeedback(meetingFeedback, pageBean);CommonUtil.sendResponse(0, "会议反馈查询成功", pageBean.getTotal(), list, resp);} catch (Exception e) {e.printStackTrace();CommonUtil.sendResponse(0, "会议反馈查失败", resp);}}

config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[<!ELEMENT config (action*)><!ELEMENT action (forward*)><!ELEMENT forward EMPTY><!ATTLIST actionpath CDATA #REQUIREDtype CDATA #REQUIRED><!ATTLIST forwardname CDATA #REQUIREDpath CDATA #REQUIREDredirect (true|false) "false">
]>
<config><action type="com.zking.oa.action.UserAction" path="/userAction"> </action><action type="com.zking.oa.action.PermissionAction" path="/permissionAction"> </action><action type="com.zking.oa.action.MeetinginfoAction" path="/meetinginfoAction"> </action><action type="com.zking.oa.action.MeetingAuditAction" path="/meetingAuditAction"> </action><action type="com.zking.oa.action.meetingFeedbackAction" path="/meetingFeedbackAction"> </action></config>

DateUtil.java

package com.zking.oa.util;import java.text.SimpleDateFormat;
import java.util.Date;/*** 日期帮助类* @author lisensir*/
public final class DateUtil {private DateUtil() {}private static final String FORMCAT_STR = "yyyy-MM-dd HH:mm:ss";/*** 将日期格式化为yyyy-MM-dd HH:mm:ss格式的字符串* @param date 需要格式化的日期* @return*/public static String format(Date date) {if(date == null) return "";SimpleDateFormat sdf  = new SimpleDateFormat(FORMCAT_STR);return sdf.format(date);}/*** 将日期格式化为yyyy-MM-dd HH:mm:ss格式的字符串* @param date 需要格式化的日期* @param format 指定的格式字符串* @return*/public static String format(Date date, String format) {if(date == null) return "";SimpleDateFormat sdf  = new SimpleDateFormat(format);return sdf.format(date);}public static void main(String[] args) {Date date = new Date(System.currentTimeMillis());String s = format(date);System.out.println(s);}}

meetingNotify.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%@ include file="/common/head.jsp" %>
<title>会议通知</title>
<style>
.layui-inline {margin-top: 20px;
}
.seatPicDiv {height: 180px;
}
.seatPic:active {height: 360px;
}.layui-layer-page .layui-layer-content {/* 解决送审对话框中人员选择下拉框不能完全显示问题 */overflow: visible;!important
}
</style></head>
<body><!-- 查询条件 --><div class="layui-inline"><label class="layui-form-label">标题:</label><div class="layui-input-block"><input type="text" name="title" id="title" placeholder="会议标题" class="layui-input"></div></div><div class="layui-inline"><button class="layui-btn" id="queryMeetingInfo"><i class="layui-icon layui-icon-search"></i>查询</button></div><!-- 用户信息表格 --><table class="layui-hide" id="meetingInfoTable" lay-filter="meetingInfoTable"></table><!-- 使用了layui自定义语法,当会议不能送审或排座时将按钮显示为禁用状态 --><script type="text/html" id="toolbar"><button class="layui-btn layui-btn-sm" lay-event="feeback">反馈</button></script></body>
</html>

meetingNotify.js

<script>
let table=null;
let $ = null;
var row = null;
let formSelects = null;
let form = null;
let layer = null;layui.use(['table','jquery','formSelects','form','layer'], function(){table = layui.table;$ = layui.jquery;formSelects = layui.formSelects;form = layui.form;layer = layui.layer;loadMeetingInfo();//查询我的会议信息$("#queryMeetingInfo").click(function() {loadMeetingInfo();});//对表格的功能按钮增加事件监听,如排座,送审,反馈按钮table.on('tool(meetingInfoTable)', function(obj) {if(obj.event == 'feeback') {openFeebackDialog(obj.data);}});});var row = null;
function openFeebackDialog(data) {row = data;layer.open({type: 2,   //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)title:'会议反馈',area: ['654px', '420px'],   //宽高skin: 'layui-layer-rim',    //样式类名content: ctx + '/jsp/meeting/addFeedBack.jsp',  //弹出内容。可以传入普通的html内容,还可以指定DOM,更可以随着type的不同而不同btn: ['确定', '关闭'],yes: function(index,layero) {let formData = $(layero).find("iframe")[0].contentWindow.getFormData();console.log(formData);addMeetingFeedback(formData);},btn2: function(index,layero){}});
}//查询会议信息
function loadMeetingInfo() {table.render({elem: '#meetingInfoTable',url: ctx + '/meetinginfoAction.action?methodName=listRelatedMeetingInfoByUserId',cols: [[{field:'id', width:80, title: 'ID'},{field:'title', width:180, title: '会议标题', sort: true},{field:'location', width:180, title: '会议地点', sort: true},{field:'startTime', width:180, title: '开始时间'},{field:'endTime', width:180, title: '结束时间'},{field:'meetingState', width:180, title: '会议状态'},{fixed:'right', title: '操作', width:200, align:'left', unresize: true, toolbar:'#toolbar'}]],page: true,request: {pageName: 'page',limitName: 'rows'},method: 'post',where: {title: $("#title").val()},loading: true,});
}
</script>

是否参会

MeetingFeedBackDao.java

/*** 新增会议反馈* @param back*/public void addMeetingFeedback(MeetiingFeedback back) {String sql="insert into t_oa_meeting_feedback(meetingId,personType,personId,result,reason) values(?,?,?,?,?)";super.executeUpdate(sql, new Object[] {back.getMeetingId(),back.getPersonType(),back.getPersonId(),back.getResult(),back.getReason()});}

MeetingFeedBackAction.java

/*** 增加会议反馈* @param req* @param resp*/public void addMeetingFeedback(HttpServletRequest req, HttpServletResponse resp) {try {service.addMeetingFeedback(meetingFeedback);CommonUtil.sendResponse(0, "会议反馈成功", resp);} catch (Exception e) {e.printStackTrace();CommonUtil.sendResponse(0, "会议反馈失败", resp);}}

meetingNotify.js

<script>
let table=null;
let $ = null;
var row = null;
let formSelects = null;
let form = null;
let layer = null;layui.use(['table','jquery','formSelects','form','layer'], function(){table = layui.table;$ = layui.jquery;formSelects = layui.formSelects;form = layui.form;layer = layui.layer;loadMeetingInfo();//查询我的会议信息$("#queryMeetingInfo").click(function() {loadMeetingInfo();});//对表格的功能按钮增加事件监听,如排座,送审,反馈按钮table.on('tool(meetingInfoTable)', function(obj) {if(obj.event == 'feeback') {openFeebackDialog(obj.data);}});});var row = null;
function openFeebackDialog(data) {row = data;layer.open({type: 2,   //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)title:'会议反馈',area: ['654px', '420px'],   //宽高skin: 'layui-layer-rim',    //样式类名content: ctx + '/jsp/meeting/addFeedBack.jsp',  //弹出内容。可以传入普通的html内容,还可以指定DOM,更可以随着type的不同而不同btn: ['确定', '关闭'],yes: function(index,layero) {let formData = $(layero).find("iframe")[0].contentWindow.getFormData();console.log(formData);addMeetingFeedback(formData);},btn2: function(index,layero){}});
}//增加会议反馈
function addMeetingFeedback(param) {$.ajax({url: ctx + "/meetingFeedbackAction.action?methodName=addMeetingFeedback",data: param,type: 'post',dataType: 'json',success: function(resp) {layer.msg(resp.msg,{icon: 1,time: 2000 //2秒关闭(如果不配置,默认是3秒)},function() {layer.closeAll();});}});
}//查询会议信息
function loadMeetingInfo() {table.render({elem: '#meetingInfoTable',url: ctx + '/meetinginfoAction.action?methodName=listRelatedMeetingInfoByUserId',cols: [[{field:'id', width:80, title: 'ID'},{field:'title', width:180, title: '会议标题', sort: true},{field:'location', width:180, title: '会议地点', sort: true},{field:'startTime', width:180, title: '开始时间'},{field:'endTime', width:180, title: '结束时间'},{field:'meetingState', width:180, title: '会议状态'},{fixed:'right', title: '操作', width:200, align:'left', unresize: true, toolbar:'#toolbar'}]],page: true,request: {pageName: 'page',limitName: 'rows'},method: 'post',where: {title: $("#title").val()},loading: true,});
}
</script>

addFeedBack.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<%@include file="/common/head.jsp" %>
</head>
<style>
body{margin:5px;
}
</style><body>
<div style="padding:10px;"><!-- 反馈表单 --><form class="layui-form layui-form-pane" lay-filter="back"><input type="hidden" name="meetingId" id="meetingId"/><input type="hidden" name="personId" value="${sessionScope.user.id }"/><div class="layui-form-item"><label class="layui-form-label">人员类型</label><div class="layui-input-block"><!-- <select id="personType" name="personType"><option value="">请选择人员类型</option><option value="1">参会</option><option value="2">列席</option></select> --><input type="hidden" name="personType" id="personType"/><input type="text" id="personTypeName" autocomplete="off" readonly="readonly" class="layui-input"></div></div><div class="layui-form-item" pane=""><label class="layui-form-label">反馈结果</label><div class="layui-input-block" ><!--<select id="result" name="result"><option value="">请选择反馈结果</option><option value="1">参加</option><option value="2">不参加</option></select> --><input type="radio" name="result" value="1" title="参加" checked><input type="radio" name="result" value="2" title="不参加"></div></div><div class="layui-form-item layui-form-text"><label class="layui-form-label">不参与会议的原因</label><div class="layui-input-block"><textarea placeholder="请输入内容" name="reason" class="layui-textarea"></textarea></div></div></form></div>
</body>
</html>

addFeedBack.js  

<script>
let form = null;
layui.use(['jquery', 'form'], function() {let $ = layui.$;form = layui.form;//获取会议记录信息let data = parent.row || {};//获取当前登录用户IDlet currentUserId = '${sessionScope.user.id}';//设置会议ID$("#meetingId").val(data.id);//判断当前用户是存在与参与者中,如果是则设置人员类型为参与者let canyuze = data.canyuze.split(",");if(canyuze.indexOf(currentUserId) > -1) {$("#personTypeName").val("参与者");$("#personType").val("1");}//判断当前用户是存在与列席者中,如果是则设置人员类型为列席者let liexize = data.liexize.split(",");if(liexize.indexOf(currentUserId) > -1) {$("#personTypeName").val("列席者");$("#personType").val("2");}
});//获取表单数据,在父窗口(会议通知)会调用该方法获取表单数据用于提交
function getFormData() {return form.val('back');
}
</script>

反馈详情

MeetingFeedBackDao.java

	/*** 根据会议ID获取会议反馈详情信息* @param back* @return*/@SuppressWarnings("unchecked")public List<Map<String,Object>> queryBackPersons(MeetiingFeedback back){String sql="select " + "f.result,GROUP_CONCAT(u.name) as name " + "from " + "t_oa_meeting_feedback f,t_oa_user u " + "where f.personId=u.id and meetingId="+back.getMeetingId()+" group by f.result";System.out.println(sql);return super.executeQuery(sql, null, new convert<Map<String,Object>>() {@Overridepublic List<Map<String, Object>> forEach(ResultSet rs) throws Exception {return CommonUtils.toList(rs);}});}

MeetingFeedBackAction.java

/*** 查询会议相关人员的反馈信息* @param req* @param resp*/public void listMeetingFeedback(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<MeetiingFeedback> list = service.listMeetingFeedback(meetingFeedback, pageBean);CommonUtil.sendResponse(0, "会议反馈查询成功", pageBean.getTotal(), list, resp);} catch (Exception e) {e.printStackTrace();CommonUtil.sendResponse(0, "会议反馈查失败", resp);}}

myMeeting.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<%@ include file="/common/head.jsp" %>
<title>Insert title here</title>
<style>
.layui-inline {margin-top: 20px;
}
.seatPicDiv {height: 180px;
}
.seatPic:active {height: 360px;
}.layui-layer-page .layui-layer-content {/* 解决送审对话框中人员选择下拉框不能完全显示问题 */overflow: visible;!important
}
</style></head>
<body><!-- 查询条件 --><div class="layui-inline"><label class="layui-form-label">标题:</label><div class="layui-input-block"><input type="text" name="title" id="title" placeholder="会议标题" class="layui-input"></div></div><div class="layui-inline"><button class="layui-btn" id="queryMeetingInfo"><i class="layui-icon layui-icon-search"></i>查询</button></div><!-- 用户信息表格 --><table class="layui-hide" id="meetingInfoTable" lay-filter="meetingInfoTable"></table><!-- 使用了layui自定义语法,当会议不能送审或排座时将按钮显示为禁用状态 --><script type="text/html" id="toolbar">{{# if(d.state==1 || d.state==3){ }}<button class="layui-btn layui-btn-sm" lay-event="seat">排座</button><button class="layui-btn layui-btn-sm" lay-event="send">送审</button>{{# } else{ }}<button class="layui-btn layui-btn-sm layui-btn-disabled" lay-event="seat">排座</button><button class="layui-btn layui-btn-sm layui-btn-disabled" lay-event="send">送审</button>{{# } }}<button class="layui-btn layui-btn-sm" lay-event="feedback">反馈</button></script><!-- 送审对话框内容 --><div id="auditDiv" style="display:none;"><form style="margin:20px 15px;" class="layui-form layui-form-pane" id="sendAudit" lay-filter="sendAudit"><div class="layui-inline"><label class="layui-form-label">送审人</label><div class="layui-input-inline"><select name="auditPerson" xm-select="auditPerson" xm-select-radio><option value="" disabled="disabled">--请选择--</option></select></div><div class="layui-input-inline"><!-- <button id="btn_auditor" class="layui-btn" lay-filter="sendAudit">送审</button> --><button type="button" id="sendAudit" lay-submit lay-filter="sendAudit" class="layui-btn layui-btn-normal">送审</button></div></div></form></div></body>
</html>

myMeeting.js

<script>
let table=null;
let $ = null;
var row = null;
let formSelects = null;
let form = null;
let layer = null;layui.use(['table','jquery','formSelects','form','layer'], function(){table = layui.table;$ = layui.jquery;formSelects = layui.formSelects;form = layui.form;layer = layui.layer;loadMeetingInfo();//查询我的会议信息$("#queryMeetingInfo").click(function() {loadMeetingInfo();});//对表格的功能按钮增加事件监听,如排座,送审,反馈按钮table.on('tool(meetingInfoTable)', function(obj) {//排座if(obj.event == 'seat') {//对于新建或驳回状态的会议可以执行排座if(obj.data.state == 1 || obj.data.state == 3) {openSeatPic(obj.data.id);} else {layer.msg("对于审核通过,结束,取消,进行中等状态的会议不能再执行排座")}}//送审if(obj.event == 'send') {if(obj.data.seatPic) {//对于新建或驳回状态的会议可以送审if(obj.data.state == 1 || obj.data.state == 3) {openSendAudit(obj.data.id);} else {layer.msg("对于审核通过,结束,取消,进行中等状态的会议不能执行送审");}} else {layer.msg("未进行排座不能送审");}}//查看反馈if(obj.event == 'feedback') {openFeedbackInfo(obj.data);}});});function openFeedbackInfo(data) {let ignore = [0,1,2,3];if(ignore.indexOf(data.state) >= 0) {layer.msg("对于新建、驳回、取消、待审状态下的会议,不用查看反馈");return;}debugger;layer.open({type: 2,                    //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)title:'反馈详情',area: ['600px', '650px'],   //宽高skin: 'layui-layer-rim',    //样式类名content: ctx+'/jsp/meeting/meetingFeedback.jsp?meetingId=' + data.id,btn:['关闭'],yes:function(index,layero){layer.closeAll();}});
}// 打开送审的对话框,执行送审
function openSendAudit(id) {let index = layer.open({type: 1,  //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)title: '送审',area: ['660px', '200px'],   //宽高skin: 'layui-layer-rim',    //样式类名content: $("#auditDiv")     //送审对应的div});//初始化送审人员选择下拉列表的数据formSelects.data('auditPerson', 'server', {url: ctx + '/meetinginfoAction.action?methodName=listMeetingMember'});//添加送审按钮的监听事件,发送ajax请求执行送审form.on('submit(sendAudit)', function(data) {console.log(data);data.field["id"] = id;console.log(data);$.ajax({url: ctx + '/meetinginfoAction.action?methodName=sendAudit',data: data.field,type: 'post',dataType: 'json',success: function(resp) {layer.msg(resp.msg);layer.close(index);//送审成功,更新我的会议列表loadMeetingInfo();}})});
}//会议排座
function openSeatPic(id) {row = null;layer.open({type: 2,  //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)title: '会议排座',area: ['660px', '350px'],   //宽高skin: 'layui-layer-rim',    //样式类名content: ctx+'/jsp/meeting/seatPic.jsp?id='+id});
};//查询会议信息
function loadMeetingInfo() {table.render({elem: '#meetingInfoTable',url: ctx + '/meetinginfoAction.action?methodName=listMeetingInfo',cols: [[{field:'id', width:60, title: 'ID'},{field:'title', width:180, title: '会议标题', sort: true},{field:'location', width:180, title: '会议地点', sort: true},{field:'startTime', width:160, title: '开始时间'},{field:'endTime', width:160, title: '结束时间'},{field:'meetingState', width:180, title: '会议状态'},//显示排座图片{field: 'seatPic', title: '会议排座', width: 180,templet:function(d){if(null==d.seatPic)return "尚未排座";elsereturn "<img height='180px' src='"+d.seatPic+"'/>";}},{field: '', title: '操作', width: 250, toolbar:'#toolbar'}]],page: true,request: {pageName: 'page',limitName: 'rows'},method: 'post',where: {title: $("#title").val()},loading: true,});
}
</script>

相关文章:

OA项目之会议通知(查询是否参会反馈详情)

目录 会议查询 是否参会 反馈详情 讲解思路 会议通知SQL语句分析 反馈详情SQL语句分析 后台代码编写 前端代码编写 效果预览 会议查询 MeetingFeedBack.java package com.zking.oa.model;import org.lisen.mvc.util.AutoIncrement; import org.lisen.mvc.util.…...

如何维护自己的电脑的措施

维护自己的电脑可以采取以下措施&#xff1a; 硬件维护&#xff1a;定期清理电脑表面的灰尘和污垢&#xff0c;避免灰尘对电脑内部部件造成影响。电源插座要保持接触良好&#xff0c;保证电脑的电源稳定。如果使用笔记本电脑&#xff0c;要注意保证散热通畅&#xff0c;避免电…...

VS2022 Community 安装步骤

VS2022 Community 安装步骤&#xff08;C语言学习&#xff09; 1. 下载地址2. 安装步骤 1. 下载地址 链接: VS2022 Community下载地址 2. 安装步骤 双击图标进行安装。 点击【继续】后等待安装。 选择需要的安装包并修改安装位置&#xff0c;然后点击【安装】。 点击安装…...

vue3中mitt.js使用

在vue2中我们通过事件总线eventbus,来实现两个平行组件之间的通信&#xff1a; bus.js import Vue from vue // 创建vue实例 const Bus new Vue() export default Bus在具体的组件中&#xff1a; A.vue import Bus from ./bus.js // 发布一个事件 Bus.$emit(sendData, {nam…...

Redis 内存淘汰策略详解

Redis 内存淘汰策略详解 一、简介Redis内存管理问题 二、内存淘汰策略1.为什么需要内存淘汰策略2.内存淘汰策略分类&#xff08;1&#xff09;noeviction&#xff08;2&#xff09;allkeys-lru&#xff08;3&#xff09;allkeys-lfu&#xff08;4&#xff09;volatile-lru&…...

初识Redis之分布式

一.简单介绍: Redis是用来在内存中, 存储数据的, 他的初心是用来搞消息中间件(或者说消息队列 很熟悉了吧~~),但是呢用的不多,他现在主要是用来做 数据库,缓存 用来存储数据, 为什么不直接存储呢? Redis的优势就在于分布式系统 二.分布式系统 要说其分布式系统,简单想想都能…...

计算机网络-笔记-第三章-数据链路层

目录 三、第三章——数据链路层 1、数据链路层概述&#xff08;帧&#xff09; &#xff08;1&#xff09;封装成帧、差错检测、可靠传输&#xff08;简单介绍&#xff09; &#xff08;2&#xff09;CSMA/CD 2、封装成帧 &#xff08;1&#xff09;透明传输&#xff08;…...

【1】openGL glew示例代码分析绘制一个三角形

openGL文档 > docs.gl &#xff0c;可以直接查询函数的定义和使用 #include <iostream> #include <string> #include <GL/glew.h> #include <GLFW/glfw3.h>int main(void) {GLFWwindow* window;/* Initialize the library */if (!glfwInit())retu…...

android:新建工程文件介绍

一、前言当我们新建一个app时会呈现出固定的工程文件&#xff0c;这篇文章介绍新建工程里的文件。 二、介绍 Structure:就是你选择哪个页面就会显示那个页面的结构&#xff0c;就比如说我选择的是MainActivity他就会显示这个页面所使用的方法。 1-2&#xff1a;是android自动生…...

强化历程6-网络系列(2023.8.30)

文章目录 强化历程6-网络系列(2023.8.30)1 说一下OSI七层协议&#xff0c;为什么要分层&#xff1f;2 什么是TCP/IP协议&#xff0c;与OSI七层协议两者对比&#xff1f;3 什么是TCP协议&#xff0c;TCP协议和UDP协议区别&#xff1f;4 说一下TCP的三次握手和四次挥手5 两次握手…...

下载MedShapeNet

在 [1] 可下载 MedShapeNet 数据集&#xff0c;在其 Download 页&#xff0c;可选直接 GUI 下&#xff0c;或者先下一个索引文件&#xff0c;.txt 的&#xff0c;每行一条文件的下载链接&#xff0c;然后用 wget 逐条下。这里放下 wget 下载的 shell 脚本&#xff1a; 下载链索…...

根据身高重建队列【贪心算法】

根据身高重建队列 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返…...

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI 高校汉服租赁网站的 设计与实现

一.项目介绍 高校汉服租赁网站分为普通用户以及管理员两类 普通用户&#xff1a; 注册、登录系统、查看汉服首页发帖公告信息、 交流论坛&#xff08;发帖、查看帖子、评论&#xff09;、 公告咨询&#xff08;查看公告以及评论&#xff09;、 汉服信息&#xff08;查…...

SQL-DQL

-----分组查询----- 1.语法&#xff1a; SELECT 字段列表 FROM 表名 [WHERE 条件 ] GROUP BY 分组字段名 [HAVING 分组后过滤条件]&#xff1b; 2.where与having区别 》执行时机不同&#xff1a;where是分组之前进行过滤&#xff0c;不满足where条件&#xff0c;不参与分组&…...

手写深拷贝方法

function deepClone(data){if(!isObject(data)){// 非对象&#xff0c;直接拷贝return data}let result {}if(data instance of Array){result []}for(let key in data){if(data.hasOwnProperty(key)){result[key] deepClone(data[key])}}return result }// 是否对象 functi…...

格子游戏——并查集

Alice和Bob玩了一个古老的游戏&#xff1a;首先画一个 nn 的点阵&#xff08;下图 n3 &#xff09;。 接着&#xff0c;他们两个轮流在相邻的点之间画上红边和蓝边&#xff1a; 直到围成一个封闭的圈&#xff08;面积不必为 1&#xff09;为止&#xff0c;“封圈”的那个人就是…...

2023最新Python重点知识万字汇总

这是一份来自于 SegmentFault 上的开发者 二十一 总结的 Python 重点。由于总结了太多的东西&#xff0c;所以篇幅有点长&#xff0c;这也是作者"缝缝补补"总结了好久的东西。 **Py2 VS Py3** * print成为了函数&#xff0c;python2是关键字* 不再有unicode对象…...

【STM32】学习笔记(TIM定时器)-江科大

TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff0c;而且…...

Parallel Context Windows for Large Language Models

本文是LLM系列文章&#xff0c;针对《Parallel Context Windows for Large Language Models》的翻译。 大语言模型并行上下文窗口 摘要1 引言2 并行上下文窗口3 上下文学习的PCW4 PCW用于QA5 相关工作6 结论和未来工作不足 摘要 当应用于处理长文本时&#xff0c;大型语言模型…...

怎么消除人声保留背景音乐?试试这几种简单方法

消除人声保留背景音乐可以用于许多不同的目的。例如&#xff0c;可以在视频制作中使用&#xff0c;以确保观众能够听到清晰的对话&#xff0c;而不会被其他噪音干扰。此外&#xff0c;它也可以用于音乐制作中&#xff0c;以便更好地混合和控制音频元素。教大家几种简单的提取方…...

积分游戏小程序模板源码

积分游戏小程序模板源码是一款可以帮助用户快速开发小程序的工具&#xff0c;此模板源码包含五个静态页面&#xff0c;分别是首页、任务列表、大转盘、猜拳等五个页面&#xff0c;非常适合进行积分游戏等相关开发。 此模板源码的前端部分非常简单易用&#xff0c;用户可以根据…...

IDEA启动两个Tomcat服务的方式 使用nginx进行反向代理 JMeter测试分布式情况下synchronized锁失效

目录 引出IDEA启动Tomcat两个端口的方式1.编辑配置2.添加新的端口-Dserver.port80833.service里面管理4.启动后进行测试 使用nginx进行反向代理反向代理多个端口运行日志查看启动关闭重启 分布式情况下synchronized失效synchronized锁代码启动tomcat两个端口nginx反向代理JMete…...

Shell 脚本入门

目录 一、Shell是什么 1.1 我们为什么要学习Shell和使用Shell&#xff1f; 1.2 Shell的分类有哪些&#xff1f; 二、Shell脚本入门知识 2.1 Shell文件命名规范 2.2 Shell解析器 2.3 用Shell 编写hello World 三、Shell的四种变量类型 3.1 系统预定义变量 3.2 自定义变…...

管理类联考——逻辑——形式逻辑——汇总篇——知识点突破——性质模态

性质&模态 角度一 角度二 矛盾关系 【对象】(1)所有、有的不;(2)所有不、有的;(3)某个、某个不。 【典例】①所有偶像都是靠颜值的。 ②有的偶像不是靠颜值的。 试分析: (1)如果①为真,试判断②的真假。 (2)如果①为假,试判断②的真假。 (3)①和②是否可…...

无涯教程-Android - ToggleButton函数

ToggleButton将已选中/未选中状态显示为按钮。它基本上是一个带有指示灯的开/关按钮。 Toggle Button ToggleButton属性 以下是与ToggleButton控件相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关方法。 Sr.No.Attribute…...

unity VS无法进行断点调试

有时候我们的VS无法进行断点调试&#xff0c;报错如下&#xff1a; 原因是&#xff1a;开启了多个项目&#xff0c;vs无法找到调式项目 解决&#xff1a;点击菜单栏--调试----附加unity调试程序 会弹出一个框&#xff0c;然后选择你要调试的项目 即可...

Pandas由入门到精通-组合与合并数据

采集的数据存储后通常会分为多个文件或数据库,如何将这些文件按需拼接,或按键进行连接十分重要。这节将介绍数据索引的复杂操作如分层索引,stack,unstack,seet_index,reset_index等帮助重构数据,数据的拼接如merge,join,concat,combine_first等帮助连接数据,以及数据透视表…...

Unexpected mutation of “xxxx“ prop

原因 是因为子级修改了父级的数据&#xff0c;所以eslint执行的时候报了这个错 修复方式 1 如果是弹窗等组件&#xff0c;可以根据功能进行修改&#xff0c;比如我这块用的 element ui 的 dialog&#xff0c;便可以改成这样 使用 model-value 代替 修复方式 2 新建子组件…...

七、基础篇总结

...

前端面试基础面试题——2

1.什么是json? json可以存在哪几种数据类型?在什么时候用&#xff1f; 2.什么是作用域&#xff1f; 3.http和https分别是什么&#xff1f;区别是什么&#xff1f; 4.介绍一下js的节流与防抖? 5.什么是cookie&#xff1f;cookie的优缺点。 6.js的三种排序方法&#xff0…...