ShopNC二次开发研究日记12:导航菜单伪静态及二级目录制作SEO优化

虫曰:

ShopNC二次开发研究日记》系列由ChinaBUG企划,根据研究ShopNC的二次开发过程而写,其中的案例大多来源于QQ群或者爱好者的提问。


话说,很久没有来写ShopNC开发的内容了,正好刚忙完推广部同事的一个需求就拿来分享一下开发的过程及如何解决的吧。
同事的需求是:
ShopNC每个分类都是以ID的形式存在,如/index.php?act=search&cate_id=621这样子的形式,这样子对SEO不友好^_^想要友好一点的方式,比如可以让人访问/sxgr/sg/pg这样的形式来访问分类“生鲜果蔬\水果\苹果”。
简单吧,一看感觉好简单,其实好费时,忙了我好几天才折腾完毕。
闲话不说了,就分享一下我怎么解决这个需求的吧,还是老规矩废话一点,慢慢分析我的解决思路噢。
正文
要想实现这样子的方式,不用说肯定是需要伪静态支持的,然后需要写相关的重写规则来处理了,除了写规则之外就是需要修改程序,让程序输出我们需要的格式了。
……

程序员必须知道的10大基础实用算法及其讲解

算法一:快速排序算法
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

算法二:堆排序算法
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
堆排序的平均时间复杂度为Ο(nlogn) 。

算法三:归并排序
归并排序(Merge sort,台湾译作:合并排序)是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。

算法四:二分查找算法
二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜 素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组 为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。

算法五:BFPRT(线性查找算法)
BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。

算法六:DFS(深度优先搜索)
深度优先搜索算法(Depth-First-Search),是搜索算法的一种。它沿着树的深度遍历树的节点,尽可能深的搜索树的分 支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发 现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。DFS属于盲目搜索。
深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。

算法七:BFS(广度优先搜索)
广度优先搜索算法(Breadth-First-Search),是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。BFS同样属于盲目搜索。一般用队列数据结构来辅助实现BFS算法。

算法八:Dijkstra算法
戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。

算法九:动态规划算法
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。

算法十:朴素贝叶斯分类算法
朴素贝叶斯分类算法是一种基于贝叶斯定理的简单概率分类算法。贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下, 如何完成推理和决策任务。概率推理是与确定性推理相对应的。而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特征与其他特征都不相关。

如何设计一款让大家上瘾的APP

“如果一个 App 失败了,在 App Store 中完全没有人下载,会对什么事造成影响呢?”
比起古老的哲学问题,这个问题的答案简单多了。答案是 NO!不会有任何的影响。一个 App 不论设计得多么高雅、推广得多么广泛,如果没有任何人愿意下载,就等同于不曾存在。
所以,要如何设计产品与 App,让使用者愿意使用、参与其中呢?

答案是习惯
触发(Trigger)
行动(Action)
奖励(Reward)
投资(Investment)
小王子教我的设计理念?

在线应用生成器

开源项目
color-thief颜色小偷:http://lokeshdhakar.com/projects/color-thief/

前端辅助
Bootstrap线格查看器:http://alefeuvre.github.io/foundation-grid-displayer/
Gridpak响应式网格工具生成器:http://Gridpak.com

图形生成
Iconion: awesome icon creator图标自动生成:http://www.iconion.com/index.html
圆形饼状图:http://piecolor.com/
Clipping Magic抠图工具:http://clippingmagic.com/