这是一篇在Ruby和Rails中使用代理模式各种方法的总结文章。
特别的,Ruby并发指的是:两个任务可以在重叠的时间段启动、运行和完成。 不过,这并不意味着他们都是运行在同一瞬间(比如:多个线程在单核机上运行) 与此形成鲜明对比的是,并行是指:两个任务运行在相同的时间。(比如:多线程运行在多核心的处理器上)
该总结的还是要总结的
MySQL中有一张表A,有十几个字段,字段中有索引,大概是1千万条记录。并且这个表是线上服务的表,随时有读写操作。 现在,根据需求,你需要为这张表新建一个字段。你会怎么做?
RVM
学习Golang差不多五个多月了,从一开始的“不习惯”(作为一名Ruby程序员,Go的语法和Ruby还是有较大不同),到现在逐渐能接受Go语言的整体架构的思想。 这篇文章是对Golang语言中OOP思想的个人总结。将会用Ruby中的OOP内容进行一个对比。
在一个项目中会有很多数据是需要加密的,以保证数据不会泄露。 比如: 密码的保存。登入时,cookie保存的值。做支付接口的时候,对参数进行加密后传递等待。 加密的作用就是为了防止他人得到真实的数据,从而进行一些操作,避免用户或项目受到损失。
ActiveRecord makes interface to the DB very easy, but it doesn’t necessarily make it fast.
我们知道,当MySQL表的数据达到百万以上甚至千万的时候,整个表的查询性能是会下降的。如果遇到更大的数据时,有一些解决方案,比如分表分库。 看了一些文章有讲“关于百万以上记录表的分页优化”,所以今天实际操作总结一下。
```ruby
今天有个需求,将存在redis hash结构中的数据进行排序(热门搜索词,存于redis hash中) 所以就涉及到了hash排序。看下面的示例,很简单,主要是有被一个问题”坑”到了,所以写此文记录
原文链接: Processing large CSV files with Ruby
Rails中使用的缓存方式有很多种,推荐的缓存策略是”俄罗斯套娃缓存”。不过使用这种缓存方式只能缓存html的片段,还是会进行sql查询。 一种方式,可以直接使用redis,rails中redis的gem也有不少,而且封装的功能足够使用。可以直接操作redis进行数据缓存。 另一种方式,rails也封装了底层的缓存的API:ActiveSupport::Cache::Store。在config.cache_store可以配置使用什么存储缓存 数据。可以这样 config.cache_store = :redis_store, “redis://localhost:6379”。就使用了redis缓存数据。
简单介绍: Hessian is a binary web service protocol that makes web services usable without requiring a large framework, and without learning a new set of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments. Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。 网上传的一个性能效率对比结果 测试结果显示,几种协议的通讯效率依次为: RMI > Httpinvoker >= Hessian » Burlap » web service
原文链接: How key-based cache expiration works
grape: An opinionated framework for creating REST-like APIs in Ruby. http://www.ruby-grape.org
找到一篇讲解rack中间件的好文章,讲解的通俗易懂。于是便转载过来了。
例子1.
RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。
10.first_or_create with a block 常用的first_or_create:
在rails中使用after_ 或before_ 的回调方法,能方便的帮我们处理代码逻辑。 after_save方法:顾名思义就是在save 之后进行操作。 rails guide中的一句:after_save runs both on create and update, but always after the more specific callbacks after_create and after_update, no matter the order in which the macro calls were executed.
go interface
使用异常处理机制会停止本次block代码的执行,但是本次block之后的代码可以继续执行。不使用异常处理,遇到异常时就会停止,并且之后的代码不会执行。而实际中我们不希望有异常错误的时候就中断程序,而是想让代码继续执行,所以我们需要捕捉异常
今天是学游泳的第五次课
In Ruby you have to require every .rb file in order to have its code run. However, notice how in Rails you never specifically require any of your models, controllers, or other files in the app/ dir. Why is that? That’s because in Rails app/* is in autoload_paths. This means that when you run your rails app in development (for example via rails console) — none of the models and controllers are actually required by ruby yet. Rails uses special magical feature of ruby to actually wait until the code mentions a constant, say Book, and only then it would run require ‘book’which it finds in one of the autoload_paths. This gives you faster console and server startup in development, because nothing gets required when you start it, only when code actually needs it.
KMP算法是字符串匹配中的经典算法。相比暴力匹配算法的时间复杂度为O(m*n),KMP算法的时间复杂度为O(m+n)。虽然,之后又出现了比KMP算法还高效的字符匹配算法,不过KMP算法作为经典,一直作为算法学习中的教材知识。 KMP算法流程: 假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置
Event Loop是计算机系统的一种运行机制。Javascript就采用这种机制,Nodejs也是采用这种机制,来解决单进程运行时带来的一些问题。
About Lock
A Decision
Study algorithm again and again
### 理解中的连接池
A story about concurrency and parallelism