容器、数组效率差距到底有多大,如果换为本地方法呢?

1.遍历容器和数组的时候,效率差距会很大吗?如果考虑容器是线程安全的,差距大多少?
2.本地方法会提升遍历的性能吗?

回答: 容器、数组效率差距到底有多大,如果换为本地方法呢?

  1. 数组操作很多都是native的吧?
    理论上应该是最快的了

    如果实战,
    需要一定灵活度,比如不知道要装多少东西,
    用ArrayList就行,它里面也是Object数组的实现。

    至于快多少快几倍,
    现在的软硬件环境应该能提供很好的运行平台,
    可以忽略不计了(个人感觉)

    good luck

socket的同步与异步之间的效率差距是有多大?

  1. Q
    linux epoll的et模式与posix aio还有windows IOCP比较,效率上能差多少?aio和IOCP要给每个连接分派缓冲区,是不是在大数据、多连接、低并发的时候表现很差阿?费内存还容易丢数据?而且*nix对aio的支持好像一直都不是很好的样子
  2. A
    建议在asio(standalone版的boost::asio)和libev之间选择,没有必要重头开始做。 

    个人比较喜欢asio. 

    性能差别很大部分原因在于: 能否针对具体案例正确使用lib应用。 

到底什么叫大数据~

  1. Q
    最近在看小日本伊藤直也 田中慎司的书.发现干货很多啊.
    上来第一篇就提出来啥叫大数据.
    到底什么叫大数据~


    各位大牛~ 到底啥叫大数据? 我觉得这个是相对的概念吧.

    或者各位谁还有网站结构方面的书能推荐给小弟吗.

    我知道这是个水贴~ 所以大侠们尽情来水吧
  2. A
    大数据,没有一个具体的定义吧。。建议楼主去看百度词条。。。自己问度娘,那个说的也挺不错的。

新手:如果在一个基类的数组里放一个继承类的object,那数组初始化时要分配多大空间呢?

  1. Q
    如果在一个基类的数组里放一个继承类的object,那数组初始化时要分配多大空间呢?

    数组是按尺寸最大的继承类来初始化空间的吗?
  2. A
    我是这样理解的:继承类存放到基类数组中,只有从基类继承的成员才能存放或调用

求数据量大,高效的分页方法。带查询参数的。

  1. Q
    求数据量大,高效的分页方法。带查询参数的。
  2. A

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
    --名称:分页存储过程
    --使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10
    --注意 
    --目前还没有对输入的参数进行严格的验证
    --默认为输入都是合法有效的

    ALTER  PROC sp_PageIndex
     @sqlSelect varchar(800) --SELECT 后面 FROM 前面 的 字段 不用包含SELECT
    ,@sqlFrom varchar(800) --FROM 后面 的 字段 包含FROM
    ,@countPerPage int -- 每页数据行数
    ,@toPage int --要转到的页码

    AS

    BEGIN


    -- 根据每页数据行数 和 要转到的页码 得到 数据起止点
    Declare @start int
    Declare @end int

    set @end = @countPerPage * @toPage
    set @start = @countPerPage * (@toPage - 1) + 1


    -- 临时表名称 可随机命名
    Declare @tmpTable varchar(10)
    SET @tmpTable ='#tmp'

    Declare @sqlStr varchar(800)
    -- 创建数据源到临时表
    SELECT @sqlStr = 'SELECT Identity(int,1,1) AS RowIndex,'
    SELECT @sqlStr = @sqlStr + rtrim(@sqlSelect) + ' INTO  '+ @tmpTable 
    SELECT @sqlStr = @sqlStr + rtrim(@sqlFrom) 
    -- 查询临时表 得到所需要的数据
    SELECT @sqlStr = @sqlStr + ' '+'SELECT '+ rtrim(@sqlSelect) +' FROM ' + @tmpTable 
    SELECT @sqlStr = @sqlStr + ' WHERE  RowIndex BETWEEN ' + Convert(char,@start) + " AND " + Convert(char,@end)
    -- 删除临时表
    SELECT @sqlStr = @sqlStr + ' '+'DROP TABLE '[email protected]
    EXEC (@sqlStr)


    END


    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

混合硬盘和纯固态硬盘开机速度到底有多大差距?

  1. Q
     内置了8个G或者24G高速缓存的机械盘开机速度快么,在纯固态盘的机子上加装机械盘会影响开机速度吗。
  2. A
    混合硬盘开机速度还不错,混合硬盘的理念就是降低成本提高速度。纯固态的机器上加装不了机械,因为只有一个硬盘接口而且是msata或者ngff。

二维数组批量赋值问题,求大神救救!

  1. Q

    Dim FT_Sig
    Private Sub all()
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim FileName, SheetName As String
        Dim n As Long
        
        FileName = Application.GetOpenFilename("CSV文件 (*.csv), *.csv", 0, "选定文件", , False)
        If FileName = False Then Exit Sub
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open(FileName)
        xlApp.Visible = False
        SheetName = xlBook.Sheets(1).Name
        Set xlSheet = xlBook.Worksheets(SheetName)
        Set xSht = Sheets("Codec")
        n = xlSheet.Range("AV37", xlSheet.Range("AV37").End(xlDown)).Cells.Count
        FT_Sig = Application.Transpose(xlSheet.Range("AV37", xlSheet.Range("AV37").End(xlDown)).Value)
        xlBook.Close (True)
        xlApp.Quit
        Set xlApp = Nothing
    End Sub


    上面这个FT_Sig是一维数组,用Application.Transpose将特定一列单元格内容转置然后批量赋值给FT_Sig,我试过了,完全没有问题,但是请看下面代码,需要打开多个文件,将每个文件里的特定一列分别批量赋值给二维数组,可是怎么就是不行呢?求大神帮帮我吧!:

    Dim FT_Sig
    Private Sub all()
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim FileNames, CurFileNames, SheetName
        Dim i, n As Long
        Dim m, FileNum As Integer
        Dim vKey, vKey1, vKey2 As Variant
        
        
        FileNames = Application.GetOpenFilename("CSV文件 (*.csv), *.csv", MultiSelect:=True)
        If VarType(FileNames) = vbBoolean Then Exit Sub
        m = UBound(FileNames)
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = False
        ReDim FT_Sig(m)
        FileNum = 0
        For Each vKey In FileNames
            FileNum = FileNum + 1
            Set xlBook = xlApp.Workbooks.Open(vKey)
            SheetName = xlBook.Sheets(1).Name
            Set xlSheet = xlBook.Worksheets(SheetName)
            Set xSht = Sheets("Codec")
            n = xlSheet.Range("AV37", xlSheet.Range("AV37").End(xlDown)).Cells.Count
            i = n + 1
            Do
                i = i - 1
            Loop Until xlSheet.Cells(i + 36, 2).Value = "FT"
            FT_Sig(FileNum) = Application.Transpose(xlSheet.Range("AV37", xlSheet.Range("AV37").Offset(i - 1, 0)).Value)
    xlBook.Close (True)
        Next
        MsgBox FT_Sig(2, 5)
        xlApp.Quit
        Set xlApp = Nothing
    End Sub
  2. A
    你这个FT_Sig二维数组是不是需要先显式地声明并申请空间呀?调试过没有,FT_Sig的类型到底是什么?

可读性和简洁性以及效率,到底选择哪个?

  1. Q
    If a = b Then
        isOk = True
    Else
        isOk = False
    End If

    isOk = IIf(a = b, True, False)

    isOk = (a = b)
  2. A
    写代码就该规规矩矩 该是什么代码就写成什么样子

    是说isOk = (a = b)这种用法不规矩吗?
    其实类似这样的用法很多的:
    if a then
       ...
    endif

    if not b then
       ...
    endif

    xx.visible=not xx.visible

    总比这样写起来好一些:
    if a=true then
       ...
    endif

    if b=false then
       ...
    endif

    if xx.visible=true then
       xx.visible=fasle
    else
       xx.visible=true
    endif

ACCESS数据库的容量到底有多大?

  1. Q
    我现在正准备做一个工程,估计里面大约有300万条记录,我不知道用ACCESS能不能胜任,听说ACCESS数据库的容量最大只有2G,不知道是不是,如果ACCESS不行,那用那种数据库比较好点,当然要比较容易上手。谢谢!
  2. A
    sql server

Spark:从RDD检索大数据复制到本地计算机的最佳实践

  1. Q
    我得到了较大的RDD(1GB)的纱集群。在本地机器上使用这个集群时我只有512 MB。在我的本地机器遍历RDD值却无法使用collect(),因为它会在本地产生太大阵列并不断堆积。因此我需要一些迭代的方法,这个方法就是使用iterator(),但是它需要一些额外的要求,我并不能满足这些额外的要求。
  2. A
    最好的解决办法是通过分区来收集数据。 
    首先,取得分区的索引数组:
    val parts = rdd.partitions

    然后创建更小的RDD来过滤掉除了某个分区外的一切,。从较小的RDD收集的数据,并遍历单个分区的值:
    for (p <- parts) {
        val idx = p.index
        val partRdd = rdd.mapPartitionsWithIndex(a => if (a._1 == idx) a._2 else Iterator(), true)
        //The second argument is true to avoid rdd reshuffling
        val data = partRdd.collect //data contains all values from a single partition 
                                   //in the form of array
        //Now you can do with the data whatever you want: iterate, save to a file, etc.
    }

    这个代码虽然没有运行过,但是它应该能工作。如果它不能编译请留言,并附上不能运行的原因,而且代码需要在分区足够小的前提下运行。如果不是,你可以随时增加dd.coalesce(numParts, true)分区的数量。