yjiang's cake

乌龟监控

乌龟监控图,自动刷新:

设备

cubieboard2 + 摄像头 + 乌龟

说明

抓拍程序在此

blog更换了国外空间后,SCP速度太慢,还是把图片存储在家里cubieboard再映射外网速度稍微快些.

RESTful中的PUT

RESTful中,GET用来获取资源,POST用来新建资源或更新资源,PUT用来更新资源,DELETE用来删除资源.可能有不少人跟我一样,开始都是这样理解RESTful的.

PUT POST 新增资源:

  1. /catgory/海鲜

  2. /category/{$category_id}

第一种情况,新增资源的uri是由客户端来决定的,此时使用PUT.
第二种情况,新增资源的uri是服务端自动产生的ID,是由服务端来决定的,此时使用POST.

一个关于PUT DELETE的坑 

引用http://www.restapitutorial.com/ 的一段话.

#PUT is not a safe operation, in that it modifies (or creates) state on the server, but it is idempotent. In other words, if you create or update a resource using PUT and then make that same call again, the resource is still there and still has the same state as it did with the first call.

从HTTP协议的角度出发,当修改一个资源的内容时,使用PUT请求,其实这是对RESTful的一个错误理解.REST是一种风格,但是还是依赖于HTTP协议.在HTTP中,PUT被定义为idempotent的方法,POST则不是,这是一个很重要的区别.idempotent是数学中的一个概念,既幂等;何谓幂等?一个方法重复执行多次,产生相同的效果,就叫做幂等.

继续看上面两种情况,第一种,不管提交几次请求,总是产生海鲜这个分类,所以应该就算是幂等的;那是否可以理解为:PUT只有在不会对服务器状态产生影响的时候才使用?继而是否可以理解为 POST 可以用来新增或者修改资源,而PUT只能用来新增资源?

What The Fuck!

好吧,REST只是风格而不是标准,怎么做,就看个人心情了.

What.how.why

深入学习三部曲:what.how.why

高并发量解决方案的想法

开发:

  1. 使用分布式数据库,主从读写分离

  2. 优化数据库访问,每次查询只返回需要的结果,以及合理使用索引,读取频繁的表缓存起来

  3. 数据缓存 如memcache,apc,redis

  4. 前台页面静态化,并使用缓存技术,如squid,varnish

  5. 禁止外部盗链

  6. 做流量统计分析

部署:

  1. 使用Nginx等这些资源占用率更小、负载能力更高的WEB服务器

  2. 使用反向代理或者DNS轮询来做负载均衡

  3. CDN加速

其他

  • memcache、APC、redis 数据缓存/后端缓存(单服务器使用APC,多服务器使用memcache redis)

  • squid、varnish 文件缓存/前端缓存

Copyright © 2016 yjiang's cake

返回顶部