OA项目之待开会议历史会议所有会议
目录
一、待开会议&所有会议SQL编写
1.待开会议SQL编写
2.所有会议SQL编写
二、待开会议及所有会议功能开发
一、待开会议&所有会议SQL编写
待开会议:
当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是待开,则查询出来-- 待开会议 -- 与我的会议的区别在于,待开会议需要匹配3个数据库列段 select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren ,b.`name` zhuchirennmae, a.location, DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime, DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime, a.state, (case a.statewhen 0 then '取消会议'when 1 then '新建'when 2 then '待审核'when 3 then '驳回'when 4 then '待开'when 5 then '进行中'when 6 then '开始投票'when 7 then '结束会议'else '其他' end ) meetingstate, a.seatPic,a.remark,a.auditor, c.`name` auditorname from t_oa_meeting_info a inner join t_oa_user b on a.zhuchiren=b.id left join t_oa_user c on a.auditor=c.id where 1=1
历史会议:当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是结束,则查询出来
所有会议:
当前登录账号,只要是 某会议 的参与者、列席者、主持人、审批人中的一员,那么必须查询出来
1.待开会议SQL编写
select CONCAT(canyuze,',',liexize,',',zhuchiren),a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren
,b.`name` zhuchirennmae,
a.location,
DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,
DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
a.state,
(case a.statewhen 0 then '取消会议'when 1 then '新建'when 2 then '待审核'when 3 then '驳回'when 4 then '待开'when 5 then '进行中'when 6 then '开始投票'when 7 then '结束会议'else '其他' end
) meetingstate,
a.seatPic,a.remark,a.auditor,
c.`name` auditorname from t_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren=b.id
left join t_oa_user c on a.auditor=c.id where 1=1
and state=4 and FIND_IN_SET(6,CONCAT(canyuze,',',liexize,',',zhuchiren))
2.所有会议SQL编写
假设id为6的用户,是会议A的列席人员,会议A又处于新建状态,意味着没有审批人,这条数据一定要查询出来
最终的所有会议SQL语句:
select CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)),a.id,a.title,a.content,
a.canyuze,a.liexize,a.zhuchiren,b.`name` zhuchirennmae,a.location,
DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s')
startTime,DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
a.state,(case a.statewhen 0 then '取消会议' when 1 then '新建' when 2 then '待审核' when 3 then '驳回' when 4 then '待开' when 5 then '进行中' when 6 then '开始投票' when 7 then '结束会议' else '其他' end
)
meetingstate,a.seatPic,a.remark,a.auditor,c.`name` auditorname
from t_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren=b.id
left join t_oa_user c on a.auditor=c.id where 1=1
and FIND_IN_SET(6,CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)))
错误示范如图所示:
二、待开会议及所有会议功能开发
先运行我们的待开会议和所有会议项目如图所示:
缺失这两个jsp代码块注意路径问题,还有我们的js代码块
-----------------
meetingAll.jsp代码块:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/meetingAll.js"></script>
</head>
<style>
body{margin:15px;
}
.layui-table-cell {height: inherit;}
.layui-layer-page .layui-layer-content { overflow: visible !important;}
</style>
<body><div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">会议标题:</label><div class="layui-input-inline"><input type="hidden" id="userid" value="${sessionScope.user.id }"/><input type="text" id="title" autocomplete="off"class="layui-input"></div></div><div class="layui-inline"><button id="btn_meeting_search" class="layui-btn layui-btn-normal"><i class="layui-icon"></i> 查询</button></div></div><table style="margin-top: -15px;" id="tb_meeting" lay-filter="tb_meeting"></table>
</body>
</html>
meetingAll.js代码块:
let layer,form,table,$;
var row;
layui.use(['layer','form','table'],function(){layer=layui.layer,form=layui.form,table=layui.table,$=layui.jquery;//初始化会议列表initMeeting();//绑定查询按钮的点击事件$('#btn_meeting_search').click(function(){query();});
});//1.初始化会议列表
function initMeeting(){table.render({ //执行渲染elem: '#tb_meeting', //指定原始表格元素选择器(推荐id选择器)height: 400, //自定义高度loading: false, //是否显示加载条(默认 true)cols: [[ //设置表头{field: 'title', title: '会议标题', width: 180},{field: 'location', title: '会议地点', width: 120},{field: 'startTime', title: '开始时间', width: 180},{field: 'endTime', title: '结束时间', width: 180},{field: 'meetingstate', title: '会议状态', width: 90},{field: 'zhuchirennmae', title: '主持人', width: 120},//{field: '', title: '操作', width: 260, toolbar: '#tbMeeting'}]]});
}//2.查询所有会议
function query(){table.reload('tb_meeting', {url: 'info.action', //请求地址method: 'POST', //请求方式,GET或者POSTloading: true, //是否显示加载条(默认 true)page: true, //是否分页where: { //设定异步数据接口的额外参数,任意设'methodName':'allInfos','title':$('#title').val(),'zhuchiren':$('#userid').val()},request: { //自定义分页请求参数名pageName: 'page', //页码的参数名称,默认:pagelimitName: 'rows' //每页数据量的参数名,默认:limit},done: function (res, curr, count) {//查询完成的回调函数}});
}
meetingWaiting.jsp代码块:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/meetingWaiting.js"></script>
</head>
<style>
body{margin:15px;
}
.layui-table-cell {height: inherit;}
.layui-layer-page .layui-layer-content { overflow: visible !important;}
</style>
<body><div class="layui-form-item"><div class="layui-inline"><label class="layui-form-label">会议标题:</label><div class="layui-input-inline"><input type="hidden" id="userid" value="${sessionScope.user.id }"/><input type="text" id="title" autocomplete="off"class="layui-input"></div></div><div class="layui-inline"><button id="btn_meeting_search" class="layui-btn layui-btn-normal"><i class="layui-icon"></i> 查询</button></div></div><table style="margin-top: -15px;" id="tb_meeting" lay-filter="tb_meeting"></table>
</body>
</html>
meetingWaiting.js代码块:
let layer,form,table,$;
var row;
layui.use(['layer','form','table'],function(){layer=layui.layer,form=layui.form,table=layui.table,$=layui.jquery;//初始化会议列表initMeeting();//绑定查询按钮的点击事件$('#btn_meeting_search').click(function(){query();});
});//1.初始化会议列表
function initMeeting(){table.render({ //执行渲染elem: '#tb_meeting', //指定原始表格元素选择器(推荐id选择器)height: 400, //自定义高度loading: false, //是否显示加载条(默认 true)cols: [[ //设置表头{field: 'title', title: '会议标题', width: 180},{field: 'location', title: '会议地点', width: 120},{field: 'startTime', title: '开始时间', width: 180},{field: 'endTime', title: '结束时间', width: 180},{field: 'meetingstate', title: '会议状态', width: 90},{field: 'zhuchirennmae', title: '主持人', width: 120},//{field: '', title: '操作', width: 260, toolbar: '#tbMeeting'}]]});
}//2.待开会议
function query(){table.reload('tb_meeting', {url: 'info.action', //请求地址method: 'POST', //请求方式,GET或者POSTloading: true, //是否显示加载条(默认 true)page: true, //是否分页where: { //设定异步数据接口的额外参数,任意设'methodName':'queryMeetingInfoByState','title':$('#title').val(),'zhuchiren':$('#userid').val(),'state':4},request: { //自定义分页请求参数名pageName: 'page', //页码的参数名称,默认:pagelimitName: 'rows' //每页数据量的参数名,默认:limit},done: function (res, curr, count) {//查询完成的回调函数}});
}
我们先写待开会议如图所示:
现在目前没有数据因为我们还没有写我们的后台的方法
接着写所有会议如图所示
现在目前没有数据因为我们还没有写我们的后台的方法
MeetingInfoAction.java代码块:
package com.zking.web;import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.ConvertUtils;import com.zking.dao.MeetingInfoDao;
import com.zking.entity.MeetingInfo;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.Base64ImageUtils;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
import com.zking.util.PropertiesUtil;
import com.zking.util.R;
import com.zking.util.ResponseUtil;public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo>{private MeetingInfo info = new MeetingInfo();private MeetingInfoDao infoDao = new MeetingInfoDao();@Overridepublic MeetingInfo getModel() {
// 注册一个转换器ConvertUtils.register(new MyDateConverter(), Date.class);return info;}public String updateSeatPicById(HttpServletRequest req, HttpServletResponse resp) {try {
// E:/temp/images/T280/abcdefg.png
// 获取图片的存放地址 dirPath=/temp/images/T280/String dirPath = PropertiesUtil.getValue("dirPath");
// 获取浏览器请求路径,为了后续保存到数据库 serverPath=/upload/paizuo/String serverPath = PropertiesUtil.getValue("serverPath");
// 随机生成一个图片名称String fileName=UUID.randomUUID().toString().replace("-", "")+".png";info.getSeatPic();// 图片字符串Base64ImageUtils.GenerateImage(info.getSeatPic().replaceAll("data:image/png;base64", ""), dirPath+fileName);// 将seatPic中的内容修改为 请求地址info.setSeatPic(serverPath+fileName);// 修改会议排座 数据库 图片 对应的 数据库列段int rs = infoDao.updateSeatPicById(info);if(rs>0) {ResponseUtil.writeJson(resp, R.ok(200, "会议排座成功"));}else {ResponseUtil.writeJson(resp, R.ok(0, "会议排座失败"));}} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "会议排座失败"));} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}finally {
}}return null;}// 会议送审public String updateAuditorById(HttpServletRequest req, HttpServletResponse resp) {try {
// n是sql语句执行的影响行数int n=infoDao.updateAuditorById(info);
// 如果大于0说明可以新增if(n>0) {ResponseUtil.writeJson(resp, R.ok(200, "会议送审成功"));}else {ResponseUtil.writeJson(resp, R.ok(0, "会议送审失败"));}} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "会议送审失败"));} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}return null;}public String add(HttpServletRequest req, HttpServletResponse resp) {try {
// n是sql语句执行的影响行数int n=infoDao.add(info);
// 如果大于0说明可以新增if(n>0) {ResponseUtil.writeJson(resp, R.ok(200, "会议信息数据新增成功"));}else {ResponseUtil.writeJson(resp, R.ok(0, "会议信息数据新增失败"));}} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "会议信息数据新增失败"));} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}return null;}// 我的会议public String myInfos(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<Map<String, Object>> infos = infoDao.myInfos(info, pageBean);
// 注意:layui中的数据格式ResponseUtil.writeJson(resp, R.ok(0, "我的会议数据查询成功", pageBean.getTotal(), infos));} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "我的会议数据查询错误"));} catch (Exception e1) {e1.printStackTrace();}}return null;}// 我的审批public String myAudit(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<Map<String, Object>> list = infoDao.myAudit(info, pageBean);
// 注意:layui中的数据格式ResponseUtil.writeJson(resp, R.ok(0, "我的审批查询成功", pageBean.getTotal(), list));} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "我的审批查询错误"));} catch (Exception e1) {e1.printStackTrace();}}return null;}// 待开会议public String queryMeetingInfoByState(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<Map<String, Object>> list = infoDao.queryMeetingInfoByState(info, pageBean);
// 注意:layui中的数据格式ResponseUtil.writeJson(resp, R.ok(0, "待开会议数据查询成功", pageBean.getTotal(), list));} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "待开会议数据查询错误"));} catch (Exception e1) {e1.printStackTrace();}}return null;}// 所有会议public String allInfos(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pageBean = new PageBean();pageBean.setRequest(req);List<Map<String, Object>> list = infoDao.allInfos(info, pageBean);
// 注意:layui中的数据格式ResponseUtil.writeJson(resp, R.ok(0, "所有会议数据查询成功", pageBean.getTotal(), list));} catch (Exception e) {e.printStackTrace();try {ResponseUtil.writeJson(resp, R.error(0, "所有会议数据查询错误"));} catch (Exception e1) {e1.printStackTrace();}}return null;}}
MeetingInfoDao.java代码块:
package com.zking.dao;import java.sql.SQLException;
import java.util.List;
import java.util.Map;import com.zking.entity.MeetingInfo;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;public class MeetingInfoDao extends BaseDao<MeetingInfo>{// 会议信息新增public int add(MeetingInfo t) throws Exception {String sql="insert into t_oa_meeting_info(title,content,canyuze,liexize,zhuchiren,location,startTime,endTime,remark) values(?,?,?,?,?,?,?,?,?)";return super.executeUpdate(sql, t, new String[] {"title","content","canyuze","liexize","zhuchiren","location","startTime","endTime","remark"});}// 我的会议,后续其他的菜单也会使用private String getSQL() {return "select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren\r\n" + ",b.`name` zhuchirennmae,\r\n" + "a.location,\r\n" + "DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,\r\n" + "DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" + "a.state,\r\n" + "(\r\n" + " case a.state\r\n" + " when 0 then '取消会议'\r\n" + " when 1 then '新建'\r\n" + " when 2 then '待审核'\r\n" + " when 3 then '驳回'\r\n" + " when 4 then '待开'\r\n" + " when 5 then '进行中'\r\n" + " when 6 then '开始投票'\r\n" + " when 7 then '结束会议'\r\n" + " else '其他' end\r\n" + ") meetingstate,\r\n" + "a.seatPic,a.remark,a.auditor,\r\n" + "c.`name` auditorname from t_oa_meeting_info a \r\n" + "inner join t_oa_user b on a.zhuchiren=b.id\r\n" + "left join t_oa_user c on a.auditor=c.id where 1=1";}// 我的会议public List<Map<String, Object>> myInfos(MeetingInfo info, PageBean pageBean)throws SQLException, InstantiationException, IllegalAccessException {
// 拿到那些可能传的条件
// 拿到我们封装好的SQL语句String sql = getSQL();
// 会议标题String title = info.getTitle();if(StringUtils.isNotBlank(title)) {sql+=" and a.title like '%"+title+"%'";}sql+=" and a.zhuchiren = "+info.getZhuchiren();
// 降序sql+=" order by a.id desc ";return super.executeQuery(sql, pageBean);}// 设置会议排座图片public int updateSeatPicById(MeetingInfo info) throws Exception {String sql = " update t_oa_meeting_info set seatPic=? where id=?";return super.executeUpdate(sql, info, new String[] {"seatPic","id"});}// 会议送审public int updateAuditorById(MeetingInfo info) throws Exception {String sql = " update t_oa_meeting_info set auditor=?,state=2 where id=?";return super.executeUpdate(sql, info, new String[] {"auditor","id"});}// 我的审批public List<Map<String, Object>> myAudit(MeetingInfo info, PageBean pageBean)throws SQLException, InstantiationException, IllegalAccessException {
// 拿到那些可能传的条件
// 拿到我们封装好的SQL语句String sql = getSQL();
// 会议标题String title = info.getTitle();if(StringUtils.isNotBlank(title)) {sql+=" and a.title like '%"+title+"%'";}
// 当前登录账号等于审批人字段值sql+=" and a.auditor = "+info.getAuditor();
// 待审核状态的会议信息才需要查询出来sql+=" and a.state=2 ";
// 降序sql+=" order by a.id desc ";return super.executeQuery(sql, pageBean);}// 待开会议public List<Map<String, Object>> queryMeetingInfoByState(MeetingInfo info, PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException {String sql="select CONCAT(canyuze,',',liexize,',',zhuchiren),a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren\r\n" + " ,b.`name` zhuchirennmae,\r\n" + " a.location,\r\n" + " DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,\r\n" + " DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" + " a.state,\r\n" + " (\r\n" + " case a.state\r\n" + " when 0 then '取消会议'\r\n" + " when 1 then '新建'\r\n" + " when 2 then '待审核'\r\n" + " when 3 then '驳回'\r\n" + " when 4 then '待开'\r\n" + " when 5 then '进行中'\r\n" + " when 6 then '开始投票'\r\n" + " when 7 then '结束会议'\r\n" + " else '其他' end\r\n" + " ) meetingstate,\r\n" + " a.seatPic,a.remark,a.auditor,\r\n" + " c.`name` auditorname from t_oa_meeting_info a \r\n" + " inner join t_oa_user b on a.zhuchiren=b.id\r\n" + " left join t_oa_user c on a.auditor=c.id where 1=1\r\n" + " and state=4 and FIND_IN_SET("+info.getZhuchiren()+",CONCAT(canyuze,',',liexize,',',zhuchiren)) ";return super.executeQuery(sql, pageBean);}// 所有会议public List<Map<String, Object>> allInfos(MeetingInfo info, PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException {String sql="select CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)),a.id,a.title,a.content,\r\n" + " a.canyuze,a.liexize,a.zhuchiren,b.`name` zhuchirennmae,a.location,\r\n" + " DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') \r\n" + " startTime,DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" + " a.state,(\r\n" + " case a.state\r\n" + " when 0 then '取消会议' \r\n" + " when 1 then '新建' \r\n" + " when 2 then '待审核' \r\n" + " when 3 then '驳回' \r\n" + " when 4 then '待开' \r\n" + " when 5 then '进行中' \r\n" + " when 6 then '开始投票' \r\n" + " when 7 then '结束会议' \r\n" + " else '其他' end\r\n" + " ) \r\n" + " meetingstate,a.seatPic,a.remark,a.auditor,c.`name` auditorname \r\n" + " from t_oa_meeting_info a \r\n" + " inner join t_oa_user b on a.zhuchiren=b.id \r\n" + " left join t_oa_user c on a.auditor=c.id where 1=1 \r\n" + " and FIND_IN_SET("+info.getZhuchiren()+",CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',a.auditor))";return super.executeQuery(sql, pageBean);}}
我们在来重新运行一下我就用id为6的登录如图所示:
对应数据库里的
在对应一下数据库里的是不是也是这么多条记录
OA项目之待开会议历史会议所有会议相关推荐
- 会议OA项目之待开会议所有会议
目录 一.待开和所有会议SQL语句编 二.待开和所有会议功能实现 1.待开会议 后台 前台 2.所有会议 后台 前台 一.待开和所有会议SQL语句编写 1.待开会议 待开会议: 与我的会议的区别在于, ...
- 会议OA项目(待开会议历史会议所有会议)
文章目录 一.会议OA项目名词介绍 二.SQL编写 待开会议SQL 所有 ...
- 会议OA项目(项目原型图介绍发布会议功能)
目录 一.会议OA项目介绍 为什么要开发OA会议管理 会议OA管理的作用 二.项目原型图介绍 1)会议管理 2)投票管理 3)会议室管理 三.数据库表结构 四.发布会议功能&多功能下拉框 La ...
- 会议OA项目(三)---我的会议(会议排座、送审)
目录 前言 一.需求分析 二.准备工作 三.编码 1.后台编码 2.前端编码 四.效果展示 前言 上篇分享了会议OA项目的我的会议功能的查询.取消会议.本篇文章将完善我的会议功能. 我的会议功能有一个 ...
- 会议OA项目之会议通知会议反馈反馈详情功能
目录 一.需要的SQL语句 1.1 会议通知查询的SQL 1.2 反馈详情的SQL 二.会议通知的前台代码 2.1 会议通知的jsp文件 2.2 要封装的js文件 三.会议通知查询的后台代码 2.1 ...
- 会议OA项目之我的审批
目录 一.会议查询 1.后台 2.前端 二.会议签字审批 一.会议查询 1.后台 当前登录账号 是 会议信息表 中 审批人字段值 Dao: / 我的审批public List<Map<St ...
- OA项目之项目简介会议发布
目录 OA项目之项目简介 功能简介: 会议发布 1.多功能下拉框上 2. 多功能下拉框下及会议新增 ①.多功能下拉框下 ②.会议新增 OA项目之项目简介 功能简介: 系统管理(用户表的增删改查) 会议 ...
- 项目管理之高效会议:项目中要开好哪些会?
很多人说,项目经理有 80% 的时间都用在了沟通上,不是在开会,就是在开会的路上,其实所言不虚.会就是聚会.见面.集会,议就是讨论.商议,会议作为一种群体沟通方式,决定了正式信息在项目组内的传递路径 ...
- 微信小程序-会议OA项目03
目录 1.Flex布局简介 1.1 什么是flex布局 1.2 flex属性 2.轮播图--组件的使用 3.会议OA项目-首页 1.Flex布局简介 布局的传统解决方案,基于盒状模型,依赖 displ ...
最新文章
- PyTorch常用代码段合集
- R安装包源设置的常见方式及国内常用源
- java优先队列的入队函数_Java内置的优先队列PriorityQueue
- java 包含汉字,【转载】Java判断字符串中是不是包含汉字
- 深信服副总裁张开翼:随需应变的IT新架构
- ibatis轻松入门
- Java内部抽象类的匿名类初始化
- CentOS 和 Linux的关系?
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- 使用valgrind检查cache命中率
- inode结构详解(深层次理解拷贝,删除,移动的本质)以及硬链接和软链接的区别(图文)
- win10系统的计算机C盘在哪,c盘users在哪(win10c盘找不到users)
- Linux压缩与解压缩文件或文件夹命令
- WTL入门(二) WTL简介
- sparc处理器开发工具_SPARC高性能处理器集成开发环境及其编译器设计与实现
- 华为路由器:ppp协议
- 如何一日千里 突飞猛进?
- 设为首页,收藏本站代码
- uni-app(Vue.js)创建运行微信小程序
- pandas插入新数据及pandas