概述:
现在简要的介绍Jasperreport 是 如何工作的,这样你可以更好的理解iReport 是如何帮助Jasperreport 实现前端的 工作,其实这些工作在我们看来就是“脏活”,为什么呢?看看下面的资料就知 道了:
首先是要有一个XML 文件(一般是以jrxml后缀),那么这个XML文件从那里来呢?做什么用呢? 这 个XML 文件就是报表的定义文件,整个报表的每一个细节都在这个XML 文件 之中定义,一个简单报表的xml文件就有几百行,你可以手工编辑这个XML文 件(一行一行,一段一段的编辑吧――这就是所谓的“脏活”),然后可以在jsp后台使用JasperCompileManager将xml文件编译为jasper文件
ireport工具就是简化编写xml文件和编译的这个流程,而且提供可视化编辑窗口,非常方便
ireport部分:
我使用的是ireport3.0和现在最新的4.0界面上有很大的不同:
3.0界面:
这里,我假设ireport的环境已经配置完毕,点击左上角的档案,选择开启新档,设置报表初始化参数:
注意一下里边的字段数的按钮,字段数设置默认为1,如果设置为2的话,就相当于每一列会有2个字段排列,这样讲有点抽象,请看下边
的例子:
假设我们的数据表是这样:
name
sex
realname
remark
a_1
b_1
c_1
d_1
a_2
b_2
c_2
d_2
a_3
b_3
c_3
d_3
a_4
b_4
c_4
d_4
如果ireport的字段数设为2,结果会变成:
name
sex
realname
remark
a_1 a_2
b_1 b_2
c_1 c_2
d_1 d_2
a_3 a_4
b_3 b_4
c_3 c_4
d_3 d_4
所以,一般设置字段数为1即可。
新建后,可以看到中间的控制面板:
这里,假设您只需要报表显示表格和统计数据,所以title和lastpagefooter可以不要,在左上角的预览里,选择栏,把title和lastpagefooter高度设为0.
下面开始设计报表:
然后可以拖拉到控制面板对应字段对齐
这里假设各位都会对其,效果图如下:
使用报表变量,计算统计值:
document下右键添加variable,出现这个界面,然后按照这样设置:
这里我是统计列a的个行相加值,因为前面 已经设置了sum,所以,报表会自动计算列a的相加值。
这里设计报表要注意几点:
1.字段间要对齐,方框为红色的,表明是超出报表边界
2.写表达式的时候,与java类型兼容,但是写法有点不同,类型转换要用new 类型 不然会报错
jsp处理报表部分
设置report环境:
1.每个Web应用都会有WEB-INF目录,但是lib 是不一定有的,如果没有就创 建它,本文需要的jar库文件有3个: jasperreports-0.5.3.jar :jasperreports执行时需要的API iTextAsian.jar :亚洲字符集支持 itext-1.02b.jar :其他字符集支持
2.在Web应用中根目录下创建repotrs目录,其实这是一种建议,没有必要完 全按照这样做,你可以根据你的业务需要创建N个目录或是层次目录。 把.jasper文件拷贝到repotrs目录下,比如例子中的BusinessRpt.jasper 文件。
jsp两种模式:
1.直接使用jsp处理报表
2.使用servlet处理报表
1.使用jsp处理报表:
jsp文件:
<%@ page session="false" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="javax.naming.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%
DataSource ds = null;
try{
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
Connection conn = ds.getConnection();
//装载jasper 文件
File business_rpt = new
File(application.getRealPath("/reports/BusinessRpt.jasper"));
// http://blog.csdn.net/jemlee2002/archive/2004/10/08/JJem3.aspx
//ProjectName 就是iReport 的变量$P{ProjectName}的名称,
//proname 就是从界面上获取的值。
Map parameters = new HashMap();
parameters.put("ProjectName ", proname);
// JasperRunManager是一个输出控制管理类,下文会提及部分内容
JasperRunManager.runReportToHtmlFile(business_rpt.getPath(),parameters,conn);
//如果创建报表成功,则转向该报表,其实可以把报表套在框架内,这样实现比较有意
义的报表格式。
response.sendRedirect("/reports/BusinessRpt.html");
}catch(Exception ex){
out.print("出现例外,信息是:"+ex.getMessage());
ex.printStackTrace();
}
%>
2.使用servlet处理报表:
主要区别就是,servlet是直接输出report报表流:
先写一个CustomDataSource类实现report的JRDataSource接口,转化vector向量为数据源:
public class CustomDataSource implements JRDataSource
{
private Vector dataVector = new Vector();
private int index = -1;
public CustomDataSource(Vector DataVector)
{
dataVector=DataVector;
}
public boolean next() throws JRException
{
index++;
return (index < dataVector.size());
}
public Object getFieldValue(JRField field) throws JRException
{
Object value = null;
String fieldName = field.getName();
value=((Map)dataVector.get(index)).get(fieldName);
return value;
}
}
输出html:
ServletContext context = this.getServletConfig().getServletContext();
File reportFile = new File(context
.getRealPath("/reports/test.jasper"));//加载报表路径
if (!reportFile.exists()) {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.print("");
return;
}
Map parameters = new HashMap();
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFile.getPath());//加载报表
/*
java.lang.reflect.Field pageHeight = JRBaseReport.class.getDeclaredField("pageHeight");
pageHeight.setAccessible(true);
pageHeight.setInt(jasperReport, 500);
*/
JasperPrint jasperPrint = JasperFillManager
.fillReport(jasperReport, parameters,
new CustomDataSource((Vector) re
.get(1)));//加载数据源和parameters,这里的数据源用到的是JRDataSource,所以要实现JRDataSource接口
JRHtmlExporter exporter = new JRHtmlExporter();
Map imagesMap = new HashMap();
request.getSession().setAttribute("IMAGES_MAP",
imagesMap);
String header = "";
header = "\n";
header += "\n";
header += "\n";
header += " \n";
header += "\n";
header += "\n";
header += "\n";
header += "\n";
header += " \n";
header += "\n";
exporter.setParameter(
JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(
JRExporterParameter.OUTPUT_WRITER, out);
exporter.setParameter(
JRHtmlExporterParameter.IMAGES_MAP,
imagesMap);
exporter.setParameter(
JRHtmlExporterParameter.IMAGES_URI,
"/Images/");
exporter
.setParameter(
JRHtmlExporterParameter.HTML_HEADER,
header);
exporter.exportReport();
pdf输出:
byte[] bytes = null;
try {
bytes = JasperRunManager.runReportToPdf(reportFile
.getPath(), parameters,
new CustomDataSource((Vector) re.get(1)));
if (bytes != null && bytes.length > 0) {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response
.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("ErrorTime:" + new Date());
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.print("");
}
excel输出:
try {
JasperReport jasperReport = (JasperReport) JRLoader
.loadObject(reportFile.getPath());
ServletOutputStream ouputStream = response
.getOutputStream();
JasperPrint jasperPrint = JasperFillManager
.fillReport(jasperReport, parameters,
new CustomDataSource((Vector) re
.get(1)));
response.setContentType("application/ms-excel");
response.setHeader("Content-Disposition",
"inline;filename=\""
+ jasperPrint.getName() + ".XLS\"");
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(
JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(
JRExporterParameter.OUTPUT_STREAM,
ouputStream);
exporter
.setParameter(
JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,
Boolean.TRUE);
exporter
.setParameter(
JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
Boolean.FALSE);
exporter
.setParameter(
JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,
Boolean.FALSE);
exporter.exportReport();
}
catch (Exception e) {
e.printStackTrace();
System.out.println("ErrorTime:" + new Date());
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.print("");
}
转载于:https://www.cnblogs.com/dodohua/archive/2011/01/28/1947166.html
你可能感兴趣的:(ireport制作jasperreport报表详细过程(包括jsp端代码实现))
千问QwQ,推理界“新王”!
人工智能
0前言思考、质疑、理解,人类探索未知的永恒追求。探索之路,QwQ如一位怀抱无尽好奇的学徒,以思考和疑问照亮前路。QwQ深知自己一无所知,而这种认知正是其好奇心的源泉。探寻答案过程,始终保持自省,以理性之光审视每个假设,在不同思维维度中穿行,追寻更深层真理。但正如所有智慧的追求者,QwQ也有局限,它也只是漫长旅程的一个初步阶段——仍在学习如何行走于理性之路。思绪偶尔飘散,答案或许未尽完善,智慧仍在积
vue 前端优化性能优化方法
lfl18326162160
vue.js 前端 javascript
1.列表使用唯一keyv-for="iteminactiveList":key="item.id"原因是不使用key或者列表的index作为key的时候,每个元素对应的位置关系都是index,直接导致我们插入的元素到后面的全部元素,对应的位置关系都发生了变更,所以在patch过程中会将它们全都执行更新操作,再重新渲染。这可不是我们想要的,我们希望的是渲染添加的那一个元素,其他四个元素不做任何变更,
C# 提升性能效率
东城十三
C# c# 开发语言
以下是一些提升C#程序运行效率的完整解决方法,包括代码优化、内存管理、并行和异步处理、编译和运行时优化、以及性能分析和监控。1.优化代码逻辑避免不必要的计算和方法调用//避免重复计算doubleresult=Math.Sqrt(2);//计算一次for(inti=0;i();dictionary[1]="one";dictionary[2]="two";//查找比在列表中更快if(dictiona
快手不发作品ip地址会变吗
hgdlip
快手 ip tcp/ip 快手
在数字时代,我们每个人的在线行为都留下了独特的痕迹。这些痕迹不仅仅是我们的言论或行为,还包括我们的IP地址——一个在网络世界中标识我们位置的数字标签。近年来,随着短视频平台的兴起,如快手这样的应用已经深入人们的日常生活。那么,当我们在快手这样的平台上不发布作品时,我们的IP地址是否会发生变化呢?本文将探讨这一问题,并深入分析IP地址在数字时代的重要性和影响。首先,我们需要了解IP地址的基本概念。I
家政服务小程序,打造智慧家政新体验
冠品网络科技
小程序 小程序开发 小程序制作
春节即将来临,家政市场呈现出了火热的场景,大众对家政服务的需求持续增加。近年来,家政市场开始倾向数字化、智能化,借助科学技术打造家政数字化平台,让大众在手机上就可以预约家政服务,减少传统家政市场中繁琐流程。通过家政系统商家可以更好的派单,服务人员也能快速接单,完成工作,提高消费者的家政体验,推动市场创新发展。传统的家政市场需要中介等介绍人对接,用户需要花费大量时间寻找合适的服务人员,过程较为繁琐。
在 Python 中使用 PyPDF2 向 PDF 文件批量添加水印
信息科技云课堂
python pdf
目录:使用PyPDF2添加水印到PDF文件批量添加水印到PDF文件所有页PDF文件广泛用于不同的设备和平台上,在某些情况下,可能需要在PDF文件中申明版权,需要将水印、条形码、二维码等添加到PDF中。PyPDF2提供了一种将另一个PDF文件作为水印,添加到PDF文件的方法。在下面的示例中,制作一个PDF水印文档,可以加入文字、二维码,通过合并的方法为PDF文件添加水印。使用PyPDF2添加水印到P
Spark 源码分析(一) SparkRpc中序列化与反序列化Serializer的抽象类解读 (正在更新中~)别人能写出来的,你也能行!多学习别人的思路,形成自己的思路,高薪工作奔你而来!
小白的大数据历程
Spark源码解析 开发语言 spark 大数据 分布式 scala
后一篇链接在这接上一章请先看解读序列化抽象类第一部分(这是一个链接)目录接上一章请先看解读序列化抽象类第一部分2.Java序列化实现类JavaSerializer(1)JavaSerializationStream类代码实际例子1:序列化(2)JavaDeserializationStream代码实际例子2:反序列化Spark源码下类图在学习过程中,抓住主要问题,请思考问题为什么Kryo序列化更加
python注册nacos服务
MTonj
Python python 开发语言
根据nacosopenapiOpenAPI指南主要是实现以下接口:创建服务注册实例注销实例删除服务发送实例心跳实现demo如下:一个web服务1http_server1.py#coding:utf-8importsocketfrommultiprocessingimportProcessdefhandle_client(client_socket):"""处理客户端请求"""request_dat
【openGauss】数据库安全-数据库认证机制
小嗑数据库
数据库 开源软件
数据库认证机制可获得性本特性自openGauss1.1.0版本开始引入。特性简介提供基于客户端/服务端(C/S)模式的客户端连接认证机制。客户价值加密认证过程中采用单向Hash不可逆加密算法PBKDF2,有效防止彩虹攻击。特性描述openGauss采用基本的客户端连接认证机制,客户端发起连接请求后,由服务端完成信息校验并依据校验结果发送认证所需信息给客户端(认证信息包括盐值、token以及服务端签
PL/SQL语言的语法糖
技术的探险家
包罗万象 golang 开发语言 后端
PL/SQL语言的语法糖引言PL/SQL(ProceduralLanguage/StructuredQueryLanguage)是Oracle公司为其数据库管理系统(DBMS)设计的一种过程化语言。作为一种扩展SQL的语言,PL/SQL不仅支持数据的查询和操作,还增加了更复杂的编程特性,比如变量声明、控制结构、异常处理等,从而使得程序员能够编写出更加灵活和高效的数据库应用程序。然而在PL/SQL中
C#语言的数据结构
技术的探险家
包罗万象 golang 开发语言 后端
C#语言的数据结构探讨数据结构是计算机科学中一种用于组织、存储和管理数据的方式。有效地使用数据结构能使算法更加高效,并提高程序的性能。在C#语言中,我们可以构建和使用多种数据结构,以满足不同的需求。本文将介绍C#中的常用数据结构,包括数组、链表、栈、队列、哈希表、树和图等,并探讨它们的特点、实现和应用场景。1.数组数组是一种最基础且常用的数据结构。它是一个固定大小的线性结构,可以通过索引访问其中的
Next.js服务器操作:优势、局限与审慎应用
exploration-earth
javascript 服务器 开发语言
类似于任何技术,它们亦非尽善尽美,故而保持警觉至关重要。通过亲身经历中的挫折汲取了教训,现将之与诸位共勉。一大诟病在于潜在的紧密绑定问题。若服务器端代码嵌入组件之中,则可能导致代码库模块化程度削弱,维护成本攀升。后端逻辑的任何变动或许都将迫使前端相应更新,反之亦然。对于追求关注点严格分离的大型项目或团队而言,这无疑构成了严峻挑战。唯有秉持严谨的纪律与条理,方能避免代码库陷入混乱。再者,便是学习曲线
Java 8新特性详解与实战
小码快撩
java
引言Java8是Java发展历程中的一个里程碑版本,它引入了众多革新性的新特性和优化,大大提升了开发者的工作效率和代码质量。本文将详细解析Java8中的关键新特性,并通过实例代码进行深入讲解。一、Lambda表达式(LambdaExpression)Lambda表达式(LambdaExpression)是Java8中引入的一个重大特性,它提供了一种更简洁的匿名函数实现方式。Lambda表达式允许将
使用 Python 实现 WebSocket 服务器与客户端通信
又蓝
python websocket
简介WebSocket是一种基于TCP协议的通信协议,能够在客户端与服务器之间进行全双工(双向)通信。相比传统的HTTP协议,WebSocket可以实现实时数据的传输,尤其适合需要实时交互的应用场景,如在线游戏、实时聊天、金融交易等。我通过Python实现一个简单的WebSocket服务器,并使其与客户端进行通信。我们将创建两个Python文件:websocket.py和main.py,webso
单体架构、集群架构和分布式架构概述
JoyousHorse
软件工程 架构 分布式 软考 软件工程 系统架构设计师
单体架构、集群架构和分布式架构概述在现代系统架构和开发过程中,单体架构、集群架构和分布式架构是三个常见且关键的概念。本文将详细介绍这些技术的相关概念,并探讨它们之间的联系与区别。一、单体架构单体架构,即单体技术,是一种软件设计模式,所有的功能和模块都集中在一个单一的应用程序中。比较常见的是学生时代开发的各类应用程序,应用包部署在一台服务器上,无需考虑系统性能、请求并发、服务连续性等问题。特点:单一
R语言的并发编程
技术的探险家
包罗万象 golang 开发语言 后端
R语言的并发编程引言在现代计算中,如何有效地利用计算资源进行数据处理和分析已成为一个重要的研究方向。尤其在大数据时代,数据量的急剧增加让单线程处理方式显得力不从心。为了解决这一问题,各种编程语言都开展了并发编程的研究和应用。R语言作为一种广泛应用于统计分析和数据科学的语言,也为并发编程提供了强大的支持。本文将介绍R语言的并发编程,包括其基本概念、常用包、应用示例以及实用技巧。一、并发编程基础并发编
OpenSPG docker 安装教程
@comefly
NLP docker openspg 知识图谱 llm
文章目录前言自述一、OpenSPG1.介绍二、安装步骤1.安装服务端2.客户端部署前言自述我最近是想结合chatglm3-6b和知识图谱做一个垂直领域的技术规范的问答系统,过程中也遇到了很多困难,在模型微调上,在数据集收集整理上,在知识图谱的信息抽取上等等,咬咬牙,多学习就可以解决,本文主要写一下利用openspg做技术规范的信息抽取的部署安装过程。一、OpenSPG1.介绍OpenSPG是蚂蚁集
使用Node.js+Express框架,创建一个独立的服务器端项目
海绵宝宝人间体
node.js express
使用Node.js+Express框架,创建一个独立的服务器端项目1、安装Node.js环境node.js中文网官网:Node.js中文网安装完成后,在命令行中输入node-v和npm-v来检查Node.js和npm(NodePackageManager)是否安装成功。2、初始化项目创建一个新的文件夹作为你的项目文件夹。在命令行中进入该文件夹,并运行npminit-y来初始化项目并生成packag
麒麟操作系统服务架构保姆级教程(十一)https配置
小屁不止是运维
系统架构 架构 https 网络协议 linux 运维 LNMP 服务器
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情在运维工作中,加密和安全的作用是十分重要的,如果仅仅用http协议来对外展示我们的网站,过一段时间就会发现网站首页被人奇奇怪怪的篡改了,本来好好的博客论坛,被人篡改的五毒俱全,这个时候我们的网站就需要加密访问了,这个加密不是说要密码才可以查看网站,而是通过https协议进行加密访问,客户端进行访问的时候会进行加密和解密,防止我们的web
麒麟操作系统基础知识保姆级教程(十五)权限管理
小屁不止是运维
基础知识 linux 服务器 网络 运维 学习 bash
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情之前咱们了解过了麒麟操作系统的sudo提权,那么都有哪些关于咱们权限有哪些相关的知识呢?欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!推广给
asp.net mysql 性能问题_ASP.NET性能优化小结
syhakh
asp.net mysql 性能问题
一、返回多个数据集检查你的访问数据库的代码,看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。如果用动态的SQL语句来返回多个数据集,那用存储过程来替代动态的SQL语句会更好些。是否把业务逻辑写到存储过程中,这个有点争议。但是我认为,把业务
Python 实现七大排序算法
weixin_30527323
python shell 数据结构与算法
技术博客:github.com/yongxinz/te…本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。先整体看一下各个算法之间的对比,然后再进行详细介绍:排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定性插入排序O(n²)O(n)O(n²)O(1)In-place稳定冒泡排序O(n²)O(n)O(n²)O(1)In-place稳定选择排
MySQL.data.dll v4.0:深入.NET与MySQL交互的关键组件
小黄人95
本文还有配套的精品资源,点击获取简介:MySQL.data.dll是.NETFramework应用程序与MySQL服务器通信的重要组件,包含MySqlClient类库,提供数据库连接、命令执行和数据适配等功能。它对.NET开发人员使用C#、***等语言操作MySQL数据库至关重要。本实践指南将深入介绍如何正确配置和使用MySQL.data.dll,包括连接字符串配置、异常处理、数据库操作、连接管理
ReactNative0.75版本发布,一文快速了解
wayne214
ReactNative react native
ReactNative0.75版本的更新包含了多个方面的内容,以下是一些详细信息:亮点Yoga3.1和布局改进:支持%值在布局中的应用,如gap、translation等属性,但仅适用于新架构。新架构稳定化:修复了一些Bug,提高了稳定性,并在ReactNativeDirectory中添加了新架构支持信息,还发布了关于支持新架构中UIManager的文章。使用框架:推荐通过框架(如Expo)构建R
ChatGPT大模型极简应用开发-目录
uncle_ll
# GPT chatgpt 人工智能 LLM 大模型 GPT
引言要理解ChatGPT,了解其背后的Transformer架构和GPT技术一路的演进则变得非常必要。ChatGPT背后的LLM技术使普通人能够通过自然语言完成过去只能由程序员通过编程语言实现的任务,这是一场巨大的变革。然而,人类通常容易高估技术的短期影响而低估长期影响。进一步学习关于LLM技术原理的论文、视频、图书等。在阅读这本书或者后续学习过程中,你有任何疑问都可以随时请教ChatGPT等工具
PCL 点云随机渲染颜色
MelaCandy
PCL点云算法与实战案例 3d 算法 计算机视觉 人工智能 c++
目录一、概述1.1原理1.2实现步骤1.3应用场景二、代码实现2.1关键函数2.2完整代码三、实现效果PCL点云算法汇总及实战案例汇总的目录地址链接:PCL点云算法与项目实战案例汇总(长期更新)一、概述本文将介绍如何使用PCL库为点云中的每个点随机渲染颜色,并在PCL的可视化窗口中显示。这种方法适用于需要对点云中的不同点进行颜色区分的场景,可以帮助更直观地观察和分析点云数据。1.1原理在点云处理中
pcl系列-添加自定义点云类型
不会算法的阿召
c++ 自动驾驶 计算机视觉 3d
pcl库中附带了各种预定义的点类型,这些数据类型足以支持在pcl中所实现的所有算法和方法,但是在某些情况下,在使用pcl点类型时希望定义新的点类型,比如在LIO-SAM中定义的PointXYZIRPYT(包括点云基本的坐标(x,y,z)和强度I,以及三个旋转角RPY和时间T)。因此,pcl提供了创建自定义点云类型的方法。1.pcl常用点云类型pcl中定义了大量的常用点类型,在定义自己的点类型之前,
《电子制作从零开始》 第1章:电子制作入门
请向我看齐
电子电路 电子电路
第1章:电子制作入门1.1走进电子制作的世界电子制作的魅力与应用领域创造力的体现:电子制作就像是一场科技与创意的结合。通过自己的双手,将各种电子元件巧妙地组合在一起,创造出具有各种功能的电子设备,从简单的闪烁灯到复杂的智能机器人,这个过程能够充分发挥个人的创造力。技术探索的乐趣:在制作过程中,可以深入了解电子技术的原理。例如,通过制作一个小型的音频放大器,能直观地理解信号放大的过程,以及电容、电阻
PCL 生成空间圆点云【2025最新版】
点云侠
PCL学习 算法 c++ 3d 计算机视觉 开发语言
目录一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。博客长期更新,最近一次更新时间为:2025年1月17日。代码在PCL1.14.1中测试通过。一、算法原理 三维空间圆形式如下:三维空间圆的参数方程:{
Open3D 手动裁剪点云【2025最新版】
点云侠
python点云处理 几何学 python 3d 计算机视觉 算法
目录一、概述1、主要函数2、基础操作二、代码实现三、结果展示四、相关链接博客长期更新,本文最近更新时间为:2025年1月18日。一、概述 Open3d中的VisualizerWithEditing类提供了图形用户交互功能。draw_geometries_with_editing([pcd])函数提供了顶点选择和裁剪功能。1、主要函数defdraw_geometries_with_editing(
Hadoop(一)
朱辉辉33
hadoop linux
今天在诺基亚第一天开始培训大数据,因为之前没接触过Linux,所以这次一起学了,任务量还是蛮大的。
首先下载安装了Xshell软件,然后公司给了账号密码连接上了河南郑州那边的服务器,接下来开始按照给的资料学习,全英文的,头也不讲解,说锻炼我们的学习能力,然后就开始跌跌撞撞的自学。这里写部分已经运行成功的代码吧.
在hdfs下,运行hadoop fs -mkdir /u
maven An error occurred while filtering resources
blackproof
maven 报错
转:http://stackoverflow.com/questions/18145774/eclipse-an-error-occurred-while-filtering-resources
maven报错:
maven An error occurred while filtering resources
Maven -> Update Proje
jdk常用故障排查命令
daysinsun
jvm
linux下常见定位命令:
1、jps 输出Java进程
-q 只输出进程ID的名称,省略主类的名称;
-m 输出进程启动时传递给main函数的参数;
&nb
java 位移运算与乘法运算
周凡杨
java 位移 运算 乘法
对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率。这个可以从一道面试题说起:
问题:
用最有效率的方法算出2 乘以8 等於几?”
答案:2 << 3
由此就引发了我的思考,为什么位移运算会比乘法运算更快呢?其实简单的想想,计算机的内存是用由 0 和 1 组成的二
java中的枚举(enmu)
g21121
java
从jdk1.5开始,java增加了enum(枚举)这个类型,但是大家在平时运用中还是比较少用到枚举的,而且很多人和我一样对枚举一知半解,下面就跟大家一起学习下enmu枚举。先看一个最简单的枚举类型,一个返回类型的枚举:
public enum ResultType {
/**
* 成功
*/
SUCCESS,
/**
* 失败
*/
FAIL,
MQ初级学习
510888780
activemq
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。
启动ActiveMQ以后,登陆:http://localhos
Spring_Transactional_Propagation
布衣凌宇
spring transactional
//事务传播属性
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务
@Transactional(propagation=Propagation.REQUIREDS_N
我的spring学习笔记12-idref与ref的区别
aijuans
spring
idref用来将容器内其他bean的id传给<constructor-arg>/<property>元素,同时提供错误验证功能。例如:
<bean id ="theTargetBean" class="..." />
<bean id ="theClientBean" class=&quo
Jqplot之折线图
antlove
js jquery Web timeseries jqplot
timeseriesChart.html
<script type="text/javascript" src="jslib/jquery.min.js"></script>
<script type="text/javascript" src="jslib/excanvas.min.js&
JDBC中事务处理应用
百合不是茶
java JDBC编程 事务控制语句
解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复
事务常用命令:
Commit提交
[转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
bijian1013
java 多线程 线程安全 HashMap
在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。 Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的
ng-if与ng-show、ng-hide指令的区别和注意事项
bijian1013
JavaScript AngularJS
angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或
【持久化框架MyBatis3七】MyBatis3定义typeHandler
bit1129
TypeHandler
什么是typeHandler?
typeHandler用于将某个类型的数据映射到表的某一列上,以完成MyBatis列跟某个属性的映射
内置typeHandler
MyBatis内置了很多typeHandler,这写typeHandler通过org.apache.ibatis.type.TypeHandlerRegistry进行注册,比如对于日期型数据的typeHandler,
上传下载文件rz,sz命令
bitcarter
linux命令rz
刚开始使用rz上传和sz下载命令:
因为我们是通过secureCRT终端工具进行使用的所以会有上传下载这样的需求:
我遇到的问题:
sz下载A文件10M左右,没有问题
但是将这个文件A再传到另一天服务器上时就出现传不上去,甚至出现乱码,死掉现象,具体问题
解决方法:
上传命令改为;rz -ybe
下载命令改为:sz -be filename
如果还是有问题:
那就是文
通过ngx-lua来统计nginx上的虚拟主机性能数据
ronin47
ngx-lua 统计 解禁ip
介绍
以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页: https://github.com/skyeydemon/ngx-lua-stats 功能
支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计.
可以统计与query-times request-time
java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132
bylijinnan
java
import java.util.Arrays;
import java.util.Comparator;
public class MinNumFromIntArray {
/**
* Q68输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
* 例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题
Oracle基本操作
ccii
Oracle SQL总结 Oracle SQL语法 Oracle基本操作 Oracle SQL
一、表操作
1. 常用数据类型
NUMBER(p,s):可变长度的数字。p表示整数加小数的最大位数,s为最大小数位数。支持最大精度为38位
NVARCHAR2(size):变长字符串,最大长度为4000字节(以字符数为单位)
VARCHAR2(size):变长字符串,最大长度为4000字节(以字节数为单位)
CHAR(size):定长字符串,最大长度为2000字节,最小为1字节,默认
[强人工智能]实现强人工智能的路线图
comsci
人工智能
1:创建一个用于记录拓扑网络连接的矩阵数据表
2:自动构造或者人工复制一个包含10万个连接(1000*1000)的流程图
3:将这个流程图导入到矩阵数据表中
4:在矩阵的每个有意义的节点中嵌入一段简单的
给Tomcat,Apache配置gzip压缩(HTTP压缩)功能
cwqcwqmax9
apache
背景:
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,
SpringMVC and Struts2
dashuaifu
struts2 springMVC
SpringMVC VS Struts2
1:
spring3开发效率高于struts
2:
spring3 mvc可以认为已经100%零配置
3:
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现r
windows常用命令行命令
dcj3sjt126com
windows cmd command
在windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。winver 检查windows版本 wmimgmt.msc 打开windows管理体系结构(wmi) wupdmgr windows更新程序 wscrip
再看知名应用背后的第三方开源项目
dcj3sjt126com
ios
知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《
iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的开源框架,并对其中一些框架进行了分析,同样国外开发者
@iOSCowboy也在博客中给我们列出了国外多款知名应用使用的开源框架。另外txx's blog中详细介绍了
Facebook Paper使用的第三
Objective-c单例模式的正确写法
jsntghf
单例 ios iPhone
一般情况下,可能我们写的单例模式是这样的:
#import <Foundation/Foundation.h>
@interface Downloader : NSObject
+ (instancetype)sharedDownloader;
@end
#import "Downloader.h"
@implementation
jquery easyui datagrid 加载成功,选中某一行
hae
jquery easyui datagrid 数据加载
1.首先你需要设置datagrid的onLoadSuccess
$(
'#dg'
).datagrid({onLoadSuccess :
function
(data){
$(
'#dg'
).datagrid(
'selectRow'
,3);
}});
2.onL
jQuery用户数字打分评价效果
ini
JavaScript html jquery Web css
效果体验:http://hovertree.com/texiao/jquery/5.htmHTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery用户数字打分评分代码 - HoverTree</
mybatis的paramType
kerryg
DAO sql
MyBatis传多个参数:
1、采用#{0},#{1}获得参数:
Dao层函数方法:
public User selectUser(String name,String area);
对应的Mapper.xml
<select id="selectUser" result
centos 7安装mysql5.5
MrLee23
centos
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。
#列出所有被安装的rpm package rpm -qa | grep mariadb
#卸载
rpm -e mariadb-libs-5.
利用thrift来实现消息群发
qifeifei
thrift
Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就
实现一个sizeof获取Java对象大小
teasp
java HotSpot 内存 对象大小 sizeof
由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各虚拟机上都适用,而是仅在hotspot 32位虚拟机上,或者其它内存管理方式与hotspot 32位虚拟机相同的虚拟机上 适用。
SVN错误及处理
xiangqian0505
SVN提交文件时服务器强行关闭
在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道 SVN无法读取current修复方法 Can't read file : End of file found
文件:repository/db/txn_current、repository/db/current
其中current记录当前最新版本号,txn_current记录版本库中版本