`
文章列表
该算法由荷兰的一个牛人计算机科学家Edsger Wybe Dijkstra在1956年发现。   这套算法主要解决计算从一个点到其它的点的最短距离,而不是Floyd-Warshall算法的任意两点距离。  如图,现要计算出,从1号点到其它各点的最短距离,首先我还是转化成矩阵 由此可见1号点到其它点的初始距离为:   0 1 12 ∞ ∞ ∞    很明显2号点是离1号点最近的点,那么1号点到2号点的最短距离肯定就是直达了。那我就将2号点作为“换乘点”,来计算下距离:   0 1 10 4 ∞ ∞    这个过程有个专业术语“松弛”。2号点我也已经用了,那么4号点是离 ...
Robert W.Floyd和Stephen Warshall在1962年发表了Floyd-Warshall算法   如图,有1234,四个点,每个点都有一定的距离,比如1和2有2的距离,现在我想知道任意两个点的最短距离。   我先用“邻接矩阵存储法”将这个图转化为矩阵  竖坐标是出发点,横坐标是目的地,∞表示无穷大,也就是到不了,例如2到不1。有了这个矩阵,就可以用一个两维数组来存储。   现在切入重点:Floyd-Warshall算法。拿从4到3来看,4到3直达为12,要想缩短,只有“换乘”。 我发现4还可以直达1,1换乘到3,这时距离为11,比直达要短。那有什么比这 ...
小时候玩游戏,有个BOMB人的游戏,把BOMB放在一个空地上,将怪兽炸死,如图:  BOMB的威力只要不碰到墙壁,可以无限延长。那么我们应该把BOMB放哪里可以炸死最多的怪兽呢?   这个问题貌似很简单,一个一个地方试下不就知道了吗?是啊,那我们用代码来试下。   将图象转成字符,用#表示墙,用G表示怪兽,用.表示空地,最后得到的字符为: ############# #GG.GGG#GGG.# ###.#G#G#G#G# #.......#..G# #G#.###.#G#G# #GG.GGG.#.GG# #G#.#G#.#.#.# ##G...G.....# #G ...
XSS:Cross Site Script,本来简写是css,但为了区别样式表的css,因此在安全领域叫做“XSS”。 XSS攻击通常是指黑客通过"HTML注入"篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。   一、HttpOnly防止劫取Cookie HttpOnly最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript访问带有HttpOnly属性的Cookie。目前主流浏览器都支持,HttpOnly解决是XSS后的Cookie支持攻击。
已文大神可以略过。   当一台服务器已不能满足日益膨胀的站点时,就应该对数据库进行扩展。   一、主从复制   几乎所有的主流数据都支持复制,在mysql中,配置如下
开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就是希望所有服务器都不要过载,并且能够最大程序地发挥作用。   一、http重定向 当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL。这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转。  
形象化设计模式实战             HELLO!架构                     redis命令源码解析   倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C升的水。   想必很多人都可能被问到过这个问题,问题虽然简单的,但是要费些脑子。这个问题显然是个逻辑问题,那么就肯定能够用程序来实现。   现在我假设A=3,B=5,C=4。   大脑的运算过程: 第一步、把3装满,或把5装满(只有这
多维缩放可以为数据集找到一种二维表达形式。算法根据每对数据项之间的差距情况,尝试绘制出一幅图来,图中的各数据项之间的距离远近,对应于它们彼此间的差异程度。   以分类聚集算法中的数据为例 第一步:计算所有数据项两两间的实际距离(可参考皮尔逊算法或欧几里德算法) 第二步:将数据项随机放置在二维图上。 第三步:针对每两两构成的一对数据项,将它们的实际距离与当前在二维图上的距离进行比较,求出一个误差值 第四步:根据误差的情况,按照比例将每个数据项的所在位置移近或移远少许量。(每一个节点的移动,都是所有其它节点施加在该节点上的推或拉的结合效应。) 第五步:重复第三步、第四步(节点每移动一 ...
1、通过pip安装uwsgi   $sudo yum install python-devel $sudo yum install python-pip $sudo pip install pip --upgrade $sudo yum install libpcre3 libpcre3-dev $sudo yum install zlib1g-dev  如果安装版本错误,先卸载:     $pip uninstall uwsgi $sudo yum remove uwsgi python 版本最好是python 2.7.*   pip的版本应该是最新版本。查看pi ...
形象化设计模式实战             HELLO!架构                     redis命令源码解析   一、Lpush,Rpush t_list.c   void lpushCommand(redisClient *c) { pushGenericCommand(c,REDIS_HEAD); } void rpushCommand(redisClient *c) { pushGenericCommand(c,REDIS_TAIL); }
形象化设计模式实战             HELLO!架构                     redis命令源码解析   前面讲过了字典和压缩列表的实现,redis的哈希数据就是存储在这两种结构之中的,如果对这两种结构都非常清楚了,那么对哈希命令的实现的理解将会非常简单。  
形象化设计模式实战             HELLO!架构                     redis命令源码解析   用过Redis的应该对其哈希命令不陌生,在探索其实现之前,先得了解Redis的一个内部映射数据结构——压缩列表。  
形象化设计模式实战             HELLO!架构   redis之字符串命令源码解析(一) redis之字符串命令源码解析(二)     前面已经将set get命令的原理与过程作了详细的解析,下面对一些常用的命令做一些简单讲解,前提是前面的已经明白。 1、append方法解析   t_string.c中的appendCommand方法:
形象化设计模式实战             HELLO!架构   在redis之字符串命令源码解析(一)中讲了get的简单实现,并没有对如何取到数据做深入分析,这里将深入。   1、redisObject 数据结构,以及Redis 的数据类型   (一)中说set test "hello redis",“hello redis”会最终保存在robj中,redisObject是Redis的核心,数据库的每个键、值,以及Redis本身处理的参数都表示为这种数据类型,其结构如下: /* The actual Redis Object */ /* * Red ...
形象化设计模式实战             HELLO!架构   在redis的使用中,set/get无疑是使用最普遍的命令,我先telnet连接运行看看   先看get命令,获取一个key服务器返回了两行内容,是"$3\r\n123\r\n"(\r\n为换行符),不难发现3就是“123”的长度,redis的官方文档get返回值为: Bulk string reply: the value of key, or nil when 
Global site tag (gtag.js) - Google Analytics