1.背景:

前端页面使用bootstrap分页,同时与搜索条件联动;

2. jsp页面由服务端返回后, 异步请求动态创建表格, 分页的数据由服务端第一次返回后初始化, 以后每次异步请求再更新。

jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE html>
<html lang="en" class="no-ie" style="overflow:hidden">
<head>
<!-- Meta-->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="author" content="">
<title>Apollo - 签入记录</title>
<link rel="stylesheet" href="../app/css/bootstrap.css">
<link rel="stylesheet" href="../vendor/fontawesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../vendor/animo/animate+animo.css">
<link rel="stylesheet" href="../vendor/datetimepicker/css/bootstrap-datetimepicker.min.css">
<link rel="stylesheet" href="../vendor/datatable/extensions/datatable-bootstrap/css/dataTables.bootstrap.css">
<link rel="stylesheet" href="../vendor/datatable/extensions/ColVis/css/dataTables.colVis.css">
<link rel="stylesheet" href="../app/css/app.css">
<link rel="stylesheet" href="../app/css/beadmin-theme-b3.css">
<link rel="stylesheet" href="../app/css/page.css">
<link rel="stylesheet" href="../vendor/sweetalert/lib/sweet-alert.css" />
<script src="../vendor/modernizr/modernizr.js" type="application/javascript"></script>
<script src="../vendor/fastclick/fastclick.js" type="application/javascript"></script> <script>
var basePath = "<%=basePath%>";
var pageNo = ${pageNo};
var totalCount = ${totalCount};
var pageSize = ${pageSize};
var startNum = ${startNum};
var stopNum = ${stopNum};
</script>
</head> <body style="overflow:hidden">
<!-- START Main wrapper-->
<div class="wrapper">
<!-- START Main section-->
<section>
<!-- START Page content-->
<div class="content-wrapper" style="margin-left:-250px;margin-top:-40px; ">
<h3>签入记录
<div style="float:right; margin-top:5px;" class="form-group">
<button type="button" id="createBiztype" class="btn btn-labeled btn-info"> <span class="btn-label"><i class="fa fa-plus"></i> </span>新建</button>
</div>
</h3>
<!-- START panel-->
<!-- START DATATABLE 3-->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading" style="border-bottom:1px solid #eee;">
<form class="form-inline" id="" method="post" action="<%=path %>/page"> <div class="form-group">
<b>终端ID:&nbsp;</b>
<input type="text" class="form-control mb-lg" id="terminalid" name="terminalid" value=''>
</div>
<div class="form-group">
<b>标志:&nbsp;</b>
<input type="text" class="form-control mb-lg" id="flag" name="flag" value=''>
</div>
<div class="form-group"> <a style="margin:-10px 0 0 5px; float:left;" href="javascript:void(0);" class="mb-sm btn btn-primary" type="button" id="searchButton">搜索</a> </div>
<input type="hidden" id="pageNo" name="pageNo" value=''>
</form>
</div>
<div class="table-responsive">
<table class="table table-bordered table-hover dataTable no-footer" id="table-ext-1" >
<thead>
<tr>
<th class="th200">标题</th>
<th class="th200">节目ID</th>
<th class="th800">创建时间</th>
<th class="th200">媒体类型</th>
<th class="th200">标志</th>
<th class="th200">进度</th>
<th class="th200">供应商</th>
<th class="th200">操作</th>
</tr>
</thead>
<tbody id="checkinRequest_tbody"> </tbody>
<tfoot>
<tr> </tr>
</tfoot>
</table>
</div>
<div class="panel-footer">
<div class="row">
<div style="line-height:35px;" class="col-lg-2">
<div class="input-group pull-left" id="checkinRequest_showlines"> </div>
</div>
<div class="col-lg-8"></div>
<div class="tcdPageCode"></div>
</div>
</div>
</div>
</div>
</div>
<!-- END DATATABLE 3--> </div>
<!-- END Page content-->
</section>
<!-- END Main section-->
</div>
<!-- END Main wrapper--> <!-- START modal-->
<div id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" class="modal" >
<div class="modal-dialog" style="width:400px; margin-top:200px;">
<div class="modal-content">
<div class="modal-header">
<button type="button" data-dismiss="modal" aria-hidden="true" class="close" id="cancelAdd" >×</button>
<h4 id="myModalLabel" class="modal-title">新建签入记录</h4>
</div>
<div class="modal-body"> <div class="table-responsive">
<form>
<ul class="serinfo">
<li>
<div class="form-group">
<b>名称:&nbsp;</b>
<input type="text" id="addTypeName" class="form-control mb-lg" maxLength=50>
</div>
</li>
</ul>
<ul class="serinfo">
<li>
<div class="form-group">
<b>描述:&nbsp;</b>
<input type="text" id="addTypeDesc" class="form-control mb-lg" maxLength=100>
</div>
</li>
</ul>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-default">取消</button>
<button type="button" class="btn btn-primary" id="confirmCreate" >确定</button>
</div>
</fieldset> </div>
</div>
</div> <div id="myModaledit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" class="modal" >
<div class="modal-dialog" style="width:400px; margin-top:200px;">
<div class="modal-content">
<div class="modal-header">
<button type="button" data-dismiss="modal" aria-hidden="true" class="close" id="cancelEdit" >×</button>
<h4 id="myModalLabel" class="modal-title">编辑签入记录</h4>
</div>
<div class="modal-body"> <div class="table-responsive">
<form>
<ul class="serinfo">
<li>
<div class="form-group">
<b>名称:&nbsp;</b>
<input type="text" id="editTypeName" class="form-control mb-lg" maxLength=50>
</div>
</li>
</ul>
<ul class="serinfo">
<li>
<div class="form-group">
<b>描述:&nbsp;</b>
<input type="text" id="editTypeDesc" class="form-control mb-lg" maxLength=100>
</div>
</li>
</ul>
</form>
</div>
</div>
<div class="modal-footer">
<button type="button" data-dismiss="modal" class="btn btn-default">取消</button>
<button type="button" class="btn btn-primary" id="confirmEdit" >确定</button>
</div>
</fieldset> </div>
</div>
</div> </div>
</div> <!-- END modal--> <!-- START Scripts-->
<!-- Main vendor Scripts-->
<script src="../vendor/jquery/jquery.min.js"></script>
<script src="../vendor/sweetalert/lib/sweet-alert.min.js"></script>
<script src="../vendor/bootstrap/js/bootstrap.min.js"></script>
<script src="../vendor/chosen/chosen.jquery.min.js"></script>
<script src="../vendor/slider/js/bootstrap-slider.js"></script>
<script src="../vendor/filestyle/bootstrap-filestyle.min.js"></script>
<script src="../vendor/animo/animo.min.js"></script>
<script src="../vendor/moment/min/moment-with-langs.min.js"></script>
<script src="../vendor/datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../vendor/slimscroll/jquery.slimscroll.min.js"></script>
<script src="../vendor/store/store+json2.min.js"></script>
<script src="../vendor/screenfull/screenfull.min.js"></script>
<script src="../vendor/datatable/media/js/jquery.dataTables.min.js"></script>
<script src="../vendor/datatable/extensions/datatable-bootstrap/js/dataTables.bootstrap.js"></script>
<script src="../vendor/datatable/extensions/datatable-bootstrap/js/dataTables.bootstrapPagination.js"></script>
<script src="../vendor/datatable/extensions/ColVis/js/dataTables.colVis.min.js"></script>
<script src="../vendor/wizard/js/bwizard.min.js"></script>
<script src="../vendor/parsley/parsley.min.js"></script>
<script src="../app/js/app.js"></script>
<script src="../script/commonutil.js"></script>
<script src="../app/js/page.js"></script>
<script src="../script/checkinRequest.js"></script>
<!-- END Scripts-->
</body>
</html>

js代码

$(function(){
initTable(); $('.tcdPageCode').extendPagination({
pageId : pageNo,
totalCount : totalCount,
showPage : 5,
limit : pageSize,
callback : function(pageNo, limit, totalCount) {
checkinRequestSearch(pageNo);
}
}); $("#searchButton").on('click',function(){
checkinRequestSearch(pageNo);
});
}); function initTable(){
$.ajax({
url : basePath + "page/checkinRequest_list.action",
type : "get",
dataType : "json",
success : function(dataMap){
createTBody(dataMap);
createTFoot();
},
error : function(errorData){
}
});
} function createTBody(dataMap){
if(dataMap!=null){
var html = [];
var checkinRequestList = dataMap.checkinRequestList;
for(var i=0; i<checkinRequestList.length; i++){
var checkinRequest = checkinRequestList[i];
html.push('<tr class="gradeX center">');
html.push('<td style="text-align:left;">'+checkinRequest.title+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.assetguid+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.createtime+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.mediatype+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.flag+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.progress+'</td>');
html.push('<td style="text-align:left;">'+checkinRequest.provider+'</td>');
html.push('<td><a href="#" class="checkin_view btn btn-default btn-xs">&nbsp;查看&nbsp;</a></td>');
html.push('</tr>');
}
$("#checkinRequest_tbody").empty().html(html.join(''));
}
} function createTFoot(dataMap){
var reloadPagination = false;
if(dataMap!=null){
startNum = dataMap.startNum;
stopNum = dataMap.stopNum;
reloadPagination = totalCount==dataMap.totalCount?false:true
totalCount = dataMap.totalCount;
pageNo = dataMap.pageNo;
//pageSize = dataMap.pageSize;
}
var str = '显示 ' + startNum + '至' + stopNum + '项 , 共' + totalCount +' 项。';
$("#checkinRequest_showlines").empty().html(str);
if(totalCount=='0'){
$('.tcdPageCode').empty();
}else if($('.tcdPageCode').html()=='' || reloadPagination){//
$('.tcdPageCode').extendPagination({
pageId : pageNo,
totalCount : totalCount,
showPage : 5,
limit : pageSize,
callback : function(pageNo, limit, totalCount) {
checkinRequestSearch(pageNo);
}
});
}
} function checkinRequestSearch(pageNo){
var terminalid = $("#terminalid").val();
var flag = $("#flag").val();
$.ajax({
url : basePath + "page/checkinRequest_search.action",
type : "post",
data : {
"pageNo" : pageNo,
"terminalid" : terminalid,
"flag" : flag
},
dataType : "json",
success : function(dataMap){
createTBody(dataMap);
createTFoot(dataMap);
},
error : function(errorData){
}
});
}

bootStrapPager分页插件

/**
* Created by Hope on 2014/12/28.
*/
(function ($) {
$.fn.extendPagination = function (options) {
var defaults = {
pageId:'',
totalCount: '',
showPage: '10',
limit: '5',
callback: function () {
return false;
}
};
$.extend(defaults, options || {});
// alert(defaults.pageId);
if (defaults.totalCount == '') {
//alert('总数不能为空!');
$(this).empty();
return false;
} else if (Number(defaults.totalCount) <= 0) {
//alert('总数要大于0!');
$(this).empty();
return false;
}
if (defaults.showPage == '') {
defaults.showPage = '10';
} else if (Number(defaults.showPage) <= 0)defaults.showPage = '10';
if (defaults.limit == '') {
defaults.limit = '5';
} else if (Number(defaults.limit) <= 0)defaults.limit = '5';
var totalCount = Number(defaults.totalCount), showPage = Number(defaults.showPage),
limit = Number(defaults.limit), totalPage = Math.ceil(totalCount / limit);
if (totalPage > 0) {
var html = [];
html.push(' <ul class="pagination">');
html.push(' <li class="previous"><a href="#">&laquo;</a></li>');
html.push('<li class="disabled hidden"><a href="#">...</a></li>');
if (totalPage <= showPage) {
for (var i = 1; i <= totalPage; i++) {
if (i == defaults.pageId) html.push(' <li class="active"><a href="#">' + i + '</a></li>');
else html.push(' <li><a href="#">' + i + '</a></li>');
}
} else {
for (var j = 1; j <= showPage; j++) {
if (j == defaults.pageId) html.push(' <li class="active"><a href="#">' + j + '</a></li>');
else html.push(' <li><a href="#">' + j + '</a></li>');
}
}
html.push('<li class="disabled hidden"><a href="#">...</a></li>');
html.push('<li class="next"><a href="#">&raquo;</a></li></ul>');
$(this).html(html.join(''));
if (totalPage > showPage) $(this).find('ul.pagination li.next').prev().removeClass('hidden'); var pageObj = $(this).find('ul.pagination'), preObj = pageObj.find('li.previous'),
currentObj = pageObj.find('li').not('.previous,.disabled,.next'),
nextObj = pageObj.find('li.next'); function loopPageElement(minPage, maxPage) {
var tempObj = preObj.next();
for (var i = minPage; i <= maxPage; i++) {
if (minPage == 1 && (preObj.next().attr('class').indexOf('hidden')) < 0)
preObj.next().addClass('hidden');
else if (minPage > 1 && (preObj.next().attr('class').indexOf('hidden')) > 0)
preObj.next().removeClass('hidden');
if (maxPage == totalPage && (nextObj.prev().attr('class').indexOf('hidden')) < 0)
nextObj.prev().addClass('hidden');
else if (maxPage < totalPage && (nextObj.prev().attr('class').indexOf('hidden')) > 0)
nextObj.prev().removeClass('hidden');
var obj = tempObj.next().find('a');
if (!isNaN(obj.html()))obj.html(i);
tempObj = tempObj.next();
}
} function callBack(curr) {
defaults.callback(curr, defaults.limit, totalCount);
} currentObj.click(function (event) {
event.preventDefault();
var currPage = Number($(this).find('a').html()), activeObj = pageObj.find('li[class="active"]'),
activePage = Number(activeObj.find('a').html());
if (currPage == activePage) return false;
if (totalPage > showPage) {
var maxPage = currPage, minPage = 1;
if (($(this).prev().attr('class'))
&& ($(this).prev().attr('class').indexOf('disabled')) >= 0) {
minPage = currPage - 1;
maxPage = minPage + showPage - 1;
loopPageElement(minPage, maxPage);
} else if (($(this).next().attr('class'))
&& ($(this).next().attr('class').indexOf('disabled')) >= 0) {
if (totalPage - currPage >= 1) maxPage = currPage + 1;
else maxPage = totalPage;
if (maxPage - showPage > 0) minPage = (maxPage - showPage) + 1;
loopPageElement(minPage, maxPage)
}
}
activeObj.removeClass('active');
$.each(currentObj, function (index, thiz) {
if ($(thiz).find('a').html() == currPage) {
$(thiz).addClass('active');
callBack(currPage);
}
});
});
preObj.click(function (event) {
event.preventDefault();
var activeObj = pageObj.find('li[class="active"]'), activePage = Number(activeObj.find('a').html());
if (activePage <= 1) return false;
if (totalPage > showPage) {
var maxPage = activePage, minPage = 1;
if ((activeObj.prev().prev().attr('class'))
&& (activeObj.prev().prev().attr('class').indexOf('disabled')) >= 0) {
minPage = activePage - 1;
if (minPage > 1) minPage = minPage - 1;
maxPage = minPage + showPage - 1;
loopPageElement(minPage, maxPage);
}
}
$.each(currentObj, function (index, thiz) {
if ($(thiz).find('a').html() == (activePage - 1)) {
activeObj.removeClass('active');
$(thiz).addClass('active');
callBack(activePage - 1);
}
});
});
nextObj.click(function (event) {
event.preventDefault();
var activeObj = pageObj.find('li[class="active"]'), activePage = Number(activeObj.find('a').html());
if (activePage >= totalPage) return false;
if (totalPage > showPage) {
var maxPage = activePage, minPage = 1;
// if ((activeObj.next().next().attr('class'))
// && (activeObj.next().next().attr('class').indexOf('disabled')) >= 0) {
// maxPage = activePage + 2;
// if (maxPage > totalPage) maxPage = totalPage;
// minPage = maxPage - showPage + 1;
// loopPageElement(minPage, maxPage);
// }
if ((activeObj.next().next().attr('class'))
&& (activeObj.next().next().attr('class').indexOf('disabled')) >= 0) {
maxPage = activePage + 2;
if (maxPage > totalPage) maxPage = totalPage;
minPage = maxPage - showPage + 1;
loopPageElement(minPage, maxPage);
}
}
$.each(currentObj, function (index, thiz) {
if ($(thiz).find('a').html() == (activePage + 1)) {
activeObj.removeClass('active');
$(thiz).addClass('active');
callBack(activePage + 1);
}
}); });
}
};
})(jQuery);

action代码

package com.cdv.apollo.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext; import com.aliyun.oss.common.comm.ServiceClient.Request;
import com.cdv.apollo.model.CheckinRequest;
import com.cdv.apollo.service.CheckInRequestService;
import com.cdv.apollo.util.PageParameter;
import com.cdv.msf.sdk.UserClient;
import com.opensymphony.xwork2.ActionSupport; import net.sf.json.JSONObject; public class CheckinRequestAction extends ActionSupport { /**
*
*/
private static final long serialVersionUID = -7230950957476388246L; private Map<String, Object> dataMap = new HashMap<String, Object>(); public Map<String, Object> getDataMap() {
return dataMap;
} @Resource
private CheckInRequestService checkInRequestService; public String index(){
HttpServletRequest request = ServletActionContext.getRequest();
PageParameter page = new PageParameter();
int totalCount = checkInRequestService.countTotalRecords();
// int totalPage = totalCount%page.getPageSize()==0?totalCount/page.getPageSize():totalCount/page.getPageSize()+1;
int startNum = 0, stopNum = 0;
if((startNum+page.getPageSize())<=totalCount){
startNum = 1;
stopNum = startNum+page.getPageSize()-1;
}else if(totalCount>0){
startNum = 1;
stopNum = totalCount;
}
request.setAttribute("startNum", startNum);
request.setAttribute("stopNum", stopNum);
request.setAttribute("totalCount", totalCount);
request.setAttribute("pageNo", page.getPageNo());
request.setAttribute("pageSize", page.getPageSize());
return "index";
} public String list(){
dataMap.clear();
List<CheckinRequest> checkinRequestList = checkInRequestService.list(-1, null, null, null, null, null, 0, 10);
dataMap.put("checkinRequestList", checkinRequestList);
return SUCCESS;
} public String search(){
dataMap.clear();
PageParameter page = new PageParameter();
int s = 0, max = 10, pageNo = 1, flag=-1;
int startNum = 0, stopNum = 0;
HttpServletRequest request = ServletActionContext.getRequest();
String pageNoStr = (String) request.getParameter("pageNo");
String terminalid = (String) request.getParameter("terminalid");
String flagStr = (String) request.getParameter("flag");
if(StringUtils.isNotEmpty(flagStr)){
flag = Integer.parseInt(flagStr);
}
int totalCount = checkInRequestService.count2Terminal(terminalid, flag);
int totalPage = totalCount%page.getPageSize()==0?totalCount/page.getPageSize():totalCount/page.getPageSize()+1;
if(StringUtils.isNotEmpty(pageNoStr)){
pageNo = Integer.parseInt(pageNoStr);
pageNo = pageNo<=totalPage?pageNo:1;
s = (pageNo-1)*10;
}
List<CheckinRequest> checkinRequestList = checkInRequestService.list2Terminal(terminalid, flag, s, max);
if(totalCount>0){
startNum = (pageNo-1)*page.getPageSize() + 1;
stopNum = (startNum-1+page.getPageSize())<=totalCount?(startNum-1+page.getPageSize()):totalCount;
}
dataMap.put("startNum", startNum);
dataMap.put("stopNum", stopNum);
dataMap.put("totalCount", totalCount);
dataMap.put("pageNo", pageNo);
dataMap.put("checkinRequestList", checkinRequestList);
return SUCCESS;
} }

struts配置

    <package name="homepage" namespace="/" extends="json-default">

        <action name="checkinRequest_*" class="com.cdv.apollo.action.CheckinRequestAction"
method="{1}">
<result name="index">/page/checkinRequest.jsp</result>
<result name="success" type="json">
<param name="root">dataMap</param>
</result>
</action> </package>

bootstrap 分页的更多相关文章

  1. bootstrap分页

    使用bootstrap分页插件,如下代码是html代码 <title>分页</title> <link href="page/bootstrap-3.3.5-d ...

  2. bootstrap 分页样式代码

    bootstrap 分页样式代码,废话不多说,直接上源码 <!DOCTYPE html> <html> <head> <title>Bootstrap ...

  3. Bootstrap 分页插件 ajax获取数据显示

    Bootstrap 分页插件 ajax获取数据显示 标签(空格分隔): bootstrap 文章的内容是使用bootstrap-paginator进行分页,使用ajax获取后台数据.渲染. 1. 版本 ...

  4. bootstrap分页插件的使用

    项目中需要实现文章列表的分页显示,由于使用了bootstrap框架,所以我们选择bootstrap的分页实现方法.网上有一些这方面的介绍文章,并且也有相关的示例程序.这里结合我们的项目,介绍一下使用b ...

  5. Bootstrap分页插件ajax返回数据,工具类的编写

    使用Bootstrap分页插件时,需要返回指定的参数,这样Bootstrap才能够识别 需要引入的css: <!-- boostrap table --> <link href=&q ...

  6. yii使用bootstrap分页样式

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...

  7. bootstrap 分页表格插件

    找了两个table的插件,一个是bootstrap table ,另一个是bootstrap-paginator 这里只介绍 bootstrap table 插件 使用及简单案例 文档介绍:http: ...

  8. Bootstrap分页插件--Bootstrap Paginator

    开源中国有一篇介绍的很详细,链接:https://my.oschina.net/shunshun/blog/204587 使用这个插件和使用其他Bootstrap内置的插件一样,需要引入如下文件: & ...

  9. bootstrap分页插件--Bootstrap Paginator的使用&AJAX版备份(可单独使用)

    html部分: <ul class="pagination"></ul> <!--bootstrap3版本用ul包裹--> <div cl ...

随机推荐

  1. Microsoft 2013 新技术学习笔记 二

    在探讨系统重构的代码结构组织之前,先初步考虑框架与数据库的交互,在.net平台上数据访问方案有人总结为三类:DataSet.ADO.net 2.0.ORM组件.我只熟悉ADO.NET方式,众多的企业特 ...

  2. sql server 2008安装过程中服务器配置出错

    请选择:对所有 SQL Server 服务使用相同的账号: 但这里不能给他设置自己定义的账号和密码 ( 例如下面设置它的账号为 sa ,密码为 654321) 就会发生错误:

  3. CreateProcessAsUser,C#写的windows服务弹框提示消息或者启动子进程

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...

  4. 打开 Mac OS X 隐藏的用户资源库文件夹的方法

    在较高版本的 Mac OS X 中,用户的资源库文件夹(/Users/username/Library)默认被系统隐藏了,从 Finder 窗口中不能直接打开. 但是通过下面这个方法可以快速打开用户资 ...

  5. c# C++接口封装 汽车模拟仿真

    struct PinCamParIn//用户输入的针孔相机参数结构体{    char CameraName[512];    float Offset[3];    float Angle[3];  ...

  6. Unit Of Work--工作单元(二)

    回顾 上一篇我们根据工作单元的原理基于ADO.NET进行了简单的实现,但是当项目需求发生变化的时候,比如需要引入ORM框架又要兼容当前ADO.NET实现的方式时,先前的实现就无法满足这个需求了. 话就 ...

  7. 聊聊 if else 那些事

    从这周起,公司技术部每周五组织一次内部的技术分享,日常工作中,发现大家对if掌握的不是很好,今天先来聊聊if. 一.场景 简历的价格是根据专业的父Id设定的,下面根据简历Id获取简历的价格. /// ...

  8. ServiceStack Redis客户端的bug

    client.Set("key", 0); 当使用上面的语句设置 真正存入redis的却是一个空白字符,而不是0 跟了一下源码,发现 private static byte[] T ...

  9. 红黑树(五)之 Java的实现

    概要 前面分别介绍红黑树的理论知识.红黑树的C语言和C++的实现.本章介绍红黑树的Java实现,若读者对红黑树的理论知识不熟悉,建立先学习红黑树的理论知识,再来学习本章.还是那句老话,红黑树的C/C+ ...

  10. PerfMap – 显示前端网站性能的热力图插件

    PerfMap 是用来分析前端性能,基于资源定时 API 生成网页资源加载的前端性能热图.热图的颜色和第一个毫秒值指示在什么时候页面的图像加载完毕,这是用户体验的一个很好的指标.括号中的第二个值是浏览 ...