闲谈两词淡

为什么吃入门随讲为……因为自啊刚刚学了呀

 

LivingMongo是一个mongodb数据库的GUI操作系统,支持对数据字段的修改数据搜索集合的分类索引管理空间统计慢查询

放置技能

点分治(这不是如学动态点分治吗)

线段树(会触发分治不会见线段树?)

其实线段树是来帮助了解的。

 

demo地址
: http://living-mongo.kupposhadow.com
动介绍 : 开源MongoDB GUI –
LivingMongo
github : https://github.com/swimmingwhale/living-mongo

也挚友于广告(利用好友优秀博文提升×格)

句句经典……在点分上从未有过必然造诣还当真写不出。

墙裂推荐一观,文笔和考虑都比有hr好多了。

泛泛谈对点分治的部分明亮——qt666

 

运行条件

PHP >= 7.0
MongoDB >= 3.4.2

正文

数管理

图片 1

引入

接触分治是如出一辙栽人人爱好的算法。它含钙高,吸收好思想比较简单,代码实现呢非碍事,复杂度瓶颈在统计跨重心root的链对答案的影响/贡献。

但是点分治的缺点是杀显著的:它不得不做离线问题!换句话说,它不支持修改操作。

本条时候即便得动态点分治来拉拉了。  

 

图预览

图片 2

算法原理

本条时咱们曾经针对性碰分治的亮非常十分了。它通过巧妙地以k级重心处划分,把树上的途径划分成了简单近似:经过重心的及莫经重心的。

故复杂度有保险,是盖每个点当链端点只见面让统计log次等。

带修改的语句,暴力肯定是探听同软召开同样浅沾分。

专注到修改的着力是点权之类的而无是培植之象。换言之,每次的点分过程是一样的!

然后还要想开每个点就见面吃统计log浅——胡不重构这树乎?

说清楚点:既然每次修改单独会改变一个沾,只会将其当端点的链子的消息改掉。

(要是你改变一个碰见面引起多个点转呢非像是树分治题而又如风数据结构题)

其余的点之音讯该是聊要有些,是不移的来回来去,是固定之黑暗及孤单——打住。

往往拍卖还雷同信息,是必然非可能于我们所许之。而这些消息到底的数额级同时独自来O(nlogn)级别。

干什么非把其预先保存,然后于每次修改,O(logn)级别地暴力一一修改也?

历次查询,要么直接获得,要么暴力跳一个触及的重心祖先链,复杂度也十分美。

就:预处理点分治一任何,把各自重心树为出来,把信存进。

老是操作,修改就想艺术改好及祖先重心链上的音信即可。

打探呢,你还维护了这般多东西了,也是想念艺术快速求即可以了。

仍说取最充分价值,那即便开堆嘛(ZJOI捉迷藏)。

再比如HNOI开店,用vector动态申请空间,排序一下,每次询问暴跳祖先。

说起来好像特别简单,实现起来可是如人饮水冷暖自知。

 

剩下的自时啊不晓得还会言什么了?……

送一样词话:树上的动态点分治就相当给队列上的线条树。

忘掉是自从哪个神犇那蒯的了……

 

数量检索

图片 3

末了吧送一样接触套路

点滴碰lca什么的别用倍增了,用欧拉序列+ST表预处理O(1)搞定。

还有记得将log也先处理出来,系统超慢。

开堆开桶之类的,vector或new

空间统计

图片 4

悠悠查询统计

图片 5

docker一键安装测试

docker pull swimmingwhale/living-mongo
docker run -dt --name living-mongo -p 80:80 swimmingwhale/living-mongo

 

容器内包含了nginx,php,mongodb等有运行所要的软件.等待容器启动后,访问http://localhost,
or http://host-ip

苟你的80端口被占据,可以使另外端口,如

docker run -dt --name living-mongo -p 8110:80 swimmingwhale/living-mongo

这般您待拜访http://localhost:8110,
or http://host-ip:8110

linux和windows系统下安装

linux和windows环境下的装置需要事先增建筑好web环境,然后拿品种clone到web根目录就可.读者可活动检索web环境之搭建方法.

配置

默认系统失效户名和密码,MongoDB默认连接127.0.0.1,如要修改好另行改.env文件下之相干安排

MONGODB_HOST=mongodb://127.0.0.1:27017

USERNAME=
PASSWORD=

MONGODB_HOST为数据库连接地址
USERNAME和PASSWORD为报到的用户称和密码