Bootstrap
博客内容搜索
Kaysama's Blog

Http缓存策略

1)浏览器缓存策略

浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使
用本地缓存;否则,则向服务器发起请求并携带缓存标识。根据是否需向服务器发起HTTP请求,将缓存过程划分为两个部分:
强制缓存和协商缓存,强缓优先于协商缓存。

继续阅读

「时间」与「空间」复杂度

算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,比如排序就有前面的十大经典排序和几种奇葩排序,虽然结果相同,但在过程中消耗的资源和时间却会有很大的区别,比如快速排序与猴子排序:)。

那么我们应该如何去衡量不同算法之间的优劣呢?

主要还是从算法所占用的「时间」和「空间」两个维度去考量。

  • 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。

  • 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

继续阅读

Git工作流程

Git 作为一个源码管理系统,不可避免涉及到多人协作。

协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去。”工作流程”在英语里,叫做”workflow”或者”flow”
,原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。

继续阅读

以鼠标为锚点平滑缩放元素

已知矩形,坐标(x,y),宽width,高height,当前放大倍数为n。此时光标位置(a,b),光标相对矩形的位置(a-x,b-y),在该位置对矩形放大到原尺寸的m倍

设矩形的缩放中心在矩形左上角,则放大后:

1
2
x = a - (a - x) / n * m
y = b - (b - y) / n * m
继续阅读

(译)SVG形变动画

虽然使用CSS给SVG添加动画很方便,但是并非所有可以动的svg属性都能通过CSS来设置动画,就比如所有定义元素实际形状的属性,你可以通过SMIL(Synchronized Multimedia Integration Language)为它们设置动画,都无法通过CSS来做到。Sara Soueidan在她的SMIL动画指南中对此进行了介绍,

ps:这篇文章全部通过SMIL来对SVG形变。SMIL的前途未卜(译者注:chrome已经不推荐使用),如果您对形变动画很感兴趣,我建议你使用GreenSock的MorphSVG插件,它不需要用到SMIL,而且功能更强大,因为它进行任意形变而不用考虑锚点数量、位置、形状类型已经兼容性问题。

继续阅读

ChromeDevTools之Performance

今天介绍下 Chrome dev tools 家族的一个小兄弟,它在 Chrome 57 之前叫作「Timeline」,而现在换了个更长的马甲 ——
「Performance」,毕竟名字要「长~~~~~~~~~」更能吸引注意。

也许你曾不经意启动过这个工具,看见里面五颜六色的图表后和我一样头晕目眩。但今天介绍完它后,我相信你能像熟悉瑞士军刀一样熟悉它。

继续阅读

孩子斗图老失败,多半是没看这篇博客

群里跟人斗图的时候,有没有碰到这样的?

这时候没有图咋办?总不能真退群啊,但是又没图可以斗,于是乎~

唉,尴尬不尴尬,斗图拼的就是时效性,等你找到,黄花菜都凉了。于是乎,这篇博客就应运而生了

我会那么肤浅,直接把文字贴到图片上就算了?

你是喜欢下左边的图当表情还是右边的图?

是我就选右边,为啥?当然是因为高清的表情包是没有灵魂的,咳咳,当然是因为这个啦

继续阅读

JavaScript搞出一个日历控件

日历控件基本上所有的前端都会用到,而且我相信8成的JSer都是直接把开源的组件拿来用,很多设计师似乎跟开发们也有默契,对日历控件只要能用就行,样式啥的不做太多要求,但是某些设计师就是有强迫症,一定要你按着TA的设计来,保不准产品也要舔一把火,往日历里塞些稀奇古怪的业务,咋办?初级开发可能就去网上找符合要求的控件,然后拼命说服他们;普通的开发就可能直接在已有的控件上修修补补,除了问题再回炉重造;高级的开发直接怼回去:什么J8需求,不接!顶级的程序员呢?当然是一言不合直接造轮子啊(笑。

先放最终效果,审美有限,将就着看吧~


先不管js或是jquery怎么写,咱先把日历的样子搭出来

继续阅读

JavaScript生成字符画(ASCIIArt)

今天玩一些新的东西,大家都没有看过这样的视频:

bad apple 字符版

或者 这样的图片:

网上有很多生成这种图片/视频的工具,但是每个程序员都有一颗造轮子的心,我们当然要玩出自己的花样啦。老规矩,还是先讲原理,建议先用自己的方式实现一遍。原理很简单首先准备一组排好序的不同 “着色密度 ” 的ascii字符(事实上你可以用任何字符),比如 #KDGLftji+;,:. ,接着将源图转为灰度图,然后遍历图中的像素,根据r/g/b通道的值来匹配字符串中相应 “着色密度 ” 的字符,值越小则颜色越深,字符的“密度”也应越大。如果需要保留颜色,只需将灰度图和原图的像素位置一一对应即可。在开始实现功能之前,我们需要先了解一下颜色矩阵(ColorMatrix)。在计算机中,每个像素的颜色可以用一个向量(有的文章也叫矢量或分量)矩阵表示:[R, G, B, A]。颜色变换矩阵通常是用一个5x5的矩阵来表示,和空间中一个n维向量的平移变换需要用一个n+1维的矩阵来表示一样,颜色矩阵也需要引入一个齐次坐标来进行“平移操作”。以下是一些常见的颜色变换矩阵:

继续阅读

canvas相关优化

<canvas>元素是众多广泛使用的网络2D图像渲染标准之一。它被广泛用于游戏及复杂的图像可视化中。然而,随着网站和应用将canvas画布推至极限,性能开始成为问题。此文目标是给使用canvas画布元素的优化带来建议,去保证你的网站或者应用表现卓越。

继续阅读