多源广度优先搜索
广度优先搜索
通过一道题目地图分析,来讲解和实践BFS。
原理
考虑最朴素的方法,即求出每一个海洋区域(grid[i][j] == 0 的区域)的「最近陆地区域」,然后记录下它们的距离,然后在这些距离里面取一个最大值。
最近在做题的时候遇到了递归,隐约感觉与动规有点相似,但自已又说不清楚,于是找了很多文章,这里摘录一片最基础但也是最清楚的文章,原文链接是这个。
动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求最长递增子序列呀,最小编辑距离呀等等。
既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。
动态规划就这么简单,就是穷举就完事了?我看到的动态规划问题都很难啊!
首先,动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者「DP table」来优化穷举过程,避免不必要的计算。
有了IP地址以及路由表的设计之后,我们就要继续考虑如何去获取路由信息,也就是路由器之间如何去交换信息,如如何表达自己对其他路由器的可达性,获取路由信息之后,我们还要想办法构造路由表。
应用程序的核心是业务逻辑,该业务逻辑由定义服务,域对象和事件的模块实现。围绕核心的是与外部世界接口的适配器。适配器的示例包括数据库访问组件,生成和使用消息的消息传递组件以及公开API或实现UI的Web组件。
尽管具有逻辑模块化的体系结构,但该应用程序却作为一个整体打包和部署。实际格式取决于应用程序的语言和框架。例如,许多Java应用程序打包为WAR文件,并部署在诸如Tomcat或Jetty之类的应用程序服务器上。其他Java应用程序打包为独立的可执行JAR。
成功的应用程序具有随着时间的流逝并最终变得庞大的习惯。在每次冲刺期间,开发团队都会实施更多Story,这当然意味着要添加许多行代码。几年后,小型,简单的应用程序将变得庞然大物。
Echarts是百度提供的一个用于在web端快速绘制图表的工具,它是通过js在canvas中进行图表的绘制,所以只要你的项目能够支持js,那就可以使用echarts。
Echarts有着丰富且详细的文档,可以让我们去定制自己喜欢的图表样式。但是这篇博客主要讲的是如何在vue项目中使用v-charts。
最近几天遇到了一个需求,就是在项目启动的时候,需要动态生成一些代码并将这些生成的代码进行引入,一开始我的做法是把生成的代码写入文件,再require这些文件,成功之后再将文件删除。做完之后才发现,这些文件其实没必要去创建,可不可以直接从内存中引入,这样就减少了两次的文件io,而且require其实也是将文件读入内存再进行解析,那么从内存中直接引入也是存在理论上的可能性的。
今天在工作中需要使用到mongodb的tansaction,于是查阅了各种资料,也踩了不少的坑,在这里总结一下。
Loader是Webpack中一个重要的概念,可以帮助我们在加载某些类型的文件时进行我们想要的操作,比如自动将所有JavaScript的function外部都加上try catch。