🕳 踩坑

    🕳 踩坑 📝 学习
    MATLAB绘图去掉四周空白,set(gca,'looseInset',[0 0 0 0])

    📝 学习 🕳 踩坑 在动态优化中,环境变化时的误差是最大的(比如在MPB中,误差可高达200),此时应该想办法用最好的解快速进行评价,尽可能使得在环境开始的初期误差迅速下降,才能使得离线误差Eo降低(Ebbc不受影响)。如果不在环境初期就降低的话,非常有可能在演化很久之后才能降下来,顶着200的误差演化500代,平均在整个Eo中也是一个不容小觑的误差。

    📝 学习 🕳 踩坑
    嗯,昨天晚上22点收到刁师姐的消息,说服务器CPU全占满了,但又看不到占用大的进程,这一想,服务器肯定是中毒了。
    果不其然,通过sysdig -c topprocs_cpu一看,好家伙,一个隐藏的进程把核全占满了,还附带一条去可疑IP的tcp通讯,好家伙,一查发现是个矿池,中了挖矿病毒没跑了,/proc/6040一看,链接的是一个删除的exe,systemctl status 6040一看,居然再/usr/bin里面,捣鼓到半夜三点还没搞定,醉了,第二天又捣鼓了一会儿,实在没办法请的技术人员搞的。就当学习linux技术罢!

    🕳 踩坑 📝 学习
    在论文即将修改完毕之际,又出现了新的问题,关于数学公式!科技论文中的数学公式里的符号一定要斟酌清楚,集合用什么?矩阵用什么?变量用什么?一定要搞清楚!

    🕳 踩坑 💡 所思所感
    C++跑起来内存一直增长怎么办?大概率是内存泄漏,使用Valgrind可以检测内存泄露的问题:

    Ubuntu:

    安装Valgrind:
    sudo apt-get install valgrind检测内存泄漏(确保你的程序是带调试信息编译,gcc编译时 -g)
    valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --log-file=./log.txt ./your_program

    --leak-check=full:进行内存泄漏检测并给出每个泄漏的详细信息。
    --show-leak-kinds=all:报告所有类型的内存泄漏。
    --track-origins=yes:跟踪未初始化值的来源,有助于发现使用未初始化内存的错误。
    --log-file=./log.txt: 日志信息

    🕳 踩坑
    反向代理HTTPS下Nextcloud登录问题:

    升级Nextcloud 17后,登录无法跳转,但是刷新能正常进入管理界面。
    是由于内容安全策略引起。我的Nextcloud是用docker部署,用一台Nginx做反向代理。之前从Nextcloud 15升到Nextcloud 16都是正常的,猜测Nextcloud 17做了更严格的安全限制。

    在Nginx和Apache设置CSP策略:

    Content-Security-Policy: default-src 'self'
    尝试了增加指定信任域名等各种设置无效。这是因为web使用https反向代理了http导致的。最终在github上找到办法,在Nextcloud配置文件中加上:

    'overwriteprotocol' => 'https'

    转载自:https://wangzhengzhen.com/2499.html

    🕳 踩坑
    如果使用了fail2ban工具来防止暴力破解攻击,可以通过以下命令查看被封禁的IP地址:
    fail2ban-client status sshd

    使用以下命令解封特定的IP地址:
    fail2ban-client set sshd unbanip <IP_ADDRESS>

    🕳 踩坑 💡 所思所感
    output_file << i << "\t" << new_datum->points[i][0] << "\t" << new_datum->points[i][1] << "\t" << nodefit[i] << "\t" << id_belong[i][1] << "\t" << normal[i]?1:0 << std::endl;

    这句代码有什么问题?

    🕳 踩坑 💡 所思所感
    昨天碰到了一个严重影响算法性能的问题:在动态优化中,多样性的增强很重要,用于应对动态的变化,而当种群收敛时可以看作多样性的缺失。种群在收敛时(半径小于阈值)会被休眠,而触发多样性调整时会唤醒种群,我在此犯了个大错,我底层使用的是PSO,计算种群的半径用的是PSO的pbest到其中心点的距离的平均值,这就导致在种群唤醒时,虽然在其solut上做了布朗运动(扰动,增加其多样性),但由于其pbest基本不变,导致种群半径依旧不变,进而导致种群就算被唤醒,也会由于下一代的半径也符合收敛条件而被立刻休眠,导致根本无法应对环境的变化。所以,使用solut来计算半径,更加合理,当唤醒时,solut会被扰动,此时种群半径已无法再满足休眠条件,进而开始搜索,如若环境没有变化,则很快就会进入收敛状态,如若环境发生变化,亦可迅速响应,追踪新的全局最优解。

    此外,还遇到了一个问题:在比较两个解的dominate的时候,发现有一个解居然objective.size()居然为0,初步想法是没有被评价,但不对啊,没有评价objective.size()也应该是1,只不过适应值为0,后来又想是不是构造的时候出问题了,翻来翻去,发现我也只用了一种构造函数,是一定构造了objective信息的,后来经过调试仔细观察,发现其使用了引用,而其引用的对象objective.size()居然是470,非常令人匪夷所思,询问了大师兄,发现问题是这个解变成了野指针,在某个地方释放了,因为使用的是引用,所以此处所引用的对象自然不存在了,我推断时m_his_sols与ssp.his_sols引用的是同一个份解,m_his_sols中解被removeoutdated之后,而恰巧ssp.his_sols中未被移出,所以才导致了这个问题,预想的解决办法第一种是对m_his_sols操作后,同时对所有的ssp中的his_sols进行更新;第二种就是确保对m_his_sols进行淘汰时,同步淘汰ssp.his_sols中的相应的个体,现在是通过评价时间控制的,淘汰m_his_soks中大于evaltime的粒子时,并未正确淘汰掉对应ssp中his_sols超过evaltime的粒子,导致了粒子消亡后,还存在ssp列表中,算法更新每个ssp列表中best solut时,索引到了这个已经被释放的个体,导致出问题。这只是分析,明天再看看具体什么情况。