自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 一款支持SQL+Lucene语法的实时数据匹配引擎够不够酷?

任何技术其实酷不酷不是最重要的,最重要的是实用。早在几年前,笔者实现了兼容Lucene语法的实时匹配引擎Tripod后,就曾考虑过是否会有这样一种场景,同时需要使用SQL+Lucene两种语法的能力来描述匹配条件,对数据进行实时匹配?因为事情较多,一时没有想到,就此搁下。 一晃差不多三年过去了,最近在一个项目中碰到了我的老本行--“安全日志分析”的需求。如今的日志分析已经有了专门的检测规则共享格式— sigma, 与我们早期无法打破安全知识与工程实现间的鸿沟相比,已经截然不同。工程实现者不用再

2022-07-03 15:26:15 697

原创 SQL检索MongoDB的轻量级解决方案

SQL检索MongoDB的轻量级解决方案

2022-02-28 09:57:08 325

原创 如何实现实时文本过滤

对文本数据进行实时过滤的需求在舆情类系统的开发过程中经常碰到。如:对涉黄、涉政、涉恐文本的过滤;对广告数据的过滤;以及对非业务数据的过滤等。这些过滤需求由于比较难于描述其过滤规则,所有出现了很多分类算法用于对各类文本数据的分类过滤,这些算法在网上已经有很多文章进行了深入探讨,本文不再做赘述。本文将主要探讨一种基于规则的实时文本过滤技术。 在舆情系统的开发中,我们也时常会碰到基于规则定义的文本过滤需求。如:SSAS模式下的舆情系统,用户通过基于关键字的规则向舆情系统设定其感兴趣的...

2021-06-14 11:24:40 300

原创 日志解析新思考

最近蒙朋友关照,一起合作了一个日志审计的项目,让我有机会重新思考与审视日志解析相关的技术问题,重新系统的梳理了下近二十年从业中经历中积累的经验与教训。日志解析在日志审计中是否重要?这是一个很见仁见智的问题。主要取决于日志审计希望达到的效果。如果日志审计的主要目标在日志留存和检索溯源上。那么日志解析没有那么高的重要性。但如果希望能够对日志进行更深入的分析与统计,那么日志解析就变的必不可少。众所周知,不同应用产生的日志,其书写格式、表述习惯存在很大差异。另外,日志通常是非结构化或半结构化描述的,也不利..

2021-06-08 23:20:08 545

原创 2020收官--Filter4Go

终于在2021年到来之前完成了Filter4Go。 Filter4Go是一款基于GO语言开发的,兼容SQL语言Where子句语法的数据过滤的工具(https://github.com/colorknight/filter4go.git)。拥有SQL语言基础的使用者,可以通过编写类SQL的语法规则,对GO环境中的数据进行筛选匹配。例如类似Kubernetes中的各种selector(选择器),通过配置的选取规则筛选不同资源的应用场景,就是Filter4Go的应用场景之一。另外,对于有些数据量...

2020-12-31 23:14:49 90

原创 如何用Lucene实现实时搜索--Tripod

网上有不少关于如何使用lucene完成实时搜索功能的文章。鉴于lucene的实现机制,绝大多数解决办法都是采用一定频率访问lucene索引,发现变更,然后搜索数据,返回结果。这种办法只能达到准实时效果,且会带来磁盘的I/O消耗。 抛开在lucene架构下能否找到更好的解决办法不谈,我们试着考虑到底是什么需求促使我们去寻找实时搜索lucene的解决方法的。想必大多数情况下,都是希望能够实时获取满足了某种条件的数据,而后对其进行计算或展示吧。既然如此,那么我们在对数据流处理时,直接...

2020-10-16 23:34:53 190

原创 基于lucene语法的实时文本搜索与匹配--Tripod

Tripod是一款基于lucene语法实现的,可对文本数据进行实时匹配的开源工具,其工程路径为https://github.com/colorknight/tripod.git。在一定场景中,使用它,可以节省对磁盘IO的消耗,提升应用的实时效果,且对于有lucene和elastic search使用经验的人而言几乎没有学习曲线。在很多文本处理的应用中,会有类似数据订阅的需求,即将客户关注的数据推送给客户。一种典型的实现是,我们会根据用户设定的关键词或规则,在lucene或elasticsearc...

2020-08-18 13:47:31 278 3

原创 opipe--一款基于java的自定义“命令”管道

opipe是一个“命令”管道,其设计思路与linux的命令管道一致。不同的是,linux的命令管道串联了一组命令,命令间是以输入、输出流串联在一起的。而opipe实际为一个操作(函数)的管道,操作间以返回值及调用参数的方式串联在一起,即opipe会用前一个操作的返回值作为输入参数调用后一个操作,并重复这样的调度直到整个管道中的所有操作都执行完成。opipe是由短语operation...

2019-11-30 22:39:59 269

原创 SQL to ElasticSearch DSL改进

最近团队在使用MOQL的SQL到ElasticSearch DSL转换时提出,该转换器不能完成深度分页场景的应用。而ElasticSearch为该类应用提供了“search_after”的参数解决方案。ElasticSearch的这个解决方案使得前后两个QUERY DSL有了上下文依赖,后续的查询要依赖上一个查询结果中返回的内容作为条件拼装检索语句。为满足这个需求,MOQL升级了...

2019-10-17 20:06:42 277 1

原创 Tpos时间定位表达式

Tpos​ Tpos是一款用于计算时间位置的工具。在开发系统的过程中,我们经常会遇到需要指定时间位置的需求。比如:在任务调度系统中,我们需要指定任务的执行周期。如要求任务在每天早晨10点执行;要求任务在20分钟后执行等。这类时间定位需求目前已经有了比较好的解决办法,就是开源任务调度框架Quartz提供的Cron表达式。Cron表达式非常灵活,能够覆盖我们常用的几乎所有的任务调度需求。但它也存在...

2019-09-02 01:14:54 198

原创 一步到位,用SQL检索ElasticSearch

     在介绍MOQL的上一篇文章《SQL to ElasticSearch DSL》里,提到了如何将SQL语法转换为ElasticSearch DSL的用法。这期间还出现乌龙事件,就是最新的代码并未提交到GitHub上,功能用不了,如今已经连同本次支持的内容全部更新提交。    上次介绍,MOQL支持在一定的语法集合范围内将SQL语法转换为ElasticSearch的DSL。但这个转换带来的易...

2018-06-09 23:17:35 863 1

原创 SQL to ElasticSearch DSL

        众所周知ElasticSearch目前是一个应用最为广泛的分布式搜索与分析引擎,它的功能强大,能够已很高的性能访问大规模数据。它拥有强大的查询分析语法,能够完成模糊查询、精准查询及聚集计算等诸多功能的表达。但对于那些用惯了SQL语言的数据分析人员来说,掌握ElasticSearch的DSL语言来做以前熟悉的事情,还是有比较陡的学习曲线的。 MOQL是一款基于Java的面向内存对象过...

2018-04-20 22:39:42 5670 3

原创 MOQL-复杂事件处理(CEP)

MOQL做为一款基于Java的面向内存对象的过滤、查询及统计分析工具,有非常丰富的应用场景。复杂事件处理就是其应用场景之一。MOQL工程在迁移到GitHub之后,进行了一次大的调整。整个项目被拆分成了moql-core和moql-cep两个模块。其中moql-core即原来的moql主工程,而moql-cep则是基于moql开发的复杂事件处理模块,其功能类似Esper,但待处理的数据是无模式的。所

2017-02-06 20:03:04 2176 2

原创 时间定位表达式-用于时间的加、减调整

在笔者开发的应用中,经常会遇到用户对数据有按照时间进行查询或监视的需求。用户对此类需求往往是希望可以输入一个已当前时间为准,向前回溯或向后延展一定时间的一个时间段。时间段可以是一天、一周、一个月,也可以是十天、一百天、十周等。为可以灵活满足此类需求,笔者写了一个专门做时间定位运算的表达式--“时间定位表达式”。其具体格式如下:($Now|$CurrentYear|…) [(+|-) num

2015-07-05 00:03:37 654 1

转载 Nmap 空闲扫描

转载自:http://tcshare.org/nmap%E7%A9%BA%E9%97%B2%E6%89%AB%E6%8F%8F/Nmap TCP 空闲扫描(-sI)      1998年,安全研究员Antirez (本书中hping2工具的作者)在Bugtraq邮件列表上,提到了一个巧妙的端口扫描技术–空闲扫描。众所周知,它允许进行端口完全欺骗扫描。使得攻击者能够不使用自己

2015-01-25 23:13:43 1741

原创 技术团队的聚散离合--案例故事,献给曾经的团队

在点了“发送”按钮,发出了一小时后召开部门关于某部委数据分析平台项目的技术研讨会的邮件后,孙同望着屏幕,陷入沉思。思绪回到了2013年的2月份……职业困境,孙同无奈转型       春节刚过,上班第二天的一大早,孙同就被张欣副总通知到办公室来一下。他估计是跟自己昨天同李总的对话有关。就在昨天,上班第一天,经过了一个春节假期的思考,孙同再也无法按捺心中的迷茫,向李总倾吐了自己的想法。

2015-01-19 20:35:02 1203 2

转载 RDD:基于内存的集群计算容错抽象

原文参见:http://www.iteblog.com/archives/1188摘要  本文提出了分布式内存抽象的概念——弹性分布式数据集(RDD,Resilient Distributed Datasets),它具备像MapReduce等数据流模型的容错特性,并且允许开发人员在大型集群上执行基于内存的计算。现有的数据流系统对两种应用的处理并不高效:一是迭代式算法,这在图

2014-11-25 23:18:06 858

原创 如何在Hadoop2上远程调试MapReduce

1.单机安装Hadoop2.x。2.修改mapper-site.xml配置EntityMap entityMap = new EntityMapImpl();entityMap.putEntity("num", 12);entityMap.putEntity("num1", 3);entityMap.putEntity("num2", 4);try {

2014-11-18 23:10:59 1216

原创 macos下如何配置ssh无密码登录

macos下配置ssh无密码登录的过程与linux下配置ssh无密码deng

2014-07-10 00:08:29 1214

原创 读“产品经理那些事儿”有感

《产品经理那些事儿》的作者以自己s

2014-05-22 23:27:06 803

原创 MOQL--面向流的统计过滤技术

坦白讲在实现了moql以后,总想把它适用的范围写出来,却发现总也表达不清楚。原本写这个开源项目的初衷是因为在自己开发的产品中,会实时的,不断的收集各类数据。对于这些数据会对它们进行格式化、映射等实时的处理,也会有对数据进行过滤及统计分析的需求,最后还要将数据入库。对于数据的过滤与统计需求,同行都是基于数据库完成的,都是数据入库后再从库里用sql把数据查出来,统计也好,过滤也好,因为会伴随有大量的磁

2013-12-08 00:04:06 915

原创 备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具

SPSS、RapidMiner、KNIME以及Kettle四款工具都可以用来进行数据分析,只是彼此有各自的侧重点和有劣势。它们都可以逐步的定义数据分析过程,也同样都可以对数据进行ETL处理。笔者从自己关心的角度简单对比以上四款数据分析工具。       SPSS不用多说,一款成功的商业数据分析软件,涵盖了统计分析、数据挖掘分析等各种数据分析方法。界面简单易用,分析过程定义时非常直观方便。因为,

2013-08-02 16:31:52 4395

转载 方差(Variance)和标准差(Standard Deviation)

转自:http://book.51cto.com/art/201004/193276.htm方差是总体所有变量值与其算术平均数偏差平方的平均值,它表示了一组数据分布的离散程度的平均值。标准差是方差的平方根,它表示了一组数据关于平均数的平均离散程度。 其中, 为总体平均数, 为样本平均数,N为总体的个数,n为样本的个数。虽然标准差有

2013-07-27 17:43:39 26227 1

转载 峰度(Kurtosis)和偏度(Skewness)

转自:http://book.51cto.com/art/201004/193277.htm峰度是描述总体中所有取值分布形态陡缓程度的统计量。这个统计量需要与正态分布相比较,峰度为0表示该总体数据分布与正态分布的陡缓程度相同;峰度大于0表示该总体数据分布与正态分布相比较为陡峭,为尖顶峰;峰度小于0表示该总体数据分布与正态分布相比较为平坦,为平顶峰。峰度的绝对值数值越大表示其分布形态的陡

2013-07-27 17:41:36 7145

转载 四分位数(Quartiles)、十分位数(Deciles)和百分位数(Percentiles

转自:http://book.51cto.com/art/201004/193278.htm四分位数是将一组数据由小到大(或由大到小)排序后,用3个点将全部数据分为4等份,与这3个点位置上相对应的数值称为四分位数,分别记为Q1(第一四分位数)、Q2(第二四分位数,即中位数)、Q3(第三四分位数)。其中,Q3到Q1之间的距离的一半又称为四分位差,记为Q。四分位差越小,说明中间部分的数据越

2013-07-27 17:40:05 48418

转载 全距(Range)

转自:http://book.51cto.com/art/201004/193275.htm全距,又称极差,是数据的最大值(Maximum)与最小值(Minimum)之间的绝对差,借以表明总体标志值最大可能的差异范围。全距越长,说明数据越离散;反之,全距越小,说明数据越集中。用符号表示全距的计算公式为:全距的缺点在于其方法过于粗略,因为它只考虑总体两端数值的差异,没有考虑中

2013-07-27 00:01:26 2352

转载 众数(Mode)

转自:http://book.51cto.com/art/201004/193274.htm众数是指总体数据中出现次数最多的变量,用Mode表示。它同样不受数据极端值的影响,从而在一定程度上提高了平均水平的代表性。例如,制衣厂可以根据消费者所需服装尺码的众数来安排生产。此外,如果众数的值出现的频数或频率较大,那么说明众数的代表性就越高,数列的集中趋势也就越显著。确定众数没有明确的公

2013-07-26 23:59:47 1793

转载 均值(Mean)和均值标准误差(S.E. Mean)

均值(平均数、平均值)表示的是某个变量所有取值的集中趋势或平均水平。例如,某班学生数学考试的平均成绩、公司员工的平均收入、某年级学生的平均身高、某高校高招录取平均分等。平均数有总体平均数和样本平均数之分。总体平均数:若一组数据X1,X2,……,XN代表一个大小为N的有限总体,则其总体平均数为: 样本平均数:若一组数据x

2013-07-26 23:55:23 31773

转载 中位数(Median)

转自:http://book.51cto.com/art/201004/193273.htm中位数是将总体数据的各个数值按大小顺序排列,居于中间位置的变量,用Median表示。中位数将所有的数据等分成两半,中位数两端的数据个数相同,因此它也被称为二分位数。中位数的确定,仅仅取决于它在数列中的位置,不受极端值的影响,因此可以用它表示总体的一般水平。同时,中位数比算术平均数具有更好的稳定性

2013-07-26 23:45:22 1295

转载 moment, 一阶矩,二阶矩, 随机变量

在物理中,有力矩(moment of force)= F*L (力* 力臂)在概率统计中,有一阶矩,二阶矩, 三阶矩,四阶矩。不严格的讲,这个”矩“是用来描述  一个点集合的形状。比如,一维上的中点,二维上的一个椭圆,或是用来描述距离 中点(或 最高点)偏离情况。最常见的用法,一阶矩为均值 μ1二阶矩为方差,三阶矩为 Skewness(偏

2013-07-26 23:31:05 15400

原创 MOQL—转换器(Translator)

MOQL是一个面向内存对象设计的查询统计分析工具,其语法兼容SQL标准。其语法结构除支持如下:select count(a.id) cnt, sum(a.num) sum, a.num%500 mod from BeanA a group by 3 having mod > 10 order by 1的标准SQL书写格式外,还拥有xml结构的书写格式,如下:

2013-07-24 10:45:33 1674

原创 读"淘宝技术这十年"有感

工作十几年了,拿了这本书看看,可以引起很多思想的共鸣,也能对淘宝的技术发展有一个大致的了解。读完这本书,可以看到淘宝技术力量的雄厚,以及支撑淘宝技术发展的技术人员的坚持。总体来说有一下几个特别感受:1。马总(马云)的确是商业奇才,眼光独到。当年做淘宝时为迅速占领市场,买了个系统做基础,派几个人进行开发,奠定了今日淘宝的商界地位,一个字“快”。这给我一个深刻启示,商机面前一定要快速响应,不能总抱

2013-07-12 00:08:42 1897

原创 实时统计分析技术浅谈

实时统计分析技术主要是为了满足数据应用中大家对数据的变化情况有一个较高时间灵敏度需求的情况。应用要求能够近乎及时的反映数据的整体变化情况。那么实时统计分析的核心关键点是实时性,也就是性能。其还伴有另一个明确的特征,就是对于要统计的内容是十分明确的。    传统上,我们的数据统计分析方法是在一个关系数据库中创建表,然后将数据存储到表中。最后利用SQL语句从数据库中统计获得自己需要的统计结果。以此

2013-05-22 08:40:32 2684

原创 MOQL—筛选器(Selector)(三)

HAVING子句         与SQL语法一致,描述了对group by子句中产生的组数据进行过滤的过滤条件。Having子句中的所有字段都需要是select子句中的列,与where不同的是,这里是对分组结果数据的过滤,而where是对原始表数据进行的。[having SEARCH_CONDITION]SEARCH_CONDITION为具体的查询条件

2013-05-14 01:16:44 980

原创 MOQL—筛选器(Selector)(二)

FROM子句         描述了查询从哪些数据表中获取数据。语法如下:from TABLE [[as]ALIAS] [,...][[inner|left|right|full]join] TABLE [[as]ALIAS][onSEARCH_CONDITION] [...]] TABLE [[as]ALIAS][,

2013-05-07 23:26:24 1131

原创 MOQL—筛选器(Selector)(一)

Selector是MOQL提供的最核心的功能,它相当于SQL(结构化查询语言)中DQL(数据查询语言)的功能,即我们通常所说的Select关键字所描述的查询功能。它能够对Java内存中的对象数据进行查询、统计以及集合(如:UNION)操作。它可用于对持续不断产生的数据进行实时统计。即预先设定好统计条件,然后每当有数据产生就将其交给Selector进行统计分析。Selector会累计统计这些不断产生

2013-05-06 09:57:33 1080

原创 MOQL—过滤器(Filter)

Filter是MOQL提供的主要功能之一,它支持SQL语法中Where部分的语法描述,能够通过编写条件语句对内存中的数据进行条件匹配。它可以用于对从数据库中查询回的数据集进行二次查询的功能;还能够用于数据处理时对数据流的实时过滤等。Filter功能建立在Operand的基础上,Operand决定了能对哪些数据进行过滤。简单来说包括:常量、变量、数组、集合、对象等(详见文章MOQL—Oper

2013-04-15 09:16:52 1052

原创 MOQL--操作数(Operand) (四)

表达式Operand        表达式Operand是MOQL语法中格式最丰富且复杂的一类、。它包括数组表达式、数学运算表达式以及成员表达式三种类型。另外,在MOQL源代码中我们还可以看到,表达式Operand至少还包括关系运算表达式以及逻辑运算表达式。但这两种表达式无法通过MoqlUtils.createOperand()直接创建,它们必须应用在过滤器(Filter)中。我们将在过滤器(

2013-04-11 08:13:00 2183

原创 MOQL--操作数(Operand) (三)

函数Operand        函数Operand的格式如下:函数名(参数1,参数2…)。函数名与Java语法中标示符的命名规范一致,该命名规范已在变量Operand中进行了描述。其每一个参数都是一个Operand,Operand可以是常量、变量、函数或者表达式中的任意一种。如:sum(a)、_formatTime(‘yyyy-mm-dd’,getCurrentTime())、rando

2013-04-06 10:11:40 1081

原创 MOQL--操作数(Operand) (二)

常量Operand        Operand支持的常量类型包括字符串型(String)、双浮点型(Double)、长整型(Long)以及NULL类型。           字符串Operand的格式与SQL中字符串的格式一致。字符串的两端需要用单引号(‘)包围,如:’String’、’字符串’、’123’、’123.1’、’null’等都表示字符串。当字符串中也需要包含单引号(‘)时,

2013-04-05 10:52:10 818

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除