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>

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

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

相关文章

五金轴尺寸机器视觉测量软硬件方案--康耐德智能

检测内容&#xff1a; 五金轴尺寸机器视觉测量 检测要求&#xff1a; 精度0.015mm&#xff0c;速度180~240个/分钟 视觉可行性分析&#xff1a; 对样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;原则上可以使用机器视觉系统进行测试测量。 结果&#xff1a; 对…

解决uniapp手机真机调试时找不到手机问题

1、检查 USB 调试是否开启 2、检查是否有选择 文件 传输 选项 3、如果上述都做了还找不到&#xff0c;可以看看开发者选项中的【USB设置】&#xff0c;把模式改为 MIDI 模式

黑马 大事件项目 笔记

学习视频&#xff1a;黑马 Vue23 课程 后台数据管理系统 - 项目架构设计 在线演示&#xff1a;https://fe-bigevent-web.itheima.net/login 接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径&#xff1a; http:/…

mysql与msql2数据驱动

mysql基本使用 数据库操作&#xff08;DDL&#xff09; -- 数据考操作 -- 1.查询所有数据库 SHOW DATABASES;-- 2.选择数据库 USE learn_mysql;-- 3.当前正在使用的数据库 SELECT DATABASE();-- 4.创建数据库 CREATE DATABASE IF NOT EXISTS learn_mysql;-- 5.删除数据库 DRO…

UDP/TCP协议报头详细分析

文章目录 ————————预备知识————————数据段netstatpidof—————UDP协议报头即相关概念分析—————UDP协议端格式UDP 特点全双工send / rec 函数的本质UDP的缓冲区基于UDP的应用层协议—————TCP协议报头即相关概念分析—————TCP格式及解析32位序号…

OpenCVSharp入门学习①-获取本地摄像头数据

1. nuget包安装opencvsharp4和opencvsharp4.extensiongs和opencvsharp4.runtime.win 如果不安装opencvsharp4.runtime.win的话会报 System.TypeInitializationException:““OpenCvSharp.Internal.NativeMethods”的类型初始值设定项引发异常。”DllNotFoundException: 无法加…

TiDB x 安能物流丨打造一栈式物流数据平台

作者&#xff1a;李家林 安能物流数据库团队负责人 本文以安能物流作为案例&#xff0c;探讨了在数字化转型中&#xff0c;企业如何利用 TiDB 分布式数据库来应对复杂的业务需求和挑战。 安能物流作为中国领先的综合型物流集团&#xff0c;需要应对大规模的业务流程&#xff…

JVM解密: 解构类加载与GC垃圾回收机制

文章目录 一. JVM内存划分二. 类加载机制1. 类加载过程2. 双亲委派模型 三. GC垃圾回收机制1. 找到需要回收的内存1.1 哪些内存需要回收&#xff1f;1.2 基于引用计数找垃圾(Java不采取该方案)1.3 基于可达性分析找垃圾(Java采取方案) 2. 垃圾回收算法2.1 标记-清除算法2.2 标记…

Hugging Face--Transformers

pipeline 在这里插入图片描述 AutoClass AutoClass 是一个能够通过预训练模型的名称或路径自动查找其架构的快捷方式. 你只需要为你的任务选择合适的 AutoClass 和它关联的预处理类。 AutoTokenizer AutoModel 保存模型 自定义模型构建 Trainer - PyTorch优化训练循环 参考资…

SpringCloud(十)——ElasticSearch简单了解(三)数据聚合和自动补全

文章目录 1. 数据聚合1.1 聚合介绍1.2 Bucket 聚合1.3 Metrics 聚合1.4 使用 RestClient 进行聚合 2. 自动补全2.1 安装补全包2.2 自定义分词器2.3 自动补全查询2.4 拼音自动补全查询2.5 RestClient 实现自动补全2.5.1 建立索引2.5.2 修改数据定义2.5.3 补全查询2.5.4 解析结果…

鸿鹄企业工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

如何在 iPhone 上检索已删除的短信

我厌倦了垃圾短信。当我例行公事地删除 iPhone 上的这些不需要的消息时&#xff0c;当我分散注意力时&#xff0c;我通过点击错误的按钮清除了所有消息。这些被删除的消息中包含两条团购验证信息。有什么办法可以从 iPhone 检索我的消息吗&#xff1f; 有时我们可能会不小心删…

jupyter常用的方法以及快捷键

选中状态 蓝色 按enter 进入编辑状态 编辑状态 绿色 按Esc 进入选中状态 Code模式运行是运行代码 Markdown模式运行是进入预览状态 - - - 是文本格式的一种精简的语法形式 Raw NBConvert 是默认文本状态 - - - 输入什么样 展示什么样 Y - - - 切换code模式 M - - - 切换Markdo…

9、监测数据采集物联网应用开发步骤(7)

源码将于最后一遍文章给出下载 监测数据采集物联网应用开发步骤(6) 串口(COM)通讯开发 本章节测试使用了 Configure Virtual Serial Port Driver虚拟串口工具和本人自写的串口调试工具&#xff0c;请自行baidu下载对应工具 在com.zxy.common.Com_Para.py中添加如下内容 #RS…

[CISCN 2019初赛]Love Math

文章目录 前言考点解题过程 前言 感慨自己实力不够&#xff0c;心浮气躁根本做不来难题。难得这题对我还很有吸引力&#xff0c;也涉及很多知识。只能说我是受益匪浅&#xff0c;总的来说加油吧ctfer。 考点 利用php动态函数的特性利用php中的数学函数实现命令执行利用php7的特…

音频——I2S 标准模式(二)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB&#xff0c;其他位一直到 LSB 按顺序传传输依…

Linux(实操篇三)

Linux实操篇 Linux(实操篇三)1. 常用基本命令1.7 搜索查找类1.7.1 find查找文件或目录1.7.2 locate快速定位文件路径1.7.3 grep过滤查找及"|"管道符 1.8 压缩和解压类1.8.1 gzip/gunzip压缩1.8.2 zip/unzip压缩1.8.3 tar打包 1.9 磁盘查看和分区类1.9.1 du查看文件和…

【C#】泛型

【C#】泛型 泛型是什么 泛型是将类型作为参数传递给类、结构、接口和方法&#xff0c;这些参数相当于类型占位符。当我们定义类或方法时使用占位符代替变量类型&#xff0c;真正使用时再具体指定数据类型&#xff0c;以此来达到代码重用目的。 泛型特点 提高代码重用性一定…

高阶MySQL语句

数据准备 create table ky30 (id int,name varchar(10) primary key not null ,score decimal(5,2),address varchar(20),hobbid int(5)); insert into ky30 values(1,liuyi,80,beijing,2); insert into ky30 values(2,wangwu,90,shengzheng,2); insert into ky30 values(3,lis…

3D步进式漫游能够在哪些行业应用?

VR技术一直以来都是宣传展示领域中的热门话题&#xff0c;在VR全景技术的不断发展下&#xff0c;3D步进式漫游技术也逐渐覆盖各行各业&#xff0c;特别是在建筑、房产、博物馆、企业等领域应用更加广泛&#xff0c;用户通过这种技术能够获得更加直观、生动、详细的展示体验&…