Apache Impala 4.1概览
自从Impala 4.0发布后,历时近11个月,Impala 4.1终于发布了!新版本在Iceberg集成、Catalog优化、Parquet/ORC读取性能、嵌套类型等方面都有较大进展。限于个人认知和篇幅有限,本文只能挑些重要功能进行介绍,详细更新列表可见 Change Log-4.1.
1. Iceberg集成
Impala-4.1开始正式支持Apache Iceberg。Iceberg是开源的table format,具有以下几个特性:
ACID保证:DML都是原子操作,查询都访问一致的snapshot
隐藏分区:不像传统的Hive表用文件目录来表示分区值,Iceberg表的分区值由列值转换而来,分区信息保存在metadata文件中。reader不需要知晓分区的定义,Iceberg会推断出查询所需的文件。
分区演化:分区的定义可以灵活更改,得益于隐藏分区,这种更新不需要重写数据文件,只需要生成新的metadata文件
表格式演化:新增、删除、更新列的定义都没有副作用,如不需要重写数据文件
版本回溯(Time travel):查询可以访问特定的一个数据版本
下面的例子演示了如何在Impala中使用Iceberg表: 目前Impala只支持Iceebrg V1类型的DML操作,即insert into/insert overwrite。Iceberg V2类型的操作如行级别的修改(update, delete)仍未支持。更多细节可查看文档:Using Impala with Iceberg Tables
2. Parquet优化
Impala支持多种文件格式,如Parquet、ORC、Avro、Text等,其中Parquet格式的支持是性能最好的,做了比较多的优化,Impala-4.1在这方面又有不少改进。
2.1 延迟物化(Late Materialization)
Parquet Scanner的工作主要包含数据读取、解压、解码和执行下推的谓词等。当有谓词下推时,可以先读取相关列的数据,过滤得到所需要的行号后,再去相应地读取其它列。在谓词选择性高的场景下,可以有数倍的性能提升,具体可查看 IMPALA-9873。
2.2 文件Bloom Filter
Parquet文件是自解释的文件,包含了schema和索引信息(如各列min-max值),其中的索引就包含可选的Bloom Filter。Impala-4.1开始支持读写Parquet文件中的Bloom Filter,下推的等值谓词能作用在文件的Bloom Filter上。(IMPALA-10640, IMPALA-10642)
2.3 文件字典(Dictionary)
Parquet文件的列可以使用字典编码,下推的谓词(Predicate/Filter)会先作用在字典上,以过滤无用的RowGroup,从而减少读取的数据量。Runtime Filter是在运行时生成的谓词,由hash join的hash表生成而来,下推到scanner提前过滤数据。
从Impala-4.1开始,Runtime Filter也会作用在字典上,前提是字典不能太大,超过一定大小将不启用此优化。这个阈值由查询选项PARQUET_DICTIONARY_RUNTIME_FILTER_ENTRY_LIMIT 控制,默认为1024。
2.4 Decimal兼容性
支持高精度类型Decimal读取的schema兼容性,即当Parquet文件的Decimal列与表字段定义的precision或scale不一致时,可兼容性地读取。(IMPALA-7087, IMPALA-8131)
3. ORC优化
Impala在ORC文件的读取方面(即ORC Scanner)集成的是第三方的ORC C++ Reader,虽然易于维护,但不像内建的Parquet Scanner那样更方便做性能优化。Impala-4.1在ORC读取方面做了不少优化,旨在缩小Parquet Scanner和ORC Scanner间的性能差距。比如下推谓词和Runtime IN-list Filter到ORC Reader,ORC Reader的异步数据读取,ORC Scanner和ORC Reader的代码优化等。许多场景下已经能做到接近读Parquet的性能。
下面列出部分JIRA:
IMPALA-6505: Min-Max predicate push down in ORC scanner
IMPALA-10894: Pushing down predicates in reading "original files" of ACID tables
IMPALA-10873: Push down EQUALS, IS NULL and IN-list predicate to ORC reader
IMPALA-6636: Use async IO in ORC scanner
IMPALA-10898: Add runtime IN-list filters for ORC tables
IMPALA-11204: Template implementation for OrcStringColumnReader::ReadValue
IMPALA-11123: Optimize count(star) for ORC scans
更多细节详见Epic: https://issues.apache.org/jira/browse/IMPALA-9040 (登陆JIRA以查看所有item)
4. Catalog优化
4.1 event-processor的改进
Event processor是catalogd中的组件,用来自动同步Hive MetaStore中的元数据更新,让用户不必使用Refresh或Invalidate Metadata
语句来手动同步。Impala-4.1中有以下改进
优化了对create/drop类型事件的处理逻辑,当对同一对象(db/table/partition)反复Create/Drop时,Impala元数据不会出现短暂不一致的现象。(IMPALA-10468、IMPALA-10502)
优化了对同一个表的连续多个partition事件(ALTER_PARTITION、INSERT partition)的处理,它们会被当成一批统一处理(之前是逐一处理)。Event processor只需要获取一次表锁,并且可以并行refresh变动的partition。(IMPALA-9857)
这极大优化了大表变动时的同步性能,我们实验了在Hive中对一个大表的Insert操作,总共产生了1824个ALTER_PARTITION和1824个INSERT event,同步到Impala中的时长如下 外表(External Table):优化前75秒,优化后25秒 内表(ACID Table):优化前313秒,优化后47秒
优化了事务表的partition事件处理,可以增量更新有变动的分区,在大表上的同步时间可以降低几个数量级(IMPALA-10923)
优化了对ALTER_PARTITION事件的处理,只按需刷新文件元信息(IMPALA-11050)
4.3 其它Catalog改进
支持在单文件上建只读表(见6.2)。
Catalogd的慢请求和大请求会打出warning日志,有利于排查异常请求。(IMPALA-10702)
5. 嵌套类型 5.1 直接在SelectList使用Struct或Array类型 从Impala-4.1开始,SelectList里可以直接使用Struct或Array类型的列,结果将以JSON的形式转换成字符串,表现与Hive兼容。具体可见 IMPALA-9495、IMPALA-9498.
5.2 使用UNNEST()进行Array类型的行转列 Impala语法不支持Hive中的Lateral View,需要用join来展开array和map。Impala-4.1引入了和Postgresql兼容的UNNEST()函数,以方便进行array的展开(暂未支持map)。具体可见 IMPALA-10920、IMPALA-11038.
6. 其它进展 6.1 新增函数
所有字符串函数支持UTF-8编码,即在长度统计、大小写转换等函数里不再以字节为单位进行处理,而是以字符为单位。由于该功能与老版本不兼容,因此是默认关闭的,需要使用查询选项 set UTF8_MODE=true打开该功能。(IMPALA-2019)
新增 sha1、sha2、md5等内建哈希函数(IMPALA-10679、IMPALA-10730)
新增DataSketches函数ds_cpc_sketch, ds_cpc_estimate, ds_cpc_union, ds_cpc_stringify, ds_cpc_union_f 等(IMPALA-10282、IMPALA-10687、IMPALA-10688、IMPALA-10689)
新增BYTES函数统计字符串字节占用(IMPALA-955)
6.2 新增语句
支持Alter table unset tblproperties/serdeproperties 语句(IMPALA-5569)
支持用单个文件建表(只读),方便用Impala/Hive对单个文件进行分析(IMPALA-10934),需要Hive版本包含HIVE-25569(如Hive 4.0.0, 4.0.0-alpha-1)。建表语句里只需要在location前加 “sfs+”,如
CREATE EXTERNAL TABLE test_file ( s STRING, i INT )
STORED AS PARQUET
LOCATION 'sfs+hdfs:///tmp/data.paq' ;
6.3 impala-shell连接HiveServer2 Impala-4.1中的impala-shell支持使用hs2 protocol连接HiveServer2,直接提交Hive查询。命令行参数使用--strict_hs2_protocol
,如
impala-shell.sh --strict_hs2_protocol -i hs2-host:10000
详见 IMPALA-10778: Allow impala-shell to connect directly to HS2
6.4 Spill to HDFS Impala在计算内存不足时,会溢写中间数据到本地磁盘中。Impala-4.0开始支持溢写到S3,在云上部署时不需要配置大存储的节点。从Impala-4.1开始,溢写目录可以配置到HDFS上,溢写空间不再受限于本地磁盘容量,更有利于存储计算分离。(IMPALA-10429)
6.5 Planner改进 在基数(cardinality)估计方面有不少改进,如
IMPALA-10681: Improve inner join cardinality estimates
IMPALA-7560: Set selectivity of Not-equal
IMPALA-10766: Better selectivity for =,not distinct
也优化了inline view相关的查询计划生成性能
IMPALA-10799: Analysis slowdown with inline views and thousands of column
IMPALA-10806: Create single node plan slowdown when hundreds of inline views are joined
6.6 自适应的三路快排 Impala使用快速排序算法对内存里的数据进行排序,当数据重复度较高时,三路快排会更优于传统的两路快排。Impala-4.1开始,排序算子会根据处理的数据自适应地调整排序算法。(IMPALA-10961)
6.7 优化了Timestamp类型到String类型的转换性能 在使用cast(… as string)或 from_unixtime() 将Timestamp类型转换为String类型时,性能有近十倍的提升。(IMPALA-10984)
7. 致谢 欢迎加微信号China_Impala进入Impala社区微信群,有任何Impala相关的问题都可以在群里讨论。
最后感谢所有为Impala-4.1贡献过代码的社区开发者!他们是 Abhishek Rawat Alexander Saydakov Alexey Serbin Aman Sinha Amogh Margoor Andrew Sherman Attila Jeges Bikramjeet Vig Carolin Chen Csaba Ringhofer Daniel Becker Deepti Sehrawat Fang-Yu Rao Fucun Chu Gabor Kaszab Gergely Fürnstáhl Guojing Feng Joe McDonnell Kishen Das Lipeng Lin (LPL) Liu Yao Michael Smith Noemi Pap-Takacs Norbert Luksa Pranav Lodha Qifan Chen Quanlong Huang (stiga-huang) Riza Suminto Shajini Thayasingh Sheng Wang (skyyws) Shikha Asrani Sourabh Goyal Steve Carlin Tamas Mate Vihang Karajgaonkar Wei-Chiu Chuang Wenzhe Zhou (wzhou-code) Xiang Yang (yx91490) Xianqing He (xqhe) Yida Wu Yong Yang Yu-Wen Lai Zoltan Borok-Nagy Zoltan Garaguly Zoltan Haindrich
你可能感兴趣的:(Impala,apache,impala)
安装配置MAVEN
ByteVoyager
maven java
安装配置MAVEN1.获取安装包下载apache-maven-3.8.1-bin.zip,下载地址:https://archive.apache.org/dist/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.zip。2.解压maven压缩包3.配置maven环境变量新建环境变量MAVEN_HOME:右击【此电脑】->【属性】->【高级系统
2025年全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽安全-黑客4148
安全 web安全 网络 网络安全 CTF
目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15天)4.3、后期五、CTF学习资源5.1、CTF赛题复现平台5.
2025年全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
白帽安全-黑客4148
网络安全 web安全 linux 密码学 CTF
目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、SQL注入(7-8天)2、文件上传(7-8天)3、其他漏洞(14-15天)4.3、后期五、CTF学习资源5.1、CTF赛题复现平台5.
zookeeper从入门到精通
小四的快乐生活
zookeeper 分布式 云原生
一、入门基础1.1什么是ZooKeeperZooKeeper是一个开源的分布式协调服务,由雅虎创建,后成为Apache的顶级项目。它为分布式应用提供了高效、可靠的协调服务,例如统一命名服务、配置管理、分布式锁、集群管理等。ZooKeeper的数据模型类似文件系统,以树形结构存储数据,每个节点称为Znode,每个Znode可以存储数据和子节点。1.2安装与启动下载ZooKeeper:从ApacheZ
前端504错误分析
ox0080
# 北漂+滴滴出行 Web VIP 激励 前端
前端出现504错误(网关超时)通常是由于代理服务器未能及时从上游服务获取响应。以下是详细分析步骤和解决方案:1.确认错误来源504含义:代理服务器(如Nginx、Apache)在等待后端服务响应时超时。常见架构:前端→代理服务器→后端服务,问题通常出在代理与后端之间。2.排查步骤(1)检查后端服务状态确认服务是否运行:通过日志或监控工具(如systemctlstatus,KubernetesPod
【2025年】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!
网安詹姆斯
web安全 CTF 网络安全大赛 python linux
【2025年】全国CTF夺旗赛-从零基础入门到竞赛,看这一篇就稳了!基于入门网络安全/黑客打造的:黑客&网络安全入门&进阶学习资源包目录一、CTF简介二、CTF竞赛模式三、CTF各大题型简介四、CTF学习路线4.1、初期1、html+css+js(2-3天)2、apache+php(4-5天)3、mysql(2-3天)4、python(2-3天)5、burpsuite(1-2天)4.2、中期1、S
MapReduce 读取 Hive ORC ArrayIndexOutOfBoundsException: 1024 异常解决
一张假钞
mapreduce hive 大数据
个人博客地址:MapReduce读取HiveORCArrayIndexOutOfBoundsException:1024异常解决|一张假钞的真实世界在MR处理ORC的时候遇到如下异常:Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:1024atorg.apache.orc.impl.RunLengthIntegerRe
Airflow DAG的调度时间探秘
t0_54coder
编程问题解决手册 个人开发
引言在数据工程和ETL(Extract,Transform,Load)流程中,ApacheAirflow是一个非常流行的工作流调度工具。Airflow通过DAG(DirectedAcyclicGraph)来定义任务依赖和调度策略。然而,调度时间的设置有时会让新手甚至经验丰富的用户感到困惑。本文将通过一个实际的案例来探讨Airflow中DAG的调度时间设置,帮助读者理解并解决常见的调度问题。背景介绍
使用 Docker 部署 Apache Spark 集群教程
努力的小T
docker docker spark linux 运维 服务器 云计算 容器
简介ApacheSpark是一个强大的统一分析引擎,用于大规模数据处理。本文将详细介绍如何使用Docker和DockerCompose快速部署一个包含一个Master节点和两个Worker节点的Spark集群。这种方法不仅简化了集群的搭建过程,还提供了资源隔离、易于扩展等优势。前置条件在开始之前,请确保你的环境中已经准备好了以下组件:安装并运行DockerEngine。安装DockerCompos
【TVM教程】为 x86 CPU 自动调优卷积网络
ApacheTVM是一个深度的深度学习编译框架,适用于CPU、GPU和各种机器学习加速芯片。更多TVM中文文档可访问→https://tvm.hyper.ai/作者:YaoWang,EddieYan本文介绍如何为x86CPU调优卷积神经网络。注意,本教程不会在Windows或最新版本的macOS上运行。如需运行,请将本教程的主体放在if__name__=="__main__":代码块中。impor
Springboot项目瘦身:将jar包与lib依赖分开打包
William-Yu
笔记 spring boot jar
方法一:项目和依赖完全分离maven-jar-plugin负责生成jar文件(jar文件中不包含如何依赖),并为jar文件的manifest.mf文件配置相关内容;maven-dependency-plugin插件用于在构建时将项目的运行时依赖项复制到指定目录。部署项目时,生产的jar文件要和lib依赖包在同一目录下。${project.artifactId}org.apache.maven.pl
maven打包依赖lib与程序jar分离
友发小猿
maven jar java spring boot tomcat
maven打包依赖lib与程序jar分离打包配置查看运行打包配置org.apache.maven.pluginsmaven-jar-plugin引入,否则程序运行时在不到jar依赖-->lib/bcprov-1.0.jarlib/jacob-1.0.jarlib/jave-1.0.2-1.0.jar-->lib/jave-1.0.2-1.0.jarfalse
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
因我你好久不见
java spring boot ffmpeg
用到的maven依赖:lombok依赖就不贴出来了org.bytedecoffmpeg-platform4.3.2-1.5.5org.apache.commonscommons-lang33.12.0cn.hutoolhutool-all5.5.2工具类:importcn.hutool.core.io.IoUtil;importlombok.extern.slf4j.Slf4j;importorg
正式开源:使用Kafka FDW 加载数据到 Apache Cloudberry™
数据库开源软件
ApacheCloudberry™(Incubating)由GreenplumDatabase核心开发者创建,是一款领先且成熟的开源大规模并行处理(MassivelyParallelProcessing,MPP)数据库。它基于开源版的PivotalGreenplumDatabase®衍生而来,但采用了更新的PostgreSQL内核,并具备更先进的企业级功能。Cloudberry可以作为数据仓库使用
如何发起http的请求,在系统中集成
红豆和绿豆
java http 网络协议 网络
在Java中发起HTTP请求,有多种开源框架可供选择。以下是一些常用的开源框架及其特点:1.ApacheHttpClientApacheHttpClient是一个功能强大的HTTP客户端库,支持同步和异步请求,广泛用于各种Java应用。2.OkHttpOkHttp是一个高效的HTTP客户端,支持HTTP/2和WebSocket,具有自动重试和恢复功能。3.UniRestUniRest是一个简单易用
Hive的ReduceJoin/MapJoin/SMBJoin
for your wish
Hive 面试Interview hive hadoop
Hive中就是把Map,Reduce的Join拿过来,通过SQL来表示。参考链接:LanguageManualJoins-ApacheHive-ApacheSoftwareFoundation1.Reduce/Common/ShuffleJoinReduceJoin在Hive中也叫CommonJoin或ShuffleJoin它会进行把相同key的value合在一起,正好符合我们在sql中的join
揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界
寒水馨
Linux问题解决方案 服务器 linux 智能家居
揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界文章目录揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界引言:Linux,不仅仅是一个操作系统Linux在企业级应用中的霸主地位云计算与虚拟化:Linux的天下大数据与人工智能:Linux的助推器Web服务器:Apache和Nginx的最佳搭档Linux在移动和嵌入式设备中的崛起Android:Linux的最成功衍生品物联网(
【Spring Boot 实现 PDF 导出】
web14786210723
面试 学习路线 阿里巴巴 spring boot pdf 后端
SpringBoot实现PDF导出在SpringBoot应用程序中实现PDF导出功能,可以选择多种库和技术栈。每种方法都有其优缺点,适用于不同的场景。以下是四种常见的方式:iText、ApachePDFBox、JasperReports和Thymeleaf+FlyingSaucer。我将详细对比这些方法,并提供相应的代码示例。1.iText优点:丰富的API:支持复杂的PDF操作,如加密、数字签名
探索大数据处理:利用 Apache Spark 解锁数据价值
Echo_Wish
实战高阶大数据 apache spark 大数据
探索大数据处理:利用ApacheSpark解锁数据价值大家好,我是你们熟悉的大数据领域自媒体创作者Echo_Wish。今天,我们来聊聊如何利用ApacheSpark进行大规模数据处理。ApacheSpark作为一个快速、通用的集群计算框架,以其出色的性能和丰富的API,成为大数据处理的利器。那么,ApacheSpark究竟如何帮助我们高效处理海量数据?接下来,让我们一起深入探讨。一、ApacheS
flink核心特性
24k小善
flink 大数据 java 架构
ApacheFlink核心特性详解一、流处理与批处理的统一Flink的核心设计理念之一是将流处理和批处理统一在一个框架中。这种统一性使得Flink在处理实时数据和批量数据时具有高度的灵活性和一致性。1.流处理与批处理的统一计算引擎流处理作为批处理的特例:Flink将批处理视为有限流(FiniteStream),从而实现了流处理和批处理的统一。统一API:Flink提供了DataStream和Dat
flink反压详解
24k小善
flink 架构 大数据 AI编程
Flink背压/反压(Backpressure)详解在ApacheFlink中,背压(Backpressure)是一个常见的性能问题,通常表现为数据流在某些节点处积压,导致整体处理速度下降甚至停滞。背压的发生可能源于硬件资源限制、任务逻辑复杂性、数据分布不均或外部系统瓶颈等因素。本文将从多个角度详细讲解Flink的背压问题,包括其成因、影响以及解决方案。一、什么是Flink背压?背压是指在数据流处
最新Apache Hudi 1.0.1源码编译详细教程以及常见问题处理
Toroidals
大数据组件安装部署教程 hudi1.0.1 源码编译 教程 最新
1.最新ApacheHudi1.0.1源码编译2.Flink、Spark、Hive集成Hudi1.0.13.flinkstreaming写入hudi目录1.版本介绍2.安装maven2.1.下载maven2.2.设置环境变量2.3.添加Maven镜像3.编译hudi3.1.下载hudi源码3.2.修改hudi源码3.3.修改hudi-1.0.1/pom.xml,注释或去掉410行内容3.4.安装c
Nexus私服仓库本地推送401错误
fengdongnan
intellij-idea java ide
1.报错信息:Failedtoexecutegoalorg.apache.maven.plugins:maven-deploy-plugin:2.7:deploy(default-deploy)onprojectmaven-01-parent:Failedtodeployartifacts:Couldnottransferartifactorg.example:maven-01-parent:po
Log4j在Spring项目中的应用与实践
t0_54program
log4j spring java 个人开发
在现代Java开发中,日志记录是不可或缺的一部分。它不仅帮助开发者调试和监控应用程序的运行状态,还能在出现问题时快速定位原因。今天,我们就来探讨如何在Spring项目中使用Log4j进行日志管理,并通过具体的实例来展示其强大的功能。一、Log4j简介Log4j是Apache提供的一个开源日志框架,广泛应用于Java项目中。它提供了灵活的日志记录方式,支持多种日志级别和输出格式。通过配置文件,开发者
Docker技术学习指南:从入门到实践
小码快撩
docker 容器 运维
引言Docker是一款开源的应用容器引擎,起源于2013年,基于Go语言开发,并遵循Apache2.0协议进行开源发布。它的出现是为了解决软件交付过程中的“环境一致性”问题,通过将应用及其依赖打包成可移植、轻量级的容器(Container),确保应用在任何地方运行都能得到一致的行为和性能。一、Docker基础概念与安装:Docker基础概念1.镜像(Image)镜像是Docker容器的构建块,它是
【异常】SpringAI提示 Failed to download spring-ai-core 无法解析 org.springframework.ai:spring-ai-core:1.0.0-M3
本本本添哥
002 - 进阶开发能力 013 - AIGC 人工智能 大模型 spring 人工智能 java
一、报错内容[WARNING]Failedtodownloadspring-ai-core-1.0.0-M3.jar[https://repo.spring.io/milestone/][WARNING]Failedtodownloadspring-ai-core-1.0.0-M3.jar[https://repo.maven.apache.org/maven2/]无法解析org.springfr
一台服务器最多可以允许多少人同时访问?IIS连接数如何计算?
网硕互联的小客服
服务器 运维 windows linux
一台服务器能够同时允许多少人访问,取决于多个硬件和软件配置因素,包括服务器的CPU、内存、网络带宽、磁盘I/O性能,以及使用的Web服务器软件(如IIS、Apache等)和应用架构。特别是对于使用IIS(InternetInformationServices)的服务器,最大连接数通常受Windows操作系统的版本、IIS配置和硬件资源等因素的限制。1.服务器允许的最大连接数的影响因素1.1服务器硬
DolphinScheduler环境搭建、服务启动等常见问题及解决方案
数据库
ApacheDolphinScheduler作为一款分布式易扩展的工作流调度系统,广泛应用于大数据任务编排。然而,在实际使用中,用户可能会遇到环境搭建、服务启动、工作流执行等问题。本文结合社区文档与用户实践经验,整理以下高频问题及详细解决方案,帮助用户快速定位并解决问题。一、安装与部署问题环境依赖配置错误问题:部署时因缺少JDK、Maven或数据库配置导致失败。解决方案:安装JDK1.8+并配置J
别再瞎摸索!POI 操作 Excel 轻松添加下拉框
后端
POI操作EXCEL增加下拉框依赖org.apache.poipoi4.1.2org.apache.poipoi-ooxml4.1.2有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择采用隐藏sheet页的方式来进行操作StringsheetName="supplier_hidden_sheet";HSSFSheetsupplierShe
使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统
Java猿_
mysql 数据库
1.项目设置首先,确保你的项目已经配置好Maven或Gradle依赖管理工具,并添加以下依赖:Maven依赖org.apache.shiroshiro-core1.9.0org.apache.shiroshiro-web1.9.0org.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-java8.0.26or
mondb入手
木zi_鸣
mongodb
windows 启动mongodb 编写bat文件,
mongod --dbpath D:\software\MongoDBDATA
mongod --help 查询各种配置
配置在mongob
打开批处理,即可启动,27017原生端口,shell操作监控端口 扩展28017,web端操作端口
启动配置文件配置,
数据更灵活
大型高并发高负载网站的系统架构
bijian1013
高并发 负载均衡
扩展Web应用程序
一.概念
简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:
1.
DISPLAY变量和xhost(原创)
czmmiao
display
DISPLAY
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:DISPLAY=:0.0
获取B/S客户端IP
周凡杨
java 编程 jsp Web 浏览器
最近想写个B/S架构的聊天系统,因为以前做过C/S架构的QQ聊天系统,所以对于Socket通信编程只是一个巩固。对于C/S架构的聊天系统,由于存在客户端Java应用,所以直接在代码中获取客户端的IP,应用的方法为:
String ip = InetAddress.getLocalHost().getHostAddress();
然而对于WEB
浅谈类和对象
朱辉辉33
编程
类是对一类事物的总称,对象是描述一个物体的特征,类是对象的抽象。简单来说,类是抽象的,不占用内存,对象是具体的,
占用存储空间。
类是由属性和方法构成的,基本格式是public class 类名{
//定义属性
private/public 数据类型 属性名;
//定义方法
publ
android activity与viewpager+fragment的生命周期问题
肆无忌惮_
viewpager
有一个Activity里面是ViewPager,ViewPager里面放了两个Fragment。
第一次进入这个Activity。开启了服务,并在onResume方法中绑定服务后,对Service进行了一定的初始化,其中调用了Fragment中的一个属性。
super.onResume();
bindService(intent, conn, BIND_AUTO_CREATE);
base64Encode对图片进行编码
843977358
base64 图片 encoder
/**
* 对图片进行base64encoder编码
*
* @author mrZhang
* @param path
* @return
*/
public static String encodeImage(String path) {
BASE64Encoder encoder = null;
byte[] b = null;
I
Request Header简介
aigo
servlet
当一个客户端(通常是浏览器)向Web服务器发送一个请求是,它要发送一个请求的命令行,一般是GET或POST命令,当发送POST命令时,它还必须向服务器发送一个叫“Content-Length”的请求头(Request Header) 用以指明请求数据的长度,除了Content-Length之外,它还可以向服务器发送其它一些Headers,如:
HttpClient4.3 创建SSL协议的HttpClient对象
alleni123
httpclient 爬虫 ssl
public class HttpClientUtils
{
public static CloseableHttpClient createSSLClientDefault(CookieStore cookies){
SSLContext sslContext=null;
try
{
sslContext=new SSLContextBuilder().l
java取反 -右移-左移-无符号右移的探讨
百合不是茶
位运算符 位移
取反:
在二进制中第一位,1表示符数,0表示正数
byte a = -1;
原码:10000001
反码:11111110
补码:11111111
//异或: 00000000
byte b = -2;
原码:10000010
反码:11111101
补码:11111110
//异或: 00000001
java多线程join的作用与用法
bijian1013
java 多线程
对于JAVA的join,JDK 是这样说的:join public final void join (long millis )throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means t
Java发送http请求(get 与post方法请求)
bijian1013
java spring
PostRequest.java
package com.bijian.study;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURL
【Struts2二】struts.xml中package下的action配置项默认值
bit1129
struts.xml
在第一部份,定义了struts.xml文件,如下所示:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts
【Kafka十三】Kafka Simple Consumer
bit1129
simple
代码中关于Host和Port是割裂开的,这会导致单机环境下的伪分布式Kafka集群环境下,这个例子没法运行。
实际情况是需要将host和port绑定到一起,
package kafka.examples.lowlevel;
import kafka.api.FetchRequest;
import kafka.api.FetchRequestBuilder;
impo
nodejs学习api
ronin47
nodejs api
NodeJS基础 什么是NodeJS
JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。
每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了docum
java-64.寻找第N个丑数
bylijinnan
java
public class UglyNumber {
/**
* 64.查找第N个丑数
具体思路可参考 [url] http://zhedahht.blog.163.com/blog/static/2541117420094245366965/[/url]
*
题目:我们把只包含因子
2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14
二维数组(矩阵)对角线输出
bylijinnan
二维数组
/**
二维数组 对角线输出 两个方向
例如对于数组:
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 },
slash方向输出:
1
5 2
9 6 3
13 10 7 4
14 11 8
15 12
16
backslash输出:
4
3
[JWFD开源工作流设计]工作流跳跃模式开发关键点(今日更新)
comsci
工作流
既然是做开源软件的,我们的宗旨就是给大家分享设计和代码,那么现在我就用很简单扼要的语言来透露这个跳跃模式的设计原理
大家如果用过JWFD的ARC-自动运行控制器,或者看过代码,应该知道在ARC算法模块中有一个函数叫做SAN(),这个函数就是ARC的核心控制器,要实现跳跃模式,在SAN函数中一定要对LN链表数据结构进行操作,首先写一段代码,把
redis常见使用
cuityang
redis 常见使用
redis 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets
引入jar包 jedis-2.1.0.jar (本文下方提供下载)
package redistest;
import redis.clients.jedis.Jedis;
public class Listtest
配置多个redis
dalan_123
redis
配置多个redis客户端
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&quo
attrib命令
dcj3sjt126com
attr
attrib指令用于修改文件的属性.文件的常见属性有:只读.存档.隐藏和系统.
只读属性是指文件只可以做读的操作.不能对文件进行写的操作.就是文件的写保护.
存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.
Yii使用公共函数
dcj3sjt126com
yii
在网站项目中,没必要把公用的函数写成一个工具类,有时候面向过程其实更方便。 在入口文件index.php里添加 require_once('protected/function.php'); 即可对其引用,成为公用的函数集合。 function.php如下:
<?php /** * This is the shortcut to D
linux 系统资源的查看(free、uname、uptime、netstat)
eksliang
netstat linux uname linux uptime linux free
linux 系统资源的查看
转载请出自出处:http://eksliang.iteye.com/blog/2167081
http://eksliang.iteye.com 一、free查看内存的使用情况
语法如下:
free [-b][-k][-m][-g] [-t]
参数含义
-b:直接输入free时,显示的单位是kb我们可以使用b(bytes),m
JAVA的位操作符
greemranqq
位运算 JAVA位移 << >>>
最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。
1.按位操作符 :
按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。
与(&)运算:
1&1 = 1, 1&0 = 0, 0&0 &
Web前段学习网站
ihuning
Web
Web前段学习网站
菜鸟学习:http://www.w3cschool.cc/
JQuery中文网:http://www.jquerycn.cn/
内存溢出:http://outofmemory.cn/#csdn.blog
http://www.icoolxue.com/
http://www.jikexue
强强联合:FluxBB 作者加盟 Flarum
justjavac
r
原文:FluxBB Joins Forces With Flarum作者:Toby Zerner译文:强强联合:FluxBB 作者加盟 Flarum译者:justjavac
FluxBB 是一个快速、轻量级论坛软件,它的开发者是一名德国的 PHP 天才 Franz Liedke。FluxBB 的下一个版本(2.0)将被完全重写,并已经开发了一段时间。FluxBB 看起来非常有前途的,
java统计在线人数(session存储信息的)
macroli
java Web
这篇日志是我写的第三次了 前两次都发布失败!郁闷极了!
由于在web开发中常常用到这一部分所以在此记录一下,呵呵,就到备忘录了!
我对于登录信息时使用session存储的,所以我这里是通过实现HttpSessionAttributeListener这个接口完成的。
1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。
public class Ses
bootstrp carousel初体验 快速构建图片播放
qiaolevip
每天进步一点点 学习永无止境 bootstrap 纵观千象
img{
border: 1px solid white;
box-shadow: 2px 2px 12px #333;
_width: expression(this.width > 600 ? "600px" : this.width + "px");
_height: expression(this.width &
SparkSQL读取HBase数据,通过自定义外部数据源
superlxw1234
spark sparksql sparksql读取hbase sparksql外部数据源
关键字:SparkSQL读取HBase、SparkSQL自定义外部数据源
前面文章介绍了SparSQL通过Hive操作HBase表。
SparkSQL从1.2开始支持自定义外部数据源(External DataSource),这样就可以通过API接口来实现自己的外部数据源。这里基于Spark1.4.0,简单介绍SparkSQL自定义外部数据源,访
Spring Boot 1.3.0.M1发布
wiselyman
spring boot
Spring Boot 1.3.0.M1于6.12日发布,现在可以从Spring milestone repository下载。这个版本是基于Spring Framework 4.2.0.RC1,并在Spring Boot 1.2之上提供了大量的新特性improvements and new features。主要包含以下:
1.提供一个新的sprin