不懂代码,如何做出实时刷新的数据大屏

首先恭喜你,当你看到这篇文章的时候,不管你是小白还是大咖,你都将直接获得一个高级技能:轻松上手可实时刷新的酷炫大屏。

制作可视化大屏,一般有这么几种方案:

  • 写代码调用数据和图表,比如写JS+Echarts ;
  • 直接的数据可视化工具

前者对于大部分人来说门槛较高,而且尤其是大屏需求比较多,比方说要做10个的情况下,亲身试验写代码容易奔溃。如果涉及大量的动态可视化,涉及大数据量,没有底层技术,性能就会大打折扣。而且投到不同尺寸的屏幕,调试起来非常麻烦。

那么有没有一种简单的可视化大屏方案,可以快速的设计样式呈现效果、自适应不同大小的屏幕、而且还可以实时刷新数据?

有,选择后者,直接用数据可视化工具。

市面上能做到直接呈现在LED屏幕的大屏可视化工具并不多,多数需要代码调试,报表工具FineReport和FineBI工具可直接实现,相对来讲FineBI使用更简单,本文也是基于FineBI,来教大家做可实时刷新的数据大屏。

先来看看我们今天即将要教大家做的大屏效果(请接受一波酷炫可视化的冲击!)

image.png

不懂代码,如何做出实时刷新的数据大屏?

1、快速上手学习BI工具

FineBI是一个可视化的自助式BI工具,整个操作就是导数据/连数据库——处理数据(可视化ETL)选择图表——拖数据字段——可视化展现&美化,操作简单上手快。多数情况下,这个工具都是拿来做可视化报表,对接企业大数据平台,做企业数据运营分析用。

2、构建数据模型

掌握了finebi的基础功能:怎么连接数据,怎么趋势,怎么做图表。接下来就到了正式做大屏步骤,先是构建数据模型。

大屏也是有主题的,本质是对一类业务的分析,然后综合展示,比如销售大屏。像这类业务分析一般要用到多张维度表和事实明细表的数据(例如下图中的分公司维度表和合同事实表)。常规操作是将不同业务系统的sql表拼接、宽表拼接,构成一个星型数据模型,需要你有专业的数据仓库技能。那这里化繁为简,可以直接用工具自带的敏捷数据模型去替代上述的工作,原理是自动构建雪花型模型,跨数据源关联。

image.png

搭建好上图的销售demo业务包的数据表和关联模型之后,下一步就可以进行正式的销售管理驾驶舱大屏搭建。

3、大屏布局设计

在给大家介绍具***作过程之前先讲解一下通常管理驾驶舱的布局方式。管理驾驶舱往往展现的是一个企业全局的业务,一般分为主要指标和次要指标两个层次,主要指标反映核心业务,次要指标用于进一步阐述分析。所以在制作时给予不一样的侧重,这里推荐几种常见的版式。

image.png

上面几个版式不是金科定律,只是通常推荐的主次分布版式,能让信息一目了然。实际项目中,不一定使用主次分布,也可以使用平均分布,或者可以二者结合进行适当调整。比如下图所示,指标很多很多,存在多个层级的,就根据上面所说的基本原则进行一些微调,效果会很好。

image.png

4、实际分析制作过程

有了以上的布局设计,每一个模块就单独用一类图表分析一块内容,比如销售分布、签单分布、回款金额分析……整体呈现一个主题(在这里是销售业务)的分析。

那具体如何用工具操作呢?

首先,既然是销售管理驾驶舱,那么我们可以先从领导和高层最为关注的公司签单金额和回款金额入手。对于这样的汇总指标,选择仪表板进行数据展示再合适不过了。选择拖入合同事实表中的合同金额和合同回款表中的回款金额两个指标,样式这里选择圆环仪表盘,同时两个指标的单位都设置成亿,最大刻度输入当前合同金额,2.78亿。这样一来,2.78亿的合同回款,2.25亿的回款金额以及80.87%的总的回款率也就统计出来了,企业的签单金额和回款金额/回款率都一目了然。

image.png

其他部分也是一样的原理,篇幅原因不多介绍,核心是要知道展现哪些数据指标。

5、实时刷新功能

如何做出实时刷新的数据大屏,本篇还有一个重点内容就是大屏的实时刷新功能,也是大家问得比较多的。

所谓实时刷新,即你展示出来的酷炫大屏上面的数据将是动态刷新,能够实时反映数据库中的数据。我们的大屏通常连接着数据库,我们打开报表的时候,会读取数据库中的数据,但数据库中的数据可能是动态变化的,如果要读取变化的数据的话,不需要我们重新打开刷新报表,报表中的数据将动态自动刷新。

FineBI实时刷新的底层技术和性能:

实时刷新的实现所依靠的一个重要支撑,是FineBI自带的FineDirect直连引擎。FineDirect直连引擎给出了数据端到应用端的完整解决方案,支持连接企业已有的大数据计算平台,如Hadoop、Kylin、Greenplum、Vertica等,在充分利用平台计算性能的同时,也解决了TB至PB级超大数据量多维分析的难题。

FineDirect是FineBI推出的大数据直连引擎功能模块,用于更好地处理超大数据量的分析要求和数据源实时性的需求。通过FineDirect直连引擎可以直接对接现有的数据源,无论是传统的关系型数据库(Oracle,Sqlserver),还是日益成熟的Hadoop生态圈,Mpp架构的解决方案,都可以直接进行自助取数分析,实现更敏捷的、更及时的决策分析。

FineDirect引擎核心特点

①PB级别数据量多维分析

FineDirect直连引擎给出了数据端到应用端的完整解决方案,支持连接企业已有的大数据计算平台,如Hadoop、Kylin、Greenplum、Vertica等,在充分利用平台计算性能的同时,也解决了TB至PB级超大数据量多维分析的难题。

②实时大数据分析

FineDirect能够连接实时数据进行分析,及时返回分析结果。基于FineDirect的可视化引擎,可以将用户拖拽分析的操作,实时地转化为经过处理的查询语言,实现对企业数据库实时分析的效果。

③双引擎模式灵活搭配

FineBI已有FineIndex引擎(原cube)和新的FineDirect直连引擎可以搭配使用,来满足不同的应用场景。企业可以根据实际需求的不同准备两种类型的数据,通过FineIndex模式配置那些不经常更新、实时性要求不高的数据;通过FineDirect直连引擎配置大数据量且有实时分析需求的数据,双管齐下。

最后,如果对大屏制作感兴趣,可以下载FineBI体验下~


关注公众号,了解更多it技术(it问答网

【简答题】JavaWeb必问8道简答题

1、说一说Servlet生命周期

servlet的生命周期是初始化(init)、服务(service)、销毁(destroy)

1.初始化(init):当第一次访问Servlet时调用init方法进行初始化,只初始化一次

2.服务(service):方法被调用时调用service方法进行服务,在项目启动期间可以进行多次服务

3.销毁(destory):当服务器关闭时调用destory方法进行销毁。只销毁一次

2、什么是jsp?jsp和Servlet有什么区别?

Servlet是服务器端的程序

JSP是服务器页面程序

JSP本质上就是一个Servlet,在访问jsp时,在服务器端会将jsp先转换成servlet,再将生产的servlet的结果响应给浏览器。

jsp相当于html页面中内嵌Java代码,侧重页面显示;Servlet是中书写Java代码,侧重逻辑控制;

3、Servlet接口中有哪些方法?

1.init(ServletConfig):初始化方法,第一次请求前执行,完成servlet初始化工作

2.service(ServletRequest,ServletResponse):执行方法,一次请求执行一次。

3.destroy():销毁方法,Servlet对象应该从服务中被移除的时候,容器会调用该方法进行销毁操作

4.getServletConfig():获得ServletConfig配置对象,包括初始化参数等。

5.getServletInfo():获得Servlet描述,一般没有用。

4、什么情况下调用doGet()和doPost()?

1、doGet():地址栏url方式访问、超链接访问、以及form表单中的method属性值为get方式访问,则调用doGet()方法

2、doPost():form表单中的method属性值为post方式访问,则调用doPost()方法

5、get请求和post请求有何区别

1. 表现形式:get在url中拼凑请求参数。Post请求参数在请求体中;

2. 安全性:get请求参数追加在路径上,可见不安全,post请求参数在请求体中,一般人不可见,较安全。

3. 数据大小:get提交数据有限,post无限。

6、forward和redirect的区别

1.地址栏是否改变:forward浏览器端网址不会发生变化,redirect浏览器端地址会变成;

2.是否可共享请求参数:forward是转发,属于同一个请求,request域中的数据可以传递;redirect是两次请求,request域中的数据不能传递;

3.是否可站外跳转:forward一般用于网站内部跳转,redirect可在站内跳转,也可跳转到其它网站。

7、JSP九大内置对象

1.request:请求对象

2.response:响应对象

3.session:回话对象

4.pageContext:页面上下文对象

5.application:类型是ServletContext,表示servlet上下文对象,可以在整个web项目中共享资源。

6.out  输出对象

7.page JSP网页本身

8.config Servlet的配置对象

9.exception 异常对象

8、讲解JSP中的四种作用域。

application:在当前web项目中有效

session:在当前会话中有效

request:在当前请求中有效

page:在当前页面有效


关注公众号,了解更多it技术(it问答网

restcontroller和controller区别

1. Controller, RestController的共同点

都是用来表示Spring某个类的是否可以接收HTTP请求

2.  Controller, RestController的不同bai点

@Controller标识一个Spring类是Spring MVC controller处理器

@RestController:  a convenience annotation that does nothing more than adding the@Controller and@ResponseBody annotations。  @RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。

3、如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到success.jsp页面的,则其显示success.

4、如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。

5、如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。


关注公众号,了解更多it技术(it问答网

js打字机效果

<!DOCTYPE html>
<html lang=”en”>
<head>
<metacharset=”UTF-8″/>
<title>Title</title>
</head>
<body>
<divid=”text”></div>
</body>
<script>
letdivTyping = document.getElementById(‘text’)
leti = 0,
timer = 0,
str =
‘xuduowei.com用JS实现动态打字效果,setTimeout定时器知识可参看 https://www.itwenda.com/course/js/js-ji-shi-qi’
functiontyping() {
if (i <= str.length) {
divTyping.innerHTML = str.slice(0, i++) + ‘_’
//  指定时间之后执行代码
timer = setTimeout(typing, 100)
} else {
divTyping.innerHTML = str//结束打字,移除 _ 光标
//取消由 clearTimeout() 设定的定时操作
clearTimeout(timer)
}
}
typing()
</script>
</html>

关注公众号,了解更多it技术(it问答网

vue学习篇–组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state原因

在组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state?
1、为了保证数据时单向流动的,只能在store中操作数据,而组件只能够使用状态,不能修改。

mutations中必须是同步操作,而在actions中可以有异步操作,
所有mutations才能操作state,如果actions中能操作state的话,数据会变得难以管理

mutations中的数据变化是可以被vue的开发工具vue-devTools观测到。 actions中的数据变化是不可以被vue的开发工具vue-devTools观测到。
所以需要在mutations中做操作。

 

2、什么时候应vuex:

多个组件共享数据,中大型项目。

 


关注公众号,了解更多it技术(it问答网

如何在VC运行环境下不出现press any key to continue

如何在VC运行环境下不出现press any key to continue
(如何在DOS系统中不是立刻结束执行)
方法:在程序末尾加一个getch(); 注意加头文件conio.h

解析:

getch():

所在头文件:conio.h

函数用途:从控制台读取一个字符,但不显示在屏幕上

函数原型:int getch(void)

返回值:读取的字符

例如:

char ch;或int ch;

getch();或ch=getch();

用getch();会等待你按下任意键,再继续执行下面的语句;

用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。

#include<stdio.h>
#include<math.h>
void main()
{
printf(“www.itwenda.com”);
getch();
}


关注公众号,了解更多it技术(it问答网

stp中根桥,根端口,指定端口,备用端口分别是什么?

指定端口是交换机向所连网段转发配置BPDU的端口, 每个网段有且只能有一个指定端口。 一般情况下, 根桥的每个端口总是指定端口

根端口是非根交换机去往根桥路径最优的端口。 在一个运行STP协议的交换机上最多只有一个根端口, 但根桥上没有根端口。如果一个端口既不是指定端口也不是根端口, 则此端口为预备端口。 预备端口将被阻塞。

扩展资料:

注意事项:

交换机通电启动后,还不知道网络中有没有别人,所以认为是根桥,并把这个消息通过BPDU通告出去,每台交换机也会收到其他交换机发来的BPDU,比较一下其中的BID,即可选举出根桥。

根桥选出后,其他交换机都可以叫指定桥。指定桥不再主动发出BPDU,只会转发根桥的BPDU。根桥每间隔Hello Time(默认2秒)时间周期性发出BPDU。


关注公众号,了解更多it技术(it问答网

stp中选举根端口时需要考虑以下哪些参数

STP中选举根端口时需要考虑以下:端口优先级、端口到达根交换机的Cost、端口槽位编号,如G0/0/1。

STP协议利用BPDU中三个Field――路径开销、网桥ID、端口优先级/端口ID来确定到根桥的最佳路径顺序:

路径开销:所有端口开销的综合为路径开销,路径开销低的端口为转发端口。网桥ID:同一个交换机上有两条链路达到根桥(如平行链路),那么最佳路径就由下面的端口优先级或端口ID决定

端口优先级/端口ID:端口优先级范围0~63,缺省值32,具有低优先级的端口将转发数据。如果端口优先级相同,端口ID则是决定因素,低端口ID将转发数据。

扩展资料

STP 端口状态

Disable – 被关闭的端口,Blocking – 初始状态或是被 STP 阻塞状态,该状态停留 Max Age,始终只能收到 BPDU,如果 Max Age 都没有收到 BPDU,就转到 Listening 状态

Listening – 收发 BPDU,以确信在传输数据帧时网络无环路,停留 Forward Delay

Learning – 收发 BPDU,学习 MAC 地址,但不转发数据帧,停留 Forward Delay

Forwarding – 除非不存在环路,并且确定它是到达根交换机的最佳路径,不然永远不会进入该状态。

 


关注公众号,了解更多it技术(it问答网

TTL值

TTL 即 Time To Live,缓存的生存时间。TTL是一个ip协议的值。IP协议中TTL值是数据包的一个生命周期,每当经过一次路由转发时都会减一,当减到0时,数据包将会丢弃,丢弃者会发送一个ICMP数据包,通知发送者,主要用来防止出现路由环路时,数据包无限循环转发,而造成网络拥堵,这个值使用一个字节表示,也就是最大只有255,如果两个通讯者之间经过的路由超过255时,它是不能通过IP进行通讯的。

这个值还用来探测路径,数据包的TTL值从1开始,一个一个增加,直到到达对方,这样通过标识回应者,就可以知道整个传输路径了,Windows中的命令为tracert,就是使用的这种机制。

ARP设置TTL值 高速缓存是为了加快IP到MAC地址查询的速度。

TTL(Time To Live)生存时间,也就是服务器允许数据在缓存中存放的时间。该值设置的过小,数据更新的更频繁,数据在网络中的一致性就越高,但是这样增加了服务器的负担,使得名字解析时间变长,TTL越大名字解析时间就越短,但是数据在缓存中存放的时间过长,缓存中的数据可能过时,跟服务器上的数据不一致。

TTL指定数据包被路由器丢弃之前允许通过的最大网段数量,是IP数据包在网络中可以转发的最大跳数(跃点数),TTL位于IPv4包的第9个字节,是一个8 bit字段。,它告诉网络,数据包在网络中的时间是否太长而应被丢弃

由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数

TTL的最大值是255,推荐值是64,windows中TTL默认值保存在注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下的DefaultTTL(DWORD)中,修改设置后重启才生效。(修改可以有效防止被人推测到操作系统)

TTL值默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的默认TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

TTL(Time-To-Live)的作用是限制数据包在网络中存在的时间,防止数据包不断的在IP互联网络上循环。

作者:楊志栋
链接:https://www.jianshu.com/p/edb3ac63d1cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


关注公众号,了解更多it技术(it问答网

ipv4首部长度最大值是多少?

最大值是60字节。

占4位,可表示的最大数值是15个单位(一个单位为4字节)因此IP的首部长度的最大值是60字节 区分服务: 占8位,用来获得更好的服务,在旧标准中叫做服务类型。

但实际上一直未被使用过.1998年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段。

网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。

IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。

发展历史:

IPv4在IETF于1981年9月发布的 RFC 791 中被描述,此RFC替换了于1980年1月发布的 RFC 760。

IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商。


关注公众号,了解更多it技术(it问答网