精华内容
下载资源
问答
  • Kettle8.2转换组件之唯一行(HashSet)一、相关说明二、设计转换三、转换配置四...注意: 唯一行(哈希值)和(排序记录+去除重复记录)效果一样的,但是实现的原理不同!唯一行(哈希值)执行的效率会高一些! 二、设

    一、相关说明


    • 需求说明:
      从Excel读取数据,去除其中重复的字段,并把结果数据保存在数据库表中。
    • 唯一行组件说明:
      唯一行(哈希值)就是删除数据流重复的行。删除重复的行,并仅筛选作为该步骤输入数据的惟一行。它跟踪内存中的重复行,并且不需要排序输入来处理重复行。
    • 注意: 唯一行(哈希值)和(排序记录+去除重复记录)效果一样的,但是实现的原理不同!唯一行(哈希值)执行的效率会高一些!由于内存分配问题,此步骤适用于非客户机机器。所需的内存和硬件数量将根据您正在处理的数据的大小而变化。另外,您也可以将此步骤与Spark处理引擎一起使用,以帮助克服内存约束问题。

    二、设计转换


    • 输入:Excel输入
    • 转换: 唯一行(哈希值)
    • 输出:表输出
      在这里插入图片描述

    三、转换配置


    • Step1:Excel输入组件配置

      • 双击组件,写上步骤名称等
        在这里插入图片描述在这里插入图片描述
    • Step2:唯一行(哈希值)组件配置

      • 双击打开,设置步骤名称
      • 配置信息,如下
        在这里插入图片描述
    • Step3:表输出组件配置

      • 双击打开,设置步骤名称

      • 配置信息,如下
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

      • 保存转换

        上述配置好后,点击确定即可!

    四、运行转换


    • 点击运行按钮,成功运行如下:
      在这里插入图片描述

    五、查看结果


    • 数据库表中查看结果
      在这里插入图片描述

    • Preview data中查看结果
      在这里插入图片描述

    • 执行流程
      E:Excel读取源文件中的数据到行集中进行缓存
      T:通过Hop读取行集中的数据流,通过经唯一行(哈希值)删除重复记录,将结果数据缓存再rowsets中
      L:通过Hop读取上一个步骤传递过来的行集数据,并将其写出到数据库表中

    展开全文
  • 那天给兰州石化矿区服务事业部的领导处理Excel表格!发现在35400行数据中提取重复时,竟然耗时3小时,当时使用的是普通算法进行查找的!严重的时间消耗让我不得不修改提取重复的程序了!之后第二天,我详细的...
     

    那天给兰州石化矿区服务事业部的领导处理Excel表格!发现在35400行数据中提取重复值时,竟然耗时3小时,当时使用的是普通算法进行查找的!严重的时间消耗让我不得不修改提取重复值的程序了!之后第二天,我详细的研究了一下。突然,想起在大学时,主修计算机科学与技术时的数据结构算法-哈希算法!然后,重新开始复习功课......不久,我搞出了这个算法,真感叹这优秀的算法的效率!在P4CPU+1GB的内存的硬件支持下,查找并提取75420条数据中的重复值,耗时才3秒!各位请注意了,是3秒呀!哈哈!速度是超级超级的快!眨眼间,将所有的重复值给提取出来了!v5.0与v4.0相比,耗时几乎可以忽略不计!下面将该段VBA代码公布出来,与大家一起研究!
    '*************************************************************
    '             哈希算法查找资产号重复值程序 v5.0
    '使用普通的算法,对每个值进行向下遍历,虽然效率上已经提高了一倍,
    '但是在运算时间上任然耗时非常严重,19840条数据竟然耗时2小时40分
    '钟,效率严重低下,使用哈希算法后耗时骤然下降,效率非常的高!查找
    '65535行数据,耗时不到5秒钟,对于在海量的数据里提取重复值非常有用
    '*************************************************************
    Option Explicit
    Private Type HashItem
         Value As String               '记录重复的值
         Count As Long                 '记录重复的次数
         Content(1 To 10) As String     '记录重复值出现的位置
    End Type
    Const Table_Len = 1000000         '哈希表的长度
    Public Sub FindRepeate()             '查找资产号重复值
    Dim HashTable(1 To Table_Len) As HashItem
    Dim i As Long, j As Long, k As Long, Key As Long, oi As Long
    Dim maintemp As String, wi As Long, ri As Long
    Dim AssetColName As String, ws As Worksheet, arrinfo() As String, fieldname() As String
    '****************************************************
    '初始化系统参数
    oi = 1                         '标记结果工作表中初始的写入行号
    AssetColName = "E"     '标识资产号所在的列的列名,如果档案的格式不同,可以修改该值
    '****************************************************
    '初始化重复值结果工作表开始
    Debug.Print "开始时间:" & Now
    For i = 1 To Worksheets.Count   '先判断"重复值结果"工作表是否存在,如果存在则将句柄传给ws,并初始化
         If Worksheets(i).Name = "重复值结果" Then
             Set ws = Worksheets(i)
             ws.Move After:=Worksheets(Worksheets.Count)
             ws.Cells.Select
             Selection.Delete Shift:=xlUp
             GoTo toBegin
         End If
    Next i
    Set ws = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    ws.Name = "重复值结果"
    toBegin:
    ws.Activate
    ws.Range("A" & oi & ":O" & oi).Select
    ws.Range("A" & oi & ":O" & oi).Merge
    ws.Range("A" & oi & ":O" & oi).Value = "表计资产号重复数据列表"
    oi = oi + 2
    ws.Cells.Select
    Selection.NumberFormatLocal = "@"
    fieldname = Split("序号,用户编号,用户名,门牌号码,表计资产号,计量点编号,表计类型,集中器号,采集器号,总配置,分配置,通讯相位,AIMS源,描述,备注", ",")
    For i = 1 To UBound(fieldname) + 1
         ws.Cells(2, i) = fieldname(i - 1)
    Next i
    ws.Cells(1, 1).Select
    '初始化重复值结果工作表结束
    '****************************************************
    '开始查找重复值
    For i = 1 To Worksheets.Count - 1
         For j = 2 To Worksheets(i).UsedRange.Rows.Count
             maintemp = Replace(Worksheets(i).Range(AssetColName & j).Value, " ", "")
             If IsIllegal(maintemp) Then GoTo toNextRow
             Key = GetHashKey(maintemp)
             If HashTable(Key).Value = "" Then
                 HashTable(Key).Value = maintemp
                 HashTable(Key).Count = 1
                 HashTable(Key).Content(1) = i & "," & j
             ElseIf HashTable(Key).Value = maintemp Then
                 HashTable(Key).Count = HashTable(Key).Count + 1
                 HashTable(Key).Content(HashTable(Key).Count) = i & "," & j
             Else
                 For k = Key + 1 To Table_Len
                     If HashTable(k).Value = "" Then
                         HashTable(k).Value = maintemp
                         HashTable(k).Count = 1
                         HashTable(k).Content(1) = i & "," & j
                         Exit For
                     ElseIf HashTable(k).Value = maintemp Then
                         HashTable(k).Count = HashTable(k).Count + 1
                         HashTable(k).Content(HashTable(k).Count) = i & "," & j
                         Exit For
                     End If
                 Next k
             End If
    toNextRow:
         Next j
    Next i
    '查找正式结束
    '开始统计重复值,并进行列表显示
    ws.Activate
    For i = 1 To Table_Len
         If HashTable(i).Count >= 2 Then
             For j = 1 To HashTable(i).Count
                 Erase arrinfo
                 arrinfo = Split(HashTable(i).Content(j), ",")
                 wi = CLng(arrinfo(0)): ri = CLng(arrinfo(1))
                 ws.Range("A" & oi & ":L" & oi).Value = Worksheets(wi).Range("A" & ri & ":L" & ri).Value
                 ws.Range("M" & oi).Value = Worksheets(wi).Name & "表中第" & ri & "行"
                 ws.Range(AssetColName & oi).Select
                 Selection.Interior.ColorIndex = 3
                 oi = oi + 1
             Next j
             ws.Range("N" & oi - HashTable(i).Count & ":N" & oi - 1).Select
             Selection.Merge
             Selection.Value = HashTable(i).Count & "行数据资产号重复"
             oi = oi + 1
         End If
    Next i
    '对显示出来的信息进行格式处理
    ws.Activate
    If oi = 3 Then
         ws.Range("A" & oi & ":O" & oi).Select
         ws.Range("A" & oi & ":O" & oi).Merge
         ws.Range("A" & oi & ":O" & oi).Value = "目前档案中暂未发现表计资产号重复数据-运气不错"
         ws.Range("A1:O" & oi).Select
         GoTo toEnd
    End If
    ws.Range("A1:O" & oi - 2).Select
    toEnd:
    With Selection
         .HorizontalAlignment = xlCenter
         .VerticalAlignment = xlCenter
         .Borders(xlEdgeLeft).LineStyle = xlContinuous
         .Borders(xlEdgeTop).LineStyle = xlContinuous
         .Borders(xlEdgeRight).LineStyle = xlContinuous
         .Borders(xlEdgeBottom).LineStyle = xlContinuous
         .Borders(xlInsideVertical).LineStyle = xlContinuous
         .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    End With
    ws.Columns("A:O").Select
    ws.Columns("A:O").EntireColumn.AutoFit
    ws.Range("A1:O1").Select
    Set ws = Nothing   '释放ws句柄
    Debug.Print "结束时间:" & Now
    '统计正式结束,任务完成
    End Sub
    Private Function GetHashKey(ByVal s As String) As Long
    Dim i As Byte, d As Double
    For i = 1 To Len(s)
         d = d - (Asc(Right(s, i)) + i) ^ 2
    Next
    GetHashKey = Int(Table_Len * Rnd(d) + 1)
    End Function
    Private Function IsIllegal(strIllegal As String) As Boolean     '检验字符串是否为非法列表中的一项
    If strIllegal = "" Then IsIllegal = True: Exit Function
    If Asc(Left(strIllegal, 1)) < 0 Or Asc(Left(strIllegal, 1)) > 255 Then
    IsIllegal = True
    Exit Function
    End If
    End Function

    展开全文
  • 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时...
  • 1)使用office2john.py计算哈希值:https://github.com/openwall/john/tree/bleeding-jumbo/run python office2john.py 11.xlsx > hash.txt 比如,我测试口令为 aa,则文件为: 11.xlsx:$office$*2013*...

    感谢同学:nearlee的大力帮助,:)

    1)使用office2john.py计算哈希值:https://github.com/openwall/john/tree/bleeding-jumbo/run

    也可使用  https://www.openwall.com/john/

    python office2john.py 11.xlsx > hash.txt

    比如,我测试口令为 aa,则文件为:

    11.xlsx:$office$*2013*100000*256*16*37097e466ab84a7bbee734962f3fd5cb*ba1b5b688561b75d5a4457fa330a177e*b675f52ee8ba4c43875ecfeb43a1f65f63eabe32034928df0051fa15ef565846
    

    2)去掉多余的字符,

    其他页面是在linux下用的,所以用了一个命令,就是把:分割后的第2部分留下:

    awk -F ":" '{print $2}' > hash1.txt

    我在windows下,使用nodepad++,更加好用,结果为:

    $office$*2013*100000*256*16*37097e466ab84a7bbee734962f3fd5cb*ba1b5b688561b75d5a4457fa330a177e*b675f52ee8ba4c43875ecfeb43a1f65f63eabe32034928df0051fa15ef565846
    

    3)下载hashcat6.1.1 ,官方地址为 https://hashcat.net/hashcat/

    我直接下载了二进制版本,使用方法参考:https://blog.werner.wiki/hashcat-attack-modes/

    我使用的命令是:

    D:\hashcat-6.1.1>hashcat.exe -a 3 -m 9600 d:\hash1.txt

    一段时间后看到:cracked就是结束了:

    Session..........: hashcat
    Status...........: Cracked
    Hash.Name........: MS Office 2013
    Hash.Target......: $office$*2013*100000*256*16*37097e466ab84a7bbee7349...565846
    Time.Started.....: Tue Feb 02 15:45:15 2021 (4 secs)
    Time.Estimated...: Tue Feb 02 15:45:19 2021 (0 secs)
    Guess.Mask.......: ?1?2 [2]
    Guess.Charset....: -1 ?l?d?u, -2 ?l?d, -3 ?l?d*!$@_, -4 Undefined
    Guess.Queue......: 2/15 (13.33%)
    Speed.#2.........:       49 H/s (0.42ms) @ Accel:4 Loops:64 Thr:1024 Vec:1
    Recovered........: 1/1 (100.00%) Digests
    Progress.........: 216/2232 (9.68%)
    Rejected.........: 0/216 (0.00%)
    Restore.Point....: 0/36 (0.00%)
    Restore.Sub.#2...: Salt:0 Amplifier:5-6 Iteration:0-1
    Candidates.#2....: aa -> aq
    Hardware.Mon.#2..: Temp: 52c Util: 89% Core:1785MHz Mem:6000MHz Bus:16
    
    Started: Tue Feb 02 15:44:06 2021
    Stopped: Tue Feb 02 15:45:20 2021

    执行后会将口令附加在后面:

    D:\hashcat-6.1.1>hashcat.exe -a 3 -m 9600 d:\hash1.txt --show
    $office$*2013*100000*256*16*37097e466ab84a7bbee734962f3fd5cb*ba1b5b688561b75d5a4457fa330a177e*b675f52ee8ba4c43875ecfeb43a1f65f63eabe32034928df0051fa15ef565846:aa

    最后面,就是aa

    4)附录一些命令说明:

    -m 9600 是因为识别了office2013版本,使用这个参数代表类型;

    -a 3 是使用暴力破解。

     

     

     

    展开全文
  • excel-data-generator-源码

    2021-03-05 10:48:12
    生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时...
  • (分别还有利用哈希表实现的unordered版本)其中,字典(映射)的键(Keys)可视作组成一个相应类型的集合。 对于集合或字典的读取,经典操作有两个:判断目标元素是否在集合当中、根据目标键获取相应。 这篇...

     

     本文字数: 1.2k   阅读时长 ≈ 2 分钟

    集合与字典(映射)是程序设计当中常见的两种容器类型。在 C++ 的标准模板库中,它们的实现分别是 std::set/std::multiset 与 std::map/std::multimap。(分别还有利用哈希表实现的 unordered 版本)其中,字典(映射)的键(Keys)可视作组成一个相应类型的集合。

    对于集合或字典的读取,经典操作有两个:判断目标元素是否在集合当中、根据目标键获取相应值。

    这篇文章讲讲在 Excel 中如何实现这两个功能。

    MATCH 函数

    Excel 中的 MATCH 函数原型是 MATCH(lookup_value, lookup_array, [match_type])。函数可接受 3 个参数,其中前两个为必选参数,第三个为可选参数。第一个参数表示要被查找的值,第二个参数表示要在哪个范围查找,第三个参数表示如何匹配(0 表示相等,-1 表示小于,1 表示大于)。如果匹配成功,则函数返回目标值在范围内的索引,否则报错。

    假设有下图所示的 namebook 表。

     

    现在我们要看看下列人物是否登记在册。

     

    对于 B2 单元格,我们可以用这样的函数 =NOT(ISERROR(MATCH(A2,namebook!$A$2:$A$4,0)))。这里核心是刚才介绍的 MATCH 函数。我们利用 ISERROR 函数判断 MATCH 函数是否报错——若报错说明查无此人,否则说明登记在册。最后,再用 NOT 函数反转上述真值。如此则有如下图所示的结果。

     

    如此,我们就利用 MATCH 函数(搭配 ISERROR 和 NOT 两个函数)实现了判断目标元素是否在集合当中的功能。

    XLOOKUP 函数

    Excel 中的 XLOOKUP 函数原型是 XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])。函数可接受 6 个参数,其中前 3 个为必选参数,后 3 个为可选参数。第一个参数表示要被查找的值,第二个参数表示要在哪个范围(数组)查找,第三个参数表示返回的值在哪个范围(数组),第四个参数表示若未找到返回什么。最后两个参数是高级功能,参见微软的文档。如果匹配成功,假设目标值在待查数组中的索引为 i,则函数返回返回值数组下标 i 的单元格内容,否则报错或填入 if_not_found 内容。

    还是看刚才的 namebook 表。

     

    现在我们要看看下列人物是否登记在册,若登记在册的话登记身高是多少。对于 B2 单元格,我们可以用这样的函数 =XLOOKUP(A2,namebook!$A$2:$A$4,namebook!$B$2:$B$4,"未登记在册")

     

    展开全文
  • 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署! 有关更多信息,请参见关于的部分。 yarn eject 注意:这是单向操作。 eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时...
  • 格式统一处理,去除非关键信息,查询数位物件识别号,计算哈希值,将检索特征插入特征字典之中,以此设计图书馆电子资源自动去重流程。由实验结果可知,该方法去重时间较短,能够有效应用于图书馆信息获取与统计工作...
  • Python基础3

    2019-01-28 17:22:47
    Python基础3dict字典创建字典访问字典中的修改字典删除字典元素set集合创建比较删除取交集判断合并取并集更新file文件读取读文件操作excel和CSV文件题目 dict字典 创建字典 字典由键(key)和对应(value)成...
  • python--pandas学习总结

    2021-02-16 17:59:26
    一、Series和DataFrame Pandas特别适合处理表格数据,如SQL表格、EXCEL表格。有序或无序的时间序列。具有行和列标签的任意矩阵数据。...索引可不唯一,但必须是可哈希的。 pd.Series([1,3,5,np.nan,...
  • ITween插件

    2019-02-25 11:07:29
    此函数的哈希表key有:name,amount,time,delay,easetype,looptype,onstart等,KEY作用以及参考提供的EXCEL文档中的HASHTABLE项 5)CameraFadeFrom(float amount,float time) CameraFadeTo(Hashtable args) //从...
  • Helper Master

    2017-12-18 22:11:27
    Public class HashDEncrypt 得到随机安全码(哈希加密)。 Public class HtmlHelper Html操作相关类 Public class ImageDown 图片下载 Public class ImageHelper 图片处理帮助类 Public class ImageUpload 图片...
  • C#基础类库

    2018-07-11 08:45:26
    哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security Base64/Security文件加密,以及一些常用的操作方法 RSACryption RSACryption--RSA加密/RSA...
  • 现在,大多数下载站点都会在下载链接附件列出该文件的MD5哈希值。而如果使用者没有注册,在每次打开BoxFONTS时,都需要等待15秒钟,才能按下OK钮,进使用的画面中。SelectByExtension(根据扩展名选定)。更可贵的是...
  •  实例107 使用哈希表对XML文件进行查询 127  实例108 计算两个矩形矩阵的乘积 129  第5章 面向对象编程技术 131 5.1 属性和方法 132  实例109 使用属性存储用户编号和姓名 132  实例110 通过定义方法求一...
  • 实例107 使用哈希表对XML文件进行查询 127 实例108 计算两个矩形矩阵的乘积 129 第5章 面向对象编程技术 131 5.1 属性和方法 132 实例109 使用属性存储用户编号和姓名 132 实例110 通过定义方法求一个数的平方 133 ...
  • 实例107 使用哈希表对XML文件进行查询 实例108 计算两个矩形矩阵的乘积 第5章 面向对象编程技术 5.1 属性和方法 实例109 使用属性存储用户编号和姓名 实例110 通过定义方法求一个数的平方 实例111 使用重载...
  • 实例107 使用哈希表对XML文件进行查询 实例108 计算两个矩形矩阵的乘积 第5章 面向对象编程技术 5.1 属性和方法 实例109 使用属性存储用户编号和姓名 实例110 通过定义方法求一个数的平方 实例111 使用重载...
  • 实例107 使用哈希表对XML文件进行查询 实例108 计算两个矩形矩阵的乘积 第5章 面向对象编程技术 5.1 属性和方法 实例109 使用属性存储用户编号和姓名 实例110 通过定义方法求一个数的平方 实例111 使用重载...
  • C#基类库(苏飞版)

    2014-05-16 23:11:45
    哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security Base64/Security文件加密,以及一些常用的操作方法 RSACryption RSACryption--RSA加密/RSA...
  • 第7章 数据绑定控件

    2011-05-27 11:23:57
    实例197 获取GridView控件中隐藏的列 314 实例198 在GridView控件中实现商品信息 自动编号 315 实例199 GridView绑定数据为空时的界面设计 316 实例200 GridView强制换行显示论坛帖子的 详细信息 317 实例201 查看...
  • 实例197 获取GridView控件中隐藏的列 314 实例198 在GridView控件中实现商品信息 自动编号 315 实例199 GridView绑定数据为空时的界面设计 316 实例200 GridView强制换行显示论坛帖子的 详细信息 317 实例201 查看...
  • 实例228 利用聚合函数COUNT求日销售额大于某的商品数 实例229 用First或Last求数据表中第一条或最后一条 7.11 多表查询(连接查询) 实例230 多表连接查询 实例231 在连接查询中使用表别名 实例232 使用...
  • 实例228 利用聚合函数COUNT求日销售额大于某的商品数 实例229 用First或Last求数据表中第一条或最后一条 7.11 多表查询(连接查询) 实例230 多表连接查询 实例231 在连接查询中使用表别名 实例232 使用...
  • 3.30 分行取textarea中的 3.31 自动插入文本 3.32 选取textarea的指定行 3.33 文本放大镜 3.34 文本框的默认输入法 3.35 文本框显示网页中选中的内容 3.36 文字的垂直滚动 3.37 文字幻灯片 3.38 随机动态文字效果 ...
  • 第1章 页面特效 ...1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 ...22.16 JavaScript制作哈希表 第23章 其他技巧及特效 23.1 ...
  • 实例105 重新计算对象的哈希码 实例106 简化hashCode()方法的重写 实例107 使用字符串输出对象 实例108 简化toString()方法的重写 5.6 克隆与序列化 实例109 Java对象的假克隆 实例110 Java对象的浅克隆 实例...
  • 实例105 重新计算对象的哈希码 实例106 简化hashCode()方法的重写 实例107 使用字符串输出对象 实例108 简化toString()方法的重写 5.6 克隆与序列化 实例109 Java对象的假克隆 实例110 Java对象的浅克隆 实例...
  • 实例105 重新计算对象的哈希码 实例106 简化hashCode()方法的重写 实例107 使用字符串输出对象 实例108 简化toString()方法的重写 5.6 克隆与序列化 实例109 Java对象的假克隆 实例110 Java对象的浅克隆 实例...
  • 实例105 重新计算对象的哈希码 实例106 简化hashCode()方法的重写 实例107 使用字符串输出对象 实例108 简化toString()方法的重写 5.6 克隆与序列化 实例109 Java对象的假克隆 实例110 Java对象的浅克隆 实例...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

哈希值excel