一、报表的分类
一般有图形和表格报表
二、页面准备
查询的展示报表效果 =
需要引入的easyUI的插件EasyUI(datagrid-groupview)
easyUI官网的demo 下载地址 * 页面的准备 引入插件 只需要一个table,动态生成
<%--grid顶部工具栏 需要加入报表中--%>
js代码
$(function () {
//获取常用的组件
var chartDialog = $("#chartDialog");
//高级查询
var querySearch = $("#querySearch");
var purchasebillitemGrid = $('#purchasebillitemGrid');
var searchForm = $('#searchForm');
//动态生成报表
$('#purchasebillitemGrid').datagrid({
//标题
title:'DataGrid - GroupView',
//自适应父容器
fit:true,
//行号
rownumbers:true,
remoteSort:false,
nowrap:false,
//列的自适应
fitColumns:true,
//添加根据栏
toolbar:"#gridTools",
url:'/purchasebillitem/findItems',
columns:[[
{field:'id',title:'编号',width:100,sortable:true},
{field:'supplier',title:'供应商名称',width:100,sortable:true},
{field:'buyer',title:'采购员名称',width:100,sortable:true},
{field:'product',title:'产品名称',width:100,sortable:true},
{field:'productType',title:'产品分类',width:100,sortable:true},
{field:'vdate',title:'交易时间',width:100,sortable:true},
{field:'num',title:'采购数量',width:100,sortable:true},
{field:'price',title:'价格',width:100,sortable:true},
{field:'amount',title:'小计',width:100,sortable:true},
{field:'status',title:'审核状态',formatter:statusFormat,width:100,sortable:true},
]],
//根据什么东西分组显示
groupField:'groudFile',
view: groupview,
//rows,所有数据明细的对象
groupFormatter:function(value, rows){
//准备计算总数量和总价
var totalNum=0;
var totalAmount=0;
for(let row of rows){
console.debug(row)
totalNum +=row.num;
totalAmount += row.amount;
}
console.debug(totalAmount)
//拼接成需要的格式
return `${value}-${rows.length}条数据共${totalNum}件商品 总金额${totalAmount} `;
}
});
//点击a标签的时候,获取到函数名称 动态调用方法
//加*匹配所有的a标签
$("*[data-method]").on("click",function(){
var methodName = $(this).data("method");
window.comlr[methodName]();
})
//添加方法
comlr={
//高级查询的条件
search(){
//serializeObject:拿到一个form中的所有数据,封装成json对象,发送到后台
//查询条件
var params = searchForm.serializeObject();
console.debug(params)
purchasebillitemGrid.datagrid("load",params);
}
}
})
function statusFormat(v) {
if (v==0){
return `待审 `
}else if (v==-1){
return `删除 `
} else if (v==1){
return `已审核 `
}
}
添加高级查询条 条件:beginDate endDate ,时间区间条件 status 启用状态,分组显示groupField:‘groudFile’, 前台提交表单将查询数据封装为查询对象 注意:后台时间需要加注解,前台的字段对应vo对象字段
三、查询对象PurchasebillitemQuery
用于接收前台的查询条件,没有就是默认
public class PurchasebillitemQuery extends BaseQuery{
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date beginDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endDate;
private Integer status;
//分组条件
private Integer groupBy=0;
@Override
public Specification creatSpec(){
Date teampDate=null;
if (endDate!=null){
teampDate = DateUtils.addDays(endDate, 1);
}
Specification spec = Specifications.and()
//Purchasebillitem对象没有status,vdate属性,是其中的字段Purchasebill对象的属性
.eq(status!=null,"bill.status",status)
//小于
.lt(endDate!=null,"bill.vdate",teampDate )
//大于等于
.ge(beginDate!=null,"bill.vdate",beginDate )
.build();
System.out.println(endDate);
System.out.println(beginDate);
return spec;
}
。。省略getset。。注意时间的getset需要加上注解因为前后台时间不一样
}
四、vo类
返回数据如果只用普通domain来查询返回,所有的字段都返回了,很浪费性能 所以准备一个vo类,原来将需要的数据返回,注意前台的字段要对应
public class PurchaseBillItemVo {
private Long id; //编号
private String supplier; //供应商名称
private String buyer; //采购员名称
private String product; //产品名称
private String productType; //产品分类
private Date vdate; //交易时间
private BigDecimal num; //采购数量
private BigDecimal price; //价格
private BigDecimal amount; //小计 = 价格*数量
private Integer status;//状态
private String groudFile;
public PurchaseBillItemVo(){}
public PurchaseBillItemVo(Purchasebillitem item, PurchasebillitemQuery query){
this.id = item.getId();
this.supplier = item.getBill().getSupplier().getName();
this.buyer = item.getBill().getBuyer().getUsername();
this.product = item.getProduct().getName();
this.productType = item.getProduct().getProducttype().getName();
this.vdate = item.getBill().getVdate();
this.num = item.getNum();
this.price = item.getPrice();
this.amount = item.getAmount();
this.status = item.getBill().getStatus();
Integer groupBy = query.getGroupBy();
if (groupBy==null){
groupBy=0;
}
if (groupBy==0){
this.groudFile=supplier;
}else if (groupBy==1){
this.groudFile=buyer;
}else if (groupBy==2){
Calendar cal = Calendar.getInstance();
cal.setTime(vdate);
//月份是从0开始
String month = (cal.get(Calendar.MONTH)+1) + "";
this.groudFile = month;
}
}
省略getset方法
}
PurchaseBillItemVo对象的构造方法,将Purchasebillitem 明细对象传进来,封装为vo对象返回,实际还是查询的明细,只是在service层查询出来遍历,将明细对象变成vo对象 注意分组条件是在PurchaseBillItemVo,应该在查询对象中获得所以在构造方法中也传一个查询对象方便实用
PurchasebillitemServiceImpl层查询对象
@Autowired
private PurchasebillitemRepository purchasebillitemRepository;
@Override
public List findItems(PurchasebillitemQuery query) {
//准备返回的vo对象集合
List itemVos = new ArrayList<>();
List list = purchasebillitemRepository.findByQuery(query);
//查询的明细对象遍历,包装为vo对象
for (Purchasebillitem purchasebillitem:list) {
PurchaseBillItemVo purchaseBillItemVo = new PurchaseBillItemVo(purchasebillitem,query);
itemVos.add(purchaseBillItemVo);
}
return itemVos;
}
controller层调用返回前台数据 打上json注解
//返回所有的PurchaseBillItemVo对象
@RequestMapping("/findItems")
@ResponseBody
public List list1(PurchasebillitemQuery query){
List all = iPurchasebillitemService.findItems(query);
//System.out.println(all);
return all;
}
前台报表关于分组的展示就完成了,注意报表一般只需要查询
五、制作图形报表
插件准备
HighChart flash:写actionScript代码(flex) flash:容易崩溃,影响性能,安全性低 HTML5:用画布功能 HTML:IE低版本不支持 引入HighChart 官网 效果展示
六、页面准备
在报表的工具栏中添加一个展示3D报表图 点击a标签,动态展示,数据应该是高级查询,提交查询条件获取 动态展示
<%--grid顶部工具栏--%>
<%--显示图表的弹出框--%>
js代码 只需要将 chart3d()方法放在后面,动态调用就可以完成弹出展示, 设置一些属性,发送Ajax请求,将数据返回给页面, 注意页面需要的格式 官网展示数据的demo是:
七、查询,返回图形的数据
我们查询的数据应该是list形式,创建一个类来将数据封装成key和value的形式用于返回
要查询的应该是分类和总共的数据展示,所以查询对象的条件不满足需要
添加一个jpql查询的方法,但是也需要使用到查询语句的封装回来的条件
拼接查询语句,进行查询,然后封装返回前台
PurchasebillitemQuery增加方法,在内部增加获取查询的where条件方法,获取分组条件 的方法,还需要将查询语句中的问号需要的参数设置
//用于存储查询语句问好需要提供的参数
private List params = new ArrayList<>();
//拼接jpql中的where条件语句
public String getWhere(){
StringBuilder jpql = new StringBuilder();
if(beginDate!=null){
jpql.append(" and o.bill.vdate >= ? ");
//存储时间大于等于?
params.add(beginDate);
}
if(endDate!=null){
Date tempDate = DateUtils.addDays(endDate, 1);
jpql.append(" and o.bill.vdate < ? ");
params.add(tempDate);
}
if(status!=null){
jpql.append(" and o.bill.status =? ");
params.add(status);
}
//将第一个条件后面的and换成where,拼接sql语句
return jpql.toString().replaceFirst("and","where");
}
//获取到分组的字符串
//service层调用获取到分组的条件,拼接sql语句
public String getGroupJPQL(){
if (groupBy==null){
groupBy=0;
}
if(groupBy==1){
//根据采购员分组
return "o.bill.buyer.username";
}else if(groupBy==2){
//根据月份分组
return "MONTH(o.bill.vdate)";
}else{
//根据供应商分组
return "o.bill.supplier.name";
}
}
public List getParams() {
return params;
}
public void setParams(List params) {
this.params = params;
}
PurchasebillitemServiceImpl覆写方法findByJpql 方法来自于BaseRepository父类抽取,jpa自动实现
//父接口的方法
//根据jpql与对应的参数拿到数据
List findByJpql(String jpql, Object... values);
方法覆写 也需要用到查询对象,查询对象内部完成条件语句的部分需要
//通过findByJpql,查询出条件是供应商,采购员,月份分组时的产品数量
//拼接需要的条件,条件都来自于前台form表单提交的查询条件
@Override
public List findCharts(PurchasebillitemQuery query) {
//1.获取到分组的条件
String group = query.getGroupJPQL();
//2.获取到相应的JPQL
String whereJPQL = query.getWhere();
//3.获取到JPQL中?对应的值
List params = query.getParams();
//这里要将查询的数据直接封装为对象就必需使用全限定名
//完成jpql 的拼接,查询产品明细中,先按where条件过滤时间启用状态的数据,然后再进行分组查询,统计数量
//封装到对象中返回前台
String jpql = "select new com.lirui.domain.vo.ItemChartVo("+group
+",sum(amount)) from Purchasebillitem o "+whereJPQL+" group by "+group;
//将可变数变成数组
List vos = super.findByJpql(jpql,params.toArray());
return vos;
}
ItemChartVo 返回前台的图形数据需要的类
public class ItemChartVo {
private Object name;
private Object y;
public Object getName() {
return name;
}
public ItemChartVo() {
}
public ItemChartVo(Object name, Object y) {
this.name = name;
this.y = y;
}
public ItemChartVo(String name, Object y) {
this.name = name;
this.y = y;
}
。。。
}
注意前台的参数的名字貌似是y才能接收
//查询3D图片
chart3d(){
//打开3d弹出框
chartDialog.dialog("center").dialog("open");
//获取到表单中的所有值
var params = searchForm.serializeObject();
//请求的时候把值传到后台
$.post("/purchasebillitem/findCharts",params,function(result){
console.debug(result)
//展示图表
Highcharts.chart('container', {
chart: {
type: 'pie',
options3d: {
enabled: true,
alpha: 45, //倾斜度
beta: 0
}
},
title: {
text: '销售情况占比'
},
//鼠标移上去后显示的数据
tooltip: {
pointFormat: '{series.name}: {point.percentage:.1f}% '
},
plotOptions: {
pie: {
//是否自己可以选择
allowPointSelect: true,
//鼠标指上来后的样式
cursor: 'pointer',
depth: 35, //深度
dataLabels: {
enabled: true,
format: '{point.name}'
}
}
},
series: [{
type: 'pie',
name: '销售占比',
data: result
}]
});
})
}
注意修改路径
你可能感兴趣的:(Java,销售模块,jpa)
javase集合框架List篇
2301_76231794
面试专题 list java
一、Vector和ArrayList、LinkedList联系和区别,分别的使用场景ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢LinkedList:底层是双向链表,线程不安全,查询和修改速度慢,但是增加和删除速度快Vector:底层是数组实现,线程安全的,操作的时候使用synchronized进行加锁使用场景:Vector已经很少用了增加和删除场景多则用Li
用友 U8出入库查询SQL 连接UNION ALL
zikn_92
SQL SERVER 用友U8SQL语句 数据库语句 数据库
--销售出库单查询SELECT'销售出库单'AS单据类型,a.cCodeAS单号,a.dDateAS日期,a.cMakerAS制单人,a.cHandlerAS审核人,a.dVeriDateAS审核日期,b.cInvCodeAS存货编码,b.iQuantityAS数量,b.cBatchAS批号,c.cInvSNAS序列号FROMrdrecord32aJOINrdrecords32bONa.ID=b.
每日学习Java之一万个为什么
~Yogi
修炼 学习 java 开发语言
文章目录Spring声明式事务配置事务接口PlatformTransactionManagerSpring基于AOP的事务具体实现流程@Transactional细节事务传播行为SpringMVC所需依赖SpringMVC五个组成部分功能及其原理SpringMVCHandler方法注解RequestMappingHandlerAdapter工作原理Handler需要处理的数据格式,以及用于简化参数
PyTorch 中的混合精度训练方法,从 autocast 到 GradScalar
Syntax_CD
PyTorch 必知必会 pytorch 人工智能 python
PyTorch的混合精度训练主要由两个方法实现:amp.autocast和amp.GradScalar。在这两个工具的帮助下,可以实现以torch.float16的混合精度训练。当然,这两个方法都是模块化并且通常都会一起调用,但并不一定总是需要一起使用。参考:AutomaticMixedPrecisionpackage-torch.ampAutomaticMixedPrecisionexample
Stream 流 【学习笔记】Java 基础
燕赵韩魏555
Java 基础学习 # java java 学习
若文章内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系博主删除。写这篇博客旨在制作笔记,方便个人在线阅览,巩固知识,无其他用途。学习视频【黑马Java基础教程】Stream流从入门到精通】【黑马程序员Java零基础视频教程】(上部)【黑马程序员Java零基础视频教程】(下部)Java基础(查缺补漏)Java集合【学习笔记】Java基础:https://blog.csdn
Stream.of()用法示例
爆米花9958
Java8新特性 java
Stream.of用于为给定元素创建顺序流。我们可以传递单个元素或多个元素。查看java文档中的Stream.of方法声明。staticStreamof(Tt)参数:传递单个元素。返回值:该方法返回一个包含一个元素的流。staticStreamof(T...values)参数:传递多个元素。返回值:该方法返回包含给定元素的流。Stream.of创建有限元素流。为了创建一个无限元素流,我们可以使用S
field.setAccessible(true);代码扫描有安全漏洞,解决方案
码叔义
常规发表 java 开发语言
AccessibleObject类是Field、Method和Constructor对象的基类,能够允许反射对象修改访问权限修饰符,绕过由Java访问修饰符提供的访问控制检查。它让程序员能够更改私有字段或调用私有方法,这在通常情况下是不允许的。例如:以下代码片段中,将Field将accessible标记设置为true。Classclazz=User.class;Fieldfield=clazz.g
请求https,X509证书信任管理器类,避免导证书
益梅珍
代码片段 发送请求 java
实现X509证书信任管理器类(避免导证书)packagecom.showlin.httpsDemo;importjavax.net.ssl.X509TrustManager;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;/***@Author:xielin*@Descri
Sonar的常见场景
码叔义
常规发表 java 开发语言
Avoidlongparameterlists.方法参数过多,最多允许5个MissingaJavadoccomment.需要注释Expected@paramtagfor‘area’.需要注释Expected@returntag.需要注释Expected@throwstagfor‘Exception’.需要注释Unused@paramtagfor‘licenseInfoMap’.修改注释Lineis
Java基础_18File类【重点】_递归_IO流【重点】
码叔义
java基础 java 单片机 stm32
回顾昨天内容1.TreeSet底层是二叉树会对咱们的存储的数据进行排序从小到大排列存Integer,String存Perosn对象会报错的。Person类不具备排序的功能实现Comparable接口,重写comparaTo2.匿名内部类interfaceA{voidtest();}main{newA(){publicvoidtest(){sout("嘻嘻");}}.test();}4.HashMa
在Python中运行sql语句
静默追光
sql oracle 数据库
导入pymysql或者是MySQL.connector模快importpymysql#最常用importmysql.connector连接数据库#连接数据库使用pymysql模块db=pymysql.connect(host="192.168.1.110",#数据库主机名user="root",#数据库用户名password="root",#数据库密码database="test",#数据库名称c
AI问答-供应链管理:直接采购和间接采购有什么区别
快雪时晴-初晴融雪
供应链管理 供应链管理
直接采购和间接采购是企业采购活动中的两种主要方式,它们在多个方面存在显著的区别。以下是关于直接采购和间接采购的详细对比:直接采购间接采购定义企业直接从生产商或供应商处购买所需的产品或服务,无需经过中间商或分销商。企业通过中间商(如贸易公司、物资公司、采购中介组织等)实施采购行为,也称委托采购或中介采购。服务对象主要服务于外部客户,用于产品生产及销售所需的物料与服务。主要服务于内部客户,支持产品生产
Java基础知识:标识符、关键字、数据类型
谏君之
java教程 java jvm 开发语言 编程
Java标识符Java中的标识符是赋予变量、类、方法、包、接口等的名称。这些是唯一的名称,每个Java变量都必须使用唯一名称进行标识。例:publicclassTest{publicstaticvoidmain(String[]args){inta=20;}}在上面的Java代码中,我们有5个标识符,如下所示:测试:类名main:方法名称字符串:预定义的类名args:变量名称a:变量名称Java标
tauri如何实现窗口拖动,自定义标题栏
爱音乐的程序猿
rust语言 前端 tauri rust 前端 桌面软件 exe
文章目录一、tauri是什么?二、封装好的标题栏,引用修改即可使用三相关配置实现细节实现窗口拖动一、tauri是什么?Tauri是一个开源框架,用于创建跨平台的桌面应用程序。它使用Rust编程语言,并结合了现有的Web技术,如HTML、CSS和JavaScript。Tauri旨在提供一个快速、可靠和安全的方式来构建本地应用程序,同时保持Web开发的灵活性和易用性。它支持多个操作系统和架构,包括Wi
解释 TypeScript 中的类型系统,如何定义和使用类型?
程序员黄同学
前端开发 JavaScript typescript ubuntu javascript
1.类型系统的核心作用TypeScript类型系统本质上是JavaScript的静态类型增强方案,提供三个核心价值:开发阶段类型检查(类似编译时eslint)更清晰的API文档(类型即文档)更好的IDE自动补全支持代码示例://错误示范:未指定类型导致潜在隐患functionadd(a,b){returna+b;}add('hello',123);//运行时错误但编译期不报错//正确类型标注fun
2025年工业智能对讲机有多智能?数据采集+AI不在话下!
AORO_BEIDOU
人工智能 信息与通信 智能手机 安全 网络
在工业通信领域,对讲机始终是不可替代的即时交互工具。但传统设备仅能实现基础语音传输的局限性,已难以满足现代工业对效率与智能化的需求。遨游通讯推出的新一代智能对讲机,凭借DeepSeek本地化部署与模块化数据采集能力,实现了语音交互的智能升级,并通过红外热成像、NFC、工业内窥镜等专业模块的深度融合,构建起覆盖现场感知、数据分析与决策支持的闭环体系。AOROM55G智能对讲机传统的对讲机往往只能进行
Java小白-Properties类
林深的林
java 数据库
Properties类表示了一个持久的属性集。Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。特点:1.继承于Hashtable,是线程安全的键值对存储结构继承自Hashtable:Properties类继承自Hashtable,而Hashtable是一个古老的线程安全的键值对存储结构。这意味着Properties也继承了线程安全的特性。线程安全:由于继承自
Java小白-Collection集合体系
林深的林
windows python linux
一、Collection集合体系1.核心接口与实现类类型特点实现类底层结构线程安全List有序、可重复、有索引ArrayList动态数组否LinkedList双向链表否Vector动态数组是(同步)Set无序、唯一HashSet哈希表+链表/红黑树否TreeSet红黑树否二、Collection常用API1.添加相关方法方法说明booleanadd(Ee)添加单
Java小白-线程相关
林深的林
java 开发语言
一、线程的创建方式1.继承Thread类通过创建一个类继承Thread类,并重写其run方法,然后在创建该类的实例时启动线程(调用start方法)。示例代码:classMyThreadextendsThread{@Overridepublicvoidrun(){//线程执行的代码}}publicclassMain{publicstaticvoidmain(String[]args){MyThrea
JAVA PTA 7-2 声明图书类,记录图书总册数,利用静态变量赋值。分数 10 作者 强彦 单位 太原理工大学
pta pass
java 开发语言
声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数,记录图书的总册数;在构造方法中,利用静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。输出格式:请输出每本图书对应的书名,书号,书价以及总图书数。输出样例:书名:Java程序设计,书号:1,书价:34.5书名:数据结构,书号:2,书价:44.8书名:C++程序设计,书号:3,书价:35.
正则表达式(1)
林深的林
正则表达式
正则表达式概述正则表达式,又称正规表示法、常规表示法(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式类似于JSON,是一种通用的标准,被各种开发语言所支持,包括但不限于:Java,JavaScript,C,C++,C#,Python,SQL等等;因为在J
【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
奔跑吧邓邓子
商城实战 商城实战 uniapp SpringBoot 后台管理系统
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用uniapp、ElementPlus、SpringBoot搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102章内容层层递进。无论是想深入钻研技术细节,还是探寻商城运营之道,本专栏都能提供从0到1的系统讲解,助力你打造独具竞争力的电商平台,开启电商实战
绿色算力网络构建与智能调度实践
智能计算研究中心
其他
内容概要绿色算力网络的构建需以能效优化为核心,通过智能调度系统实现算力资源的高效整合与动态分配。当前架构设计包含三大核心模块:异构计算集群(涵盖GPU、FPGA及量子计算单元)、跨区域网络互联协议(适配东数西算的传输需求)以及能耗监测平台(基于实时数据建模的碳足迹追踪)。下表示例展示了典型算力节点的关键参数对比:节点类型计算密度(TFLOPS/m²)功耗比(TOPS/W)延迟控制(ms)量子计算集
A800算力部署实战策略
智能计算研究中心
其他
内容概要《A800算力部署实战策略》聚焦于高性能计算集群的全生命周期管理,系统梳理从底层硬件选型到上层软件生态协同的关键技术路径。本书以A800芯片的并行计算特性为切入点,深入探讨算力密度与能效比之间的动态平衡机制,覆盖硬件拓扑优化、分布式任务调度、跨架构编译优化等核心环节。通过模块化设计思路,将复杂的部署流程拆解为可迭代实施的标准化操作单元,为不同规模的计算场景提供灵活适配方案。建议在规划初期建
H800实战应用深度解析endofsentence
智能计算研究中心
其他
内容概要H800作为新一代计算架构的核心组件,其设计理念聚焦于高性能计算与人工智能场景的深度融合。通过模块化异构计算架构,H800实现了计算密度与能效比的突破性提升。下表展示了H800在不同场景下的性能表现对比:场景类型训练速度提升推理延迟降低能效比提升自然语言处理35%22%40%计算机视觉28%18%33%推荐系统41%29%37%资深系统架构师指出:"H800的异构计算架构在模型并行处理方面
MySQL有哪些高可用方案?
java1234_小锋
mysql java 开发语言
大家好,我是锋哥。今天分享关于【MySQL有哪些高可用方案?】面试题。希望对大家有帮助;MySQL有哪些高可用方案?1000道互联网大厂Java工程师精选面试题-Java资源分享网MySQL高可用(HighAvailability,HA)方案主要是通过一系列技术和架构来确保MySQL数据库在出现故障时仍然可以继续提供服务。以下是一些常见的MySQL高可用方案:1.主从复制(Master-Slave
SpringBoot为什么默认使用CGLIB?
java1234_小锋
java java 开发语言
大家好,我是锋哥。今天分享关于【SpringBoot为什么默认使用CGLIB?】面试题。希望对大家有帮助;SpringBoot为什么默认使用CGLIB?1000道互联网大厂Java工程师精选面试题-Java资源分享网SpringBoot默认使用CGLIB(CodeGenerationLibrary)作为代理机制之一,主要是因为CGLIB在一些场景下相比于JDK动态代理具有更好的性能和灵活性,尤其在
如何快速定位慢SQL?
java1234_小锋
mysql java 面试 开发语言
大家好,我是锋哥。今天分享关于【如何快速定位慢SQL?】面试题。希望对大家有帮助;如何快速定位慢SQL?1000道互联网大厂Java工程师精选面试题-Java资源分享网快速定位慢SQL的过程可以通过以下几种方法来实现。这些方法的关键在于尽早识别并分析性能瓶颈,逐步优化SQL查询。1.启用慢查询日志(MySQL为例)慢查询日志是检测慢SQL的一个重要工具。可以启用慢查询日志,记录执行时间超过阈值的查
单机和微服务的区别,微服务有什么问题?数据一致性问题怎么解决?幂等问题怎么解决?
蒂法就是我
微服务 架构 云原生
单机与微服务的区别架构模式:单机架构:整个应用程序部署在一台机器上,通常是一个大型的单体应用。所有的功能模块紧密耦合,难以单独进行升级与扩展。微服务架构:应用程序被拆分为一组小的、独立的服务,每个服务通过API进行通信。服务可以被独立开发、部署和扩展。部署与扩展:单机架构:任何变更都需重新部署整个应用,扩展通常需要增加更强的单一硬件。微服务架构:每个服务可以独立部署,支持快速迭代与独立扩展,容易应
Vue-前端发展史
lengzher_5601
Vue vue.js html css js jsp
文章目录Vue-前端发展史二、前端发展史1、UI框架2、JavaScript构建工具3、三端同一4、后端技术5、主流前端框架混合开发微信小程序Vue-前端发展史二、前端发展史1、UI框架Ant-Design:阿里巴巴出品,基于React的UI框架ElementUI、iview、ice:饿了么出品,基于Vue的UI框架BootStrap:Teitter推出的一个用于前端开发的开源工具包AmazeUI
异常的核心类Throwable
无量
java 源码 异常处理 exception
java异常的核心是Throwable,其他的如Error和Exception都是继承的这个类 里面有个核心参数是detailMessage,记录异常信息,getMessage核心方法,获取这个参数的值,我们可以自己定义自己的异常类,去继承这个Exception就可以了,方法基本上,用父类的构造方法就OK,所以这么看异常是不是很easy
package com.natsu;
mongoDB 游标(cursor) 实现分页 迭代
开窍的石头
mongodb
上篇中我们讲了mongoDB 中的查询函数,现在我们讲mongo中如何做分页查询
如何声明一个游标
var mycursor = db.user.find({_id:{$lte:5}});
迭代显示游标数
MySQL数据库INNODB 表损坏修复处理过程
0624chenhong
tomcat mysql
最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时候,出现Waiting for N instance(s) to be deallocated 信息。查了下,大概就是程序没有对数据库连接释放,导致Connection泄露了。因为用的是开元集成的平台,内部程序也不可能一下子给改掉的,就验证一下咯。启动Tomcat,用户登录系统,用netstat -
剖析如何与设计人员沟通
不懂事的小屁孩
工作
最近做图烦死了,不停的改图,改图……。烦,倒不是因为改,而是反反复复的改,人都会死。很多需求人员不知该如何与设计人员沟通,不明白如何使设计人员知道他所要的效果,结果只能是沟通变成了扯淡,改图变成了应付。
那应该如何与设计人员沟通呢?
我认为设计人员与需求人员先天就存在语言障碍。对一个合格的设计人员来说,整天玩的都是点、线、面、配色,哪种构图看起来协调;哪种配色看起来合理心里跟明镜似的,
qq空间刷评论工具
换个号韩国红果果
JavaScript
var a=document.getElementsByClassName('textinput');
var b=[];
for(var m=0;m<a.length;m++){
if(a[m].getAttribute('placeholder')!=null)
b.push(a[m])
}
var l
S2SH整合之session
灵静志远
spring AOP struts session
错误信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cartService': Scope 'session' is not active for the current thread; consider defining a scoped
xmp标签
a-john
标签
今天在处理数据的显示上遇到一个问题:
var html = '<li><div class="pl-nr"><span class="user-name">' + user
+ '</span>' + text + '</div></li>';
ulComme
Ajax的常用技巧(2)---实现Web页面中的级联菜单
aijuans
Ajax
在网络上显示数据,往往只显示数据中的一部分信息,如文章标题,产品名称等。如果浏览器要查看所有信息,只需点击相关链接即可。在web技术中,可以采用级联菜单完成上述操作。根据用户的选择,动态展开,并显示出对应选项子菜单的内容。 在传统的web实现方式中,一般是在页面初始化时动态获取到服务端数据库中对应的所有子菜单中的信息,放置到页面中对应的位置,然后再结合CSS层叠样式表动态控制对应子菜单的显示或者隐
天-安-门,好高
atongyeye
情感
我是85后,北漂一族,之前房租1100,因为租房合同到期,再续,房租就要涨150。最近网上新闻,地铁也要涨价。算了一下,涨价之后,每次坐地铁由原来2块变成6块。仅坐地铁费用,一个月就要涨200。内心苦痛。
晚上躺在床上一个人想了很久,很久。
我生在农
android 动画
百合不是茶
android 透明度 平移 缩放 旋转
android的动画有两种 tween动画和Frame动画
tween动画;,透明度,缩放,旋转,平移效果
Animation 动画
AlphaAnimation 渐变透明度
RotateAnimation 画面旋转
ScaleAnimation 渐变尺寸缩放
TranslateAnimation 位置移动
Animation
查看本机网络信息的cmd脚本
bijian1013
cmd
@echo 您的用户名是:%USERDOMAIN%\%username%>"%userprofile%\网络参数.txt"
@echo 您的机器名是:%COMPUTERNAME%>>"%userprofile%\网络参数.txt"
@echo ___________________>>"%userprofile%\
plsql 清除登录过的用户
征客丶
plsql
tools---preferences----logon history---history 把你想要删除的删除
--------------------------------------------------------------------
若有其他凝问或文中有错误,请及时向我指出,
我好及时改正,同时也让我们一起进步。
email : binary_spac
【Pig一】Pig入门
bit1129
pig
Pig安装
1.下载pig
wget http://mirror.bit.edu.cn/apache/pig/pig-0.14.0/pig-0.14.0.tar.gz
2. 解压配置环境变量
如果Pig使用Map/Reduce模式,那么需要在环境变量中,配置HADOOP_HOME环境变量
expor
Java 线程同步几种方式
BlueSkator
volatile synchronized ThredLocal ReenTranLock Concurrent
为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法&
StringUtils判断字符串是否为空的方法(转帖)
BreakingBad
null StringUtils “”
转帖地址:http://www.cnblogs.com/shangxiaofei/p/4313111.html
public static boolean isEmpty(String str)
判断某字符串是否为空,为空的标准是 str==
null
或 str.length()==
0
编程之美-分层遍历二叉树
bylijinnan
java 数据结构 算法 编程之美
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class LevelTraverseBinaryTree {
/**
* 编程之美 分层遍历二叉树
* 之前已经用队列实现过二叉树的层次遍历,但这次要求输出换行,因此要
jquery取值和ajax提交复习记录
chengxuyuancsdn
jquery取值 ajax提交
// 取值
// alert($("input[name='username']").val());
// alert($("input[name='password']").val());
// alert($("input[name='sex']:checked").val());
// alert($("
推荐国产工作流引擎嵌入式公式语法解析器-IK Expression
comsci
java 应用服务器 工作 Excel 嵌入式
这个开源软件包是国内的一位高手自行研制开发的,正如他所说的一样,我觉得它可以使一个工作流引擎上一个台阶。。。。。。欢迎大家使用,并提出意见和建议。。。
----------转帖---------------------------------------------------
IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言
关于系统中使用多个PropertyPlaceholderConfigurer的配置及PropertyOverrideConfigurer
daizj
spring
1、PropertyPlaceholderConfigurer
Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。
基本的使用方法是:(1)
<bean id="propertyConfigurerForWZ&q
二叉树:二叉搜索树
dieslrae
二叉树
所谓二叉树,就是一个节点最多只能有两个子节点,而二叉搜索树就是一个经典并简单的二叉树.规则是一个节点的左子节点一定比自己小,右子节点一定大于等于自己(当然也可以反过来).在树基本平衡的时候插入,搜索和删除速度都很快,时间复杂度为O(logN).但是,如果插入的是有序的数据,那效率就会变成O(N),在这个时候,树其实变成了一个链表.
tree代码:
C语言字符串函数大全
dcj3sjt126com
c function
C语言字符串函数大全
函数名: stpcpy
功 能: 拷贝一个字符串到另一个
用 法: char *stpcpy(char *destin, char *source);
程序例:
#include <stdio.h>
#include <string.h>
int main
友盟统计页面技巧
dcj3sjt126com
技巧
在基类调用就可以了, 基类ViewController示例代码
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[MobClick beginLogPageView:[NSString stringWithFormat:@"%@",self.class]];
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
flyvszhb
java jdk
window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法
本机已经安装了jdk1.7,而比较早期的项目需要依赖jdk1.6,于是同时在本机安装了jdk1.6和jdk1.7.
安装jdk1.6前,执行java -version得到
C:\Users\liuxiang2>java -version
java version "1.7.0_21&quo
Java在创建子类对象的同时会不会创建父类对象
happyqing
java 创建 子类对象 父类对象
1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象,
2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the sam
跟我学spring3 目录贴及电子书下载
jinnianshilongnian
spring
一、《跟我学spring3》电子书下载地址:
《跟我学spring3》 (1-7 和 8-13) http://jinnianshilongnian.iteye.com/blog/pdf
跟我学spring3系列 word原版 下载
二、
源代码下载
最新依
第12章 Ajax(上)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
BI and EIM 4.0 at a glance
blueoxygen
BO
http://www.sap.com/corporate-en/press.epx?PressID=14787
有机会研究下EIM家族的两个新产品~~~~
New features of the 4.0 releases of BI and EIM solutions include:
Real-time in-memory computing –
Java线程中yield与join方法的区别
tomcat_oracle
java
长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。
&nb
android Manifest.xml选项
阿尔萨斯
Manifest
结构
继承关系
public final class Manifest extends Objectjava.lang.Objectandroid.Manifest
内部类
class Manifest.permission权限
class Manifest.permission_group权限组
构造函数
public Manifest () 详细 androi
Oracle实现类split函数的方
zhaoshijie
oracle
关键字:Oracle实现类split函数的方
项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。
CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100);
cr