zoukankan      html  css  js  c++  java
  • 3亿(int)数据-2亿(int)数据 求差集

    两个大文本,每行一条int数据

    3亿(int)数据-2亿(int)数据 求差集

    原始(粗暴)办法

    1redis set 或类似方案
    本地内存 cpu都撑不住

    2持久化两张表 sql join
    mysql join是两层暴力for的性能太差,还是单线程的
    sqlserver 三种join方式,1两层for,2有序列优化join,3 hash join,该场景可用有序列进行join(int型数 hash join没啥意义),性能远胜两层暴力for,另外sqlserver多线程计算优化
    orcal 和sqlserver类似 细节或有区别,不是很熟悉,反正比mysql强

    3 sql insert文本1,遍历文本2 update 再select


    sqlserver 本机mac需要 https://hub.docker.com/r/microsoft/mssql-server-linux

    4hadoop map/reduce 本身自带sort,说到底和sqlserver join原理差不多,同时用到了多机,多进程/线程

    4linux命令 grep sort 之类

    5bitmap

    直接用redis 作位运算 代码都不用写多少

    大量int型数据,交差并都都优先考虑bitmap

    用redis的 bit 有位数限制

    offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。

    单key放不下,就多用几个

    redis [key] = val/(2^32)  

    [key] [offset] = val%(2^32) 

    setbit [key] [offset] 1

  • 相关阅读:
    守护线程与普通线程
    Java中实现多线程的两种方式之间的区别
    Python os.dup() 方法
    Python os.closerange() 方法
    Python os.close() 方法
    Python os.chroot() 方法
    Python os.chmod() 方法
    JavaScript——基本包装类型
    javascript——function类型(this关键字)
    常用的正则
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/7338168.html
Copyright © 2011-2022 走看看