精华内容
下载资源
问答
  • 这是整理发布的一款稳定性研究方面的问题与不足,稳定性研究方面的问题与不足能给你需要了解的...该文档为稳定性研究方面的问题与不足,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 问题与不足(KNN算法)

    千次阅读 2016-12-21 13:10:24
    问题与不足 论文题目:k-NearestNeighbors on Road Networks: A Journey in Experimentation and In-MemoryImplementation  一、主要内容 该论文主要研究了K Nearest Neighbor算法在主存中的应用,介绍了五种...

    问题与不足

    论文题目:k-NearestNeighbors on Road Networks: A Journey in Experimentation and In-MemoryImplementation 

    一、主要内容

    该论文主要研究了K Nearest Neighbor算法在主存中的应用,介绍了五种解决KNN算法的经典算法,分别是Incremental NetworkExpansion (INE)算法,Incremental Euclidean Restriction(IER)算法,Distance Browsing算法,Route Overlay and AssociationDirectory(ROAD)算法以及G-tree算法。

    本人通过查阅一系列资料对上述算法有了一定了解,并总结了上诉算法在实际应用的某些方面中存在的问题。

    二、算法中存在的问题

    1.Incremental Network Expansion

    Incremental Network Expansion(INE)采用了Dijkstra算法中的贪心思想,通过不断搜索与节点q最近的节点来扩展答案。INE算法的优点是思路清晰,实现简单,在数据量较小的情况下可以快速解决问题,并具有较高的准确性。但是该算法在面对海量数据时显得力不从心。特别是实际生活中物体之间的距离大多数需要用欧式距离来描述,遇到与复杂街区中的建筑物相关问题时,衡量建筑物之间的距离本身就是一个复杂的问题,所以难以比较网络中点的“实际距离”。其次,实际生活中抽象出的图往往是极其稠密的完全图,此时INE算法将难以使用优先队列来优化时间复杂度,因为采用存储优先队列存储其他顶点到目标节点q距离时,该算法时间复杂度可以达到O(|W|log|V|),其中V为图中顶点的数量,W为图中边的数量,此时W与V2的数量级相同,优化后的算法复杂度反而高过了朴素算法O(V2)的时间复杂度。

    2.Incremental Euclidean Restriction

    Incremental Euclidean Restriction (IER) 算法借助了R-tree之类的数据结构来进行预处理,是INE算法的一种优化算法。IER算法在实际数据的测试结果中快于普通的INE算法,但是IER算法无法保证R-tree预处理出来的集合一定包含优化解,极端情况下可能不包含所有的优化解,此时达到算法的最差时间复杂度,其最差时间复杂度与INR算法相同。也就是说,在实际应用中,IER算法可能出现不稳定的情况。

    3.Distance Browsing

    Distance Browsing(DisBrw)算法利用SILC索引减少了大量的优先队列插入操作,因而有更高的效率。但是采用优先队列存储其他顶点到目标节点q距离时,DisBrw算法依然无法避免部分节点多次重复入队出队的操作,使得部分情况下DisBrw算法对INE算法的优化不明显。

    4.Route Overlay & Association Directory

    Route Overlay and Association Directory (ROAD)算法通过划分冗余网络子系统和排除无效子系统的搜索剪枝优化了INE算法巨大的搜索空间,时空效率比INE有了明显的提升。

    ROAD算法利用捷径的概念避免了INE中大量没有必要的搜索,在一般情况下,ROAD算法具有良好的平均时空复杂度,但是ROAD算法的效率依赖于图划分的优劣,也具有一定的不稳定性。

    5.G-tree

           G-tree算法提供了一种新的图区域划分和层次划分方法,并就图的层次结构建立了一颗平稳的G-tree树,拥有稳定而高效的时间复杂度,同时该树空间复杂度也很稳定,为O(|V|log|V|),其中V为顶点数量。

    G-tree算法的主要问题在于其使用了复杂的数据结构和模型,其时间效率与算法本身距离矩阵的实现方式密切相关,针对不同规模和分布的数据使用不同的哈希表拥有不同的效率,这意味着G-tree算法的实际应用较为复杂。

    展开全文
  • 问题与不足——海明距离

    千次阅读 2015-12-31 16:44:34
    其实这是道很简单的搜索题,但是写完后感觉自己有很多问题,在此总结。题目大意对于二进制串a,b,他们之间的海明距离是指两个串异或之后串中1的个数 给你一些01串,每个二进制串都默认长度二十,求最小海明距离 ...

    其实这是道很简单的搜索题,但是写完后感觉自己有很多问题,在此总结。

    题目大意

    对于二进制串a,b,他们之间的海明距离是指两个串异或之后串中1的个数
    给你一些01串,每个二进制串都默认长度二十,求最小海明距离
    最多有100000个串

    分析

    暴力当然是两两枚举了。

    其实正解也是暴力,考虑到长度只有二十,他们变化最终也只有一百万左右种,然后用bfs每次对于队列中的一个数,都改变一位。明显,最先找到的相同的数,所来自的不同的数根源,就是距离最小的,因为他们改变的数是最少的,海明距离就是最小的。

    总结

    虽然题目很简单,但是打完之后,却总觉得打得不对,总有问题。结果证明真的有问题,调了半天原来是没有想到bfs找到答案时的细节:因为出答案的bfs到的那一层,是有可能与上一层匹配的,而如果本层和本层先找到匹配就直接跳出,会忽略前面的情况
    导致答案大了1。

    这个问题不是第一次犯了,想了很久,终于发现原因。平时每次打题前很兴奋,掌握大概步骤就开打了,殊不知是在碰运气,细节太多的题目,根本保证不了正确性。即使是这一题,没有想好处理答案就打,最后忽略掉,debug半天才找出错,然后还要对之前的程序各个部分开刀,极大浪费时间。就是因为一时之懒。这样每每一时懒,久而久之就越来越多思维漏洞,越来越不自信。从而打题越来越慢,越慢就越不想想,恶性循环。

    不只是信息学,平时文化课,特别是理科问题尤其凸显,文科也有一些。平时不认真,只是草草算个答案,考试就无所适从了,简单题弄好几遍还能错。我觉得语文老师说的一句话很对:做过一道题,就要认真对待,不然根本无用。贪图一时之快,痛苦长久。

    没有个认真的态度去做事,生活会很乱,如果这样,倒不如躺在床上什么都不干算了。应付的事会有,但不能很多。

    幸好早发现,在还没有什么大恶果的时候。

    展开全文
  • 如果二次开发人并没有对这步提前了解,那么,它如果手动拼凑出的数据包含特别字符,那么就会导致出错或是漏洞问题.这不会不可能吧? 然后这么做话.就得自己看数据是否原样,如果不是,就得再次对此数据进行转义,这就麻烦了...

    首先,发现它并不在数据库操作时进行


    /**

         * 将数组转换为SQL语句

         * @param array $where 要生成的数组

         * @param string $font 连接串。

         */

        final public function sqls($where, $font = ' AND ') {

            if (is_array($where)) {

                $sql = '';

                foreach ($where as $key=>$val) {

                    $sql .= $sql ? " $font `$key` = '$val' " : " `$key` = '$val'";

                }

                return $sql;

            } else {

                return $where;

            }

        }


    这是一种很蠢的做法.如果二次开发人并没有对这步提前了解,那么,它如果手动拼凑出的数据包含特别字符,那么就会导致出错或是漏洞问题.这不会不可能吧?


    然后这么做话.就得自己看数据是否原样,如果不是,就得再次对此数据进行转义,这就麻烦了.

    展开全文
  • weblogic调优memory内存不足与内存泄漏问题
  • Eclipse的内存优化内存不足问题 解决内存溢出的办法
  • 解决mapgis6.7出图jpg面填充方向颠倒内存不足问题补丁.zip
  • 今天分享实际工作中,在Linux下内存不足问题以及解决思路,希望可以帮助定位并且处理,系统性能问题。 内存不足的判断 做后台开发,常常会往某个设备回放报文冲流量,有时会遇到一些因为内存不足而导致编译失败的...

    今天分享实际工作中,在Linux下内存不足问题以及解决思路,希望可以帮助定位并且处理,系统性能问题。

    内存不足的判断

    做后台开发,常常会往某个设备回放报文冲流量,有时会遇到一些因为内存不足而导致编译失败的情况。最典型的是,使用gcc/g++编译出现internal compiler error:Killed,就是一个典型的因为内存(Memory)不足的错误。我们也可以提前用free命令查看。

    下面通过如下方法判断是否存在内存不存:

    执行命令 free,查看 -/+ buff开头一行的free列即为当前空闲内存

                 total       used       free     shared    buffers     cached
    Mem:         885600    818848    66752          0      21272      648200
    -/+ buffers/cache:     149376    736224
    Swap:      2064376      1352    206304
    

    使用top命令查看内存大小

    在这里插入图片描述
    注意:top 命令里有free字段,该字段并不是指当前的有效空闲内存大小。

    swap行的used如不为0,则表示系统使用了交换内存,这会导致换页操作,会导致io过高,这时很容易产生丢包。

    如果系统瓶颈为cpu运算,内存足够则需要避免使用交换内存,调整该功能的方法如下:

    echo “100” > /proc/sys/vm/swappiness

    在这里插入图片描述

    swappiness表示使用了多少内存才开始使用swap交换功能。也可以把设置写在 /etc/sysctl.conf
    中,即在该文件中追加一行:

    vm.swappiness = 100

    这样每次重启就会自动设置该值。

    内存使用的分配

    解决内存问题,实现需要知道哪些地方消耗了内存。内存消耗有如下个地方:应用程序,内核,内存文件系统,大页内存

    下面通过查看/proc/meminfo了解系统内存使用:

    在这里插入图片描述

    需要关注的是如下几点:

    AnonPages : 用户进程使用的内存,因为内存分配均采用匿名映射的方式mmap。

    Mapped :文件映射使用的内存,即mmap。

    SUnreclaimable :即不可回收的slap,这是内核消耗的内存。

    HugePages_Total :主动分配的大页内存。这个值如果过大,查看

    /sys/kernel/mm/hugepages/hugepages-xxkB/nr_hugepages

    xx为1024,2048,4096等,看这些文件有没有值,有则进一步查看
    是哪里设置的,为什么这样设置。
    

    在这里插入图片描述

    Shmem :共享内存,内存文件系统也是基于共享内存机制,这个值大,
    提示需查看内存文件系统:

    mount |grep ’ tmpfs '|awk ‘{print $3}’

    看看对应目录是不是有内容。

    查看用户进程使用的内存

    知道内存由用户进程引起后,需查出是哪个进程导致的,执行top

    在这里插入图片描述

    查看RES项即为进程当前分配的内存大小。

    VIRT指虚拟内存大小,即可能会用这么多内存,但是没给进给进程分配那么多内存。
    内存是按进程分的,所有看内存时不必查看个线程的内存使用。

    valgrind定位内存泄露

    如果使用top定期查看进程RES内存一致增大,不能稳在一个值上,就可能有
    内存泄露,可以使用valgrind辅助诊断。

    valgrind --tool=memcheck --leak-check=full ./t

    在这里插入图片描述

    运行一段时间按CTLL+C退出,如上图:
    definitely lost :表示检测出确定泄露的内存,也可以看出问题的行数。

    有时definitely lost 没问题,possibly lost有问题,或indirectly lost有问题,也要注意,需要看相应的代码才能判断是否有问题。

    有时在运行中,屏幕会不断有告警打印,这种情况也要注意,要分析打印的意思。

    注意:valgrind工具本身会极大拖慢程序的执行,很多情景下不能使用,或者结果不可信。

    内存不足导致进程被kill问题的处理

    有时进程莫名奇妙重启,没有段错误,需要怀疑是否发生了out of memory问题,导致kill掉进程,判断方法很简单,查看系统日志,可以使用dmesg 命令查看。

    内核耗内存过多的定位处理

    内核消耗内存过多现象比较好确定,就是看/proc/meminfo的SUnreclaimable,要查具体原因并不容易,原因一般为内核机制如消息队列消耗(这个还是由用户程序间接引起),新加的内核模块编写不好(通过卸载该模块是不会把内存降下来的)

    在这里插入图片描述
    建议的方法如下:

    查看那类slab消耗了内存,slab是内核内存分配的单元,不同的代码会使用不同名字的slab分配内存,使用下面命令检测slap的变化。

    slabtop命令:
    在这里插入图片描述

    如果某个slap会不断增大,问题会容易解决,此时只需用不断查看内核调用栈,总能提取到不断分配内存的调用栈,根据函数名就可以知道是什么地方导致问题。

    dmesg -c;echo “t" > /proc/sysrq-trigger ;dmesg > d.log

    消息队列使用不当,即写数据超过读数据,是导致内存耗尽的一个常见原因,此时,slabtop会显示,szie-4096的slab不断 增多,内核 调用栈也会提示是sys_sndmsg函数导致的 kmem_cache_alloc的执行。 怀疑消息队列有问题,执行命令查看详情:

    cat /proc/sysvipc/msg

    在这里插入图片描述
    上面的信息中,cbytes表示队列占用的内存,lspid发送者pid, lrpid接收者pid, 最后2项就可以找出问题的进程。

    总结

    今天主要写一写笔记,记录一下在实践中内存不足问题,以及处理。最后,合理规划和设计Linux内存的使用,是非常重要的!

    在这里插入图片描述
    欢迎关注微信公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料。或者回复:进入技术交流群。网盘资料有如下:

    在这里插入图片描述

    展开全文
  • mapgis6.7出图jpg面填充方向颠倒内存不足问题方法补丁.rar
  • Eclipse的内存优化内存不足问题 最近我的Eclipse总是崩溃 ,慢的要命,1G的内存好像也没用完阿,气死我了, 错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap ...
  • 本次记录用于记载在ubuntu...2. 本文遇到的问题是,因为在装系统的时候,并没有太过多的考虑各种硬盘空间的问题,所以时间久了,导致本文的/usr空间不足,但是这时候我的apt-get遇到了各种相互依赖的问题,导致无法r
  • 离心泵是化工、电力生产中的重要输送设备,凝结水离心泵(凝结水泵)是电厂中的...分析了凝结水泵发生出力不足的原因,并通过对凝结水泵入口蝶阀进行改造,消除了出力不足的设备缺陷,提高了凝结水泵运行的安全性和经济性。
  • 表空间不足与用户配额不足是两种不同的概念。表空间的大小是指实际的用户表空间的大小,而配额大小指的是用户指定使用表空间的的大小。两者的解决方式亦不相同。 配额问题的解决:alter user skate quota 2g on ...
  • Oracle归档日志空间不足引发的问题及归档日志的检测删除
  • <br /> Eclipse的内存优化内存不足问题   MyEclipse has detected that less than 5% of the 64MB of Perm  Gen (Non-heap memory) space remains. It is strongly recommended that...
  • 目录 前言: ...在训练自己的模型时常常出现显存不足问题,这个时候我们常用的方法就是调参。一般常用的方法有以下几点: 模型压缩 网络参数调整,比如减小训练图像大小,降低FC output个数,使...
  • 解决mapgis6.7出图jpg面填充方向颠倒内存不足问题
  • Android权限获取机制常见权限不足问题分析   Android系统是运行在Linux内核上的,AndroidLinux分别有自己的一套严格的安全及权限机制,   很多像我这样的新手,尤其是习惯了windows低安全限制的...
  • Android权限机制总结常见权限不足问题分析 Android系统是运行在Linux内核上的,AndroidLinux分别有自己的一套严格的安全及权限机制, 很多像我这样的新手,尤其是习惯了windows低安全限制的用户,很容易...
  • (1).Ubuntu20.04.2.0环境的安装配置过程(Android11系统源码编译的准备工作) ...Android11系统源码的下载编译方法(解决内存、磁盘不足问题) https://mp.weixin.qq.com/s/me57A9puO02JKBkwvTcPtg ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,586
精华内容 3,434
关键字:

问题与不足