耗时都在 activerecord 上 检查数据库服务器的网络
放在 HTTP header 里面啊
transaction 本身和锁没关系 应该是别的地方锁了数据库没 commit
Server.all.order('server_index DESC')
返回的是一个 ActiveRecord_Relation 实例,这东西不是一堆 Server 的对象,当你读取 ActiveRecord_Relation 的数据的时候,才真正的去查询数据库,所以看起来没次都是去执行了 SQL 的。 你可以把查询结果变成纯粹的 ruby hash 再缓存
Server.all.order('server_index DESC').map(&:attributes)
OT:阈 (yu) 值...不是 fa 值
建议你直接看 unicorn 的 http_server.rb 文件,简单易懂. 1: unicorn 初始化 rails(load code of rails),也就是加载 gem 和初始化 rails 的 app.call 2: 监听端口 3: 拿到请求交给 rails 的 app.call
passenger 就是相当于给 unicorn 套了个 nginx 反向代理。
https://github.com/defunkt/unicorn/blob/master/lib/unicorn/http_server.rb
passenger/thin/unicorn 这类 app server 实现了 rack 的 handler 方法后,自己常驻内存,拿到请求后,交给 rails/sinatra/padrino 这类所有实现了 rack app call 方法的框架/中间件. app server 初始化的时候,就带动 rack 和相关的框架/中间件一起初始化了。
c#
Standalone mode We recommend this mode for use during development. That said, this mode is also fit for production.
推荐用 passenger 的 standalone 模式 1) gem install passenger 2) passenger start 3) 用 nginx 去反代 passenger
不需要 js 啊 form 里面 action="/tst" input 设置一个名字 name="name"
C 里面的数组和 ruby 里面的数组不是一种东西 ruby 里面数组是一个 object, 这个 object 本质上是 wrap 一个 C 的数组 [] 是 ruby 的 Array Class 的一个方法,不仅可以越界访问数组,还可以是负数。
VALUE
rb_ary_entry(VALUE ary, long offset)
{
if (offset < 0) {
offset += RARRAY_LEN(ary); //如果是负数,就掰正
}
return rb_ary_elt(ary, offset);
}
static inline VALUE
rb_ary_elt(VALUE ary, long offset)
{
long len = RARRAY_LEN(ary);
if (len == 0) return Qnil; //如果数组为空,返回 nil
if (offset < 0 || len <= offset) {
return Qnil; //如果索引越界,返回 nil
}
return RARRAY_AREF(ary, offset);
}
array.c 里面的两个函数,根据索引访问数组的时候都是这两个函数处理的。
#2 楼 @wdezsqyfw 思路就是直接上 xmpp , Google Cloud 甚至提供了 xmpp 服务。https://cloud.google.com/appengine/articles/using_xmpp
snapchat 从来没公开他们的后端结构,只是说了之前在 Google App Engine 上,后来又用了 Google Compute Engine, 为此挖了几个 Google Cloud 的人。仅此而已。
"abcd123".each_byte do |byte |
printf(byte.to_s(2).rjust(8,'0')+" ")
end
一般来说,rails 自己的功能是不需要你来测试的,因为 rails 本身已经测试过了. 所以,你只需要测试你自己的业务逻辑. 这事隐约记得 DHH 自己也说过。
其实参考一下 twitter tumblr 的接口就能发现一个更好的上传文件的方法. 单独一个接口,只做文件上传服务,接受 form-data,然后返回 json. 用 base64 上传文件,无论客户端还是服务端,压力都很大。
https://dev.twitter.com/rest/public/uploading-media twitter api
#18 楼 @zhangjinzhu 谢谢 jinzhu 老师亲自回复
只有一个 server 的时候用什么缓存都一样. 文件缓存有额外的读写锁。
mac 上装 postgresql 最简单的方法是 http://postgresapp.com
如果数学不太好,可以买 leetcode 的书 https://leetcode.com/book/ 15 刀那个就可以了. 里面会教你怎么把 two sum 从 800ms 优化到 80ms
如果 score_id 是全局唯一的话
GET /scores/:id
就可以了啊。在生成这个 url 的时候,就把该检查学校学生检查好了。