图片上传,图片剪切jquery.imgareaselect
---恢复内容开始---

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8" />
<title>广告设置</title>
<%@include file="/common/common.jsp" %>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/jquery.imgareaselect-0.9.10/css/imgareaselect-default.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/static/jquery.imgareaselect-0.9.10/scripts/jquery.imgareaselect.pack.js"></script>
</head>
<body>
<div class="wrapper details" id="js_layout">
<div class="pad10" id="details_edit" data-options="region:'center'">
<table class="forms">
<tbody>
<tr>
<td class="right"><i class="require">*</i>广告图设置方式:</td>
<td><input type="radio" value="1" name="pic" checked="checked" onclick="$('.tr1').show();$('#tr2').hide()"/>上传图片
<input type="radio" value="0" name="pic" onclick="$('.tr1').hide();$('#tr2').show()"/>设置图片超链接
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>上传图片:</td>
<td>
<form id="form2" method="post" enctype="multipart/form-data">
<input type="file" style="height:22px;" name="advimage" id="advimage" onchange="validateImage();"/>
</form>
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>图片剪切:</td>
<td>
<form id="form1" method="post" enctype="multipart/form-data" >
<img alt="" src="" id="left" onclick="imgAreaSelect();">
<input type="hidden" id="x1" value=""/>
<input type="hidden" id="x2" value=""/>
<input type="hidden" id="y1" value=""/>
<input type="hidden" id="y2" value=""/>
<input type="hidden" id="w" value=""/>
<input type="hidden" id="h" value=""/>
<input type="button" value="剪切" onclick="cutImage()"/>
</form>
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>图片预览</td>
<td>
<form id="form3" method="post" enctype="multipart/form-data" >
<img alt="" src="" id="leftcut">
<input type="hidden" id="currentPath" value="" name="currentPath">
</form>
</td>
</tr>
<tr id="tr2" style="display: none;">
<td class="right"><i class="require">*</i>公告图超链接:</td>
<td><input type="text" name="picurl" id="picUrl" value="http://js.86269191.com/hgzr/img/22.gif" class="txt easyui-validatebox" data-options="required:true,validType:['titleInput','titlelength[200]']"/>
</td>
</tr>
<tr>
<td class="right"><i class="require">*</i>超链接:</td>
<td><input type="text" name="url" id="url" value="http://www.90tuku.com/" class="txt easyui-validatebox" data-options="required:true,validType:['titleInput','titlelength[200]']"/>
</td>
</tr>
<tr>
<td class="right"><i class="require">*</i>广告存放位置:</td>
<td><input type="radio" value="left" name="position" checked="checked" />左侧广告
<input type="radio" value="right" name="position"/>右侧广告
</td>
</tr>
</tbody>
</table>
</div>
<!-- <div id="cutImageDiv"> -->
<!-- <div id="cutImageClose">关闭</div> -->
<!-- <div style="margin:0;auto"> -->
<!-- <img alt="" src="" id="right" onclick="imgAreaSelect();"> -->
<!-- </div> -->
<!-- </div> -->
<div data-options="region:'south',collapsible:false,height:50" class="noborder hidden">
<div class="ftbutton border-n">
<ul class="lists rf">
<li><button id="_submit" class="button" type="button">上传广告</button></li>
</ul>
</div>
</div>
</div>
<script type="text/javascript" charset="utf-8">
function cutImage(){
var currentPath = $("#currentPath").val();
$.ajax({
type: "POST",
url: "${contextPath}/baAdmin/cutImage.htmls",
data: "x1=" + $("#x1").val()+"&x2="+$("#x2").val()+"&y1="+$("#y1").val()+"&y2="+$("#y2").val()+"&w="+$("#w").val()+"&h="+$("#h").val()+"¤tPath="+currentPath,
success: function(msg){
var json = $.parseJSON(msg);
if(json.success=='success'){
$("#currentPath").val(json.currentPath);
$('#leftcut').attr("src",json.currentPath);
}
}
});
// 这里是利用的dwr框架直接调用后台方法,以及使用后台传回的值
// 这个方法就是利用坐标宽高进行切图,事实上这时候的原图已经在服务器了,所以我们只需要知道他的相对路径,即currentPath
// ReleaseService.cutImage(list, currentPath, function(value){
// document.getElementById("currentPath").value = value;
// }
// );
// var bgObj=document.getElementById("bgDiv");
// var msgObj=document.getElementById("cutImageDiv");
// bgObj.style.display = msgObj.style.display = "none";
// piso.cancelSelection();
// haveImage = 1;
// $('#msHaveImage').show();
//$(".imgareaselect-outer").hide();
//$(".imgareaselect-selection").parent().hide();
}
function validateImage(){
var imageVal = $('#advimage').val();
var imageType = imageVal.substr(imageVal.indexOf('.'),imageVal.length);
if(!/.(gif|jp|jpeg|JPG|PNG|png|jpg)$/.test(imageType)){
$.messager.alert('警告','图片类型必须是.jpeg,png,jpg中的一种!','info');
return false;
}
//提交表单
$("#form2").form('submit',
{
url:"${contextPath}/baAdmin/uploadImageDemo.htmls",
onSubmit:function(){return $(this).form('validate'); },
success : function(d) {
var json = $.parseJSON(d);
if (json.success=='success') {
$('#left').imgAreaSelect({
x1:0,y1:0,x2:50,y2:50,onSelectEnd:preview,
resizable:false,
instance:true,
persistent:true
});
$('#left').attr('src',json.tempPath);
$('#currentPath').val(json.tempPath);
// ajaxLoadEnd();
// $.messager.alert('警告','备份成功!','info');
}else{
// $.messager.alert('警告','执行失败!','error');
}
}
});
}
// function uploadImage(){
// var imageVal = $('#advimage').val();
// var imageType = imageVal.substr(imageVal.indexOf('.'),imageVal.length);
// if(!/.(gif|jp|jpeg|JPG|PNG|png)$/.test(imageType)){
// $.messager.alert('警告','图片类型必须是.jpeg,png,jpg中的一种!','info');
// return false;
// }
// $.ajaxFileUpload({
// url:'${pageContext.request.contextPath}/baAdmin/uploadImage',//处理图片脚本
// secureuri :false,
// fileElementId :'advimage',//file控件id
// dataType : 'json',
// success : function (data, status){
// $('#photo').imgAreaSelect({
// x1:0,y1:0,x2:480,y2:520,onSelectEnd:preview,
// resizable:false,
// instance:true,
// persistent:true
// });
// $('#photo').attr('src',data.tempPath);
// },
// error: function(data, status, e){
// alert(e);
// }
// });
// }
function preview(img,selection){
$('#x1').val(selection.x1);
$('#x2').val(selection.x2);
$('#y1').val(selection.y1);
$('#y2').val(selection.y2);
$('#w').val(selection.width);
$('#h').val(selection.height);
}
// function ajaxLoading(){
// $("<div class=\"datagrid-mask\"></div>").css({display:"block",width:"100%",height:$(window).height()}).appendTo("body");
// $("<div class=\"datagrid-mask-msg\"></div>").html("正在处理,请稍候。。。").appendTo("body").css({display:"block",left:($(document.body).outerWidth(true) - 190) / 2,top:($(window).height() - 45) / 2});
// }
// function ajaxLoadEnd(){
// $(".datagrid-mask").remove();
// $(".datagrid-mask-msg").remove();
// }
jQuery(function($){
$("#js_layout").layout({fit:true});
$("#_submit").click( function () {
var pic = $('input:radio[name="pic"]:checked').val();
var position = $('input:radio[name="position"]:checked').val();
var url = $('#url').val();
var picUrl = $('#picUrl').val();
var file = $('#advimage').val();
if(pic=='1'){
if(file==""){
$.messager.alert('提示','为选择上传图片!!!','info');
return ;
}
}
//提交表单
$("#form3").form('submit',
{
url:"${contextPath}/baAdmin/imageUploadFinlly.htmls?position="+position+"&pic="+pic+"&url="+url+"&picurl="+picUrl,
onSubmit:function(){return $(this).form('validate'); },
success : function(d) {
var json = $.parseJSON(d);
if (json.success=='success') {
$.messager.alert('提示','左侧广告设置成功!','info');
}
}
});
});
});
</script>
</body>
</html>
---恢复内容结束---

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8" />
<title>广告设置</title>
<%@include file="/common/common.jsp" %>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/jquery.imgareaselect-0.9.10/css/imgareaselect-default.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/static/jquery.imgareaselect-0.9.10/scripts/jquery.imgareaselect.pack.js"></script>
</head>
<body>
<div class="wrapper details" id="js_layout">
<div class="pad10" id="details_edit" data-options="region:'center'">
<table class="forms">
<tbody>
<tr>
<td class="right"><i class="require">*</i>广告图设置方式:</td>
<td><input type="radio" value="1" name="pic" checked="checked" onclick="$('.tr1').show();$('#tr2').hide()"/>上传图片
<input type="radio" value="0" name="pic" onclick="$('.tr1').hide();$('#tr2').show()"/>设置图片超链接
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>上传图片:</td>
<td>
<form id="form2" method="post" enctype="multipart/form-data">
<input type="file" style="height:22px;" name="advimage" id="advimage" onchange="validateImage();"/>
</form>
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>图片剪切:</td>
<td>
<form id="form1" method="post" enctype="multipart/form-data" >
<img alt="" src="" id="left" onclick="imgAreaSelect();">
<input type="hidden" id="x1" value=""/>
<input type="hidden" id="x2" value=""/>
<input type="hidden" id="y1" value=""/>
<input type="hidden" id="y2" value=""/>
<input type="hidden" id="w" value=""/>
<input type="hidden" id="h" value=""/>
<input type="button" value="剪切" onclick="cutImage()"/>
</form>
</td>
</tr>
<tr class="tr1">
<td class="right"><i class="require">*</i>图片预览</td>
<td>
<form id="form3" method="post" enctype="multipart/form-data" >
<img alt="" src="" id="leftcut">
<input type="hidden" id="currentPath" value="" name="currentPath">
</form>
</td>
</tr>
<tr id="tr2" style="display: none;">
<td class="right"><i class="require">*</i>公告图超链接:</td>
<td><input type="text" name="picurl" id="picUrl" value="http://js.86269191.com/hgzr/img/22.gif" class="txt easyui-validatebox" data-options="required:true,validType:['titleInput','titlelength[200]']"/>
</td>
</tr>
<tr>
<td class="right"><i class="require">*</i>超链接:</td>
<td><input type="text" name="url" id="url" value="http://www.90tuku.com/" class="txt easyui-validatebox" data-options="required:true,validType:['titleInput','titlelength[200]']"/>
</td>
</tr>
<tr>
<td class="right"><i class="require">*</i>广告存放位置:</td>
<td><input type="radio" value="left" name="position" checked="checked" />左侧广告
<input type="radio" value="right" name="position"/>右侧广告
</td>
</tr>
</tbody>
</table>
</div>
<!-- <div id="cutImageDiv"> -->
<!-- <div id="cutImageClose">关闭</div> -->
<!-- <div style="margin:0;auto"> -->
<!-- <img alt="" src="" id="right" onclick="imgAreaSelect();"> -->
<!-- </div> -->
<!-- </div> -->
<div data-options="region:'south',collapsible:false,height:50" class="noborder hidden">
<div class="ftbutton border-n">
<ul class="lists rf">
<li><button id="_submit" class="button" type="button">上传广告</button></li>
</ul>
</div>
</div>
</div>
<script type="text/javascript" charset="utf-8">
function cutImage(){
var currentPath = $("#currentPath").val();
$.ajax({
type: "POST",
url: "${contextPath}/baAdmin/cutImage.htmls",
data: "x1=" + $("#x1").val()+"&x2="+$("#x2").val()+"&y1="+$("#y1").val()+"&y2="+$("#y2").val()+"&w="+$("#w").val()+"&h="+$("#h").val()+"¤tPath="+currentPath,
success: function(msg){
var json = $.parseJSON(msg);
if(json.success=='success'){
$("#currentPath").val(json.currentPath);
$('#leftcut').attr("src",json.currentPath);
}
}
});
// 这里是利用的dwr框架直接调用后台方法,以及使用后台传回的值
// 这个方法就是利用坐标宽高进行切图,事实上这时候的原图已经在服务器了,所以我们只需要知道他的相对路径,即currentPath
// ReleaseService.cutImage(list, currentPath, function(value){
// document.getElementById("currentPath").value = value;
// }
// );
// var bgObj=document.getElementById("bgDiv");
// var msgObj=document.getElementById("cutImageDiv");
// bgObj.style.display = msgObj.style.display = "none";
// piso.cancelSelection();
// haveImage = 1;
// $('#msHaveImage').show();
//$(".imgareaselect-outer").hide();
//$(".imgareaselect-selection").parent().hide();
}
function validateImage(){
var imageVal = $('#advimage').val();
var imageType = imageVal.substr(imageVal.indexOf('.'),imageVal.length);
if(!/.(gif|jp|jpeg|JPG|PNG|png|jpg)$/.test(imageType)){
$.messager.alert('警告','图片类型必须是.jpeg,png,jpg中的一种!','info');
return false;
}
//提交表单
$("#form2").form('submit',
{
url:"${contextPath}/baAdmin/uploadImageDemo.htmls",
onSubmit:function(){return $(this).form('validate'); },
success : function(d) {
var json = $.parseJSON(d);
if (json.success=='success') {
$('#left').imgAreaSelect({
x1:0,y1:0,x2:50,y2:50,onSelectEnd:preview,
resizable:false,
instance:true,
persistent:true
});
$('#left').attr('src',json.tempPath);
$('#currentPath').val(json.tempPath);
// ajaxLoadEnd();
// $.messager.alert('警告','备份成功!','info');
}else{
// $.messager.alert('警告','执行失败!','error');
}
}
});
}
// function uploadImage(){
// var imageVal = $('#advimage').val();
// var imageType = imageVal.substr(imageVal.indexOf('.'),imageVal.length);
// if(!/.(gif|jp|jpeg|JPG|PNG|png)$/.test(imageType)){
// $.messager.alert('警告','图片类型必须是.jpeg,png,jpg中的一种!','info');
// return false;
// }
// $.ajaxFileUpload({
// url:'${pageContext.request.contextPath}/baAdmin/uploadImage',//处理图片脚本
// secureuri :false,
// fileElementId :'advimage',//file控件id
// dataType : 'json',
// success : function (data, status){
// $('#photo').imgAreaSelect({
// x1:0,y1:0,x2:480,y2:520,onSelectEnd:preview,
// resizable:false,
// instance:true,
// persistent:true
// });
// $('#photo').attr('src',data.tempPath);
// },
// error: function(data, status, e){
// alert(e);
// }
// });
// }
function preview(img,selection){
$('#x1').val(selection.x1);
$('#x2').val(selection.x2);
$('#y1').val(selection.y1);
$('#y2').val(selection.y2);
$('#w').val(selection.width);
$('#h').val(selection.height);
}
// function ajaxLoading(){
// $("<div class=\"datagrid-mask\"></div>").css({display:"block",width:"100%",height:$(window).height()}).appendTo("body");
// $("<div class=\"datagrid-mask-msg\"></div>").html("正在处理,请稍候。。。").appendTo("body").css({display:"block",left:($(document.body).outerWidth(true) - 190) / 2,top:($(window).height() - 45) / 2});
// }
// function ajaxLoadEnd(){
// $(".datagrid-mask").remove();
// $(".datagrid-mask-msg").remove();
// }
jQuery(function($){
$("#js_layout").layout({fit:true});
$("#_submit").click( function () {
var pic = $('input:radio[name="pic"]:checked').val();
var position = $('input:radio[name="position"]:checked').val();
var url = $('#url').val();
var picUrl = $('#picUrl').val();
var file = $('#advimage').val();
if(pic=='1'){
if(file==""){
$.messager.alert('提示','为选择上传图片!!!','info');
return ;
}
}
//提交表单
$("#form3").form('submit',
{
url:"${contextPath}/baAdmin/imageUploadFinlly.htmls?position="+position+"&pic="+pic+"&url="+url+"&picurl="+picUrl,
onSubmit:function(){return $(this).form('validate'); },
success : function(d) {
var json = $.parseJSON(d);
if (json.success=='success') {
$.messager.alert('提示','左侧广告设置成功!','info');
}
}
});
});
});
</script>
</body>
</html>
/**
* springmvc 上传文件
* @return
*/
@ResponseBody
@RequestMapping("/uploadImageDemo")
public Object uploadImageDemo(@RequestParam(value="advimage",required=false) MultipartFile file, HttpServletRequest request, ModelMap model){
Map<String, Object> resultMap = new HashMap<String, Object>();
System.out.println("开始");
String path = request.getSession().getServletContext().getRealPath("upload");
// String cutpath = request.getSession().getServletContext().getRealPath("cutUpload");
String fileName = file.getOriginalFilename();
System.out.println(path);
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//保存
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
resultMap.put("tempPath", request.getContextPath()+"/upload/"+fileName);
resultMap.put("success", "success");
return resultMap;
}
@ResponseBody
@RequestMapping("/cutImage")
public Object cutImage(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> restMap = new HashMap<String, Object>();
String x11 = request.getParameter("x1");
String x22 = request.getParameter("x2");
String y11 = request.getParameter("y1");
String y22 = request.getParameter("y2");
String ww= request.getParameter("w");
String hh = request.getParameter("h");
String path = request.getParameter("currentPath");
int x1 = Integer.parseInt(x11);
int x2 = Integer.parseInt(x22);
int y1 = Integer.parseInt(y11);
int y2 = Integer.parseInt(y22);
int w = Integer.parseInt(ww);
int h = Integer.parseInt(hh);
if(w <= 0)
w = 120;
if(h<=0)
h = 120;
if(x1<0)
x1 = 0;
if(y1<0)
y1 = 0;
//File file = new File(request.getSession().getServletContext().getRealPath(path));
// path = path.substring(2);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String file_ext = path.substring(path.indexOf("."),path.length());
String uploadpath = request.getSession().getServletContext().getRealPath("upload");
File file = new File(request.getSession().getServletContext().getRealPath(uploadpath));
String imageName =df.format(new Date())+UUIDUtils.getUUID32() + file_ext;
String newFile = uploadpath +"/"+imageName;
//切图操作
abscut(request.getSession().getServletContext().getRealPath(path), newFile, x1, y1, w, h);
// File targetFile = new File(path, fileName);
// if(!targetFile.exists()){
// targetFile.mkdirs();
// }
//
// //保存
// try {
// file.transferTo(targetFile);
// } catch (Exception e) {
// e.printStackTrace();
// }
restMap.put("success", "success");
restMap.put("currentPath", request.getContextPath()+"/upload/"+imageName);
return restMap;
// return BusinessConstants.TEMP_RELATIVE_PICTURE_PATH + imageName;
}
public static void abscut(String srcImageFile,String desImageFile, int x, int y,int width, int height) {
try {
Image img;
ImageFilter cropFilter;
File srcFile = new File(srcImageFile);
//String fileName = srcFile.getName();
String ext = getExtension(srcImageFile);
if(ext==null)ext="jpg";
// 读取源图像
BufferedImage bi = ImageIO.read(srcFile);
int srcWidth = bi.getWidth(); // 源图宽度
int srcHeight = bi.getHeight(); // 源图高度
if (srcWidth >= width && srcHeight >= height) {
BufferedImage tag;
Image image = bi.getScaledInstance(srcWidth, srcHeight,Image.SCALE_DEFAULT);
// 四个参数分别为图像起点坐标和宽高
// 即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(x, y, width, height);
img = Toolkit.getDefaultToolkit().createImage(new FilteredImageSource(image.getSource(), cropFilter));
int type = BufferedImage.TYPE_INT_RGB;
if("gif".equalsIgnoreCase(ext)||"png".equalsIgnoreCase(ext)){
type = BufferedImage.TYPE_INT_ARGB;
}
tag = new BufferedImage(width, height,type);
Graphics2D g = (Graphics2D)tag.getGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(img, 0, 0, null); // 绘制剪切后的图
g.dispose();
ImageIO.write(tag,ext, new File(desImageFile));
srcFile.delete();//删除原图
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static String getExtension(String srcImageFile) {
String ext = null;
if(srcImageFile!=null && srcImageFile.lastIndexOf(".")>-1){
ext = srcImageFile.substring(srcImageFile.lastIndexOf(".")+1);
}
return ext;
}
图片上传,图片剪切jquery.imgareaselect的更多相关文章
- ajax图片上传(asp.net +jquery+ashx)
一.建立Default.aspx页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=&q ...
- Django中怎么做图片上传--图片展示
1.首先是html页面的form表单的三大属性,action是提交到哪,method是提交方式,enctype只要有图片上传就要加这个属性 Django框架自带csrf_token ,所以需要在前端页 ...
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...
- 基于jQuery仿uploadify的HTML5图片上传控件jquery.html5uploader
(function($){ var methods = { init:function(options){ return this.each(function(){ var $this = $(thi ...
- ASP.NET图片上传(配合jquery.from.js 插件)
前端: js: function AjaxKouBeiShopEdit() { var options = { dataType: "json&q ...
- Jquery自定义图片上传插件
1 概述 编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下: 2 ...
- rails使用bootstrap3-wysiwyg可视化编辑器并实现自定义图片上传插入功能
之前在rails开发中使用了ckeditor作为可视化编辑器,不过感觉ckeditor过于庞大,有很多不需要的功能,而且图片上传功能不好控制不同用户可以互相删除图片,感觉很不好.于是考虑更改可视化编辑 ...
- Uploadify & jQuery.imgAreaSelect 插件实现图片上传裁剪
在网站中需要一个图片上传裁剪的功能,借鉴这篇文章 Ajax+PHP+jQuery图片截图上传 的指点,找到了jquery.imgAreaSelect这个不错插件,能对图片进行自定义区域选择并给出坐标, ...
- MVC4中基于bootstrap和HTML5的图片上传Jquery自定义控件
场景:mvc4中上传图片,批量上传,上传前浏览,操作.图片进度条. 解决:自定义jquery控件 没有解决:非图片上传时,会有浏览样式的问题; 解决方案; 1.样式 – bootstrap 的css和 ...
- Jquery图片上传预览效果
uploadPreview.js jQuery.fn.extend({ uploadPreview: function (opts) { var _self = this, _this = $(thi ...
随机推荐
- nginx php-cgi php
/*************************************************************************** * nginx php-cgi php * 说 ...
- Sonar + Jacoco,强悍的UT, IT 双覆盖率统计(转)
以前做统计代码测试覆盖,一般用Cobertura.以前统计测试覆盖率,一般只算Unit Test,或者闭上眼睛把Unit Test和Integration Test一起算. 但是,我们已经过了迷信UT ...
- PHP字符串——编码与转义
因为PHP程序经常与HTML页.Web地址(URL)以及数据库交互,所以PHP提供一些函数来帮助你处理这些类型的数据.HTML.Web页地址和数据库命令都是字符串,但是它们每个都要求不同的字符以不同的 ...
- 使用 CUDA 进行计算优化的两种思路
前言 本文讨论如何使用 CUDA 对代码进行并行优化,并给出不同并行思路对均值滤波的实现. 并行优化的两种思路 思路1: global 函数 在 global 函数中创建出多个块多个线程对矩阵每个元素 ...
- 跟开涛老师学shiro -- 身份验证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- 项目乱码 GBK转UTF-8工具
项目乱码 GBK转UTF-8工具 链接:http://pan.baidu.com/s/1pLw1mMB 密码:rj6c
- Oracle 12C RAC的optimizer_adaptive_features造成数据插入超时
问题分析 使用10046事件追踪方式,直接生成上传时的数据库事件日志进行分析,发现主要区别在于以下两条sql语句在每次长时间上传时都有出现,并且执行用户不是上传用户,而是数据库SYS用户. ***** ...
- sql server触发器中增删改判断
触发器生效逻辑 在Before或者After之后使用INSERT,DELETE,UPDATE 触发器内情况判断 插入 if exists(select 1 from inserted) and not ...
- C语言常用排序全解(转)
目的:重温经典排序思想,并用C语言指针实现排序算法================================================*/ /*====================== ...
- HOG 梯度方向直方图简介(转载)
一.基本HOG算法 HOG特征最早出现在SIFT算法中,由于其极强的图像特征描述能力,逐渐被人们熟知和广泛运用,其在目标检测方面表现尤为突出. HOG特征提取过程 步骤一:遍历图像每个像素点,以其为中 ...