背景
在Apache Hudi初探(一)(与flink的结合)中,我们提到了Pipelines.hoodieStreamWrite 写hudi文件
,这个操作真正写hudi是在Pipelines.hoodieStreamWrite
方法下的transform(opName("stream_write", conf), TypeInformation.of(Object.class), operatorFactory)
,具体分析一下写入的过程。
分析
对于transform(opName("stream_write", conf), TypeInformation.of(Object.class), operatorFactory)
这个代码片段,我们主要看operatorFactory
这个对象(transform
这个操作是Flink框架的操作):
public class StreamWriteOperator extends AbstractWriteOperator {
public StreamWriteOperator(Configuration conf) {
super(new StreamWriteFunction<>(conf));
}
public static WriteOperatorFactory getFactory(Configuration conf) {
return WriteOperatorFactory.instance(conf, new StreamWriteOperator<>(conf));
}
}
最主要的hudi
算子为StreamWriteOperator
,其中最主要的操作是由StreamWriteFunction
来完成的:
// StreamWriteFunction
@Override
public void initializeState(FunctionInitializationContext context) throws Exception {
this.taskID = getRuntimeContext().getIndexOfThisSubtask();
this.metaClient = StreamerUtil.createMetaClient(this.config);
this.writeClient = FlinkWriteClients.createWriteClient(this.config, getRuntimeContext());
this.writeStatuses = new ArrayList<>();
this.writeMetadataState = context.getOperatorStateStore().getListState(
new ListStateDescriptor<>(
"write-metadata-state",
TypeInformation.of(WriteMetadataEvent.class)
));
this.ckpMetadata = CkpMetadata.getInstance(this.metaClient.getFs(), this.metaClient.getBasePath());
this.currentInstant = lastPendingInstant();
if (context.isRestored()) {
restoreWriteMetadata();
} else {
sendBootstrapEvent();
}
// blocks flushing until the coordinator starts a new instant
this.confirming = true;
}
@Override
public void open(Configuration parameters) throws IOException {
this.tracer = new TotalSizeTracer(this.config);
initBuffer();
initWriteFunction();
}
@Override
public void snapshotState(FunctionSnapshotContext functionSnapshotContext) throws Exception {
if (inputEnded) {
return;
}
snapshotState();
// Reload the snapshot state as the current state.
reloadWriteMetaState();
}
@Override
public void snapshotState() {
// Based on the fact that the coordinator starts the checkpoint first,
// it would check the validity.
// wait for the buffer data flush out and request a new instant
flushRemaining(false);
}
@Override
public void processElement(I value, ProcessFunction.Context ctx, Collector out) throws Exception {
bufferRecord((HoodieRecord) value);
}
initializeState
操作,主要是做一些初始化的操作
this.taskID = getRuntimeContext().getIndexOfThisSubtask();
获取当前的task的索引下标,用来向operator coordinator
发送event给operator coordinator
,之后 StreamWriteOperatorCoordinator(operator coordinator
) 进行处理,后续会说到StreamWriteOperatorCoordinator
metaClient = StreamerUtil.createMetaClient(this.config)
writeClient = FlinkWriteClients.createWriteClient
初始化hudi的元数据客户端(这里是HoodieTableMetaClient
)和写入客户端(这里是HoodieFlinkWriteClient
)
writeStatuses = new ArrayList<>()
记录后续的写入hudi文件的信息
writeMetadataState = context.getOperatorStateStore().getListState
记录写入hudi的元数据事件,会在后续的操作中,会包装成event
发送给operator coordinator
(StreamWriteOperatorCoordinator)
ckpMetadata = CkpMetadata.getInstance
Flink的checkpoint的元数据信息路径,默认的路径是/${hoodie.basePath}/.hoodie/.aux/ckp_meta
currentInstant = lastPendingInstant()
获取上次还没有完成的commit
restoreWriteMetadata或者sendBootstrapEvent
,根据是否是从checkpoint恢复过来的进行不同消息的发送, 这里的operator coordinator
(StreamWriteOperatorCoordinator)会进行统一的处理,并初始化一个commit
open
操作 写入hudi前的前置操作,比如说 初始化TotalSizeTracer记录maxBufferSize便于flush操作
根据write.operation
的值(默认是upsert)选择后续的操作是insert或upsert或overwrite
,这里是upsert
processElement
操作 这里对传入的HoodieRecord
进行缓存,主要是bufferRecord
做的事情,
首先会获取bucketID,之后再往对应的bucket中插入数据
如果超出write.batch.size
(默认是128MB),则会进行flushBucket操作,该操作主要是写入hudi操作 //TODO: 具体的写入hudi操作
首先会获取新的需要提交的commit
再进行写入的实际操作
写入的文件元数据信息回传到operator coordinator
进行统一处理
snapshotState
操作
调用flushRemaining
写入剩下的数据到hudi存储中
重新加载当前写入的hudi文件元数据信息到当前flink的state中
hudi StreamWriteOperatorCoordinator作用
总的来说,StreamWriteOperatorCoordinator扮演的角色和在Spark中driver的角色一样,都是来最后来提交 元数据信息到huid中。 具体的作用还是得从具体的方法来看:
@Override
public void handleEventFromOperator(int i, OperatorEvent operatorEvent) {
ValidationUtils.checkState(operatorEvent instanceof WriteMetadataEvent,
"The coordinator can only handle WriteMetaEvent");
WriteMetadataEvent event = (WriteMetadataEvent) operatorEvent;
if (event.isEndInput()) {
// handle end input event synchronously
// wrap handleEndInputEvent in executeSync to preserve the order of events
executor.executeSync(() -> handleEndInputEvent(event), "handle end input event for instant %s", this.instant);
} else {
executor.execute(
() -> {
if (event.isBootstrap()) {
handleBootstrapEvent(event);
} else {
handleWriteMetaEvent(event);
}
}, "handle write metadata event for instant %s", this.instant
);
}
}
...
@Override
public void notifyCheckpointComplete(long checkpointId) {
executor.execute(
() -> {
// The executor thread inherits the classloader of the #notifyCheckpointComplete
// caller, which is a AppClassLoader.
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
// for streaming mode, commits the ever received events anyway,
// the stream write task snapshot and flush the data buffer synchronously in sequence,
// so a successful checkpoint subsumes the old one(follows the checkpoint subsuming contract)
final boolean committed = commitInstant(this.instant, checkpointId);
if (tableState.scheduleCompaction) {
// if async compaction is on, schedule the compaction
CompactionUtil.scheduleCompaction(metaClient, writeClient, tableState.isDeltaTimeCompaction, committed);
}
if (tableState.scheduleClustering) {
// if async clustering is on, schedule the clustering
ClusteringUtil.scheduleClustering(conf, writeClient, committed);
}
if (committed) {
// start new instant.
startInstant();
// sync Hive if is enabled
syncHiveAsync();
}
}, "commits the instant %s", this.instant
);
}
总结
用一张图总结一下交互方式,如下:
你可能感兴趣的:(flink,hudi,flink,大数据,hudi)
【大数据分析】Spark SQL查询:使用SQL命令
sword_csdn
Spark spark 数据分析 sql
对于使用关系型数据库或分布式数据库的用户可能更容易和更自然地使用SQL,比如Hive。在SparkSQL编写SQL命令时,它们将被转换为DataFrame上的操作。通过连接到Spark的Thrift服务器,它们可以通过标准的JDBC或ODBC协议从应用服务器连接到Spark。Spark支持两种SQL方言:SQL和HQL。Spark社区推荐的是HQL,因为HQL具有更丰富的功能。要使用HQL,需要使
什么是数据治理以及它在大数据处理中的重要性
Java资深爱好者
java 开发语言
数据治理(DataGovernance)是指在一定的组织范围内,依托制度法规、标准规范、应用实践和支撑技术对数据进行全生命周期的数据确权、质量管理、安全控制、隐私保护、开放共享、交易流通和分析处理。数据治理是组织中涉及数据使用的一整套管理行为,由企业数据治理部门发起并推行,关于如何制定和实施针对整个企业内部数据的商业应用和技术管理的一系列政策和流程。数据治理在大数据处理中的重要性提高数据质量:准确
【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
m0_74824823
面试 学习路线 阿里巴巴 .net 开源
系列文章目录???.NET开源ORM框架SqlSugar系列???文章目录系列文章目录前言??一、实体对象更新1.1单条与批量1.2不更新某列1.3只更新某列1.4NULL列不更新1.5无主键/指定列1.6更新添加条件1.7大数据更新1.8重新赋值1:list中的值修改1.9重新赋值2:列中的值+1二、根据表达式更新(像SQL)2.1指定多个字段更新2.2一个字段更新2.3字段+1更新2.4Set
深入理解DAG任务调度系统:核心原理与实现
AI天才研究院
计算 Python实战 编程实践 python 算法 dag
1.背景介绍随着大数据、人工智能等领域的发展,任务调度系统的重要性日益凸显。DirectedAcyclicGraph(DAG)任务调度系统是一种常见的任务调度系统,它可以有效地解决多个依赖关系复杂的任务调度问题。本文将深入探讨DAG任务调度系统的核心原理和实现,为读者提供一个深入的理解。1.1背景介绍1.1.1任务调度系统简介任务调度系统是计算机科学中一个重要的研究领域,它主要关注于在并行计算系统
Salesforce联手阿里云,销售易联手腾讯,还在靠”卖血求生“的CRM独立玩家何去何从?
saas
销售易官宣与腾讯战略合作升级,腾讯集团副总裁、腾讯政企业务总裁李强担任销售易董事长,销售易创始人史彦泽继续担任CEO。这场"资本+技术+生态"的强强联合,将行业竞争推向新维度,融资竞赛不再是SaaS企业生存的唯一筹码,中国企服市场正在发生深层变革。消息一出,便受到很多人的关注,这首当其中,最高兴的算要数销售易的客户,源自其将获得的三大核心价值升级,腾讯将进一步开放云计算、大数据、AI等核心技术能力
mysql实时同步到es
数据库
测试了多个方案同步,最终选择oceanu产品,底层基于Flinkcdc1、实时性能够保证,binlog量很大时也不产生延迟2、配置SQL即可完成,操作上简单下面示例mysql的100张分表实时同步到es,优化备注等文本字段的like查询创建SQL作业CREATETABLEfrom_mysql(idint,cidintNOTNULL,gidbigintNOTNULL,contentvarchar,c
Python中的 redis keyspace 通知_python 操作redis psubscribe(‘__keyspace@0__ ‘)
2301_82243733
程序员 python 学习 面试
最后Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的Pytho
YashanDB访问约束
数据库
本文内容来自YashanDB官网,原文内容请见https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%...访问约束是YashanDB特有的一种关系数据结构,基于有界计算理论的访问约束模型(AC,AccessConstraint)实现:通过在数据源上建立AC,实现大数据变小的模型变换。在查询时,通过访问AC数据,缩小查询代价和提升查
探索天气预警API:精准预测,守护安全
api
引言在当今这个快速变化的世界中,天气的波动直接影响着人们的日常生活、农业生产、交通出行乃至公共安全。为了有效应对各种极端天气事件,天气预警API应运而生,成为连接气象数据与公众服务的重要桥梁。本文将深入探讨天气预警API的工作原理、应用场景以及其对社会的积极影响。天气预警API的工作原理天气预警API基于先进的气象监测技术和大数据分析,通过收集全球范围内的气象卫星、雷达、地面观测站等数据源,进行实
Flink CDC报错ArrayIndexOutOfBoundsException解决思路
学亮编程手记
大数据 flink doris
FlinkCDC用两个并行度会报错。一个并行度就不会报错。不知道是什么原因?同步java.lang.ArrayIndexOutOfBoundsException?解决思路看日志,应该是mysql文本字段中有换行符之类的,应该会有一个url的报错提示,然后curl那个url看具体报错。这个问题可能是由于FlinkCDC的并行度设置不正确导致的。当您尝试使用两个并行度时,可能会遇到数组越界异常(jav
深入解析:Tableau在数据可视化中的高级应用
Echo_Wish
实战高阶大数据 信息可视化 数据分析 数据挖掘
深入解析:Tableau在数据可视化中的高级应用引言在大数据时代,数据可视化已成为数据分析中不可或缺的一部分。作为一款广受欢迎的数据可视化工具,Tableau以其强大的功能和灵活性,赢得了众多数据分析师的青睐。然而,许多人在使用Tableau时,仅停留在基本操作层面,未能充分发挥其潜力。本文将深入探讨Tableau的高级应用,展示其在复杂数据分析中的强大能力,并以具体实例说明其实际应用效果。数据预
Sharding-JDBC 实现分库分表
一叶飘零_sweeeet
java 分布式 mysql Sharding-JDBC 分库分表 java mysql
一、引言随着互联网业务的快速发展,数据量不断增长,传统的单一数据库架构已经难以满足高并发、大数据量的存储和查询需求。分库分表技术成为了解决这些问题的重要手段。Sharding-JDBC作为一款优秀的数据库中间件,能够方便地实现分库分表,提高系统的性能和可扩展性。本文将详细介绍Sharding-JDBC实现分库分表的实战过程。二、Sharding-JDBC概述(一)Sharding-JDBC的定义和
阿里云 MaxCompute MaxQA 开启公测,解锁近实时高效查询体验
阿里云大数据AI技术
阿里云 云原生 MaxCompute 大数据 实时数仓
随着实时、近实时数据分析需求的持续增长,查询响应时间在现代数据分析和业务应用中变得越来越重要。为减少查询响应时间,提升数据效率,阿里云云原生大数据计算服务MaxCompute推出MaxQA(原MCQA2.0)查询加速功能,在独享的查询加速资源池的基础上,对管控链路、查询优化器、执行引擎、存储引擎以及缓存机制等多个环节进行全面优化,显著减少了查询响应时间,适用于BI场景、交互式分析以及近实时数仓等对
《深入浅出AI》前言知识:深度学习基础总结
GoAI
深入浅出AI 人工智能 深度学习 机器学习 cnn rnn 生成对抗网络 神经网络
个人主页:GoAI|公众号:GoAI的学习小屋|交流群:704932595|个人简介:掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与人工智能知识分享。AI学习星球推荐:GoAI的学习社区知识星球是一个致力于提供《机器学习|深度学习|CV|NLP|大模型|多模态|AIGC》各个最新AI方向综述、论文等成
EBS 性能不足?从吞吐量到 IOPS,阿里云全方位优化
Anna_Tong
阿里云 云计算 存储加速 吞吐量优化 RAID配置 云计算运维 IOPS 提升
在云计算环境中,存储性能对于业务稳定运行至关重要,尤其是数据库、大数据分析、AI计算等高IO需求的应用。然而,许多用户在使用EBS(弹性块存储)时,可能会遇到磁盘吞吐量或IOPS(每秒输入/输出操作数)不足的问题,导致应用响应变慢、数据处理延迟,甚至影响业务连续性。那么,是什么原因导致EBS性能瓶颈?如何优化吞吐量和IOPS以提升存储性能?阿里云又能提供哪些优化方案?本文将从存储架构、性能监控、优
DeepSeek接入大数据能做什么
PersistDZ
大数据与AI 大数据
DeepSeek作为一家专注于AGI和AI大模型技术的公司,在大数据领域可以通过以下方式切入,结合其核心能力提供创新解决方案:一、DeepSeek接入大数据领域的技术路径多模态数据处理能力支持文本/图像/视频/传感器数据的统一处理自主研发的MoE(MixtureofExperts)架构可并行处理异构数据超大规模特征工程基于千亿参数模型的自动特征提取支持非结构化数据的深度语义解析实时计算优化自研分布
Hadoop01-入门&集群环境搭建--非原创(test)
xl.liu
大数据 Test
Hadoop01-入门&集群环境搭建今日内容Hadoop的介绍集群环境搭建准备工作Linux命令和Shell脚本增强集群环境搭建来来来大数据概述大数据:就是对海量数据进行分析处理,得到一些有价值的信息,然后帮助企业做出判断和决策.处理流程:1:获取数据2:处理数据3:展示结果1:Hadoop介绍Hadoop是一个分布式系基础框架,它允许使用简单的编程模型跨大型计算机的大型数据集进行分布式处理.它主
AI技术在音乐产品中有哪些应用场景?
大数据人工智能音乐大数据
自动标注、平滑过渡、音乐鉴权、AI创作,当AI技术应用于音乐行业为人类的精神文化与娱乐生活带来便利和更多选择时,也是一件让人激动不已的事情。随着深度学习算法的出现、大数据和5G技术的成熟,AI人工智能已逐渐融入我们的生产生活中,在教育、医疗、政务办公、城市管理等多个方面发挥作用。随着AI技术在音乐行业研究及应用的深入,音乐人工智能已经不新鲜,很多新的应用和产品已经惊艳亮相。基于对于音乐技术及产品的
iot架构 mqtt netty_一个关于小程序Iot的具体实现(MQTT版)
Alfred Cheng
iot架构 mqtt netty
前言Iot,这个名词应该很多人都听过了吧,即大数据、Ai等兴起后也紧跟着研发大潮流的到来,即物联网。传统简单的说就是智能化、程序化的控制硬件设施,大家最容易想到的应该是智能家居,通过一个App或者遥控进行对家具设置的远程控制。而今天要说的是人与物之间的通信控制,且通过互联网产品来执行人的命令,而机器进行应答。竞品说到小程序控制硬件,大家应该立马想到什么产品呢?某拜、某FO、售货机等等,他们的架构上
智慧园区安全调度的重要性
Guheyunyi
安全 网络 python 大数据 人工智能 信息可视化 数据分析
随着科技的飞速发展,智慧园区作为现代城市的重要组成部分,正逐渐成为企业、政府和居民生活的重要载体。智慧园区通过物联网、大数据、人工智能等先进技术,实现了资源的高效配置和管理的智能化。然而,随着园区规模的扩大和复杂性的增加,安全问题也日益凸显。因此,智慧园区的安全调度显得尤为重要。智慧园区安全调度的定义智慧园区安全调度是指通过先进的技术手段和管理方法,对园区内的各类安全风险进行实时监控、预警和应急处
(一)大数据---Hadoop整体介绍(架构层)----(组件(3)
2401_84166965
程序员 大数据 hadoop 架构
复杂性:体现在数据的管理和操作上。如何抽取,转换,加载,连接,关联以把握数据内蕴的有用信息已经变得越来越有挑战性二、大数据技术有哪些(重点)===================================================================================基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计
聚焦银行业数智化转型,火山引擎数据飞轮系列白皮书重磅发布
大数据
随着金融科技的快速发展,银行业也在不断提升数字化水平。通过大数据、人工智能等技术的应用,银行可以更加精准地了解客户需求,提供个性化的金融产品和服务,还能降低运营成本,提升风险管理能力,创造更多业务价值。《金融科技发展规划(2022~2025年)》也明确指出,以加强金融数据要素应用为基础,以深化金融供给侧结构性改革为目标,以加快金融机构数字化转型、强化金融科技审慎监管为主线,将数字元素注入金融服务全
携手鲲鹏昇腾 HashData展现云原生数仓创新力量
数据库
5月9日-11日,鲲鹏昇腾开发者大会2024在北京中关村国际创新中心举行,众多行业领袖、专家学者及优秀开发们齐聚一堂,分享产业趋势、技术创新和应用实践。酷克数据作为华为鲲鹏生态重要合作伙伴,受邀出席本次大会,展示其与鲲鹏昇腾生态联合开发的云数仓解决方案及应用案例,与全球开发者共同探讨云原生数仓前沿技术。今年两会政府工作报告明确提出:“深化大数据、人工智能等研发应用,开展人工智能+行动,打造具有国际
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
岁月如歌,青春不败
生态遥感 目标检测 cnn transformer 遥感 遥感影像
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时代已然来临。一:深度卷积网络知识1.深度学习在遥感图像识别中的范式和问题2.深度学习的历史发展历程3.机器学习,深度学习等任务的基本处理流程4.卷积神经网络的基本原理5
创新市场调查方法,精准把握消费者脉搏(消费者调查)
zhonglidc01
消费者调查 市场调查咨询 大数据 人工智能
在当今竞争激烈的市场环境中,(第三方市场调查)企业要想精准把握消费者需求,制定有效的市场策略,(市场咨询公司)创新的市场调查方法至关重要。成都中立调查公司凭借17年的深厚调研经验,(问卷调查)结合线上线下调查、运用大数据分析等创新举措,致力于为客户提供更具前瞻性的市场洞察,助力企业精准把握消费者脉搏,提升市场竞争力。一、结合线上线下调查,全面覆盖消费者群体线上调研:便捷高效,触达广泛受众在互联网时
揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界
寒水馨
Linux问题解决方案 服务器 linux 智能家居
揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界文章目录揭秘Linux:从服务器到智能家居,一个操作系统如何改变世界引言:Linux,不仅仅是一个操作系统Linux在企业级应用中的霸主地位云计算与虚拟化:Linux的天下大数据与人工智能:Linux的助推器Web服务器:Apache和Nginx的最佳搭档Linux在移动和嵌入式设备中的崛起Android:Linux的最成功衍生品物联网(
Flink 源码笔记03—StreamGraph到JobGraph
董嘻嘻
Flink源码笔记 flink java big data
文章目录简介入口函数traverseStreamGraphAndGenerateHashesgenerateDeterministicHashgenerateUserSpecifiedHashsetChainingisChainable简介JobGraph可以认为是StreamGraph的优化图,它将一些符合特定条件的operators合并成一个operatorchain,以减少数据在节点之间序列
探索大数据处理:利用 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背压?背压是指在数据流处
枚举的构造函数中抛出异常会怎样
bylijinnan
java enum 单例
首先从使用enum实现单例说起。
为什么要用enum来实现单例?
这篇文章(
http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由:
1.enum单例简单、容易,只需几行代码:
public enum Singleton {
INSTANCE;
CMake 教程
aigo
C++
转自:http://xiang.lf.blog.163.com/blog/static/127733322201481114456136/
CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多。
介绍:http://baike.baidu.com/view/1126160.htm
本文件不介绍CMake的基本语法,下面是篇不错的入门教程:
http:
cvc-complex-type.2.3: Element 'beans' cannot have character
Cb123456
spring Webgis
cvc-complex-type.2.3: Element 'beans' cannot have character
Line 33 in XML document from ServletContext resource [/WEB-INF/backend-servlet.xml] is i
jquery实例:随页面滚动条滚动而自动加载内容
120153216
jquery
<script language="javascript">
$(function (){
var i = 4;$(window).bind("scroll", function (event){
//滚动条到网页头部的 高度,兼容ie,ff,chrome
var top = document.documentElement.s
将数据库中的数据转换成dbs文件
何必如此
sql dbs
旗正规则引擎通过数据库配置器(DataBuilder)来管理数据库,无论是Oracle,还是其他主流的数据都支持,操作方式是一样的。旗正规则引擎的数据库配置器是用于编辑数据库结构信息以及管理数据库表数据,并且可以执行SQL 语句,主要功能如下。
1)数据库生成表结构信息:
主要生成数据库配置文件(.conf文
在IBATIS中配置SQL语句的IN方式
357029540
ibatis
在使用IBATIS进行SQL语句配置查询时,我们一定会遇到通过IN查询的地方,在使用IN查询时我们可以有两种方式进行配置参数:String和List。具体使用方式如下:
1.String:定义一个String的参数userIds,把这个参数传入IBATIS的sql配置文件,sql语句就可以这样写:
<select id="getForms" param
Spring3 MVC 笔记(一)
7454103
spring mvc bean REST JSF
自从 MVC 这个概念提出来之后 struts1.X struts2.X jsf 。。。。。
这个view 层的技术一个接一个! 都用过!不敢说哪个绝对的强悍!
要看业务,和整体的设计!
最近公司要求开发个新系统!
Timer与Spring Quartz 定时执行程序
darkranger
spring bean 工作 quartz
有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单: 1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask package com.test; import java.text.SimpleDateFormat; import java.util.Date;
大端小端转换,le32_to_cpu 和cpu_to_le32
aijuans
C语言相关
大端小端转换,le32_to_cpu 和cpu_to_le32 字节序
http://oss.org.cn/kernel-book/ldd3/ch11s04.html
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)
Nginx负载均衡配置实例详解
avords
[导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。负载均衡先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。
负载均衡
先来简单了解一下什么是负载均衡
乱说的
houxinyou
框架 敏捷开发 软件测试
从很久以前,大家就研究框架,开发方法,软件工程,好多!反正我是搞不明白!
这两天看好多人研究敏捷模型,瀑布模型!也没太搞明白.
不过感觉和程序开发语言差不多,
瀑布就是顺序,敏捷就是循环.
瀑布就是需求、分析、设计、编码、测试一步一步走下来。而敏捷就是按摸块或者说迭代做个循环,第个循环中也一样是需求、分析、设计、编码、测试一步一步走下来。
也可以把软件开发理
欣赏的价值——一个小故事
bijian1013
有效辅导 欣赏 欣赏的价值
第一次参加家长会,幼儿园的老师说:"您的儿子有多动症,在板凳上连三分钟都坐不了,你最好带他去医院看一看。" 回家的路上,儿子问她老师都说了些什么,她鼻子一酸,差点流下泪来。因为全班30位小朋友,惟有他表现最差;惟有对他,老师表现出不屑,然而她还在告诉她的儿子:"老师表扬你了,说宝宝原来在板凳上坐不了一分钟,现在能坐三分钟。其他妈妈都非常羡慕妈妈,因为全班只有宝宝
包冲突问题的解决方法
bingyingao
eclipse maven exclusions 包冲突
包冲突是开发过程中很常见的问题:
其表现有:
1.明明在eclipse中能够索引到某个类,运行时却报出找不到类。
2.明明在eclipse中能够索引到某个类的方法,运行时却报出找不到方法。
3.类及方法都有,以正确编译成了.class文件,在本机跑的好好的,发到测试或者正式环境就
抛如下异常:
java.lang.NoClassDefFoundError: Could not in
【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j
bit1129
Stream
先来一段废话:
实际工作中,业务系统的日志基本上是使用Log4j写入到日志文件中的,问题的关键之处在于业务日志的格式混乱,这给对日志文件中的日志进行统计分析带来了极大的困难,或者说,基本上无法进行分析,每个人写日志的习惯不同,导致日志行的格式五花八门,最后只能通过grep来查找特定的关键词缩小范围,但是在集群环境下,每个机器去grep一遍,分析一遍,这个效率如何可想之二,大好光阴都浪费在这上面了
sudoku solver in Haskell
bookjovi
sudoku haskell
这几天没太多的事做,想着用函数式语言来写点实用的程序,像fib和prime之类的就不想提了(就一行代码的事),写什么程序呢?在网上闲逛时发现sudoku游戏,sudoku十几年前就知道了,学生生涯时也想过用C/Java来实现个智能求解,但到最后往往没写成,主要是用C/Java写的话会很麻烦。
现在写程序,本人总是有一种思维惯性,总是想把程序写的更紧凑,更精致,代码行数最少,所以现
java apache ftpClient
bro_feng
java
最近使用apache的ftpclient插件实现ftp下载,遇见几个问题,做如下总结。
1. 上传阻塞,一连串的上传,其中一个就阻塞了,或是用storeFile上传时返回false。查了点资料,说是FTP有主动模式和被动模式。将传出模式修改为被动模式ftp.enterLocalPassiveMode();然后就好了。
看了网上相关介绍,对主动模式和被动模式区别还是比较的模糊,不太了解被动模
读《研磨设计模式》-代码笔记-工厂方法模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* 工厂方法模式:使一个类的实例化延迟到子类
* 某次,我在工作不知不觉中就用到了工厂方法模式(称为模板方法模式更恰当。2012-10-29):
* 有很多不同的产品,它
面试记录语
chenyu19891124
招聘
或许真的在一个平台上成长成什么样,都必须靠自己去努力。有了好的平台让自己展示,就该好好努力。今天是自己单独一次去面试别人,感觉有点小紧张,说话有点打结。在面试完后写面试情况表,下笔真的好难,尤其是要对面试人的情况说明真的好难。
今天面试的是自己同事的同事,现在的这个同事要离职了,介绍了我现在这位同事以前的同事来面试。今天这位求职者面试的是配置管理,期初看了简历觉得应该很适合做配置管理,但是今天面
Fire Workflow 1.0正式版终于发布了
comsci
工作 workflow Google
Fire Workflow 是国内另外一款开源工作流,作者是著名的非也同志,哈哈....
官方网站是 http://www.fireflow.org
经过大家努力,Fire Workflow 1.0正式版终于发布了
正式版主要变化:
1、增加IWorkItem.jumpToEx(...)方法,取消了当前环节和目标环节必须在同一条执行线的限制,使得自由流更加自由
2、增加IT
Python向脚本传参
daizj
python 脚本 传参
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名: sys.argv[0]
参数1: sys.argv[1]
参数2: sys.argv[
管理用户分组的命令gpasswd
dongwei_6688
passwd
NAME: gpasswd - administer the /etc/group file
SYNOPSIS:
gpasswd group
gpasswd -a user group
gpasswd -d user group
gpasswd -R group
gpasswd -r group
gpasswd [-A user,...] [-M user,...] g
郝斌老师数据结构课程笔记
dcj3sjt126com
数据结构与算法
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
yii2 cgridview加上选择框进行操作
dcj3sjt126com
GridView
页面代码
<?=Html::beginForm(['controller/bulk'],'post');?>
<?=Html::dropDownList('action','',[''=>'Mark selected as: ','c'=>'Confirmed','nc'=>'No Confirmed'],['class'=>'dropdown',])
linux mysql
fypop
linux
enquiry mysql version in centos linux
yum list installed | grep mysql
yum -y remove mysql-libs.x86_64
enquiry mysql version in yum repositoryyum list | grep mysql oryum -y list mysql*
install mysq
Scramble String
hcx2013
String
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = "great":
跟我学Shiro目录贴
jinnianshilongnian
跟我学shiro
历经三个月左右时间,《跟我学Shiro》系列教程已经完结,暂时没有需要补充的内容,因此生成PDF版供大家下载。最近项目比较紧,没有时间解答一些疑问,暂时无法回复一些问题,很抱歉,不过可以加群(334194438/348194195)一起讨论问题。
----广告-----------------------------------------------------
nginx日志切割并使用flume-ng收集日志
liyonghui160com
nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主
Oracle死锁解决方法
pda158
oracle
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.
java之List排序
shiguanghui
list排序
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。 你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递
servlet单例多线程
utopialxw
单例 多线程 servlet
转自http://www.cnblogs.com/yjhrem/articles/3160864.html
和 http://blog.chinaunix.net/uid-7374279-id-3687149.html
Servlet 单例多线程
Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的