`
topgun
  • 浏览: 24000 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

还是Ruby 性感

    博客分类:
  • RoR
阅读更多

今天看到一篇Cassandra的技术文章,原文在这里

呵呵,Cassandra 到时其次,不过ruby 的确很性感

 

java要写这么多

package com.test.cassandra;| 
 import java.io.UnsupportedEncodingException; 
 import org.apache.thrift.transport.TTransport; 
 import org.apache.thrift.transport.TSocket; 
 import org.apache.thrift.protocol.TProtocol; 
 import org.apache.thrift.protocol.TBinaryProtocol; 
 import org.apache.thrift.TException; 
 import org.apache.cassandra.thrift.Cassandra; 
 import org.apache.cassandra.thrift.Column; 
 import org.apache.cassandra.thrift.ColumnOrSuperColumn; 
 import org.apache.cassandra.thrift.ColumnPath; 
 import org.apache.cassandra.thrift.ConsistencyLevel; 
 import org.apache.cassandra.thrift.InvalidRequestException; 
 import org.apache.cassandra.thrift.NotFoundException; 
 import org.apache.cassandra.thrift.TimedOutException; 
 import org.apache.cassandra.thrift.UnavailableException; 
 /* 
 * 使 Java 客户端连接 Cassandra 并进行读写操作
 * @author jimmy 
 * @date 2010-04-10 
 */ 
 public class JCassandraClient{ 
 public static void main(String[] args) throws InvalidRequestException, 
 NotFoundException, UnavailableException, TimedOutException, 
 TException, UnsupportedEncodingException { 

 // 建立数据库连接
 TTransport tr = new TSocket("192.168.10.2", 9160); 
 TProtocol proto = new TBinaryProtocol(tr); 
 Cassandra.Client client = new Cassandra.Client(proto); 
 tr.open(); 
 String keyspace = "Keyspace1"; 
 String cf = "Standard2"; 
 String key = "studentA"; 
 // 插入数据
 long timestamp = System.currentTimeMillis(); 
 ColumnPath path = new ColumnPath(cf); 
 path.setColumn("age".getBytes("UTF-8")); 
 client.insert(keyspace,key,path,"18".getBytes("UTF-8"), 
 timestamp,ConsistencyLevel.ONE); 
 path.setColumn("height".getBytes("UTF-8")); 
 client.insert(keyspace,key,path,"172cm".getBytes("UTF-8"), 
 timestamp,ConsistencyLevel.ONE); 
 // 读取数据
 path.setColumn("height".getBytes("UTF-8")); 
 ColumnOrSuperColumn cc = client.get(keyspace, key, path, ConsistencyLevel.ONE); 
 Column c = cc.getColumn(); 
 String v = new String(c.value, "UTF-8"); 
        // 关闭数据库连接
 tr.close(); 
 } 
 } 

 

PHP要写这么多

 <?php 
 $GLOBALS['THRIFT_ROOT'] = '/usr/share/php/Thrift'; 
 require_once 
 $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/Cassandra.php'; 
 require_once 
 $GLOBALS['THRIFT_ROOT'].'/packages/cassandra/cassandra_types.php'; 
 require_once $GLOBALS['THRIFT_ROOT'].'/transport/TSocket.php'; 
 require_once $GLOBALS['THRIFT_ROOT'].'/protocol/TBinaryProtocol.php'; 
 require_once 
 $GLOBALS['THRIFT_ROOT'].'/transport/TFramedTransport.php'; 
 require_once 
 $GLOBALS['THRIFT_ROOT'].'/transport/TBufferedTransport.php'; 
 try { 
 // 建立 Cassandra 连接
 $socket = new TSocket('192.168.10.2', 9160); 
 $transport = new TBufferedTransport($socket, 1024, 1024); 
 $protocol = new TBinaryProtocolAccelerated($transport); 
 $client = new CassandraClient($protocol); 
 $transport->open(); 
 $keyspace = 'Keyspace1'; 
 $keyUser = "studentA"; 
 $columnPath = new cassandra_ColumnPath(); 
 $columnPath->column_family = 'Standard1'; 
 $columnPath->super_column = null; 
 $columnPath->column = 'age'; 
 $consistency_level = cassandra_ConsistencyLevel::ZERO; 
 $timestamp = time(); 
 $value = "18"; 
 // 写入数据
 $client->insert($keyspace, $keyUser, $columnPath, $value, 
                            $timestamp, $consistency_level); 
 $columnParent = new cassandra_ColumnParent(); 
 $columnParent->column_family = "Standard1"; 
 $columnParent->super_column = NULL; 
 $sliceRange = new cassandra_SliceRange(); 
 $sliceRange->start = ""; 
 $sliceRange->finish = ""; 
 $predicate = new cassandra_SlicePredicate(); 
 list() = $predicate->column_names; 
 $predicate->slice_range = $sliceRange; 
 $consistency_level = cassandra_ConsistencyLevel::ONE; 
 $keyUser = studentA; 
 // 查询数据
 $result = $client->get_slice($keyspace, $keyUser, $columnParent, 
             $predicate, $consistency_level); 
 // 关闭连接
 $transport->close(); 
 } catch (TException $tx) { 
 }?> 

 

Python要写这么多

from thrift import Thrift 
 from thrift.transport import TTransport 
 from thrift.transport import TSocket 
 from thrift.protocol.TBinaryProtocol import 
 TBinaryProtocolAccelerated 
 from cassandra import Cassandra 
 from cassandra.ttypes import * 
 import time 
 import pprint 
 def main(): 
 socket = TSocket.TSocket("192.168.10.2", 9160) 
 transport = TTransport.TBufferedTransport(socket) 
 protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) 
 client = Cassandra.Client(protocol) 
 pp = pprint.PrettyPrinter(indent=2) 
 keyspace = "Keyspace1"
 column_path = ColumnPath(column_family="Standard1", column="age") 
 key = "studentA"
 value = "18 "
 timestamp = time.time() 
 try: 
 # 打开数据库连接
 transport.open() 
 # 写入数据
 client.insert(keyspace,key,column_path, 
 value,timestamp,ConsistencyLevel.ZERO) 
 # 查询数据
 column_parent = ColumnParent(column_family="Standard1") 
 slice_range = SliceRange(start="", finish="") 
 predicate = SlicePredicate(slice_range=slice_range) 
 result = client.get_slice(keyspace,key,column_parent, 
 predicate,ConsistencyLevel.ONE) 
 pp.pprint(result) 
 except Thrift.TException, tx: 
 print 'Thrift: %s' % tx.message 
 finally: 
 # 关闭连接
 transport.close() 
 if __name__ == '__main__': 
 main() 
 

C#要写这么多

 namespace CshareCassandra{ 
 using System; 
 using System.Collections.Generic; 
 using System.Diagnostics; 
 using Apache.Cassandra; 
 using Thrift.Protocol; 
 using Thrift.Transport; 
 class CassandraClient{ 
 static void Main(string[] args){ 
 // 建立数据库连接
 TTransport transport = new TSocket("192.168.10.2", 9160); 
 TProtocol protocol = new TBinaryProtocol(transport); 
 Cassandra.Client client = new Cassandra.Client(protocol); 
 transport.Open(); 
 System.Text.Encoding utf8Encoding = System.Text.Encoding.UTF8; 
 long timeStamp = DateTime.Now.Millisecond; 
 ColumnPath nameColumnPath = new ColumnPath(){ 
 Column_family = "Standard1", 
 Column = utf8Encoding.GetBytes("age")}; 
   // 写入数据
 client.insert("Keyspace1","studentA",nameColumnPath, 
 utf8Encoding.GetBytes("18"),timeStamp, ConsistencyLevel.ONE); 
 // 读取数据
 ColumnOrSuperColumn returnedColumn = client.get("Keyspace1", 
            "studentA", nameColumnPath, ConsistencyLevel.ONE); 
        Console.WriteLine("Keyspace1/Standard1: age: {0}, value: {1}", 
                     utf8Encoding.GetString(returnedColumn.Column.Name), 
                     utf8Encoding.GetString(returnedColumn.Column.Value)); 
 // 关闭连接
 transport.Close(); 
 } 
 }} 

 

Ruby来了

 > require 'rubygems' 
 > require 'cassandra'
 # 建立数据库连接 
 > cdb = Cassandra.new('Keyspace1',"192.168.10.1:9160", :retries => 3) 
 # 写入数据
 > cdb.insert(:Standard1, 'studentA', {'age' => '18'}) 
 # 读取数据
 > cdb.get(:Standard1, :studentA) 
 # 关闭连接
 > cdb.disconnect 
 
分享到:
评论

相关推荐

    Ruby on Rails Web开发之旅.pdf【第二部分】

    《Ruby.on.Rails.Web开发之旅》,作者:【德】Patrick Lenz,翻译:王德民、刘昕、裴立秋,出版社:人民邮电出版社,ISBN:9787115188526,PDF 格式,大小 144 Mb,被压缩为 3 部分,本资源是第二部分;第一部分下载...

    带有ruby的数据科学:基于Ruby的工具的实用数据科学

    [ | | ]Ruby的出色数据科学 Ruby中用于数据处理和分析的链接和资源是一个新的“性感”流行词,没有特定含义,但通常用于替代统计,科学计算,文本和数据挖掘与可视化,机器学习,数据处理和仓储以及任何形式的检索...

    commander:Ruby命令行可执行文件的完整解决方案

    Ruby命令行可执行文件的完整解决方案。 Commander弥补了您熟悉和喜爱的其他与终端相关的库(OptionParser,HighLine)之间的鸿沟,同时提供了许多新功能和优雅的API。 特征 比烘烤饼干更容易 使用OptionParser解析...

    jsonity:在 Ruby 中构建 JSON 的最性感语言

    在 Ruby 中构建 JSON 的最性感语言 我一直在用 、 和编写 JSON API,但它们都不能满足我的要求和用例。 jbuilder语法很冗长,partial和mixin的功能其实很弱 RABL 语法简单,但是用它写复杂的数据结构可读性不强 ...

    面向对象的分布式脚本编程语言Reia.zip

    如果你既想要erlang的并发分布式编程的理念又不喜欢erlang丑陋的停留在80年代的那种语法,又想要现代的性感的漂亮的时尚的Ruby/Python式的面向对象观而不满意其并发模型,那么,可以尝试Reia. 标签:Reia

    生菜:受Ruby启发的Cucumber的python行为驱动开发工具

    动机使更加性感。 Python需要类似的东西。 测试必须有趣且容易。 大多数python开发人员使用python而不是ruby进行编码。 Ruby有Capistrano,Python有Fabric。 Ruby有Cucumber,Python有生菜。 我个人不喜欢在小型项目...

    sexy_form.rb:Ruby的简单HTML表单字段构建器,内置对许多流行的UI库(如Bootstrap)的支持

    性感的Form.rb Ruby的简单HTML表单生成器,具有对许多流行的UI库(例如Bootstrap)的内置支持。 与Rails等任何Ruby Web框架完美搭配 产品特点 轻松生成表单,标签,输入,帮助文本和错误HTML标记 与许多UI库集成,...

    Sublime Text 4.0.0 Build 4126 中文绿色特别版

    Sublime Text – 性感的代码编辑器、程序员之必备神器!Sublime Text 是个功能强大的代码编辑器,也是HTML和散文先进的文本编辑器。其主要功能包括:Python的插件,完整的Python API , Goto功能,代码段,代码缩略...

    kawaii_validation:一个ActiveRecord扩展,它添加了更多的kawaii验证语法

    bundle支持的版本Ruby 2.0、2.1、2.2、2.3、2.4和2.5(主干) Rails 3.2.x,4.0、4.1、4.2、5.0、5.1和5.2(边缘)用法捆绑了该gem后, validates方法将采用block参数,并将启用以下两个新的DSL: 原始代码(所谓的...

    jquery_kwicks_rails:用于 Rails 应用程序的 JQuery 性感滑动面板

    RubyOnRails 的 Kwicks 一个Rails插件,用于在您的应用程序上安装性感滑动面板。安装您可以通过以下方式安装此gem $ gem install jquery_kwicks_rails或者通过在您的Gemfile 中添加这一行将其捆绑到您的应用程序中 ...

    railsbridge-boston:[不再使用] 这是我们的旧网站和课程。 立即查看文档仓库

    RailsBridge 是一个非营利组织,致力于提升编程领域的多样性和包容性,特别是针对女性及她们的同伴。...如果你对 Ruby on Rails 或者编程多样性感兴趣,可以寻找最新的 RailsBridge 资源和活动来参与。

    MrDarcy:Darcy 先生是 Async Promises 和 DCI 的混搭。 你没听错

    ruby 中异步承诺和 DCI 的混搭。 安装 将此行添加到应用程序的 Gemfile 中: gem 'mr_darcy' 然后执行: bundle 或者自己安装: gem install mr_darcy 文档 API 文档可在上 用法 警告 MrDarcy 绝对是实验性的...

    sublime text 3

    Sublime Text 3是一个轻量、...相比于难于上手的Vim,浮肿沉重的Eclipse,VS,即便体积轻巧迅速启动的Editplus、Notepad++,在SublimeText 3面前大略显失色,无疑这款性感无比的编辑器是Coding和Writing最佳的选择;

    trans:blazrobar.com的Bootstrap 4网站模板

    Trans是用Bootstrap 4编写的超性感,时尚,深色的单页网站模板,可帮助您开始下一个网站项目。 在这里,您可以找到由制作的原始 在此项目中,我们使用了Jekyll,HAML和Sass。 先决条件: 节点: git: Ruby: ...

    Cortana:Trulia 的全息图样式指南生成器的漂亮主题

    Cortana是Trulia的 (Ruby前端文档生成器)的一个不错的主题,灵感来自PebbleRoad的 。 检查 ##Usage 要安装最新版本的Hologram (必需): $ gem install hologram 要安装Cortana ,请使用 Bower : $ bower ...

    sexy_relations:在控制台中轻松列出模型关系的助手

    性感关系 性感关系为您提供了一种在控制台中显示模型关系的性感方式。 只需添加到您的 Gemfile 并在 Rails 控制台中的模型上运行sexy_relations方法,就像这样...... User.sexy_relations 您可以传入关系类型的...

    highcharts_on_rails:类固醇的 Highcharts

    HighchartsOnRails 在 RoR 中使用高图的性感 DSL安装将此行添加到应用程序的 Gemfile 中: gem 'highcharts_on_rails'将此行添加到您的应用程序 application.js 文件中: //= require highcharts_on_rails/charts...

    spree_sexy_taxonomies:Spree Extension 添加和显示丰富的分类和分类信息

    狂欢性感分类法 spree_sexy_taxonomies旨在扩展分类法和分类单元的显示和呈现的可能性。 此时,它会向 Spree::Taxon 模型添加一个“标题”图像,并将其与先前存在的“描述”属性一起显示在 taxons#show 页面上。 ...

    收件箱:已弃用:请注意,该项目不再维护

    我们建议将Inboxes与一起使用,因为它确实很性感。 请记住,不幸的是,收件箱保留了3个资源名称:“讨论”,“消息”和“发言人”。 从0.2.0版开始,可以将has_inboxes选项添加到任何模型中。 例如,它可以是...

    sexy_nhl_stats:提取 NHL 统计数据并以有趣的方式显示它们

    使用 NHL GameCenter 内部 JSON API 以性感的方式提取和显示统计数据。 累计统计 游戏的名称是累积统计。 我们不想为玩家的统计数据提供一次性总付,而是希望显示玩家可以获得的许多统计数据的变化率,以显示比...

Global site tag (gtag.js) - Google Analytics